なんとかなるさね

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


QEMU | Ubuntuのマルチアーキテクチャ機能を使ってARM Linux Arduinoスケッチを実行 

先日のエントリ(410411)でQEMUのユーザランドエミュレーション機能を試していた時、Ubuntuに(Debian
から導入された)マルチアーキテクチャ機能というものがあることを知りました。いつものように、ちょっと
好奇心から、この機能を試してみました。マルチアーキテクチャ機能を使うと、ARM Linux GCCでコンパイル
されたアプリケーションを、x86 Ubuntu Linuxのqemu-armコマンドの引数として指定しなくても、普通に
x86 Ubuntu Linuxのコマンドとして直接実行出来るそうです。

マルチアーキテクチャ機能を使わない場合

$ qemu-arm -L <共有ライブラリパス> <ARM Linuxアプリケーションコマンドライン>

マルチアーキテクチャ機能を使った場合

$ <ARM Linuxアプリケーションコマンドライン>

Linux Arduino互換ライブラリのソースコードをLinaro ARM Linux GCC 4.7でビルドしたARM Linux Arduino
スケッチ(とても簡単なもの)をマルチアーキテクチャ機能を使って実行するには、qemu-staticパッケージの
インストール後に、/lib/ld-linux-armhf.so.3、/lib/arm-linux-gnueabihf/、/usr/lib/arm-linux-gnueabihf/の
3つに対してシンボリックリンクを作成する必要がありました。具体的には、ルネサスRZ/A1Lマイコン搭載の
コンピューテックス社製評価ボードCEV-RZ/A1LのCEV Linux SDK V1.00.00にて、以下のようにシンボリック
リンクを作成しました。(なお、残念ながら、SDK V2.00.00では、以下の方法では実行出来ませんでした。)

sudo ln -s ~/CEV_Linux_SDK_V1.00.00/buildroot-2013.05-cevrza1l-20130912-1/output/target/lib/ld-linux-armhf.so.3 /lib/ld-linux-armhf.so.3
sudo ln -s ~/CEV_Linux_SDK_V1.00.00/buildroot-2013.05-cevrza1l-20130912-1/output/target/lib /lib/arm-linux-gnueabihf
sudo ln -s ~/CEV_Linux_SDK_V1.00.00/buildroot-2013.05-cevrza1l-20130912-1/output/target/usr/lib /usr/lib/arm-linux-gnueabihf



qemu-staticパッケージは、以下のようにインストールしました。(qemu-userパッケージは不要でした。)

sudo apt-get install qemu-user-static




なお、x86 Ubuntu Linuxのマルチアーキテクチャ機能では、以下の種類がサポートされているようです。



追記 : メモ

参考にさせて頂いたブログ

Ubuntu 12.04LTS Beta2でMultiarchを試す
http://blog.kmckk.com/archives/4165115.html

Ubuntu 12.04LTS 正式版でMultiarchを試す
http://blog.kmckk.com/archives/4194926.html

関連記事

2014/01/27   blog-entry-412   category: Arduino Lib & CrossGCC

go page top