RX630データフラッシュ初期化

こんにちは。 RFP(ルネサスフラッシュプログラマー)でフラッシュROMに対してプログラムの書き込みを行うとデータフラッシュのデータも初期化されてしまうために、IDコードプロテクトを書き込みたいのですが、以前はプロテクト出来ていたのですが、本日もう一度RFPでフラッシュROMへプログラムの書き込みを行ったところ、データフラッシュのデータが初期化されてしまいました。 #pragma address id_code = 0xffffffa0 const unsigned long id_code[4] = { 0x52ffffff ,0xffffffff ,0xffffffff ,0xffffffff }; 上記記述を変数定義欄に記述しRFPでフラッシュROMに書き込みを行った後に、RFPで再度プログラム書き込みを行いましたが、 データフラッシュの内容は初期化されてしまいます。以前はうまくいっていたのに何故? どなたかご教授よろしくお願いします。
Parents
  • ちなみに追加情報ですが、書き込み後に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を消去する」はいいえになっているのですが。

    あきらめるしかないでしょうか。

  • IKUさん

    残念!あきらめてください。仕様でした。

    ↓ 資料の12ページにCS+はダウンロード時にHEXの中身に関わらずIDコードをオールFFにすると書いてあります。

    japan.renesas.com/.../rx_qs_IDcode-130829.pdf

Reply Children
  • Kirinさん

    確認しました。仕方ないですね。

    CS+からIDコードを書き込まなくてもかまいませんが、別にFFにする必要もないと思うのですが。

    デバッグ時に設定したデータフラッシュの内容が、結局RFPでプログラムをフラッシュに書くときに

    IDコードが消えてしまっているために消えてしまいます。

    重ねて質問ですが、何かこれを回避する方法はないのでしょうか?

  • IKUさん

    CS+でデータフラッシュをアップロードしておいて、RFPで書き込むHEXにマージするとかですかねー。

  • Kirinさん

    それはなかなかハードルが高いですね。

    もう少し簡単に以下の方法で回避しました。

    1.RFPでプログラムを書き込み。これにはIDコード設定あり

    2.RFPでffffffa0からffffffafまでを読み取り格納。ID_code.motとしました。

    3.今後RFPでプログラムを書き込む際は書き込む前にID_code.motを書き込んでから書き込む

    Kirinさんの「CS+がダウンロード時にID_codeにFFを書く」という情報が無ければ

    まだまだ迷走していたと思います。

    いろいろとご対応ありがとうございました。