Archive for the 'mbed' Category

mbedオフラインビルド

Posted by ゆのじ on 2月 9th, 2012

先の投稿で書いたが、mbedは大変すばらしいものの、それが無くなったことを考えると些か不安でもある。そのため、エクスポートしたプロジェクトをローカルでビルドする方法をきちんと確立しておきたかった。

で、ひとまずさんざん試行錯誤した結果、さくっとビルドする方法がわかったのでメモしておく。ちなみに、OSX Lion(10.7.3)にmacports環境なので、WindowsやLinuxユーザの方には適用できないかもしれない。

用意

  • codesourcery gcc用としてエクスポートしたソース
  • YAGARTO(http://www.yagarto.de/)から拾ってきたYAGARTO GNU ARM toolchainの最新版

展開

  • 適当なところ(うちは/opt/local/)にyagarto(最新版).appをおいて実行
    • 中身が実行したディレクトリ/yagarto(バージョン)/に展開される
    • 趣味で/opt/local/yagarto -> /opt/local/yagarto(バージョン) にsymlinkしておく
  • ~/.zshrcなり~/.bashrcなり~/.tcshrcなりにpathを追加
  • エクスポートしたソースを展開してmake
  • できあがり!

・・・あれー。これで終わるはずじゃなかったのだが。macportsのarm-none-eabi-gccでビルドすべくやってみたら、newlibの改変でエラーぼこぼこ出て、調べたら–disable-newlib-supplied-syscallsを付けろとかいうからPortfileに付けてみたらビルド出来ず、–enable-languages=c,c++付けたらarm-none-eabi-gccはビルド出来たけどcrt0.oが無くて結局ダウンロードした奴がビルド出来なくて、ついにはcodeRedのred suite 4 fullの試用版まで落としてきて試したにも関わらず駄目だったのに。

ひとまず大変シンプルなコードでしかテストしてないのでどこまでちゃんと使えるかは不明だがざくっとしたコードは問題なく動いていて、ライブラリ等も一式使えてる模様。ただ、mbed interfaceの支援がないからか、最適化オプションの都合か、バイナリは相当デカくなってしまった。mbedのサイトでビルドすると4,356bytes、エクスポートしてローカルでビルドすると56,736bytes。何かに騙されてる気がするくらいのサイズ差がある。恐らく不要なモノが大量にリンクされてるだけだろうし、この辺放置するとエラいことになりそうなので、追って調査。それと、このままだとmbedからエクスポートしてきたソースのビルドは出来る(ライブラリ類一式がアーカイブに入っている)が、一からソースを書き始めるには諸々準備がいる。その辺もそのうち時間が取れたら調べて書く。

2012/2/20追記:

上のnewlib云々の問題、がた老氏がSTM32で遭遇された問題にそっくりのような気がする。Stub書けば良いだけなら話は早い。追って調査としたい。

mbed買った

Posted by ゆのじ on 2月 7th, 2012

mbed

mbedを買った。LPC1768版とLPC11U24版と。

Macからでも開発が出来て、ファームウェアのアップロードはマウントされたドライブにbinファイルを突っ込むだけのお気軽仕様で素晴らしい。Arduinoも悪くないけどこっちのほうが楽な印象がある。ライセンス的にもmbedを1つは買わないとそのターゲット向けのビルドが出来ないものの、1つ買えばいくらでもビルド出来るしLPCXpressoのようなmbedではないボードにファームウェアを放り込むことも出来る。ライセンス的にもそういう使い方をしていいということらしい。曰く、

Can I make commercial products using an mbed?

Yes! You are free to make and sell products that were developed using the mbed libraries.

We do not offer any guarantee for the libraries, they are there for rapid prototyping purposes, but if you wish you use them, you can. here are some examples showing how you might take a prototype to a custom design.

とのこと。

使うことの出来るmbedのライブラリも良くできてるし、しかもエクスポートしてmbedの外でビルドすることも出来るらしい。このあたり、突然mbedサイトが無くなったりサービス終了したときにソフトウェア資産が無くなるのは辛いので十分調べてみたいところ。

そうそう、mbedのLPC11U24版のほう、裏側のmbed interfaceチップの45,46番ピンの間に半田ブリッジがある。twitterで話題に出したら@tedd_okanoさんが確認してくださった。結果、わざとやっていることであって、このリビジョンにおいてはそれで正しい仕様だとのこと。@tedd_okanoさん、ありがとうございました。