XBee3の新機能を試す。(OTAファイルシステム編)

〔マイコンのトップに戻る〕
[Xbeeの実験]   [MicroPython] [PyCharm導入] [PyCharmの操作] [PyCharmで開発]


XBee(S2,S2C)シリーズについてはこちらで以前に記事にしています。
(XBee3はS2Cと殆ど操作は変わらないので、上の記事に少し追記を行っています)
今度、Digi International Inc.からXBee3が出たのであんばいをいじってみます。

XBee3は更に低消費電力/小型化し、ZigBee、802.15.4、DigiMesh、BLEなどあらゆるプロトコルを
1つのモジュールで実現しています。なので、XCTUのコンフィグレーション設定で切り替えが可能です。
新しい機能は、"MicroPython"が使えるのでプログラムが開発できて、マイコンいらずになります。
詳しい内容は、”Digi MicroPython Programming Guide”はこちらを参照しましょう。
(尚、このページの記事は、”Digi MicroPython Programming Guide”を元に作成しています)
又、"XBee3"モジュールのデータシート等はこちらからダウンロードしましょう。


《OTAファイルシステム》

[ ファイルシステムの概要 ]

XBee3 Zigbee RFモジュールファームウェアバージョン1006以降では、内蔵フラッシュメモリへの
ファイル保存がサポートされています。

注意! もともと古いファームウェアが書き込まれていたデバイスをアップグレードする場合は、
    ファイルシステムをフォーマットする必要があります。
    XCTU、ATコマンド、又はMicroPythonを使用してその初期フォーマットを行ったり、
    既存のコンテンツをいつでも消去する事ができます。

(注)ファイルシステムでXCTUを使用するには、XCTU 6.4.0以降が必要です。
FS(ファイルシステム)のFS FORMAT確認を参照し、フォーマットが完了している事を確認して下さい。

XCTUのファイルシステムマネージャでのフォーマット方法

@ XCTUメニューバーから[Tools]→[File System Mamager]を順にクリックして、
  [ファイルシステムマネージャ]ダイアログボックスを開きます。

ファイルシステムマネージャ3
[Open]アイコンをクリックし開き接続します。
("Open"すると"Close"アイコンに変わります)


A [使用する前にXBeeファイルシステムをフォーマットする必要があります。 続けたいですか?]と
  ダイアログボックスが開きます。
  [Yes]ボタンを押せばフォーマットが始まります。

フォーマット中の画面3
フォーマットが完了すると、"XBee側エリア"にデフォルトのディレクトが表示されます。

ファイルシステムマネージャ4
次回以降フォーマットする場合は、[Format]アイコンで行いましょう。


[ ディレクトリ構造 ]

XBee 3 Zigbee RFモジュールの内蔵フラッシュは、ファイルシステムの最上位ルートは /flash として
唯一のエントリです。

/flash 以外のファイルおよびディレクトリは、最上位ルートには作成できません。
/flash 内にのみ作成できます。
デフォルトでは、/flash にはMicroPythonモジュール用の"libディレクトリ"が含まれています。

[ パス ]

XBee3 Zigbee RFモジュールはその全ファイルを最上位ディレクトリ /flash に保存します。
起動時に、ATFSコマンドとMicroPythonはそれぞれそのディレクトリを現在の作業ディレクトリとして
使用します。

ファイルまたはディレクトリへのパスを指定すると、次のように解釈されます:
 ・スラッシュで始まるパスは「絶対」であり、操作可能となるには"/flash"で始まる必要があります。
 ・他の全てのパスは現在の作業ディレクトリからの相対パスです。
 ・ディレクトリ .. は親ディレクトリを参照する為、ディレクトリ"/flash/test"で"../filename.txt"を
  操作すると、ファイル"/flash/filename.txt"にアクセスします。
 ・ディレクトリ。現在のディレクトリを参照するので、コマンドATFS lsは
  現在のディレクトリ内のファイルを一覧表示します。
 ・名前の大文字と小文字は区別されないので、FILE.TXT、file.txt、FiLe.TxTは全て同じファイルを
  参照します。
 ・ファイル名とディレクトリ名は64文字に制限されており、文字、数字、ピリオド、ダッシュ、
  アンダースコアのみを含める事ができます。名前の末尾のピリオドは無視されます。
 ・ファイル又はディレクトリへの絶対パスは、最大255文字です

