Android SDK in Linuxで実機デバッグ環境構築

http://developer.android.com/guide/developing/device.html#setting-upのページに沿って、Linux環境での実機デバッグに挑戦します。デバッグターゲットはPocketWifi S(S31HW)です。

1.Android Manifestでアプリケーションをデバッグ可能に設定する

eclipseにてパッケージエクスプローラにて「AndroidManifest.xml」を選択し、真ん中の「Android Manifest Application」にて下の方の「「ア」アプリケーション」を選択します。

その中の「Debuggable」の項目を「true」にします。結果はAndroid Manifext.xmlに

という記述が追加されているかで確認できます。

2.Androidの実機側でUSBデバッグを許可する

「設定」→「アプリケーション」→「提供元不明のアプリ」にチェックを入れる。

「設定」→「アプリケーション」→「開発」→「USBデバッグ」にチェックを入れる。

3.udevルールを作成する

(1)lsusbコマンドでUSBベンダIDを調べる

Androidデバイスを接続し、lsusbコマンドで接続されているデバイスを表示する。

青の行がHuaweiなので、この行がPocketWiFi Sです。そしてベンダIDは赤字の「12d1」であることがわかります。

(2)udevルールファイルを作成する

ルート権限で「/etc/udev/rules.d/51-android.rules」を作成し、その中身を、

とする。作成したファイルは、アトリビュートを変更しておく。

 (3)udevルールファイルを再読み込みさせる

udevadmでルールを再読み込みさせる。

この後、一旦PCからAndroid機を取り外し、再度取り付けます。

4.実機でデバイスが認識されているか確認する

adbコマンドでデバイスが認識されているか確認してみます。

となって、2行目の方(5Cで始まる行)で認識されていることが確認できます。

 5.Eclipse上で「実行」してみる

実行すると、PocketWiFiS上で動きました!

 

STM32 Value Line DiscoveryをLinuxで開発する(3)

こんどは、Eclipse Plug-in をテストしてみます。参考にしたのは、http://gnuarmeclipse.sourceforge.net/wiki/Main_Pageです。EclipseはすでにAndroidの開発環境の構築の際にインストール済みなので、そこにARMのPlug-inをインストールしてみることになります。

1.EclipseのPlus-inのインストール

http://gnuarmeclipse.sourceforge.net/wiki/Plug-in_installationに沿って、プラグインをインストールしていきます。

  1. 「ヘルプ」→「新規ソフトウェアのインストール」で「インストール」ウインドウが開きます。
  2. 「追加」ボタンを押し、「リポジトリの追加」ダイアログでロケーションに「http://gnuarmeclipse.sourceforge.net/updates」を入力してOKを押します。
  3. しばらくすると、名前のところに「CDT GNU Cross Development Tools」というグループが表示されるので、グループのチェックボックスはチェックなしのまま、1階層下を開き、「GNU ARM C/C++ Development Support」にチェックを入れます。チェックを入れたら「次へ」を押します。
  4. インストールする項目の確認画面が表示されるので「次へ」を押します。
  5. ライセンスの同意確認画面がでてくるので、同意して「完了」を押します。
  6. ソフトウェアのインストールが実行されますが、途中で署名なしコンテンツを受け入れるか確認する警告が表示されますので、「OK」を押します。
  7. Eclipseの再始動確認画面がでてくるので、画面に従います。

2.プロジェクトの生成とToolChainの設定

プロジェクトを生成し、http://gnuarmeclipse.sourceforge.net/wiki/Featuresを参考にツールチェーンの所在をCDTに教えます。

  1. C言語のプロジェクトとして新規のプロジェクトを生成します。
  2. プロジェクトタイプは「ARM Cross Target Application」とし、ツールチェーンは「ARM Linux GCC(Sourcery G++ Lite)」とします。 (summon-arm-toolchain は同じarm-none-eabi-gccなので)
  3. 構成の選択の拡張設定の中の「C/C++ビルド」の「環境」で「すべての構成」を選択した上で、「追加」を押して「名前」に「PATH」を追加し、「値」に「~/sat/bin」を展開した値を追加して、ツールチェーンの場所を知らせます。(展開した値でなければうまく行かないようです)
  4. 「OK」、「完了」、「はい」で、プロジェクトを生成します

3.ソースファイルの追加とビルド

  1. ソースの追加で、main.cを追加します。
  2. stlink/example/blink/main.c の内容をコピー&ペーストします
  3. 「プロジェクト」→「プロパティ」で「環境」の「C/C++ビルド」の「PATH」に「~/sat/bin」を展開した値が入っているのを確認します。
  4. 同じく、「ビルド変数」に「~/sat/bin」を展開した値が入っているのを確認します。

これでビルドすると一応コンパイルされるのですが、まず、サンプルはどのボード向けのコンパイルをするか指定するマクロ定義がないのでエラーになります。

さらに、コンパイルできても、リンク時のマップ指定(何番地からの前提でリンクするか)を指定する箇所がわかりません。素直にMakefileがある前提(自分で作る前提)のプロジェクトとしたほうが良さそうです。

・・・・とりあえず、ここまでで今日は挫折・・・orz

