応用情報 組込みシステム 2 — Questions and Answers
Question 1: FreeRTOSのタスク優先度とプリエンプティブスケジューリングの説明として正しいものはどれか。
- 高優先度タスクが実行可能状態になると低優先度タスクを中断して実行される (Correct answer)
- 優先度に関係なく作成順に実行される
- 優先度はタスク実行中は変更できない
- 全タスクが同じ時間スライスで実行される
Correct answer: 高優先度タスクが実行可能状態になると低優先度タスクを中断して実行される
プリエンプティブスケジューリングでは高優先度タスクが準備完了(Ready)状態になると、実行中の低優先度タスクを即座に中断(プリエンプト)して高優先度タスクが実行される。RTOSの基本動作。
Question 2: 組込みシステムのメモリマップドI/Oの説明として正しいものはどれか。
- I/Oデバイスのレジスタをメモリアドレス空間に配置してメモリアクセス命令でI/Oを制御する (Correct answer)
- 外部メモリをI/Oとして使用する
- DMA転送のアドレス指定方式
- GPUのビデオメモリアクセス方式
Correct answer: I/Oデバイスのレジスタをメモリアドレス空間に配置してメモリアクセス命令でI/Oを制御する
メモリマップドI/OはI/Oポートをメモリアドレス空間に割り当て、通常のメモリ読み書き命令でI/O制御を行う。ARMプロセッサで一般的。I/O独立アドレス空間(ポートマップドI/O)とは異なる。
Question 3: 組込みシステムの割り込み処理(ISR)で避けるべき事項として正しいものはどれか。
- 長い処理・ブロッキング関数・動的メモリ確保の使用 (Correct answer)
- volatile変数の使用
- レジスタの保存と復元
- 割り込みフラグのクリア
Correct answer: 長い処理・ブロッキング関数・動的メモリ確保の使用
ISR(割り込みサービスルーティン)は最短時間で完了すべきで、長い処理はメインループやタスクに委ねる。ブロッキング(待ち合わせ)・malloc(ヒープ断片化)・printfはISR内で禁止される慣行。
Question 4: UART(Universal Asynchronous Receiver Transmitter)の特徴はどれか。
- クロック不要の非同期シリアル通信でスタートビットとストップビットで同期する (Correct answer)
- クロック信号を共有する同期式全二重通信
- マスタ・スレーブ構成の4線シリアル通信
- 同軸ケーブルを使用する高速通信
Correct answer: クロック不要の非同期シリアル通信でスタートビットとストップビットで同期する
UARTは共有クロックを使わない非同期通信で、送受信前にスタートビット(L)、後にストップビット(H)を付けることで受信側がビット境界を検出する。ボーレートを事前に合わせる必要がある。
Question 5: 組込みシステムの省電力設計でスリープモードの活用において正しい考え方はどれか。
- CPUが処理不要の時間を最大限スリープモードにして消費電流を削減する (Correct answer)
- スリープモードでも全周辺機能は停止しない
- スリープ中は割り込みで起動できない
- 省電力化には処理速度を落とすだけで十分
Correct answer: CPUが処理不要の時間を最大限スリープモードにして消費電流を削減する
バッテリ駆動の組込みシステムでは待機時のスリープモードが消費電力削減の鍵。Idle・Sleep・Deep Sleepなど段階的なモードがあり、割り込みやタイマーで復帰できる。起動ラテンシのトレードオフがある。
Question 6: 組込みシステムのI2C通信でクロックストレッチの説明として正しいものはどれか。
- スレーブが処理に時間が必要な際にSCLラインをLowに保ちマスタを待機させる (Correct answer)
- クロック周波数を自動的に上げる機能
- 通信エラー検出後にクロックをリセットする
- 複数マスタ間でクロックを同期させる
Correct answer: スレーブが処理に時間が必要な際にSCLラインをLowに保ちマスタを待機させる
I2Cのクロックストレッチはスレーブがデータ処理に時間が必要な場合に、SCLをLowに引き下げてマスタに待機を伝えるフロー制御機能。スレーブの処理能力に合わせた柔軟な通信を可能にする。
FreeRTOSのタスク優先度とプリエンプティブスケジューリングの説明として正しいものはどれか。