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

AKIRA KUBO akira.kubo @ konicaminolta.jp
2013年 2月 22日 (金) 09:14:05 JST


高田様。

下記件、承知いたしました。
ありがとうございます。

> -----Original Message-----
> From: users-bounces @ toppers.jp [mailto:users-bounces @ toppers.jp] On
> Behalf Of Hiroaki TAKADA
> Sent: Thursday, February 21, 2013 4:08 PM
> To: users @ toppers.jp
> Subject: (toppers-users 4057) Re: RXシリーズでのカーネル管理外設定時の
> assert
> 
> 久保様
> 
> 開発者と話した結果、当該部分を外せばよいことを確認してもらいま
> した。
> 
> 配布しているファイルは別途修正する予定ですが、その状態でお使い
> いただけると幸いです。
> 
> 高田広章
> 名古屋大学
> 
> (13/02/21 14:26), AKIRA KUBO wrote:
> > 高田様
> >
> > コニカミノルタオプティクス(株)
> > 久保です。
> >
> > 見解ありがとうございます。
> >
> > まずは、外しておきます。
> > この部分以外では、カーネル管理外含め割り込み動作も
> > 問題なく動作していることをご報告させていただきます。
> >
> > どうぞ宜しくお願いいたします。
> >
> >> -----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
> >>>
> >>>
> >>>