こんにちは。NoMaYです。ひとつ立てても良さそうな気がしましたので立ててみました。もっとも、その前に気になる問い掛け、が無いわけでは無いですけれども、、、● マイコンベンダ提供のソフトウェア開発フレームワークと共存させることが苦痛な実装のRTOSを今後も新規プロジェクトで使う予定がありますかね[関連スレッド]スマートコンフィグレータの自動生成をカスタマイズしたいjapan.renesasrulz.com/cafe_rene/f/forum5/8248/threadFITの割込みハンドラの実装についてjapan.renesasrulz.com/cafe_rene/f/forum5/8212/fitRX72Nで簡易I2C通信をしたい。DATAは出力されているがCLKが何故か正しく出力されない。。japan.renesasrulz.com/cafe_rene/f/forum5/7129/rx72n-i2c-data-clkFITでの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
Muraさん解決できてよかったです!(いいねボタンが欲しいw)
ふぐりん さん、こんにちは。NoMaYです。今しがた頭に思い浮かんだのですけれども、ひとまず、そうしてしまっても良い話なのか、そういう話では無いのか、というのは脇へ置いて、NORTi_interrupt.cのコードの中でKNL_LEVELマクロ定義を参照して、PSW.IPLの方が大きい値だった場合には自動的にv3_ent_int()を呼ばないようにスキップしてしまう、というように出来るかも知れないなぁ…
ふぐりんです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さんのソースを転載してもよろしいでしょうか?許可いただければ、ファイルとしてそのまま収録したいと思います。
ふぐりんさん、こんにちは。
遅くなりましたが、github 拝見しました。
丁寧にまとめて頂きありがとうございます。
感謝、感謝で、ありがたく使わせていただきます。
ka.makiharaさん見ていただき嬉しいです!ありがとうございます!
(よーし、もうちょっと書き足そうw)
GitHubに動作の解説を追加しました。図を描くだけで力尽きました・・
https://github.com/mkogax/How-to-use-NORTi-with-RX-Smartconfigurator/blob/master/README_exp.md
ふぐりんさん、こんにちは。Muraと申します。
RXシリーズでNORTiをSmartConfiguratorと使おうとしておりましてふぐりんさん、NoMAYさんご考案の方法にて実現しようとしております。
CC-RXでビルドしますと、NORTi_interrupt.cのstatic void dummy_NORTi_INT_HOOK(void)関数で関数内にコメント記載のあるE0552111:Symbol is undefined のエラーとなります。
知識不足で申し訳ございません。対処方法についてご教示頂けますと幸いです。
Muraさん、こんにちは。NoMaYです。これは私の案件ですね。たぶん、NORTi_interrupt.hの中で変更した#defineのどれかにスペルミスがあったのだと思います。ごめんなさい、最初に作った者として申し訳ないですが、よ~くNORTi_interrupt.hの中を見て頂けないでしょうか?
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.?:
あ!ほんとだwNoMaYさんさすが
NoMayさん、ふぐりんさん こんにちは。Muraです。
すみません。本当ですね。失礼しました。
あと当該関数含めたstatic宣言もいろいろ試しているうちに外したものお送りしてしまってます。
ご指摘の ?: を元通りに修正したら、ビルド通りました。ご教示ありがとうございました。