環境構築とソフトウェア準備
以下のソフトウェアとバージョンを使用します。- MCAL: NXP S32K14x AUTOSAR 4.2 MCAL RTM 1.0.1 (特に
HF1_1_0_1バージョンを推奨します。このバージョンは、以前のバージョンで存在したサンプルコードの問題が修正されており、正常に動作する例が含まれています。) - AUTOSAR設定およびコード生成ツール: EB Tresos Studio 24.0.1
- コンパイラ: GCC ARM Embedded V6.3.1
- 開発環境/デバッガ: S32 Design Studio for ARM V2.2
開発ボードとしては、S32K144 EVBを使用しました。このボードのピン定義は、公式リファレンスと基本的に一致しています。サンプルプロジェクトでは、LEDはPTD15、PTD16、PTD0に、ユーザーボタンはPTC12、PTC13に接続されています。
MCALサンプルプロジェクトのインポート
EB Tresos StudioでのS32K14x MCALサンプルプロジェクトの設定
まず、サンプルプロジェクトにはIntegrationFramework_TS_T40D2M10I1R0という静的モジュールが含まれています。EB Tresos Studioでコードを正しく生成できるように、このモジュールをMCALインストールディレクトリ内のpluginsフォルダにコピーする必要があります。このモジュールは、OSシステム、初期化、GPIO制御など、サンプルアプリケーションの核となる機能を提供します。
次に、EB Tresos Studioを起動し、以下の手順でサンプルプロジェクトをインポートします。
- 「File」メニューから「Import...」を選択します。
- 「Existing Projects into Workspace」を選択し、「Next」をクリックします。
- 「Import Projects」ウィンドウで以下の設定を行います。
- 「Select root directory」を選択し、「Browse...」ボタンをクリックします。
- MCALのインストールパス内のサンプルプロジェクトディレクトリ(例:
MCALのインストールパス\S32K14X_MCAL4_2_RTM_HF1_1_0_1\S32K14X_MCAL4_2_RTM_HF1_1_0_1_Sample_Application\Tresos\Workspace\[project])を選択します。 - 「Copy projects into workspace」チェックボックスをオンにし、オリジナルファイルを保護します。
- 「Finish」をクリックしてプロジェクトのインポートを完了します。
インポート後、EB Tresos Studio内でMCALの設定を確認および変更できます。「Ecuc」アイコンをダブルクリックするか、右クリックで「Reload Configuration」を選択して設定をロードします。
EB Tresos Studioの主要なインターフェース要素は以下の通りです。
- プロジェクト管理ウィンドウ:
configディレクトリにはMCALコンポーネントの.xdm設定ファイルが、output/generatedディレクトリには生成されたソースコード(src、include)と外部ツール設定ファイル(.epc)が格納されます。 - AUTOSARコンポーネント設定ウィンドウ: AUTOSARコンポーネントのGUIベースの設定を提供します。
- プロジェクトOutlineウィンドウ: 現在選択されているコンポーネントの設定オプションを素早く表示します。
- 問題ウィンドウ: 現在のプロジェクトの全ての設定エラーと警告を表示し、問題箇所へのナビゲーションを支援します。
- プロパティウィンドウ: 設定項目や問題の詳細な説明を提供します。
設定が完了したら、設定の検証(Configuration Validation)を行い、成功したらハンマーアイコンをクリックしてコードを生成します。生成されたコードは、プロジェクトディレクトリ内のoutput\generate\に配置されます。
S32K144 MCALサンプルプロジェクトのディレクトリ構成
MCAL 1.0.1バージョン以降のサンプルプロジェクトは、主にTresosとeclipseの2つのフォルダで構成されます。TresosはEB Tresosプロジェクトを格納し、eclipseフォルダ内にはビルドプロセスをサポートするファイル群が含まれます。
eclipseフォルダ内で特に重要なのはauxiliaryディレクトリです。このディレクトリには、ツールチェーンに依存しない基本的なビルドシステムが格納されています。
auxiliary/
├── build/ ← ビルドシステムの主要なエントリポイント
│ ├── bin/ ← 生成された .elf ファイルなどの出力ディレクトリ
│ ├── cmm/ ← デバッガ用スクリプト (CMMスクリプト言語)
│ ├── launch.bat ← コンパイル起動スクリプト。必要な環境変数を設定し、make.batを呼び出す
│ ├── make.bat ← コンパイル制御スクリプト。コマンドライン引数を解析し、makeコマンドを実行する
│ └── makefile ← プロジェクトトップレベルのMakefile。完全なビルドルールを定義
└── toolchains/ ← ツールチェーン関連ファイル
├── linkfiles/ ← リンカスクリプト。FlashおよびRAMのメモリマップ、コード/データセクションのアドレスとサイズを定義
├── make/ ← Makefile設定断片
│ ├── ghs/ ← Green Hills Software (GHS) ツールチェーン用コンパイル設定
│ ├── iar/ ← IAR Embedded Workbench ツールチェーン用コンパイル設定
│ ├── linaro/ ← Linaro GCC ツールチェーン用コンパイル設定
│ ├── config.mak ← グローバルなビルド設定。BUILD_DIR, DEV_DIR, TOOLCHAIN_DEV_DIRなどのパス変数を定義
│ ├── files.mak ← ソースファイルとインクルードパスのリスト。コンパイル対象のソースディレクトリを定義
│ └── tools.mak ← ツールコマンド定義
└── startup/ ← スタートアップコードとヘッダファイル
├── include/ ←
└── src/ ← システム初期化、main関数、アセンブリスタートアップファイルを含む
S32K144 MCALサンプルプロジェクトのコンパイル
S32K14x MCALサンプルプロジェクトをコンパイルする際には、launch.batファイルを適切に設定する必要があります。このファイル内で、EB Tresosのインストールディレクトリ(TRESOS_DIR)、コンパイラのインストールディレクトリ(例: LINARO_DIR)、およびMCALプラグインのインストールディレクトリ(PLUGINS_DIR)を設定します。
launch.batの設定が完了したら、Windowsコマンドプロンプトからサンプルプロジェクトのルートディレクトリにあるビルド起動ファイル—launch.batを実行してコンパイルを開始します。
.\launch.bat MODE=USER TOOLCHAIN=linaro
launch.batスクリプトの主要なコンパイルオプションは以下の通りです。
- **コンパイルツールチェーンの選択**:
launch.bat TOOLCHAIN=[toolchain]ghs: Green Hills Multiコンパイラiar: IARコンパイラlinaro: GCCコンパイラ
- **アプリケーション実行モードの設定**:
launch.bat MODE=[mode]SUPR: スーパーバイザモード(デフォルト設定)USER: ユーザーモード。このモードで実行するには、EB Tresosの設定で必要なMCALドライバの「Enable User Mode Support」パラメータをtrueに設定する必要があります。AUTOSAR OSを使用する場合、OSカーネルコードはスーパーバイザモードで実行する必要があるため、ユーザーモードを選択できません。
- **クリーンアップ**:
launch.bat clean- このコマンドは、生成されたオブジェクトファイルやリンカ出力ファイルを削除します。
上記のスクリプト実行後、ビルド出力ディレクトリ(通常はauxiliary/build/bin)にxxx.elfなどの実行可能ファイルが生成されます。ビルドオプションを変更または追加したい場合は、auxiliary/toolchains/makeディレクトリ内の各コンパイラに対応するMakefileファイルを編集できます。EB TresosでIntegrationFrameworkモジュールの設定項目を変更しコードを再生成すると、Modules.makファイルが更新され、ビルドスクリプトが必要なモジュールをインクルードしてコンパイルするようになります。
S32K144 MCALサンプルプロジェクトのダウンロードとデバッグ
.elfファイルが正常に生成されたら、デバッガを使用してターゲットMCUにダウンロードし、デバッグを開始できます。ここではS32 Design Studio (S32DS) を使用した手順を説明します。
- **S32DSで空のプロジェクトを作成します。**
- S32DSを起動します。
- 「File」→「New」→「S32DS Application Project」を選択します。
- プロジェクト名は任意(例:
MCAL_Sample_Test)、ターゲットチップはS32K144を選択します。 - SDK選択画面では「None」を選択します(ここでは単に書き込みに利用するため)。
- 「Finish」をクリックします。
- **デバッグ設定を開きます。**
- ツールバーの緑色のバグアイコンの横にあるドロップダウン矢印(またはメニューの「Run」→「Debug Configurations...」)をクリックして、デバッグ設定ウィンドウを開きます。
- **デバッグ設定を行います。**
- 「Main」タブで:
- 「C/C++ Application」の「Browse...」をクリックし、コンパイル済みの
.elfファイルを選択します。 - 「Build Configuration」は「Debug」を選択します。
- 「C/C++ Application」の「Browse...」をクリックし、コンパイル済みの
- その他のデバッグ設定は、標準的な手順に従って行います。
- 開発ボードを接続し、「Apply」→「Debug」をクリックしてプログラムを書き込みます。
- 「Main」タブで:
書き込みが成功したら、ツールバーの緑色の三角アイコン(Resume)をクリックして全速実行します。ボード上のLEDが点灯することを確認し、ユーザーボタンを押すとLEDが消灯、再度押すと点灯する動作が確認できます。
コンパイルフローの概要
Makeベースのビルドプロセスは、launch.batから開始されます。launch.batはmake.batを呼び出し、make.batがGNU make.exeを起動し、メインのMakefileにパラメータを渡します。Makefileは、include ../toolchains/make/*.makコマンドを介して、一連の設定ファイルやソースリストファイルを取り込みます。
設定ファイルには、config.mak(ローカル/プラットフォーム固有の設定を定義し、さらにspecific_config.makを取り込む)、tools.mak(ツールチェーンの絶対パスを定義)、build_cfg.mak(IAR / Linaro / GHSなどの各ツールチェーンに特化したコンパイル/アセンブル/リンクオプションを定義)などがあります。ソースリストファイルには、files.mak(コンパイル対象のソースファイルリストを定義し、さらにModules.makで有効化されたAUTOSARモジュールリストを取り込む)などがあります。
IntegrationFrameworkのビルドシステムでは、launch.batが環境変数(TRESOS_DIR、MAKE_DIR、LINARO_DIRなど)を設定し、ビルドプロセスを開始します。make.batはPLATFORMやTOOLCHAINなどのパラメータをmakeに渡します。Makefileはこれらのパラメータの有効性をチェックします。config.makはメインの設定ファイルであり、EB Tresosが生成するspecific_config.makを-include構文で取り込みます。specific_config.makはPLATFORMやTRESOS_TARGET_IDなどを定義します。Modules.makはUseXxxスイッチに応じて動的にMCAL_MODULE_LISTを生成し、files.makはこのMCAL_MODULE_LISTに基づいてSRC_DIRSに含めるモジュールのソースディレクトリを決定します。