こんにちは、よしとです。
r_fwup 1.06 がサポートしている環境には RI600V4 が動作しているシステムは含まれていないと思います。
しかし、RX66N + RI600V4 のシステムで何とかセルフアップデートを実現したいと考えており、RI600V4 に対して何らかの処置をすれば動作できるのではないかと考えていろいろと試しています。やりたいことは、ユーザコマンドを処理するタスクでファームウェアアップデートコマンドを認識したら、SCI経由のファームアップ機能を起動してファームのセルフアップデートをDUAL modeで行うという事です。
これを実現しようとして色々やってみているのですが、r_flash_fcu.c 内の Excep_FCU_FRDYI() から flash_ready_isr_handler() を呼んでいる部分までは走っていることが追跡できるのですが、その後 _RI_sys_dwn() に捕まってしまいます。_RI_sys_dwn() 内でパラメータを確認したところ、type=-1, inf1=-25, inf2=3, inf3=213440(不定値)となっており、「カーネル管理割り込みハンドラ終了時点で,PSW.IPL >カーネル割り込みマスクレベルである。」というエラーで捕まったものと思われます。PSW.IPL をレジスターウィンドウで確認したところ、0 でした。
この状況はファームアップを開始する直前に dis_dsp() をコールしてみたり loc_cpu() をコールしてみたりしても同様でした。
アップデートを開始する前にRTOSに対して何か処理をすれば回避できるものでしょうか。
何かお分かりになる方がいらっしゃいましたらご教授頂けましたら幸いです。
以上、よろしくお願いいたします。
よしと さん、こんにちは。NoMaYです。以下の部分の話の流れが整合していないように思いました。変じゃないですか?PSW.IPL = 15 だった、なら分かりますが。「カーネル管理割り込みハンドラ終了時点で,PSW.IPL >カーネル割り込みマスクレベルである。」というエラーで捕まったものと思われます。↓↑PSW.IPL をレジスターウィンドウで確認したところ、0 でした。それはそれとして、どうするかですよね。FITモジュールには、ちょこちょこ、RI600V4対応が追加されたりすることがあるのですけれども、 r_fwupモジュールは、まだなのですかね、、、(でも、そういう話でも無さそうなのかな、、、)[メモ]すみません、置かせて下さい。・ 以前に質問された案件RX66N ファームアップでバンクスワップ動作しないcommunity-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/10166/rx66n・ デュアルモード書き換えなのだから、例えば、以下のスレッドのRAM実行の件さえ気をつければ、割り込みはOKの筈であるデュアルバンク機能時の割り込み処理についてcommunity-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/10101/thread・ E1/E2Liteでも可能なオンチップデバッグトレース機能で _RI_sys_dwn() に捕まるまでの過程を追うことは出来ないだろうか・ RI600V4にソフトウェア的なトレース機能ってなかったのだったっけ・ ひょっとして、RI600V4 のソースライセンスは持っていない、のかも(ソース無しでも、本件を追うことは、出来るのかなぁ)・ ごく単純に以下のようなことをしてみるとどうなるだろうか(r_fwupモジュールは使わない) RI600V4がヘビーに動作するような人為的な、負荷を掛けるプログラム、のようなものを作成する デュアルバンクの片面の全域を、消して、0x55を書いて、消して、0xAAを書いて、するようなものを作成する 両者を同時に動かして、不具合が再現したら、まずそこを何とかしてみる・ RI600V4ってRTOSを止めるシステムコールは無いのかな・ ↓開始時点で捕まえることは出来ないのかな。(それとも捕まえる機構はちゃんとあり、でも開始時点では問題無し?)「カーネル管理割り込みハンドラ終了時点で,PSW.IPL >カーネル割り込みマスクレベルである。」というエラーで捕まったものと思われます。・ カーネルに登録してはいけない、高優先順位の割り込みをうっかり登録してしまっていたり、とかの可能性はどうだろうか・ 暗号処理とか割り込みって使っているのかな・ _RI_sys_dwn() のドキュメントはどこだろう[追記]top > RI600V4環境 > コーディング編 > システム・ダウン第13章 システム・ダウン tool-support.renesas.com/autoupdate/support/onlinehelp/ja-JP/csp/V8.09.00/CS+.chm/Coding-RI600V4.chm/Output/SYSDOWN.html
NoMaYさん、こんにちは、コメントありがとうございます。
書くのを忘れたようですが、PSW.IPL の値を確認したのは _RI_sys_dwn() の無限ループに落ちている状態でしたので、トラップされたときから既にエラー処理の途中で変更されていたのではないかと考えていました。
RI600V4のソースライセンスは持っていません。
> RI600V4の使用経験はどれくらいでしょうか?ベテラン級でしょうか?それとも、今回が初めてだったりするのでしょうか?
RX66N も RI600V4 も今回のプロジェクトが初めてで、RTOSを使ったシステムの開発経験はそれなりに有りますが、このシステムに関しては初心者です。
> (1) カーネル割り込みマスクレベルの値は幾つでしょうか?
カーネルのマスクレベルは7で使っています。
> (2) そのレベル以上の優先順位の割り込みをカーネルに登録していたりしませんでしょうか?
カーネル管理外の割り込み(優先順位 > 7)は使っていますが、全てシステムコールを使わないものです。
> (3) カーネルに登録済みの割り込みの割り込み優先順位を全て書き出すとどうなっていますでしょうか?
「カーネルに登録済みの割り込み」は何をお答えすればよろしいでしょうか。
> そういえば、そもそも、RI600V4とFITの個別モジュールって共存出来るのでしたでしょうか?FITのBSPモジュール は使えるようになっていたと思うのですが(それとCMTモジュールも?)、FreeRTOSやAzure RTOSの場合とは異なり、皆さん、割り込みハンドラをゴリゴリ手書きしているのでは無かったでしょうか?
RI600V4 と 各種FITモジュールが共存したシステムで正常に動作していますが、そういうことを仰っているのではないのでしょうか。
中途半端なお答えで申し訳ありません。