WinCE MMC空間分配

本來三星的MMC是這麼做的:

//SDMMC BSP Definition
#define IMAGE_NK_SIZE  (0x040E0000)

#define FATFS_FOR_IMAGE		(0x1000000)
#define SECTOROFFATFS		(FATFS_FOR_IMAGE / SDMMC_SECTOR_SIZE)


#define IMAGESTARTSECTOR (MBRSTARTSECTOR+SECTOROFMBR) 
#define IMAGESIZE           (IMAGE_NK_SIZE)
//#define IMAGESIZE (0x10000000) // this value must be the same as Flash size in the memory.cfg.xml
#define SECTOROFIMAGE (IMAGESIZE/(SDMMC_SECTOR_SIZE))



#define MBRSTARTSECTOR (TOCSTARTSECTOR+SECTOROFTOC+7) // 7 sector means tocsector+7, to align 8KB
#define SECTOROFMBR         (0x100)

#define SECTOROFTOC (8)
#define TOCSTARTSECTOR (AISSTARTSECTOR+SECTOROFAIS) // to align 8KB

#define SECTOROFAIS (1) // Address Information Sector
#define AISSTARTSECTOR (BOOTIMAGESTARTSECTOR+SECTOROFBOOTIMAGE+15) // to align 8KB

#define SECTOROFBOOTIMAGE (0xA10) // bootimage means STEPLDR+IPL+EBOOT
#define BOOTIMAGESTARTSECTOR (1)

//#define STEPLDRBUFFER 0x50200000
//#define STEPLDRSTARTADDRESS	0x50000000
#define SECTOROFSTEPLDR (0x20) //16K
#define STEPLDRSTARTSECTOR (1)

#define SECTOROFEBOOT (0x600)
#define EBOOTSTARTSECTOR (STEPLDRSTARTSECTOR+SECTOROFSTEPLDR)

#define SECTOROFIPL (0x400)
#define IPLSTARTSECTOR (EBOOTSTARTSECTOR+SECTOROFEBOOT)


然後我改成這樣子:

//SDMMC BSP Definition
#define IMAGE_NK_SIZE  (0x040E0000)

#define FATFS_FOR_IMAGE		(0x1000000)
#define SECTOROFFATFS		(FATFS_FOR_IMAGE / SDMMC_SECTOR_SIZE)

#define IMAGESTARTSECTOR (MBRSTARTSECTOR+SECTOROFMBR) 
#define IMAGESIZE           (IMAGE_NK_SIZE)
//#define IMAGESIZE (0x10000000) // this value must be the same as Flash size in the memory.cfg.xml
#define SECTOROFIMAGE (IMAGESIZE/(SDMMC_SECTOR_SIZE))

#define MBRSTARTSECTOR (LOGOSTARTSECTOR+SECTOROFLOGO) // 7 sector means tocsector+7, to align 8KB
#define SECTOROFMBR         (0x100)

#define SECTOROFTOC (8)
#define TOCSTARTSECTOR (AISSTARTSECTOR+SECTOROFAIS) // to align 8KB

#define SECTOROFAIS (1) // Address Information Sector
#define AISSTARTSECTOR (BOOTIMAGESTARTSECTOR+SECTOROFBOOTIMAGE+6) // to align 8KB

#define SECTOROFBOOTIMAGE (0x421) // bootimage means STEPLDR+EBOOT
#define BOOTIMAGESTARTSECTOR (1)

//TOCSTARTSECTOR = 0x429 
//AISSTARTSECTOR = 0x428 
//SECTOROFBOOTIMAGE = 0x421 
//LOGOSTARTSECTOR = 0x431 
//BOOTIMAGESTARTSECTOR+SECTOROFBOOTIMAGE = 0x422 

//#define STEPLDRBUFFER 0x50200000
//#define STEPLDRSTARTADDRESS	0x50000000
#define SECTOROFSTEPLDR (0x20) //16K
#define STEPLDRSTARTSECTOR (1)

#define SECTOROFEBOOT (0x400)
#define EBOOTSTARTSECTOR (STEPLDRSTARTSECTOR+SECTOROFSTEPLDR)

#define SECTOROFLOGO (0x3000)
#define LOGOSTARTSECTOR (TOCSTARTSECTOR+SECTOROFTOC)

  保留 Bootimage 對齊 AISS TOC MBR NK FAT  
  stepldr eboot ipl  
起始扇區 0x0 0x1 0x21 0x621 0xA19 0xA20 0xA21 A30      
長度 0x1 0x20 0x600 0x400 0xf 0x1 0x8 0x100      
                       
  保留 Bootimage 對齊 AISS TOC LOGO MBR NK FAT
  stepldr eboot
起始扇區 0x0 0x1 0x21 0x421 0x428 0x429 0x431 0x3431    
長度 0x1 0x20 0x400 0x6 0x1 0x8 0x3000 0x100    

三星的表格可能沒處理詳細,會有數字錯誤,這麼做的原因是加上LOGO的分區,使得跟其他操作系統可以公用Logo

發佈了37 篇原創文章 · 獲贊 2 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章