SSブログ

PICのコード・プロテクションで混乱した [電子工作]

PICのコード プロテクション機能について調べてみました。

マニュアルには次のように記されています。
『10.2 コード プロテクション
コード プロテクションは、コンフィギュレーションワード 1 の CP ビットを使用して制御します。コード プロテクションが有効の場合、すべてのプログラム ロケーション (0000h ~ 7FFFh) の読み出しは「0」となり、その後のプログラム メモリ (0000h ~7FFFh) への書き込みは無効です。』

これとは別にフラッシュ・メモリのライト・プロテクション機能があって、そこには次のように記されています。

『コンフィギュレーション ワード 2  WRT<1,0>
16 kW のフラッシュ メモリの場合

11 = 書き込みプロテクションはオフ
10 = 000h - 1FFh は書き込み保護状態、200h - 3FFFh はEECON 制御によって変更可能
01 = 000h - 1FFFh は書き込み保護状態、2000h - 3FFFh はEECON 制御によって変更可能
00 = 000h - 3FFFh は書き込み保護状態、EECON 制御によって変更可能なアドレスはなし』

例えばCP ビットを1(コード プロテクションが有効)、WRTを11(書込みプロテクションは無効)にした場合、書き込めるのか?それとも書き込めないのか?

???

分かったのは、デバイス・プログラマ(PICkit3とか)に対してCPビットの設定は有効なのですが、実行中のプログラムに対しては効果がなく、実行中のプログラムによるコードの書き換えを防ぐには、WRTを11以外に設定しなければならないということです。

しかし、用意されたWRTの設定のうち、10ではプロテクションが小さ過ぎ、01では大き過ぎ、どうもピッタリしません。WRT設定は11(書き込みプロテクションはオフ)にして、プログラム実行中の書き込みプロテクションは、FLASH書き換えルーチンの中でソフト的に処置するしか無さそうです。




nice!(0)  コメント(0) 
共通テーマ:日記・雑感

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
MPLAB IPEの操作ELECROWに基板を発注した ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。