- 论坛徽章:
- 0
|
1."但是开发板的资料上给的烧写内核的地址是:0x100000 -0x300000,不知道这是为什么"
觉得很可能是,该资料和你当前的代码不匹配,其对应的内核的配置,很可能是类似于这样的:
XXX XXX ''bootloader'' 注:mtdblock0
XXX XXX ''pram'' 注:mtdblock1
0x00100000 0x00300000 ''kernel'' 注:mtdblock2
XXX XXX ''filesystem'' 注:mtdblock3
2.通过NFS启动,和nand Flash如何分区,里面内容如何存放,是没关系的。
因为都是从NFS读取kernel和挂载rootfs。
3.
“另外他提供了一个烧写文件系统的方法,方法是通过NFS启动系统后,挂载 mtdblock3 ,将一个非压缩的完整文件系统直接复制入
此分区内,然后设置启动参数为:root=/dev/metblock3 ,理论上来说,内核从mtdblock3的首地址读取到的内容应该属于内核的一部
分,而并不是文件系统,这样系统应该不能正常启动,但是事实却是能正常启动”
没有看懂你说的“内核从mtdblock3的首地址读取到的内容应该属于内核的一部分,而并不是文件系统,”
nand flash分区后,你把rootfs烧写到/dev/metblock3,然后kernel启动后去/dev/metblock3挂载rootfs,
根据分区找到对应的nand flash的位置,然后读取里面的内容,判断出文件系统类型,去和你之前参数中的
rootfstype制定的比较,是否匹配,都正常了,就可以挂载rootfs了,就可以继续启动了。
意思也就是,本来就该正常启动的啊。
就按照你上面的分区,/dev/metblock3对应的地址是0x00240000 - 0x20000000,
kernel会去到对应的0x00240000位置读取数据,判断rootfs类型和你参数是否匹配,匹配了,就可以启动了。
4.关于第二个问题,同意buaadallas,你最好先去通过nand write和nand read以及cmp,去判断nand的写,读,是否正确。
正常的话,你用nand write 写点东西进去,再用nand read读出来到另外一个地址,然后再用cmp比较两者数据是否一致。
都一致了,说明你的nand的读写功能是OK的。然后再找其他问题,比如uImage是否正确。
可以在nand read 0xc0700000 0x40000 0x200000之后,去md显示内存数据,看看是否你正常的uImage的数据。
数据都正常了,bootm 0xc0700000才可能正常。
如果怀疑是你说的坏块问题,尝试用nand scrub,彻底格式化一遍(当然,也把坏块标记干掉了。。。)
然后再试试。
5.“现在我想查看NANDFLASH中烧写的内容到底是怎么分配的,U-BOOT到底占用了多少空间”
貌似没啥好办法,只有自己编的uboot,自己烧写进去的,知道uboot放在你哪和具体多大。
关于nand flash里面的数据和内容如何放,就是你自己烧写,你自己清楚了。还是上面说的,先去验证你的nand 的读写功能都
正常了,再说吧。
6.“我的 flash_info 不知道如何使用。”
我没记错的话,貌似flash_info是针对Nor Flash的吧?你这个是nand flash,两者不是一回事。。。 |
|