2010-09-12

Music Shield 勉強中


まずは、FLACサポートをどーやってんだろ?と思ってソース解析。

vs1053b_patches_flac.h の中を見ると、なんかバイナリコードが並んでる…
読み込んでる処を探すと、いったんメモリ上に展開してから、それを読み出してレジスタ書き込みしてる…

ってことで、vs1053b自体にプログラムを転送して、そこで処理させているのが判明…ってことは、このバイナリコード自体を読まないといけない、ってわけだ…Arduino側のCPU性能をいっくら上げても無駄なのね…

vs1053b_patch.hがエラーになる原因も判明、こりゃだめだわw

プログラムの他の部分に手を付ける前に、ここの解析をやるか…ってか、素でハンドアセンブルしてるんかなぁ?

===追伸===
しかし、ひどいコーディングだ、こりゃ…ソフトウェアエンジニアリング知らない人のコードだな…
while (i<length/dataSize)
とか、毎回除算が発生して効率が悪いぞ、とか…せっかくPLUGIN_SIZEで配列のサイズ設定してるのに、なんでそっち使わんの…みたいな…

===追伸の追伸===
http://www.vlsi.fi/fileadmin/software/VS10XX/vs1053b-patches.pdf
VLSIのサンプルコードがそうかいてあるせいかっ!!!

もうダメぽ…

1 件のコメント:

bunpei さんのコメント...

私の理解は間違っておりました。すみません。FLACの処理もVS1053bの内部でやっているのですね。しかしそのモジュールは外部でコンパイルしたバイナリコードをパッチの形でVS1053bにアップロードしてる。VS1053bのコンパイル環境は無料で構築することができますが、FLAC対応のパッチのバイナリに対応するC言語ソースコードは公開されていないので(公開されているC言語ソースはコンパイル済みのバイナリデータをアップロードするところだけ)、それを改良することはちょっと無理でしょう。