トップページ | 組込みソフト | Eclipseを使ったBeagle Bone Black のソフト開発 |
Eclipseを使ったBeagle Bone Black のソフト開発 | ||||||||
Beagle Bone BlackではAndroidでの開発を考えていたのですが、温度、湿度、気圧のセンサーを接続した機器を作るのであれば別にAndroidでなくてもいいじゃん!PICやH8でもできそうです。しかし、Eclipseを使った統合環境で開発したほうが楽チンです。そこでBeagle
Bone BlackにLinuxをいれて使っみることにしました。Beagle Bone BlackのEclipseに関する情報はRaspberry
Piより少ないようですね。Eclipseを使ったBeagle Bone Black のソフト開発ができないか?いろいろやってみて、 できました! ここのページでは、 Eclipse をインストールする方法(JDK含む) Eclipseでクロスコンパイルする方法 Beagle Bone Blackにリモートアクセスする方法 Beagle Bone Blackにリモートデバッグする方法 とRaspberry Piの記事と同じくらい濃すぎる内容となっています。 |
||||||||
専用のUbuntuを用意する | ||||||||
Virtual BoxでBeagle Bone Black Eclipse専用のUbuntuを用意します。![]() Virtual Box でUbuntuのインストールができたら、 sunaga@bbb:~$ sudo apt-get update sunaga@bbb:~$ sudo apt-get upgrade を最初にやっておいてください。そうしないとうまくいかないことがあります。 いつのまにかhttp://www.armhf.com/のUbuntuとDebianのSDカードのインストールファイルの形式が、img形式から変更になっています。Beagle Bone Black Rev.Cで何かかわったのでしょうか?インストールの方法が面倒です。以前は簡単だったのに。以前のing形式でやってみました。だめでした。しかたなく最新版でやってみるとOKです。今度はLinuxのファイル操作が必要になるのでWindowsではダメみたいです。そこで対応するためにdosftoolsが必要になります。このツールを使えば不要になったLinuxを焼いたSDカードをWindowsでも使えるようにフォーマットすることがかんたんにできます。 インストール sunaga@bbb:~$ sudo apt-get install dosfstools ついでにSDカードのフォーマットのやりかた 1. SDカードをリーダーに挿入します。 2.df コマンドで調べます。 sunaga@bbb:~$ df -H Filesystem Size Used Avail Use% Mounted on /dev/sda1 30G 3.8G 25G 14% / udev 2.1G 4.1k 2.1G 1% /dev tmpfs 415M 828k 414M 1% /run none 5.3M 0 5.3M 0% /run/lock none 2.1G 205k 2.1G 1% /run/shm /dev/sr0 65M 65M 0 100% /media/VBOXADDITIONS_4.3.12_93733 /dev/sde1 1.1M 465k 564k 46% /media/C920-E0C5 /dev/sde2 7.7G 530M 6.8G 8% /media/9f0a9914-d16b-4575-b74a-d8506dd469ba こちらの環境では、sdeがSDカードです。環境によってはsdbとかsdcとかsddになります。 3.sdeをアンマウントします。 sunaga@bbb:~$ sudo umount /dev/sde1 sunaga@bbb:~$ sudo umount /dev/sde2 4.フォーマットします。 sunaga@bbb:~$ sudo mkfs.vfat -F 32 /dev/sde -I これで終わり。WindowsのパソコンでもSDカードを使えるようになりました。 |
||||||||
jdkをインストールする | ||||||||
インストールのやり方はいくつかありますが、今回はAndroidのソースファイルをビルドするときと同じにしました。これのほうが面倒はないようです。
|
||||||||
Eclipseをインストールする | ||||||||
下記のURLよりEclipseをダウンロードします。 https://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/keplersr2 ![]() Linux 64-bitを選びます。 ![]() ダウンロードします。 Eclipseの解凍 cd ~ tar -xvzf eclipse-cpp-kepler-SR2-linux-gtk-x86_64.tar.gz eclipseのフォルダーができています。 Eclipseは日本語化ができます。しかし、日本語化はしないほうがいいです。RaspberryやBeagle Bone Blackなどの情報は圧倒的に英語です。日本語化すると逆に不便になります。 |
||||||||
Eclipseの起動 | ||||||||
./eclipse/eclipse & で起動します。 Eclipseのワークスペース選択画面がでます。 ![]() 自分の好みにしてください。もちろんこのままで問題ありません。毎度この画面がでるのが鬱陶しければチェックをいれれば出てこないようになります。 Welcome画面がでます。 ![]() これは鬱陶しいので出ないようにタブのXをクリックしてください。 |
||||||||
Linux用のアプリができるか確認する | ||||||||
Linux用のアプリを作るなど考えてなかったのですが、場合によってRS232Cを使ってBeagle bone BlackとPCで通信するようなアプリが必要になるかもしれません。CとC++でアプリが作れることを確認します。 Ubuntuではg++がインストールされていないようです。gccとg++をインストールします。 sunaga@bbb:~$ sudo apt-get install gcc g++ Eclipseを起動します。 sunaga@bbb:~$ ./eclipse/eclipse & Eclipseのワークスペース選択画面がでます。 ![]() 自分の好みにしてください。もちろんこのままで問題ありません。毎度この画面がでるのが鬱陶しければチェックをいれれば出てこないようになります。 Welcome画面がでます。 ![]() これは鬱陶しいので出ないようにタブのXをクリックしてください。 [File]-[new]-[C Project] を選択します。 ![]() 動作の確認するだけなのでソースの入力を省くため、 Projrct Name: は任意です。Hello_cとしました。 Project type: Hello World ANSI C Project を選択します。 Toolchain: Linux GCC を選択します。 next > ボタンをクリックします。 ![]() Source以外は適当に入力してください。 最後にFinishボタンをクリックします。 ![]() ソースが自動的にできています。 [Project]-[Build All] をクリックします。もし、コンパイルエラーがあれば表示されます。こんな基本中の基本ですからエラーはでませんね。 つぎはデバッグします。 [Run]-[Debug] をクリックします。 こんな画面がでてきますが、Yesボタンをクリックします。 ![]() ![]() デバッグ画面に自動的に切り替っています。 [Step over] でputの行を実行すると、Console に結果が表示されます。 次にC++で確認してみます。 [File]-[new]-[C++ Project] をクリックします。 ![]() Cと比べて、 Hello World C++ project が違っています。 Next >ボタンをクリックします。 ![]() Cのときと同じですが、何かのときに勘違いがないように !!!Hello World!!! C++ project に変えました。 Finish ボタンをクリックします。 この後の手順はCと同じです。動作を確認するとOKです。 |
||||||||
クロスコンパイルに必要なツールのインストール | ||||||||
C クロスコンパイラをインストールします。 sunaga@bbb:~$ sudo apt-get install gcc-arm-linux-gnueabihf C++ クロスコンパイラをインストールします。 sunaga@bbb:~$ sudo apt-get install g++-arm-linux-gnueabihf arm用のデバッガーをインストールします。 sunaga@bbb:~$ sudo apt-get install gdb-multiarch |
||||||||
Beagle Bone Black のプロジェクト作成 | ||||||||
[File]-[New]-[Project]をクリックします。![]() CProjectを選びます。 [Next]ボタンをクリックします。 Project Nameを入力します。 ![]() ここで大事なこと! Raspberry Piのプロジェクトの場合はCrossGCCを選びます。これでarm対応の実行ファイルが作成されます。 Next > ボタンをクリックします。 ![]() [Next]ボタンをクリックします。 ![]() [Next]ボタンをクリックします。 ![]() Cross Compiler Prefix:は arm-linux-gnueabihf- です。 Cross Compiler Path:は /usr/arm-linux-gnueabihf/bin/ です。 最後に[Finish]ボタンをクリックしてください。 |
||||||||
ソースファイルのビルド | ||||||||
すでにソースファイルは作成されています。![]() [Project]-[Build All]をクリックします。 ![]() これで実行ファイルができました。 もちろんarmでコンパイルしたのでUbuntu上では動かない実行ファイルです。 cd ~/workspace/CCHello_c/Debug ls で見ると確かに実行ファイルCCHello_cがあります。 ./CCHello_c 実行できませんと怒られます。 当たり前のことが確認できました。 これをBeagle Bone Blackに転送して確認します。 Ubuntu は http://www.armhf.com/download/ ubuntu-trusty-14.04-rootfs-3.14.4.1-bone-armhf.com.tar.xz をつかっています。 プライベートIPアドレスは、192.168.1.88 です。sftpでBeagle Bone Blackにファイルを転送します。 パスワードはubuntuです。 sunaga@bbb:~$ cd workspace/CCHello_c/Debug sunaga@bbb:~/workspace/CCHello_c/Debug$ sftp ubuntu@192.168.1.88 The authenticity of host '192.168.1.88 (192.168.1.88)' can't be established. ECDSA key fingerprint is 95:1d:fe:c8:ba:0c:c6:81:c4:ba:43:b9:d9:a1:32:ed. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.88' (ECDSA) to the list of known hosts. ubuntu@192.168.1.88's password: Connected to 192.168.1.88. sftp> put CCHello_c Uploading CCHello_c to /home/ubuntu/CCHello_c CCHello_c 100% 31KB 31.5KB/s 00:00 sftp> exit sunaga@bbb:~/workspace/CCHello_c/Debug$ 次は、sshで接続してCCHello_cが動作するか確認します。 sunaga@bbb:~$ ssh ubuntu@192.168.1.88 ubuntu@192.168.1.88's password: Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.14.4.1-bone-armhf.com armv7l) * Documentation: https://help.ubuntu.com/ Last login: Fri Jan 2 05:04:08 1970 from 192.168.1.3 ubuntu@ubuntu-armhf:~$ ls CCHello_c hello test ちゃんとファイルが転送されています。 ubuntu@ubuntu-armhf:~$ ./CCHello_c !!!Hello World!!! cross compile C project ちゃんと動きました。 C++でも同じようにできます。説明は省略します。 しかし、これってとても面倒です。 これを解決するのがリモートシステムです。 |
||||||||
リモートシステム | ||||||||
Raspberry Piと同様にリモートシステムを使うことができます。 sftpとsshを使って作成した実行ファイルが動作することを確認しました。リモートシステムを使うとsftpとsshと同等の機能ををEclipseから使うことができます。 [Window]-[Show View]-[Other]をクリックします。 ![]() Remote Systems を選択して[OK]ボタンをクリックします。 これは縦に表示したほうが見やすいので、次のようにドラッグして移動します。 ![]() Remote Systems が表示されます。 ![]() Remote Systemsのタブで右クリックをします。 ![]() [New]-[Connection]をクリックします。 ![]() [Next]ボタンをクリックします。 ![]() [Finish]ボタンをクリックします。 Beagle Bone Blackのリモートフォルダができました。 ![]() [Ssh Terminals] を右クリックします。 ![]() [Launch Terminal]をクリックします。 ![]() User ID:ubuntu Password(optional):ubuntu を入力して[OK]ボタンをクリックします。 ![]() sshの画面です。 すでにBeagle Bone Blackに接続している状態です。 [Beagle Bone Black]-[Sftp Files]-[My Home]をクリックします。 ![]() Beagle Bone Blackのフォルダーやファイルが見えています。 LocalからBeagle Bone Blackへの(その反対も)コピペができます。 CCHello_cをLcalからBeagle Bone Blackにコピペします。 Terminalで確認すると、 ![]() 実行できました!!!! このようにしてEclipseでsftpとsshの機能が使えるようになりました。 これはすごく便利です。 |
||||||||
リモートデバッグできるようにする | ||||||||
ここまでできるようになると、更に欲が出てきます。 自動でBeagle Bone Blackに転送できるようにしたい デバッグもできるようにしたい 調べた結果できます。 Raspberry Piと違うのはgdbserverが入っていないので、インストールします。 sshでBeagle Bone Blackに接続して、インストールします。 ubuntu@ubuntu-armhf:~$ sudo apt-get install gdvserver 次はEclipseのリモートデバッグの設定をします。 [Run]-[Debug Configrations...]をクリックします。 ![]() C/C++ Remote Applicationを選択して、左上の新規ボタンをクリックします。 ![]() 変更するのは赤で示した次の箇所です。 ![]() [Apply]ボタンをクリックします。 [Debug]ボタンをクリックします。 パスワードのダイアログがでるときは、raspberryを入力します。 ![]() [OK]ボタンをクリックします。 ![]() [Yes]ボタンをクリックします。 オーーーーーーーーーーーーーーーーーー! デバッグ画面になりました。 ![]() この状態ではブレークしています。 [Run]-[Step Over]をクリックする(またはF6キーを押す)と1行づつ実行します。 実行結果はConsoleで確認できます。 ![]() やっとデバッグもできるようになったぞ!!!!!! 追加記事:2014/11/13 リモートデバッグ開始以下のような赤字の警告がでることがあります。 ![]() このままでもデバッグを進めることができますが、気持ち悪いです。 これを出ないようにするには、 デバッグ設定画面で、libのパスを指定します。 ![]() Addボタンをクリックしてlibのあるディレクトリを指定してください。 |
||||||||
Eclipseのランチャーアイコンの登録 | ||||||||
Eclipseを起動するのに、ターミナルを開いて、 ./eclipse/eclipse & と毎回やるのは面倒です。 ランチャーに登録できればいいのですが、手作業でEclipseをインストールするとできません。 sudo apt-get install でやればできるのですが....... できます! eclipseのフォルダーに次のファイルを用意します。 ファイル名:eclipse.desktop ファイルの内容: [Desktop Entry] Type=Application Name=eclipse GenericName=eclipse shortcut Icon=/home/user/eclipse/icon.xpm Exec=/home/user/eclipse/eclipse Terminal=false Name[ja_JP]=eclipse.desktop /home/userのところはお使いの環境で書き換えてください。 ランチャーのホームフォルダーでeclipseのフォルダーに移動します。 eclipse.desktopをダブルクリックします。 ![]() Eclipseが起動します。 Eclipseのアイコンを右クリックすると固定できます。 ![]() |
||||||||
[F11]キーを押したらリモートデバッグにしたい | ||||||||
デバッグを始めるのにいちいち [Run]-[Debug Configuratons ...] からやるのでは面倒です。 F11キーを押したら、リモートデバッグできないか? できます! [Run]-[Debug Configuratons ...]をクリックします。 ![]() この設定では、[F11]キーを押すと、 C/C++Application で動作します。つまりリモートではなく母艦側のLinuxでarmのアプリを動かすことになるのでダメだと怒られます。 要するにC/C++ Remote Application以外は邪魔です。 この邪魔物を排除するために、赤で示した[Filter launch configuaratons...]をクリックします。 ![]() C/C++ Remote Application以外は使わないという設定になります。 このように設定して[OK]ボタンをクリックします。 ![]() C/C++ Remote Applicationだけになりました。 こうすることで、[F11]キーを押すとC/C++ Remote Applicationでデバッグできます。 |