EPT分区表

对,你没有看错是EPT,不是GPT,也不是MBR分区表!

什么是EPT,目前根本没有EPT分区表,EPT是我自定义的一种分区表格式。

EPT是介于MBR和GPT之间的一种分区表格式,比MBR支持更多的分区,比GPT更少的开销。

一个MBR只能记录4个分区,局限比较大;GPT设计得“过于”复杂,在单片机等小系统中使用不太方便,特别是GUID的引入,一个表项数据太长了。

于是我在嵌入式小系统项目中就自定义了一种分区格式,叫EPT!


EPT(E=Embedded P=Partition T=Table)只是我个人定义的规范,写在这里也是为了方便我以后查询,没有别的目的,各位看官不要深扒


EPT储存方式:

从磁盘(或FLASH)的第1个扇区做为主EPT数据储存区,第2个扇区做为备份EPT。


EPT数据结构:

EPT包括表头与表项,每项均占32字节,目的是为了数据对齐。

表头储存在0-31字节,32字节以后为表项,每个表项均占32字节,且连续储存。

字节顺序为小端格式,如32位字0x12345678,按字节储存为:78 56 34 12。

EPT表头结构:

struct ept_hdr
{

    uint32_t magic;//标记=0x00545045,"EPT\0"

    uint32_t blksize; //扇区/块大小

    uint32_t crc32;//所有表项的CRC32校验,确保完整性,CRC-32-IEEE 802.3标准

    uint8_t  revd[20]; //保留字节
};


EPT表项结构:

struct ept_item
{
 char     name[16]; //分区名称
 uint32_t start;  //起始扇区
 uint32_t size;  //分区大小
 uint8_t  revd[8]; //保留字节,以后可以用作分区类型标识
};


示例:


示例说明:

扇区大小:512字节

名称       起始扇区 扇区数量 起始地址   分区大小
boot        0x0100   0x0800   0x020000  0x100000 1MB
logo        0x0900   0x0800   0x120000  0x100000 1MB
kernel     0x1100   0x4000   0x220000  0x800000 8MB
ramdisk  0x5100   0x4000   0xA20000  0x800000 8MB




posted @ 2016-05-18 11:59  星沉地动  阅读(586)  评论(0编辑  收藏  举报