ちなみに追加情報ですが、書き込み後にE20経由でCS+から違うIDコードで接続しにいくと、
「入力したIDコードが、ターゲットMCUに設定されたIDコードと一致しません。(E1811104)」
とエラーが出ますので、IDコードは書き込めてはいると思います。
よろしくお願いします。
さらに追加ですが、RFPがデータフラッシュを消去しにいっているわけではないようです。
RFPで書き込み後、CS+でプログラムをダウンロードした時にIDコードを消しにいっているようです。
(上記実施後にRFPに設定しているIDコードを変えても書き込みができるため)
そのためにデータフラッシュを初期化してしまうのだと思われます。
何か分かる方いらっしゃらないでしょうか?
IKUさん
IDコードを変更したらIDEの保存ボタンを押してプロジェクトを保存しておかないと もしかしたら入力したIDコードを忘れちゃうのかもしれません。 デバッグ時はIDコードを使ってないので、今まで気にしてませんでしたけども・・・
ちなみにリトルエンディアンで使ってます?(リトルとビッグでデータのバイト並びが反転するので制御コードに52が来てないとか?) メモリウインドウで実際に埋め込まれたアドレスを確認すればバッチリだと思いますけども。
Kirinさん
プロジェクトを保存してみてもダメでした。
またリトルエンディアンで使っています。従ってデバッグツールに接続し、メモリ配置をCS+でみると
+0 +1 +2 +3
ffffffa0 FF FF FF 52
となっています。この状態でプログラムをデバッグツールにダウンロードすると52がFFに変わってしまいます。
試しに
#pragma address id_code = 0xffffffa0
const unsigned long id_code[4] = { 0xffffff52 ,0xffffffff ,0xffffffff ,0xffffffff };
としてメモリ配置上でffffffa0に0x52を配置してみましたが、こうするとRFP上でもIDコードを認識しなくなり、
CS+上でもIDコードをFFFFFF52FF・・・FFとしないと接続できなくなりました。RFPもCS+も
リトルエンディアンである事は分かっていますので、やはり間違ってなさそうです。
CS+の設定上は「ダウンロード前にデータフラッシュROMを消去する」はいいえになっているのですが。
あきらめるしかないでしょうか。
残念!あきらめてください。仕様でした。
↓ 資料の12ページにCS+はダウンロード時にHEXの中身に関わらずIDコードをオールFFにすると書いてあります。
japan.renesas.com/.../rx_qs_IDcode-130829.pdf
確認しました。仕方ないですね。
CS+からIDコードを書き込まなくてもかまいませんが、別にFFにする必要もないと思うのですが。
デバッグ時に設定したデータフラッシュの内容が、結局RFPでプログラムをフラッシュに書くときに
IDコードが消えてしまっているために消えてしまいます。
重ねて質問ですが、何かこれを回避する方法はないのでしょうか?
CS+でデータフラッシュをアップロードしておいて、RFPで書き込むHEXにマージするとかですかねー。
それはなかなかハードルが高いですね。
もう少し簡単に以下の方法で回避しました。
1.RFPでプログラムを書き込み。これにはIDコード設定あり
2.RFPでffffffa0からffffffafまでを読み取り格納。ID_code.motとしました。
3.今後RFPでプログラムを書き込む際は書き込む前にID_code.motを書き込んでから書き込む
Kirinさんの「CS+がダウンロード時にID_codeにFFを書く」という情報が無ければ
まだまだ迷走していたと思います。
いろいろとご対応ありがとうございました。