私はARM cortex M3の内部フラッシュに保存したいコンフィギュレーション構造を持っています。 仕様によると、内部フラッシュのデータ保存は32ビットに合わせる必要があります。 私はたくさんの論理値と構造体の文字を持っているので、私は8ビットを格納するために32ビットを使用したくありません... __packed
プリプロセッサプラグマを使用して構造体をパックすることにしました。構造体のサイズが4(4バイト= 32ビット)で割り切れることを確認する必要があります。必要に応じてパディングバイトを追加することでそれを行います。 現在、開発中に構造を大きく変更し、32ビットに整列させるために、常にパディングバイトを変更する必要があります。 現在、構造がこの内部フラッシュメモリ内のC構造のアライメント
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;
をslike見て、私がやっているものを達成するためのより良い方法はありますか? 私は組み込みプログラミングではかなり新しいので、間違いをしないようにしたいと思います。
編集:ご注意ください。データは、内蔵フラッシュの終わりに固執し、その動作しませんパディング...
私はあなたの理解が正しくないと信じていました。フラッシュメモリ内の命令は、整列されなければならず、コンパイラによって保証される。しかし、フラッシュに格納されたデータは、アライメントされていなくても、アーム・コルテックスm3コアで管理することができます。どの会社のMCUを使用していますか? –