(板子是OK6410A,256MB DDR,2GB NAND FLASH)
最近看了wince的nandflash驱动,采用的是MDD+PDD+FMD的架构,分区驱动是flashpart.dll,在网上查了好久,发现flashpart.dll是无法识别由mspart创建的MBR的。在eboot中采用的是mspart的函数来创建分区,实际上在nandflash上有三个分区:boot分区(这个在内核中略过),binfs分区(存储NK.bin),FAT32分区(用于永久存储用户数据以及应用程序)。
既然flashpart.dll无法识别MBR的分区表,那它是如何识别nandflash上的分区的?实际上是无法识别的,只是flashpart分区驱动却能跳过binfs分区前的区域,把后面的nandflash空间当成是一个分区挂载在根目录的nandflash目录下。系统起来后去查看这个分区的类型,会发现是0x07(MSIFS),而不是0x0B(FATFS),大小是516224个扇区(我的nandflash总共有524288个扇区);如果对这个分区进行分区操作(即把它分成两个或更多),是无法成功的。
我的问题是:这个过程是怎么实现的(即跳过binfs前面的区域,把后面的空间格式化成一个分区),因为微软没有公开flashpart的源码,不知道分区驱动的工作过程是怎样的,如果我要把后面的区域再分区,或者是扩大binfs分区的容量,需要修改哪些地方?
希望能尽快得到回答,有哪位大神研究过的也希望能给予指导,小弟无比感谢!:handshake |