看韦东山视频,没有按照其提供的虚拟机环境,用的是VBox+Ubuntu12.04.先前安装的arm-linux-交叉编译环境是4.4.3,编译出来的uboot和linux内核在烧进去开发板的时候都会出现很多莫名其妙的问题。于是改变编译器,换成3.4.5,即可实现相应的编译。
文件系统采用的是其光盘资料中提供的fs_qtopia.yaffs2。
1.uboot
tar -xjvf u-boot-1.1.6.tar.bz2
cd u-boot-1.1.6
patch -p1 < ../u_boot_1.1.6_jz2440.patch
make 100ask24x0_config
make
其中100ask24x0_config在打完补丁后才有。
通过oflash或者openJTA烧写进NAND FLASH/NOR FLASH
通过print可打印uboot参数
set +参数名+ 参数值 设置参数,这里需要将serverip 设置为物理机或者是虚拟机的ip(172.16.90.109/172.16.90.212),才能通过NFS进行挂载
save保存参数
2.Linux kernel
tar -xjvf linux-2.6.22.6.tar.bz2
cd linux-2.6.22.6
patch -p1 < ../linux-2.6.22.6_jz2440.patch
cp config_ok .config//也可以去查找+defconfig*查看有没有默认配置,有的话可以用,此处其提供有config_ok
make uImage//需要将uboot源码 里tools目录下的mkimage复制到/usr/bin里去,才能生成可供uboot使用的内核uImage
虚拟机上:
sudo apt-get install nfs-kernerl-server
然后vi /etc/exports
添加 /home/用户名/work/loadonboard *(rw,sync,no_root_squash)
启动NFS服务: sudo /etc/init.d/nfs-kernerl-server restart
本机试验挂载:sudo mount -t nfs 虚拟机ip:/home/用户名/work/loadonboar /mnt
在开发板上,首先要先ping通虚拟机,开发板挂载到Linux虚拟机的命令:
mount -t nfs -o nolock 虚拟机ip:/home/用户名/work/loadonboard /mnt
但是,传输大数据的话容易出现卡包现象,出现nfs: server 172.16.90.212 not responding, still trying错误
可修改使用如下命令:
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 虚拟机ip:/home/用户名/work/loadonboard /mnt
nfs 的默认传输协议是 udp,而pc机与嵌入式系统通过upd交互时就会出现严重的网卡丢包现象。可用的解决方案是:在客户端改用tcp协议。
开发板可以通过NFC挂载虚拟机服务器上的文件夹,进行相应的开发~~