欢迎来到天天文库
浏览记录
ID:40524900
大小:135.00 KB
页数:25页
时间:2019-08-04
《Eboot 中给nandflash分区实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Eboot中给nandflash分区实现提到分区就不得不提到MBR,不得不提到分区表。什么是MBR硬盘的0柱面、0磁头、1扇区称为主引导扇区,NANDFLASH由BLOCK和Sector组成,所以NANDFLASH的第0BLOCK,第1Sector为主引导扇区,FDISK程序写到该扇区的内容称为主引导记录(MBR)。该记录占用512个字节,它用于硬盘启动时将系统控制权交给用户指定的,并在分区表中登记了的某个操作系统区。MBR的组成一个扇区的硬盘主引导记录MBR由如图6-15所示的4个部分组成。·主引导程序(偏移地址0000H--0088H)
2、,它负责从活动分区中装载,并运行系统引导程序。·出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。·分区表(DPT,DiskPartitionTable)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。·结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。图6-15MBR的组成结构图MBR中的分区信息结构占用512个字节的MBR中,偏移地址01BEH--01FDH的64
3、个字节,为4个分区项内容(分区信息表)。它是由磁盘介质类型及用户在使用FDISK定义分区说确定的。在实际应用中,FDISK对一个磁盘划分的主分区可少于4个,但最多不超过4个。每个分区表的项目是16个字节,其内容含义如表6-19所示。表6-19分区项表(16字节)内容及含义EBOOT中对NAND分区主要代码,eboot目录下的fmd.cpp文件,与NAND驱动基本相同,所以,要对NAND进行分区,就得对NAND驱动非常熟悉。透彻了解。然后就是E:WINCE500PUBLICCOMMONOAKDRIVERSETHDBGBOOTPA
4、RTbootpart.cpp文件了。该文件主要通过调用NANDFLASH的读写操作来写入MBR,也是今天主要的分析对象。主要函数。/*BP_OpenPartition**Opens/createsapartitiondependingonthecreationflags.Ifitisopening*andthepartitionhasalreadybeenopened,thenitreturnsahandletothe*openedpartition.Otherwise,itloadsthestateinformationofthatpa
5、rtition*intomemoryandreturnsahandle.**ENTRY*dwStartSector-Logicalsectortostartthepartition.NEXT_FREE_LOCifnone*specified.Ignoredifopeningexistingpartition.*dwNumSectors-Numberoflogicalsectorsofthepartition.USE_REMAINING_SPACE*toindicatetotakeuptherestofthespaceontheflashfo
6、rthatpartition(should*onlybeusedwhencreatingextendedpartitions).Thisparameterisignored*ifopeningexistingpartition.*dwPartType-Typeofpartitiontocreate/open.*fActive-TRUEindicatestocreate/opentheactivepartition.FALSEfor*inactive.*dwCreationFlags-PART_CREATE_NEWtocreateonly.F
7、ailifitalready*exists.PART_OPEN_EXISTINGtoopenonly.Failifitdoesn'texist.*PART_OPEN_ALWAYScreatesifitdoesnotexistandopensifit*doesexist.**EXIT*Handletothepartitiononsuccess.INVALID_HANDLE_VALUEonerror.*/HANDLEBP_OpenPartition(DWORDdwStartSector,DWORDdwNumSectors,DWORDdwPart
8、Type,BOOLfActive,DWORDdwCreationFlags)注:示例代码为本人EBOOT中分区实现源码(WINCE5.0+S3C2440+128MNAND,MBR
此文档下载收益归作者所有