Выравнивание структуры C во внутренней флэш-памяти

У меня есть конфигурационная структура, которую я хотел бы сохранить на внутренней флэш-памяти 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;

Есть ли лучший способ добиться того, что я делаю? Я новичок во встраиваемом программировании и хочу убедиться, что не делаю ошибок.

Редактировать: Обратите внимание. Данные сохраняются в конце внутренней флэш-памяти, поэтому пропустить заполнение не получится ...

6
задан stdcall 15 December 2011 в 08:17
поделиться