お世話になります
RA6M5 でのカスタムボードを制作。TCP/IPサーバ 及び FTPクライアントとして 動作させています。書き込み手順による動作不良で困っています
新規ボードに対して(1度もマイコン書き込みを行っていないものについて)
(1) E2Studioより SWDで書き込み --->動作OK (2) Renesas Flash Programmer で ブートモード USBFSによる Hexファイル書き込み --->動作不良 (3) (1) のあとの (2) --->動作OK この違いは一体何でしょう助言いただきたく よろしくお願いします。
「通常起動、動作不良」の意味がよくわかりません。起動しているけど動作が異常だということで--> そうです。 どこかで止まっているようです 1度でもデバッグをしたマイコンに対しては Renesas Flash Programmer でHexファイルを書き込んだ後に 正常に動作するのです デバッグ時に何かしら おまじないされたような そんな感じです
だとすると簡単なプログラムでは起こらなそうですね。
まさかHEXとデバッグでビルドした構成が違うとかはないでしょうか?RAはビルド構成が通常2つ用意されるので気になりました。例えば、編集している間に構成に差が出て、マクロで処理が通らない部分が片方にあってそれがネットワークアプリケーション内部で使うためのFlashROM領域で一度だけ初期化されるような使い方がされるとかです。
リカルドです。
RX621をUSBで書き込もうとしたとき、電源を切ってあるE2Liteが繋がっていると書けなかった。 コネクタを外しました。
エミュレータが繋がったままですとリセットピンがLowになるんでしょうね。マイコンは停止した状態ですから。SeggerのJ-Linkも持っていますが、そっちはリセットを解放しています。ルネサスはそうならないようしたんでしょう。
構成はデバッグのみで使用していますどうやら 動作不良時は ネットワークの構成等 イニシャライズがすべてSuccessで戻ってきているにも関わらず PCとTCPIP通信ができない 。PINGさえも通らないという状態に陥っているようです
明らかに違いがありそうですね。ネットワークのスタックに何かライセンスで制限とかあったりしませんか?評価しかできないなど。
1つ提案ですが、
・デバッガでFlashROMを書いたボードのROMをRFPで読み込む
・FRPでUSBブートを使ってHEXを書いたボードのROMをRFPで読み込む
この二つのROMデータをHEXDUMP等で比較して違いが出るかをまずチェックするのがいいように思います。JLinkを使っているとのことですのでROM読み込みはRFPではなくJ-Flashを使っても良いかもしれません。
正常動作するチップに対し、RFPで接続して、
ターゲットデバイス-フラッシュオプションを読み出す
で、
Boundaryの値を読み出してください。この値を、ブランクチップ(or正常動作しないチップ)に
フラッシュオプションのBoundaryの値に設定して、フラッシュオプションの書き込みを行ってください。(この操作で、正常動作する様になるはずです。)
この値は、TrustZone対応マイコンに存在し、メモリの「セキュア」「非セキュアコーラブル」「非セキュア」の区分を設定するものです。
デバッガ接続の場合は、この値がチップに書き込まれる。それに対し、mot(srec), hexファイル内には、このBoundaryの情報はありませんので、RFPでmot, hexファイルを書き込んでも、Boundaryの設定は反映されません。
ビルドを行ったフォルダ(Debug等、.srec, .hexファイルの出力先)に、プロジェクト名.rpdというファイルが出力されており、
-----プロジェクト名.rpd
RAM_S_START=0x20000000RAM_S_SIZE=0x2400RAM_C_START=0x20002400RAM_C_SIZE=0x1c00FLASH_S_START=0x0FLASH_S_SIZE=0x8c00FLASH_C_START=0x8c00FLASH_C_SIZE=0x7400
(後略)
このファイルに、Boundaryの情報がありますので、RFPで書き込む際、フラッシュオプションの所に設定してください。
#一度書き込んだのですが、書き込みが上手く行かなかったので、再度書き込みました
#重複投稿になった場合は申し訳ありません
RL78の小ピン(RESETと汎用I/Oが兼用ピンになっている)マイコンは、電源投入前からRESET=Lにしておかないと、書き込み・デバッグが出来ない(ケースがある、オプションバイトで汎用I/O端子に設定しているチップでは)ため、E1, E2, E2Lite, E20は、RESET=Lの仕様になっているのだと思います。
ありがとうございます!!!本当に 本当に 助かりました。
ちょっと補足です。
本件は、Boundary設定に起因する動作不具合であったかと思いますが、
EDMACは、非セキュアなモジュールです。Ether通信時、EDMACがアクセスする送受信バッファやディスクリプタをRAM上に配置して動作させますが、この領域は「非セキュア」である必要があります。
Boundary設定とディスクリプタの配置アドレスには関連がありますので、その関係を意識していなかった場合、バッファサイズやディスクリプタの数を増やしたらEtherの通信が通らなくなったという事は起こりえます。
(TrustZone対応マイコンを使う場合は、メモリのセキュア区分とモジュールがどのメモリにアクセス可能か、などを考慮する必要があると思います。TrustZoneの機能を完全にオフに出来れば良いのですが、そういう使い方は出来ないようですので、ちょっと面倒です。)