[ 制限事項 ]

XBee3 Zigbee RFモジュールのファイルシステムには、従来のファイルシステムと比べていくつかの
制限があります。
 ・ファイルシステム上のファイルが削除されても、それが使用していたスペースは利用されません
  使用されているスペースを再利用する唯一の方法は、ファイルシステムをフォーマットする事です。
  FS INFOコマンドは、利用可能な容量と削除されたファイルによって使用されている容量を示します。
 ・ファイルシステムは、一度に1つのファイルを書き込み用に開く事とができます
 ・ファイルが書き込み用に開かれている間、ファイルシステムは新しいディレクトリを作成できません。
 ・ファイル名を変更する事はできません。(XCTUからはできます)
 ・OTAファームウェアアップデートを実行すると、ファイルシステムの内容は失われます
  OTAファームウェアのアップデート後、全てのファイルシステムデータとバンドルされている
  MicroPythonコードは消去されます。
  ファイルシステムの実行を続けるには、OTAファームウェアの更新が完了した後に
  新しいファイルシステムをデバイスに送信する必要があります。
  OTAファームウェアのアップデート後にファイルをデバイスに保存する方法については、
  [XCTUを使用したOTAファイルシステムの更新(下記)]を参照して下さい。

[ XCTUインターフェース ]

6.4.0以降のXCTUリリースでは、[ツール]メニューにファイルシステムマネージャが含まれています。
既存のファイルやディレクトリの名前変更や削除に加えて、デバイスへのファイルのアップロードや
デバイスからのファイルのダウンロードを行う事ができます。
(エクスプローラーの様な操作感です、ファイル操作はファイルシステムマネージャを使いましょう)
ファイルシステムを実行するには、下記 [XCTUを使用したOTAファイルシステムの更新]の
1番と2番までは操作しておきましょう。
(PS. 操作しなくても動作する様です)
その機能の詳細についてはXCTU User GuideのFile System manager tool セクションを参照下さい。

[ XCTUを使用したOTAファイルシステムの更新 ]

ここまでの操作でこちらの"《パソコンと繋いでみる》"までの操作を終了していて、
XBee3の「Configuration設定画面」が表示されているものとして説明します。
尚、XCTUバージョンはV.6.4.3での説明となります。

XCTUを使用してOTAファイルシステム更新を実行するには、次の手順を使用します:
 1. 公開鍵と秘密鍵のペアを生成します。
 2. XBee 3デバイスに公開鍵を設定します。
 3. OTAファイルシステムイメージを作成します。
 4. OTAファイルシステムのアップデートを実行します。

.公開鍵と秘密鍵のペアを生成する

 XCTUには、公開鍵と秘密鍵のペアを.pemファイルに保管する為に使用できる
 ECDSA鍵ペア生成プログラムがあります。
 [ファイルシステムキーペアの生成]ダイアログにアクセスするには:
  a)XCTUメニューバーから[Tools]→[File System Mamager]を順にクリックして、
    [ファイルシステムマネージャ]ダイアログボックスを開きます。

ファイルシステムマネージャ1


  b)上に示すように[Keys]アイコンをクリックします。
  c)[ファイルシステムキーペアの生成]ダイアログで@:[Generate]ボタンをクリックします。
  d)両方のキー(A:private.pem/B:public.pem)を安全な場所に保存してダイアログボックスを
    閉じます。

ファイルシステムキーペアの生成

  e)[ファイルシステムマネージャ]ダイアログボックスを閉じます。

.XBee3デバイスに公開鍵を設定する

  a)XCTUでターゲットデバイスの「Configuration設定画面」を開き、
    ファイルシステムオプションのカテゴリに移動します。
  b)"File System Public Key"の列で、[Configure]をクリックします。

ファイルシステムオプションのカテゴリ

  c)[ファイルシステム公開鍵の構成]ダイアログボックスで、[Browse...]をクリックして、
    上記で公開鍵を保存した"public.pem"ファイルを選択します。
    これが行われると、公開鍵のHEX値がダイアログボックスの[公開鍵]セクションの下に
    表示されます。

