RaspberryPiのクロス開発環境をセットアップする

RaspberryPiで動く何かを、OSX上でコーディングしてビルドするための環境セットアップのメモです。
Ubuntu@VirtualBoxにEclipseをセットアップし、C言語を用いてRaspbian用にクロスコンパイル＆リモートデバッグ、がゴールです。

# 環境
* ターゲット : RaspberryPi2 ModelB
* ターゲットのOS ： Raspbian
* ホストPC ： OSX Yosemite
* 仮想マシン ： Ubuntu14.04 @ VirtualBox

# 前提
* VirtualBox + Ubuntu は、Mac上にセットアップ済み
* RaspberryPiへは、MacからSSH接続できること

# Eclipseのインストール
https://eclipse.org/downloads/
CDTがバンドルされたEclipse（Linux64bit）をダウンロード＆展開します。
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/ea222560-f740-817a-1a78-5fbbfa0d527a.png)

ホームに展開して起動！JREが無いと怒られました (´・ω・｀)
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/309fa850-e870-7470-f465-889ee6948363.png)

# JDKのインストール
oracleのJDKだといろいろ面倒なことがあったので、OpenSDKをインストールします。

`sudo apt-get install openjdk-7-jdk`

Eclipseが起動するかどうか確認します。起動しましたね。
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/85cb9513-2c28-2ec6-8206-b349eaacc0ef.png)


# RaspberryPi用のコンパイラおよびツールのインストール
まずはgitをインストール。
`sudo apt-get install git`

適当にディレクトリを作りクローンします。
`mkdir raspi`
`cd raspi`
`git clone git://github.com/raspberrypi/tools.git`

シェルにパスを通しておきます。.bashrcに以下を追加します。
`export PATH=$HOME/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:$PATH`

# EclipseでRaspberryPi用のプロジェクトを作成する
File → New から C Projectを選択します。ToolChainは Cross GCC を選択します。
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/8070081b-be87-50f0-a12a-1bca5f46e7e6.png)


Next
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/7255d940-fa03-8d8c-e29b-79235b58211e.png)

以下を入力してFinish。
Cross Compiler Prefix: arm-linux-gnueabihf-
Cross Compiler Path:/home/user/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/
user名にあわせてディレクトリ名を変更してください
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/9fabded1-c95f-339a-d97d-74de48a2bab8.png)



# とりあえずHello Worldを作成する
プロジェクトを選択した状態で、File → Newから Source Folder を作成します。フォルダ名は適当でいいです。
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/05ef9420-6a52-c23d-3436-bc5cd60c3111.png)

作ったフォルダを選択した状態で、File → New から Source File を作成します。ファイル名はmain.cとします。作ったソースにHello World を書きます。Project → Bulid Project からビルドしておきます。
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/ad22a9e6-bd8b-d074-87f9-a4acf8528eb4.png)

# EclipseからSSHで接続する
Window → Show View → Other から Remote Systems の Remote Sytems を選択しOK
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/ccc83b0c-b66d-c779-da7b-4b4521ce9160.png)

表示されたウィンドウ内のLocalを右クリックし New → Connection を選択、SSH Only を選択し Next
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/862d00a2-1230-9be3-a77d-63979e55abee.png)

Host Name にIPアドレスを、Connection Nameに適当な接続名を入力しFinish。
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/fd3ecbf7-4b9a-b520-a1d2-050eadffd259.png)

作成した接続名の下にある Ssh Terminals を選択した状態で Connect を選択し、
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/cd2471e5-bc20-b1a9-bad5-b3e60f6faecf.png)

RaspberryPiでデバッグするユーザ名とパスワードを入力し OK します。
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/5270f900-15e3-9158-d464-db1fc346b005.png)

SSH接続に関する確認画面がいくつか表示されるので Yes します。
![aed26002-7f0a-d6bc-75b2-f889ffba1566.png](https://qiita-image-store.s3.amazonaws.com/0/25351/eec7d7d0-e8d1-9ac5-46c2-0a5b01bcaf83.png)

Ssh Terminals を右クリックし Launch Terminal を選択、ログインできればOK。

# Eclipseからリモートデバッグする
Run → Debug Configurations を選択し、左側から C/C++ Remote Application を選択した状態で左上の New Launch Counfiguration を選択します。

![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/25812ff5-8647-a3a5-e53f-3ee43d79259a.png)

* Mainタブ

Connection：作成したSSH接続名
Remote Absolute File Path for C/C++ Application ：/home/pi/raspi/HelloRaspi
Commands to execute before application :chmod a+x /home/pi/raspi/HelloRaspi
RaspberryPi側に /home/pi/raspi というフォルダがあることが前提です。

![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/a3279893-918d-4764-f19e-bea5beb743e6.png)

* Debuggerタブ

GDB Debugger：arm-linux-gnueabihf-gdb
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/60acc341-0f51-bc04-f988-3504d6004f26.png)

上記を入力して、Debug を押すと・・・
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/0854b230-0ac8-3d3e-8616-a16aea0378ef.png)

先頭でブレークすれば成功です！ステップすると、ちゃんと出力されてますね。
![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/25351/00a85df4-3a4a-0891-e3aa-ce060cb3c6c8.png)

本記事は以下のサイト様をほぼ丸パクリで作成しました。有益な情報をありがとうございます。
http://www.sadaji.net/Firmware/eclipse/index.htm