mbedはネットワークとの親和性も高く、世界各地で様々なアプリケーションに用いられています。
例えば、少し離れた位置に設置されたmbedのファームウェアアップデートを考えた場合、わざわざパソコンに接続してアップデートするのは少し面倒です。
そこで、ここではクラウド上にあるHTTPサーバにファームウェアのアップデーターを用意するだけで、自動的にmbedが自身のファームウェアをアップデートすることのできるクラスを設計実装しました。
これを使えば、遠隔地にあるmbedのファームウェアアップデートも思いのままです。

mbed側はHTTPサーバに設置されたファームウェアバージョンと自身が持つファームウェアバージョンと比較して、HTTPサーバ上にあるファームウェアの方が新しい場合にダウンロードして自己リセットをかける仕組みです。
10
ロギングをtrueに設定するとログファイルも生成されます。動作を確認したい場合に便利です。

25
FirmwareUpdater fwup("http://mbed.org/media/uploads/shintamainjp/", "firm", true);
シンプルなインターフェースでファームウェアアップデートを提供します。
#include "mbed.h"
#include "FirmwareUpdater.h"
#include "EthernetNetIf.h"
EthernetNetIf eth;
FirmwareUpdater fwup("http://mbed.org/media/uploads/shintamainjp/", "firm", true);
// There are 2 files for the firmware.
// 1. firm.txt : firmware version file.
// 2. firm.bin : firmware binary file.
void check_newfirm() {
if (fwup.exist() == 0) {
printf("Found a new firmware.\n");
if (fwup.execute() == 0) {
printf("Update succeed.\n");
printf("Resetting this system...\n\n\n\n\n");
fwup.reset();
} else {
printf("Update failed!\n");
}
}
}
int main(void) {
eth.setup();
check_newfirm();
// Your application is here.
}
バージョンの検出はローカルファイルシステムとサーバ上で必要になります。 もし、バージョンサフィックスを走査するならば沢山の時間が必要です。 また、バージョンが大量にある場合には更に多くの時間を必要とします。 これらを避ける目的でテキストファイルを設置することにしました。
mbed.orgにアップロード可能なファイルは拡張子の制限があります。 mbed.orgをアップデート用サーバとして利用することができるようにするためです。
これはmbedのLocalFileSystemの制約から来ています。 mbedのLocalFileSystemを使ってプログラムから書き込む場合 1.「8+3ファイル名であること。」 2.「タイムスタンプが付かないこと。」 の制約を考慮する必要があります。 mbedは自身のローカルストレージに新しいバイナリが投入された事を以下のように判定します。 1.バイナリファイル.binを走査する。 2.そのバイナリの更新日を検査する。 3.バイナリが新しければ書き込みを実行する。 これを先ほどの制約と照らし合わせると以下の事がわかります。 ・タイムスタンプが付かないので、同名のファイルでは更新を検知できない。 ・タイムスタンプが付かないので、手動でパソコンなどからコピーしたファイルの方が必ず新しい。 そこで、このライブラリでは ・手動でコピーしたバイナリファイル.binが最新と検知されると機能を提供できないため、バイナリファイル.binは全て削除する。 ・同名ファイルでファームウェアをダウンロードした場合、タイムスタンプが変化しないためmbedが更新を検知できない。これを回避するためにファイル名にバージョンサフィックスを加える。 としました。
これはmbedのLocalFileSystemの制約から来ています。 他の「よくある質問」の情報もご覧下さい。
これはmbedのLocalFileSystemの制約から来ています。 他の「よくある質問」の情報もご覧下さい。
あなたのページの「Add new notebook page」"を選択します。ダイアログの「Browse」ボタンを押します。
File browserの「Upload file」を押します。
ターゲットファイルを選択してください。
![]()
Please log in to post a comment.