Linux系统下MTD/CFI驱动学习进阶(3)

 第1部分

  NumIdentPartitions=1 // 有1个重复的分区

  NumBlockTypes=2 // 分区内有2种不同的Block类型

  第1类型

  NumIdentBlocks=3 // 有4个Block(3+1)

  BlockSize=0x80 // 32KB(0x80*256)

  第2类型

  NumIdentBlocks=6 // 有7个Block(6+1)

  BlockSize=0x200 // 128KB(0x200*256)

  第2部分

  NumIdentPartitions=15// 有15个重复的分区
  NumBlockTypes=1 // 分区内有1种Block类型

  第1类型

  NumIdentBlocks=7 // 有8个Block(7+1)

  BlockSize=0x200 // 128KB(0x200*256)

  11:cfi_intelext_setup()函数首先根据CFI建立mtd_erase_region_info信息,然后调用cfi_intelext_partition_fixup()来支持分区。

  12:cfi_intelext_partition_fixup()用来建立虚拟Chip,每个分区对应1个Chip,不过并没有完全根据CFI扩展信息来建立,而是假定每个分区的大小都一致。cfi->chipshift调整为partshift,各个虚拟chip->start调整为各分区的基址。将来访问FLASH的入口函数cfi_varsize_frob()就根据ofs得到chipnum(chipnum=ofs>>cfi->chipshift),这也是为什么要假定分区一致的原因。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzwjgg.html