我有一个配置结构,我想保存在 ARM cortex M3 的内部闪存上。根据规范,保存在内部flash中的数据,必须对齐32bit。因为我的结构中有很多布尔值和字符,我不想使用 32 位来存储 8 位......我决定使用__packed
预处理器编译指示打包结构,然后当我将它保存为一个整体结构时,我只需确保结构大小可被 4 整除(4 字节 = 32 位),如果需要,我通过添加填充字节来做到这一点。目前,在开发过程中,我对结构进行了很多更改,为了使其与 32 位对齐,我需要一直更改填充字节。目前,结构看起来像这样
typedef __packed struct
{
uint8_t status;
uint16_t delay;
uint32_t blabla;
uint8_t foo[5];
uint8_t padding[...] // this has to be changed every time I alter the structure.
} CONFIG;
有没有更好的方法来实现我正在做的事情?我是嵌入式编程的新手,我想确保我没有犯错。
编辑:请注意。数据保留在内部闪存的末尾,因此省略填充将不起作用...