超ローコストPICWRITERの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
「PICBASICコンパイラ」からスピンオフ!!
過去記事を参照することなどを考えて該当する過去記事は「PICBASICコンパイラ」のまま連載回もそのままとします。
以後は前回記事からの流れで[第236回]からとします。
「PICBASICコンパイラ」はなるべく早く連載を再開したいと考えています。
PICはローコスト、高機能で種類も豊富なお手軽マイコンですがプログラムを書き込むためのWRITERが必要です。
それをできるだけ安価に作ってしまおうというプロジェクトです。
最終的には製品化を考えています(組立キット、完成品)。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第292回]
●PIC16F54(10)リバースエンジニアリング(6)
前回は説明の途中で終ってしまいました。
前回は[inc]No.412の後から[inc]No.415の後まで(恐らく)USER IDに[ff][0f]を4回(4Word分)WRITEしています、というところまで説明して終りました。
今回はそこからの続きです。
その次の[inc]No.416の実行後からは[inc]とともに[read]が連続して続いています。
[read]はデータを読み出すコマンドです。
実行するごとに1ワード2バイトのデータを読み出します。
読み出されたデータを見ると最初が[00][0C]で[05][00]、[06][00]と続いています。
その値から見てREADを開始したアドレスは000だと思われます。
ということは[inc]No.415の実行後に最後のUSER IDをWRITEした後、そこでVppをOFFにしてから再度VppをONにしていると考えられます。
それによってプログラムカウンタのアドレスは3FFに設定されます。
そこで[inc]No.416を実行するとアドレスは000になります。
おそらくそこからはベリファイが実行されていると考えられます。
実際に書き込んだ最後のデータは[inc]No.425の[00][08]ですがその後も[inc]と[read]が続いています。
それが実装メモリの最後まで続いているかというと最後は[inc]No.455まてでその次の[inc]No.456からは[read]はなくて[inc]だけが続いています。
[inc]No.416がアドレス000だと仮定すると[inc]No.455の実行後のアドレスは03Fになります。
秋月のPICプログラマではどうやら40H(64)ワードをまとめてREADするようにプログラムされているようです。
その40H(60)という数値がこのあとの奇妙な振る舞いに現れます。
[inc]No.655まで[inc]のみが続きます。
その次の[inc]No.656から[read]が4回実行されています。
おそらく先にWRITEしたUSER IDのベリファイだと思われます。
しかしそうだとすると計算が合いません。
[inc]No.416がアドレス000だとするとUSER IDのアドレス200に行くまでには[inc]は200H回実行されるはずです。
すると計算上のUSER IDは[inc]No.616の実行後の位置であるべきです。
しかし実際にUSER IDのデータがREADされているのは[inc]No.656の実行後です。
[inc]が40H回(64回)も余計に実行されています。
前回のWRITEのところでは10H回(16回)余計に[inc]が実行されていると考えられると書きましたが今回のREAD(ベリファイ)ではなんと64回です。
秋月のPICプログラマがどうしてこんなおかしな仕様になっているのかは謎なのですが16バイトといい、64バイトといいなんとなくバッファサイズが想起されます。
おそらくは汎用プログラムルーチンを引っ張ってくる過程でそういうことになっているのではと推測します。
[inc]No.659で最後のUSER IDのREADが実行された後に[load][fb][0f][begin][end][read][fb][cf]が実行されています。
値から見てここでCONFIGのWRITEとベリファイが行なわれていると考えられます。
おそらく[load]の前にVpp offとVpp onが実行されてアドレスがCONFIGアドレスの3FFにセットされていると思われます。
CONFIGにWRITEしたデータは[FB}[0F]ですがREADしたデータは[FB}{CF]です。
PIC16F54のCONFIGは下4ビットしかデータがありません。
[出典]Microchip Technology Inc. PIC16F5X Memory Programming Specification
ビット15〜ビット4は’1’または’0’が読み出されますがその値に意味はありません。
以上でやっと秋月PICプログラマの解析が終りました。
超ローコストPICWRITERの製作[第292回]
2025.6.1 upload
前へ
次へ
ホームページトップへ戻る