(toppers-users 4056) Re: RXシリーズでのカーネル管理外設定時のassert

AKIRA KUBO akira.kubo @ konicaminolta.jp
2013年 2月 21日 (木) 14:26:06 JST


高田様

コニカミノルタオプティクス(株)
久保です。

見解ありがとうございます。

まずは、外しておきます。
この部分以外では、カーネル管理外含め割り込み動作も
問題なく動作していることをご報告させていただきます。

どうぞ宜しくお願いいたします。

> -----Original Message-----
> From: users-bounces @ toppers.jp [mailto:users-bounces @ toppers.jp] On
> Behalf Of Hiroaki TAKADA
> Sent: Wednesday, February 20, 2013 5:44 PM
> To: users @ toppers.jp
> Subject: (toppers-users 4055) Re: RXシリーズでのカーネル管理外設定時の
> assert
> 
> 久保様
> 
> TOPPERS/ASPを利用くださいまして、ありがとうございます。
> 
> メールを読ませていただいた段階で、私の見解をお知らせします。
> 
> ご指摘の通り、149行目の「 if(intatr == TA_NONKERNEL ){」は適切では
> ありません。
> 
> > (asp\include\kernel.h)
> > ・TA_NONKERNEL -> 0x02
> > ・TA_ENAINT    -> 0x01
> > ・TA_EDGE      -> 0x02
> 
> そもそも、TA_NONKERNEL は、DEF_INH に対する inhatr に対して指定する
> ための定数です。それに対して、TA_ENAINT と TA_EDGE は、CFG_INT に対
> する intatr に対して指定するための定数です(よって、値の重複は問題
> ありません)。ですので、inhatr に対して TA_NONKERNEL をチェックする
> こと自身が不適切です。
> 
> どのように修正すべきかについては別途検討したいと思いますが、とりあえ
> ずは、その部分のコードを外してくださって良いと思います。
> 
> 高田広章
> 名古屋大学
> 
> (13/02/20 16:59), AKIRA KUBO wrote:
> > コニカミノルタオプティクス(株)
> > 久保と申します。
> >
> > お世話になります。
> >
> > 本日は、カーネル管理外割り込みを設定した時点での
> > assertについて、アドバイスいただきたく、メールをお送りさせていただき
> ます。
> >
> > [状況]
> > ・TOPPERS/ASPにおいて、カーネル管理外の割込みを使用しています。
> > ・CPUはRX63Nになります。
> > ・RX62N用のTOPPERS/ASPをカスタマイズしています。
> > ・このCPUの割込みレベルの最大は15で
> >  14,15がカーネル管理外となるように設定しています。
> > ・IRQ5の割込みレベルを15に設定しています。
> > ・IRQ5割込み検出トリガはネガティブエッジに設定しています。
> >
> > [現象]
> > シスログ(シリアル)出力にて、
> >  「C:\.....\asp\arch\rx_rxc\prc_config.c:153: Assertion
> >      'TMIN_INTPRI <= intpri' failed.」と出ます。
> >
> > [詳細/質問]
> > 該当のファイル(prc_config.c)を確認したところ
> > void x_config_int( INTNO intno, ATR intatr, PRI intpri){
> > 関数の中に気になる記述を見つけました。
> >
> > 149行目の「 if(intatr == TA_NONKERNEL ){」
> > というところです。
> >
> > [intatr]というワードで関数内を検索すると
> > 174, 177, 180, 183, 207行目で使用されており
> > その全てが「if( ( intatr & TA_XXX ) != 0U ){」
> > (ただし、TA_XXXは行により異なる)
> > という記述になっています。
> >
> > (ファイルを添付させていただきます。)
> >
> > ここに出てくるTA_XXXの定義値について
> > 確認してみたところ以下のようになっています。
> > (asp\include\kernel.h)
> > ・TA_NONKERNEL -> 0x02
> > ・TA_ENAINT    -> 0x01
> > ・TA_EDGE      -> 0x02
> >
> > (asp\arch\rx_rxc\prc_kernel.h ->
> >   カスタマイズによりasp\arch\rx_rxc\prc_kernel_rx631.h)
> > ・TA_POSEDGE   -> TA_EDGE(0x02)
> > ・TA_NEGEDGE   -> 0x04
> > ・TA_BOTHEDGE  -> 0x08
> > ・TA_LOWLEVEL  -> 0x10
> >
> > ※一部カスタマイズしたところはありますが
> > 定義値やコードなどは原型のままだと認識しております。
> >
> > この定義値を見る限り、
> > 149行目の判定は適切ではないと
> > 考えているのですが、いかがでしょうか?
> >
> > それとも、カーネル管理外で使用する
> > 割込みにTA_NEGEDGEなどの属性を
> > 与えることが間違っていますか?
> >
> > TOPPERS/ASPにとって、よりよい姿を
> > 教えていただきたいと考えています。
> >
> > 不足している情報などあれば、
> > 提示させていただきます。
> >
> > なお、RX62Nでも同様の処理をしていますが、
> > 同様の結果となっております。
> >
> > どうぞ宜しくお願いいたします。
> >
> > --------------------------------------------
> > 久保 明 :コニカミノルタオプティクス(株)堺サイト
> > センシング事業部
> > 開発部 開発3課
> > 〒590-8551 大阪府堺市堺区大仙西町3-91
> > TEL 072-241-7651
> > FAX 072-241-7681
> > e-mail : akira.kubo @ konicaminolta.jp
> >
> >
> >