アプリケーションを作成する

この章では、USB Hostコンポーネントのソフトウェア構成と、USB Hostアプリケーションを作成するための使用方法について説明します。

USBホストコンポーネントは、USBデバイスを接続できるマイコンシステムのソフトウェア開発を簡素化します。 USB Host Component の属性は、

  • USB 2.0 仕様に準拠。
  • USB ホストに接続する HID、MSC、CDC、およびカスタム USB デバイス クラスをサポートします。
  • Support for control, interrupt and bulk transfer types.

RTE Components

RTE ComponentsとマイクロコントローラのUSBホストペリフェラル(USB Controller)の関係を下図に示します。 RTE Componentsはコンフィギュレーションファイルとユーザーコードのテンプレートを提供します。 コンフィギュレーション・ファイルは、RTEコンポーネント、ハードウェア・インターフェース、メモリ・リソース、およびUSBホスト・パラメータを設定します。

usb_host_blocks_config_files.png

USB Host Structure

USB Host として機能するマイクロコントローラー アプリケーションを作成する手順は次のとおりです。

  • USB Host Driver を有効にし、設定します。
  • USB Middleware をマイコンの USB ペリフェラルに接続する USB Host を設定します。
  • USB Host コンポーネントの Resource Requirements に従ってシステムリソースを設定します。
  • 接続されたUSBデバイスのパラメータを設定します。
  • さまざまなUSBデバイスクラスをサポートするために提供されるコードテンプレートを使用して、アプリケーションコードをインプリメントします。
  • RTE コンポーネントの選択

    RTE コンポーネントの選択はいくつかのステップで行われます:

    1. USB Component から:
      • USB 通信に必要な基本機能を提供する USB:CORE を選択します:
      • USB:Host を ‘1’ に設定します。
      • USBクラス(HID/MSC/CDC/Custom Class)のサポートを選択します。
    2. From the Drivers Component:
      • Select a appropriate USB Host driver suitable for your application.
    3. From the Device Component:
      • Additional device specific drivers may be required according to the validation output.たとえば、HID Class Deviceだけをサポートするには USB:Host:HID を選択します。
    4. CMSIS Component:
      • CMSIS:CORE を選択して、プロセッサへのコア インターフェイスを提供します。
      • CMSIS:RTOS または CMSIS:RTOS2 を選択して、アプリケーションに必要な適切なものを選択します。
    USBH_RTE.png

    RTE Component Selection

    USB Driver and Controller

    USB Host Driverとマイクロコントローラの正しい設定が必要となる。 具体的には、

    • Drivers Component で選択した USB Host Driver は、通常 RTE_Device.h という設定ファイルでコンフィギュレーションされます。 このファイルには複数のオプションがありますが、通常は、このドライバに関連する USB ホスト周辺機器を有効にすれば十分です。
    • マイクロコントローラの USB コントローラは、通常、特定のクロック設定を必要とします。 マイコンのUSBコントローラは、通常、特定のクロック設定が必要です。

    USB Host Configuration

    The USBH_Config_n.c file contains additional settings for the specific USB Host:

    • The Driver Number is set according to the selected USB Controller.The USB Host Configuration for the USBH_Config_n.c file contains additional settings for the USB Host.
    • USBホスト設定ファイル。

    • マイクロコントローラによっては、異なるハードウェアコントローラインタフェースを使用することができます。

    使用可能なすべての設定の詳細なリストについては、「設定」を参照してください。

    システムリソース設定

    USBホストコンポーネントを適切に動作させるには、いくつかのシステム構成設定が必要です。 その要件とは、

    • 追加のスタックサイズ512バイトです。 これはデバイスのファイル(Stack_Size)で設定できます。
    • USBデバイスコンポーネントは、CMSIS-RTOSスレッドを使用します。 RTX v5を使用する場合、すべてのリソースが静的に割り当てられるため、RTXの設定を変更する必要はありません。 RTX v4を使用する場合は、ファイル内の以下の設定を変更する必要があります。
      • Imprease of the Number of concurrent running user threads by the threads required by USB Host
      • Increase of threads with user->sounding user->sounding user->sounding user->sounding ユーザー スレッド数: USB ホストが必要とするスレッドの数だけ。USB Hostが必要とするスレッド数で、ユーザーが提供するスタックサイズの合計を増加させる
      • USB Hostが必要とするスレッドサイズで、ユーザーが提供するスタックサイズの合計を増加させる
      • Enable User Timers

      詳細については、以下を参照してください。 USB Hostコンポーネントの「リソース要件」をご確認ください。

      Attachable USB Devices の設定

      USBH_Config_HID.h, USBH_Config_MSC.h, USBH_Config_CDC.h, USBH_Config_CustomClass.h では、USB ホストがサポートする同時接続 USB デバイスの数を指定することができます。 これは、USBデバイスの装着のためにアプリケーションに確保されるメモリ量に影響します。

      User Code Implementation

      ファイルは、USB ホストでさまざまな USB デバイス クラスをサポートするための関数テンプレートを提供します。 利用可能な関数は、USB Host Component の Reference セクションで説明されています。 これらのルーチンは、デフォルトとは異なる機能が必要な場合、マイクロコントローラー アプリケーションのニーズに合わせて変更することができます。

      テンプレート名 目的
      USBH_MSC.c MSC デバイスのサポートに必要な関数です。 テンプレートはこちらで確認できます。
      USBH_PL2303.c Prolific PL2303 USB to serial RS232 アダプターをサポートするために必要な関数です。 テンプレートは、ここで見つけることができます。
      USBH_User_CustomClass.c 任意の USB デバイス クラスをサポートするために必要な関数です。 テンプレートはこちらでご覧になれます。

      デバッグ

      USB Host Component はライブラリ形式で配布されており、直接コードをデバッグすることができません。

      Manage Run-Time Environment (実行環境の管理) ウィンドウで、USB:CORE ソフトウェア コンポーネントに対して以下のバリアントを選択できます。 以下のイベントレコーダーサポートは、この variant の設定と使用方法を説明します。

    • Release: この variant は追加のデバッグコードを含んでいません。

    下図は、Debug variant の選択を示しています。

    usbh_debug_variant.png

    USB Host:Debug Events は、USB Device Component で実装されたイベントを説明します。

    Event Recorder Support

    は、プログラムの動的実行に可視性を提供する強力なツールです。

    USB Host Component は、Event Recorder 用の幅広い Debug Event のセットを生成し、Event Recorder とインターフェイスするために必要なインフラを実装します。

    イベント レコーダーを使用するには、イベント生成サポート付きのイメージを作成する必要があります。

    1. : RTE 管理ダイアログで USB:CORE ソフトウェア・コンポーネントの Debug バリアントを選択します。
    2. : RTE 管理ダイアログで Compiler:Event Recorder ソフトウェア・コンポーネントを有効にします。
    3. CMSIS-RTOS2 RTX v5 が使用されていれば、アプリケーションコードでその代わりに機能をコールし、イベントレコーダが確実に初期化されていることを確認します。
    4. Event Recorder Configuration: If necessary, adjust default Event Recorder configuration.
    5. Build the application code, download it to the target hardware and start debug session.

    Now, when the USB Host generates event information, it can be viewed in .

    Event Recorder Configuration

    This section provides the configuration settings for the Event Recorder. 使用には、USB:CORE ソフトウェア コンポーネントの debug variant が必要です。詳細については、Event Recorder Support を参照してください。

    USB Event Generation Configuration

    USB:CORE debug variant を選択すると、プロジェクトにファイル USB_Debug.c が追加されます。 このファイルを使用して、USBコア、ドライバ、およびデバイスクラスのイベント生成構成を個別に設定します。 このファイルは、USB Device および Host コンポーネントで使用できます。

    USBH_USB_Debug_c.png

    USB_Debug.c file for event generation configuration

    各モジュールのイベント生成設定には、以下の設定があります。

    • Off はモジュールによってイベントが生成されないことを意味します
    • Errors はモジュールによってエラーイベントのみが生成されることを意味します
    • Errors + API はモジュールによってエラーおよび API 呼び出しイベントが生成されることを意味します
    • All はモジュールによってすべての利用できるイベントが生成されることを意味します。

    イベントID

    USBホストコンポーネントは、以下のイベントIDを使用します。

    コンポーネント イベントID
    USBH_Core 0xB0
    USBH_Driver 0xB1
    USBH_CC 0xB2
    USBH_CDC 0xB3
    USBH_HID 0xB4
    USBH_MSC 0xB5