🛠️

HM-StarterKit RX631マイコン開発環境をLinuxで作る

2022/07/08に公開

HM-StarterKit

HM-StarterKit 手のひらサイズのマイクロマウス学習キット

  • CPU ボード RX631(R5F5631MDDFL)

開発環境について

HM-StarterKit の開発環境を作ろうと思ったが、取扱説明書で推奨されている統合開発環境の CS+ は Windows にしか対応していない。Renesas が提供している統合開発環境には CS+の他にもe2 studio がある。CS+では Renesas 独自コンパイラを利用する一方、e2 studio ではコンパイラとして独自拡張された GNU コンパイラを利用できる。この GNU コンパイラは、Windows だけでなく、Linux 向けにもバイナリやソースコードが提供されているため、Linux 上でも利用出来る。

Linux 版の e2 studio も提供されているので一見問題無さそうに思えるが、今回利用する RX631 を含む RX Family には対応していない。そのため、Linux 上で e2 studio を使った RX631 マイコンの開発環境としては、残念ながら使えない...。つらいです。

やること

Windows 上の e2 studio で自動生成出来る部分のソースコードを流用し、Linux でコンパイラの環境を構築する方針で開発環境を作ることにした。

利用したツールのバージョン

今回利用した e2 studio と GCC Toolchain のバージョンは以下の通り。

  • e2 studio 2022-04 for Windows
  • Toolchain Renesas v8.3.0.202202-GNURX

GCC for Renesas

Linux で開発するには、CS+は使えないので、独自拡張された GCC Toolchain(GCC, Newlib, Binutils, GDB)を使うことにする。これらのソースコードと、ビルド済み Toolchain のインストーラは以下から取得出来る。なお、ビルド済み Toolchain のインストーラを取得するには Renesas アカウントの登録が必須となっている。

これらの Toolchain を利用してソースコードをビルド出来る開発環境を作りたい。

Windowsにe2 studioをインストールする

GCC for Renesas を使ったプロジェクトを作成できる IDE として e2 studio を使う。e2 studio で RX631 をターゲットとして開発出来るのは Windows 版のみとなっているため、Windows 版をインストールする。Linux 版の e2 studio も存在するが、残念ながら RX Family には対応していない(現在は RA, RZ のみ対応)らしい。

統合開発環境 e2 studio | Renesas

インストール時には、特に、追加ソフトウェアの GCC Toolchains & Utilities にある GCC for Renesas RX のインストールにチェックを入れておくように。



e2 studio for WindowsでRX631をターゲットとしたプロジェクトを作成する

GCC for Renesas RX C/C++ Executable Projectを作成

Project nameを入力

Toolchain Settings / Device Settingsを設定する

言語は C 言語か C++か、開発に利用したい方を選ぶと良い。今回は、C 言語で作成するが、C++でも開発は問題無く行える。
ただし、利用するコンパイラやコンパイルオプションが少し変わってくるので、その点には注意してほしい。

ターゲットデバイスは、今回は以下の CPU ボードを対象にするので、R5F5631MDxFL、エンディアンは Little を選択する。

CPUボード RX631(R5F5631MDDFL)
HM-StarterKit 手のひらサイズのマイクロマウス学習キット

残りはデフォルトのまま

e2 studioでプロジェクトをビルドする

e2 studio はプロジェクトをビルドする際に、Makefile を自動的に生成してくれる。この Makefile にはソースコードのコンパイル方法が記述されている。そのため、このビルドで生成された Makefile を参考に、Linux 環境でも同じようにコンパイルを行えるようにしたい。

プロジェクトの作成とビルドを行った後の状態のフォルダには以下のようなファイルが配置されている。

  • generate ディレクトリ
    • e2 studio が自動で生成した RX600 Family 用ライブラリ。これは e2 studio で生成するしかない。
  • src ディレクトリ
    • main 関数を含むソースコードが配置されている
  • HardwareDebug ディレクトリ
    • ビルド時に生成される中間ファイルなどがこのフォルダ内にある。目当ての Makefile もこの中にあるが、1 つではなく、*.in*.mk など、複数ファイルに分割されているのでいい感じに読んでいく必要がある。

Makefileを作る

この作業はHiroya-W/rx631_gcc_projectsのリポジトリからも見ることができる。

この Makefile で最終的に生成したいのは、以下の 2 つ。

  • PROJECT_NAME.elf
  • PROJECT_NAME.mot

