3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

μT-Kernel 3.0を「B-L475E-IOT01A - STM32L4 Discovery kit IoT node」に移植してみた

Last updated at Posted at 2020-09-11

目的

μT-Kernel 3.0の移植例を通し、その勘どころ(みたいなもの)を知っていただこうという記事です。

μT-Kernel

μT-Kernelとは

μT-Kernelとは、ずばり組み込み向けのRTOSです。高いリアルタイム性・軽量・移植しやすさが特徴。

μT-Kernel | トロンフォーラム
https://www.tron.org/ja/tron-project/what-is-t-kernel/mt-kernel/

μT-Kernel 3.0

その最新バージョン、μT-Kernel 3.0が2019年12月にリリースされています。

仕様書
ソースコード(GitHub)

なお残念ながら、対応ボードは以下の2種類のみ。

  • TX03 M367 IoT-Engine
  • RX231 IoT-Engine

ただ、このバージョンでは更に移植性が増したとのこと。
ということで、手持ちのボード「B-L475E-IOT01A - STM32L4 Discovery kit IoT node」に移植してみることにしました。

成果物と解説

ソースコード

先に紹介してしまいますが(笑)、以下です。

imagou/mtkernel_3: micro T-Kernel 3.0
https://github.com/imagou/mtkernel_3/

実装手順

おことわり

実装レベルは、以下の最低限なものとしてあります。
製品に載せるには色々と不足・問題がありますが、取っ掛かりとしてはよいかと・・・。

  • UARTでデバッグログが出力できる
  • RTOSとして期待通り(?)に動く(ディスパッチ、タイマ)

1. 移植対象ディレクトリをコピーして作成

移植対象ディレクトリは、以下の3つがあります。

  • 対象ボード(今回の場合、「B-L475E-IOT01A」)
  • 対象マイコン(今回の場合、「STM32L475」)
  • 対象マイコンのコア(今回の場合、「ARM Cortex-M4」)

これらを、既存のディレクトリをコピーし、作成します。
今回は「TX03 M367 IoT-Engine」をコピー元として選択しました(ARM Cortex-M3ベースなため、近しい)。

2. ビルドを通す

対象のボード、マイコン、コアに対応するよう、オプション定義をします。
(そうしないと、ビルド対象が切り替わらない)

以下のmakefile差分が参考になるかと思います。

Comparing tron-forum:master...imagou:develop_B-L475E-IOT01A · tron-forum/mtkernel_3
https://github.com/tron-forum/mtkernel_3/compare/master...imagou:develop_B-L475E-IOT01A#diff-1b00c5e169d416dfd6d5ad9b7aa4d23f

ビルド方法は、上記makefileが配置されているディレクトリにて、makeと打つだけです。

3. IDEへの取り込み

デバッグは必須なため、IDEに取り込みます。

私は以下を参考にし(手前味噌)、STマイクロのIDE、STM32CubeIDEに取り込みました。

STM32CubeIDEでTOPPERS/ASPカーネルを動かす - 本編 - Qiita
https://qiita.com/imagou/items/1a09d9afecc3f62e22d1

4. リセット後の動作確認

IDEにて、リセット後にハンドラが呼び出されることを確認しておきます。
(ここがまともじゃないと、デバッグどころではありません)

今回はマッピング(ベクタテーブルとハンドラ)の調整が必要でした。

5. ひたすら実装

以降は、コピーしたままでは当然動かないので、頑張って実装します。

といってもゼロベースは辛いので、今回は以下を参考にしました。

  • STM32CubeIDEで、実動作するプロジェクト
  • TOPPERS ASP-Kernel STM32L476 discoveryプロジェクト
  • STマイクロ H/W仕様書(当然)

ポイントを絞り、かつIDEデバッグをしながら進めれば、時間は掛かったとしても、間違いなく動くモノはできます!

おわりに

雑な紹介ではありますが、目的の通り、勘どころが伝われば幸いに思います!

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?