なんとかなるさね

マイコンをネタにブログを始めてみました


Arduino IDE | Intel Galileo Arduino IDEで呼び出すGCCやオプションを変えてビルドする 

Intel Galileo x86 Linux Arduino互換ライブラリというのは、いわゆるクラスライブラリというものに相当し、
Intel Galileo Arduino IDEに同梱されているライブラリのソースコードは、Linux GCCと互換性の高いUbuntu
/Linaro Linux GCCやCygwin GCCやLinaro ARM Linux GCCならば大きな困難無くビルド出来て(?)、さらに、
Digital I/OやAnalog I/OやServo等々のマイコンボードデバイスドライバ依存性が強いソースコードを除いて
ビルドしたプログラム(EthernetやUSBやシリアル等々)は、Linux環境であれば、Galileoに限らず、Ubuntuや
Cygwin、あるいは、CEV-RZ/A1LやRaspberry PiやBeagleBone Black、といった環境でも動いてしまう(?)
ような気がしています。

そんなことを考えながら、Intel Galileo Arduino IDEのインストールフォルダを見ていたら、Arduino IDEが
呼び出すGCCやオプションを定義している環境設定ファイルがあることに気付きました。ちょっと好奇心から、
GCCのi586-poky-linux-uclibc-strip.exeを呼び出しているところを自作のi586-poky-linux-uclibc-strip.bat
というバッチファイルを呼び出すように書き換えてみたところ、呼び出されるコマンドが変わりました。

ファイル: E:\tools\micom\Intel\arduino-1.5.3\hardware\arduino\x86\platform.win.txt

platform.win.txt

書き換えた箇所(赤字の箇所)

name=Arduino X86 Boards
# compiler.path TBD
compiler.path={runtime.ide.path}/hardware/tools/x86/i686-pokysdk-mingw32/usr/bin/i586-poky-linux-uclibc/
compiler.c.cmd=i586-poky-linux-uclibc-gcc
compiler.c.flags= -m32 -march=i586 --sysroot={runtime.ide.path}/hardware/tools/x86/i586-poky-linux-uclibc -c -g -Os -w -ffunction-sections -fdata-sections -MMD
compiler.c.elf.flags=-m32 -march=i586 --sysroot={runtime.ide.path}/hardware/tools/x86/i586-poky-linux-uclibc -Os -Wl,--gc-sections
compiler.c.elf.cmd=i586-poky-linux-uclibc-g++
compiler.S.flags=-c -g -assembler-with-cpp
compiler.cpp.cmd=i586-poky-linux-uclibc-g++
compiler.cpp.flags= -m32 -march=i586 --sysroot={runtime.ide.path}/hardware/tools/x86/i586-poky-linux-uclibc -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -MMD
compiler.ar.cmd=i586-poky-linux-uclibc-ar
compiler.ar.flags=rcs
compiler.objcopy.cmd=i586-poky-linux-uclibc-objcopy
compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0
compiler.elf2hex.flags=-O ihex -R .eeprom
compiler.elf2hex.cmd=i586-poky-linux-uclibc-objcopy
compiler.ldflags=
compiler.size.cmd=i586-poky-linux-uclibc-size
#compiler.strip.cmd=i586-poky-linux-uclibc-strip
compiler.strip.cmd=i586-poky-linux-uclibc-strip.bat

# this can be overriden in boards.txt
build.extra_flags=

自作のi586-poky-linux-uclibc-strip.batバッチファイルの内容

@echo Strip command is skipped. (by MON-80)

実行結果



Arduino IDEのマイコンボード選択メニューと連動させてGCCやオプションを変える方法も調べてみたいです。

追記 : メモ

とはいえ、Linux Arduino互換ライブラリのソースコードがUbuntu/Linaro Linux GCCやCygwin GCCやLinaro
ARM Linux GCCで大きな困難無くビルド出来るかとか、EthernetやUSBやシリアル等々がUbuntuやCygwinや
CEV-RZ/A1LやRaspberry PiやBeagleBone Blackで動くかとか、やってみないと分からないところですが。

追記 : メモ

Ubuntu/Linaro Linux GCCは、Ubuntuに同梱されていますので、Linux互換GCCではなくLinux本家GCCです。

追記 : メモ

Arduino IDEが呼び出すGCCやオプションを定義している環境設定ファイルには、Linux 32bit/64bitやMac OS
Xのものがありました。LICENCEファイルは、GPL V2でした。また、Readme.txtには、IDEのソースコードの
取得方法も書かれていました。



追記 : 雑感

ひょっとして、最近(?)のArduino IDEであれば、マイコンボード選択メニューに、x86系(というかLinux系)の
Arduino互換ライブラリ対応のマイコンボードとしてCEV-RZ/A1LやRaspberry PiやBeagleBone Blackを追加
することだけでなく、RXマイコンのRXduinoやRL78マイコンのRLduino78などのマイコンボードを追加する
ことも大きな困難では無かったりしないだろうか? (Arduino IDEにボードを追加する仕組みが進化していそう
ですし、そもそも、作るのが最も大変そうなArduino互換ライブラリ自体は、既に出来ている訳ですし、、、)

関連記事

2013/12/27   blog-entry-395   category: Arduino Lib & CrossGCC

go page top