- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
PSOC4_4200Mを採用して、プログラム作成しています。
ユーザデータをフラッシュPROMへ記憶させるようにしていますが、デバッグ開始のプログラムローディング時にデータフラッシュ領域もクリアされますが、
それを回避する方法はありませんか? (データフラッシュをゼロクリアせずにプログラム領域のみ書き込む方法)
解決済! 解決策の投稿を見る。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
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からに指定してあります。
EEPROMに以下のようにデータが書き込まれています。
添付のプロジェクトを参考にして下さい。
Infineon Technologies
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
具体的にフラッシュPROMとはどのメモリを指しているのか、保持したいFlash/PROMのアドレスなど、
ご希望とする動作の詳細を教えて頂けないでしょうか?
例として、OCD(On-chip debugger)を使うという方法もありますが、使用しているboardによっても対応が異なります。
以上、よろしくお願いします。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
TakashiM61様
早速の応答有り難うございます。
使用している基板(BORD)は自作です。
搭載しているCPUはPSoC4 4200Mです。
使用しているROMのアドレスは、0x6200から1023バイトです。
使い方は、PSoC Creator 4.3 の TopDesign.cysch で割り付けた Em_EEPROM に調整用の定数を記憶させておき
電源投入時に読み出して調整用のDACへ書き込みます。
現在、プログラムデバッグをしながら回路動作も確認しており、既に調整した値は、デバッグ中プログラムを書き込んでも消えないようにしたいのです。
よろしくお願いします。
やまむら
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
再度確認なのですが、今回の問い合わせとしては、デバッグ中に修正したプログラムを書き込む際、保持したいアドレス内のデータが書き換わり消えてしまう事を防ぎたい、ということでよろしいでしょうか。
Infineon Technologies
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
お手数をおかけします。
そのとおりです。
つまり、デバッグでEEROM領域のうちプログラム領域が書き変わるのは当然で問題ないのですが、調整データ(例えば校正定数)のように、プログラムとは別に定数値をEEROMへプログラムを走らせながら書き込んでいますが、せっかく調整した値なのでデバッグしてプログラムを書き替えてもそのまま残せたら再度書きこむ手数が省けます。
よろしくアドバイスをお願いいたします。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
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からに指定してあります。
EEPROMに以下のようにデータが書き込まれています。
添付のプロジェクトを参考にして下さい。
Infineon Technologies
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
AikoO_51さん
有り難うございます。
試して見ます。
山村
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
AikoO_51さん
サポート有り難うございます。
本件について、結論的には下記の理解でよろしいでしょうか?
>プログラム書き込み時にデータ用EEROMの領域を書きかえないようにするには、
・データ用EEROMの領域をフラッシュROMの最大番地から割付ける。(リンカのスクリプトファイル(custum_cm0gcc.ld)内)
・領域のサイズはPCoCクリエータのTopDesign.cysch > Cofigure Em_EEROM で設定したサイズ以上を確保する。
デフォルトでは、データ用EEROMの領域は、0番地から割り付けられる。
よろしくお願いします。
山村
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
はい、上記の理解で問題ありません。
1点補足として、以前の投稿でも示した通り、メモリの領域はROW単位(アドレスでは0x0100単位)で使用しているため、
指定するアドレスには注意してください。
Infineon Technologies