Renesas Community
Search Community
User
Join or sign in
Site
Search Community
User
Renesas Engineering Community
FAQ
HELP
More
Cancel
Forums & Groups
English Community
中文社区(Chinese Community)
More
Cancel
かふぇルネ
forums-groups
Microcontrollers and Microprocessors
Other MCU/MPU Products
R8C/Tiny
More
Cancel
R8C/Tiny
R8C/Tiny Forum
E8aでのデータ・フラッシュ・デバッグ
Home
Forum
Tags
More
Cancel
New
Replies
6 replies
Subscribers
442 subscribers
Views
4443 views
Users
0 members are here
R8C上
E8a
データ・フラッシュ・デバッグ
データ・フラッシュ
書き込み
Options
Share
More
Cancel
Related
E8aでのデータ・フラッシュ・デバッグ
織田
over 12 years ago
R8CマイコンのデバッグをE8aで行う予定です。
R8C上のデータ・フラッシュを使用しますが、このエリアの書き込みはE8aでデバッグ出来ますか。
昔のICEは通常とは別の特殊なモードでしかフラッシュの書き込みのデバッグが出来ませんでしたので、とても効率が悪くて苦労しました。
データ・フラッシュの領域だけでも通常通りにデバッグ出来たら楽なのですが、実際のところ可能でしょうか。
NAKA
over 12 years ago
こんにちはNAKAといいます。
そんなにはマイコンに詳しくないので、
>このエリアの書き込みはE8aでデバッグ出来ますか。
の意味がわかってないかもしれませんが、データフラッシュ
への読み書きくらいなら参考になりますでしょうか?
以前R8C21238のブロックA、B(1K)のフラッシュをEEPROM代
わりに使った時作った関数です。
まず、SFRのヘッダファイルに先頭番地を宣言します。
/*-------------------------------------------
FLASH MEMORY BLOCK
---------------------------------------------*/
/* BLOCK A first address */
#define BLOCK_A ((unsigned char *)0x02400)
/* BLOCK B first address */
#define BLOCK_B ((unsigned char *)0x02800)
◎書き込みは、
/***********************************************/
//関数名:Flash_Write_BA(unsigned short len\,unsigned char* buf)
//動作:ブロックAへのデータフラッシュWRITE
//引数:lenデータ列長 *bufデータ列先頭アドレス
//作成:NAKA 09.05.20
//備考:書き込み部以外のブロック内は全てイレーズ
//**********************************************/
void Flash_Write_BA(unsigned short len\,unsigned char *buf)
{
unsigned short i; //汎用カウンター
fmr01 = 0; //アクセス方法の注意
fmr01 = 1; //CPU書換えモード有効
fmr11 = 0; //アクセス方法の注意
fmr11 = 1; //EW1モードにセット
fwp = BLOCK_A; //ポインターセット
*fwp = 0x20; //ブロックイレーズコマンド書き込み
*fwp = 0xD0; //ブロックイレーズデータ書き込み
for( i = 0; i < len; i++ )
{
*fwp = 0x40; //書き込みコマンド
*fwp = buf[i]; //データ書き込み
while(fmr00 == 0);
fwp++; //ライトポインタインクリメント
}
fmr01 = 0; //CPU書換えモード無効(ソフトコマンド受付不可)
}
毎回ブロックごとイレーズする必要はないと思いますので、
そこは消さずにアペンドする形に改造すればいいと思います。
◎読み出しは
/***********************************************/
//関数名:Flash_Read_BA(unsigned short len\,unsigned char* buf)
//動作:ブロックAへのデータフラッシュREAD
//引数:lenデータ列長 *bufデータ列先頭アドレス
//作成:NAKA 09.05.20
//***********************************************/
void Flash_Read_BA(unsigned short len\,unsigned char *buf)
{
unsigned short i; //汎用カウンター
fmr01 = 0; //アクセス方法の注意
fmr01 = 1; //CPU書換えモード有効(ソフトコマンド受付可)
fmr11 = 0; //アクセス方法の注意
fmr11 = 1; //EW1モードにセット
fwp = BLOCK_A; //ポインターセット
for( i = 0; i < len; i++ )
{
*fwp = 0xFF; //読み込みコマンド
buf[i] = *fwp; //データ書き込み
while(fmr00 == 0);
fwp++; //ライトポインタインクリメント
}
fmr01 = 0; //CPU書換えモード無効(ソフトコマンド受付不可
}
Cancel
Up
0
Down
Reply
Cancel
織田
over 12 years ago
NAKAさん、返信有難う御座います。
書き込み、読み込みのプログラム自体は難しくはないと思っています。
恐らくNAKAさんの挙げたプログラムの様になると思います。
問題なのはこのプログラムがデバッガー上で動くかどうかなのです。
昔のICEはプログラム上のフラッシュの書き込み処理が動作すると、ICE自体のフラッシュ制御とぶつかる為、かなりの制約事項が発生していまして、それがデバッグし難い要因になっていました。
NAKAさんが以前EEPROM代わりに使用した時に、ICEに対して特殊な操作をしなくてもデバッグ出来たかどうかを知りたいのです。
普通にデバッグ出来ましたか?
Cancel
Up
0
Down
Reply
Cancel
Kon Nozomu(すと)
over 12 years ago
ご利用になるR8Cマイコンにより占有する領域は異なります。
E8aのページからユーザーズマニュアル別冊[採用マイコン]を開き、「E8aエミュレータ使用上の注意事項」をご覧ください。
マイコンによりますが、ユーザフラッシュ領域 or PROM領域を2kバイト使用するようです。
ベクタの占有は避けられませんが、ROM領域に関してはある程度の自由が効くので、実現可能ではないでしょうか。
Cancel
Up
0
Down
Reply
Cancel
tetnoguchi
over 12 years ago
ずいぶん前になりますが
R8C/212BCとE8aで内蔵データフラッシュROMを
アクセスするソフトをやってましたが、
普通にデバッグできましたよ。
ブレークも普通にかけられましたし。
ただ、完了ビット待ちとかのwhile文内を
ステップ実行とかはしてませんけど。
普通に読み出し・書き込みでデバッグできてましたよ
モデルによる違いもあるかもしれないけど
プログラムROMとは別領域ですからいけるんじゃない?
ちなみにコンパイラは無償版とHEW環境でしたが。
Cancel
Up
0
Down
Reply
Cancel
織田
over 12 years ago
皆さま有難う御座います。
E8aのユーザーズマニュアル別冊を確認しました。
データ・フラッシュ領域の読み書きならE8aの制約事項に引っ掛からないようです。
これで安心出来ました。
環境が整いましたらデバッグしてみます。
有難う御座いました。
Cancel
Up
0
Down
Reply
Cancel
NAKA
over 12 years ago
織田様
こんにちは、NAKAです。
ぼくも、すと様・tetnoguchi様と同様にE8(E8aの一個古い
やつ)で動作確認してました。
とくに変わった操作はしてません。
もっと高度なことをされようとされているのかが
わかりませんが、たぶん大丈夫だと思います。
Cancel
Up
0
Down
Reply
Cancel