主题 : 请问superboot210将内核下载到了哪个分区了? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 113172
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 22 分
注册时间: 2015-03-06
最后登录: 2015-04-24
楼主  发表于: 2015-03-11 11:10

 请问superboot210将内核下载到了哪个分区了?

友善之臂提供的superboot210确实比较坑。下面是内核启动的时候输出的nand 分区信息,我比较怀疑,因为misc分区应该就是bootloader分区,但是起始位置怎么能是0xc0000呢?不应该是0x0吗?我从网上下了一个uboot(来自国嵌),调试的时候总是读不进去内核,或者是发生nand ecc方面的错误,原因可能是uboot本身的nand 驱动没有写好,还有就是kernel的下载位置不确定。请问有哪位朋友清楚superboot210确定的下载分区吗?非常感谢

[            ] 0x0000000c0000-0x000000100000 : "misc“
[            ] 0x000000100000-0x000000600000 : "recovery"
[            ] 0x000000600000-0x000000b00000 : "kernel"
[            ] 0x000000b00000-0x000000e00000 : "ramdisk"
[            ] 0x000000e00000-0x000020000000 : "system"
级别: 新手上路
UID: 113172
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 22 分
注册时间: 2015-03-06
最后登录: 2015-04-24
1楼  发表于: 2015-03-11 15:17
目前已经把问题解决了。解决问题的关键点有两个:
1、确保uboot与superboot210以及kernel使用了同样的ecc机制
2、确保uboot从正确的地址读到了kernel

解决思路如下
1、在uboot的drivers->mtd_nand->s5pc1xx_nand.c的board_nand_init函数中有这么一句话:
#if defined(G_NAND_4BIT_ECC)  ,我觉得正确的写法应该是#if defined(CONFIG_NAND_1BIT_ECC),然后再这句话前面写:#define CONFIG_NAND_1BIT_ECC,也就是打开这个开关,使用1-bit 机制。之所以使用1-bit ecc 是因为我的nand flash 是512M SLC,若是使用了MLC的nand flash就另当别论了。
2、针对第二点,因为我不知道superboot210到底将kernel下载到了什么地方,所以就用自己的uboot的dnw下载功能将内核下载到了offset=0x300000 size=0x500000的位置,然后就可以正常启动了。 而且uboot不但能够启动自己下载的内核,内核还能够引导由superboot210下载进去的filesystem哦。

再也不会出现nand read from offset xxx failed -74 这样的倒霉错误了