ルネサスエレクトロニクス社製MCALの使用方法
AUTOSARのBSWは、3層のレイヤ構造になっており、その最下位のレイヤが「Microcontroller Abstraction Layer(MCAL)」です。MCALは、対象のマイコンに応じた実装が必要であり、通常、マイコンベンダから提供されます。車載マイコンで高いシェアを持つルネサスエレクトロニクス社(以下、ルネサス)では、RH850/F1K、F1KH、F1KM向けのMCALを同社Webサイトから公開しています(要ユーザ登録)。今回のコラムでは、このルネサス製MCALを実際に使用する方法について紹介します。
なお、使用方法はテーマに分けて「ルネサス製MCAL使用事例」に随時追加していく予定です。

※本コラムは、ルネサスエレクトロニクス社の許可を得て公開しています。

MCALとは

AUTOSARで定義されたアーキテクチャにおいて、MCALは以下のようにBSWの最下位レイヤに位置し、マイコンの抽象化を行います。ECU Abstraction Layerとの共通のインターフェースを使用することによって、ECU Abstraction Layerから上位のモジュールは、マイコンに依存せずに開発することができるわけです。

MCALでは、I/O端子やCANなどの各周辺機能に応じて20個(※1)のモジュールの仕様が規定されています。また、MCALの各モジュールも、他のBSWと同様にECU Abstraction Layerとのインターフェース(API)やコンフィギュレーション方法が規定されています。しかし、コンフィギュレーション方法については、マイコンによって機能や制限等が様々ですので、マイコンベンダが独自に定義していることが一般的です。本コラムでは、AUTOSAR仕様とルネサス製MCALの仕様との違いの例についても、紹介していきます。

※1 ルネサス製MCALはAUTOSARのR4.2.2に対応しているため、本コラムもR4.2.2を対象としています。

インストール方法およびフォルダ構成

My Renesasに登録・ログイン後、以下からルネサス製MCALをダウンロードすることができます。

本コラムでは、RH850/F1Kを対象としていますので、「AUTOSAR_RH850_F1K_MCAL_Ver42.05.00_QM_MP_REE」をダウンロードします。

REN_AUTOSAR_RH850_F1K_MCAL_Ver42.05.00_QM_MP_REE_SWR_20200415.zip(約210MB)というファイルがダウンロードされるため、任意の場所に解凍します。
解凍すると、以下のように包含するモジュールに応じた6つのzipファイルが入っています。

  • [1] RTM0RHF1K0CCAN4202JCC0E_42_05_00.zip:Can
  • [2] RTM0RHF1K0CCRT4202JCC0E_42_05_00.zip:CorTst
  • [3] RTM0RHF1K0CFLT4202JCC0E_42_05_00.zip:FlsTst
  • [4] RTM0RHF1K0CLND4202JCC0E_42_05_00.zip:Lin
  • [5] RTM0RHF1K0CRMT4202JCC0E_42_05_00.zip:RamTst
  • [6] RTM0RHF1K0CSPL4202JCC0E_42_05_00.zip:Adc、Dio、Fls、Gpt、Icu、Mcu、Port、Pwm、Spi、Wdg

それぞれのzipファイルを解凍すると、対応するモジュール用のインストーラが入っています。例えば、[1]のRTM0RHF1K0CCAN4202JCC0E_42_05_00.zipには、AUTOSAR_RH850_F1K_MCAL_Ver42.05.00_CAN.exeというCan用のインストーラが入っています。

使用したいモジュールのインストーラを実行することで、任意の場所へMCALを構成するファイル一式をインストールすることができます。2つ以上のインストーラを実行する場合は、以下ウィンドウの「Destination Folder」に、同一のフォルダパスを指定することをおすすめします。

すべてのモジュールのインストール先を同じフォルダにすることによって、共通ファイルが重複してインストールされることを防ぐことができます。つまり、2つ目以降のモジュールのインストールでは、差分のファイルのみがインストールされます。

