移転します

当ブログは移転に伴い閉鎖します。 今後はDSP空挺団のブログをよろしくおねがいします。

空挺団サイト閉鎖

ちょっと考えていることがあって、空挺団のサイトを閉鎖しました。旧ブログも閉鎖しています(内容はすべてこちらにコピー済み)。サイトに関しては2ヶ月ほどかけて何か新しいことを始める予定です。

.bss.sysmmr と .bss.coremmr

先日のやりとりの結果、Mayaさんが遭遇していた「bfin-elf-gccで作ったLDRファイルがBlackfinでロードしない」と言う問題は、Makefileの中の次のコマンドの副作用によるものでした。 $(OBJCOPY) -R .bss.sysmmr -R .bss.coremmr $(OBJFILE)このコマンドの起…

Unzen基板

新しい基板を設計中です。 この基板はマルチ・アーキテクチャのオーディオ・プラットホーム Uzumeの実装作業用に開発している物です。プロセッサはADSP-BF592で、モーターなどの小規模組み込み用DSPですが、I2Sを持っています。このチップはBGALFCSPなのでと…

96bitの割り込みマスクを作るには?

まやさんがBF548へのTOPPERS/JSPの移植で躓いている様子。 BF548のハードウェアリファレンスマニュアルを確認すると、IRQが96種類定義されています。他のプロセッサでは64種以内におさまっていたため、割り込みマスクをunsigned long longで各ビットに割り当…

LDRファイルを作る

Blackfinファミリは外部からチップ内部にプログラムをロードするメカニズムを複数持っています。 たとえば、BF518であれば、SPIフラッシュ、フラッシュ、UART、SPI hostなどからプログラムをロードすることができます。一方で、この仕組みを使うには、特別な…

ビルド出来た

TOPPERS/JSP for BF506ですが、とりあえずsample1のビルドはできました。 BF506は命令メモリが32KBしかありません。そのため、外部Flashにプログラムを置いてその場実行するのですが、その際、SRAM16kBはキャッシュに割り当てることになります。sample1のサ…

コードの確認を開始

まやさんから預かったTOPPERS/JSPのBf506ポートのチェックをはじめました。 VDSP++でしかビルドを確認していないとのことで、まずはGCC用へコードの整形を開始しています。幸いなことに、現在プロジェクトのインストーラが使っているgnu toolchain 2010R1 は…

まやさんのBlackfin基板

Arduinoピン互換Blackfin基板 本職はきれいに作りますね。

GDBによるターゲットのリセットに関する進展

gcc

これまで、TOPPERS/JSP for BlackfinアプリケーションはGDBからプログラムをロードする場合に非常に面倒な手続きが必要でした。 この理由は、GDBからのターゲットリセットがうまくいかないことになりました。TOPPERS/JSPアプリケーションはリセット状態から…

TOPPERS/JSP for Blackfin更新

gcc

いくつかの更新を行っています Kobanzame用talkthrough Kobanzameで動くTalkthroughコードのgcc版のCVSモジュールを作りました。 TalkThroughのCVSリポジトリ プログラムを展開し、make depend; makeでビルドが完了します。動作は検証済みです。 Toolchain 2…

Real FFT補足

先日書いたReal FFTについて少し補足しておきます。 FFTのこのようなふるまいの背景は、基礎になるフーリエ変換のカーネルが exp(-jwt) の形を取る*1ことにあります。expt(-jwt)は、cos(wt)/2 - jsin(wt)/2ですから、変換結果の実分は偶関数に、虚部は奇関数…

80bit += 32bit * 32bit

16bit DSPのMAC演算の構成は念仏のように十年一日 40bit += 16bit * 16bitとなっています。符号付き16ビット固定小数点演算*1では、積の形式がQ30*2となります。これを32bitにそろえてQ31とし、あふれ対策に8ビットの整数ガードを追加すれば、40bitとなりま…

gdbとブート

TOPPERS/JSPには「GDBのデバッグ時リセット能力が弱いので」特別なコードを入れているのですが、今頃になって、これ、私が書いたJSPのリセット後初期化コードの問題じゃないかという気がしてきました。 今のところ「気がする」だけですが、時間を見てu-boot…

チケット #24010に対応

TOPPERS/JSP for Blackfinにおいて、チップ共通部を識別するマクロが提供されていませんでしたので、これを提供しました。CVSのHEADには適応済みです。時期未定ですが、次のリリースに入れる予定です。 http://sourceforge.jp/ticket/browse.php?group_id=12…

「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依存部の機能として実装しました。スプリアス例外と割り込みが発生すると、コンソールに待避されたコアレジスタと主要なシステムレジスタを表示します。その後、イベント発生に至るコール・スタックを表…