Community Translation - Placing the Bluetooth Firmware in External Flash in AnyCloud Application - K

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
keni_4440091
Level 7
Level 7
500 replies posted 100 solutions authored 50 solutions authored

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

0 Likes
1 Solution

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でこれらの手順を実行します。:

 

  1. 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にインポートされます。
  2. IDEのProject Workspaceウィンドウで、アプリケーション名を右クリックし、ModusToolbox > Library Managerを選択します。
  3. ライブラリマネジャーでこれらの手順を実行します。

a. 「Shared」の代わりに「Local」としてbluetooth-freertosライブラリを設定します。

 ローカルライブラリの中で実行された変更は、他のアプリケーションには影響しません。

b. 外部flashと通信するために、プロジェクトにserial-flashライブラリを追加します。

 

keni_4440091_4-1630632570962.png

 

  1. 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セクションに配置することができます。

 

  1. Main.cファイルに以下のヘッダーを記述します。
    #include "cy_serial_flash_qspi.h"
    #include "cycfg_qspi_memslot.h"

 

  1. 下のスクリーンショットに示すように、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);

keni_4440091_5-1630632641758.png

 

  1. /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

 

keni_4440091_6-1630632682418.png

 

上記コードは、GNUまたはArm Cコンパイラを使用した時に動作します。他のコンパイラでは、以下に示すようにコードを修正してください。:

 

ICCARM:
#if defined(CY_STORAGE_BT_DATA)
CY_PRAGMA(location = CY_STORAGE_BT_DATA) __attribute__((used))
#endif

 

  1. これらの手順に従いキットに接続し、BTファームウェアをビルドおよびプロフラムします。

a. Project Explorerのアプリケーションプロジェクトを選択します。

b. Quick Panelで、 \<Application Name > Program (KitProg3)を選択します。アドレス0x18000000から始まるXIP領域で示される外部メモリを消去し、コマンドターミナルでプログラムします。

keni_4440091_7-1630632735855.png

 

  1. サンプルコードの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

View solution in original post

0 Likes
3 Replies
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hi, Nino-san

Confirm to work this KBA.

Thanks,

Jenna 

Jenna Jo
0 Likes

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でこれらの手順を実行します。:

 

  1. 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にインポートされます。
  2. IDEのProject Workspaceウィンドウで、アプリケーション名を右クリックし、ModusToolbox > Library Managerを選択します。
  3. ライブラリマネジャーでこれらの手順を実行します。

a. 「Shared」の代わりに「Local」としてbluetooth-freertosライブラリを設定します。

 ローカルライブラリの中で実行された変更は、他のアプリケーションには影響しません。

b. 外部flashと通信するために、プロジェクトにserial-flashライブラリを追加します。

 

keni_4440091_4-1630632570962.png

 

  1. 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セクションに配置することができます。

 

  1. Main.cファイルに以下のヘッダーを記述します。
    #include "cy_serial_flash_qspi.h"
    #include "cycfg_qspi_memslot.h"

 

  1. 下のスクリーンショットに示すように、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);

keni_4440091_5-1630632641758.png

 

  1. /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

 

keni_4440091_6-1630632682418.png

 

上記コードは、GNUまたはArm Cコンパイラを使用した時に動作します。他のコンパイラでは、以下に示すようにコードを修正してください。:

 

ICCARM:
#if defined(CY_STORAGE_BT_DATA)
CY_PRAGMA(location = CY_STORAGE_BT_DATA) __attribute__((used))
#endif

 

  1. これらの手順に従いキットに接続し、BTファームウェアをビルドおよびプロフラムします。

a. Project Explorerのアプリケーションプロジェクトを選択します。

b. Quick Panelで、 \<Application Name > Program (KitProg3)を選択します。アドレス0x18000000から始まるXIP領域で示される外部メモリを消去し、コマンドターミナルでプログラムします。

keni_4440091_7-1630632735855.png

 

  1. サンプルコードの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

0 Likes
IFX_Publisher2
Community Manager
Community Manager
Community Manager
1000 replies posted First like given 750 replies posted

Hi,  Nino san,

Confirmed to receive this KBA.

Thank you for your contribution.

Thanks,
Bindu

0 Likes