管理提醒: 本帖被 xoom 执行加亮操作(2013-04-15)
返回学习汇总贴0.开始之前:
(1) tiny210可以选择从SD卡或NAND启动
(2) 开机时,iROM代码负责从SD卡或NAND中加载程序到iRAM,然后运行iRAM中的代码;由于iRAM空间有限,iROM只能加载程序的最前面的一小部分
(3) 加载前,iROM先要校验程序的完整性,所以烧写到SD卡或者NAND中的代码都是经过封装的(头部加了长度、校验等字段,共16个字节,详见s5p_cksum.c)
(4) 加载时,iROM读NAND使用8位ECC
(5) 加载后,iRAM中的代码首先初始化PLL、DRAM,然后加载整个程序(这里指barebox)到DRAM,最后跳转到DRAM继续运行
(6) 掌握
Barebox for tiny 210 - step 71.编译
(1) 更新源码到对应版本
cd ~/s5pv210/github/loader/barebox && git checkout 39e2c675dc14d821037b912f0cff7e3b6dcc3f64
(2) 配置编译
cp arch/arm/configs/friendlyarm_tiny210_defconfig .config
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
禁用System Type --->S3C Features --->[ ] Booting from NAND
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- && cp barebox.s5p barebox.sd
编译生成的barebox.s5p,重命名为barebox.sd,这个版本适合SD卡启动,NAND读写使用8位ECC,专门用于向NAND写入barebox
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
启用System Type --->S3C Features --->[*] Booting from NAND
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- && sudo cp barebox.s5p /srv/tftp/
编译生成的barebox.s5p,放到tftp根目录下,这个版本适合NAND启动,NAND读写使用1位ECC
2.运行
将SD版本烧写到SD卡 sudo dd if=./barebox.sd of=/dev/sdb bs=512 seek=1
从SD卡启动单板,三秒内按任意键中断autoboot
从FTP取NAND版本,烧写到nand.barebox分区 erase /dev/nand0.barebox.bb & cp /mnt/tftp/barebox.s5p /dev/nand0.barebox.bb
从NAND启动单板,barebox正常启动
3.源码分析
不贴代码,感兴趣的建议看
github commit记录
4.继续之前
解释__bare_init和__nand_boot_init的作用
添加代码自动识别NAND或SD卡启动,可以参考
大牛的的方案,在此向大牛致敬,学到了好多东西!!!
[ 此帖被mei5150在2013-04-13 20:45重新编辑 ]