HM-StarterKit RX631マイコン開発環境をLinuxで作る
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 のみ対応)らしい。
インストール時には、特に、追加ソフトウェアの 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 もこの中にあるが、1 つではなく、
Makefileを作る
この作業はHiroya-W/rx631_gcc_projectsのリポジトリからも見ることができる。
この Makefile で最終的に生成したいのは、以下の 2 つ。
PROJECT_NAME.elf
PROJECT_NAME.mot
ビルドされたファイルの確認に以下のターゲットを実行する。
PROJECT_NAME.siz
- これは
HardwareDebug/makefile
に生成ルールが記述されていて、このうち、PROJECT_NAME.mot
、PROJECT_NAME.siz
はPROJECT_NAME.elf
から生成されることが分かる。 -
PROJECT_NAME.elf
は、generate/*.c
、generate/*.S
、src/*.c
をコンパイルしてオブジェクトファイルを生成し、それらをリンクすることで、生成出来るようになっている。 - オブジェクトファイルの生成は、
HardwareDebug/generate/subdir.mk
、HardwareDebug/src/subdir.mk
にそれぞれ書かれている。 - これを確認すると、コンパイラは
rx-elf-gcc
を使っていて、コンパイルオプションは各ファイルごとにFILENAME.in
が生成されている。それを確認し、それぞれのコンパイル方法を書き出していく。
整理した Makefile は以下のようになる。環境に応じて、以下の項目を置き換えてほしい。
-
PROJECT_NAME
- 生成される
.elf
と.mot
の名前に使用される
- 生成される
-
OBJS
の./src/gcc_rx_project.o
-
src
フォルダ内に生成された main 関数を含むソースファイル名の拡張子を.o
に変更したもの
-
この 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 へパスを通しておく。
export PATH="/opt/gcc-renesas-toolchains/bin:${PATH}"
ターミナルを起動し直すか、~/.bashrc
を読み込み直すことで、rx-elf-gcc
や rx-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
が生成される。
ここまで同じように作業したプロジェクトはここからも取得出来る。
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 マイコンの開発環境を作ろうとしている方の参考になれば嬉しいです。
参考記事
この記事やツールが無ければ開発環境を整えることが出来ませんでした。ありがとうございました。
Discussion