ファイルシステム公開鍵の構成

  d)[OK]をクリックして、キーがデバイスに書き込まれる事を確認します。

 (注)これはローカルでのみ実行できます。
    現時点では、XBee3ファームウェアはファイルシステム公開鍵のリモート設定を
    サポートしていません。

.OTAファイルシステムイメージを作成する

 OTAファイルシステムイメージを作成するには:
  a)[ファイルシステムマネージャ]ダイアログボックスを開きます。
  b)OTAファイルシステムイメージの生成元となるデバイスで[Open]を開きます。
    ("Open"すると"Close"アイコンに変わります)

ファイルシステムマネージャ2

  c)[FS Image]アイコンをクリックします。
  d)表示される[署名付きファイルシステムのイメージの生成]ウィンドウで、
    [Browse...]をクリックして、秘密キーが保存されている"private.pem"ファイルを選択します。

署名付きファイルシステムのイメージの生成

  e)パスが"Private Key file:"フィールドに表示されたら、[Save]をクリックして
    "file_system_image.fs.ota"ファイルを保存します。
    ファイルが正常に生成された場合は、
    [ファイルシステムイメージが正常に保存されました]ダイアログボックスが表示されます。

.OTAファイルシステムのアップデートを実行する (この操作は行っていないm(_ _)m)

  a)ターゲットデバイスを追加するには、ソースデバイスから同じネットワーク内の無線の検出を
    クリックします。
  b)リモートデバイスで設定モードに入ります。
  c)[Update]ボタンの横にある下矢印をクリックして、[ファイルシステムの更新]を選択します。

ファイルシステムの更新方法
この[Update]ボタンの横にある矢印はリモートデバイスにしないと現れない。?
では4.の操作からはコーディネーターからのリモート操作っていうことかしら?

  d)ターゲットノードを更新する必要がある、
    OTAファイルシステムイメージ("file_system_image.fs.ota")を選択します。
  e)[開く]をクリックします。

 ファイルシステムイメージが完全に転送されてリモートデバイスにマウントされると、
 XCTUはファイルシステムが正常に更新された事を通知します。


《ファイルシステム関連ATコマンド》

ファイルシステムにアクセスするには、コマンドモードに入り、次のコマンドを使用します。
全てのコマンドは、完了するまでATコマンドプロセッサをブロックし、コマンドモード(透過モード)から
のみ機能します、APIモードやMicroPythonのxbee.atcmd()メソッドには無効です

ファイル名やディレクトリ名と同様に、コマンドでは大文字と小文字が区別されません。

ファイルシステムATコマンド操作


[ FS(ファイルシステム)]

FSはサブコマンドを含むコマンドです。
これらのサブコマンドはFSの引数です。
応答コマンドが成功すると、現在の作業ディレクトリの名前やファイルのリストなどの情報が返されます。
報告する情報がない場合はOKが返されます。
失敗した場合は、失敗したATコマンドに対する一般的なERROR応答の代わりに詳細なエラーメッセージが
表示されます。応答は、名前付きエラーコードとエラーの説明文です。

(注)エラーメッセージの正確な内容は将来変更される可能性があります。
   全てのエラーは大文字の'E'で始まり、その後に1つ以上の大文字と数字・スペース、及び
   エラーの説明が続きます。
   独自のATコマンド解析コードを書く場合は、応答の最初の文字が大文字の'E'で有るか同かを
   調べる事によって、FSコマンドの応答がエラーで有るか同かを判断できます。

FS(ファイルシステム)
 パラメータを付けずに送信すると、FSはサポートされているコマンドの一覧を表示します。

FS PWD
 現在の作業ディレクトリを表示します。現在の作業ディレクトリは常に"/"で始まり、
 起動時のデフォルトは"/flash"です。

FS CD directory
 現在の作業ディレクトリを"directory"に変更します。
 現在の作業ディレクトリ、又はディレクトリに移動できない場合はエラーを表示します。

FS MD directory
 ディレクトリ名"directory"を作成します。
 成功すればOKを、要求されたディレクトリを作成できなければエラーを表示します。

