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

AKIRA KUBO akira.kubo @ konicaminolta.jp
2013年 2月 20日 (水) 16:59:03 JST


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

お世話になります。

本日は、カーネル管理外割り込みを設定した時点での
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



-------------- next part --------------
$B%F%-%9%H7A<00J30$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
$B%U%!%$%kL>(B: file.zip
$B7?(B:         application/x-zip-compressed
$B%5%$%:(B:     9590 $B%P%$%H(B
$B @ bL@(B:       file.zip
URL:        <http://www.toppers.jp/pipermail/users/attachments/20130220/bcc7ff49/attachment.bin>