浅谈OK6410 android系统的烧写过程

飞凌的OK6410使用的是三星提供的U-Boot,他们的烧写使用了自己的 SD卡烧写工具:SD_Writer,首先烧写了一个mmc.bin和一个zImage-sd的文件到SD卡中,前者mmc.bin其实就是用于SD卡启动的,后者zImage-sd是一个内核文件。我们首先来看看mmc.bin做了哪些事情,从SD卡启动,进入U-Boot的下载模式,使用printenv打印环境变量,可得:

[plain]  view plain copy
  1. SMDK6410 # printenv           
  2. bootargs=rootdelay=0 console=ttySAC0,115200  
  3. bootcmd=nand erase;  
[plain]  view plain copy
  1. fatload mmc 0:1 0x50008000 u-boot.bin;nand write.uboot 0x50008000 0 0x100000;  
[plain]  view plain copy
  1. fatload mmc 0:1 0x50008000 zImage;nand write.e 0x50008000 0x100000 0x500000;  
[plain]  view plain copy
  1. movi read kernel 0x50008000;bootm 0x50008000  
     从上面得bootcmd可以知道做的事情分四步:

        1、擦除整个NAND Flash;

        2、从SD卡中将u-boot.bin文件下载到内存中,然后烧写到NAND Flash上;

        3、从SD卡中将zImage下载到内存中,然后烧写到NAND Flash上;

        4、从SD卡读取内核(不是上一步烧写的zImage,而是之前使用SD卡烧写工具烧写的zImage-sd)到内存,然后启动这个内核。而启动参数就是上面的bootargs所显示。

        从这是我们能看到其实这个mmc.bin很像uboot,其实这个mmc.bin就是一个uboot,只不过经过特殊的处理。

这个mmc.bin做了两件事情,擦除nand,把我们复制的uboot,bin zImage写到nand的固定位置。另一件事情就是启动一个linux,这个linux是从sd卡启动的。

       进入这个内核之后,就会进入下面这个命令行,

       可能有人会觉得之前烧写了U-Boot和zImage-sd到SD卡上,并没有烧写文件系统,那这个内核怎么启动呢?这里我们看一下命令提示符前面“initramfs”这几个字符就明白了。

       所有的2.6版本linux内核都有一个特殊的文件系统rootfs,是内核启动的初始始根文件系统,initramfs的文件会复制到rootfs。如 果把initramfs比作种子,那么rootfs就是它生长的土壤。大部分linux系统正常运行后都会安装另外的文件系统,然后忽略rootfs。


为什么要输入./yjsx呢?其实这个只是一个脚本,我们可以ls看一下这个根目录有什么,我们会看到这个文件,用vi打开看一下,里面就几行命令,挂sd卡,挂载nand分区,然后解压文件到nand分区,这样就烧写好了系统。


这种烧写方式是一种很巧妙的方式,利用linux的tar命令,然后解压到相应的分区,我想这种方法也就飞凌的工程师能想出来。

隆扬原创作品转载请注明出处

http://blog.csdn.net/cediy2088long




  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值