MISPOさんのNORTiをRX SmartConfiguratorと一緒に使いたい場合の課題と対策を考察してみるスレッド

こんにちは。NoMaYです。

ひとつ立てても良さそうな気がしましたので立ててみました。

もっとも、その前に気になる問い掛け、が無いわけでは無いですけれども、、、

● マイコンベンダ提供のソフトウェア開発フレームワークと共存させることが苦痛な実装のRTOSを今後も新規プロジェクトで使う予定がありますかね

[関連スレッド]

スマートコンフィグレータの自動生成をカスタマイズしたい
japan.renesasrulz.com/cafe_rene/f/forum5/8248/thread

FITの割込みハンドラの実装について
japan.renesasrulz.com/cafe_rene/f/forum5/8212/fit

RX72Nで簡易I2C通信をしたい。DATAは出力されているがCLKが何故か正しく出力されない。。
japan.renesasrulz.com/cafe_rene/f/forum5/7129/rx72n-i2c-data-clk

FITでのSCI使用時に文字を1文字送信すると、プログラムが固まります。
japan.renesasrulz.com/cafe_rene/f/forum5/7071/fit-sci-pc-1
 


RX SmartConfiguratorで気になった点とか改善する案とか報告してみるスレッド
japan.renesasrulz.com/cafe_rene/f/forum5/7536/rx-smartconfigurator/42599#42599
 

