トップページ | 組込みソフト | Eclipseを使ったRaspberry Piのソフト開発 | NetBeanを使ったRaspberry Piのソフト開発 |
Eclipseを使ったRaspberry Piのソフト開発 |
長いページになってしまったぁ!最初に概略を.... ここのページでは、 Eclipse を自分流にインストールする方法(JDK含む) Eclipseでクロスコンパイルする方法 EclipseからRaspberry Piにリモートアクセスする方法 EclipseからRaspberry Piにリモートデバッグする方法 と濃すぎる内容となっています。 |
Eclpiseについ調べるとYouTubeでEclipseについて喋って解説ししているのがありました。当たり前のことが気づきました。Eclipseの発音は エクリプス(間違い) イクリプス(正解) 日本人はローマ字読みで通じない発音をまったく気にしていないんだなぁ。 English(イングリッシュ)とおなじくEをイーと読むだけなんですが... 他にもたくさん同じようなことはありますが、この件はこれで終わり。 Raspberry Piなどの開発の方法はいくつかあります。 |
ボード単体で開発 |
Raspberry Pi などはLinuxパソコンです。これにキーボード、マウス、モニタをつなげればパソコンとして使えます。gcc による開発ができます。統合環境の開発ツールが使いたくてもCPUパワーが足りません。 肝心の開発効率は、良くありません。X Windowでは処理が遅すぎこれは使えない。コマンドラインでgcc とviなどのエディタを使うことになるのでWindowsを使ってきた人には違和感があります。というかUnixが日本で使われ始めたころ、開発ツールにUnixを使いました。viを使ってみましたが、こんなのダメだ!が全員の意見。なぜなら当時MS-DOSソフトのMIFESの方が操作も機能もviとは勝負にならなかったのです。そんなわけでこの開発環境には抵抗のある人も多いと思います。 |
母艦からsshで接続 |
よく書籍に載っているやり方です。本質的には前記の環境からsshを使うことによってRaspberry Pi につなげておいたキーボード、マウス、モニタがなくなり、母艦がそれらに置き換わった。だけです。 利点としては前記の環境ではモニタにHDMIが付いていることが条件です。古いモニタは使えません。それに比べ今度は母艦がまともに動くことが条件ですから、制約がゆるくなります。ただし、どんなに立派な母艦を使っても、ビルドする処理を実行するのはRaspberry Piなどになります。処理速度はかわりません。 |
母艦でEclipseを使う |
最高の開発環境です。具体的には、 viなどは勝負にならないくらい高機能なエディタです。 コンパイル・リンクなどが簡単な操作でできます。 などあげればきりがないですね。 しかし、重大な懸案 Eclipseが作成する実行ファイルはインテルCPUに対応している。 今回はarmなのでこのままではRaspberry Pi上で動作しない。 どうやってarmに対応した実行ファイルをゲットするか?が問題になります。 |
jdkをインストールする |
今回はEclipseでC/C++の言語を使います。開発言語としてJAVAは使わないのですが、Eclipse自身がjdkを必要としています。 バージョンも気にしないで、単にEclipse使いたいだけならお気楽インストール sudo apt-get install eclipse でやってくれそうですが、このような便利なやつは使いません。 なぜなら2つ以上のEclipseを使う予定なので、jdkやEclipseをどこのフォルダーにいれてどんなパスを設定したということを把握するためです。お気楽インストールでやるとこれを自分で調べなくてはなりません。お気楽がお気楽でなくなってしまいます。 これがちょっと曲者!jdkには、 jdk open jdk の2つがあります。 open jdkではダメだという人あり。しかし、open jdkでもEclipseが動きました。やはり王道というか jdkを使うことにします。oracleではverion 6と7を推奨しているようなので7を使うことにします。 下記のURLでjdk7のダウンロードします http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html Accept License Agreementをチェックします。 上記ファイルをダウンロードします。 今ユーザーディレクトリ直下 /home/userXXXにいるとします。 cd ~ 解凍します。 tar -xvzf jdk-7u55-linux-x64.tar.gz フォルダー名が長いので簡単にします。 mv jdk1.7.0_55 jdk7 .bashrcにパスの設定をします。 export PATH=$HOME/jdk7/bin:$PATH 変更を反映させます。 source .bashrc これでjdkは終わりです。 jdk6をインストールしたほうがいいかも知れません。 このページのEclipseのランチャーアイコンの登録でわかったことです。 解凍の仕方がちょっと違います。 jdk6のダウンロード http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR 64ビットなら jdk-6u45-linux-x64.bin 解凍は、ホームディレクトリで chmod a+x jdk-6u45-linux-x64.bin ./jdk-6u45-linux-x64.bin mv jdk1.6.0_45 jdk6 パスは、 export PATH=$HOME/jdk6/bin:$PATH どちらがよいかは、ご自身で判断してください。 |
GITをインストールする |
armをクロスコンパイルするためのツールをインストールするために必要です。 sudo apt-get install git でOKです。 |
クロスコンパイルするためのツールをインストールする |
64ビットのOSの場合 sudo apt-get install ia32-libs (32ビットでは不要です) mkdir rpi cd rpi git clone git://github.com/raspberrypi/tools.git ツールのパスを.bashrcに記述します。 export PATH=$HOME/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:$PATH 変更を反映させます。 source .bashrc |
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をクリックしてください。 |
プロジェクトの作成 |
[File]-[New]-[Project]をクリックします。 CProjectを選びます。 [Next]ボタンをクリックします。 Project Nameを入力します。 ここで大事なこと! Raspberry Piのプロジェクトの場合はCrossGCCを選びます。これでarm対応の実行ファイルが作成されます。 [Next]ボタンをクリックします。 [Next]ボタンをクリックします。 Cross Compiler Prefix:は arm-linux-gnueabihf- です。 Cross Compiler Path:は /home/user/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/ です。 /home/user/rpi のところは自分で設定したフォルダーを適用してください。 最後に[Finish]ボタンをクリックしてください。 |
ソースファイルの作成 |
いよいよプログラムを作成します。 [File]-[New]-[Source File]をクリックします。 [Finish]ボタンをクリックします。 main.cの画面が現れます。 以下のように記述します。 [File]-[Save]をクリックします。 [Project]-[Build All]をクリックします。 これで実行ファイルができました。 もちろんarmでコンパイルしたのでUbuntu上では動かない実行ファイルです。 cd ~/workspace/ccHello/Debug ls で見ると確かに実行ファイルccHelloがあります。 ./ccHello 実行できませんと起こられます。 当たり前のことが確認できました。 これをRaspberry Piに転送して確認します。 sftp pi@192.168.1.99 アドレスは必要に応じて書き換えてください。パスワード raspberry で接続します。 put ccHello でRaspberry Piに送ります。 exit でsftpを終了します。 次は、 ssh pi@192.168.1.99 パスワード raspberry で接続します。 ./ccHello Hello cross compiler world. 実行できました。 しかし、これってとても面倒です。 これを解決するのがリモートシステムです。 |
リモートシステム |
sftpとsshを使って作成した実行ファイルが動作することを確認しました。リモートシステムを使うとsftpとsshと同等の機能ををEclipseから使うことができます。 [Window]-[Show View]-[Other]をクリックします。 Remote Systems を選択して[OK]ボタンをクリックします。 これは縦に表示したほうが見やすいので、次のようにドラッグして移動します。 Remote Systems が表示されます。 Remote Systemsのタブで右クリックをします。 [New]-[Connection]をクリックします。 [Next]ボタンをクリックします。 [Finish]ボタンをクリックします。 Raspberry Pi のリモートフォルダができました。 [Ssh Terminals] を右クリックします。 [Launch Terminal]をクリックします。 User ID:pi Password(optional):raspberry を入力して[OK]ボタンをクリックします。 sshの画面です。 すでにRaspberry Piに接続している状態です。 [Raspberry Pi]-[Sftp Files]-[My Home]をクリックします。 Raspberry Piのフォルダーやファイルが見えています。 LocalからRaspberry Piへの(その反対も)コピペができます。 ccHelloをLcalからRaspberry Piにコピペします。 Terminalで確認すると、 実行できました!!!! このようにしてEclipseでsftpとsshの機能が使えるようになりました。 これはすごく便利です。 |
リモートデバッグできるようにする |
ここまでできるようになると、更に欲が出てきます。 自動でRaspberry Piに転送できるようにしたい デバッグもできるようにしたい 調べた結果できます。 [Run]-[Debug Configrations...]をクリックします。 C/C++ Remote Applicationを選択して、左上の新規ボタンをクリックします。 変更するのは赤で示した次の箇所です。 Connetction: Raspberry Pi にします。 これはccHello をRaspberry Piに転送するためのパスと実行ファイル名の設定です。 Raspberry Piのホームディレクトリ直下に転送するようにしていますが、任意のフォルダーに設定してもOKです。 これは転送したccHelloに実行権限を与える設定です。 次にDebugタブの変更をします。 GDB debugger: arm-linux-gnueabihf-gdb にします。 [Apply]ボタンをクリックします。 [Debug]ボタンをクリックします。 パスワードのダイアログがでるときは、raspberryを入力します。 [OK]ボタンをクリックします。 [Yes]ボタンをクリックします。 オーーーーーーーーーーーーーーーーーー! デバッグ画面になりました。 この状態ではブレークしています。 [Run]-[Step Over]をクリックする(またはF6キーを押す)と1行づつ実行します。 実行結果はConsoleで確認できます。 やっとデバッグもできるようになったぞ!!!!!! |
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のアイコンを右クリックすると固定できます。 JDK6でもダメなときがあります。 ecilpse.ini -startup plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar --launcher.library plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20140116-2212 -product org.eclipse.epp.package.cpp.product --launcher.defaultAction openFile -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile --launcher.appendVmargs -vm /home/user/jdk7/bin/java -vmargs -Dosgi.requiredJavaVersion=1.7 -XX:MaxPermSize=512m -Xms512m -Xmx512m /home/user/jdk7のところはお使いの環境により書き換えてください。 これはjdkのパスを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でデバッグできます。 |