Salve ragazzi,sto cercando di capire la parte di input output ma ho alcuni dubbi e vorrei chiedervi un aiuto. Ho capito che nel registro di dato vanno messe le variabili "oggetto" della traccia e in quello di stato tutti i segnali di ingresso e uscita tra la cpu e l' i/o box ma non ho capito come si determinano le lunghezze di questi registri...Perchè sono lunghi 8 o 32 bit ? possono essere anche di altre lunghezze o solo queste due? (credo solo queste due lunghezze ma domando x scrupolo...) e per scrivere il driver,ho capito che devo caricarmi in dei registri le mie variabili dato,leggere dall'area di memoria le configurazioni,caricarle in registro e usare o il polling o le interruzioni e vorrei sapere come usarle,mi spiego meglio :
ho un esercizio in cui mi dice che il segnale ready = start * disp . Allora nel driver io ho letto la configurazione di start (che avevo precedentemente salvato nel RS),ho letto ready e poi dovrei vedere di usare le interruzioni perchè così è richiesto,dunque io farei una tne $t1,$t2 e andrei avanti ( t1 = start ,t2 =ready) ...La mia domanda è : è sempre così che devo fare? Cioè,se mi dice nella traccia che ready è causa di interruzioni e dall'equazione logica vedo ke è legata a start allora su start e ready faccio la trap?
Un'altra domanda : suppongo che $s2 sia il puntatore all'area di memoria dove ho le mie configurazioni e che siano byte : allora devo fare la load byte per leggere start e dopo,per leggere ack devo fare un'altra load byte
es : lb $t2,0($s2)
lb $t3,1($s2)
perchè metto 1 ? E se avessi avuto i registri a 32 bit avrei dovuto fare una load word e come avrei indirizzato?
Chiedo scusa per il papiro,grazie a chi mi risponderà!
Corsi di Laurea
ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.
Accetto l'uso dei cookie