はじめまして、RL78G23でデータフラッシュの動作をCS+でデバッグをしております。RENESAS_RFD_RL78_Type01_V1.10を組み込み、データフラッシュへの書込みは出来てるのですが、書込み中(シーケンサ制御中)にブレークポイントで処理を停止させると、ステップ実行が出来ない状況です。
データフラッシュのデバッグはこういうものなのでしょうか。
D70116(ルネサス中の人)です。
RL78/G23ではセルフ・プログラミング中にブレークをするときに専用のRAMエリアの確保が必要です。
CS+をお使いの場合、「フラッシュのセルフ・プログラミングを行う」が「はい」になっていないと確保がされません。設定はどうなっていますか?
D70116様ご連絡ありがとうございます。「フラッシュのセルフ・プログラミングを行う」は「はい」に設定している状態です。
データ・フラッシュ・プログラミング・モードに変更するため、PFCMD(フラッシュ・プロテクト・コマンド・レジスタ)にA5Hを書き込んだところでステップ実行がきかなくなります。
以下の記載がありましたので、ステップ実行できないという振る舞いが正しいのでしょうか。
E1/E20/E2エミュレータ, E2エミュレータLite ユーザーズマニュアル別冊 (RL78接続時の注意事項) P.443.5. フラッシュメモリ3.5.1. セルフプログラミング機能のデバッグに関する注意事項(2) セルフプログラミング途中のブレークセルフプログラミング途中に強制ブレーク以外のブレークは可能ですが、ブレーク時点からのステップ実行できません。セルフプログラミング途中の強制ブレークでは、E1/E20/E2/E2Liteでの制御ができなくなる場合があります。
eclipse様ご連絡ありがとうございます。少し条件を見落としておりました。STEP実行をされたい…という事だったのですね。そうしますと、チョコ様が書かれたように、またマニュアルにありますように、ブレーク時点からのステップ実行は出来ない仕様です。(その場からRUNで再開は可能です)お手数ですが、ブレーク位置を変更するあるいはシミュレータでデバッグをお願いできますでしょうか。
チョコです。
D70116さん(V30さんと呼んでもいいですかね)。
シミュレータでこのような場合(ハードやそれを制御しているシーケンサ)のデバッグができるのですかね。
以上
D70116(V30)です。改めて確認いたしました。先の回答を訂正させてください。チョコさんのおっしゃる通り、シミュレータでは当該部分のステップ実行は可能ですが、内部のシミュレーション(セルフプログラミング)まではシミュレーションできません。あくまでもプログラムの流れをステップ実行で確認できる(RAM, SFRに書いた値は確認できる)になります。よって、実際にデータフラッシュメモリの値が書き換わる事を確認する場合は、エミュレータしか方法がなく、先に記載しましたブレークした後に再開しか手法がありません。不確かな情報申し訳ありませんでした。
D70116(V30)さん、ご確認有難うございました。
ちなみに、わたしが現役のエンジニアだったときには8ビットのD70008(V10)までで、16ビットは使ったことはありませんでした。