ビルドされたファイルの確認に以下のターゲットを実行する。

  • PROJECT_NAME.siz
  1. これは HardwareDebug/makefile に生成ルールが記述されていて、このうち、PROJECT_NAME.motPROJECT_NAME.sizPROJECT_NAME.elf から生成されることが分かる。
  2. PROJECT_NAME.elf は、generate/*.cgenerate/*.Ssrc/*.c をコンパイルしてオブジェクトファイルを生成し、それらをリンクすることで、生成出来るようになっている。
  3. オブジェクトファイルの生成は、HardwareDebug/generate/subdir.mkHardwareDebug/src/subdir.mk にそれぞれ書かれている。
  4. これを確認すると、コンパイラは rx-elf-gcc を使っていて、コンパイルオプションは各ファイルごとに FILENAME.in が生成されている。それを確認し、それぞれのコンパイル方法を書き出していく。

整理した Makefile は以下のようになる。環境に応じて、以下の項目を置き換えてほしい。

  • PROJECT_NAME
    • 生成される .elf.mot の名前に使用される
  • OBJS./src/gcc_rx_project.o
    • src フォルダ内に生成された main 関数を含むソースファイル名の拡張子を .o に変更したもの

https://github.com/Hiroya-W/rx631_gcc_projects/blob/c99390d38473ab6a6c408cde7b64bc0166d22a54/gcc/Makefile#L1-L43

この Makefile には環境に依存するファイルパスなどが含まれていないので、Windows 依存ではなくなった。
後は、Linux 上に Toolchain をインストールし Makefile からコンパイルを行えるようにすればいい。

Linux上でGCC for Renesas Toolchainのインストール

ここでは Linux 環境として、Ubuntu 20.04 を用いた。

GCC for Renesas X.X.X.YYYYMM-GNURX Toolchainから、Linux 向けである GCC for Renesas 8.3.0.202202-GNURX Linux Toolchain (ELF) を選択し、gcc-8.3.0.202202-GNURX-ELF.run を取得した。
取得出来れば、ファイルが配置されている場所まで移動して、インストールを実行する。

chmod +x gcc-8.3.0.202202-GNURX-ELF.run
gcc-8.3.0.202202-GNURX-ELF.run -y -p /opt/gcc-renesas-toolchains

ここでは、/opt/gcc-renesas-toolchains に Toolchain を配置した。

オプション 内容
-y インタラクティブな入力無しで実行
-p /path/to/dir インストールディレクトリとして /path/to/dir を利用する

~/.bashrc に以下の内容を書き込んで、Toolchain へパスを通しておく。

~/.bashrc
export PATH="/opt/gcc-renesas-toolchains/bin:${PATH}"

ターミナルを起動し直すか、~/.bashrc を読み込み直すことで、rx-elf-gccrx-elf-g++ などのコマンドが利用出来るようになっていれば、インストールは完了。

source ~/.bashrc
rx-elf-gcc --version
rx-elf-gcc (GCC_Build_20220527) 8.3.0.202202-GNURX 20190222
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Linux環境でプロジェクトをビルド

e2 studio で生成したソースコードを、用意した Makefile と Linux 上にインストールした Toolchain を使ってビルドする。
上手くいけば、PROJECT_NAME.elf とマイコンへ書き込む PROJECT_NAME.mot が生成される。

ここまで同じように作業したプロジェクトはここからも取得出来る。

https://github.com/Hiroya-W/rx631_gcc_projects/tree/c99390d38473ab6a6c408cde7b64bc0166d22a54/gcc

Linux環境からマイコンへプログラムを書き込む

参考:番外編 Part4 書き込む準備、ツールの用意! – しゅうのマイクロマウス研修

rxprogのRX631用の設定とビルド

Linux 環境から RX631 マイコンへプログラムを書き込むには OSS で開発されている書き込みツールであるrxprogを利用する。

ソースコードのビルドに boost ライブラリ、clang のインストールが必要なので事前にインストールしておく。apt を使ってインストールした boost ライブラリは、/usr/include/boost に配置されている。

sudo apt install libboost-dev clang

参考サイトを参考に、以下の 5 つのファイルを編集し、RX631 用に書き換える。Ubuntu のように apt を使って boost ライブラリをインストールした場合、システムでパスが通っている include ディレクトリに配置されるので、Makefile の INC_SYS を編集する必要はない。

  • rx631_protocol.hpp
  • rx_prog.hpp
  • rx_prog.conf
  • main.cpp
  • Makefile

書き換えたものは Hiroya-W/RX/tree/rx_prog-RX631/rxprogに置いている。書き換えができれば、make でビルドし、インストールする。

make
make install

バイナリとコンフィグファイルは /usr/local/bin に配置される。

rxprogを使ってLinux環境から書き込む

書き込む際には、rx_prog のバイナリと、rx_prog.conf のコンフィグファイルが同じディレクトリに存在している必要がある。make install を使わずに、$HOME/bin など別の場所に配置する場合はコンフィグファイルも同時に移動することを忘れないように。

Makefile を使って生成したファイルのうち、*.mot の拡張子のファイルを指定して書き込む。

rx_prog --verbose --progress --speed=115200 --device=RX631 --write PROJECT_NAME.mot

Hiroya-W/rxmicon-devcontainer

Docker + VSCode がある環境向けに、 Hiroya-W/rx631-devcontainerを作っておこうと思っている。

現状は、C++の開発環境、Toolchain のインストール、RX631 用書き込みツールがインストールされている。なお、Toolchain をソースコードからビルドせずに、Toolchain インストーラを取得して展開することにしているので、Renesas アカウントの登録とインストーラのダウンロードが必須の状態になっている。

あとがき

ソースコードの生成だけ、Windows の e2 studio を使う必要がありましたが、一度生成してしまえば、以降再生成することは無いのでこの方法で Linux でも開発が出来そうです。HM-StarterKit や RX631、Renesas マイコンの開発環境を作ろうとしている方の参考になれば嬉しいです。

参考記事

この記事やツールが無ければ開発環境を整えることが出来ませんでした。ありがとうございました。

GitHubで編集を提案

Discussion