- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear supporter
I want to translate the following KBA. Please confirm to my work.
Placing the Bluetooth Firmware in External Flash in AnyCloud Application - KBA232468
Regards,
Nino
Solved! Go to Solution.
- Labels:
-
BT firmware
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Jenna
The following shows the Japanese version for the targeted KBA.
Please confirm and double check.
Regards,
Nino
-------------------------------------------------------------
AnyCloudアプリケーションで外部FlashにBluetoothファームウェアを配置- KBA232468
Version: **
質問:
AnyCloudアプリケーションで外部FlashにBluetoothファームウェアをどのようにして配置しますか?
回答:
AnyCloud SDKに基づくWi-FiおよびBluetoothアプリケーションは、小さな内部flashを持つPSoC 6 MCU(例えば、512 KB flashを備えたPSoC 6 MCU)には容易に適応できない場合があります。Bluetoothアプリケーションイメージは、起動時でBluetoothデバイスにロードされるBluetoothファームウェアイメージを含みます。外部NOR flashにBluetoothファームウェアを配置するアプリケーションを構成することで、アプリケーションのflash消費を削減できます。
Bluetoothファームウェアは、以下のディレクトリのbluetooth-freertosにあります。:
bluetooth-freertos/firmware/COMPONENT_<part_number> directory.
ここで: <part_number> = 接続デバイスの部品番号 (例えば、 4343W).
このKBAで説明されているアプローチは、PSoC 6 MCUのシリアルメモリインターフェース(SMIF)ブロック(つまりQSPI)のExecute-In-Place(XIP)機能を使用します。Cアレイの形式で利用可能なBluetoothファームウェアは、リンカー属性「section」を使用してリンカーセクション「.cy_xip」に設置します。「.cy_xip」セクションからのデータは、プログラマーにより外部flashにプログラムされます。アプリケーションは、Bluetoothインターフェースを初期化する前にQSPIインターフェースを初期化する必要があり、XIPモードを有効にする必要があります。XIPモードでは、SMIFブロックは、CPUからQSPI転送で0x18000000(XIP領域)から開始するアドレスにメモリアクセスを変換します。それゆえ、アクセスはCPUに対して透過的です。このアプローチは、外部メモリとインターフェースするためのAPIを提供するserial-flashライブラリを利用します。
このアプローチは、目標として、mtb-example-anycloud-ble-battery-serverサンプルコードおよびPSoC 62S3 Wi-Fi BT Prototyping Kit (CY8CPROTO-062S3-4343W)を使用してデモンストレーションされています。PSoC 62S3 Wi-Fi BTプロトタイプキットは、QSPIインターフェースサポートおよびCYW4343W接続デバイスを備えており、512 KB flashおよび256 KB SRAMを備えたPSoC 6 MCUで構成しています。キットには、64 MB(512 Mbit) QSPI NOR flashのS25FL512Sもあります。QSPI NOR flashをサポートする任意のアプリケーション/ターゲットに対してこれらの手順で簡単に適応できます。
開始する前に、オペレーティングシステムに対応するModusToolboxソフトウェアをダウンロードし、インストールします。外部flashにBTファームウェアを配置するためにModusToolbox用のEclipse IDEでこれらの手順を実行します。:
- README.mdファイルの「Using the Code Example - In Eclipse IDE for ModusToolbox (手順 1-5)」セクションの手順に従って、サンプルを複製します。この記事のhttps://github.com/cypresssemiconductorco/mtb-example-anycloud-ble-battery-server 例を参照します。手順2のCY8CPROTO-062S3-4343W Board Support Package (BSP)を使用します。プロジェクトはMTB IDEにインポートされます。
- IDEのProject Workspaceウィンドウで、アプリケーション名を右クリックし、ModusToolbox > Library Managerを選択します。
- ライブラリマネジャーでこれらの手順を実行します。
a. 「Shared」の代わりに「Local」としてbluetooth-freertosライブラリを設定します。
注 ローカルライブラリの中で実行された変更は、他のアプリケーションには影響しません。
b. 外部flashと通信するために、プロジェクトにserial-flashライブラリを追加します。
- DEFINES=で始まるラインの後のMakefileに以下のコードを追加します。
DEFINES+=CY_ENABLE_XIP_PROGRAM
DEFINES+=CY_STORAGE_BT_DATA=\".cy_xip\"
CY_ENABLE_XIP_PROGRAM は、外部メモリ構成を監視flash(Sflash)領域に配置できます。これにより、プログラマーツールは構成を読み、SMIFブロックを介してメモリと通信する方法を理解できます。詳細はcy_serial_flash_prog.c ファイルを参照してください。
CY_STORAGE_BT_DATA=\".cy_xip\""は、BTファームウェアを搭載した定数配列を,外部メモリに配置される.cy_xipセクションに配置することができます。
- Main.cファイルに以下のヘッダーを記述します。
#include "cy_serial_flash_qspi.h"
#include "cycfg_qspi_memslot.h"
- 下のスクリーンショットに示すように、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);
- /AnyCloud_BLE_Battery_Server_External_Flash/libs/bluetooth
freertos/firmware/COMPONENT_4343W/w_bt_firmware_controller.c.に置かれているw_bt_firmware_controller.c ファイルの“const uint8_t brcm_patchram_buf[] = {” ラインの上に以下のコードを追加してください。
注 これらのファイルは、共有ファイルとローカルファイルの2つが存在する可能性があるため、ファイルの場所は重要です。「ローカル」ファイルを選択してください。
#if defined(CY_STORAGE_BT_DATA)
__attribute__((section(CY_STORAGE_BT_DATA))) __attribute__((used))
#endif
上記コードは、GNUまたはArm Cコンパイラを使用した時に動作します。他のコンパイラでは、以下に示すようにコードを修正してください。:
ICCARM:
#if defined(CY_STORAGE_BT_DATA)
CY_PRAGMA(location = CY_STORAGE_BT_DATA) __attribute__((used))
#endif
- これらの手順に従いキットに接続し、BTファームウェアをビルドおよびプロフラムします。
a. Project Explorerのアプリケーションプロジェクトを選択します。
b. Quick Panelで、 \<Application Name > Program (KitProg3)を選択します。アドレス0x18000000から始まるXIP領域で示される外部メモリを消去し、コマンドターミナルでプログラムします。
- サンプルコードのREADME.mdの命令に従ってサンプルコードを実行します。ログを確認するためには、8N1, 115200ボーの設定を使用してKitProg3 COMポートにシリアル端子を接続します。
追加リソース
- PSoC 6 メモリアーキテクチャの詳細はPSoC 6 TRMを参照してください。
- シリアルメモリインターフェースの詳細はAN228740を参照してください。
Labels Other
Tags: bluetooth bluetooth programming cyw43xxx external flash psoc 6 qspi Add tags
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Nino-san
Confirm to work this KBA.
Thanks,
Jenna
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Jenna
The following shows the Japanese version for the targeted KBA.
Please confirm and double check.
Regards,
Nino
-------------------------------------------------------------
AnyCloudアプリケーションで外部FlashにBluetoothファームウェアを配置- KBA232468
Version: **
質問:
AnyCloudアプリケーションで外部FlashにBluetoothファームウェアをどのようにして配置しますか?
回答:
AnyCloud SDKに基づくWi-FiおよびBluetoothアプリケーションは、小さな内部flashを持つPSoC 6 MCU(例えば、512 KB flashを備えたPSoC 6 MCU)には容易に適応できない場合があります。Bluetoothアプリケーションイメージは、起動時でBluetoothデバイスにロードされるBluetoothファームウェアイメージを含みます。外部NOR flashにBluetoothファームウェアを配置するアプリケーションを構成することで、アプリケーションのflash消費を削減できます。
Bluetoothファームウェアは、以下のディレクトリのbluetooth-freertosにあります。:
bluetooth-freertos/firmware/COMPONENT_<part_number> directory.
ここで: <part_number> = 接続デバイスの部品番号 (例えば、 4343W).
このKBAで説明されているアプローチは、PSoC 6 MCUのシリアルメモリインターフェース(SMIF)ブロック(つまりQSPI)のExecute-In-Place(XIP)機能を使用します。Cアレイの形式で利用可能なBluetoothファームウェアは、リンカー属性「section」を使用してリンカーセクション「.cy_xip」に設置します。「.cy_xip」セクションからのデータは、プログラマーにより外部flashにプログラムされます。アプリケーションは、Bluetoothインターフェースを初期化する前にQSPIインターフェースを初期化する必要があり、XIPモードを有効にする必要があります。XIPモードでは、SMIFブロックは、CPUからQSPI転送で0x18000000(XIP領域)から開始するアドレスにメモリアクセスを変換します。それゆえ、アクセスはCPUに対して透過的です。このアプローチは、外部メモリとインターフェースするためのAPIを提供するserial-flashライブラリを利用します。
このアプローチは、目標として、mtb-example-anycloud-ble-battery-serverサンプルコードおよびPSoC 62S3 Wi-Fi BT Prototyping Kit (CY8CPROTO-062S3-4343W)を使用してデモンストレーションされています。PSoC 62S3 Wi-Fi BTプロトタイプキットは、QSPIインターフェースサポートおよびCYW4343W接続デバイスを備えており、512 KB flashおよび256 KB SRAMを備えたPSoC 6 MCUで構成しています。キットには、64 MB(512 Mbit) QSPI NOR flashのS25FL512Sもあります。QSPI NOR flashをサポートする任意のアプリケーション/ターゲットに対してこれらの手順で簡単に適応できます。
開始する前に、オペレーティングシステムに対応するModusToolboxソフトウェアをダウンロードし、インストールします。外部flashにBTファームウェアを配置するためにModusToolbox用のEclipse IDEでこれらの手順を実行します。:
- README.mdファイルの「Using the Code Example - In Eclipse IDE for ModusToolbox (手順 1-5)」セクションの手順に従って、サンプルを複製します。この記事のhttps://github.com/cypresssemiconductorco/mtb-example-anycloud-ble-battery-server 例を参照します。手順2のCY8CPROTO-062S3-4343W Board Support Package (BSP)を使用します。プロジェクトはMTB IDEにインポートされます。
- IDEのProject Workspaceウィンドウで、アプリケーション名を右クリックし、ModusToolbox > Library Managerを選択します。
- ライブラリマネジャーでこれらの手順を実行します。
a. 「Shared」の代わりに「Local」としてbluetooth-freertosライブラリを設定します。
注 ローカルライブラリの中で実行された変更は、他のアプリケーションには影響しません。
b. 外部flashと通信するために、プロジェクトにserial-flashライブラリを追加します。
- DEFINES=で始まるラインの後のMakefileに以下のコードを追加します。
DEFINES+=CY_ENABLE_XIP_PROGRAM
DEFINES+=CY_STORAGE_BT_DATA=\".cy_xip\"
CY_ENABLE_XIP_PROGRAM は、外部メモリ構成を監視flash(Sflash)領域に配置できます。これにより、プログラマーツールは構成を読み、SMIFブロックを介してメモリと通信する方法を理解できます。詳細はcy_serial_flash_prog.c ファイルを参照してください。
CY_STORAGE_BT_DATA=\".cy_xip\""は、BTファームウェアを搭載した定数配列を,外部メモリに配置される.cy_xipセクションに配置することができます。
- Main.cファイルに以下のヘッダーを記述します。
#include "cy_serial_flash_qspi.h"
#include "cycfg_qspi_memslot.h"
- 下のスクリーンショットに示すように、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);
- /AnyCloud_BLE_Battery_Server_External_Flash/libs/bluetooth
freertos/firmware/COMPONENT_4343W/w_bt_firmware_controller.c.に置かれているw_bt_firmware_controller.c ファイルの“const uint8_t brcm_patchram_buf[] = {” ラインの上に以下のコードを追加してください。
注 これらのファイルは、共有ファイルとローカルファイルの2つが存在する可能性があるため、ファイルの場所は重要です。「ローカル」ファイルを選択してください。
#if defined(CY_STORAGE_BT_DATA)
__attribute__((section(CY_STORAGE_BT_DATA))) __attribute__((used))
#endif
上記コードは、GNUまたはArm Cコンパイラを使用した時に動作します。他のコンパイラでは、以下に示すようにコードを修正してください。:
ICCARM:
#if defined(CY_STORAGE_BT_DATA)
CY_PRAGMA(location = CY_STORAGE_BT_DATA) __attribute__((used))
#endif
- これらの手順に従いキットに接続し、BTファームウェアをビルドおよびプロフラムします。
a. Project Explorerのアプリケーションプロジェクトを選択します。
b. Quick Panelで、 \<Application Name > Program (KitProg3)を選択します。アドレス0x18000000から始まるXIP領域で示される外部メモリを消去し、コマンドターミナルでプログラムします。
- サンプルコードのREADME.mdの命令に従ってサンプルコードを実行します。ログを確認するためには、8N1, 115200ボーの設定を使用してKitProg3 COMポートにシリアル端子を接続します。
追加リソース
- PSoC 6 メモリアーキテクチャの詳細はPSoC 6 TRMを参照してください。
- シリアルメモリインターフェースの詳細はAN228740を参照してください。
Labels Other
Tags: bluetooth bluetooth programming cyw43xxx external flash psoc 6 qspi Add tags
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Nino san,
Confirmed to receive this KBA.
Thank you for your contribution.
Thanks,
Bindu