[pso] [Tema2][Windows] Disable RDAI Interrupt

Andrei Voinescu voinescu.andrei at gmail.com
Fri Apr 23 17:58:34 EEST 2010


2010/4/23 Macicas Teodor <teodor.macicas at cti.pub.ro>:
>
>
> Andrei Voinescu wrote:
>>
>> 2010/4/23 Macicas Teodor <teodor.macicas at cti.pub.ro>:
>>
>>>
>>> Salut,
>>>
>>> Am o problema cu dezactivarea intreruperii RDAI atunci cand buffer-ul
>>> read
>>> este plin.
>>> Apelez WRITE_PORT_UCHAR((PUCHAR) IER(data->base),
>>> READ_PORT_UCHAR((PUCHAR)
>>> IER(data->base)) & ~IER_RDAI ); in ISR. Tester-ul se blocheaza imediat
>>> dupa
>>> ce bufferul read este plin si se face aceasta dezactivare.
>>>
>>> Aveti vreo idee de ce se intampla asta ?
>>>
>>
>> Și dacă nu dezactivezi întreruperea dar dai discard la caracterele
>> care mai vin ce se întâmplă?
>>
>
> Dupa ce am comentat dezactivarea intreruperii si am incercat sa fac un
> READ_PORT_ a inghetat tot sistemul - fara BSOD.
> Ceea ce mi se pare amuzant, e ca daca pur si simplu fac doar un 'break' din
> while-ul din ISR cand buffer-ul read este plin, toate testele, inclusi imi
> trec. Fara sa ma chinui in vreun fel cu dezactivarea intreruperii RDAI.
> Exista vreo explicatie pentru asta ?
>
> Tin sa precizez ca buffer-ul meu este, intentionat, f mic - 20char pentru si
> se ajunge de multe ori in situatia cand este plin. N-ar fi trebuit ca acele
> intreruperi netratate sa ma conduca la pierderea unor caractere ?!

Teoretic da. Practic însă, fiind și în mediu virtualizat, nu te
aștepți să corespundă 100% așteptărilor, mai ales că nu sunt multe
ordine de mărime diferență între buffer-ul cu care se face testul și
buffer-ul tău din driver (+FIFO).  Va exista un delay între trasmisie
și recepție practic care-ți acoperă diferențele între mărimea
buffer-elor.

Oricum în momentul în care e buffer-ul plin, tu vei pierde caractere
și dacă vine întreruperea și dai break, și dacă o dezactivezi.
>
> Multumesc.
> -Teodor
> _______________________________________________
> pso mailing list
> pso at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>


More information about the pso mailing list