inflearn logo
知識共有
inflearn logo

FreeRTOSプログラミング 2 - 実務で起きる40の障害から学ぶRTOS設計とデバッグ

RTOSのコードが時々止まってしまい、どこから確認すればいいのか途方に暮れたことはありませんか?STM32ボードで実際に起こる不具合40種類を意図的に再現し、画面上の数値・デバッガー・ログなどの証拠をもとに、原因を突き止めて修正するまで、最後まで一緒に取り組みます。

1名 が受講中です。

難易度 中級以上

受講期間 無制限

C
C
FreeRTOS
FreeRTOS
stm32
stm32
rtos
rtos
lvgl
lvgl
C
C
FreeRTOS
FreeRTOS
stm32
stm32
rtos
rtos
lvgl
lvgl

この講座で身につくこと

  • タスク分割、優先順位、周期待機(vTaskDelayとvTaskDelayUntil)を症状と数値から判断する

  • ISRの優先順位とFromISR APIの制約を守り、割り込みとRTOSを安全に連携する

  • キュー、通知、イベントグループ、ミューテックスをデータフローに合わせて選び、デッドロックや優先度逆転を回避する

  • DMA・UARTの非同期処理におけるバッファの所有権と完了タイミングを正しく扱う

  • スタック・ヒープ・ログ・ウォッチドッグで故障の証拠を集め、再発を防ぐ

  • CubeIDEデバッガ(ブレークポイント、コールスタック、Live Expressions)で原因を直接追跡する

講義を修了すると得られること

時々停止するRTOSコードを勘ではなく証拠に基づいて診断し、修正する力。画面の数値、デバッガー、ログから原因を絞り込み、修正後は同じ条件で再確認する習慣が身につきます。

実習コードはC言語で書かれたFreeRTOSプロジェクトで、STM32ボード(STM32F429I-DISC1)上で動作し、結果はLVGLで描画したLCD画面の数値で確認します。RTOSを初めて学ぶための講座ではなく、動作はするものの、ときどき停止するコードを扱う講座です。

一言でまとめると

STM32ボード上で意図的に再現した実務で起こる故障40種類を、一つずつ証拠を追いながら原因を特定し、修正します。タスク設計、割り込みとDMA、キューと同期、メモリ診断、堅牢性まで。全40章、約14時間30分。

制作方法について

この講座は、AIを活用した制作工程で作られています。ナレーションには講師本人の声を学習させた音声合成を使用し、台本やグラフィックの制作にもAIツールを活用しました。企画と内容の確認は講師自身が行い、すべての実習結果は実際のSTM32ボードとSTM32CubeIDEで実行して確認した画面です。

「ときどき停止します。デバッガで見ると問題ありません。」

RTOSの不具合は、たいていこのようにして見つかります。毎回止まるなら、むしろ簡単です。数時間に一度、特定の順序でボタンを押したときだけ発生し、ログを入れると消えてしまう不具合は、コードを何度読み返しても見つかりません。

そのため、多くの開発者は遅延時間を延ばしたり、優先度を変更したり、待機時間を無限にしたりしてみます。症状はいったん消えますが、なぜ直ったのか説明できない修正は、別の場所で再び問題を引き起こします。

この講義の目標は、原因を証拠に基づいて説明できる修正です。

組み込みの面接で実際に出る質問

「優先順位逆転とは何ですか?」 「ISR内ではなぜFromISR APIを使う必要があるのですか?」 「スタックオーバーフローをどうやって検出しますか?」 「ウォッチドッグがあるのに、なぜシステムが停止したままになるのですか?」

本で覚えた答えは、追加質問一つで崩れます。この講義では、こうした故障をボード上で実際に起こし、数値で原因を確認してから修正します。面接で「実際に再現してみたところ、このようになりました」と答えられるようになります。

すべての章が同じ順序で進みます

各章では、実務で実際に遭遇する不具合を一つ取り上げます。不具合のあるビルドと修正済みのビルドを同じボードで順番に実行し、結果を数値で比較します。

STEP 1

故障の再現

不具合のあるビルドで症状を画面に表示します。

STEP 2

証拠収集

LCDの数値、デバッガー、ログから原因を絞り込みます。

STEP 3

修正との比較

修正したビルドと並べて確認します。

本講座では、以下の内容を学びます

タスク・割り込み・データフロー

01プロジェクト構成と起動順序、初期化前の割り込み

02 GUIタスクとワーカータスクの境界

03 優先度、周期的な待機、ソフトウェアタイマー

04キュー、通知、イベントグループによるデータの受け渡し

05 ISRの優先度、FromISR API、DMA・UARTの完了タイミング

同期・診断・堅牢性

06 ミューテックス、優先度逆転、ロック順序とデッドロック

07 スタック・ヒープの計測とログが変える実行時間

08 センサー故障、再試行、無限待機、ウォッチドッグ

09長時間記録におけるカウンターのオーバーフロー

10 PCテストと長時間テストの合格基準

この講義ならではの特徴

40章、1枚のボードと1つの画面

すべての不具合をSTM32F429I-DISC1とLVGLの画面一つで再現します。実行するたびに同じ数値が表示されるため、修正前後をそのまま比較できます。

実際のソースコードとデバッガー画面

STM32CubeIDEの実際のソース、ブレークポイント、コールスタック、Live Expressionsを使って、原因を直接追跡します。

不具合のあるビルドと修正版のビルド

2つのビルドを並べて比較します。

原文に基づく

レジスタはRM0090・PM0214の原文を参照します。

各章の練習問題

他の解決策と比較します。

実際の講義画面

ボード画面の数値で故障前後を比較します

