浅谈falsh 分区

BON 分区表

1建立方式:bon命令

2建立时间:vivi 烧写之后

3用途:存放bootloader,引导kernel,挂载根文件系统。

4命令:bon part 命令用于建立系统的BON 分区表。

BON 分区表被保存到NANDFlash 的最后0x4000 个字节中,即在NAND Flash

0x03FFC000 0x33FFFFFF 范围内,分区表起始于0x03FFC000(注意: BON 分区是

只针对NAND Flash 设备的一种简单的分区管理方式)。

命令的详细格式如下:

bon part offsets1[flag] offsets2[flag] offsets3[flag] ⋯⋯

参数offsetsN 是每个BON 分区的起始地址;

flag 是跟每个BON 分区的起始地址后面的标识符,这个标识的作用是前面数值的单

位,‘k’’或‘K’表示kilo,千;‘m’或‘M’表示mega,兆。

如果再跟上‘:’,后面再跟上‘m’或‘M’,表示该分区被标记为MTD 分区,

如果没有‘:’以及后面的字母‘m’ 或‘M’,则表示该分区被标记为BON 分区。

bon part 命令在建立系统的BON 分区表,会检测每个分区是否有坏块

Samsung NAND Flash 芯片K9S1208U0M,一个块含32 个页,一个

页有512 个字节,一个块有16K 字节,即0x4000),如果发现坏块将标记

出来,并且在分区表中体现,分区的大小将减去坏快的容量,得到实际可用

的分区容量。bon part info 命令执行后显示的信息中, number_of_badblock

所指示的就是分区中的坏块数目。

5.bon分区被系统检测并挂载,由bon命令建立的mtd分区也可检测挂载

5.1内核对bon分区的检测

1:向内核传参法linux_cmd_line

vivi/arch/s3c2410/smdk.c

char linux_cmd[] = "noinitrd root=/dev/bon/2 init=/linuxrc console=ttyS0";

可以修改此源码编译

2param 命令设置参数

param set linux_cmd_line "root=/dev/bon/2 init=/linuxrc console=ttyS0进行设置


参数传递给内核后,内核启动时会根据此参数将设备/dev/bon/2flashbon分区的第三个分区)以cramfs格式挂载到根目录"/"下。

另外linux启动时还会检测vivi中使用bon分区时的分的mtd分区(bon分区时在相应偏移后面加“:m”标志的分区

使用bon命令建立mtd分区:

bon part 0 1296k 21696k:m

表示分了3个分区,2bon分区(前两个)、1mtd分区(最后一个)。

内核如何检测bon分区和mtd分区

vivi中使用bon分区时,会将相应的分区信息放在NAND Flash的最后0x4000个字节中,即在nand flash0x03FFC000 0x33FFFFFF 范围内,分区表起始于0x03FFC000linux就是通过读取此地址区域的nand获得的bon分区表信息。linux启动时也会检测到vivi使用bon分区时的

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值