(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