
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
AnyCloudアプリケーションの外部フラッシュにWi-Fiファームウェアを配置する - KBA230802 - Community Translated (JA)
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-Place(XIP)機能を利用しています。このブロックは、QSPIメモリデバイスとのインターフェースをサポートします。C言語の配列形式で利用可能なWi-Fiファームウェアは、リンカー属性「section」を使用してリンカーセクション「.cy_xip」に配置されます。.cy_xipセクションからのデータは、Programmerによって外部フラッシュにプログラムされます。アプリケーションは、Wi-Fiインターフェースを初期化する前に、QSPIインターフェースを初期化し、XIPモードを有効にする必要があります。XIPモードでは、SMIFブロックはCPUからのメモリアクセスを0x18000000(XIP領域)から始まるアドレスにQSPI転送に変換するため、アクセスはCPUに対して透過的です。このアプローチでは外部メモリとのインターフェースとなるAPIを提供するシリアルフラッシュライブラリを利用します。
このアプローチは、mtb-example-anycloud-wifi-scanコード例とPSoC 62S3 Wi-Fi BTプロトタイピングキット(CY8CPROTO-062S3-4343W)をターゲットとして使用してデモを行っております。このキットには、512 KBのフラッシュを備えたPSoC 6 MCUと、QSPIインターフェースをサポートする256 KBのSRAMおよびCYW4343W接続デバイスが含まれています。このキットには、64 MB(512 Mbit)QSPI 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_D0、CYBSP_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を指定したくない場合は、MakefileのTARGET変数の値をCY8CPROTO-062S3-4343Wに更新できます。
コマンドターミナルで、アドレス0x18000000から始まるXIP領域で示される外部メモリが消去され、プログラムされていることがわかります。
9.コード例のREADME.mdの指示に従って、コード例を実行します。シリアル端末を8N1、115200ボー設定のKitProg3 COMポートに接続することで、Wi-Fiスキャン結果をすばやく確認できます。