組込み・ファームウェア

MMUを持たない小さなマイコンで、スタックの使いすぎについて注意すべきこととして正しいものはどれか。

  1. Aスタックは自動でいくらでも大きくなるので、気にしなくてよい
  2. Bスタックがあふれると、必ずエラーの画面が表示される
  3. Cスタックがあふれてもすぐには検出されず、隣のデータを黙って壊すことがあるので、深い再帰や大きな局所配列を避け、使用量を見積もる
答えと解説を見る

正解:C. スタックがあふれてもすぐには検出されず、隣のデータを黙って壊すことがあるので、深い再帰や大きな局所配列を避け、使用量を見積もる

パソコンのOSでは、スタックの先にアクセス禁止のページを置いてあふれを検出できますが、MMUのないマイコンではその仕組みがないことが多く、スタックがあふれるとその先にある変数などを黙って上書きします。症状は別の場所に現れるので原因を突き止めにくくなります。深い再帰や大きな局所配列を避け、ツールで最大の使用量を見積もったり、スタックの端に印を書いて壊れていないか調べたりします。

  • A. スタックの大きさは限られています。
  • B. 画面に表示される仕組みはありません。
  • C. 正しい。原因の分かりにくい不具合になりがちです。
この分野を解く 分野ページへ

組込み・ファームウェアのほかの問題

  1. 基準電圧3.3 Vの12ビットのADコンバータで、読み取った値が2048だった。入力の電圧に最も近いものはどれか。
  2. マイコンでADコンバータの変換結果を一定の間隔で大量に取り込むとき、DMAを使う利点として正しいものはどれか。
  3. C言語のビットフィールドを使った構造体で周辺回路のレジスタを表すとき、注意が必要な点として正しいものはどれか。
  4. 多くのマイコンで、変更しない大きな表(フォントのデータなど)をconstを付けて宣言する利点として正しいものはどれか。
  5. JTAGやSWDといったデバッグ用のインターフェースでできることとして正しいものはどれか。