EPT分区表

来源:互联网 发布:java 向邮箱发送邮件 编辑:程序博客网 时间:2024/06/01 19:51

对,你没有看错是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




0 0
原创粉丝点击