STARM マイコン基板 (10)
DWM 誌 2008 年 5 月号の pp. 117 に、赤字で
誤って 0800 0000 番地に上書きすると、DFU は壊れて しまうので、注意が必要です。 この修復には JTAG デバッガが必要になります。
という記述がありますが、これを見ると、ふたつの疑問が湧いてきます。
それは、
- マイコン側の DFU ローダはプログラムなのだから、自分自身の領域を書き換える指示を検出して、拒否するようになっているのではないか?
- 0x1FFF F000 〜 0x1FFF F7FF のシステムメモリ領域には、シリアル経由のフラッシュ・ダウンローダーが、あらかじめ書き込まれているのではないか?
ということです。
1. については、 DFU ローダは公開されているようですから、プログラムを読んでみれば分かりますが、今のところは全く目を通していません。
2. については、FM音源プログラム用のシリアル MIDI インターフェースも付けたことですし、実験してみることにしました。
「BOOT0」(J2 ピン 11) 信号を +Vcc に吊って、「Flash Loader Demonstrator」プログラムを実行してみると、マイコン内部のシリアル・ダウンローダーが機能していることが確認できました。
誤操作で DFU 領域を壊してしまうのが怖いので、ダウンロード、つまりフラッシュ書き込みは実行しませんでしたが、アップロード、つまりフラッシュ内容の読み込みを実行してうまく行きました。
最初、フラッシュ領域すべての 128 K バイト読み込みを指示しても、出来上がるファイルサイズが小さくなるのに悩みましたが、どうやら 1 ページ 256 バイト全部が 0xFF だと消去後に何も書き込まれていないと判断され、スキップされるのが原因のようです。
「Flash Loader Demonstrator」は STMicro のサイトで「UM0462」をキーワードに探すと、実行ファイルとドキュメントが見つかります。
まだダウンロードは実行してないので確信は持てませんが、たとえ DFU 領域を壊しても、JTAG デバッガなしで、シリアル・ダウンロードで復旧できる見込みが立ちました。
シリアル・ダウンローダーの入力ファイルは intel HEX あるいは Motorola S19 を直接指定しますから、DFU ファイルに変換する面倒がありません。