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

cross mob
KoKi_1693136
Level 5
Level 5
Distributor - Marubun (Japan)
5 solutions authored 25 replies posted First solution authored

Hi,

I tried to translate following one into Japanese.

Programming CYBLE_013025 Module using HCI Commands - KBA229136

https://community.cypress.com/docs/DOC-18719

=========================

タイトル:HCIコマンドを使ったCYBLE_013025のプログラミング

質問:

外部のホストからHCIコマンドを使い、(WICED SMART SDKベースで)CYBLE_013025 BLE moduleをプログラムするにはどのようにしたらいいでしょうか。

回答:

前提として、以下のようなCYBLE_01325モジュールのプログラミングオプションをご確認ください。

CYBLE_013025はシリアルフラッシュメモリを搭載しています。CYBLE_013025のフラッシュにプログラムするには、以下の手順に従ってください。

注:全てのバイト列は16進数で表記されています。もし、期待されたレスポンスを受け取れなかった場合は、ダウンロードが失敗していると推測されます。

1.復旧

リセットの間、SDAをGNDにプルダウンし、その後、信号をリリースすることで、CYBLE_013025モジュールをリカバリーモードにしてください。

2.初期化

シリアル接続が確立すると、ホストはHCI_RESETコマンドを発行しデバイスからの正常なレスポンスを期待します。

Hostからの送信:

  01 03 0C 00

期待されるレスポンス(100ms以内):

  04 0E 04 01 03 0C 00

成功した場合、ホストはDOWNLOAD_MINIDRIVERコマンドを発行します。

Host からの送信:

  01 2E FC 00

期待されるレスポンス(100ms以内):

  04 0E 04 01 2E FC 00

3.Minidriverのロード

ホストは、デバイスに対して一度にMinidriverコードのNバイト(N ≤ 251 bytes)を渡しながら、WRITE_RAMコマンドを送り始めます。

CYBLE_013025 モジュール用のMinidriverはこちらです。 here.

CYBLE 013025.zip をダウンロードし、ファイルを解凍して、Platforms\CYBLE_013025_EVAL\uart_DISABLE_EEPROM_WP_PIN1.hex.を開いてください。

Host からの送信:

  01 4C FC nn xx xx xx xx yy yy yy yy yy yy …

  • xx xx xx xxは、32ビットの宛先デバイスRAMの絶対address(リトルエンディアン)です。
  • yy yy yyは、デバイスRAMにロードされるNバイトのペイロードです。
  • nn = 4+N(メッセージサイズは、ペイロードサイズにアドレスの4バイトを足した大きさです)

期待されるレスポンス(100ms以内):

  04 0E 04 01 4C FC 00

全てのMinidriverのコードが正しく転送されれば、ホストはMinidriverコードの最初のアドレスにLAUNCH_MINIDRIVERコマンドを発行します。

Host からの送信:

  01 4E FC 04 xx xx xx xx

  • xx xx xx xxは、Minidriverが実行を始める32ビットのデバイスRAMアドレス(リトルエンディアン)です。

期待されるレスポンス(100ms以内):

  04 0E 04 01 4E FC 00

参考として、SDKのbuildフォルダに、以前にダウンロードしたプロジェクトのログを参照することができます。(例えば、C:\Users\...\Documents\WICED\WICED-Smart-SDK-2.2.3\WICED-Smart-SDK\build\find_me-CYBLE_013025_EVAL-rom-ram-Wiced-release\download.txt)もしくは、chipload toolを使って、ダウンロードログのフロー(Downloading into the CYBLE-013025-00 module – KBA222505)を参照することができます。

4.消去

この時点で、ホストはMinidriverと会話していて、NVRAMの最初のアドレスにCHIP_ERASEコマンドを発行しています。ファームウェアの約束事として、EEPROMとシリアルフラッシュは、アドレスFF000000から始まることが想定されています。

Host からの送信:

  01 CE FF 04 00 00 00 FF

CHIP_ERASEコマンドが発行されると、ホストはメモリが消去されるまで数秒待つ必要があります。

