公開講座
【ハンズオン研修】
リアルタイム組み込みプログラミング
~ARMコアとfreeRTOSを使用した実践力強化~
コース番号:519H
日数:4日間
形態:ハンズオン
開催場所:ラーニング・ツリー(神保町セミナールーム)
研修コースの概要
今後も重要性が高く知識習得には幅広く深い知識が必要とされる組み込みプログラミングですが、C言語での経験があり、今後組み込みプログラミングを始めるエンジニアを対象に、基本的なCPUの動作やプログラミングを始める前に必要とされるメモリセクション割り付けから始めて、リアルタイムOSの適切な優先度設計や、高優先度スレッドプログラミングでの留意点などの高度な知識の習得と演習を行います。演習はARMコアとfreeRTOSを利用しますが、HALミドルウェアやCMSISv2APIにより抽象化して、他のCPUやリアルタイムOSでも共通的に必要となる知識やスキルを習得します。
前半の2日間ではSTM32NUCLEO-F401RE(同等品に変更の可能性あり)でLEDを使ったタイマなどの組み込みプログラミングの基礎的な動作を確認できる周辺デバイスの利用方法を学びやfreeRTOSの簡単なマルチスレッドプログラミングを学びます。優先度付きマルチスレッドで簡単な2つのLEDの点滅タスクを実装して、優先度や競合制御により逐次連続実行、並行同時実行、一時中断されるプリエンプション実行などの様々な実行パターンを視覚的に体験します。これにより取り組む問題をどのようにスレッドに分割して、優先度付けを行うべきかを設計できる能力を養います。
後半の2日間ではSTM32NUCLEO-F401REにESP32-WROOM-32を装着して、WiFiによるHTTPサーバを開発します。その過程でfreeRTOS導入による並行サーバや優先度キューによるリアルタイム処理化への改造を通してリアルタイムOSプログラミングスキルを習得します。また、各スレッドに割り当てるスタック量や全体のヒープ総量の見積もりなど、プログラミング以外に必要とされるRTOS組み込みスキルも取得します。さらにソフトウェア工学の観点に基づき、基本設計、機能設計、詳細設計の設計工程を重視して、チーム開発のメンバーシップ育成を狙います。またC言語による構造化プログラミング技術を利用しつつ、演習では意図的に盛り込んだ不具合をカバーするための再設計工程を盛り込みアジャイル的に進行します。なお本コースにはモータ制御などのメカトロニクスは含まれません。
開催日程 |
|
---|---|
時間 | 9:30 - 17:30 |
料金 |
|
受講形態 |
ハンズオン
|
会場 | 弊社 神保町 セミナールーム » |
この研修では次のスキルが習得できます(使用言語はC#)
- CPUコア、SoC、ボードの役目の理解
- メモリセクションの理解と割り付け設計
- タイマ、UART、割り込みなどのハードウェアの仕組みの理解とソフトウェアによる操作
- ATコマンドやHTTPプロトコルの理解と実装
- リアルタイムOSとLinuxやWindowsなどの汎用OSの違いの理解
- OSを使わなかった場合と使った場合のプログラミングの差異、使った場合のマルチスレッドの恩恵
- OSに具備されているスレッド、イベントフラグ、セマフォ、ミューテックス、メッセージキューの目的の理解と利用
- C言語構造化プログラミング
- 基本設計、機能設計、詳細設計工程での設計作業
この研修の対象者
このコースはC言語のプログラミング経験者で組み込みプログラミングを今後学んでいきたいと考えるエンジ二ア(C言語のプログラミング経験 最低6か月)を想定しています。
コース内容
概要
- CPU,メモリ等コンピュータシステム概要
- CPUの構造と動作
- メモリの種類とメモリマップ
- SoC
- ボード・基板
- CPUはリセット後どう動くか、プログラマは何をしなければならないのか
- メモリセクション
- ベクタテーブル
- メモリクリアとRAMへの定数コピー
- C言語によるプログラミング
- ビルド
- アドレスの割り付け
- タイマの利用
- タイマの選び方使い方
- PWM
- UARTの利用
- ボード外部へのI/O
- freeRTOSの導入
- プログラミング
- ATコマンド操作
- TCPシングルコネクションのWebサーバ
- TCPマルチコネクション
- freeRTOSマルチスレッドによるHTTP並行サーバ
- シングルスレッドのままRTOSへ移行
- RTOSでのマルチスレッド改造
- freeRTOSメッセージキューによるプライオリティキューの実現
演習内容
このコースには、自分でC#アプリケーションを作成する下記のような演習が用意されています。
- STM32CubeIDEのプロジェクト作成
- NUCLEOのSTM32-F401REのメモリ割り付け設計およびビルド
- 最低限のアセンブリプログラムでの動作
- C言語によるメモリセクション割り付け
- タイマを使ったLED点滅
- ボタン割り込みによるハンドラ動作確認
- PWMによるLED調光
- freeRTOS導入による簡単なマルチスレッドプログラミング
- ATコマンドのマニュアル操作
- ESP32-WROOM-02を使ったWebサーバ開発(シングルTCP)
- 開発したWebサーバのマルチTCPコネクション対応改造
- 開発したWebサーバのRTOS上アプリケーションへの移植
- freeRTOSでの開発したWebサーバの並行処理機能改造
- freeRTOSでの開発したWebサーバへの優先度キュー導入によるリアルタイム処理の実現