ARM Cortex M3 の内部フラッシュに保存したい構成構造があります。仕様上、内部フラッシュに保存するデータは 32bit に揃える必要があります。構造体にはブール値と文字がたくさんあるので、8 ビットを格納するために 32 ビットを使用したくありません...__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;
私がやっていることを達成するためのより良い方法はありますか? 私は組み込みプログラミングの初心者であり、間違いを犯していないことを確認したいと考えています。
編集:注意してください。データは内部フラッシュの最後に保持されるため、パディングを省略しても機能しません...