FAQ・トラブルシューティング#
本書の内容について#
優先度スケジューリングがないのに「リアルタイムOS」なのはなぜですか#
第4章で作るスケジューラは、SysTick による 10 ms タイムスライスの ラウンドロビンで、タスクの優先度は見ていません。優先度ベースの スケジューリングは第4章の課題4-4(発展)として扱っています。
そのため本書は、ハードリアルタイムの保証に必要な要素——優先度に もとづくデッドラインの議論、スケジューラビリティ解析、静的な最悪 実行時間 (WCET) 解析——を扱いません。そこが目的の場合は、専門書や 実務で使われる RTOS(FreeRTOS、Zephyr、TOPPERS など)の資料に あたってください。
本書が扱うのは、その手前にある次の 2 つです。
締切が実際のハードウェアでどう立ち現れるか。 第13章では 8 個の シリアルバスサーボに対し、毎周期「読み出して返事を待ち、書き込む」 ことで 20 ms の締切が物理的に発生します。撃ちっぱなしの PWM では、 そもそも守るべき締切が生まれません。
その締切を守るために OS 側に何が要るか。 プリエンプティブな 切り替え(第4章)、暴走タスクの隔離(第6章)、ロックと優先度逆転 (応用編 第1章 1.7)、実測にもとづく実行時間の見積もりとマージンの 取り方(第13章の補遺)。
優先度逆転と優先度継承そのものは、応用編 第1章 1.7 で扱っています。 課題4-4 を実装したうえで 1.7 の演習に進むと、優先度つきスケジューラの 上で優先度逆転を再現し、優先度継承で解消するところまで手を動かせます。
書き込みできない#
ポートが見えない: ケーブルがデータ通信対応か確認(充電専用 ケーブルでは認識されません)
Linux で Permission denied:
sudo usermod -aG dialout $USERのあと再ログイン書き込みが途中で失敗する: リセットボタンを 2 回素早く押して ブートローダモードにしてから再試行
シリアルモニタに何も出ない#
ボーレートが
115200になっているか確認書き込み直後は数秒待つ(USB の再列挙に時間がかかることがあります)
その他#
再現手順つきで GitHub Issues へ報告してください。