要弄清以下几个问题:
1、它自身的一套流程和作用
2、它和section.conf是否有关联
3、为什么要做成cramfs
释疑:
1、首先这个partition弄出来是为了方便mtd分区信息的管理。它的文件格式是这样的:
name cs offset size mask_flags fs_flags fs_type mount_cmd backup_off
这样其实是根据struct tag_mtd_partition结构体来扩展的
struct tag_mtd_partition
{
uint32_t part_num;
struct boot_mtd_partition parts[PART_NUM];
};
struct boot_mtd_partition
{
char name[PART_NAME_LEN];
uint64_t size;
uint64_t offset;
uint32_t mask_flag;
uint32_t cs;
uint32_t fs_flags;
uint32_t fs_type;
uint64_t backupOffset;
};
在uboot阶段对partition文件进行加载并进行解析,把解析值依次赋给结构体中的成员,至于这些值是怎么传递给内核的,这里不做分析,可查阅uboot和kernel之间的参数传递ATAG方式。
2、section.conf是我们用来生成对应的镜像文件。section.conf中的每一项都会对应生成相应的镜像文件。
if [ "${SPEC}" = "boot-min" ];then
.....
BASE_START=00000000
BASE_END=00100000
.....
fi
这是section.conf片段,脚本运行后会生成指定的img文件,这个镜像在flash中存储的位置为0~00100000,那相应的在mtd分区中这块地址就是它的专属,不能够再被分配使用。
可以这样理解:section.conf体现的是最终生成的镜像文件和其对应存储在flash上的位置,而partition则对应的是文件系统中mtd分区的概念,必须要确保两者为同一个标的物时在flash上存储位置也要一致。
3、至于为什么用cramfs暂时还不清楚