[so2] [Tema2] Primire intreruperi

Alexandru Juncu alexj at rosedu.org
Sun Mar 31 12:29:25 EEST 2013


2013/3/31 Fany Manea <fanymanea at yahoo.com>:
> Salut,
>
> Am si eu o intrebare legata de primirea intreruperilor. Cand ar trebui sa
> vina intreruperile de citire de la hardware?
> Vreau sa spun intreruperea prin care hardware-ul cere date din kernel.
>

Întreruprea vine când controller-ul este gata să facă schimb de date cu tine.

În primul rând ai întreruperea care zice că hw are date în bufferul
său și anunță modulul să facă o pauză din ce face kerneul și să
citească datele din bufferul hw în bufferul software (din modul) a
dispozitivului. Întreruprerea asta ar trebui să o activezi la
încârcarea modului (s-ar putea să  vrei să o dezactivezi pe parcurs).

Mai ai întrerupere care să îți zică că hardware-ul este gata să
primescă date. Când tu vrei să golești bufferul modului nu înseamnă că
e liber controlle-ul să o facă. Trebuie să îi zici controller-ului să
te notifice când el e gata să citească de la tine. Când poate primi
date, va trimite o întrerupere și tu copiezi datele în bufferul hw.

În ambele cazuri deste aceeași întrerupere ca număr. Doar că diferă
reigstrele pe care le setezi tu (ex. setezi un registru prin care să
zici să te anunțe când e clear to send) respectiv registrele care sunt
setate (ex, în întreruperea asta, poți tu să pui date în în bufferul
hardware). Nu mai știu exact care sunt registrele respective. Cred că
le găsești în lab.

> Am tot citit prin FAQ ca la write scriem date in buffer si la intrerupere il
> golim, dar eu nu primesc nimic.
> Trebuie sa simulez periodic o intrerupere? Daca raspunsul e legat de citirea
> IIR, l-am citit exact ca la laborator...
>
> Am inteles ca intreruperea de scriere vine pentru ca ati facut voi un hack
> cu legarea COM1 si COM2, dar cum vine
> intreruperea de citire?
>
> Multumesc,
> Stefan Manea
>
> _______________________________________________
> http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii


More information about the so2 mailing list