CubeIDEのデバッガーで原因となった行を特定します

第1回授業 · 同じソースなのに同僚のPCでビルドしたものだけ画面が崩れる

5回目の授業 · 不具合のあるビルドと修正済みビルドを同じボードで並べて比較

37回目のレッスン · ウォッチドッグがあっても停止したままリセットされない故障

第30回レッスン · ボードで測定した値をもとに描いたタイミング図

16回目のレッスン · デッドロックの4条件と断ち切る連鎖

16回目の授業 · 実際の製品でデッドロックが現れる様子

29回目のレッスン · スタックの末端を越えると隣接メモリを上書きする

38番の講義 · カウンターがオーバーフローしても引き算は正しい

26番目のレッスン · 負荷の大きい製品でだけ時々発生するタイムアウト

25番のレッスン · 完了通知で送信タスクを起こす構造

18年にわたる現場での講義ノウハウ

2008年からSamsung Electronics、LG Electronics、SK hynix、現代モービスなどの企業や機関で、開発者を指導してきました。この講義は、現場で扱ってきたRTOSの故障パターンを1台のボードで誰でも再現できるように再構成したものです。

FreeRTOSを使ったことがあるなら、次は不具合を突き止める番です

タスクとキューは作れるものの、ときどき止まる問題を前に、どこから調べればよいのか途方に暮れたことがある方に向けた講義です。第1編(FreeRTOSプログラミング)でAPIを学んだ方は、第2編でそのAPIが実務でどのように不具合を起こすのかを扱います。

組み込み職を目指しているなら、第1編でAPIを習得し、第2編でそのAPIが実務でどのように壊れるのかを体験してみてください。現場の開発者が何年もかけて一つずつ遭遇する不具合を、全40章、約14時間30分にまとめました。

実習環境

ボードとツール

  • STM32F429I-DISC1(LCD内蔵)

  • STM32CubeIDE 2.2.0

  • STM32CubeMX(2回目のレッスン)、PuTTY(シリアルログのレッスン)

  • C言語、FreeRTOS、LVGL

ボードがない場合

  • 各章の実行画面とデバッガー画面が動画に収録されています。

  • 映像を見ながら、原因と修正の過程を追っていけます。

関連技術:FreeRTOS · rtos · stm32 · C · lvgl

よくある質問

Q. 第1編を受講していなくても大丈夫ですか?

FreeRTOSでタスク、キュー、セマフォを一度でも使ったことがあれば、すぐに受講できます。各章の冒頭で、必要な背景知識を短く振り返ります。FreeRTOSが初めてなら、1編を先に受講することをおすすめします。

Q. まだ就職前ですが、受講しても大丈夫ですか?

FreeRTOSでタスクとキューを一度でも使ったことがあれば十分です。むしろ就職前に受講するほうがお得です。面接でよく聞かれる優先度逆転、ISR処理、スタックオーバーフロー、デッドロックをすべてボード上で実際に再現し、修正してみるからです。

Q. ボードは必ず必要ですか?

いいえ。実行結果とデバッガー画面をすべて動画でお見せします。ご自身で再現してみたい場合は、STM32F429I-DISC1ボードをご用意ください。

Q. ナレーションはAI音声ですか?

はい。講師本人の声を学習させた音声合成です。台本と実習内容は講師が自ら企画・確認しており、実習画面は実際のボードで実行した結果です。

次のような方に
おすすめです

受講対象

  • FreeRTOSを使ってみたものの、ときどき停止する問題の原因を見つけられない開発者

  • 動作はするが、なぜそのように書く必要があるのか説明できないRTOSユーザー

  • 割り込み・DMAとRTOSを併用して行き詰まった開発者

  • 優先度逆転、デッドロック、原子性を根拠を挙げて説明したい方

  • FreeRTOSプログラミング(第1編)を受講し、実践に進もうとしている受講生

前提知識

  • C言語のポインタと構造体

  • FreeRTOSの基本API(タスク、キュー、セマフォ)の使用経験

  • STM32CubeIDEの基本的な使い方

こんにちは
guileschoolです。

経歴認証済み

3,594

受講生

263

受講レビュー

281

回答

4.7

講座評価

7

講座

仁荷大学で電子工学を専攻し、組み込みソフトウェア開発者として働いていました。

2008年から18年間、現場で講義を行ってきました。サムスン電子、LG電子、SKハイニックス、現代モービス、LIG D&A、ソウル大学校などの企業や機関で開発者を指導し、その経験を講義教材としてまとめました。

『RTOS』(2008)、『Linuxシェル』(2018)、『FreeRTOS』(2019)、『Cortex-M』(2022)、『ブートローダーベースの組み込みシステム』(2023)

YouTube ガイルスクール(https://www.youtube.com/@guileschool):組み込みと開発の講義

Macの自動化も15年間研究しています。Keyboard MaestroとAppleScriptで反復作業を減らす方法を教え、Final Cut Pro自動化プラグイン「Greenlight」を自ら開発して販売しています。自作のツールはGitHub(https://github.com/guileschool)で公開しています。

YouTube キャプテンマックボット(https://www.youtube.com/@captainmacbot):MacでAIと自動化を使う方法

講義のリクエストおよびその他のお問い合わせはguileschool@gmail.comまでお送りください。

もっと見る

カリキュラム

全体

43件 ∙ (14時間 42分)

講座資料:

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

まだ十分な評価が集まっていない講座です。
ぜひ最初のレビューをお寄せください。

guileschoolの他の講座

知識共有者の他の講座はこちら

似ている講座

同じ分野の他の講座を見てみましょう!

期間限定セール

¥165,000

50%

¥41,442