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

屋敷光宏 yashiki.mitsuhi @ pfu.fujitsu.com
2006年 3月 29日 (水) 16:22:02 JST


こんにちは、小南さん

r2の値を調べられればいいのですが、ICEが無いもので^^;
このループはr2が0の場合は回りつづけるとのことですが、
add r0, r0, #1
bpl find_bit_loop
の部分で抜けないのでしょうか?
(実際に、無限ループしてるってことは抜けないのか^^;)
参考ソースそのままだったのですが、問題あるコードなのかな。
ちょっと調べてみます。


ykominami wrote:

>こんにちは
>
>小南と申します。
>  
>
〜
〜

>>/*
>>* 割り込み要因の判定.
>>*/
>>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の値を調べる必要があるのではないでしょうか。
>
>  
>