1.u-boot 移植
tar xjf u-boot-2012.04.01.tar.bz2
//解压
cd u-boot-2012.04.01
//进入目录
patch -p1 < ../u-boot-2012.04.01_100ask.patch
板)
make smdk2440_config
make
//配置
//生成 u-boot.bin
//打补丁(修改以适合移植到开发
2.linux 内核移植
tar xjf linux-3.4.2.tar.bz2
cd linux-3.4.2
patch -p1 < ../linux-3.4.2_camera_jz2440.patch //打补丁(修改以适合移植开发板,
内含摄像头驱动,LCD4.3 驱动以及网卡 dm9000 驱动)
cp config_ok .config
make menuconfig
//解压
//进入目录
//配置
//配置内核以支持 uvc 摄像头
-> Device Drivers
<*> Multimedia support --->
<*> Video For Linux
[*] Video capture adapters (NEW) --->
[*] V4L USB devices (NEW) --->
<*> USB Video Class (UVC)
//配置内核以支持 usb 总线驱动(板上只有一个 usb 口,会使用 usb hub 分线器)
Device Drivers --->
[*] USB support --->
{*} Support for Host-side USB
[*] USB device filesystem (DEPRECATED)
[*] USB device class-devices (DEPRECATED)
<*> OHCI HCD support
<*> USB Mass Storage suppo
[*] HID Devices --->
{*} Generic HID support
[*] /dev/hidraw raw HID device support
SCSI device support --->
<*> SCSI device support
[*] legacy /proc/scsi/ support
<*> SCSI disk support
<*> SCSI tape support
配置内核以支持无线网卡(使用的是课程配套的网卡)
Networking support
-*- Wireless --->
<*> cfg80211 - wireless configuration API
<*> Generic IEEE 802.11 Networking Stack (mac80211)
library routines
{*} CRC-CCITT functions
Device Drivers --->
[*] Network device support --->
[*] Wireless LAN --->
<*> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)
[*] Support downloading firmware images with Host AP driver
[*] Support for non-volatile firmware download
Ralink driver support --->
Ralink rt27xx/rt28xx/rt30xx (USB) support
推荐将 Ralink driver support 和 Ralink rt27xx/rt28xx/rt30xx (USB) support 配置
成 M,从而编译成模块。
将 wifi 模块的驱动编译成模块,可以避免“冷启动的问题”(开发板启动时已经
插入了 usb-wifi 模块,但是无法正常使用,只能重新热插拔一次才能正常工
作)。
make uImage//编译内核(内核 uImage 在 arch/arm/boot 中)
make modules //编译模块
cd drivers/net/wireless/rt2x00
ls *.ko //查看相应模块文件
rt2800lib.ko rt2800usb.ko
cp
rt2x00usb.ko
rt2x00lib.ko
//拷贝.ko 文件到文件系统中(在第 3 步中完成)
*.ko
/home/book/work/system/nfs_root/fs_mini_mdev_new/lib/modules/3.4.2/
同时将 usb-wifi 模块的固件文件 rt2870.bin 复制到到/lib/firmware 目录中
注:在 make uImage 之前,注意 u-boot 与 Linux 的机器码匹配问题,否则在后
面启动 u-boot,用 boot 命令引导内核时会出现如下问题:
Error: unrecognized/unsupported machine ID (r1 = 0x000000c1).
Available machine support:
ID (hex)
000000a8
详细问题及解决方法,见:u-boot 和 linux 的机器码问题分析
NAME
SMDK2440
http://www.52rd.com/Blog/Detail_RD.Blog_liweikui_22426.html
3.制作根文件系统
cd /home/book/work/system/nfs_root
tar xjf fs_mini_mdev_new.tar.bz2
3.1 若想先实现在开发板上的 lcd 上显示图像,可将事先制作好的 video2lcd 工
具拷贝到文件系统的 bin 目录中。
3.2 若实现在网页上观看采集的视频,可移植 mjpg-streamer(实现视频的采集
与传输)
3.2.1 libjpeg 的移植
tar xzvf libjpeg-turbo-1.2.1.tar.gz
cd libjpeg-turbo-1.2.1
mkdir tmp
./configure --prefix=/work/jz2440/libjpeg-turbo-1.2.1/tmp --host=arm-linux
make
make install
cp tmp/lib/*so*
/home/book/work/system/nfs_root/fs_mini_mdev_new/lib/ -d
3.2.2 mjpg-streamer 的移植
tar xvf mjpg-streamer-r63.tar.gz
cd mjpg-streamer-r63
--(1) 修改所有的 Makefile 将 CC=gcc 修改为 CC=arm-linux-gcc
--(2) 修改 plugins/input_uvc/Makfile
a. 将 CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
改为
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I
/home/book/work/syetem/libjpeg-turbo-1.2.1/tmp/include
注意:
-I /work/jz2440/libjpeg-turbo-1.2.1/tmp/include
// 是编译 libjpeg 生成的
文件
b. 将
jpeg_utils.lo dynctrl.lo
input_uvc.so:
$(OTHER_HEADERS)
input_uvc.c
v4l2uvc.lo
jpeg_utils.lo dynctrl.lo
$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo
jpeg_utils.lo dynctrl.lo
/work/jz2440/libjpeg-turbo-1.2.1/tmp/lib -o
$(CC)
$(CFLAGS)
$@ input_uvc.c
-ljpeg
-L
v4l2uvc.lo
jpeg_utils.lo
改 为
input_uvc.so:
$(OTHER_HEADERS)
input_uvc.c
v4l2uvc.lo
dynctrl.lo
make
cp mjpg_streamer /home/book/work/system/nfs_root/fs_mini_mdev_new/bin/
cp *so* /home/book/work/system/nfs_root/fs_mini_mdev_new/lib/ -d
USB 摄像头
2440 开发板
路由器
电脑
有线
无线
3.3 使用无线网卡
tar xjf fs_mini_mdev_new_auto_wifi_ap.tar.bz2
将第 2 步中要复制的.ko 文件以及 3.2 中 mjpg-streamer 的移植同样在这个文
件系统中操作。
4.烧写调试
4.1 用 OpenJTAG 烧写 u-boot.bin 文件到 nor flash 中,上电启动后,在 SecureCRT
命令界面中:
#SMDK2410 set ipaddr 192.168.1.104
//设置开发板 IP 地址
set serverip 192.168.1.105
//设置 windows 地址(tftp 烧写工具在
Windows 中)
set gatewayip 192.168.1.1
save
set
bootargs
//设置网关 IP
root=/dev/nfs
nfsroot=192.168.1.107:/home/book/work/system/
nfs_root/fs_mini_mdev_new ip=192.168.1.104 console=ttySAC0,115200
文件系统(文件系统在 Ubuntu 系统中,192.168.1.107 为其 ip 地址)
//挂载根
save
tftp 30000000 uImage
bootm
附:1.NFS 服务设置
NFS 挂载文件系统
安装 nfs 服务:$ sudo apt-get install nfs-kernel-server portmap
修 改 配 置 文 件 : $ sudo vi
/home/book/work/system/nfs_root
//用 tftp 下载内核
//启动内核
/etc/exports
*(rw,sync,no_root_squash)
最 后 一 行 修 改 为
重启:$ sudo /etc/init.d/nfs-kernel-server restart
2.在 Ubuntu 中使用 NFS 下载并启动内核
Set bootcmd 'nfs 32000000 192.168.1.107:/home/book/work/system/nfs_root/uIma
ge;
bootm 32000000'
4.2 lcd 显示图像
/ # ls /dev/vid*
/dev/video0
/# video2lcd /dev/video0
//查看摄像头设备节点
//打开设备节点
4.3 有线实现视频传输
/#mjpg_streamer -i "input_uvc.so -f 10 -r 320*240" -o "output_http.so -w www" //执
行此命令后,在火狐浏览器上输入 http://192.168.1.104:8080/?action=stream 可
实时浏览视频
4.3 无线网卡实现视频传输
set bootargs root=/dev/nfs nfsroot=192.168.1.107:/home/book/work/system/
nfs_root/fs_wifi_ap
ip=192.168.1.104 console=ttySAC0,115200(注意这里挂载的
文件系统目录位置和之前的不同)
注:ubuntu 中更改文件夹所有子目录的所有者权限
sudo chown -R book:book 目标目录
效果:暂未实现 2018.1.15
无线网卡配置视频 1.1.15 节 后期看