USB PICのブートローダー2

NO IMAGE

先に書いたUSB PICのブートローダー1では、Bootloaderプログラムの書き換えを行った。Bootloaderを使うには、アドレスをそれぞれバッティングしないよう交通整理をする必要がある。
Microchipのお手本では、マイコンのメモリアドレス0x000~0X0FFFまでにBootloaderプログラムが格納される。

USBで新たに書き込みしたい場合は、0x1000以降にプログラムを書き込みしないといけない。そのために、リンカスクリプトにその旨を記述するのだが、Microchipでは、HID-Bootloaderを使って、他のお手本プログラムを書き込むことを想定しているらしく、そのお手本に付いているリンカスクリプトさえ使えば、アドレスがバッティングすることもない。

HID-Bootloaderを使って、他のお手本プログラムを書き込もうとしていたが、やるたびやるたびおかしい(いつまでも書き込みが終了しない)ので、色々やっていたら、HID-Bootloaderのアドレス配置がおかしく、そのため、他のお手本プログラムを書き込もうとするとアドレスがバッティングしているため、HID-Bootloader内のプログラムが書き込みの際のイレースによって消去されてしまい、挙動不審となってしまっていたのだった。今から思うと、お粗末である。

また、プログラムのメインとなって動く物、割り込みされた時に動く物についてもアドレスの指定が必要となるが、main.cにその旨書かれているので、お手本をそのまま変更せずに使うのであれば、特に気にする必要はない。
肝となるのは、リンカスクリプトを含めたメモリーアドレス指定ということですな。

それさえ分かってしまえば、Bootloaderは攻略できることが分かった。とりあえず、ちょっとした丘は越えた感じ。まだまだ、技術の頂上に到達する(マスター)には時間がかかりそうだ。あー、しんど。