Oct 22, 2009

stm32f103のアライメント

STM32F103のフラッシュにロギングしたデータを保存するプログラムを書いている。
今日嵌ったのが構造体のアライメント、
1Word = 16bitが最低単位のつもりで
struct _DATA{
  u32 a;
  u16 b,c,d;
};
という構造体を宣言してサイズが10Byteのつもりで
配列を取っていたらFlash領域をはみ出してエラー、
しばらく悩んで構造体のサイズを確認してみたら16Byteになっている。
そうか、32bitCPUのコンパイラはそうなんだ。
と納得。
仕方がないから構造体を使わずにデータを詰めていくことにする。

No comments: