gnuツールチェーンでのTalktThrough
VisualDSP++版で動かしたソースをSUSEに持ってき、わずかな修正で動作することを確認しました。修正点は
- ccblkfn.hで定義されている組み込み関数をインライン・アセンブラで置き換える
というもので、組込み関数がgcc標準ではないので当然といえば当然と言う改造です。
ssync組み込み関数
gcc 4.0.xよりgnu.orgのgccソースツリーに正式にBlackfinが組み込まれました。gccのマニュアルによれば、現在二つの組み込み関数が利用可能です。
void __builtin_bfin_csync (void) void __builtin_bfin_ssync (void)
機能は自明ですね。今回TalkThroughをVisualDSP++から移植するに当たり、ccblkfn.hのssync()がないことが問題になりました。ssync()、ccsyn()は
asm( "ssync;" ); asm( "csync;" );
を使えば代用でき、かつ、どちらの環境でも利用できます。組み込み関数を使うかインライン・アセンブラを使うかはまだ決めかねています。