1 Reply Latest reply on May 7, 2020 5:16 PM by JuyoungJ_06

    Community Translation - Cypress Firmware Deliverables in Mbed OS – KBA228252

    KoSa_1909416

      Hi,
      I tried to translate this KBA228252 into Japanese.
      https://community.cypress.com/docs/DOC-18173


      ----------------------------------------------------------------
      タイトル:Mbed OSで提供されるサイプレス ファームウェア

       

      この記事では、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を参照してください。

       

      ----------------------------------------------------------------

       

      Best Regards,

      Sakagami