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

浙公网安备 33010602011771号