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互換ライブラリ自体は、既に出来ている訳ですし、、、)
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互換ライブラリ自体は、既に出来ている訳ですし、、、)
- 関連記事
-
- Arduino IDE | Intel Galileo Arduino IDEでcppファイルをコンパイル
- Arduino IDE | Pleiades KeplerとIntel Galileo Arduino IDEでスケッチフォルダとビルドフォルダを共有
- Arduino IDE | Pleiades KeplerでLinux Arduino互換ライブラリをcppファイルから使用する
- Arduino IDE | Pleiades KeplerでLinux Arduinoスケッチのinoファイルをコンパイル
- Arduino IDE | Pleiades Kepler + VMware Player上のUbuntuでLinux Arduinoスケッチをデバッグ (2)
- Arduino IDE | Pleiades Kepler + VMware Player上のUbuntuでLinux Arduinoスケッチをデバッグ (1)
- Arduino IDE | Intel Galileo Arduino IDEのビルドフォルダを変更する
- Arduino IDE | Intel Galileo Arduino IDEで呼び出すGCCやオプションを変えてビルドする
- Arduino IDE | Intel Galileo Arduino IDEのGCCでビルドしたプログラムをUbuntuで実行してみた
- Arduino IDE | Intel Galileo Arduino IDEにGCCを呼び出す時のオプションを表示させる
- Arduino IDE | Intel Galileo ArduinoスケッチにLinuxのスレッド制御関数を書いてビルドしてみた
- Arduino IDE | Intel Galileo x86 Linux Arduino互換ライブラリに使用されているGCC
- Visual Studio | デバッガ機能の拡張方法について書かれたMSDNのページ
- RXマイコン | アプリケーションノート + 付加価値 をライブラリファイルで配布可?
- Renesas Eclipse | the FIT plug-in in e2studio v2.2
2013/12/27 blog-entry-395 category: Arduino Lib & CrossGCC
| h o m e |