mp8313 mtd 分区配置

参照默认的配置,在配置树中修改那nand的分区大小后,编译,启动系统, 都正常,在u-boot中将kernel,dtb,roofs刷到对应分区以能正常启动, 现在要做系统升级,发现在linux中用mtd_debug, flash等工具对有些分区都写,有些不能, 进一步用mtd_debug info命令读出来的分区信息:

不能写的分区的flags有配置

mtd.flags = MTD_CAP_ROM

而能写的分区的flags都为空, 怀疑是这些被设为只读了, 无籁没有相关配置说明, 只能开始研究mtd的代码了.

找着在driver/nand/fsl_elbc.c -->fsl_elbc_chip_probe()函数中去做的flash芯片及分区配置.在fsl_elbc_chip_probe()先做多芯片扫描, 如果配置了支持mtd分区, 开始做分区分析.由parse_flash_partitions()函数负责(maps/physmap_of.c中), parse_flash_partitions()函数主要是读取设备配置树的信息来识别分区的,其中这67行的注释提醒了我:
67 if (*part++ & 1) /* bit 0 set signifies read only partition */

先前在看配置树的时候还迷惑为什么有些分获的大小后面一位是1, 没明白什么意思就先保留了:
00000000 00300001 /* RAMDISK kernel 3M RW */

看见这行,一想应该就是它来标识该分区是否可写了,立即修改测试,果然.

在一次的无籁,那有设备配置树,各配置项的详细说明啊.

 

 

你可能感兴趣的:(linux,测试,Flash,工具)