SSブログ
English Version

PIC16F88用1ビット ブートローダの製作 2006年01月04日(データ復活版) [PIC]

 「バーサライタの製作」のコメントで書いたように「実機環境でのディバッグ環境の改善検討」の記事?で書いた1bitシリアル通信を使ったPIC16F88用のブートローダの製作をしています。
 12月に入ってからは中々時間がとれず、正月休み中に一気にブートローダとスキャン式バーサライタを仕上げたかったのですがブートローダ用のWinows側プログラムの製作にちょっと手こずりました。

 今回は勉強も兼ねてマイクロソフトのホームページから無料でダウンロードできるVisual C++ 2005 Express Editionを使いました(自前でVC6は持っているのですが)。

 ガベージコレクションでメモリ領域が管理されたことで開放忘れを気にせずにプログラムできるのは良いのですが、慣れていないせいもあってヘルプを引き引きのんびりと作りました(VC6で作った方が絶対早かったでしょう・・まぁ馴れれば.Net環境でも効率が上がるのでしょうが)

 休みの最終日になって漸く、動作しました(^^)。外観はこんな感じです。
 I/Oピン1ビットを使ったブートローダでシリアル送受信もソフト制御なので好きなI/Oピンをブートローダ用に割り振れます。PIC側プログラムはBKD社のCコンパイラ(CC5X)で作成し、ブートローダ自体は0f40以降のアドレスに収めました(サイズは192Bytes)。
 ロードできるhexファイルは0〜0f3fまでのプログラムになります(16F88のメモリは0〜0fff)。

 これでPICライタとのシリアルケーブルのつなぎかえもなく、ロード時間も数秒(もちろんサイズ依存ですが、プログラムコードのあるところだけの書込み&EEPROMは無視なのでとても早い)で効率アップできます(^^)。

 後日、もっと詳細の報告をする予定です(でも仕事が始まると時間が・・・^^;)
ニックネーム さと at 02:25 | Comment(3) | TrackBack(0) | 日記

★追記 2021/06/25
 OneBitLoaderに関する情報は下記のサイトを参照してください。

ブートローダ(OneBitLoader)の製作



[ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(5)  トラックバック(0) 

nice! 0

コメント 5

さと


以下、Googleのキャッシュから復活させたコメント
--------------------------------------------------
 PICBootLoader側のサイズが166ワードまでになりました。
 アセンブラで組めばもう数ワードは小さくなりそうですが・・

 Windows側もプログラムはドラッグ&ドロップ機能等を追加しましたがサイズは約60KB程度です。
 内部処理で簡単なことしかやっていないということもありますが、内部コードがMSILということもあると思います。(でも.Net Framework2.0環境が必要ですけどね)
Posted by さと at 2006年01月08日 13:49

--------------------------------------------------

PIC16F88用OneBitLoaderによりプログラムの更新作業が非常に楽になり、その効果は再認識しました。
もうPICライタの世界には戻れない(^^)

 詳細を

  http://www.netlaputa.ne.jp/~T-Satoh/pic/picOneBitLoader.html

にアップしました。
Posted by さと at 2006年01月09日 06:25

--------------------------------------------------

シリアルケーブルを繋がない状態でPIC側を立ち上げた場合、不安定な場合があったので受診ルーチンでのデータチェックを強化しました。また、Boot Loader自体のサイズも若干、ダイエットしました。

Posted by さと at 2006年01月22日 15:53
by さと (2008-01-04 03:11) 

さと

Vcc5V時の安定化のために配布版の通信速度を19200bpsから9600bpsに変更しました。
また、0000hにgoto 1のようなコードはうまく動作しませんでしたが今回対応しました。

 詳細は

www.netlaputa.ne.jp/~T-Satoh/pic/picOneBitLoader.html

を参照してください。
by さと (2008-04-19 16:37) 

さと

PC環境により、動作しないという報告を頂きましたので、WinXPで再コンパイルしました。(前回はWin2Kでコンパイル)

p.s.
 Visual Studio Express 2008でも試しましたが、インストールのために、931MをDLしたけどWin2Kはサポート外でインストールできず・・・^^;

 WinXPにインストールして再コンパイルしたものは、Win2Kでは動作せず・・orz

 結局、Express2005をWinXPにインストールして再コンパイルしました。
by さと (2008-10-05 17:31) 

yamakiyo

こんにちは。以前より貴HPの <one bit loader> 興味があり数回Tryしてみたものの当方の知識不足より、うまくいきませんでした。最近Arduinoにも手をだし、bootloaderの魔力にはかなわず、PICでもぜひ似た環境をと、今回再度挑戦してみました。原点に立ち戻り、前回の不適切な部分を発見!!再コンパイル。うまくいきました。感動です!!。この環境をありがとうございます。
そこで色気をだして、現在の手元のPICのシステム用のOneBitLoaderにしたいと思っているのですが、以下のところが不明です。回答いただければ幸いです。

1) PIC16F88で外部クロック10MHzでうまく行かないのですが、多分文字化けしているのでSIO_BIT_TIM のあたりの値設定だと思うのですが、この値の計算方法をお教えください。

2)PC用の転送ソフトOneBitLoaderで、パラメータ渡しでHEXファイルの指定や書き込みW自動実行などができませんでしょうかか。

以上勝手な質問ですいません。
by yamakiyo (2010-03-01 16:32) 

さと

お返事が遅くなりすみません。
(最近超多忙でチェックしきれてませんでした)
メールでのご返事と同様になりますが、下記の確認してみてください。

> 1) PIC16F88で外部クロック10MHzでうまく行かないのですが、
> 多分文字化けしているのでSIO_BIT_TIM のあたりの値設定だ
> と思うのですが、この値の計算方法をお教えください。

 OneBitloaderは内部クロックを2MHzに分周して使用しています。(クロックを遅くしているのは内部のソフトタイマのループ変数を小さくすることでプログラムサイズを小さくしているためです)

 外部クロックを使用しているということですのでconfigrationのFOSCの値を変更し、外部クロックにしていると思います。


 F88のUSARTを使用しているのであればソース内の

SPBRG = 12; // 9600bps(2MHz)

の値を5倍(=10MHz/2MHz)にすれば動作すると思います。


 OneBitシリアルインターフェースを使用しているのであればPIC側のローダー修正での対応は大変なので(処理クロック数の調整でシリアル通信を実現しているため)、パソコン側の「16F88A7.def」ファイルの内容を参考に

SPEED = 19200
 → 5倍の値にする

LOADERFILE = 16F88R7_19200.hex
 → configrationを変更して作成したローダーのhexファイル名

MSG = PIC16F88 RA7 software serial(Ver2)
 → 説明文(device選択し、カーソルを合わせると表示されます)


にして、defファイルを作成し、作成したdefファイル名を「OneBitLoader.ini」ファイルの

DEVICES = 16F88A7,16F88A7V1,16F88HW

の最後にに追加すればdevice選択できるようになります。
 この場合PIC側のhexファイルをOneBitLoaderと同じフォルダに入れるようにしてください。

 但し、パソコン側が 19200 x 5 の速度に対応しきれるかは未評価です


> 2)PC用の転送ソフトOneBitLoaderで、パラメータ渡しでHEXフ
> ァイルの指定や書き込みW自動実行などができませんでしょう
> かか。

 次回のバージョンアップの時に対応を検討します。
by さと (2010-03-07 23:17) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0