AnyCloudアプリケーションの外部フラッシュにWi-Fiファームウェアを配置する - KBA230802 - Community Translated (JA)

Version 1

    Community Translated by NoTa_4591161         Version: **

     

    Translation - English: Placing the Wi-Fi Firmware Into External Flash in an AnyCloud Application - KBA230802

     

    AnyCloud SDKに基づくWi-Fiアプリケーションは、内部フラッシュが小さいPSoC 6 MCU(たとえば、512 KBのフラッシュを備えたPSoC 6 MCU)に簡単に適合しない場合があります。Wi-Fiアプリケーションイメージには、起動時にWi-FiデバイスにロードされるWi-Fiファームウェアイメージが含まれています。Wi-Fiファームウェアを外部NORフラッシュに配置するようにアプリケーションを構成することで、アプリケーションのフラッシュ消費量を削減できます。

     

    たとえば、CYW4343WデバイスのWi-Fiファームウェアのサイズは約420 KBです。したがって、PSoC 6 MCU + CYW4343W用に構築されたアプリケーションのサイズを同じ量だけ削減できます。Wi-Fiファームウェアは、WiFiホストドライバーWHD)内のWiFi_Host_Driver/resources/firmware/COMPONENT_<part_number>ディレクトリにあります。<part_number>は、接続機器の部品番号になります(例:4343W)。

     

    このKBAで説明されているアプローチは、PSoC 6 MCUのシリアルメモリインターフェイス(SMIF)ブロック(別名QSPI)のExecute-In-PlaceXIP)機能を利用しています。このブロックは、QSPIメモリデバイスとのインターフェースをサポートします。C言語の配列形式で利用可能なWi-Fiファームウェアは、リンカー属性「section」を使用してリンカーセクション「.cy_xip」に配置されます。.cy_xipセクションからのデータは、Programmerによって外部フラッシュにプログラムされます。アプリケーションは、Wi-Fiインターフェースを初期化する前に、QSPIインターフェースを初期化し、XIPモードを有効にする必要があります。XIPモードでは、SMIFブロックはCPUからのメモリアクセスを0x18000000XIP領域)から始まるアドレスにQSPI転送に変換するため、アクセスはCPUに対して透過的です。このアプローチでは外部メモリとのインターフェースとなるAPIを提供するシリアルフラッシュライブラリを利用します。

     

    このアプローチは、mtb-example-anycloud-wifi-scanコード例とPSoC 62S3 Wi-Fi BTプロトタイピングキット(CY8CPROTO-062S3-4343W)をターゲットとして使用してデモを行っております。このキットには、512 KBのフラッシュを備えたPSoC 6 MCUと、QSPIインターフェースをサポートする256 KBSRAMおよびCYW4343W接続デバイスが含まれています。このキットには、64 MB512 MbitQSPI NORフラッシュであるS25FL512Sも含まれています。これらの手順は、QSPI NORフラッシュをサポートする他のアプリケーションまたはターゲットキットに簡単に適合させることができます。

     

    開始する前に、オペレーティングシステムに対応するModusToolboxソフトウェアをダウンロードしてインストールします。コマンドを実行するには、LinuxおよびmacOSで任意のターミナルアプリケーションを使用できます。Windowsでは、modus-shellディレクトリ{ModusToolboxインストールディレクトリ}/tools_<version>/modus-shellに移動しCygwin.batを実行します

     

    手順

    1.コード例のクローンを作成し、作業ディレクトリをコード例のルートに変更します。

    git clone https://github.com/cypresssemiconductorco/mtb-example-anycloud-wifi-scan.git

    cd mtb-example-anycloud-wifi-scan

     

    2. CY8CPROTO-062S3-4343Wキットのボードサポートパッケージ(BSP)を追加します。

    echo https://github.com/cypresssemiconductorco/TARGET_CY8CPROTO-062S3-4343W/#latest-v1.X >> deps/TARGET_CY8CPROTO-062S3-4343W.lib

    または、library-managerツールを使用して、BSPとライブラリをコード例に追加することもできます。詳細については、ユーザーガイドを参照してください。

     

    3.シリアルフラッシュライブラリをアプリケーションに追加します。

    echo https://github.com/cypresssemiconductorco/serial-flash/#latest-v1.X >> deps/serial-flash.lib

     

    4. make getlibsコマンドを実行して、ライブラリをインポートします。

    この時点でCY8CPROTO-062S3-4343Wをターゲットにしてアプリケーションをビルドすると、リンクステージ中にセクション「.textなどのエラーメッセージがビルドに失敗し、リージョン「flash」内になくリージョン「flash」が53708バイトでオーバーフローします

     

    5. Makefile の中でDEFINES =で始まる行の後に次の行を追加します。

      DEFINES+=CY_ENABLE_XIP_PROGRAM

      DEFINES+=CY_STORAGE_WIFI_DATA=\".cy_xip\"

     

    • CY_ENABLE_XIP_PROGRAM – 外部メモリ構成を監視フラッシュ(SFlash)領域に配置して、プログラマツールが構成を読み取り、SMIFブロックを介してメモリと通信する方法を理解できるようにします。詳細については、cy_serial_flash_prog.cファイルを参照してください。
    • CY_STORAGE_WIFI_DATA =\".cy_xip\"" – Wi-Fiファームウェアを運ぶ定数配列を、外部メモリに配置される.cy_xipセクションに配置できます。

     

    6.次のヘッダーをmain.c含めます。

    #include "cy_serial_flash_qspi.h"

    #include "cycfg_qspi_memslot.h"

     

    7.次のスクリーンショットに示すコードをmain.c挿入します。

    const uint32_t bus_frequency = 50000000lu ;

    cy_serial_flash_qspi_init(smifMemConfigs [0], CYBSP_QSPI_D0CYBSP_QSPI_D1,

    CYBSP_QSPI_D2, CYBSP_QSPI_D3, NC, NC, NC, NC,

    CYBSP_QSPI_SCK, CYBSP_QSPI_SS, bus_frequency);

    cy_serial_flash_qspi_enable_xip(true;

     

      

     

    8.キットを接続し、次のコマンドを使用してファームウェアをビルドおよびプログラミングします。

    make program -j8 TARGET=CY8CPROTO-062S3-4343W

    makeコマンドで毎回TARGETを指定したくない場合は、MakefileTARGET変数の値をCY8CPROTO-062S3-4343Wに更新できます。

    コマンドターミナルで、アドレス0x18000000から始まるXIP領域で示される外部メモリが消去され、プログラムされていることがわかります。

     

     

    9.コード例のREADME.mdの指示に従って、コード例を実行します。シリアル端末を8N1115200ボー設定のKitProg3 COMポートに接続することで、Wi-Fiスキャン結果をすばやく確認できます。