1. はじめに
最近の機器は、市場へ投入された後にセキュリティの向上や機能改善を目的としたソフトウェアのアップデートを実行できるものが数多く存在しています。 そのアップデート方法はいくつかありますが、大きく分けると機器が設置された現場へ赴き人手により実行されるものと遠隔から自動で実行されるものがあります。
人手によるアップデート方法は、対象となる機器の設置場所まで作業者が移動してパソコンや保守用の専用端末、もしくはSDカードやUSBメモリーなどの記憶媒体を機器に接続して作業します。この場合、作業者はアップデート作業開始から終了まで対応が必要です。
一方、遠隔から自動でアップデートが実行されるものについては、Ethernet、LTE、Wi-Fiなどを利用してネットワークに接続できる環境が必要です。あらかじめネットワーク機能やアップデートを行う仕組みを用意する必要がありますが、アップデートの実行要件を満たせば開始から終了まで自動で行うことができます。
ただし、アップデートを必要とするすべての機器にネットワーク環境や遠隔からアップデートする仕組みが備わっているわけではありません。このような問題はNEQTOが提供する「Machine Driver」というサービスを利用して解決することができます。
今回はMachine Driverを使って何ができるのか?どの様な用途に使えるのか?といったご説明や実行手順についてご紹介します。
※NEQTOについてはこちらをご確認ください。
2. NEQTO Machine Driverとは?
NEQTOは遠隔からソフトウェアを更新する機能として次の3つを持っています。
① NEQTOエンジンを更新する
② neqto.jsを更新する
③ NEQTOに接続されたデバイスのソフトウェアを更新する
① NEQTOエンジンを更新する
こちらはNEQTOエンジンのFOTAです。下記リンクより、詳細をご参照ください。
- SPRESENSE – 08. ファームウェア更新方法
- STM32 Discovery – 07. ファームウェア更新方法
- NEQTO Bridge - 07. ファームウェア更新方法
- Linux-based device – 07. ファームウェア更新方法
② neqto.jsを更新する
こちらはユーザーアプリケーションを構成するneqto.jsのスクリプト更新です。
ここで、一般的なFOTAとNEQTOのFOTAの違いを説明します。
一般的なFOTAはMCU内のコード全てがアップデートの対象であり、ユーザー様のソフトウェア管理領域です。
一方、NEQTOのFOTAは、NEQTOエンジンのみがアップデートの対象であり、JIG-SAWのソフトウェア管理のための仕組みです。
NEQTOの場合のユーザー様のソフトウェア管理領域は、neqto.jsで設計されるユーザーアプリケーションに絞られます。
ユーザー様が設計する範囲が限定されることから、開発期間が短縮され開発費圧縮が実現できます。
詳細は、無料のダウンロード資料「組み込み技術の新方式!JavaScriptによるIoT開発」を参照ください!
③ NEQTOに接続されたデバイスのソフトウェアを更新する
こちらは本ブログで紹介させていただくMachine Driverに該当する機能になります。
Machine Driverとは本記事のポイントでも記載しましたが「NEQTOに接続されたデバイスに対してソフトウェアのアップデートやファイルの更新を実行できる機能」です。
Machine Driverを使用するためにはfup.jsとファイルが必要となります。
fup.jsとはMachine Driverを実行した際にどのような処理を行うかを記述したスクリプトです。このスクリプトによりNEQTO自身の制御やNEQTOに接続されたデバイスの制御を行い、ファイルを送信するなどの制御を行います。例えばNEQTOに接続されたデバイスのソフトウェアアップデートを実施する場合、ファイルに該当する部分はバイナリファイルやHEXファイルなどのプログラムファイルが該当します。
また、ファイルの種類には制約はなく、画像ファイルやテキストファイルなども扱うことができ、NEQTOに接続されたデバイスのコンフィグレーション設定、外部ディスプレイに表示させるテキストや画像ファイル、機械学習データの更新などが可能です。
3. Machine Driverの実行手順
それではMachine Driverを実際に試してみます。
今回はNEQTOエンジンを搭載したSTM32 Discovery Kitを使って、NUCLEO-L476RGでRanging sensor expansion board (以降、X-NUCLEO-53L0A1)を制御するソフトウェアのアップデートを実行します。一連の流れとしては「ノードからソフトウェアバージョン1.00から2.00へのアップデート、ノードからソフトウェアバージョンを2.00から1.00へ戻す、最後にテンプレートからMachine Driverを実行してソフトウェアバージョンを1.00から2.00に更新する」という内容を行います。
なお、ノード、テンプレートについては、こちらを参照してください。
今回実行するMachine Driverの確認方法としては、X-NUCLEO-53L0A1に搭載されている7セグメントLEDにソフトウェアバージョンを表示させてMachine Driver実行前と実行後の表示内容を確認するというものです。
3.1 構成品
STM32 Discovery Kit、NUCLEO-L476RG、X-NUCLEO-53L0A1を使用します。
3.2 接続例
今回、Machine Driverを使用してソフトウェアのアップデートを実行する際には、STMicroelectronics製のマイコンに搭載されているBootloaderを起動してファームウェアのアップデートを実行しています。その際に、NUCLEO- L476RGのコネクター:CN7から制御線としてUSART3のTXとRX、ブートモードを制御するためのBOOT0とNRST、そのほか電源とGNDをSTM32 Discovery Kitに接続する必要があります。
STM32 Discovery Kit とNUCLEO- L476RG の接続はジャンパーワイヤーなどを使い下表のように行います。
信号名 | STM32 Discovery Kit | NUCLEO- L476RG |
---|---|---|
TX | CN3-2 | CN7-2 |
RX | CN3-1 | CN7-1 |
NRST | CN3-6 | CN7-14 |
BOOT0 | CN3-7 | CN7-7 |
GND | CN2-3 | CN7-20 |
電源+5V | CN2-5 | CN7-18 |
3.3 NEQTO Consoleの設定
グループ内で使用するMachine Driverパッケージ(fup.jsとファイル)を設定します。fup.jsとはMachine Driverを実行した際にどのような処理を行うかを記述したスクリプトであり、ファイルはNEQTOに接続されたデバイスに送信するファイルまたはファイル群のことです。これらのfup.jsとファイルをテンプレートに紐づけて使用します。
なお今回はファームウェアバージョン1.00から2.00へのアップデートと2.00から1.00へ戻す操作を行うため、二つのMachine Driverパッケージを登録しています。
3.3.1 Machine Driverパッケージの登録
まずは、Machine Driverパッケージの登録を行います。
「パッケージ登録」をクリックします。
Machine Driverパッケージの登録画面ではメタデータタブとファイルタブがあります。メタデータタブではMachine Driverパッケージの名前を登録します。
ファイルタブではfup.jsとファイルを登録します。
今回はあらかじめ用意したfup.jsを使用するので「新しいfup.jsをアップロードする」をクリックします。※新規でfup.jsを作成する場合には「ブラウザで新しいfup.jsを作成する」をクリックしてください。
fup.jsファイルをドラッグ&ドロップした後に「保存」をクリックします。
保存をクリックするとパッケージとして「NUCLEO_L476_VL53L0X_1_00」が登録されます。
次に鉛筆アイコンをクリックしてファイルを登録します。
先ほどfup.jsファイルをドラッグ&ドロップしたようにファイル(NUCLEO_L476_VL53L0X_1_00.bin)をドラッグ&ドロップして保存をクリックします。
以上で1つ目のパッケージ「NUCLEO_L476_VL53L0X_1_00」の登録が完了しました。
続いて2つ目のパッケージ「NUCLEO_L476_VL53L0X_2_00」の登録を行います。
登録手順は上記と同様で登録が完了すると下図のように登録済みのパッケージが表示されます。
3.3.2 テンプレートにMachine Driverパッケージを紐づける
登録したMachine Driverパッケージはテンプレートに紐づける必要があります。
テンプレート編集画面を開き、オプションタブで「Machine Driverのパッケージ」に登録したパッケージを設定します。ソフトウェアバージョンを1.00から2.00にアップデートを行うので、ここでは「NUCLEO_L476_VL53L0X_2_00」を設定します。
保存をクリックするとテンプレートとMachine Driverパッケージの紐づけは完了です。
3.4 Machine Driverの実行
Machine Driverパッケージの登録と、テンプレートとMachine Driverパッケージの紐づけが完了し、準備が整いましたのでMachine Driverを実行してみます。
ノードの画面に移動し、画面右上カスタムメッセージ横の⋮をクリックするとメニューが表示されるので、その中のMachine Driver Update(有料)を選択します。
これでMachine Driverを実行するコマンドをNEQTOに送信できます。
しばらくするとソフトウェアバージョンが1.00から2.00にアップデートされました。
次にファームウェアバージョン2.00から1.00への戻す操作を行います。
「3.3.2 テンプレートにMachine Driverパッケージを紐づける」で実施した内容を行い、Machine Driverパッケージ「NUCLEO_L476_VL53L0X_1_00」を設定します。
この状態でMachine Driverを実行するとファームウェアバージョンは1.00が書き込まれます。実行結果は図14のファームウェア履歴をご確認ください。
また、先ほどはノードのメニューからMachine Driverを実行しましたが、テンプレートからも実行できます。テンプレートからMachine Driverを実行した場合には同じテンプレートを使用している全てのノードに対してMachine Driverを実行するコマンドを送信できます。
改めてMachine Driverパッケージ「NUCLEO_L476_VL53L0X_2_00」を設定し、テンプレートのメニューからMachine Driverを実行します。
下図はノードのメニューからMachine Driverを実行するコマンドを送信した場合とテンプレートのメニューからコマンドを送信した場合の履歴を示しています。
以上のようにMachine Driver機能を使いNUCLEO- L476RGのソフトウェアをアップデートすることができました。
NEQTOコンソール上にはコマンド履歴やファームウェア履歴が表示されるため、後から実行した内容を確認することも可能です。
4. まとめ
Machine Driverで何ができるのかについて、実際にMachine Driverを実行する手順で説明しました。また、指定したノードに対してMachine Driverコマンドを送信する他に、テンプレートに紐づけられた全てのノードに対してMachine Driverコマンドを送信する事ができること、NEQTOコンソール上に送信したコマンドやソフトウェアバージョンの履歴が表示されることについても説明しました。
今お使いの無線機能を持たない機器にNEQTOを接続することで、遠隔から制御・監視可能な機器に更新することができます。今回ご紹介したMachine Driverをご使用いただくことで、機器のソフトウェア管理も可能になります。これによりデバイスの管理や保守業務の効率化に貢献できると考えています。
Machine DriverはNEQTOがインストールされたデバイスでお使いいただけます。本内容にご興味をお持ちでしたら1台から市販で購入しお試しいただけるSTM32 Discovery KitまたはSPRESENSEでNEQTOのご利用をご検討されてみてはいかがでしょうか。
リンク
STM32 Discovery Kit [B-L4S5I-IOT01A]:STマイクロエレクトロニクス
Nucleo-64開発ボードNUCLEO-L476RG:STマイクロエレクトロニクス
Ranging sensor expansion board X-NUCLEO-53L0A1:STマイクロエレクトロニクス