Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

HCIコマンドを使ったCYBLE_013025モジュールのプログラミング - KBA229136 - Community Translated (JA)

HCIコマンドを使ったCYBLE_013025モジュールのプログラミング - KBA229136 - Community Translated (JA)

ChaitanyaV_61
Employee
Employee
50 questions asked 25 likes received 25 sign-ins

Community Translated by KoKi_1693136          Version: **

Translation - English: Programming CYBLE_013025 Module using HCI Commands - KBA229136

質問:

外部のホストからHCIコマンドを使い、(WICED SMART SDKベースで) CYBLE_013025 BLEモジュールをプログラムする方法を教えてください。

回答:

前提として、以下の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のロード

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

     CYBLE_013025 モジュール用のMinidriverファイルはこちら​​から入手できます。

     .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コマンドが発行されると、ホストはメモリが消去されるまで数秒待つ必要があります。

     この待ち時間の間、デバイスは断続的に (1秒に1回ほど) 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 byte

EEPROMの場合、N ≤ 64 byte

     期待されるレスポンス (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は、標準的な計算の1つです。(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リードアドレス(リトルエンディアン)です。
  • nn = Nで、 読み出すバイト数です。

     期待されるレスポンス (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

665 件の閲覧回数
寄稿者