2010-05-01から1ヶ月間の記事一覧

mbedを使って思うこと

話題のmbedボードを購入して触っています。 サーバーサイドIDEであるため、いろいろなOSで動くこともあり、触っているだけでもおもしろいボードです。一方で痛感しているのがライブラリの充実がプロセッサを使う上で非常に重要であると言うことです。 たとえ…

Tail Call Optimization

BF537/518用の検死情報機能を実装しました。そこで一つ浮上してきた問題があります。GCCのTail Call Optimizationです。 検死情報を表示するspurious_int_handler()は、device_dispatcher()の末尾から呼び出されます。このとき、GCCはTail Call Optimization…

検死情報とコールスタックの表示機能を追加

以前、サンプルとして作った検死情報の表示機能をBF533依存部の機能として実装しました。スプリアス例外と割り込みが発生すると、コンソールに待避されたコアレジスタと主要なシステムレジスタを表示します。その後、イベント発生に至るコール・スタックを表…

GDB用のシステムリセット機能を修正

屋上屋を重ねる形で開発を進めてきたこの機能ですが、思い切ってリファクタリングしました。だいぶすっきりしました。 Blackfin用のgdbproxyはどうもリセット機能が弱いらしく、安定して動作しないことがままありました。そこで、GDBでプログラムをロードし…

LDで不連続領域にセクションを割り当てる

BF518のRev 0.0つきEZ-BOARDを引き当てるという不幸を演じてしまったため、TOPPERS/JSPの実装が無駄に面倒になりました。現在のところ0.1を使う人は快適に、0.0を使う人だけが苦しい実装です。つーか、0.0付きのボード、回収しろよ > ADI Rev 0.0は、16kBの…

TOPPERS/JSP for BlackfinのC++に大域変数の初期化機能追加

長い間懸案でしたが、ようやく目鼻がついてきました。今のところ、次のような手順で動かすことができます。 $ jsp/configure -C blackfin -S kobanzame -l c++ -A cxx_sample1 $ make depend $ make lは、プログラミング言語の指定、-A cxx_sample1は、TOPPE…

crtbegin.oのソースコード

C++に対応するには、スタートアップで_initを呼ばなければなりません。なぜか。 _initは大域変数として宣言されたオブジェクトのコンストラクタを呼びます。そうしなければプログラムの初っぱなで大域変数であるオブジェクトを使えないからです。では_initは…