Mbed OSで提供されるサイプレス ファームウェア – KBA228252 - Community Translated (JA)
- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
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
この記事ではサイプレスが提供している、図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
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
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
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を参照してください。