# 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](https://github.com/iory/build-your-own-arduino-rtos/issues) へ報告してください。