OpenStick Lite ~その2~

OpenStickのLite版としてPIC18F14K50への対応作業を続けております。
まずはPIC18F2550版で何をやっていたかを思い出すところから始める必要があります。何年か経っているのでほとんど忘れているのです。
PIC18FマイコンはROM(FLASH)とRAMが別のアドレス空間になっているあたりが面倒だったはず・・・確かにこのあたりで苦労の跡が見られます。何種類かあるUSBのディスクリプターをROM上に置くものとRAM上に置くものとでそれぞれの対応が必要でした。・・・少しずつ思い出してきました。まあ大体で良しとしましょう。(おいおい!)

とりあえずファーム載せ換え開始
ブートローダはとりあえず手に入るHID版で進めています。このマイコンのFLASH容量16KBの内、HID版ブートローダは4Kバイトを喰いますが今のところOpenStickファームも含めて納まっています。
またFLASHが16KBという事は最大番地が0x3FFFです。という事はPIC18F2550版の様にコンフィグデータを0x4000以降に置くことができないので先頭を0x3C00に移動しました
むしろ問題はRAM容量で、元々768バイトしか無いところにUSBのバッファが256バイトを使うので残りは512バイトです。 色々と節約して何とか納まっていますが余裕が全くありません。

こんな感じですがまずはファームウェアが動作するところまでは漕ぎつけました。

しかしここで問題発生。
HID版ブートローダはFLASHの部分書き込みに対応しておらず、書込む前に一旦全アドレスが消去されてしまう様です。
OpenStickは下図の様にジョイスティックの定義部分だけ後から書込む事によって機能を自由に定義できるのがウリな訳ですが、これにはFLASHの部分書込みが必須です。

OpenStickMemorymap

FLASHメモリーマップ(PIC18F2550版)

PIC18F2550版で使っていた非HID版ブートローダ(MCHPUSB版と呼ぶのかも)の場合、書込みツールを対応させれば部分書込みが出来ていましたがHID版はファーム自体が対応しておらず消去の時は気前よく全消ししてしまい元のプログラムが残っていません。 対策にはファームと書込みツールの両方を変更する必要がありそうです。
非HID版なら書き込みツール側から消去ブロックを指定して消す仕組みになっているので問題ありませんが前回書いた様にPIC18F14K50版がありません。

これはどうしましょう。ブートローダを何とかする必要があるのですが、HID版と非HID版、どちらから攻めるべきでしょうか?

何でも実際にやり始めると最初に思っていた程簡単にはいきませんねぇ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*