<インストールフォルダ>
├── common
│   ├── include
│   │   ├── 4.2.2
│   │   └── common
│   └── src
│       ├── 4.2.2
│       └── common
└── X1X
    ├── common_platform
    │   ├── docs
    │   ├── generic
    │   │   ├── compiler
    │   │   ├── docs
    │   │   ├── generator
    │   │   ├── include
    │   │   ├── make
    │   │   ├── src
    │   │   └── stubs
    │   ├── Global_Sample_Application
    │   │   ├── include
    │   │   └── src
    │   └── modules    … ①
    │       ├── adc
    │       ├── can
    │       ├── cortst
    │       ├── dio
    │       ├── fls
    │       ├── flstst
    │       ├── gpt
    │       ├── icu
    │       ├── lin
    │       ├── mcu
    │       ├── port
    │       ├── pwm
    │       ├── ramtst
    │       ├── spi
    │       └── wdg
    └── F1x
        ├── common_family
        │   ├── config
        │   ├── docs
        │   ├── generator
        │   ├── include
        │   ├── make
        │   ├── src
        │   └── xml
        ├── Global_Sample_Application
        │   └── F1K
        └── modules    … ②
            ├── adc
            ├── can
            ├── cortst
            ├── dio
            ├── fls
            ├── flstst
            ├── gpt
            ├── icu
            ├── lin
            ├── mcu
            ├── port
            ├── pwm
            ├── ramtst
            ├── spi
            └── wdg
6つすべてのインストーラを実行し、同じフォルダにインストールすると、左記のように展開されます。
(下位フォルダは省略して記載しています)

各モジュールのフォルダは、①の<インストールフォルダ>\X1X\common_platform\modulesおよび②の<インストールフォルダ>\X1X\F1x\modulesにインストールされます。各モジュールを構成するファイルの中で、RH850シリーズ全体で共通のファイルは①へ、F1x系に特化したファイルは②へインストールされます。
例えば、Mcuのソースコードは、<インストールフォルダ>\X1X\F1x\modules\mcu\srcに格納されていますが、Mcu以外は<インストールフォルダ>\X1X\common_platform\modules\<モジュール名>\srcに格納されています。
(①②内の各フォルダは、対象モジュールのインストーラを実行することで追加されていきます)

MCAL全般のマニュアルは以下のフォルダにに格納されています。
  • <インストールフォルダ>\X1X\common_platform\generic\docs\Getting_Started
  • <インストールフォルダ>\X1X\common_platform\generic\docs\Modules_Overview
モジュール毎のマニュアルは以下のフォルダに格納されています。
  • <インストールフォルダ>\X1X\F1x\modules\<モジュール名>\user_manual
その他にも、モジュール毎に動作確認するためのサンプルソースコードやコンフィギュレーションファイル、スタブといったファイルも含まれています。


なお、RH850/F1Kのハードウェアマニュアル、および、F1KのアーキテクチャであるRH850G3KHのソフトウェアマニュアルも以下から公開されています。(こちらはユーザ登録不要です)

ジェネレータ

ルネサス製MCALには、各モジュールのコンフィギュレーションを実現するためのジェネレータも用意されています。
※ジェネレータやコンフィギュレーションの仕組みに関しては「Basic Softwareのコンフィギュレーション仕様の仕組み」をご参照ください。

ルネサス製MCALのジェネレータは、コマンドラインで実行可能なexe形式のアプリケーションとして提供されます。ただし、モジュール毎にジェネレータの構成が異なります。具体的には、CanとSpiの2モジュールだけは、MCALConfGen.exeという共通のアプリケーションを使用するのに対し、その他のモジュールは、モジュール毎に<モジュール名>_X1x.exeという単独のアプリケーションとなっています。それぞれ以下に格納されています。

  • <インストールフォルダ>\X1X\common_platform\generic\generator\MCALConfGen.exe
  • <インストールフォルダ>\X1X\common_platform\modules\<モジュール名>\generator\<モジュール名>_X1x.exe
  • <インストールフォルダ>\X1X\F1x\modules\mcu\generator\Mcu_F1x.exe (※ソースコード同様、Mcuだけは②側のフォルダに格納されています)

CanとSpiは、MCALConfGen.exe実行時に与える-mオプションにて、どちらのモジュールで実行するかを選択し、対応するDLLが読み込まれる仕組みとなっています。例えば、Canのジェネレータの場合は、コマンドプロンプトから、以下のコマンドにより、実行することが可能です。

> cd <インストールフォルダ>\X1X\common_platform\generic\generator
> mkdir test
> cd test
> ..\MCALConfGen.exe -m Can ^
  ..\..\..\..\F1x/modules/can/generator/R422_CAN_F1x_BSWMDT.arxml ^
  ..\..\..\..\F1x/modules/can/sample_application/F1K/4.2.2/config/App_CAN_F1K_701581_Sample.arxml ^
  ..\..\..\..\F1x/common_family/generator/Sample_Application_F1x.trxml ^
  ..\..\..\..\F1x/common_family/config/4.2.2/MCU_CAN_F1K.arxml ^
  ..\..\stubs/4.2.2/Dem/xml/Dem_Can.arxml ^
  ..\..\stubs/4.2.2/Os/xml/Os_Can.arxml ^
  ..\..\stubs/4.2.2/EcuM/xml/EcuM_Can.arxml

