先日セットアップしたLEGO Mindstorms EV3のev3devにFreeRTPSをインストールしていきましょう。

依存パッケージのインストール

DDSの通信プロトコルRTPS実装の一つFreeRTPSを試す (1)のセットアップ方法はx86 CPUのUbuntuを対象としていますが、今回はARM CPUのDebianを対象とするため、少し変更があります。 gitはインストール済みで、PPA設定も必要ありませんでした。

sudo apt-get update
sudo apt-get install build-essential cmake
sudo apt-get install gcc-arm-embedded
sudo apt-get install libtool autoconf automake pkg-config libusb-1.0-0-dev libhidapi-dev
git clone http://repo.or.cz/openocd.git
cd openocd
./bootstrap
./configure --enable-stlink --enable-ftdi --enable-cmsis-dap --prefix=/usr/local
make
sudo make install

EV3はCPU性能が300MHzしかありませんので、インストール、コンパイルに時間が相当かかります。 5時間は覚悟してください。 特にopenocd./bootstrap以降のコンパイルに時間がかかるので、makeまでワンライナーで実行後、朝を待ちましょう笑

コンパイル

コンパイルはFreeRTPSのソースコードをクローンしてmakeするだけです。

git clone https://github.com/ros2/freertps
cd freertps
make

ですが、コンパイルエラーが出てあと一歩のところで、残念ながら簡単には先に進ませてくれませんでした。

arm-none-eabi-gcc: note: valid arguments to '-mcpu=' are: arm1020e arm1020t arm1022e arm1026ej-s arm10e arm10tdmi arm1136j-s arm1136jf-s arm1156t2-s arm1156t2f-s arm1176jz-s arm1176jzf-s arm2 arm250 arm3 arm6 arm60 arm600 arm610 arm620 arm7 arm70 arm700 arm700i arm710 arm7100 arm710c arm710t arm720 arm720t arm740t arm7500 arm7500fe arm7d arm7di arm7dm arm7dmi arm7m arm7tdmi arm7tdmi-s arm8 arm810 arm9 arm920 arm920t arm922t arm926ej-s arm940t arm946e-s arm966e-s arm968e-s arm9e arm9tdmi cortex-a15 cortex-a5 cortex-a7 cortex-a8 cortex-a9 cortex-m0 cortex-m0plus cortex-m1 cortex-m3 cortex-m4 cortex-r4 cortex-r4f cortex-r5 cortex-r7 ep9312 fa526 fa606te fa626 fa626te fa726te fmp626 generic-armv7-a iwmmxt iwmmxt2 marvell-pj4 mpcore mpcorenovfp native strongarm strongarm110 strongarm1100 strong arm1110 xscale
systems/samv71_xplained_ultra-metal/CMakeFiles/freertps_system_samv71_xplained_ultra-metal.dir/build.make:54: recipe for target 'systems/samv71_xplained_ultra-m
etal/CMakeFiles/freertps_system_samv71_xplained_ultra-metal.dir/vectors.c.o' failed
make[3]: *** [systems/samv71_xplained_ultra-metal/CMakeFiles/freertps_system_samv71_xplained_ultra-metal.dir/vectors.c.o] Error 1
CMakeFiles/Makefile2:110: recipe for target 'systems/samv71_xplained_ultra-metal/CMakeFiles/freertps_system_samv71_xplained_ultra-metal.dir/all' failed
make[2]: *** [systems/samv71_xplained_ultra-metal/CMakeFiles/freertps_system_samv71_xplained_ultra-metal.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make[1]: *** [all] Error 2
Makefile:21: recipe for target 'samv71_xplained_ultra-metal' failed
make: *** [samv71_xplained_ultra-metal] Error 2

ARMのバージョンに対して怒られているようなので、もしかするとEV3のCPUのバージョンではうまくコンパイルできないのかもしれません。 そういえば、どこかに書いてあったような気も。 ARM CPUなんて使ってこなかったので、詳しい方がいればコメントいただけると幸いです。

次回、ソースコードやMakefileなどを見て、直せそうなら直していきます。