由于我们的sam9260是采用服务器的方式加载的,而u-boot不支持以dhcp(至少我现在不知道啊)的方式来启动,所以如何更新内核和文件系统?使用u-boot?使用u-boot将使我们要不断的修改启动参数等,还要修改pc本机的配置等,非常麻烦,解决的办法就是!
使用linux来完成这一切的工作!
由于我们将dataflash和nand flash是以设备的方式加载到系统当中的,所以在linux下面我们可以很简单的操作这些设备。
以nand flash为例,我们可以编译嵌入式linux下使用的nand erase,这个命令在9260上运行,擦除nand flash设备/dev/mtdblock0,其实这个操作会将nand flash的分区0从0至200000全部擦除,然后使用cp命令将相应的映像文件uImage2.6.21拷贝到mtdblock0上。
cp uImage2.6.21 /dev/mtdblock0
重新启动系统正常,如果你的文件系统中没有做nand erase这个命令,其实也很简单,用u-boot做擦除工作,让linux做后面的工作。
先执行
nand read 20400000 0 200000
将内核映像读入,然后
nand erase 0 200000
bootm 20400000
这里提醒大家一点,u-boot不会主动去破坏内存的,即使你在执行擦出命令之后,bootm 2040000,启动命令写错,你只要重启系统,然后执行bootm 20400000,系统照样正常,哈哈,不用担心u-boot重启会破坏内存的,只要不断电就可以!
这样我们就要考虑以后文件系统的可靠性了。
我们编译出来的u-boot应该不能提供flash的写函数,写入应该由samba来完成,避免出厂之后,产品被人意外擦除,而linux由密码保证,不是明文传输,采用openssh来通信!
然后,文件系统中将/dev/mtd设备的属性都做成只读的!文件系统也做成cramfs文件系统,也是只读的!
阅读(922) | 评论(0) | 转发(0) |