【STM32連載 第6回】ポインタ事故大全 ― なぜ壊れる?壊れ方を知って強くなる ―
ポインタの地雷をわざと踏む第6回。NULL デリファレンスによる HardFault、ダングリングポインタ、ローカル変数のアドレスを返すスタック寿命、配列外アクセス、未定義動作、最適化での挙動変化——6つの事故をデバッガで観察する。
ポインタの地雷をわざと踏む第6回。NULL デリファレンスによる HardFault、ダングリングポインタ、ローカル変数のアドレスを返すスタック寿命、配列外アクセス、未定義動作、最適化での挙動変化——6つの事故をデバッガで観察する。
Memory ビューで生バイト列を見る第3回。配列が SRAM 上で連続して並ぶ様子、構造体メンバの隙間に生じるパディングとアライメント制約、sizeof() の落とし穴、RAM を節約するメンバ並び替えまでを実バイトで確かめる。
変数の住所を追う第2回。const・グローバル・ローカルという宣言の違いだけで、データが Flash・SRAM・Stack のどこに置かれるかが変わる。STM32 のメモリマップを地図として読み、実際の配置先アドレスをデバッガで確認する。
デバッガでマイコンの中を覗く第1回。プログラムカウンタで現在地を特定し、メモリマップでアドレス空間の構造を読み、レジスタ書き換えでハードウェアを有効化する。STM32 のすべてがアドレスで動いていることを実際の数値で確かめる。
Arduino UNO の全20ピンに LED を載せたデバッグ専用シールドの製作記。1kΩ で1ピン3mA に抑えた回路設計、KiCad での2層基板レイアウト、JLCPCB へのアセンブリ発注、届いた基板での全ピン点灯テストまでを記録した。