(toppers-users 4475) Re: GR-SAKURA「TOPPERS/ECNL」 S12AD→DMAC でUnre

長島 宏明 nagasima @ core-s.co.jp
2016年 1月 5日 (火) 10:24:07 JST


コアーズの長島です。

タイトルに「TOPPERS/ECNL」とあるので回答します。
ただ、質問の内容はカーネルの内容のように思いますので、
わかる範囲で回答します。
カーネルはECNLのリリースで使用している「TOPPERS/ASP」でよいでしょうか?

Renesasのサンプルコードで、「src\peripheral_init.c」の
「dmac_init」関数を見ると、「DMAC0」の方を使っているようですが、
「DMAC1」になるように変更しているということでよいでしょうか?
DMAC0の場合、割り込み番号は198になります。

また、「mtu_init」関数では、
/* Interrupt request enable */
IEN(MTU0,TGIA0) = 1;

「s12ad_init」関数では、
/* Interrupt request enable */
IEN(S12AD,S12ADI0)= 1;

となっていますので、126,102番の割り込みも有効になっているようです。
この割り込みハンドラの定義もされていますでしょうか?

__kernel_default_int_handler_entryが呼ばれるのは、
DEF_INHで割り当てをしていない割り込みに、
割り込みが入ったときだと思います。
そのときの割り込み番号が何かをデバッガなどで調べて教えていただけると
現象が詳しくわかると思います。

signal_time関数については、関連が見えませんでしたので、
もう少し詳しく教えてください。
どの辺りを実行したときに__kernel_default_int_handler_entryが
呼ばれているか、呼び出し元はどこかなど、教えてください。

以上です。
よろしくお願いします。

On 2016/01/04 22:54, 柴田正 wrote:
>   はじめまして。柴田と申します。
>
> 以下の環境で、S12ADの結果をDMACで取得するプログラムを実装しています。
> 1) マイコン: GR-SAKURA(RX63N:http://sakuraboard.net/gr-sakura.html)
> 2) IDE: CubeSuite+ 1.02.01
> 3) JTAG: E1
> 4) ビルドツール: CC-RX v1.02.01
>
> 割込みハンドラで再度割込みを要求(※)すると、以下のメッセージが
> syslogに出力され、DMACの割込みが発生しないようになります。
> ”Unregistered Interrupt occurs.”
>
> ※このエラーが発生する直接の原因は、time_event.cのsignal_time関数の
>      下記コードで呼出され先でBRKコマンドが実行され、
>      おそらく、無条件トラップ割込みで
>      __kernel_default_int_handler_entryが呼ばれ、
>      syslogに出力しています。
>
>
> S12AD→DMACのコードは、Renesasのサンプルコード(※)を、
> Toppersに移植したもので、私が影響あると考える部分だけを
> 下記に抜粋しました。
> お手数とは思いますが、どなたか、対策/不具合調査方法を教えてください。
> よろしくお願いします。
>
> #現在は、1CHですが、将来的には、AD、DMAC共に、2チャンネルにする予定です。
> #当たり前かも知れませんが、dmaca_dmac1_handler2関数内のコードを
>     コメントアウトすると、それ以降、割込みが発生しないため、
>     エラーが発生しません。
>
> ---- cfgファイル ----
> ATT_INI({ TA_HLNG, 0, init_task });
> CFG_INT(199, {0, -1});
> DEF_INH(199, {TA_HLNG, dmaca_dmac1_handler2});
>
> ---- ソース ----
> void init_task(VP_INT exinf) {
>      dis_int(199);
>      Init_Adc();
>      ena_int(199);
> }
>
> void Init_Adc(void) {
>       mtu_init();
>       s12ad_init();
>       dmac_init();
> }
>
> void dmaca_dmac1_handler2(void) {
>      DMAC1.DMCNT.BIT.DTE = 1;
> }
>
> ※http://japan.renesas.com/support/downloads/download_results/C1000000-C9999999/mpumcu/rx/an_r01an1265jj_rx63n_numerical_lib.jsp
>
> 以上です。よろしくお願いします。
>
-- 
--------------------------------------
コアーズ株式会社
開発部 長島 宏明
〒140-0001
東京都品川区北品川1-13-7長栄ビル3階
TEL:03-3450-8051 FAX:03-3450-8052
--------------------------------------