uboot烧写文件



    * 此篇文章只介绍了往板子上烧写引导程序及系统,具体的詳細参数设置,或者是通过nfs方式引导系统并没有介绍,如有兴趣可参考Platform Group: 在我们的板子上通过NFS方式启动系统
    * 此篇文章介绍了NewBox目前采用SPI Flash + SLC Nand方案
    * 我们以前曾经采用过Nor Flash + Nand Flash方案, 现在已经不用了, 如有兴趣,可参考Platform Group: About Flash中的相关章节

[编辑] 工具及环境说明

    * 本篇所需要烧写的bin文件, image文件, 请自行到ftp上下载, 可参考Lftp
    * 在板子上通过Ftp下载所需要的文件, 所以需要在PC上搭建FTP服务器, 并把上一步下载的文件放到上边. 搭建步骤可参考About_nfs_tftp_service_安装

[编辑] Flash的分类

可以参考我的博客 http://blog.csdn.net/zzqhost/article/details/7019705
[编辑] NewBox使用的存储介质及分区方案

    * SPI FLASH 分区:
         1. uldr(64k)
         2. uboot(256k)
         3. ubootargs(64k)
         4. 升级Flags&软件版本号(64k)
         5. 频道号(64k)
         6. 未使用(1.5M)
    * SLC Nand 分区:
         1. Kernel(16M), 其中 kernel1 (0M->8M),zImage(8M->12M,12M->16M, 烧了两遍, 双备份)
         2. Recovery(16M)
         3. Rootfs(64M)
         4. System(128M)
         5. Data(256M)

[编辑] 方案一: 手动烧写SPI Flash和Nand Flash
[编辑] 烧写SPI Flash
[编辑] SPI 上无uldr, uboot时,通过跳线烧写

   1. 安装lrzsz和cutecom
          * $ sudo apt-get install lrzsz
          * $ sudo apt-get install cutecom
   2. 插上跳线进入烧写模式
   3. 使用cutecom烧入uldr, ubbot
          * 设置串口:baud rate:115200,data bit:8 ,stop bit:1
          * 击open device,将send file后按钮选为ymodem,再点send file按钮,分别发送uldr.bin(64k)和uart_boot.bin,发送完成uart_boot.bin时,注意点好input输入框,按键盘任意键中断
          * 此时可以关闭cutecom,打开putty进行正常的uldr uboot kernel的烧写工作,烧写各个部分的过程参考后续步骤

[编辑] SPI 上原先已经存在uldr uboot, 并想更新现有的uldr, uboot

   1. 设置板子的server ip和ip addr
          * $ set serverip x.x.x.x
          * $ set ipaddr x.x.x.x
   2. 烧写uldr
          * $ tftp uldr.bin
          * $ sfc erase 0 10000
          * $ sfc write 0 10000
   3. 烧写uboot
          * $ tftp u-boot.bin
          * $ sfc erase 10000 60000
          * $ sfc write 10000 60000
   4. 注:u-boot的参数区存放在,160000到180000之间,大小为20000。刷新版本成功后,如有异常,请试着擦除参数区 sfc erase 160000 20000

[编辑] 烧写Nand Flash

    * 烧写vmlinux.bin
          o $ tftp vmlinux.bin
          o $ nand erase 0 800000
          o $ nand write 0 800000

    * 烧写zImage
          o $ tftp zImage
          o $ nand erase 800000 800000
          o $ nand write 800000 400000
          o $ nand write c00000 400000

    * 烧写recovery.img
          o $ tftp recovery.img
          o $ nand erase 1000000 1000000
          o $ nand write 1000000 800000
          o $ nand write 1800000 800000

    * 烧写rootfs.img
          o $ tftp rootfs.img
          o $ nand erase 2000000 4000000
          o $ nand write 2000000 4000000

    * 烧写system.img
          o $ tftp system.img
          o $ nand erase 6000000 8000000
          o $ nand write 6000000 8000000

[编辑] 方案二: 自动烧写SPI Flash和Nand Flash
[编辑] 步骤

    * 将uldr.bin,uboot.bin,vmlinux.bin,zImage,recovery.img,rootfs.img,system.img放置到pc上安装的tftp路径下
    * 设置板子的serverip和ipaddr(如前步已经设置则不用再设)
          o $ set serverip x.x.x.x
          o $ set ipaddr x.x.x.x
    * 执行update命令
          o $ update
          o $ reset

