updater概要mbedはネットワークとの親和性も高く、世界各地で様々なアプリケーションに用いられています。離れた位置に設置されたmbedのファームウェアアップデートを考えた場合、わざわざパソコンに接続してアップデートするのは少し面倒です。そこで、ここではクラウド上にあるHTTPサーバにファームウェアのアップデーターを用意するだけで、自動的にmbedが自身のファームウェアをアップデートすることのできるクラスを設計実装しました。これを使えば、遠隔地にあるmbedのファームウェアアップデートも思いのままです。mbed側はHTTPサーバに設置されたファームウェアバージョンと自身が持つファームウェアバージョンと比較して、HTTPサーバ上にあるファームウェアの方が新しい場合にダウンロードして自己リセットをかける仕組みです。通常どおりプログラムをmbedのローカルストレージにダウンロードします。http://mbed.org/media/uploads/shintamainjp/firm.binファームウェアバージョンテキストをmbedのローカルストレージに設置します。http://mbed.org/media/uploads/shintamainjp/firm.txt10ロギングをtrueに設定するとログファイルも生成されます。動作を確認したい場合に便利です。サーバ側の設定HTTPサーバにファームウェアバイナリを設置します。http://mbed.org/media/uploads/shintamainjp/firm.binHTTPサーバにファームウェアバージョンテキストを設置します。true);動作の説明ライブラリ関数existサーバ上のバージョンテキストとローカルファイルシステム上のバージョンテキストを比較します。サーバ上のバージョンテキストに書かれた数値がローカルファイルシステム上のそれよりも大きい場合、0を返します。ライブラリ関数executeファームウェアバイナリを一時ファイルにダウンロードします。ファームウェアバージョンファイルを一時ファイルにダウンロードします。ファームウェアバイナリとバージョンテキストファイルの一時ファイルへのダウンロードが成功したら、ローカルファイルシステム上でそれらを.binと.txtにコピーします。ライブラリ関数resetmbed本体にリセットをかけます。インターフェースシンプルなインターフェースでファームウェアアップデートを提供します。}ライブラリFirmwareUpdaterhttp://mbed.org/users/shintamainjp/libraries/FirmwareUpdater/latest/docs/classFirmwareUpdater.htmlよくある質問どうしてバージョン情報テキストファイルなど用意するのですか?バージョンサフィックスを走査すれば良いのではないですか?バージョンの検出はローカルファイルシステムとサーバ上で必要になります。バージョンサフィックスを走査するならば沢山の時間が必要です。バージョンが大量にある場合には更に多くの時間を必要とします。これらを避ける目的でテキストファイルを設置することにしました。してバージョン情報テキストファイルに.txtという拡張子を付けるのですか?mbed.orgにアップロード可能なファイルは拡張子の制限があります。mbed.orgをアップデート用サーバとして利用することができるようにするためです。して.binファイルにバージョンサフィックスを付けるのですか?これはmbedのLocalFileSystemの制約から来ています。1.「8+3ファイル名であること。2.「タイムスタンプが付かないこと。」の制約を考慮する必要があります。mbedは自身のローカルストレージに新しいバイナリが投入された事を以下のように判定します。1.バイナリファイル.binを走査する。2.そのバイナリの更新日を検査する。3.バイナリが新しければ書き込みを実行する。これを先ほどの制約と照らし合わせると以下の事がわかります。・タイムスタンプが付かないので、同名のファイルでは更新を検知できない。・タイムスタンプが付かないので、手動でパソコンなどからコピーしたファイルの方が必ず新しい。・手動でコピーしたバイナリファイル.binが最新と検知されると機能を提供できないため、バイナリファイル.binは全て削除する。・同名ファイルでファームウェアをダウンロードした場合、タイムスタンプが変化しないためmbedが更新を検知できない。これを回避するためにファイル名にバージョンサフィックスを加える。してアプリケーション名は8文字以下でなければならないのですか?これはmbedのLocalFileSystemの制約から来ています。他の「よくある質問」の情報もご覧下さい。mbed上の全ての.binファイルを消してしまうのですか?これはmbedのLocalFileSystemの制約から来ています。他の「よくある質問」の情報もご覧下さい。page」"を選択します。ダイアログの「Browse」ボタンを押します。file」を押します。ターゲットファイルを選択してください。高信頼性システムへの適用は御遠慮下さい。原理的にシステムにとって一時的に危険な瞬間が存在します。この処理の間に失敗した場合、通常のファームウェアダウンロード作業を行う必要があります。