Debug 開始のProgram Roard時にData Flash PROM領域を消去しない方法?

Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
seya_3990781
Level 3
Level 3
Welcome! First solution authored 10 replies posted

PSOC4_4200Mを採用して、プログラム作成しています。

ユーザデータをフラッシュPROMへ記憶させるようにしていますが、デバッグ開始のプログラムローディング時にデータフラッシュ領域もクリアされますが、

それを回避する方法はありませんか? (データフラッシュをゼロクリアせずにプログラム領域のみ書き込む方法)

0 件の賞賛
1 解決策

Emulated EEPROM component datasheetの” Placing EEPROM Storage at Fixed Address” のセクションを参照ください。このセクションで記載されている動作により、Flash内のプログラムのメモリ外にEEPROMを配置することができます。

実際に確認したところ、正常に動作することを確認しました。

その確認したプロジェクトを添付します。

作成したプロジェクトについての補足として、Flash内のプログラムに対するメモリの領域は、0x25FFまでであり (PSoC 4100S Plusの1 rowは256-byteで、Hexファイルにおいて256-byteは0x100である)、 EEPROMを0x2900からに指定してあります。

11171.png

11172.png

EEPROMに以下のようにデータが書き込まれています。

11173.png

添付のプロジェクトを参考にして下さい。

Aiko Ohtaka
Infineon Technologies

元の投稿で解決策を見る

0 件の賞賛
8 返答(返信)
Takashi_M
Moderator
Moderator
Moderator
1000 replies posted 500 solutions authored 750 replies posted

具体的にフラッシュPROMとはどのメモリを指しているのか、保持したいFlash/PROMのアドレスなど、

ご希望とする動作の詳細を教えて頂けないでしょうか?

例として、OCD(On-chip debugger)を使うという方法もありますが、使用しているboardによっても対応が異なります。

以上、よろしくお願いします。

0 件の賞賛

TakashiM61様

 早速の応答有り難うございます。

使用している基板(BORD)は自作です。

搭載しているCPUはPSoC4 4200Mです。

使用しているROMのアドレスは、0x6200から1023バイトです。

使い方は、PSoC Creator 4.3 の TopDesign.cysch で割り付けた Em_EEPROM に調整用の定数を記憶させておき

電源投入時に読み出して調整用のDACへ書き込みます。

現在、プログラムデバッグをしながら回路動作も確認しており、既に調整した値は、デバッグ中プログラムを書き込んでも消えないようにしたいのです。

よろしくお願いします。

やまむら

0 件の賞賛

再度確認なのですが、今回の問い合わせとしては、デバッグ中に修正したプログラムを書き込む際、保持したいアドレス内のデータが書き換わり消えてしまう事を防ぎたい、ということでよろしいでしょうか。

Aiko Ohtaka
Infineon Technologies
0 件の賞賛

お手数をおかけします。

そのとおりです。

つまり、デバッグでEEROM領域のうちプログラム領域が書き変わるのは当然で問題ないのですが、調整データ(例えば校正定数)のように、プログラムとは別に定数値をEEROMへプログラムを走らせながら書き込んでいますが、せっかく調整した値なのでデバッグしてプログラムを書き替えてもそのまま残せたら再度書きこむ手数が省けます。

よろしくアドバイスをお願いいたします。

0 件の賞賛

Emulated EEPROM component datasheetの” Placing EEPROM Storage at Fixed Address” のセクションを参照ください。このセクションで記載されている動作により、Flash内のプログラムのメモリ外にEEPROMを配置することができます。

実際に確認したところ、正常に動作することを確認しました。

その確認したプロジェクトを添付します。

作成したプロジェクトについての補足として、Flash内のプログラムに対するメモリの領域は、0x25FFまでであり (PSoC 4100S Plusの1 rowは256-byteで、Hexファイルにおいて256-byteは0x100である)、 EEPROMを0x2900からに指定してあります。

11171.png

11172.png

EEPROMに以下のようにデータが書き込まれています。

11173.png

添付のプロジェクトを参考にして下さい。

Aiko Ohtaka
Infineon Technologies
0 件の賞賛

AikoO_51さん

 有り難うございます。

試して見ます。

山村

0 件の賞賛

AikoO_51さん

 サポート有り難うございます。

本件について、結論的には下記の理解でよろしいでしょうか?

 >プログラム書き込み時にデータ用EEROMの領域を書きかえないようにするには、

 ・データ用EEROMの領域をフラッシュROMの最大番地から割付ける。(リンカのスクリプトファイル(custum_cm0gcc.ld)内)

 ・領域のサイズはPCoCクリエータのTopDesign.cysch > Cofigure Em_EEROM で設定したサイズ以上を確保する。

デフォルトでは、データ用EEROMの領域は、0番地から割り付けられる。

よろしくお願いします。

山村

0 件の賞賛

はい、上記の理解で問題ありません。

1点補足として、以前の投稿でも示した通り、メモリの領域はROW単位(アドレスでは0x0100単位)で使用しているため、

指定するアドレスには注意してください。

Aiko Ohtaka
Infineon Technologies
0 件の賞賛