自己在写一个bootloader,有关于nand flash 的几个问题搞不懂,请问有大大帮忙解析一下吗?
在自己写一个简单的bootloader ,
板子是tiny210v2 ,cpu是s5pv210 ,nand flash 是K9GAG08U0F (MLC)
在写的时候遇到了几个问题:
第一个是nand flash mtd的问题,看到的资料好像通常会吧nand flash 以MTD的方法分区,我怎样才能知道nand flash 里面的MTD分区是怎么样。在内核启动的调试信息里面有这一段:
[ 1.136229] NAND device: Manufacturer ID: 0xec, Chip ID: 0xd5 (Samsung NAND 2GiB 3,3V 8-bit)
[ 1.136307] Creating 5 MTD partitions on "s5pv210-nand":
[ 1.137942] 0x0000000c0000-0x000000100000 : "misc"
[ 1.143877] 0x000000100000-0x000000600000 : "recovery"
[ 1.149499] 0x000000600000-0x000000b00000 : "kernel"
[ 1.154450] 0x000000b00000-0x000000e00000 : "ramdisk"
[ 1.159094] 0x000000e00000-0x000080000000 : "system"
这是mtd分区的物理地址吗?如果是那 0xc0000 前面的空间是怎么回事?
MTD分区该怎么样读,需要把整块MTD分区读进内存吗,比如读内核分区的时候吗?
第二个是nand flash bootloader写入的问题?现在的bootloader 基本上都分成BL1,和BL2.看到一个高人改的UBOOT是先分别生成BL1和BL2两个镜像,然后用cat 把两个镜像变成一个。如果是这种BOOTLOADER我该怎样才能动态分得出出那个是bl1,那个是BL2。
第三个问题是关于uboot和linux的MTD信息的具体定义的代码的实现的问题,针对板子的的MTD数据具体定义的是的uboot和linux的在那个文件,有高手能告诉我吗??