У меня есть конфигурационная структура, которую я хотел бы сохранить на внутренней флэш-памяти ARM Cortex M3.
Согласно спецификациям, данные, сохраняемые во внутренней флеш-памяти, должны быть выровнены на 32 бит.
Поскольку в моей структуре много логических значений и символов, я не хочу использовать 32 бита для хранения 8 бит ... Я решил упаковать структуру с помощью прагмы препроцессора __ Pack
, Then When I save это как целая структура, мне просто нужно убедиться, что размер структуры делится на 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;
Есть ли лучший способ добиться того, что я делаю? Я новичок во встраиваемом программировании и хочу убедиться, что не делаю ошибок.
Редактировать: Обратите внимание. Данные сохраняются в конце внутренней флэш-памяти, поэтому пропустить заполнение не получится ...