お世話になります。
新規にRXシリーズを採用し、デバッグを開始したのですがプログラムのダウンロードに時間がかかり非常に困っています。
具体的には
CPU:RX231
外部バス接続のRAMへダウンロード
プログラムサイズ:4MB弱
FINEボーレート:最速
ベリファイ無し
E1:2分20秒
E2 Lite:3分10秒
ダウンロード前のレジスタ設定でバスのウェイトを最小にするも変化なし
他になにか改善の方法はありますでしょうか?
よろしくお願いします。
きー さん、こんにちは。NoMaYと申します。以前に他の方から頂いた情報(品種やIDE(CS+?e2 stuido?)や方式(JTAG?FINE?)は不明)では以下のダウンロード速度とのことでしたので、それと比較してもこれは遅いですね。使用されているIDEですが、CS+でしょうか?e2 studioでしょうか?ちなみに、新規にRXマイコンを採用、とのことですが、以前はどのようなマイコンでどれぐらいのダウンロード速度だったのか、もし差し支えなければ、教えて頂けないでしょうか?私自身は外部メモリへダウンロードした経験が乏しいのですが、昔の記憶では内蔵フラッシュメモリへのダウンロードでCPU動作クロックがダウンロード速度に影響した経験がありました。(リセット直後は数百KHzの内蔵低速発振回路、クロック設定を変更して数十MHzの外部発振子、といったシステムだったような、との記憶です。) ですので、今回の件も、咄嗟には、それが気になります。記憶が定かでは無いですけど、クロック設定完了位置にブレークポイントを設定してダウンロード前にGo/Breakさせてそれからダウンロードしたとか、ダウンロード前の内蔵周辺レジスタ設定ファイル(或いはスクリプト)でクロック設定を変更したとか、そんなことをしていたような気がします。
私に出来ることとして、手持ちのTB-RX231でon-board E2 Lite+FINE 1.5Mbpsでの512KBの内蔵フラッシュメモリへのダウンロード速度を試しに計ってみる、といったことでしょうか。でも、その前に、参考になりそうなデータがE1とかE2 Liteとかのマニュアルに載っていないか探してみることでしょうかね、、、ちょっと探してみようと思います、、、きーさんの今回の状況「外部バス接続のRAMへダウンロードプログラムサイズ:4MB弱FINEボーレート:最速ベリファイ無しE1:2分20秒 ← 4MB ÷ 140sec ≒ 29KB/secE2 Lite:3分10秒」E2Liteでのダウンロード速度はE1との相対比でどれくらいでしょうか?japan.renesasrulz.com/cafe_rene/f/forum21/4742/e2lite-e1/32153#32153「3MB品、8割ぐらいの使用率です。ほぼ倍ですね。 ← 2.4MB程ですねE2 Lite Load time: 41 secE2 Load time: 21secE1 Load time: 21sec ← 2.4MB ÷ 21sec ≒ 114KB/sec」
きー さん、こんにちは。NoMaYです。> E1とE2 Liteの速度差はFINEボーレートの比> E1:2Mbps> E2 Lite:1.5Mbps> で計算上は合っているんですよねでも、その計算が有効なのは、びっちりデータが詰まった通信が行われている状況下、だと思うのです。たとえば、ひとまず単純化して10ビットで1バイトが転送されるとして、E1で200KB/secとかE2 Liteで150KB/secとか、そのあたりでの話ではないかと思うのです。ただ、FINEのプロトコルというかデータ表現というか、そういうものは公開されていませんので推測にはなりますが、JTAGのTDI/TMSの状態を2ビットで表現していたりすると、それだけで単純計算机上最大転送速度は半分になり、E1で100KB/secとかE2 Liteで75KB/secとか、落ちてしまう可能性も無くはないですが、、、いや、充分あり得るのかな、、、思ったのですが、試しに、FINEボーレートを1/2および1/4へ下げてみたらどうなりますでしょうか?もし、ダウンロード時間が2倍および4倍になるようであれば、もうそれがFINEの限界ということになるような気がするのです、、、いや、でも、それですと、内蔵フラッシュにダウンロードする時も、それぐらいのダウンロード速度になる筈なので、他の方からそれぐらいの速度ですよ、というリプライが来そうな気がするのですが、、、これから来るかな、、、あっ、でも、内蔵フラッシュにダウンロードする場合とそれ以外の領域にダウンロード(というか見方を変えるとRAMへの書き込みと同義)では、FINEのプロトコルというかデータ表現というか、をガラッと変えている可能性もありますので、結局、何とも言えないのかな、、、やはり、FINEボーレートを1/2および1/4へ下げてみたらどうなるか、それが気になります、、、
きー さん、こんにちは。NoMaYです。> 以前はARM + JTAG ICEで30秒程度だったように思います。これも推測ではありますが、E1でもJTAG方式なら速い、という可能性もあるかなと思いました。逆に、ARMでもSWDだとそんなに速度は出ないかも知れません。JTAGのTCK/TDI/TDO/TMS/TRSTZの5本(TCKは数十MHz)がFINE/SWDの1本(ボーレートは数Mbps)になったことと引き換えに速度が低下してしまっていたとしても、納得出来るトレードオフと皆さん考えておられる可能性もあるかも、とも思いました。(ちょっと後ろ向きな考え方かも知れませんが、、、)[追記]あっ、RX231ではJTAG方式は出来なかったですね、、、
きー さん、こんにちは。NoMaYです。> FINEボーレート:最速> ベリファイ無し> E1:2分20秒...> E1:2Mbps> E1でFINEボーレートを750kbpsで行ってみたところ6分5秒かかり、計算上2.7倍でFINEの速度に依存していました。計算途中を書くと 2分20秒:6分5秒 = 140:365 = 1:2.61 ≒ 1/2Mbps:1/750Kbps = 1:2.67 といったところで、きっちり反比例していますね。これは、ユーザ側では改善が出来そうに無いですね。ルネサスさんにCS+の改善を持ち掛けてみるしか無さそうです。> 外部バスにプログラムを置くということをあまり想定していないのですかね...やはり、RXマイコンとしては主流の使い方では無いですので、開発している人達は、指摘されるまで気が付かなかった、といった反応を示されるのではなかろうか、と思います。とはいえ、外部バスにプログラムを置く人はちゃんといて、かふぇルネでも、RX63Nだったと思いますが、外部バスにプログラムを置いて実行させている常連の人がいらっしゃいます。(その方はデバッガを使わず、ダウンロードとかGoとかメモリダンプとかをマイコン内蔵USBのUSBシリアル経由でそういったコマンドを実行させることが出来るモニタプログラムを自作されていて、それでデバッグされているそうです。)