因为nand中没有MLO和u-boot.img,所以咱们需求设置am335x处于SD卡发动形式,从SD卡发动。
从SD卡发动,对SD卡的设置比较简单,将SD卡设置为FAT16分区,并格式化,然后将MLO,u-boot.img复制到SD卡上。因为咱们不需求进入到kernel,所以不复制uImage,也不制造ubi分区。
设置am335x的LCD_data4:0为b10111,从SD卡发动(MMC0),刺进制造好的SD卡到卡槽中。将am335x电路板通电,等u-boot.img发动时按下键盘任意键,超级终端显现“U-Boot:”提示符,即进入到指令行操作形式。输入以下内容,设置网络参数:
setenv ipaddr 192.168.1.51 //设置am335x板的ip地址
setenv serverip 192.168.1.50 //设置tftp和nfs的ip地址
保证计算机的tftp服务现已正确发动,/home/XXXX/tftp目录下有MLO,u-boot.img和uImage。履行以下的指令:
mw.b 0x82000000 0xff 0x20000 //将DDR的0x82000000,长度0x20000空间填充为0xff
tftp 0x82000000 MLO //从tftp服务器下载MLO到DDR的0x82000000开端的空间
nandecc hw 2 //设置DDR的作业形式
nand erase 0x0 0x20000 //擦除nand地址0x0开端,长度0x20000空间
nand write.i 0x82000000 0x0 0x20000 //将DDR地址0x82000000空间的数据写入到nand的0x0开端的空间,写入长度0x20000
上述指令将MLO写入到nand的地址0x0开端的空间。
mw.b 0x82000000 0xff 0x40000
tftp 0x82000000 u-boot.img
nand erase 0x80000 0x40000
nand write.i 0x82000000 0x80000 0x40000
上述指令将u-boot.img写入到nand的地址0x80000开端空间。
咱们将运用nfs来加载uImage,以及根文件体系,所以下面的指令能够先不履行。
mw.b 0x82000000 0xff 0x500000
tftp 0x82000000 uImage
nand erase 0x280000 0x500000
nand write 0x82000000 0x280000 0x500000
上述指令将uImage写入到nand的0x280000的空间。
mw.b 0x82000000 0xff 0x2000000
tftp 0x82000000 ubi.img
nand erase 0x780000 0xf880000
nand write 0x82000000 0x780000 0x2000000
上述指令将根文件体系写入到nand的0x780000空间,长度为0x2000000。这儿要注意长度应该比ubi.img实践字节大一些。
ubi.img文件的制造方法在后续的手记中记载。
上述完成后,履行nand erase 0x260000 0x20000,铲除u-boot的发动参数,然后设置bootargs和bootcmd。
setenv ipaddr 192.168.1.51
setenv serverip 192.168.1.50
setenv bootargs console=ttyO0,115200n8 noinitrd root=/dev/nfs rw nfsroot=192.168.1.50:/home/XXXX/nfs ip=192.168.1.51:192.168.1.50::255.255.255.0::eth0::off mem=256M init=/linuxrc
set bootcmd ‘nfs 0x82000000 192.168.1.50:/home/XXXX/nfs/boot/uImage;bootm 0x82000000’
saveenv //保存环境变量
上述将设置am335x板的ip地址,tftp和nfs服务器的ip地址,以及从nfs服务器加载uImage和ubi跟文件体系。
最终保存好上述环境变量后,将am335x电路板断电,然后将LCD_data(4:0)设置为b10011,从nand发动。
重新发动电路板,当u-boot发动后,将会主动从192.168.1.50的nfs/boot目录下下载uImage并发动。kernel发动后,将主动将192.168.1.50的nfs目录作为根文件体系加载到am335x的“/”下。