[Armadillo:05596] Re: Armadillo-9 の割り込みのフリップフロップ

Yasuhisa Nakamura email@hidden
2010年 8月 6日 (金) 19:30:10 JST


中村です。

波塚さん、
ご回答いただき、ありがとうございます。

> Armadillo-9のハードウェアマニュアルに記載しているFFは、
> ご指摘の通りエッジ検出と保持を行っております。

私の最初の質問の
>> ・ここに記載されているFFは、どのようなFFでしょうか?

は、立ち上がりエッジ検出でよろしいでしょうか?
(このメールの後半に書いたことを考えると立ち上がりに思えます)


> IMRが"1"の場合に、割り込み入力のマスクと同時にISRの値をクリアする処理も含まれています。

ということは、arch/arm/mach-ep93xx/irq.c の

static void mask_ack_irq_intisa3 (unsigned int irq)
{
    u8 mask;

    mask = 1 << (irq - IRQ_ISA_BASE);
    miscreg_intmr3 |= mask;
    MISCREG_INTMR3 = miscreg_intmr3;
    MISCREG_INTCR3 = mask;
}

の
    MISCREG_INTCR3 = mask;
は、やらなくても同じ、ということですね。


私のもう1つの疑問点の

>> で、その次のマスクの解除です。
>> unmask_irq_intisa3: now:      MISCREG_INTSR3=0x0
>> unmask_irq_intisa3: unmasked: MISCREG_INTSR3=0x1
>>
>> PC/104バスの割り込み入力IRQ3(B25端子)はオープンのまま、つまり
>> HIGHレベルのままですが、マスクを解除するとISRが1になります。
>>
>> ここでこのメール冒頭の質問になります。
>> このフリップフロップはどのようなフリップフロップなのでしょう?

この挙動をどう説明するか?、ですけれども・・・もしかして、
このメールの上の方に書いた「立ち上がりエッジ検出」だとすると、
・IMRの入力はHigh
・入力をマスクすることによりFFの入力がLowになる
・IMRの入力はHighのまま
・マスクを解除したときにFFの入力がHighになる

このため、FFがこの立ち上がりエッジを拾ってしまっている、
ということでしょうか?

だとすると、このハード構成(と現在のirq.cの処理)では、
IRQ信号としてLowパルス出力するようなボードはは割り込みを
使えないことになりますが、この理解で正しいでしょうか?

#用途を限定してirq.cに手を入れれば使えるかな?とも思ってます。

-- 
なかむら




armadillo メーリングリストの案内