趣味の電子工作と釣りについて。電子工作は、おもに変換器作成。釣りはおもにトラウトの管釣り。
HID Bootloaderはアドレス0x0000~0x0FFFを使用するので、ここを書き込み不可にすればいい。
書き込みを制御するのはここ。
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRTB = OFF // Boot Block Write Protection
#pragma config WRTC = OFF
WRTBをONにすると0x0000~0x07FFを保護
WRT0をONにすると0x0800~0x1FFFを保護
WRT1をONにすると0x2000~0x3FFFを保護
WRTCをONにするとコンフィグ変更不可(保護の解除を禁止)
WRTBとWRTCをONにするのはいいとして、WRT0はどうしたものか。。。
ONにすると、ファームウェア用の領域まで一部保護してしまう。。。。。
こまった。。。
ということで、HID Bootloaderを変更することにした。
ブートローダ領域:0x0000~0x0FFF
ファームウェア領域:0x1000~0x7FFF
↓
ブートローダ領域:0x0000~0x1FFF
ファームウェア領域:0x2000~0x7FFF
こうすることによって、HID BootloaderをC18の制限版でもコンパイルできるようになるし、一石二鳥。
が、開始アドレスが0x1000から0x2000に変わるので、Microchipのフレームワークがそのままでは動かなくなる。仕方ないか。。。。稀にブートローダーが壊れるよりマシか。。。。
書き込みを制御するのはここ。
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRTB = OFF // Boot Block Write Protection
#pragma config WRTC = OFF
WRTBをONにすると0x0000~0x07FFを保護
WRT0をONにすると0x0800~0x1FFFを保護
WRT1をONにすると0x2000~0x3FFFを保護
WRTCをONにするとコンフィグ変更不可(保護の解除を禁止)
WRTBとWRTCをONにするのはいいとして、WRT0はどうしたものか。。。
ONにすると、ファームウェア用の領域まで一部保護してしまう。。。。。
こまった。。。
ということで、HID Bootloaderを変更することにした。
ブートローダ領域:0x0000~0x0FFF
ファームウェア領域:0x1000~0x7FFF
↓
ブートローダ領域:0x0000~0x1FFF
ファームウェア領域:0x2000~0x7FFF
こうすることによって、HID BootloaderをC18の制限版でもコンパイルできるようになるし、一石二鳥。
が、開始アドレスが0x1000から0x2000に変わるので、Microchipのフレームワークがそのままでは動かなくなる。仕方ないか。。。。稀にブートローダーが壊れるよりマシか。。。。
PR
いままでとくに中身を意識せずに使ってきたMicrochip HID bootloaderだが、どうやら実用に耐えられない模様。稀にとはいえ、ブートローダーが消えるのは問題だ。
ということで、調べてみた。まずネットで調べると、このブートローダはノーガード戦法を採用しているとのこと。保護機能一切なし。消えてあたりまえ、消えるのも仕様のうち。
。。。。だめだろ~これじゃ
この半年~1年でブートローダーが消える機能のことを、「Microchipタイマー」と名づけることにした。
ソニータイマーと比較して、発動までの期間は短いが、発動率は低い(ソニータイマーは発動率30%程度かな?このタイマーは使い方にもよるが10%程度かな?)と思う
なので保護機能を有効にする(Microchipタイマーを解除する)方法を検討することにした。
ということで、調べてみた。まずネットで調べると、このブートローダはノーガード戦法を採用しているとのこと。保護機能一切なし。消えてあたりまえ、消えるのも仕様のうち。
。。。。だめだろ~これじゃ
この半年~1年でブートローダーが消える機能のことを、「Microchipタイマー」と名づけることにした。
ソニータイマーと比較して、発動までの期間は短いが、発動率は低い(ソニータイマーは発動率30%程度かな?このタイマーは使い方にもよるが10%程度かな?)と思う
なので保護機能を有効にする(Microchipタイマーを解除する)方法を検討することにした。
先日より例の変換器の最終調整をしていて、ソースはほぼ固まってきたけど、使用中にIPLであるHID bootloaderが消える現象発生。
まだファームウェアが消えるのならHIDBootLoader.exe で書き直せばいいのだが、IPL部分が消えたらどうしようもない。またPICKITをつないでIPLを書きなおさないといけないので面倒。
発生率は、年に2、3回、256回に1回くらいか。今まではファームウェア書き換え時に起きていたが、今回は通電時に発生。
スーパーソード並の、この変換器の耐久性、どうにかせねば。。。。
といっても、悪いのはたぶん俺じゃなくてMicrochipのHID bootloaderだけどね。まぁ、これがMicrochip品質だから仕方が無い。
まだファームウェアが消えるのならHIDBootLoader.exe で書き直せばいいのだが、IPL部分が消えたらどうしようもない。またPICKITをつないでIPLを書きなおさないといけないので面倒。
発生率は、年に2、3回、256回に1回くらいか。今まではファームウェア書き換え時に起きていたが、今回は通電時に発生。
スーパーソード並の、この変換器の耐久性、どうにかせねば。。。。
といっても、悪いのはたぶん俺じゃなくてMicrochipのHID bootloaderだけどね。まぁ、これがMicrochip品質だから仕方が無い。
ようやく入手した。古いのにけっこう高かった。
さて、さっそく遊んでみた。
まずは、純正の電車でGO!コントローラType2で。
まったく動作に問題なし。あたりまえか。
次は、自作の変換器でプレステ用の初代電車でGO!コントローラを試す。
どうか、、、、!動く!動く!使える!
実機もソフトも無しに開発したけど、以外と動くもんなんだなぁ。。。。
まあ、USBデスクリプターをばっちり合わせたんだから当然か。
でも、実機なしで開発しただけあって、多少不具合が。。。。
1.メニューの上下移動ができない。
USBにコントローラ繋ぐと、DUALSHOCK2の上下、使えなかったんだ。。。。。。
2.警笛過多
なぜか、警笛が鳴りっぱなし。うるさい!!。なんでだろ?どっか間違えたかな?
というわけで、おおむね良好、といったところか。上記不具合は、後日直すとしよう。
さて、さっそく遊んでみた。
まずは、純正の電車でGO!コントローラType2で。
まったく動作に問題なし。あたりまえか。
次は、自作の変換器でプレステ用の初代電車でGO!コントローラを試す。
どうか、、、、!動く!動く!使える!
実機もソフトも無しに開発したけど、以外と動くもんなんだなぁ。。。。
まあ、USBデスクリプターをばっちり合わせたんだから当然か。
でも、実機なしで開発しただけあって、多少不具合が。。。。
1.メニューの上下移動ができない。
USBにコントローラ繋ぐと、DUALSHOCK2の上下、使えなかったんだ。。。。。。
2.警笛過多
なぜか、警笛が鳴りっぱなし。うるさい!!。なんでだろ?どっか間違えたかな?
というわけで、おおむね良好、といったところか。上記不具合は、後日直すとしよう。