STM32 Value Line DiscoveryをLinuxで開発する(2)

続きです。

2.stlinkのインストール

gitでリポジトリをクローンします。

パッケージマネージャで libusb-1.0 と pkg-config がインストールされていることを確認する必要があります。自分の場合は一見libusb-1.0がインストールされているように見えたのですが、実際にmakeするとエラーになったので、

でlibusb-1.0をインストールしました。

その後、コンパイルします。コンパイルは make 一発です。

STM32 Value Line Discoveryを取り付けます。・・・が、こいつのSCSIエミュレーションはだめだめらしいので、システムから無視させるために、

とすることになっていますが、エラーになってしまいます。しかも、アンマウントしても、すぐに復活してしまいます。恒久策としては

なのですが、それでもエラーになってしまいますので、一旦強制的に挿抜しました。

次に、udevルールをセットアップします。

ここでSTM32 Value Line Discoveryを取り付けると、/devの下が

というようになります。

3.弄ってみる

gdbserverを起動してみます。

とりあえず正しく認識して、gdbserverが起動しているようです。

4.何か動かしてみる

gdbserverが動いたままの状態にして、tutorialに沿って、Lチカのサンプルを動かしてみます。

まず、サンプルプログラムをコンパイルします。(赤字が入力箇所です)

次に、gdbserverに接続して、ダウンロード&実行します。

ボード上のLEDがチカチカし始めましたので成功です。

STM32 Value Line DiscoveryをLinuxで開発する(1)

STM32 Value Line Discoveryは面白そうで、安いのですが、開発環境がWindows専用だったりするので、購入したものの放置していました。

しかし、なにげに HACK A DAY を見ていたら、Linux上にSTM32の開発環境を構築する記事がでていたので、追試してみました。OSはLinuxMint11の64bit環境です。

まず、tutrialに沿って環境構築を進めます。

0. gitのインストール

リポジトリはgitで管理されています。ダウンロードするためにgitを使うので、インストールします。

1.summon-arm-toolchainをインストール

gitでリポジトリをクローンします。

インストーラスクリプトをカスタマイズします。

以下の行のみ変更します。(コマンドラインオプションでも設定できるようです。)

その他の依存関係をクリアしておきます。

ツールチェーンを構築します。

として構築します。勝手にツールチェーンをダウンロードして、コンパイルしていってくれます。

かなり負荷がかかるようで、普段は静かなCPUファンがかなりの轟音を立てていました。

 

Android SDK in LinuxMint11(64bit)環境構築

調子に乗って、LinuxMint11の64bit環境でAndroid SDKをインストールしてみます。

1.ia32-libsのインストール

JDKのインストールの前に、http://developer.android.com/sdk/installing.html#troubleshooting に従って、ia32-libsをインストールします。

2.JDKのインストール

ソフトウェアの管理から、「sun-java6-jdk」をインストールします。

3.Eclipseのインストール

ソフトウェアの管理からインストールできるeclipseのバージョンは3.5.2-8ubuntu3でした。一方で、Android SDKがサポートするeclipseのバージョンは3.6以降なので、手作業でインストールします。

ちなみに途中で誤って3.5.2をインストールしてしまったので、「$ sudo apt-get autoremove eclipse」でアンインストールして、上記アーカイブの展開からやり直しました。

また、ダウンロードしてくる eclipse は「Eclipse IDE for Java EE Developers, 210 MB」でないとダメでした。「Eclipse Classic 3.7.1, 173 MB」や「Eclipse IDE for Java Developers, 127 MB」ではADT-Pluginのインストールで「開発ツール」がエラーになってしまいます。

4.Pleiadesのインストール

http://mergedoc.sourceforge.jp/ から Pleiades 安定版 をダウンロードした後、

として、展開します。展開後、/usr/share/eclipse/eclipse.ini の末尾に

を追加します。(パスが違うので要注意)

5.Android SDKのインストール

home directry に android sdk を展開します。

SDK Tools のパスを .bashrc に追加します。

6.ADT Plug-in のインストール

Eclipseを

として起動して、http://developer.android.com/sdk/eclipse-adt.html#installing に従って、ADTをインストール。途中で再起動したり、何度かライセンス確認等があるので注意。

★途中でSDKのアップデートがかかりました。なぜか、展開した場所と異なる場所にSDKがインストールされましたので、.bashrcを以下のように書き換えました。

7.SDKコンポーネントの追加

http://developer.android.com/sdk/installing.html の Step 4に従って、SDKコンポーネントを追加します。

で Android SDK Manager が開く。しばらく待つと、Packageのリストが出てくるので、http://developer.android.com/sdk/installing.html#which に従って、パッケージを選択していく。

今回は「Tools/Android SDK Platform-tools」と「Android 2.3.3(API 10)」と「Android 2.2(API 9)」を追加した。(「Android 4.0.3(API 15)」は初めから選択されていた)

この辺は32bitの時と同じでした。

8.サンプルの起動

32bit環境の時と同様にhttp://android.keicode.com/basics/quick-start.php の「はじめてのAndroidプログラム」を参考に動かしたところ、無事にエミュレータでも動作しました。