ブレッドボードI/Oプログラミングは、プロセッサと外部環境をつなぐ"基本インターフェース"を原理から学び、自分自身の手で"デバイスと会話する"ことを目指しています。このためには、各種インターフェースのプロトコル資料を読み込むことはもちろん、それぞれのデバイスのデータシートを精読できる力を持たなければなりません。
従来のテキストでは、あらかじめライブラリ関数を用意し、読者は出来合いの環境でプログラミングすることが多かったように思います。しかし、これでは単なる手順の繰り返しに過ぎず、"体得する"レベルに到達することは、ほぼ不可能でしょう。私は、自身の数え切れないほどの失敗から、この教訓を学びました。
書店にずらりと並んでいる入門書は確かに優しく、魅力的な顔をしていますが、果たしてこれらを百冊読んだところで、読者は得心できるのか?私はできませんでした。
雛鳥は、暖かな巣の中でひたすら口を開け、親鳥からの餌を待ち、いつの日か巣立ちます。翻って、これまで市販されてきた技術書の中で、読者に巣立ちを迎えさせてあげることができた本は、何冊あったのでしょうか?なぜ、自分は巣立つことができなかったのか?どうすれば、巣立つことができるのか?私は20年の間、自問自答を続けました。答えはまだ見つかりませんが、現時点で私が考え得る、最良の道のひとつがブレッドボードI/Oプログラミングです。
本連載では、デバイスとの会話のために、USB-FIFOを用います。吟味を重ねた結果、今回はUSB-FIFO機能を実現するICとして、Future Technology Devices International Ltd. (FTDI社)が提供している、FT2232Hを選択しました。
デバイスと会話する前段階として、まず私達はFT2232Hを制御する必要があります。このために、FTDI社はD2XXドライバを用意しています。D2XXドライバはバイナリー配布のみでソースは非公開ですが、Windows, Linux, Mac OS X用のドライバが用意されており、比較的簡単にFT2232H制御プログラムを書くことができます。
また、FT2232HにはMulti-Protocol Synchronous Serial Engine (MPSSE)と呼ばれる、高機能エンジンが組み込まれており、ホスト側の処理機能に依存しない、極めて高度なタイミング処理が可能になっています。MPSSE機能を活用すれば、インターフェースプロトコルの理想値に近いスピードで、通信することが可能になります。
このFT2232Hが持つ潜在的な力を引き出すためには、下記の3つの資料を読みこなす必要があります。
- FT2232H Dual High Speed USB to Multipurpose UART/FIFO IC (データシート, ハードウェア・マニュアル)
- Software Application Development D2XX Programmer's Guide (プログラマーズ・マニュアル)
- Command Processor for MPSSE and MCU Host Bus Emulation Modes (アプリケーション・ノート)
本連載は、読者の方々にこれらの資料を実際に読んで頂くことから始まります。英語に抵抗がある方、難解なデータシートに拒否反応が出てしまう方、様々だと思いますが、心配ありません。私自身がそうでした。
幸い、技術英語ほど明快なものはありません。高校英語の素養があれば、十分に理解することができます。そして、最初は苦しくとも、ひとつのデバイスをとことん理解することが出来れば、まるで登山のように視界は一気に開けます。
繰り返しますが、"手順の疑似体験"では、決して視界が開けることはありません。自分の足で登り切って、初めて見えてくるものがあるのです。データシートはそのための地図であり、ブレッドボードI/Oプログラミングは羅針盤なのです。