RX66N + RI600V4 環境で r_fwup によるセルフアップデートは可能?

こんにちは、よしとです。

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に対して何か処理をすれば回避できるものでしょうか。

何かお分かりになる方がいらっしゃいましたらご教授頂けましたら幸いです。

以上、よろしくお願いいたします。

Parents
  • よしと さん、こんにちは。NoMaYです。

    すみません、逆に私からお聞きしたいことがあります。くだんの静的APIで entry_address = Excep_FCU_FRDYI(); と書ける、ということは、どこに記載があったのですか?それとも、御自身であれこれ調べて辿り付いたことでしょうか?実は、古い知識ですと、Excep_FCU_FRDYI() は static関数 であり、FITのr_flash_rxモジュールの本関数が記述されているソース以外からは参照出来ないものだった筈なのです。

    実は、昨夜、以下でグーグル検索を試みていたのですけれども、まったくパッとしない!、そんな検索結果だったので私は辿り付けなかったのでした。

    Google検索: RI600V4 FIT
    https://www.google.com/search?q=RI600V4+FIT
     

  • NoMaY さん、こんにちは。 よしとです。

    件の記述は同僚が作ったフレームワークプロジェクトから引き継いだもので、今作った本人に確認のメールを投げていますが、多分 Smart Configraor for RX が吐き出したものだと思います。

    なお、Excep_FCU_FRDYI() の定義は R_BSP_ATTRIB_STATIC_INTERRUPT void Excep_FCU_FRDYI(void); ですが、r_rx_compiler.h ファイルに R_BSP_ATTRIB_STATIC_INTERRUPT を RI600V4 または RI600PX 環境の場合はブランクに定義する #define が存在しています。 それ以外の環境では R_BSP_ATTRIB_STATIC_INTERRUPT は static に defineされているので  Excep_FCU_FRDYI() は static 関数となりますが、RI600V4 環境では static 関数ではなくなります。

    以上、よろしくお願いいたします。

  • NoMaY さん

    すみません、Smart Configrator for RX ではなく、多分、RI600V4 の GUI Configrator_e2 が吐いたものですね。

    同プロジェクトの RI600V4 の GUI Configrator_e2 の定義ファイルに記述が有りました。

  • NoMaY さん、こんにちは。

    フレームワークを作った本人から以下の回答が有りました。

    【回答の内容:要約】

    ドキュメントにはベクタ情報しか記載されておらず、コードを調べて関数名を特定して手動で RI600V4 の GUI Configurator_e2 に記述した。

    立ち上げ当初、Smart Configurator で設定し生成されたコードだけでは動作せず、各Driverの割り込みベクタが生成されていないことに気づき、一つ一つDriverの割り込み関数を調査し設定した。 とのことでした。

    Excep_FCU_FRDYI() の関数名はルネサスのサイトで検索しても記載してあるドキュメントは見つかりませんでした。

    努力が必要なようですね。(^^;  改善されると良いのですが・・・

    以上、よろしくお願いいたします。

  • よしと さん、こんにちは。NoMaYです。

    そういうことでしたか。そういう経緯だったのですね。リプライを大変ありがとうございました。

Reply Children
No Data