組込み・ファームウェア

レジスタ操作とビット演算、GPIOとタイマー、割り込みハンドラの注意点、UART・SPI・I2C、RTOS、ウォッチドッグなど、組込みとファームウェアの基本を3択問題で学べます。

—あなたの正答率
0 / 50解いた問題
この分野を解くこの分野の問題をすべて、ランダムな順で出題します 苦手問題直近で間違えた問題だけを解き直します

組込み・ファームウェアの要点

家電や自動車、産業機器の中では、マイコンの上で動くファームウェアが機器を制御しています。ファームウェアは周辺回路のレジスタを直接読み書きし、ビット演算で特定のビットだけを操作して、端子の入出力(GPIO)やタイマー、通信回路を動かします。

割り込みハンドラでは処理を短くし、共有する変数にvolatileを付けるといった、組込み特有の注意点があります。UART・SPI・I2Cの通信、複数の処理を優先度で切り替えるRTOS、電源を入れたときに最初に動くブートローダ、暴走から立ち直るためのウォッチドッグまで、ハードウェアに最も近いソフトウェアのしくみを学びます。

組込み・ファームウェアの問題一覧(50問)

  1. C言語で、レジスタregのビット3だけを1にし、ほかのビットは変えない書き方として正しいものはどれか。
  2. C言語で、レジスタregのビット3だけを0にし、ほかのビットは変えない書き方として正しいものはどれか。
  3. LEDをつないだ出力端子のビットを、実行するたびに点灯と消灯で切り替えたい。C言語の書き方として正しいものはどれか。
  4. 入力用のレジスタinのビット5が1かどうかを調べるC言語の条件として正しいものはどれか。
  5. 上のコードは、レジスタregの複数ビットの設定欄を書き換えている。何をしているか。
  6. メイン処理でレジスタのビットを「reg |= mask;」(読み出し・変更・書き込み)で操作している最中に、割り込みハンドラが同じレジスタの別のビットを書き換えると起こりうる問題と対策の組み合わせとして正しいものはどれか。
  7. マイコンの入力端子にスイッチだけをつなぎ、プルアップやプルダウンの抵抗を付けなかった。スイッチが開いているときに起こりうることはどれか。
  8. マイコンのGPIO(汎用入出力)の端子を使うときに、最初に設定する必要があることとして正しいものはどれか。
  9. 機械式のスイッチを押したときに、接点が細かく跳ねて短い時間に何度もオンとオフを繰り返す現象を何と呼ぶか。
  10. ソフトウェアでスイッチのチャタリングを取り除く方法として最も適切なものはどれか。
  11. 16 MHzのクロックをプリスケーラで16分周したものでタイマを数え、1000カウントごとに割り込みを起こす設定にした。割り込みの間隔はいくらか。
  12. 周期が1000カウントのPWM信号で、1周期のうち250カウントの間だけ出力を1(High)にしている。デューティ比はいくらか。
  13. マイコンでLEDの明るさやモーターの回転の速さを調整するのによく使われる方法はどれか。
  14. マイコンのタイマのインプットキャプチャ機能の用途として正しいものはどれか。
  15. 割り込みハンドラの中で避けるべきこととして最も適切なものはどれか。
  16. 上のプログラムを最適化を有効にしてコンパイルすると、タイマ割り込みが起きてもled_on()が呼ばれないことがある。原因と対策の組み合わせとして正しいものはどれか。
  17. 8ビットのマイコンで、タイマ割り込みが32ビットの変数ticksを1ずつ増やし、メイン処理がticksを読んで経過時間を求めている。まれに大きくずれた値が読めてしまう原因として正しいものはどれか。
  18. UARTによるシリアル通信の特徴として正しいものはどれか。
  19. 115200 bpsのUARTで、データ8ビット・パリティなし・ストップビット1(8N1)の形式で送るとき、1秒間に送れるバイト数に最も近いものはどれか。
  20. UARTの送信側と受信側のボーレートが少しずれていると、文字化けが起こることがある。ずれの許容範囲がおよそ数%程度に限られる理由として正しいものはどれか。
  21. SPI通信の特徴として正しいものはどれか。
  22. SPIで一般に使われる4本の信号の組み合わせとして正しいものはどれか。
  23. SPIの部品をつないでも正しいデータが読めないとき、確かめるべき設定として最も適切なものはどれか。
  24. I2C通信の特徴として正しいものはどれか。
  25. I2Cで、データを1バイト受け取った側が、受け取ったことを知らせる方法として正しいものはどれか。
  26. 同じ型番のI2Cの温度センサを2つ、同じI2Cの線につなぎたいが、どちらも同じアドレスを持っている。対策として正しいものはどれか。
  27. UART・SPI・I2Cを比べた説明として正しいものはどれか。
  28. 周辺回路の状態を知る方法のうち、ポーリングと割り込みの違いとして正しいものはどれか。
  29. OSを使わないマイコンのプログラムでよく見られる「スーパーループ」の構成の説明として正しいものはどれか。
  30. 組込み機器でRTOS(リアルタイムOS)を使う主な目的はどれか。
  31. プリエンプティブなRTOSで、優先度の低いタスクの実行中に、優先度の高いタスクが待っていたデータを受け取って実行できる状態になった。一般にどうなるか。
  32. RTOSで起こる優先度逆転の説明として正しいものはどれか。
  33. 優先度逆転を防ぐために使われる「優先度継承」の考え方として正しいものはどれか。
  34. RTOSで、センサを読むタスクから表示するタスクへデータを渡すのに、キュー(メッセージキュー)を使う利点として正しいものはどれか。
  35. ハードリアルタイムとソフトリアルタイムの違いとして正しいものはどれか。
  36. ウォッチドッグタイマをリセットする(キックする)処理を、1 msごとのタイマ割り込みハンドラの中で無条件に行うのが良くない理由として正しいものはどれか。
  37. 組込み機器のブートローダの役割として正しいものはどれか。
  38. 無線でファームウェアを書き換える(OTA更新)機器で、フラッシュメモリにファームウェアを置く場所を2つ(A面とB面)用意する理由として正しいものはどれか。
  39. 電池で動く組込み機器で、マイコンのスリープモードを使う主な目的はどれか。
  40. あるセンサ機器は、全体の1%の時間だけ10 mAで動き、残りの99%の時間は10 µAで眠っている。平均の消費電流に最も近いものはどれか。
  41. 小さなマイコンのファームウェアで、mallocなどの動的なメモリの確保を避けることが多い理由として正しいものはどれか。
  42. MMUを持たない小さなマイコンで、スタックの使いすぎについて注意すべきこととして正しいものはどれか。
  43. 基準電圧3.3 Vの12ビットのADコンバータで、読み取った値が2048だった。入力の電圧に最も近いものはどれか。
  44. マイコンでADコンバータの変換結果を一定の間隔で大量に取り込むとき、DMAを使う利点として正しいものはどれか。
  45. C言語のビットフィールドを使った構造体で周辺回路のレジスタを表すとき、注意が必要な点として正しいものはどれか。
  46. 多くのマイコンで、変更しない大きな表(フォントのデータなど)をconstを付けて宣言する利点として正しいものはどれか。
  47. JTAGやSWDといったデバッグ用のインターフェースでできることとして正しいものはどれか。
  48. 1 msごとに一定の制御の計算を行いたい。OSを使わないマイコンでの実装として最も適切なものはどれか。
  49. マイコンのブラウンアウト検出(BOD、ブラウンアウトリセット)の役割として正しいものはどれか。
  50. 割り込みに優先度を付けられるマイコンで、優先度の低い割り込みのハンドラを実行中に、優先度の高い割り込みが起きた。一般にどうなるか(割り込みのネストを許す設定とする)。

コンピュータシステムのほかの分野