システムサービス

VisualDSP++4.0にはSysterm Services and Device Driversという機能が人知れず突っ込まれています。これ、地味ですが実はとても便利です。

  • PLLの設定を周波数で指定できる。
  • SDRAMのスペックを指定すると、コントローラをきちんと設定してくれる。
  • しかもSDRAMのコントローラ設定はPLLの設定を変えると連動する!
  • PFの扱いがとても単純化されている。
  • タイマーの扱いがとても単純化されている。
  • 割り込みの扱いがとても単純化されている。
  • DMAの扱いが幾分単純化されている。

Blackfinに限らず、マイコンを扱うときに面倒なのはIOの設定です。「俺はプログラムを組みたいんだYo!」と思いながらIOレジスタのページをめくるつらさ。システム・サービスは若干のMIPS数とメモリを差し出すことでこれらを緩和してくれます。そして何より便利なのはDefered Callback機能です。これは割り込みをサービスリクエストに変換してキューで順序実行する仕掛けで、ダブルバッファの扱いがとても単純になります。
入力⇒処理⇒出力
処理であれば、OSなしでこれだけでも十分いけそうです。また、DMAやタイマー、PFの割込みが一元処理されるのもわかりやすいです。
問題はオーバーヘッドでしょうか。「1MIPSたりとも譲れない」というケースは少ないとしても、「1Byteたりとも譲れない」ケースは組込みでは割と多いので、こういった機構が受け入れられるかどうかは微妙だと思います。
もうひとつの問題は英文マニュアルです。が、これはアナログ・デバイセズのマニュアルにしては珍しく良く出来ています。全体はリファレンスですが、各章の導入部がユーザーズガイドになっていて、ここを読むだけでもかなり機能を把握できます。