Parents
  • ふぐりんです
    NoMaYさんこんにちは。


    以下のスレッドでNoMaYさんに作っていただいたプログラムで
    NORTiをRX SmartConfiguratorと一緒に使えるようになったようです。
    NORTiユーザとしてFITとの同居という念願がかないました。(共存させることが苦痛な実装のRTOSじゃなくなった?w
    NoMaYさんありがとうございました!

    スマートコンフィグレータの自動生成をカスタマイズしたい
    japan.renesasrulz.com/.../thread

    ソース追いかけたり実験したりしてたので遅くなりましたが確認が取れました。
    詳しいやりかたなどは私のGitHUB(github.com/mkogax)に上げたいと思っていますが、NoMaYさんのソースを転載してもよろしいでしょうか?許可いただければ、ファイルとしてそのまま収録したいと思います。
    以下簡単なご報告です。

    ----------
    セットアップ
    ----------
    NoMaYさんの NORTi_interrupt.c (20220629_2版) をそのまま改変なしで使用しました。
    ただし、NORTi_interrupt.h で全て NORTiタイプを指定し、INTBにはNORTi管理のベクタテーブル(RAM)を登録します。
    NORTi側は初期化時に呼ばれる intini() (利用者が作るヘルパ関数のようなもの)を改造するだけです。

    ----------
    効果
    ----------
    ・FIT/CGは改変なしでそのままNORTiを利用できます。(コールバックでNORTi利用可)
    ・NORTiの割込みハンドラ(def_inh())をそのまま利用できます。
    ・NORTiの割込みサービスルーチン(cre_isr())をそのまま利用できます。(最初におまじない必要)
    ・FIT/CGの割込み処理はNORTi対応で少しオーバヘッドが増えますが、NORTiを使わないで高速に処理したい場合(nonOS)はdef_inh()で対応できます。

    ----------
    実験(Target Board for RX130,CS+)
    ----------
    ・r_cmt_rx(FIT)の10msec周期コールバックからNORTiのチックタイム通知(isig_tim())
    ・TMR0(CG)で#pragma interrupt の割込みルーチンからタスク起床(wup_tsk())
    ・TMR1(CG)の改造でdef_inh() のNORTi割込みハンドラからタスク起床(wup_tsk())
    ・TMR2(CG)の改造でcre_isr() のNORTi割込みサービスルーチンからタスク起床(wup_tsk())
    ・TMR3(CG)で#pragma interrupt の割込みルーチンを非NORTiとして再登録(def_inh())してカウンタ変数更新を確認

  • ふぐりん さん、こんにちは。NoMaYです。

    どうもありがとうございました。新たな技も開発されたみたいですね。そして、以下の件、もちろん転載して構わないです。

    > 詳しいやりかたなどは私のGitHUB(github.com/mkogax)に上げたいと思っていますが、NoMaYさんのソースを転載してもよろしいでしょうか?許可いただければ、ファイルとしてそのまま収録したいと思います。

  • NoMaYさん、こんにちは。Muraです。

  • NoMaYさん、こんにちは。Muraです。

    Enter to Replyのチェックを外すの忘れて、改行の度にReplyしてしまっていました。失礼しました。

    ご教示ありがとうございます。

    Gitからダウンロードさせて頂いたNORTi_interrupt.hを加工なしで使用させて頂いております。ファイルの内容確認しておりますが特に原因となるようなものは見つけれておりません。

    切り分けで試してみるようなことでも、解決のヒントになるようなことございましたら何でも試してみますので連絡頂けますと幸いです。

  • Muraさん、こんにちは。NoMaYです。

    すみません、開発環境が、CS+であればmtpjファイルを、e2 studioであれば.projectファイルと.cprojectファイルを、zipファイルに固めてリプライに添付して頂けないでしょうか?

  • NoMayさん、こんにちは。Muraです。

    お手数お掛けしまして申し訳ございません。

    e2studioの.projectファイルと.cprojectファイルを添付いたします。e2studio_proj_cproj_20220902.zip

    よろしくお願いいたします。

  • Muraさんこんにちは。
    私はCS+でやってまして・・e2studioでいただいた設定を見ながらCS+でちょっと試してたんですが、CS+では再現できませんでした。すいません。(RX66N/v3で試しました)

    とりあえず私のGitに置いているNORTi_interrupt.hを使う限りでは dummy_NORTi_INT_HOOK(void)関数は使わないようです。
    dummy_NORTi_INT_HOOK(void)関数と参照している行(93行目)をコメントアウトしても、ビルド+実行できました。よかったらお試し下さい。
    (すいません。NoMayさんのエリアですが・・)

  • Muraさん、こんにちは。NoMaYです。

    頂いたファイルとGitHubからダウンロードしたNORTi_interrupt.hとNORTi_interrupt.cを使ってコンパイルしてみましたが、エラー無くコンパイル出来ました。今度は、NORTi_interrupt.hとNORTi_interrupt.cの2つをzipファイルに固めてリプライに添付して頂けないでしょうか?

  • NoMayさんおひさしぶりです!
    確認ありがとうございます。
    原因はなんでしょうね・・気になるw

  • ふぐりんさん、こんばんは。Muraです。

    ご確認頂いて申し訳ないです。CS+で問題ないこと、当該関数をコメントアウトしても問題ないこと承知しました。

    未使用っぽいので、関数と関連する部分をコメントアウトしてみたのですが、次は隣接する関数が同様のエラーとなるので問題がどこにあるのか分からなくなってしまってまして..

  • NoMayさん、こんばんは。Muraです。

    ご確認頂きましてありがとうございます。ファイル2つ添付いたします。

    Cソースとヘッダー_20220902.zip

    お手数お掛けいたします。

  • Muraさん、こんにちは。NoMaYです。

    頂いたファイルとGitHubからダウンロードしたNORTi_interrupt.hとNORTi_interrupt.cを比較してみたところ、うっかりe2 studio上で手を滑らせてしまったのだと思いますが、NORTi_interrupt.cの以下の ?: の行が無くなっていましたよ。

        JMP R15 // Program will return to the next label from the interrupt service routine by RTE.
    ?:

     

Reply
  • Muraさん、こんにちは。NoMaYです。

    頂いたファイルとGitHubからダウンロードしたNORTi_interrupt.hとNORTi_interrupt.cを比較してみたところ、うっかりe2 studio上で手を滑らせてしまったのだと思いますが、NORTi_interrupt.cの以下の ?: の行が無くなっていましたよ。

        JMP R15 // Program will return to the next label from the interrupt service routine by RTE.
    ?:

     

Children