NAND Flash分区的问题

mamamiya 2011-02-22 09:28:05
NAND Flash的分区表信息是在内核中还是在bootloader中?

在系统启动过程中可以看到如下信息:
NAND device: Manufacturer ID: 0xec, Chip ID: 0xf1 (Samsung NAND 128MiB 3,3V 8-bit)
Scanning device for bad blocks
Using static partitions on nandflash...
Creating 2 MTD partitions on "NAND 128MiB 3,3V 8-bit":
0x00000000-0x02000000 : "kernel"
0x02000000-0x40000000 : "os"
mtd: partition "os" extends beyond the end of device "NAND 128MiB 3,3V 8-bit" -- size truncated to 0x6000000
soc nand flash init complete

那是否可以理解为在/dev目录下有mtd0和mtd1两个设备文件?

现在问题是:
devcp tftp://172.16.14.107:/vmlinux /dev/mtd0
这条命令可以将内核烧写到flash中

但是在烧写文件系统的时候:
devcp tftp://172.16.14.107:/rootfs.jffs2 /dev/mtd1
就出现问题了:
一这样烧写文件系统,在启动时就会提示无法加载内核,似乎是把之前烧写进去的内核给覆盖了,这是怎么回事?
...全文
462 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaokingset 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wyjie1987 的回复:]
引用 1 楼 wenxy1 的回复:

内核中,若你的boot loader分了区,kernel中的分区要和boot loader中的分区一致.


如果不一致 会有什么后果?
是采用kernel中的分区?还是采用bootloader的分区?
[/Quote]
kernel与文件系统一般都是bootloader烧写到NAND中的,假设你通过bootloader烧写kernel到以地址A开始的一片NAND区域,烧写文件系统到以地址B开始的一片NAND区域。bootloader然后就读取NAND的A地址开始的内容来加载内核,并把控制权交给内核。
内核启动后再通过读取相应的文件系统地址来加载文件系统,这个时候的文件系统地址是以MTD的分区来确认的。也就是楼主的“OS”分区。如果“OS”分区的起始地址0x02000000不等于地址B,那么内核读取的文件系统就是不正确,这样就不能正确加载文件系统的。

所以 如果现在运行的状态是bootloader,那分区就是bootloader的分区;
如果是系统状态,那自然认的是MTD的分区。


楼主把kernel烧写到NAND的地址0开始处,不知道是什么意思?
如果NAND的0地址处有bootloader,这样就覆盖了bootloader的内容。
如果没有bootloader,这样也是不能从NAND中启动kernel的。因为NAND不能XIP。
yong_f 2011-02-22
  • 打赏
  • 举报
回复
bootloader在那个分区啊,bootloader在加载内核的时候分区信息应和内核存放地址相同
zhaokingset 2011-02-22
  • 打赏
  • 举报
回复
你不烧写文件系统时,内核能否正确加载?
Wenxy1 2011-02-22
  • 打赏
  • 举报
回复
内核中,若你的boot loader分了区,kernel中的分区要和boot loader中的分区一致.
coding码场 2011-02-22
  • 打赏
  • 举报
回复
在内核中!
mamamiya 2011-02-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhaokingset 的回复:]

你不烧写文件系统时,内核能否正确加载?
[/Quote]
可以正确加载。
不烧写文件系统时,可以通过NFS来启动
mamamiya 2011-02-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wenxy1 的回复:]

内核中,若你的boot loader分了区,kernel中的分区要和boot loader中的分区一致.
[/Quote]

如果不一致 会有什么后果?
是采用kernel中的分区?还是采用bootloader的分区?

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