序文
- 前回の記事では、STM32L476RGのベアメタルプロジェクトを で
STM32CubeMX
ビルドしNUCLEO-L476RG
、uC-OS2 V2.93
のソースコードをダウンロードしてシステム移植を開始しました。
開発環境
-
win10 64ビット
-
Keil uVision5、MDK V5.36
-
uC-OS2 V2.93
-
開発ボード:NUCLEO-L476RG、MCUは
STM32L476RG
-
STM32CubeMX 6.9.1、STM32 のベアメタル プロジェクトの生成に使用
uC-OS2 ディレクトリクリッピング
- まず、Git 経由でクローンした uC-OS2 のディレクトリ全体を STM32 プロジェクトにコピーします。
-
uC-OS2 コードのカットを開始し、最初に他のプラットフォームのポート ファイルを削除して、
uC-OS2\Ports\ARM-Cortex-M\ARMv7-M
-
uC-OS2 に含まれるディレクトリを含める場合は
.git
削除することもできますが、もちろん Git サブモジュールの管理も考慮することもできます
- 使用していない
TLS
と を削除するTrace
と、uC-OS2 のコード ディレクトリは次のようになります。
uC-OS2 を Keil MDK5 プロジェクトに追加
-
現在 Keil MDK5 プロジェクト管理を使用しており、そのディレクトリ下に 3 つの
uC-OS2
Port
Cfg
ディレクトリをそれぞれ追加し、ソース ファイルを追加すると、コード リストは次のようになります。uC-OS2
-
を追加するとコンパイルの再定義が発生するため、追加する必要はありません
ucos_ii.c
。このファイルを確認すると、C のソース ファイルが直接含まれていることがわかります。 -
追加しないように注意してください。追加しないと、
os_dbg_r.c
ポートの下のos_dgb.c
再定義に従います。
構成ヘッダー ファイルへのパス
-
次のパスを Keil MDK5 プロジェクトに追加します。
-
..\uC-OS2\Source
-
..\uC-OS2\Ports\ARM-Cortex-M\ARMv7-M\ARM
-
..\uC-OS2\Cfg\Template
コンパイルの問題を修正する
-
直接コンパイルすると、定義する必要があるマクロが 2 つあることがわかります:
CPU_CFG_KA_IPL_BOUNDARY
とCPU_CFG_NVIC_PRIO_BITS
、 -
uC-OS2\Cfg\Template\app_cfg.h
これら 2 つの [マクロ定義] を次のように変更して追加します。
#ifndef CPU_CFG_KA_IPL_BOUNDARY
#define CPU_CFG_KA_IPL_BOUNDARY 4u
#endif
#ifndef CPU_CFG_NVIC_PRIO_BITS
#define CPU_CFG_NVIC_PRIO_BITS 4u
#endif
- 上記の操作を行うと、基本的に uC-OS2 V2.93 が STM32L476 に移植されます。次に、uC-OS2 が正常に動作するかどうかを確認するためのいくつかのタスクを作成します。
まとめ
-
この記事では、Keil MDK5 をベースにして STM32L476 プラットフォームに移植された uC-OS2 V2.93 の動作を記録することに注目します。主にプロジェクトの構築、プロジェクトにコードを追加します。
-
Keil MDK5 のベアメタル プロジェクトのおかげで、uC-OS2 の追加は比較的スムーズに行えます。ソース ファイルを追加し、uC-OS2 のヘッダー ファイルのパスを設定し、必要な 2 つの[マクロ定義]を定義すると、正常にコンパイルされました。
-
次に、ユーザーのタスクを記述し、uC-OS2を実行させ、[デバッグ]プロジェクトを使用してuC-OS2をデバッグし、uC-OS2の起動処理、タスクの切り替え、各モジュールのワークフローを理解します。