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

極小ブートローダー PIC10F322

PIC10F322用のブートローダーは Tiny AVR/PIC Bootloader+で、ソフトウエアシリアルを用いて84ワードのサイズで実現できました。

PIC10F322はプログラム領域が512ワードと小さいため更に小さなブートローダーが実現可能か検討し、
今回68ワードのブートローダーが試作できました。


<考えかた>
1.データ転送の手順見直し
Tiny AVR/PIC Bootloader+ を起動すると先ずホスト側からターゲットに向けて文字コード"0xC1"が送出され
ターゲットはこれに応えて、"自身のデバイス名とブートローダーのサイズ"が間接的に取得可能な文字コードをホストに返します。

ホストをカスタマイズしてPIC10F322専用とし、ブートローダーのサイズも固定化してしまえば、
ターゲットのファームウエア上で上記の処理が不要となり、ファームウエアのコードサイズを低減できます。

2.ハンドシェーク方式の見直し
上記カスタマイズしたブートローダーでは、ターゲットからホストへ送信する文字コードは"B"(受信エラーなし)と"N"(受信エラー発生)のいずれかになるので、これをターゲット側の特定のPINの信号レベルの変化に置き換える擬似ハンドシェークの仕様を検討しました。
ターゲットが正常に受信している間は所定のPINの信号レベルはLowのままですが受信エラーが発生すると所定のPINの信号レベルがHighに変化しホスト側にエラーが発生したことを伝えます。

ファームウエアの受信部分は従来どうりで、送信部分のみ簡略化しますので、ファームウエア上でソフトウエアシリアル送信のプログラムコードが不要となり、ファームウエアのコードサイズを低減できます。

3.データフォーマット
ホストから転送するデータのフォーマットはTiny AVR/PIC Bootloader+と同一

[AddressH][AddressL][2*N][DataL(1)][DataH(1)]....[DataL(N)][DataH(N)][SUM]

<データ転送の手順>
img_20150112-150310.jpg


<ターゲット回路図>
シリアルポートのRXDピンは使用しません。替わりにRIピンを使用します。
img_20150112-150359.jpg

<ホストプログラム>
ホストプログラムを新規作成する実力がないので、"Tera Term"のマクロを使用してホストプログラムの機能を実現しました。
マクロプログラム作成にあたり、"Tera Term プロジェクト"の平田様にご協力いただきました。
紙面(ページ)を借りて御礼申し上げます どうもありがとうございました。

マクロの一部に次期バージョン(4.86)から追加されるTTLコマンドを使用しています。
マクロの評価と試用は"Tera Term"開発版のスナップショットで行えます。

スナップショットの場所:
http://ttssh2.sourceforge.jp/snapshot/snapshot-20150109.zip
http://ttssh2.sourceforge.jp/snapshot/snapshot-20150110.zip (XP/2000用)

<使い方>
?マクロ起動
バッチファイルへのショートカットをダブルクリック
img_20150112-150449.jpg

?転送したいHEXファイルを選択
img_20150112-150520.jpg

?ターミナルが起動し、画面にスタートメッセージが表示される。
メッセージ表示後一秒以内にターゲットに電源を投入、またはリセットをかける。
img_20150112-150553.jpg

?書き込みに成功したときのメッセージ
img_20150112-150631.jpg

?書き込みに失敗したときのメッセージ
"Tera Term"をいったん終了し、?からやり直す
img_20150112-150658.jpg


ダウンロード先

Bequest333のページ(別館)

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

https://drive.google.com/file/d/1DyinYPvWXwqJ8G44Azdz_5aI3L4XNkBs/view?usp=drivesdk