Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

PSoC™ 4

seya_3990781
Level 3
First like received
Level 3

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

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

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

0 Likes
1 Solution
AikoO_51
Moderator
Moderator 50 solutions authored 100 replies posted 50 replies posted
Moderator

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

View solution in original post

0 Likes
8 Replies
TakashiM_61
Moderator
Moderator 750 replies posted 500 replies posted 250 solutions authored
Moderator

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

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

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

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

0 Likes
seya_3990781
Level 3
First like received
Level 3

TakashiM61様

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

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

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

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

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

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

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

よろしくお願いします。

やまむら

0 Likes
AikoO_51
Moderator
Moderator 50 solutions authored 100 replies posted 50 replies posted
Moderator

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

Aiko Ohtaka
Infineon Technologies
0 Likes
seya_3990781
Level 3
First like received
Level 3

お手数をおかけします。

そのとおりです。

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

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

0 Likes
AikoO_51
Moderator
Moderator 50 solutions authored 100 replies posted 50 replies posted
Moderator

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 Likes
seya_3990781
Level 3
First like received
Level 3

AikoO_51さん

 有り難うございます。

試して見ます。

山村

0 Likes
seya_3990781
Level 3
First like received
Level 3

AikoO_51さん

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

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

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

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

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

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

よろしくお願いします。

山村

0 Likes
AikoO_51
Moderator
Moderator 50 solutions authored 100 replies posted 50 replies posted
Moderator

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

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

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

Aiko Ohtaka
Infineon Technologies
0 Likes