一、烧写redboot
1.安装开发包解压后的SDK_1_2_Linux/Advanced_ToolKit_installer里的程序AdvancedToolKit。
2.连好串口,然后把boot0-4针脚全部拉低,也就是进入uart模式,然后用AdvancedToolKit通过简单设置后找到片子后先擦除,然后program,默认参数会自动烧到0000000位置。
二、down内核和文件系统
把boot0-4针脚的最高位拉高,进入nand启动模式,上点启动redboot,启动后有如下界面:
RAM: 0x00000000-0x 07f 00000, [0x 00013f 80-0x07ed1000] available
FLASH: 0x00000000 - 0x20000000, 4096 blocks of 0x00020000 bytes each.
RedBoot>
可首先执行fis init指令,进行flash分区,免得烧错内核和文件系统位置
1.通过串口
a.如果没有网络,可通过串口来down内核。
首先在redboot中执行load -r -b 0x1000000 -m xmodem,然后然后用超级终端发送zimage文件。
发送完后在redboot中执行fis creat kernel指令,就把内核烧到了相应位置。
b.如果没有网络,可通过串口来down文件系统。
首先在redboot中执行load -r -b 0x1000000 -m xmodem,然后然后用超级终端发送rootfs.jffs2文件。
发送完后在redboot中执行fis creat root指令,就把文件系统烧到了相应位置。
2.通过网络
a.如果有网络,可通过网络(tftp)来down内核。
首先在redboot中通过fconfig设置网络,打开一个tftp服务器,其下有zimage文件,然后执行load -r -b 0x1000000 zimage,即可下载。
发送完后在redboot中执行fis creat kernel指令,就把内核烧到了相应位置。
b.如果有网络,可通过网络(tftp)来down文件系统。
首先打开一个tftp服务器,其下有rootfs.jffs2文件,在redboot中执行load -r -b 0x1000000 rootfs.jffs2,即可下载。
发送完后在redboot中执行fis creat root指令,就把文件系统烧到了相应位置。
三、系统启动
系统启动有两种方式:挂载flash中的文件系统启动和挂载nfs的文件系统启动(方便调试)。
1.flash启动
a.reset板子,redboot启动后运行fis load kernel,加载内核(把烧到flash的内核加载)。
b.redboot运行exec -b 0x100000 -l 0x200000 -c "noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rootfstype=jffs2"即可。
2.nfs启动
a.reset板子,redboot启动后运行fis load kernel,加载内核(把烧到板子的内核加载)。
b.redboot运行exec -b 0x100000 -l 0x200000 -c "noinitrd console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.0.117:/nfspool init=/linuxrc ip=192.168.0.123:192.168.0.117"
其中192.168.0.117为nfs服务器ip,192.168.0.123为板子运行的ip。
四、一点总结
根据运行过程,fis load kernel是把内核加载到了0x1000000的位置,相当于刚刚和执行完load -r -b 0x1000000 zimage指令,在这两种情况下都可以运行exec -b 0x100000 -l 0x200000 ...指令来进行系统启动,load -r -b 0x1000000 zimage方便了调试内核,不需要每次都烧到flash后再来运行。
还有一点,烧后的文件系统开始找不到,还抱错误,可能redboot编译时设置的block不标准,可修改root=/dev/mtdblock2的数字进行尝试。
其中当/dev/mtdblock2的数字大锅总block数时,提示会列出所有block,方便了信息的查看,如下:
VFS: Unable to mount root fs via NFS, trying floppy.
List of all partitions:
1f 00 1024 mtdblock0 (driver?)
1f 01 5120 mtdblock1 (driver?)
1f 02 98304 mtdblock2 (driver?)
1f 03 8192 mtdblock3 (driver?)
1f 04 411648 mtdblock4 (driver?)
No filesystem could mount root, tried: jffs2