ftp://ftp.invisible-island.net/ncurses/
1、虚拟机
2、工具链
3、编译内核
tar xjf linux-3.4.2.tar.bz2
cd linux-3.4.2
打补丁:patch -p1 < …/linux-3.4.2_camera_jz2440.patch
可以直接打新的补丁有网卡有lcd驱动,如过打旧补丁,我们可以自己修改:
lcd_4.3.c 、dm9dev9000c.c、dm9000.h这些文件在毕业班第四课里
把 lcd_4.3.c 复制到 /work/projects/linux-3.4.2/drivers/video
修改/work/projects/linux-3.4.2/drivers/video/Makefile
#obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o
obj-$(CONFIG_FB_S3C2410) += lcd_4.3.o
把dm9dev9000c.c、dm9000.h复制到/work/projects/linux-3.4.2/drivers/net/ethernet/davicom
修改/work/projects/linux-3.4.2/drivers/net/ethernet/davicom/Makefile
#obj-$(CONFIG_DM9000) += dm9000.o
obj-$(CONFIG_DM9000) += dm9dev9000c.o
配置内核,因为config_ok里没有UVC驱动程序:
cp config_ok .config
make menuconfig
Device Drivers --->
<*> Multimedia support --->
<*> Video For Linux
[*] Video capture adapters (NEW) --->
[*] V4L USB devices (NEW) --->
<*> USB Video Class (UVC)
// 如果你使用的是百问网自制的USB摄像头,
// 还需要参考第2课1.1.9节视频修改UVC驱动
make uImae
编译出现错误,可能是因为内核是旧版(3.4.2)的在新版linux编译的缘故:
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
/work/projects/linux-3.4.2/kernel/Makefile:129: recipe for target 'kernel/timeconst.h' failed
make[1]: *** [kernel/timeconst.h] Error 255
Makefile:945: recipe for target 'kernel' failed
make: *** [kernel] Error 2
将kernel/timeconst.pl中第373行的defined()去掉,只留下 !@val 就可以了,去掉后如下:
cp arch/arm/boot/uImage /work/nfs_root/uImage_new
4、文件系统:
cd /work/nfs_root
sudo tar xjf fs_mini_mdev_new.tar.bz2
sudo chown book:book fs_mini_mdev_new
5、用新内核、新文件系统启动开发板
启动开发板至UBOOT
设置UBOOT的环境变量:
set ipaddr 192.168.1.17
set bootcmd 'nfs 32000000 192.168.1.124:/work/nfs_root/uImage_new; bootm 32000000'
set bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.1.124:/work/nfs_root/fs_mini_mdev_new ip=192.168.1.17
save
boot
这句命令“set bootcmd ‘nfs 32000000 192.168.1.124:/work/nfs_root/uImage_new; bootm 32000000’”的意思是:
将192.168.1.124服务器上的/work/nfs_root/uImage_new下载到nfs 32000000,然后启动内核
这句命令“set bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.1.124:/work/nfs_root/fs_mini_mdev_new ip=192.168.1.17`”的意思是:
将根文件系统设置成192.168.1.124服务器上的/work/nfs_root/uImage_new