上記実行例では、ルネサス製MCALをインストールした状態のまま実行できるように、相対パスを調整するため、<インストールフォルダ>\X1X\common_platform\generic\generatorの中にtestフォルダを作成し、その中からMCALConfGen.exeを実行しています。-mオプション以外の引数では、ジェネレータへの入力情報として、ルネサス製MCAL内に含まれるサンプルファイル等を指定しています。各引数の意味については「ルネサス製MCAL使用事例」にて、実際の使用例と併せて紹介しています。
※各ジェネレータは、-hオプションによりヘルプ情報を見ることができます。

上記コマンドを実行すると、<インストールフォルダ>X1X\common_platform\generic\generator\Can_Outputに、以下のようにCanモジュールに必要なソースコードファイルおよびジェネレータの実行ログファイルが生成されます。

Can_Output/
├── Can.log
├── include/
│   ├── Can_Cbk.h
│   └── Can_Cfg.h
└── src/
    ├── Can_Lcfg.c
    └── Can_PBcfg.c

開発環境の紹介

本節では、ルネサス製MCALを動作させるにあたり、本コラム作成時に当社内で使用した開発環境について紹介します。

評価ボード

評価ボードは、北斗電子製のHSBRH850F1K100を使用しました。本ボードは、マイコンチップを購入者側で調達した上で注文する受注生産品となります。本コラム作成時は、以下のチップを使用しました。

・R7F7015813AFP (100pin、Code Flash:2048KB、Local RAM:128KB)

本ボード単体で、UART(USBシリアル)やCAN通信を行うことができ、拡張I/Oインターフェースを使用することで、他の周辺機能も使用することが可能となります。

なお、デバッガはE1エミュレータを使用しました。
※既にE1エミュレータは販売を終了しており、後継品はE2エミュレータになります。


コンパイラ

MCALのインストーラと同じフォルダに格納されているリリースノート(Releasenotes_F1K_CAN_R422_Ver42.05.00.pdf等)に明記されていますが、ルネサス製MCALで使用可能なコンパイラはGreen Hills C Compiler(以下、GHS)となります。実際、ルネサス製MCALにはGHS向けのCompiler.hしか含まれていないことや、Mcuのソースコードが一部GHS向けのアセンブリ言語で実装されている等、GHSでしかビルドできない内容となっています。リリースノートには、GHSのバージョンやコンパイルオプションについても記載されていますが、これはMCALのテスト実施時に使用したGHSの情報であって、異なるバージョン・コンパイルオプションであっても、使用可能とのことです。
※本コラム作成時は、GHSのバージョン2015.1.7を使用しました。

AUTOSAR OS

MCAL含めBSWやRTEは、AUTOSARのOS上で動作させることが前提となっているため、本コラムではTOPPERS/ATK2(以下、ATK2)を使用しました。ATK2は、HSBRH850F1K100向けにポーティングされていて、使用するコンパイラに応じて、GHS版とCC-RH版の2つが以下から公開されています。

メモリ保護は使用しないため、本コラムでは、GHS版のSC1を使用しました。
※メモリ保護に関しては「AUTOSAR開発体験キット「メモリ保護編」発売」をご参照ください。

IDE

GHSを使用する際のIDEとしてMULTIがありますが、GHS版のATK2の構成上、本コラム作成時は、makeコマンドによりジェネレータ実行やコンパイルを行い、ロード/実行/デバッグはルネサス製のIDEであるCS+を使用しました。Windowsでも、Cygwin等の環境を用意すれば簡単にmakeコマンドを実行することが可能です。
なお、V8.04.00以降のCS+では、GHSによるビルドにも対応しています。GHS向けのプロジェクトファイルの作成が必要ですが、CS+を用いてATK2をGHSでビルドすることも可能です。

ルネサス製MCAL使用事例

では、前述の開発環境を用いて、ルネサス製MCALを実際に使用した事例について、テーマに分けて紹介します。

鴫原 一人博士(情報科学)
鴫原 一人(Kazuto Shigihara)

ASI事業部
次長 / エグゼクティブフェロー

この記事を読んだ人はこちらの記事も読んでいます。