2012年2月13日月曜日

embedded開発はじめました その2



昨日GCCをビルドしたりシコシコやっていたわけだけど面倒くさがりが早くも顔を出し結局バイナリでインストールしてしまいました。ダウンロードも含めて5分ぐらいで終了。あれ!?簡単すぎた・・・。

いや、ちょっと色々先達の情報を見ていたらWindows環境の人はSourcery CodeBench Liteとかでさくっと環境作っている訳ですよ。他にも開発環境売っている会社いっぱいあって、お試し用の廉価版とかを出している所もいっぱいあるわけです。じゃあマックも何かあるんかい!と思って調べたら。

http://www.yagarto.de/index.html#downloadmac

ああ、これでいんじゃね?って事でダウンロードしてイメージファイルをマウント。インストーラをダブルクリックしたら・・・あら不思議。簡単にインストール完了!

・・・しなかったorz よくよくドキュメント読んだらインストール先にインストーラをコピーしろだとさ。なんか単なる自己解凍形式だったみたい。というわけで、適当な所に展開をすると

yagarto-4.6.2

なんてフォルダーが出来たのでなんとなく

/usr/local/yagarto/yagarto-4.6.2

ここに配置(sudoさん使って移動してね)。その後マニュアルに書いてある通りにパスを通しておしまい。

$ vi ~/.bash_profile


export PATH="$PATH:/usr/local/yagarto/yagarto-4.6.2/bin"

export PATH="$PATH:/usr/local/yagarto/yagarto-4.6.2/tools"


これで

$ arm-none-eabi-gcc --version

とかやって反応があったら一段落。一応M4にも対応しているのを確認して一安心。

開発環境なんぞさっさと揃えて先に進みたいからとりあえず今日はこれで良しとする。もっと最適化をしたいとか色々欲が出て来たら自前でビルドも考えようと言う事で今日は気持ちよく寝れそうです。

余談ですが昼休みに購買に行ったらinterfaceの新しい号の特集がuCLinuxで思わず購入してしまいました。ついでにカメラモジュールの記事があったトラ技も。なんかタイムリーにもほどがあるでしょ・・・。




2012年2月12日日曜日

embedded開発始めました



なんか本業そっちのけな見出しです。まぁ良かろう。

という訳で、マイコンボード上に勉強がてら一から積み上げた簡単なシステムを構築してやろうというところをゴールにすえます。現状、一般的に買い易い物はarm系という事でPandaやらBeagleやらがお買い得だしAndroidとかもモリモリ動いちゃうのですが、学習用という意味でもう少しシンプルな物という事で最初のターゲットをCortex-M4に定めてSTM32F4-Discoveryをお買い上げ。

まぁ、本業関連でM4自体はちょっとDSP的な処理も出来るマイコンというイメージだけど実際のところどのくらい性能出るんよ?ってのを検証したいというのが本当の目的だったりします。Cortex-A8/A9までは必要無いけどお安く程々に色々出来そうという期待も込めて。NetDuinoみたいにArduino互換でお手軽に使える様になるとHappyですね。

まずは開発環境を整えないといけないのでメインマシンのMacBookAir上にクロスコンパイル環境を構築してボード上で何かプログラムを実行出来るというところまで持って行くのを最初の目標にします。

まず、目標のイメージですけど

<図 後で埋める>

こんな感じかな?



  1. 開発環境(binutil/gcc/gdb)を用意する

  2. JTAG用にopenocdを用意する(今後の為に)

  3. 開発が楽な様にEclipseベースの環境を揃える

  4. 簡単なプログラムを作ってターゲット上で動かす

  5. 既存のOSをポーティングする




というわけでステップ1

コンパイラを用意しましょう。バイナリで配られている物もある様ですがとりあえず全部自分でビルドしていきます。自前ビルド自体に特に意味がある訳ではないですが。

用意したのは下記のバージョンのもの。

ビルド用(newlibはredhat、mpcはmpcのページ。その他はGNUのFTPから)



  • binutils-2.22

  • gcc-core-4.6.2

  • gcc-g++-4.6.2

  • gmp-5.0.4

  • mpfr-3.1.0

  • mpc-0.9

  • newlib-1.20.0




デバッグ用



  • gdb-7.4

  • openocd-0.5.0




ビルドの手順ですが最初下記のリンクを参照してGCC4.2.4のビルドをしたのですがヨクヨク調べてみたらM4で使うにゃ4.6以降じゃないとまずそうなのでしきり直します。基本的な流れ及びbinutil/newlib/gdbのビルドはコレに準拠でいきましょう。

http://www.ethernut.de/en/documents/cross-toolchain-osx.html

とりあえず今日は負けという事でorz

そういえばM4のドキュメントも入手せねば。DSPまわりとか良くわからないし。STMあたりにあるのかなぁ?