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

PIC18F Jタイプ ブートローダー


PIC18F25J11などのJタイプのデバイスでは以下の特徴があります。
①消去ページが512ワード(1024バイト)と大きい。
②Configure情報をフラッシュ領域の最後部に記述する必要がある。

JタイプのデバイスではConfigure bitへの直接書き込みは許されず、リセットがかかると、
フラッシュメモリに記述したConfigure情報をConfigure bitに自動的に書き込みます。

これらの特徴をふまえて、Tiny AVR/PIC Bootloader+で使用できるファームウエアを作成しました。


<考えかた>
Tiny AVR/PIC Bootloader+のファームウエアでは先頭4ワードにユーザープログラムへのジャンプコード
を記述する必要がある。

ブートローダー本体への書き込みを禁止し、かつ、ユーザープログラムへのジャンプコード
を自由に書き込めるように、従来は消去ページの境界にブートローダー本体を配置すれば良かった。(図1参照)

img_20131013-122748.jpg

しかし、Jタイプのデバイスに上記手法を適用するとブートローダー本体のサイズ(128ワード程度)に比べて
消去ページのサイズが大きいため多くの無駄が発生する。

そこで以下の方法を適用した。(図2参照)

img_20131013-122841.jpg

ユーザープログラムの書き換え手順は以下のようになる。

①現在のブートローダーをRAM領域にデータとしてコピー。
②Configureビットを更新する場合、Tiny AVR/PIC Bootloader+ホストから更新データを転送し、RAMを書き換える。
③最後から2番目の消去ページを消去。
④消去したページにブートローダー本体を書き込み、プログラムカウンターをここに移動。
⑤最後の消去ページを消去。
⑥消去したページにブートローダー本体を書き込み、プログラムカウンターをここに移動。
⑦ Tiny AVR/PIC Bootloader+ホストからデータを転送し、 ユーザープログラムとジャンプコードを書き込む。

最後から2番目の消去ページにはブートローダーの残骸が残るが、ユーザープログラム書き込み時に
必要に応じて消去、上書きされる。

最後の消去ページはブートローダー本体の直前まで消去されているので、ユーザープログラムへのジャンプコード
を自由に書き込むことが出来る。

このファームウエアはTiny_Avr-Pic_Bootloader+ (v0.8.2)から掲載されています。































.