免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 792 | 回复: 0
打印 上一主题 下一主题

G-Bios下载内核和根文件时遇到的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:44 |只看该作者 |倒序浏览
    之前通过弄好了G-Bios启动linux,但是上次我并不是通过g-bios提供的tftp将根文件下载到相应的分区的的,而且通过其他途径下载根文件的系统的,但是昨天通过g-bios命令下载根文件系统的时候出现了问题,就是在擦除nand flash的时候出现了错误,也就是擦除失败,然后看了半天最后才弄明白原来对nand flash的坏块是不能进行擦除的。知道了原因就去看源码中关于nand flash部分的代码,并且和uboot中的代码进行的了比较,发现了原来这两个项目的源码很雷同的,套用电视剧上经常看到的就是“如有雷同纯属巧合”,在这就不说这个问题了。
    G-bios对于nand flash下载内核和文件系统没有考虑到坏块的情况,也就是当你将内核烧写到一个有坏块的地址空间的时候,它不会跳过坏块继续烧写,而是直接返回错误的,这就和uboot中的nand flash的操作有差别了,在uboot中nand命令会自动跳过坏块继续对flash进行读、写和擦动作,而g-bios中并没有这么做。那么要实现uboot中nand flash那样的功能其实也非常的简单,我在看过uboot的源码发现它对于nand flash写操作的时候会先调用一个get_len_incl_bad函数,这个函数的作用就是计算包含了坏块的总的长度,而且它在执行读、写和擦除的时候都会检查当前要执行的block是否是坏的,如果是坏的那么就跳过,否则执行相应的动作,因此在G-bios中只要稍微修改一下nand flash的相关代码即可。
    还有就是关于linux内核中的mtd分区的问题,我使用的linuxmtd的分区中rootfs是在地址0x560000到最后的但是我将文件系统下载到0x580000的地方也是能够启动的,难道只要真正的文件系统的起始地址是在mtd中规定的地址后面的就可以吗?对于这个东西的疑问已经有很久了,希望高人能够帮我解答。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP