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品質だから仕方が無い。
まずC30コンパイラが必要。こいつはC18と同じで60日経つと最適化が効かなくなるが気にしない。
まずはC30コンパイラ、MPLABCPIC24_v3_24StdEval.zipをダウンロード。その際ユーザ登録を求められるが適当に入力。
次に、新しいMPLAB IDE、MPLAB_IDE_v8_56.zipをダウンロード。古いヤツだとPIC24FJ....知らない、とか出てくるので。
まずはキーボードデバイス(Device-HID-Keyboard)をビルドする。
4種類のプロジェクトがある。どれにしよう??
USB Device - HID - Keyboard- C30.mcp
USB Device - HID - Keyboard- C30 - PIC24F Starter Kit 1.mcp
USB Device - HID - Keyboard- C30 - PIC24FJ64GB004 PIM.mcp
USB Device - HID - Keyboard- C30 - PIC24FJ256GB110 PIM.mcp
それぞれ、次のチップ用。PIC24FJ64GB004用でいいかな?
PIC24FJ256DA210
PIC24FJ256GB106
PIC24FJ64GB004
PIC24FJ256GB110
プロジェクト開いてビルド。。。。。成功!
次にキーボードホスト(Host-HID-Keyboard)をビルドする。
USB Host - HID - Keyboard - C30.mcp
しかない。PIC24FJ256GB110用か。。。。PIC24FJ64GB004用じゃないけど、まあいいか。
どうやら、USBキーボードを読み込んで、LCDに出力するらしい。
LCDて、おそらくMicrochipの何かのキットについているのだろう。
まずはビルド。。。。成功!
とりあえずPIC24Fの第一歩。まだ先は長い。
まずはC30コンパイラ、MPLABCPIC24_v3_24StdEval.zipをダウンロード。その際ユーザ登録を求められるが適当に入力。
次に、新しいMPLAB IDE、MPLAB_IDE_v8_56.zipをダウンロード。古いヤツだとPIC24FJ....知らない、とか出てくるので。
まずはキーボードデバイス(Device-HID-Keyboard)をビルドする。
4種類のプロジェクトがある。どれにしよう??
USB Device - HID - Keyboard- C30.mcp
USB Device - HID - Keyboard- C30 - PIC24F Starter Kit 1.mcp
USB Device - HID - Keyboard- C30 - PIC24FJ64GB004 PIM.mcp
USB Device - HID - Keyboard- C30 - PIC24FJ256GB110 PIM.mcp
それぞれ、次のチップ用。PIC24FJ64GB004用でいいかな?
PIC24FJ256DA210
PIC24FJ256GB106
PIC24FJ64GB004
PIC24FJ256GB110
プロジェクト開いてビルド。。。。。成功!
次にキーボードホスト(Host-HID-Keyboard)をビルドする。
USB Host - HID - Keyboard - C30.mcp
しかない。PIC24FJ256GB110用か。。。。PIC24FJ64GB004用じゃないけど、まあいいか。
どうやら、USBキーボードを読み込んで、LCDに出力するらしい。
LCDて、おそらくMicrochipの何かのキットについているのだろう。
まずはビルド。。。。成功!
とりあえずPIC24Fの第一歩。まだ先は長い。