この待ち時間の間、デバイスは断続的に(一秒に一回ほど)プログレスメッセージ(FF 01 CE)を送り続けます。このメッセージは消去中であることを示しています。

消去が終了すると、デバイスは以下を送ります。

  0E 04 01 CE FF 00

5.ファームウェアと設定データのロード

実際のファームウェアアップデートのフェーズになります。ホストは、新しいファームウェアもしくは設定データを含んだWRITE_RAMレコードをふたたび書きます。書き込み先はNVRAMなので、WRITE_RAMコマンドの宛先アドレスはFF000000以上です。

WICED SMART SDKで特定のアプリケーション向けに作られたhexファイルを使ってください。CYBLE_013025モジュールには、フラッシュにダウンロードするため0xFF000000から始まるアドレスを使ってください。

Host からの送信:

  01 4C FC nn xx xx xx xx yy yy yy yy yy yy …

  • xx xx xx xxは、32ビットの宛先デバイスRAMの絶対address(リトルエンディアン)です。
  • yy yy yyはデバイスRAMにロードされるNバイトのペイロードです。
  • nn = 4+N(メッセージサイズは、ペイロードサイズにアドレスの4バイトを足した大きさです)

SFlashの場合、N ≤ 251 bytes

EEPROMの場合、N ≤ 64 bytes

期待されるレスポンス(200ms以内):

  04 0E 04 01 4C FC 00

ファームウェアがCRC32検査をサポートするなら、ロードされたバイトの連続したブロックが完成したら、ホストはファームウェアにREAD_CRCコマンドを発行し、返ってきたCRC32の値をホストのコードにより計算された値と比較します。CRCの読み出しは以下のように行われます。

Host からの送信:

  01 CC FC 08 xx xx xx xx yy yy yy yy

  • xx xx xx xxは、CRCで計算されるメモリの範囲の、最初の32ビットのデバイスアドレス(リトルエンディアン)です。
  • yy yy yy yyは、そのメモリの範囲の長さです。

期待されるレスポンス(200ms以内):

  04 0E 08 01 CC FC 00 zz zz zz zz

  • zz zz zz zzはファームウェアによって計算されたCRC32の値です。

CRC32は、標準的な計算の一つです。

http://en.wikipedia.org/wiki/Cyclic_redundancy_check の、初期値が0xEDB88320の部分を参照ください)

6.新しい内容の検証

もしダウンロード中にCRCチェックを行っていない場合、検証のフェーズはオプションですが強く推奨します。ここでは、ホストがREAD_RAMコマンドを発行し、書き込み中に破損していないか確認するために、デバイスからのデータを書き込んだ値と比較します。

Host からの送信:

  01 4D FC 05 xx xx xx xx nn

  • xx xx xx xxは、32ビットのデバイスRAMリードアドレス(リトルエンディアン)です。
  • yy yy yy yyは、読みだした長さです。

期待されるレスポンス(200ms以内):

  04 0E nn 01 4D FC 00 yy yy yy …

  • yy yy yy は読みだしたNバイトで、nn = 4+Nです。

7.ホストが全てのアプリケーションと設定データをRAMに書き込み、検証された後、デバイスのリブートを指定する特別な宛先アドレスと共にLAUNCH_RAMコマンドを送ります。LAUNCH_RAM コマンドの例は下記になります。

  01 4E FC 04 xx xx xx xx

  • xx xx xx xxは、CPUブランチの宛先アドレスを表します。CYBLE_013025モジュールでは、0x00000000です。

期待されるレスポンス(200ms以内):

  04 0E 04 01 4E FC 00

1 Reply
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hello,

We receive your translation, it will be published to KBA to Community.

After upload, You will receive the points as the word of KBA.

Due to the current volume of works (waiting review, etc.), Please bear with me for the delayed the response.

It could be delayed, but it will be processed soon.

Thanks for your contribution to CDC!

Will keep you update the status.

Thanks,

Jenna Jo

Jenna Jo