2010-01-01から1年間の記事一覧

「C++ Composer XE 2011」ベンチマーク記事の隙が大きすぎて、アーキテクチャ批評が書けない

Sourceforge Magazineのデベロッパー向け記事にアセンブラコードで見るC++ Composer XEの強力な最適化機能がリストされています。さて、その記事、SSEの性能評価をしてやろうかと思ったらそれ以前の問題で膝を折りたい気分です。 一例は2ページ目 http://sou…

Blackfin空挺団復旧

完全ではありませんが、ようやく形になりました。2008年初頭までタイムスリップしているのはご勘弁を http://blackfin.sakura.ne.jp/index.shtml

Real FFT

FFT

FFTは複素信号を処理します。入力は複素信号であり、出力も複素信号です。ところが、実数しか必要としないアプリケーションはたくさんあります。そのような場合、虚部を0としてFFTを行うわけですが、もったいない点は否めません。何とかならないかと思うのが…

Codesourcery G++ LiteでCortex-M4Fプログラムをコンパイルする

2010年秋版のCodesourcery G++ LiteはCORTEX-M4Fに対応しています。試行錯誤した結果、以下のようにそれらしいコンパイル結果を得ることができました。 takemasa@takemasa-desktop:~/foo$ cat main.c volatile float a[20], b[20]; int main(void) { float s…

FFT性能を推測する

CORTEX-M3関係の資料を洗い直していたところ、NXPのニュースリリースに「[http://www.nxp.com/news/content/file_1679.html:title=120MHzのCORTEX-M3マイコンで、1024pt 16bit FFTが 0.89mS以下]」という記述を見つけました。 ここから少し推論してみます。C…

プロジェクトほったらかしだった orz

ちょっと人から聞かれまして、Kobanzame版のTalkthroughを引っ張り出そうとしたのですが…ありませんでしたっ! なんてこと、記憶の引き出しを探っても出てきません。自分のPCを検索してようやくPizzaFactory版がTOPPERS/JSP for Blackfinプロジェクトにアッ…

DSPのソフトウェアパイプライン最適化のプレゼンを公開

以前描いて死蔵していたものです。なんとなく一度公開した気もしますが…。 パイプライン最適化 Windows Liive IDを持っている人はオンラインで閲覧できます。アニメーションを良く再現するにはIEを使って見てください。かなりトリッキーなアニメーションを使…

Blackfin空挺団の今後の予定

すっかり停滞している当ブログですが、信号処理で遊ぶ、SDRを作るといった目的は見失っていません。今ちょっとよそ見している格好ですが、長い時間かけた別プロジェクトにようやく目鼻が付いてきました。これで次のステップに進むことができます。 オーディ…

ぶっちゃけ、Blackfin空挺団は消滅しているわけですが

だれもそれを指摘しないあたりが、このサイトの需要の低さを物語っていますな。サイトが消えて一番迷惑しているのは、自分に有用な資料をひたすら書きためていた私自身です。 元はと言えば、あまりにも管理が煩雑になった静的サイトを、管理コスト低減のため…

TOPPERS/JSP Blackfin依存部3.2.0をリリース

http://sourceforge.jp/forum/forum.php?forum_id=23544リリースまでぐずぐずして時間をとってしまいました。ユーザーズ・マニュアル一所懸命書きましたので、読んでください。

SHARCもC67もいらないんじゃないか

最近、そんなことを何度も考えています。CORTEX-A8はプロセスにもよりますが、800MHzくらいで動作します。このプロセッサ、nVIDIA、TI、Freescaleといったチップベンダーに採用されており、その他モバイル・デバイス用にガンガンSoC化されています。 CORTEX-…

Blackfin空挺団::Blogはこちらに移転しました

今後は、 http://d.hatena.ne.jp/suikan+blackfin/ に、アンテナ、RSSリーダー、ブックマークを変更してくださいますよう、お願いします。

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は…

BF518用のMMR宣言できた

検証も完了しました。CVSにコミット済みです。BF518に関しては、Rev 0.0対応が終われば一段落です。問題はC++対応の方です。

GWの予定

BF518依存部 Rev 0.0依存部も Kobanzame依存部 BF533CBはオブソの方向で BF518依存部にMMRアクセス用宣言を追加 BF533/BF518にGDBからuBootをロードして実行する Asagaoが不要になる ユーザーズマニュアル仕上げ キャッシュの操作 SDRAMを使った動作試験 BF…

TOPPERS/JSP BF518依存部、動き出した

今朝からEZ-BOARD*1 BF518の裏面JTAGに対応するための引き出し線を作り、刺身包丁を使いやすくしました。 さて、おもむろにTOPPERS/JSP BF518依存部作成開始です。実はずいぶん前にビルドまで進めていましたので楽なはずでしたが、何しろ私のやることですか…

JTAGポートの5番ピン

ADIのJTAGポートの5番ピンには、うんざりするような歴史があって、うんざりするようなことになっています。しかし、いえることはただ一つ、「ADIの推奨通りに作った場合、5番ピンには抵抗を通してインターフェース電圧が出力される」ということです。そして…

おれがBlackfinに飽きてるって?

それは幻想だ!まずはそのふざけた幻想からぶっつぶす! いやぁ、買っちゃいましたよ。BF518のEZ-BOARD。もうさすがにシリコン・リビジョンも0.1だろうとおもったら、まだ0.0だし、ADSP-BF518FのEZ-BOARDという触れ込みなのに乗っているのはBF518だし、JTAG…

_init

C++に対応させるために、色々つつきまわしています。 C++対応に関してはTOPPERS/JSPにC++バインディングがあるのですが、限定されたターゲットにのみ対応しているだけです。ざっとドキュメントを読みましたが、特に同じ方法をとる必要は内容に思えます。 C++…

著作権表示に対応

TOPPERS/JSP for Blackfinは、log_taskが動き始めるまではシリアル出力にメッセージを出すことが出来ません。そのため、著作権表示や、Sample1終了後のメッセージが表示されていませんでした。 本日、この機能を実装しましたのでCVSのjspモジュールのヘッド…

C++ のnew演算子

C++

id:d:monamour555さんからコメントで monamour555monamour555 2010/03/29 23:29 C++目的なら,operator new をオーバーロードしたほうが手っ取り早くないですか. と、提案を受けました。調べてみるとnew演算子を多重定義する方法がいくつかネットでも解説さ…

newlibのmalloc()はスレッド・セーフじゃない

C++

Blackfin toolchain 2009R1.1のbfin-elf-gccは、newlibを使います。 で、調べた結果newlibのmalloc()はスレッド・セーフじゃありませんでした。 調査はこんな感じ takemasa@hilbert:~/foo$ bfin-elf-gcc -v Using built-in specs. Target: bfin-elf コンフィ…

スレッド・セーフなmalloc

C++

Blackfin用GCCでC++をビルドする方法がわかったので、もう一つ先に検討を進めています。 一番気にしているのはmalloc/freeがセーフか否かです。正直、これさえOKなら他のライブラリが全滅していてもかまいません。FIRフィルタやIIRフィルタといった信号処理…

[メモ] シミュレータでC++を動かす

C++

忘れないうちにメモ。環境は Ubunto 9.04 + Blackfin Toolchain 2009R1.1 takemasa@riemann:~/foo$ cat main.cpp #include <iostream> int main() { std::cout << "Hello, C++" << std::endl; return 0; } takemasa@riemann:~/foo$ bfin-elf-gcc main.cpp -msim -lstdc</iostream>…