FS LS [directory]
 指定された"directory"内のファイルとディレクトリを一覧表示します。
 directoryパラメータはオプションで、デフォルトはピリオド(.)です。
 これは現在のディレクトリを表します。(上図参考)
 一覧表示は空白行(0x0D)で終わります。
 エントリは、0個以上のスペースで始まり、その後にファイルサイズ、又はディレクトリの場合は
 文字列<DIR>が続き、その後に単一の空白文字とエントリの名前が続きます。
 ディレクトリ名は、ファイルと区別する為にスラッシュ(/)で終わります。
   <DIR> ./
   <DIR> ../
   <DIR> lib/
     32 test.txt

FS PUT filename
 XBeeスマートモデムでYMODEM受信を開始し、受信したファイルを"filename"に保存します。
 YMODEM転送のブロック0にて送信されるファイル名は無視します。
 XBeeスマートモデムは、
 受信準備が整うとプロンプト:(Receiving file with YMODEM...)を送信します。
 この時点で、端末エミュレータ(Ter Term等)でYMODEM送信を開始する必要があります。
 コマンドが正しくない場合、応答はエラー応答で説明されている様にエラーになります。

FS HASH filename
 ファイルのローカルコピーに対する検証を可能にする為に、SHA-256ハッシュファイルを表示します。
 Windowsでは、コマンド certutil -hashfile test.txt SHA256 を使用してSHA-256ハッシュファイルを
 生成できます。
 MacとLinuxでは、shasum -b -a 256 test.txt を使用してください。

FS GET filename
 XBeeデバイス上で"filename"のYMODEM送信を開始します。
 送信準備が整うとプロンプト:(Sending file with YMODEM...)を送信します。
 プロンプトが送信されたら、
 ターミナルエミュレータ(Ter Term等)でYMODEM受信を開始する必要があります。
 コマンドが正しくない場合、応答はエラー応答で説明されているようにエラーになります。

FS RM file_or_directory
 "file_or_directory"で指定されたファイル又は空のディレクトリを削除します。
 "file_or_directory"が存在しない、空でない現在の作業ディレクトリ、
 又はその親ディレクトリのいずれかを参照している場合、このコマンドはエラーで失敗します。

(注)ファイルを削除しても、そのファイルが使用していたスペースは再利用されません。
   ATFS INFOコマンドを使用して、削除されたファイルによって使用されている容量を確認できます。

コンソール画面1
上の"RM"コマンドが失敗しているのは、
ATコマンドモードの10秒タイムオーバーでキー入力が終了しなかった為です。
なので、"CT"コンフィグレーション設定で30秒設定に変更して行ったのが下の実行です。
"xbee3_test.txt"は適当にPCで作成後、
"ファイルマネージャー"でドラッグ&ドロップ操作でXBee3に送りました。

FS INFO
 ファイルシステムのサイズについて報告し、使用中のバイト数、使用可能なバイト数、不良及び合計の
 マークを表示します。
 ほとんどの複数行ATコマンド出力と同様に、報告書はブランク行(0x0D)で終わります。
 出力例:
   204800 used
   695296 free
   0 bad
   900096 total

FS FORMAT confirm
 ファイルシステムをフォーマットし、デフォルトのディレクトリ構造のままにします。
 フォーマットを確認する為の最初のパラメーターとして、confirmという語を渡します。
 XBeeスマートモデムは、フォーマットが開始されると"Formatting ..."と応答し、
 終了すると"OK"とそれに続くキャリッジリターンを表示します。

[ FK(ファイルシステム公開鍵)]

FKはデバイスのファイルシステム公開鍵を構成します。
65バイトの公開鍵は、無線でダウンロードされたファイルシステムがZigbeeファームウェアと互換性の
ある有効なXBee3ファイルシステムである事を確認する為に必要です。
詳しくは、XBee3デバイスで公開鍵を設定するを参照してください。

Parameter range
有効な65バイトのECDSA公開鍵
その他の受け入れられているパラメータ:
 0 公開鍵をクリアする
 1 公開鍵の上位48バイトを返します
 2 公開鍵の下位17バイトを返します

Default
 0

(注)デフォルト値の0は、公開鍵が設定されていない為、
   全てのファイルシステムの更新が拒否される事を示します。





【きむ茶工房ガレージハウス】
Copyright (C) 2006-2019 Shigehiro Kimura All Rights Reserved.