* 此篇文章只介绍了往板子上烧写引导程序及系统,具体的詳細参数设置,或者是通过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" [编辑] 分类
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。