SSブログ

EFM8UB1のファクトリーブートローダー

前回からのつづき。

EFM8UB1のRev.CシリコンからはファクトリーブートローダーとしてCDCブートローダーが入っている(8kバイト品はUART、それ以上はUSB CDC)。
マニュアルとしてAN945 (pdf)に記載があるものの、いまいち要領を得ないのでまとめておく。
以下はEFM8UB10F16G-Cでの手順。

・書き込みツール
書き込みツール一式は下記のリンクからダウンロードできる。
www.silabs.com/documents/public/example-code/AN945SW.zip
Windowsクライアントでは、この中のTools→Windowsフォルダにある efm8load.exe と hex2boot.exe を使う。

・CDCブートローダへのエントリ
C2Dピンを'L'にした状態でリセット(C2CKピンをL)または電源投入すると、ブートローダーに入る。
なので、ユーザープログラム側でC2Dピンを使っている(特に入力)と、意図しないタイミングでブートローダーにブランチする場合がある。CDCブートローダー前提ならC2Dピンはユーザープログラムでは未使用にしておく。

この状態でUSBを接続すると、WindowsからはHIDクラスのデバイスとして認識される。VCPではないのでCOMポートとしては見えない。

・ブートコードへの変換
CDCブートローダーで書き込む場合、プログラムコードを.efm8ファイルという形式に変換する必要がある。
変換には hex2boot.exe を使う。
Simplicity IDEでプロジェクトをビルドしてできる.hexファイルを次のようにして.efm8ファイルに変換する。-oオプションは省略できないので注意。

> hex2boot hoge.hex -o hoge.efm8


・EFM8への書き込み
用意した.efm8ファイルを efm8load.exe でMCUへ書き込む。

> efm8load hoge.efm8

エラーがなければプログラムが書き込まれた後、実行される。
以降は、リセット時C2Dピンが解放または'H'レベルであれはユーザープログラムが優先して実行される。

もしCDCブートローダーエントリされていなければ

> efm8load foo.efm8
ERROR: Unable to open port!

というようなエラーがでる。


EFM8UB1のピン処理高速SPI信号 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。