[编辑] 注意事項

    * u-boot的参数区存放在,50000到60000之间,大小为10000。刷新版本成功后,如有异常,请试着擦除参数区 sfc erase 50000 10000
    * 这是新的烧写方式,需要uboot支持,如果update命令不支持,则需要更新uboot (tftp u-boot.bin; sfc erase 10000 60000; sfc write 10000 60000) 如板子上无uldr,uboot时,需要通过跳线来烧写uldr,uboot,如上面所述。

[编辑] 方案三: 通过网络nfs方式烧写系统至flash

    * 可参考文章在我们的板子上通过NFS方式启动系统,与此步骤进行对比进行

[编辑] 搭建nfs服务器

   1. 安装nfs服务器
          * $ $sudo apt-get install nfs-kernel-server
   2. 修改nsf配置文件
          * $ vi /etc/exports
          * 在文件中添加nfs的目录格式例如下
                o /home/zjy *(rw,sync,no_subtree_check,no_root_squash)
   3. 建立nfs的目录
          * $ mkdir /home/user/nfs
   4. 修改该目录的权限
          * $ chmod 777 -R /home/user/nfs
   5. 从新启动nfs
          * $ sudo /etc/init.d/nfs-kernel-server restart

[编辑] 将要烧写的系统放到nfs服务器上

   1. 将nfs.tar.gz拷贝到/home/xxx/nfs
   2. 解压之
          * $ sudo tar -zxvf nfs.tar.gz
   3. 将从ftp上下载的rootfs.tar.gz,system.tar.gz和recoveryfs.tar.gz拷贝到/home/xxx/nfs
   4. 解压缩三个包
          * $ sudo tar -zxvf rootfs.tar.gz
          * $ sudo tar -zxvf system.tar.gz
          * $ sudo tar -zxvf recoveryfs.tar.gz

[编辑] 板子从nfs服务器启动

   1. 在板子上设置nfs启动参数
          * $ set nfsboot "noinitrd console=ttyS1,115200n8 mtdparts=nx_2017:16m@0k(kernel),8m@16m(recovery),8m@24m(recovery),64m@32m(rootfs),128m@96m(system),272m@224m(data) root=/dev/nfs nfsroot=x.x.x.x:/home/xxx/nfs ip=x.x.x.x rw"
   2. 在板子上设置从nfs启动
          * $ set bootargs $nfsboot
          * $ set uboot_cmdline 1
   3. 启动
          * $ boot

[编辑] 烧写系统到板子的flash中

   1. 启动停止后在putty终端执行脚本
          * $ /format_ubi.sh
   2. format_ubi.sh完成的是做ubifs文件系统和将rootfs,system,recovery拷贝到nand的ubifs中
   3. 重启
          * $ reboot

[编辑] 自带参数说明

    * 自带参数的意思是指,烧完相应的模块,系统中已经存在此参数了.

    * 内核kernel1中自带参数
          o $ cmdline "noinitrd console=ttyS1,115200n8 mtdparts=nx_2017:16m@0k(kernel),8m@16m(recovery),8m@24m(recovery),64m@32m(rootfs),128m@96m(system),272m@224m(data) ubi.mtd=3 root=ubi0:rootfs rw rootfstype=ubifs androidboot.hardware=newbox"

    * 内核zImage中自带参数
          o $ cmdline "noinitrd console=ttyS1,115200n8 mtdparts=nx_2017:16m@0k(kernel),8m@16m(recovery),8m@24m(recovery),64m@32m(rootfs),128m@96m(system),272m@224m(data) ubi.mtd=2 root=ubi0:recovery rw rootfstype=ubifs androidboot.hardware=newbox"

    * uboot中自带默认参数
          o $ cmdline "noinitrd console=ttyS1,115200n8 mtdparts=nx_2017:16m@0k(kernel),8m@16m(recovery),8m@24m(recovery),64m@32m(rootfs),128m@96m(system),272m@224m(data) ubi.mtd=1 root=ubi0:recovery rw rootfstype=ubifs androidboot.hardware=newbox"

[编辑] 分类
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值