(toppers-users 2361) Re: EZ-ARM移植での割り込み処理について

ykominami ykominami @ nifty.com
2006年 3月 29日 (水) 16:11:41 JST


こんにちは

小南と申します。

On Wed, 29 Mar 2006 15:01:29 +0900
屋敷光宏 <yashiki.mitsuhi @ pfu.fujitsu.com> wrote:

> こんにちは
> 
> デザインウェーブの4月号の記事を参考にオプティマイズさんのEZ-ARMに
> Toppersを移植しておりますが、割り込みの処理のところで詰まっております。
> 割り込み要因を切り分けるループ(find_bit_loop:のところ)から抜け出せない
> のですが、ICEも無いため何が原因か切り分けれず困っております。
> 有識者のお知恵をお借りしたいです...
> 
> ------------------------------------ソース------------------
> /*
> * 割り込み要因の判定.
> */
> ldr r1, =VICSoftIntClear
> @ ldr r0, =VICIRQStatus
> ldr r0, =VICRawIntr
> ldr r2, [r0]
> stmfd sp!, {r2} /* マスクビットの退避 */
> ldr r2, [r1] /* ステータスビットのクリア */
> 
> mov r0, #1
> mov r3, #1
> 
> find_bit_loop:
> mov r1, r3, lsl r0
> tst r2, r1
> bne find_bit_end
> add r0, r0, #1
> bpl find_bit_loop
> 
> find_bit_end:
> mov r3, r0
> ldr r0,=int_mask_table /* 割込みマスクテーブルの呼び出し*/
> ldr r0,[r0,r3,lsl #2] /* r0<-割込みマスク */
> ldr r1, =VICIntEnClear /* 割込みレジスタへのセット */
> str r0,[r1]
> 
> ldr r0, =int_table /* 割込み疑似テーブルの読み出し */
> ldr r0, [r0,r3,lsl #2] /* r0<-割込みハンドラ */
> 
> ------------------------------------ソース------------------

有識者ではないですし、ARMは本での知識しかありません。
ただ上記のプログラムをみた限りでは,

find_bit_loop:
の中で,

> tst r2, r1

とされているループ脱出の判定条件は、r2が0の場合は常に
成り立たないと思います。

この部分でループから抜け出せないことがはっきりしている
のであれば、r2の値を調べる必要があるのではないでしょうか。

----------------------------------- 
小南 ykominami @ nifty.com