IT用語集 › ハードウェア › Noinit RAM(ノイニットRAM)

Noinit RAM(ノイニットRAM)

ハードウェア Svenska → 更新: 2026-11-04

スタートアップコードがあえて手を付けないRAM領域で、ソフトリセットをまたいで内容が残る。

スタートアップコードはリセットのたびに .bss をゼロクリアし、.data を初期値で埋める。通常はそれでよいが、リセットの原因を示す手がかりまで消えてしまう。変数を専用のセクションに置き、リンカスクリプトで NOLOAD を指定して __attribute__((section(".noinit"))) で配置すれば、ウォッチドッグリセットやソフトウェアリセット、ブートローダへのジャンプを越えて値が生き残る。

よく入るのは、プログラムカウンタとフォールトコードを記録したクラッシュ記録、連続再起動の回数、ブートローダにそのまま留まるよう伝えるフラグなどだ。電源の入れ直しは話が別で、投入直後のこの領域はゴミが入っている。そのため、前回の起動からの伝言とランダムなビット列をファームウェアが見分けられるよう、ほぼ必ずマジックナンバーかチェックサムで守る。

← 用語集に戻る