第 9 章 実行に当たっての問題
16.4 WinDriver USB Device の開発プロセス
16.4.3 デバイス ファームウェアの開発
ウィザードでファームウェアコードを生成した後、必要に応じて、コードを修正できます。開発が効率的に行 えるように、ライブラリおよび生成した WinDriver USB Device ファームウェア API を使用して、必要なファー ムウェアの機能を実装します。
USB ファームウェアの API および生成されるコードは、リファレンスで説明します。
注意: WinDriver ライブラリおよび生成したデバイスのファームウェアコードを修正する場合、コードがター ゲットハードウェアの仕様を満たしていることを確認してください。
z FX2LP CY7C68013A ボードの場合: EZ-USB_TRM.pdf - 特に、セクション 15.6「Endpoint
Configuration」を参照してください。このドキュメントは、Cypress\USB\Doc\FX2LP\ ディレクト リにあります。次の URL からオンラインでも入手できます。
http://www.keil.com/dd/docs/datashts/cypress/fx2_trm.pdf
z PIC18F4550 ボードの場合: 39632b.pdf (特に、セクション 17.3「USB RAM」および 17.4「Buffer Descriptors and the Buffer Descriptors Table」を参照してください。このドキュメントは、次の Web サ イトから入手できます。
http://ww1.microchip.com/downloads/en/DeviceDoc/39632b.pdf
z PDIUSBD12 の場合: PDIUSBD12-08.pdf。次の Web サイトから入手できます。
http://www.semiconductors.philips.com/pip/PDIUSBD12D.html#datasheet
z Silicon Laboratories C8051F320 ボードの場合: C8051F32xRev1_1.pdf (特に、セクション 15.5
「FIFO Management」および 15.11 「Configuring Endpoints 1-3」を参照してください。このドキュメン トは、Silabs\MCU\Documentation\Datasheets\ ディレクトリにあります (Silicon Laboratories IDE をインストールした場合)。また、次の Web サイトからも入手できます。
http://www.keil.com/dd/docs/datashts/silabs/c8051f32x.pdf
16.4.3.1 DriverWizard で生成される USB デバイス ファームウェア ファイル
デバイスのファームウェアコードを生成するとき、DriverWizard は xxx_FW ディレクトリに次のファイルを作 成します:
z periph.c: WinDriver\wdf\<vendor>\<hardware>\include\ periph.h ヘッダー ファイル (例: WinDriver\wdf\cypress\FX2LP\include\ periph.h) [16.3.1] で宣言さ れる、デバイス用の USB 周辺機器機能をサポートする関数の実装を含む C のソース ファイル。関 数の実装は、DriverWizard で定義した特定のデバイス設定により行われます。
z DriverWizard で定義した情報を利用する、デバイス記述子情報:
○ Cypress EZ-USB FX2LP CY7C68013A ハードウェアの場合:
wdf_dscr.a51: アセンブリ ファイル
○ Microchip PIC18F4550、Philips PDIUSBD12 および Silicon Laboratories C8051F320 ハード ウェアの場合:
wdf_dscr.c および wdf_dscr.h (Microchip および Silicon Laboratories): C ファイル z build.bat: ファームウェア コードのビルド用のコマンドライン ユーティリティ
z xxx.Uv2/mcp/wsp/mak: ([Select Code Generation Options] ダイアログボックスでコンパイラ / IDE を選択した場合) 指定されたコンパイラ / IDE (Keil uVision / Microchip MPLAB / Silicon Laboratories IDE / Turbo C) でコードをビルドするための project / make ファイル
z Microchip PIC18F4550 ボードの場合:
○ xxx.lkr: リンカ ファイル
○ ボード用の Mass Storage ファームウェアを生成する場合:
− wdf_xxx_hw.c: ハードウェア固有のストレージ メディア アクセス関数
(18F4550\include\classmsd\wdf_disk.h ヘッダー ファイルで宣言される [16.3.2]) の実装用 stub を含む C ソース ファイル
次のファイルは、WinDriver USB Device ファームウェアライブラリのソースコードを含みます。これらのファイ
ルは、WinDriver USB Device ツールキットの登録版 (評価版と登録版の違いについては、セクション
16.4.3.2 を参照) を使用している場合にのみ生成されます。
z main.c: ファームウェアのメインのエントリ ポイントの実装を含む C ソース ファイル。Silicon Laboratories C8051F320 ハードウェアおよび Philips PDIUSBD12 ハードウェアをベースとしたデバ イスの場合、必要な USB 割り込みサービス ルーチン (USB_ISR() (Silicon Laboratories) / UsbISR() (Philips)) の実装も含まれます。
注意: Philips コードの ISR の実装は、プラットフォームに依存します。デフォルトの実装は
D12-ISA (PC) Eval Kit で、ターゲットは x86 です。その他のマイクロコントローラをサポートするよう
に、実装を変更することができます (セクション 16.4.3.2 を参照)。
z wdf_<vendor>_lib.c (Cypress、Microchip および Silicon Laboratories の場合。
例: wdf_cypress_lib.c) / <hardware>_lib.c (Philips の場合。例: d12_lib.c): 選択さ れたターゲットハードウェア用の WinDriver USB Device ファームウェアライブラリ関数の実装を含 む C ソースファイル
z Microchip PIC18F4550 ボードの場合:
○ wdf_usb9.c: wdusb9_.h ヘッダーファイル [16.3.2] で宣言される、ファームウェアライブ
ラリ USB ディクスリプタ関数の実装を含む C ソースファイル
○ ボード用の Mass Storage デバイスファームウェアを生成する場合:
− wdf_msd.c: WinDriver\wdf\microchip\18F4550\include\class\msd\
wdf_msd.h ヘッダーファイル [16.3.2] で宣言される、Mass Storage Class ファームウェ ア関数の実装を含む C ソースファイル
z Philips PDIUSBD12 の場合:
○ d12_ci.h および d12_ci.c: PDIUSBD12 コマンドインターフェイスの一般的な定義と関 数の宣言を含むヘッダーファイル (d12_ci.h)、およびコマンド関数の実装を含む C ソース ファイル (d12_ci.c)
○ d12_io.c: d12_io.h ヘッダー ファイル [16.3.2] で宣言される、ハードウェア固有のファー ムウェア ライブラリ関数の実装を含む C ソース ファイル
16.4.3.2 DriverWizard で生成されたファームウェアのビルド
生成されたファームウェアコードをビルドするには、次のいずれかの方法を使用します。
z コマンドラインから生成された build.bat ユーティリティを実行する
z サポートされている IDE (Cypress および Silicon Laboratories の場合は Keil uVision。Microchip の場合は Microchip MPLAB。Silicon Laboratories の場合は Silicon Laboratories IDE) 用のプロ ジェクトファイルの生成を選択した場合、この IDE を使用して生成されたプロジェクトをビルドする ビルド出力は、 xxx.hex ファームウェアファイル (Cypress、Microchip および Silicon Laboratories の場合)
/ XXX.EXE ファームウェアファイル (Philips PDIUSBD12 の場合) です。xxx はファームウェアプロジェクト
用に選択した名前です。
注意: 生成される build.bat およびコンパイラ固有のプロジェクト ファイルまたは make ファイルは、
WinDriver USB Device の登録版と評価版で異なります。また、出力も異なります。
評価版の場合、評価用ファームウェアライブラリが使用され、転送に制限 (標準のライブラリの場合は最大 25,000、Microchip PIC18F4550 Mass Storage ライブラリの場合は 1,000,000) があります ([16.3.5] を参照)。 登録版の場合、生成されたライブラリ ソース ファイルが使用され、転送に制限はありません。
Philips PDIUSBD12 ファームウェアライブラリおよびこのライブラリを利用するサンプルは、ISA カードを使用
して PDIUSBD12 ベースのボードを x86 に接続する D12-ISA (PC) Eval Kit をターゲットとしています。この
ため、作成されるファームウェアは、DOS 実行ファイルです。登録版の WinDriver USB Device ユーザー は、他のマイクロコントローラをサポートするために、ライブラリの x86 ハードウェア固有の部分 (特に、
d12_io.h、d12_io.c [16.4.3.1] および main.c のISR) とサンプルソースコードを変更し、サポートされ ている方法でそのマイクロコントローラ用のファームウェアをビルドおよびダウンロードすることができます。
Windriver USB Device ツールキットの評価期間中に作成したファームウェア プロジェクト ファイル
(xxx.wdp) がある場合は、WinDriver USB Device ツールキットを登録後に、これらのファイルを開いてウィ
ザードでファームウェアコードを再生成し、新しい登録版の build.bat とプロジェクトファイルを作成して
ください。それから、これらのファイルを使用して登録版のフル機能のファームウェアをビルドし、ファーム ウェアをデバイスにダウンロードしてください。
16.4.3.3 デバイスへのファームウェアのダウンロード
ファームウェアをビルドした後、ハードウェアのベンダーのファームウェアダウンロードツールを使用して ファームウェアをハードウェアにダウンロードします。
注意: WinDriver USB ドライバ開発キットの登録版または評価版を使用している場合、サンプル ファーム ウェア ダウンロード アプリケーション (Cypress: WinDriver\ cypress\ firmware_sample\WIN32\
download_sample.exe、Microchip: WinDriver\ microchip\ pic18f4550\
bootloader_sample\WIN32\bootloader_demo.exe) を使用して、Cypress EZ-USB FX2LP CY7C68013A ファームウェアおよび標準のMicrochip PIC18F4550 ファームウェアをダウンロードできます。