Mbed OSで提供されるサイプレス ファームウェア – KBA228252 - Community Translated (JA)

Version 1

    Community Translated by  KoSa_1909416          Version: **

     

    Translation - English: Cypress Firmware Deliverables in Mbed OS – KBA228252

     

    この記事では、Mbed™OS向けにサイプレスから提供されるファームウェアの詳細について説明します。

    図1は、Mbed OSのアーキテクチャを示しています(出典:Mbed OS Documentation)。

    Mbed OSの概要については、https://os.mbed.com/docs/にあるドキュメントを参照してください。

     

                          図1

    p1.png

     

    この記事ではサイプレスが提供している、図1でオレンジ色で強調表示されている関連コンポーネントの詳細を説明します。

    具体的には、以下のファームウェアとなります。

     

      • ハードウェア アブストラクション レイヤー(HAL)

      • ボード サポート パッケージ(BSP)

      • Wi-Fi および BLEの実装

     

    1.ハードウェア アブストラクション レイヤー(HAL)

     

    これには、デジタル/アナログI / Oピン、I2C、UART、SPI、クワッドSPI、PWMなどの一般的な周辺機器用のドライバーが含まれます。

    ドライバーAPIの詳細については、https://os.mbed.com/docs/mbed-os/latest/apis/drivers.html を参照してください。

    使用例については、https://os.mbed.com/docs/mbed-os/latest/tutorials/index.htmlを参照してください。

    図2は、Mbed OSアプリケーションでのPSoC 6 MCU HAL、Mbed HAL、およびMbed OSドライバーの関係を示しています。

     

                図2

                               p2.png

     

    1.1 PSoC 6 MCU ペリフェラル ドライバ ライブラリ

    ペリフェラル ドライバ ライブラリ(PDL)は、PSoC 6 MCUアーキテクチャのソフトウェア開発を簡素化します。

    PDLは、レジスタの使用法とビット構造を理解する必要性を減らし、幅広い周辺機器のソフトウェア開発を容易にします。

    PDLにはMbed OS固有の情報は含まれておらず、一般的なRTOS環境で使用することができます。

    PSoC 6 MCU PDLは mbed-os\targets\ TARGET_Cypress\TARGET_PSOC6\psoc6cspディレクトリにあります。

    PDLドキュメントは PSoC 6 PDL API Reference Manual.にあります。

     

    1.2 PSoC 6 HAL

    PSoC 6 MCU HALは、PSoC 6 ペリフェラルとの高レベルのインターフェースを提供します。

    このインターフェイスは、チップ固有の機能を抽象化します。

    チップ固有の機能が必要な場合、またはパフォーマンスが重要な場合は、

    PSoC 6 MCU PDLで提供される低レベルの機能を直接使用できます。

    PSoC 6 MCU HALは、mbed-os \targets \TARGET_Cypress \TARGET_PSOC6 \psoc6cspディレクトリにあります。

     

    1.3 Mbed HAL

    異なるArm®Cortex®-Mベースのデバイス間でアプリケーションコードのシームレスな移植を可能にするために、

    Mbed OSは異なるペリフェラルを使用するためのMbed HALレイヤーを提供します。

    Mbed HAL API(ヘッダーファイル)は、\mbed-os \hal ディレクトリにあります。

    PSoC 6 MCU向けに実装したMbed HAL API(ソースファイル)は、

    \mbed-os \targets \TARGET_Cypress \TARGET_PSOC6ディレクトリにサイプレスから提供されています。

    Mbed HALのサイプレスへの実装は、主にPSoC 6 MCU HAL APIに、必要に応じてPSoC 6 MCU PDL APIに依存しています。

     

    1.4 Mbedドライバ

    Mbed OSは、共通で使用されるMCUペリフェラルのC ++ラッパーを提供します。

    これらは、\mbed-os \driversディレクトリにあります。

     

     

    2.ボード サポート パッケージ

     

    Mbed OSで、”ターゲット”とはハードウェア開発キットを指します。

    サイプレスは、すべてのMbed OS対応キット用に、

    ボード サポート パッケージ(BSP)とも呼ばれるターゲットへの実装を提供します。

    BSPの詳細を以下に示します。

     

    2.1ターゲットリスト

    すべてのパートナーがMbed OSでサポートしているターゲット(BSP)のリストと、

    それぞれの構成は、mbed-os \ targets \ targets.jsonファイルにあります。

    このファイルには、Mbed OSでサポートされているサイプレスのターゲットも含まれています。

    このファイルの詳細については、

    https://os.mbed.com/docs/mbed-os/latest/reference/adding-and-configuring-targets.htmlを参照してください。

     

    2.2ターゲット固有のBSP

    ターゲットのBSPは、\ mbed-os \ targets \ TARGET_Cypress \ TARGET_PSOC6ディレクトリにあります。

    各ターゲットには、TARGET_(ターゲット名)という命名則でディレクトリがあります。

    たとえば、図3に示すように、CY8CKIT-062-WiFi-BTのフォルダーはTARGET_CY8CKIT_062_WiFi_BTです。

     

                       図3

                  p3.png

    BSPには、ターゲット ハードウェアの初期化コード、構成設定、スタートアップコード、リンカースクリプトなどがあります。

    フォルダーで提供されるBSPファイルの情報は、以下の表になります。

     

    ファイル / フォルダ

    詳細

    cybsp_target_name.c

    cybsp_target_name.h

    ターゲットの初期化関数cybsp_init()が含まれています。

    この関数は、LED、ボタン、デバッグUARTなどのボード上のコンポーネントを初期化します。

    cybsp_types.h

    LEDやボタンなどのボード上のコンポーネントの定義が含まれています。

    これらの定義はBSP初期化コードで使用されます。

    design.modus file and

    Generated Source folder

    design.modusファイルは、BSP設定のためにBSPファイルによって使用されます。

    ターゲットハードウェアで使用されるPSoC 6 MCUホストのハードウェア構成情報を保持します。

    このファイルは、必要に応じて、ModusToolboxの「Device Configurator」ツールで表示できます。

    design.modusから生成された構成ファイルは、Generated Sourceフォルダーに格納されます。

    PinNames.h

    ボード上のインターフェイスとMCUピンのマッピングが含まれています。

    例としては、LED、ボタン、Arduinoヘッダーピン、I2C / UART / SPIインターフェイス ピンなどがあります。

    PeripheralNames.h

    PSoC 6 の機能ブロックへのMbed OSペリフェラル名のマッピングが含まれています。

    これには、UART、SPI、I2C、PWMなどが含まれます。

    PeripheralPins.c

    MCUピン、ブロック インスタンス名、およびそのブロック インスタンスに関連するピンの機能のマッピングが含まれます

    ( P1 [0]がUART_0インスタンスにマップされ、UART_RXピンとして機能するなど)。

    device folderさまざまなツールチェーンのスタートアップコードとリンカー スクリプトが含まれています

     

     

    2.3 PSoC 6 MCU CM0+ CPUイメージ

    サイプレスは、デュアルCPU PSoC 6 MCUのCortex M0+コアで実行される

    プリコンパイルされたアプリケーションイメージを提供します。

    これらのイメージは、\mbed-os \targets \ ARGET_Cypress \TARGET_PSOC6 \psoc6cm0pフォルダーにあります。

    イメージは、Cortex M4アプリケーションの一部としてコンパイルできるC言語の配列として提供されます。

    Cortex M0+アプリケーションコードは、Cortex M4リンカースクリプトによって内部フラッシュに配置されます。

    さまざまなCM0+イメージのタイプの詳細を以下に示します。

     

            TARGET_CM0P_SLEEP:このフォルダーには、CY_CORTEX_M4_APPL_ADDR = 0x10002000から

                                                        CM4コアを開始して書き込むCM0+イメージが含まれています。

     

     

    3. Wi-FiとBLEの実装

     

    図4は、PSoC 6 MCUのWi-FiおよびBLEプロトコル実装のレイヤーと、

    MBed OSのCYW43xxxベースのソリューションを示しています。

     

     

     

                                                     図4

                       pastedImage_31.png

     

    CYW43xxxのWANサブシステムは、SDIOインターフェースを介してPSoC 6 MCUと通信します。
    SDIOインターフェイスは、SDIO_CMD、SDIO_CLK、およびSDIO_DATA [3:0]の6つの信号で構成されています。
    CYW43xxxのWLANサブシステムには、802.11物理層(PHY)と802.11メディアアクセス制御(MAC)層が含まれています。
    ネットワークスタックを含むWi-Fiプロトコルの上位層、および上位層プロトコル(IP、TCP / UDP、HTTP、MQTTなど)は、PSoC 6 MCUで処理されます。

     

    CYW43xxxのBluetoothサブシステムは、フロー制御が有効になっている(TX、RX、RTS、CTS)HCI UARTインターフェースを介してPSoC 6 MCUと通信します。
    CYW43xxxのBluetoothサブシステムは、無線とリンク層を含むBLEスタックのコントローラー部分を実装します。
    BLEスタックのホスト部分、BLEプロファイル、およびアプリケーションコードはPSoC 6 MCUに常駐します。

     

    SDIOおよびUARTインターフェースに加えて、PSoC 6 MCUとCYW43xxxデバイスの間には6つの制御信号があります。
    これらには、電力制御信号(WL_REG_ON、BT_REG_ON)、CYW43xxxデバイスウェイクアップ信号(WL_DEV_WAKE、HOST_DEV_WAKE)、
    およびPSoC 6 MCUホストウェイクアップ信号(WL_HOST_WAKE、BT_HOST_WAKE)があります。
    これらの制御信号、SDIO、およびUARTインターフェースの詳細については、CYW43xxxデバイスのデータシートを参照してください。

     

    次のセクションでは、Wi-FiとBLEに関連するサイプレスファームウェアの詳細について説明します。

     

     

    3.1 Wi-Fi ファームウェア

     

    3.1.1 ホスト ドライバー  (WHD)
    Wi-Fi ホスト ドライバー (WHD)は、ホストMCU (PSoC 6 MCU) で実行されるドライバー ファームウェアであり、
    通信インターフェース(通常、SDIOインターフェースに限定されません)を使用して、

    CYW43xxxデバイスのWLANサブシステムとインターフェースします。
    WHDは、ホストMCUソフトウェアフレームワークの上位層で使用できるWLAN APIを提供します。
    これらには、スキャン、ジョイン、SoftAPなどのAPIがあります。
    サイプレスは、Mbed OSの一部としてWHDファームウェアを提供しています。
    mbed-os \ targets \ TARGET_Cypress \ TARGET_PSOC6 \ TARGET_WHDフォルダーにあります。

     

    WHDフォルダーには、以下に示す他のリソースも含まれています。

       • \TARGET_WHD \resources \firmware : CYW43xxxデバイスのWLANファームウェア AN225347

       • \TARGET_WHD \resources \nvram : ハードウェアプラットフォームに対応するNVRAMファイル。

           このファイルには、RF構成やアンテナ設定などのボードハードウェア構成設定が含まれています。

     

     

    3.1.2イーサネット MAC (EMAC)

    イーサネット MAC(EMAC)WHDからMbed Ethernet MAC(EMAC)へのドライバーインターフェイスは、

    mbed-os \ features \ netsocket \ emac-drivers \ TARGET_WHDフォルダーに保持されます。

    WiFiのEMACドライバーの詳細については、

    https://os.mbed.com/docs/mbed-os/v5.13/porting/ethernet-port.html を参照してください。

     

     

    3.1.3 LWIP ネットワーク スタック

    Wi-Fi接続をサポートするボードは、mbed-os \ features \ lwipstack \ mbed_lib.jsonファイルに適切な設定で追加する必要があります。

    Wi-Fi機能を備えたサイプレスキットのLWIPスタック設定がこのファイルに追加されました。

     

     

    3.1.4ネットワーク ソケット API

    IPネットワーキングのAPIがソケットAPIです。

    ソケットAPIは、トランスポート層であるOSIレイヤー4に関連しています。

    Mbed OSでは、ソケットAPIが抽象化され、TCPやUDPなどのさまざまなプロトコルをサポートしています。

    Mbed OSネットワークソケットAPIについては、

    https://os.mbed.com/docs/mbed-os/latest/apis/network-socket.htmlを参照してください。

     

     

    3.1.5 ネットワーク インターフェイス API

    ソケットには、ソケットを作成する必要があるネットワーク インターフェイスを示すインスタンスが必要となります。

    ネットワーク インターフェイスは、基盤となるソケット操作を実装するネットワークスタックを提供します。

    ネットワーク インターフェイス、アプリケーションがネットワーク構成を指定するために使用する制御APIでもあります。

    Mbed OSネットワークインターフェイスAPIの詳細については、

    https://os.mbed.com/docs/mbed-os/latest/apis/network-interfaces.htmlを参照してください。

     

     

    3.2 BLEファームウェア

    CYW43xxx Wi-Fi / BTコンボデバイス(CYW43012、CYW4343W)には、

    デュアルモードBluetoothの無線とコントローラー機能が含まれています。
    これらのコンボデバイスのBluetoothサブシステムは、HCI UARTインターフェースを介してPSoC 6 MCUホストとインターフェースし、

    BLEホストスタックはPSoC 6 MCUで実行されます。
    Mbed OSはクラシックBluetoothをサポートしていません。
    サイプレスのBLE実装とCordio BLEスタックの間の抽象化レイヤーは、

    mbed-os \features \FEATURE_BLE \targets \TARGET_Cypressにあります。

     

    Arm Mbed BLEはBLE_APIとも呼ばるMbed OS用のBluetooth Low Energyソフトウェアソ リューションです。
    開発者はこれを使用して、新しいBLE対応アプリケーションを作成できます。
    Mbed OSのBLE_APIは、プラットフォーム上のBLEコントローラーとインターフェースします。
    これは、BLEスタックの複雑さをC ++の抽象化の背後に隠し、BLE対応のすべてのMbedプラットフォームと互換性があります。
    BLE APIの詳細については、https://os.mbed.com/docs/mbed-os/latest/apis/ble.htmlを参照してください。