mini2440使用u-boot从nfs启动linux
扫描二维码
随时随地手机看文章
1 开发环境
友善之臂mini2440-W35
win7+SecureCRT
VirtualBox+Ubuntu
Jlink V8
2 VirtualBox设置
Settings-->Network-->Adapter 1-->Attached to Bridged Adapter
3 Ubuntu
ifconfig 获得IP地址
安装nfs,创建共享目录,这个目录就是以后mini2440启动的目录(设为NFS_ROOT)了
将光盘中的arm-linux-gcc-4.4.3.tar.gz复制到Ubuntu响应目录,解压,设置环境变量。arm-none-linux-gnueabi-gxx就是我们以后要用的编译器;lib中的库文件是以后也是要用的。
安装mkimage工具,好像sudo apt-get insall mkimage-tools就行,这个可以从zImage制作uImage。
4 使用Jlink烧写u-boot到Nor-flash
将板子上的开关拨刀Nor-flash一端。在win7下启动Jlink ARM程序,打开本博客附件中的jfalsh工程文件,再打开data file,选择附件中的u-boot.bin,然后Erase Chip,Program(从地址0x0开始),这样u-boot就烧好了。
板子插好电源,网线,串口线。
在win7系统中打开SecureCRT,选中相应的COM口,禁用硬件流。重启板子,会听到“嘀——”的长音,SecureCRT界面出现autoboot:1的时候,按电脑键盘任意键,就可以进入u-boot的设置命令行,试一试:“printenv”。
5 设置u-boot参数
bootdelay=1 baudrate=115200 ethaddr=08:08:11:18:12:27 tekkaman=bmp d 70000 stdin=serial stdout=serial stderr=serial ethact=dm9000 filesize=21BA fileaddr=30008000 gatewayip=192.168.0.1 netmask=255.255.255.0 serverip=192.168.0.36 ipaddr=192.168.0.37 bootcmd=nfs 0x30008000 192.168.0.36:$NFS_ROOT/uImage_W35;bootm 0x30008000 bootargs=noinitrd root=/dev/nfs init=/linuxrc console=ttySAC0,115200 nfsroot=192.168.0.36:$NFS_ROOT ip=192.168.0.37:192.168.0.36:192.168.0.1:255.255.255.0 mem=64M rootdelay=4
这里,bootcmd加载了内核,bootargs是启动内核,加载文件系统的参数,ipaddr是板子临时的IP,跟服务器192.168.0.36设在一个网段就可以了。
设置使用setenv命令,如:
setenv bootargs 'noinitrd root=/dev/nfs init=/linuxrc console=ttySAC0,115200 nfsroot=192.168.0.36:$NFS_ROOT ip=192.168.0.37:192.168.0.36:192.168.0.1:255.255.255.0 mem=64M rootdelay=4'
$NFS_ROOT请自行替换为你的nfs根目录。
6 制作uImage
将附件中的zImage_W35拷贝到$NFS_ROOT目录,使用之前安装的mkimage工具将zImage转换成uImage:
mkimage -A arm -O linux -T kernel -C none -a 30008000 -e 30008040 -n linux.test -d zImage_W35 uImage_W35
7 使用busybox创建根文件系统
可以参考Tekkaman Ninja的博文:http://blog.chinaunix.net/uid-20543672-id-94316.html。文章里的内容只要基本理解就行,主要是创建/etc/init.d/rcS
及其依赖项。
我当时是搜的这个博客:http://blog.csdn.net/openblog/article/details/7415994。然后根据运行出错的信息,google就可以了。
8 注:
上面创建的文件系统应该是在$NFS_ROOT下面的,你cd /看看Ubuntu的根目录就会明白。
在win7系统中打开SecureCRT,是VirtualBox中Ubuntu保持运行状态。然后重启板子,就可以完成mini2440使用u-boot从nfs启动linux的工作了。按任意键,你就可以使用busybox的sh在板子上来做简单的操作了。
附件:http://download.csdn.net/detail/binzo/6873219