楽天市場
[無料でホームページを作成] [通報・削除依頼]

番外 LPC810 タイニーブートローダーの自己書き換え

拙作LPC810タイニーブトローダーの自己書き換えプログラムをご紹介します。

使い方

1.前準備
ブートローダーの自己書き換えにはTeraTermを使用します。
TeraTermの設定を以下のように変更します。 Transmit Delay で2msec/char のディレイを設定。
img_20140408-181628.jpg

2.ブートローダーを起動し、書き換えプログラムをダウンロード&書き込み
 (最初のブートローダーのボーレートは19200bps)
img_20140408-181951.jpg

3.書き込みが終了したら、TeraTermを立ち上げ、ボードをリセットする。
 TeraTerm上に次のメッセージが表示されます。
img_20140408-182231.jpg

4.書き換えたいブートローダーのHEXファイルをTeraTerm上にドラッグ・ドロップ
 ボーレートを9600に変更したブートローダー(HEXファイル)をドラッグ・ドロップします。
 書き換えが終了すると、Done.メッセージが表示され、次のような画面となります。
img_20140408-182636.jpg

5.TeraTermを終了し、Tiny Avr/Pic bootloader+ を起動
 ブートローダーと通信するボーレートを書き換えたため、19200ボーでは認識されません。
img_20140408-183043.jpg

6.ボーレートを9600ボーに変更します。
 9600ボーで認識され,確かにブートローダーが変更されたことが確認できます。
 これはボーレートを変更した例ですが、通信に使用するポートを変更する場合も同様の操作です。
img_20140408-183153.jpg


[プログラムで行っていること]
1. UARTをTeraTerm用に9600ボーに設定する。
2. メッセージを表示し、書き換えたいブートローダーのHEXファイルがドラッグ・ドロップされるのを待つ。
3. HEXファイル中の0x00000000~0x000000BFのベクター領域のデータをRAMにコピー
4. RAMは0x10000000~0x100000BFを使用
5. HEXファイル中の0x00000EC0~0x00000EFFのユーザープログラムへのジャンプ領域のデータをRAMにコピー
6. RAMは0x100000C0~0x100000FFを使用
7. HEXファイル中の0x00000F00~0x00000FFFのブートローダー本体のデータをRAMにコピー
8. RAMは0x10000100~0x100001FFを使用
9. 0000:001Bのチェックサムを算出し、RAM上で001C:001Fのデータを上書き
10. IAP機能を用いてフラッシュを消去、新しいブートローダーのデータを書き込む。



ソース一式のダウンロード先

Bequest333のページ(別館)

http://hp.vector.co.jp/authors/VA058115/

https://drive.google.com/file/d/1D3Nv18OvrHOVaKvAmVII5gM-e6X-9roT/view?usp=drivesdk

ダウンロードしたZIPファイルは圧縮プロジェクトとしてLPCXpressoからインポートすることが可能です。




















































.