Nitarouです。RL78/G23(R7F100GJG)でデバッグ終了後にフラッシュプログラマV.3.13で書き込みを行うと異常表示が出ます。
0x000FBF00にデータが書き込まれているとのメッセージが出ていますが、この領域はRAM領域と思いますので、フラッシュプログラマでの書き込みに支障は無いと思うのですが、理由が分からず対応に苦慮しています。解決方法をご教示ください。
チョコです。
RL78で、プログラムのアドレスがRAM領域にあったとすると、それは、電源が切れると当然書き込んだ内容は消えてしまいます。
そのようなプログラムはデバッガを使って動作確認しているときには動作するかもしれませんが、実際のデバイスでは動作しません。
そのことを警告しているのではないでしょうか。
以上
Nitarouです。
いつも丁寧な解説をいただきましてありがとうございます。
プログラムのアドレスがRAM領域にあることを確認する方法はありますでしょうか。
CSEGやDESGの指定方法に誤りがあるのでしょうか。
ご教示お願い致します。
配置を確認するには、DefaultBuildディレクトリのMAPファイルを眺めてください。
表示内容についてはCC-RLのプロパティで指定してください。
いつも適切なご指導ありがとうございます。
MAPファイルを見ますと0x000FBF00から0x000FBF58まで.dataとして59バイト使用していると表示されました。CC-RLによれば.dataの場所はRAM内に配置されると記載されていますのでフラッシュプログラマの異常表示の原因にはならないと思われるのですが、解決方法はありますでしょうか。ご教示お願い致します。
Nitarouさんは、確かアセンブラ記述ですよね。
そうすると、初期値ありの変数をどのように定義しているのでしょうか。そこらの取り扱いが、RAM領域で「.DB」でメモリを指定してはいないでしょうか?
コンパイラでは初期値あり変数については、コンパイラがROMに初期値データを準備していて、最初にROMからRAMにコピーしています。所謂「ROM化」です。
定数としての使い方であれば、ミラー領域を使うことも考えられます。
具体的なプログラムがどう記述されているかわからないので、これ以上はコメントできません。
.DBを記述しているのはOPT_BYTEの指定部です。
RAM領域では.DSのみを記述しています。
OPT_BYTEの記述に誤りがあるのでしょうか。
お手数をお掛けしますが、ご教示お願い致します。
フラッシュプログラマのマニュアルに当該トラブルの回避策が記載されていました。
範囲外エラーについてチェックボックスのチェックを外すことで回避できると記載されていましたので実行したところ正常終了し、単独で動作しています。ありがとうございました。
オプション・バイトだとアドレスが異なるので、これが原因ではないですね。
オプション・バイトがおかしければ、デバッグもできません。
既に対策を見つけられたようで、よかったです。