Newsgroup: it.comp.programmare
Titolo: Accesso a  device esterni(simulatore 68000)

Sempre dal sito del Prof. di cui vi parlavo:
* Esempio di accesso ai device
* con gestione degli indirizzi
* memory mapped
* Esempio di accesso ai device
* con gestione degli indirizzi
* memory mapped
            org $400
leds       equ $E003
switches   equ $E001
main       movea.l #leds,a0
            movea.l #switches,a1
loop       move.b (a1),(a0)
            bra loop
            end main
Quei device  sul mio simulatore sono definiti in questo modo(copio e 
incolla dell'help del simulatore, se conoscete già come funzionano 
saltate a piè pari):
Switches
This input device consists of a row of 8 toggle switches numbered 0 to 7 
and correspond to 8 bits with the same number of memory location $E001. 
Alternatively, the switches can be read as a 16-bit word from location 
$E000, however the highest 8 bits are undefined in this word. These 
locations cannot be written to.
A switch can be toggled by clicking the left mousebutton on the desired 
switch. A switch is ON if the red LED in the switch is illuminated, this 
results to a logical ‘1’ in the corresponding bit position of memory 
location $E001.
No keyboard interface is provided to this I/O device, although, once 
selected by clicking the mouse, a switch can be toggled with the space bar.
LED’s
This output device consists of a row of 8 LED’s numbered 0 to 7 and 
correspond to 8 bits with the same number of memory location $E003. 
Writing a logical ‘1’ to any bit in this location turns the 
corresponding LED on. Alternatively, the LED’s can be written as a 
16-bit word to location $E002, however the highest 8 bits are ignored.
Fermo restando che mi è tutto abbastanza chiaro non capisco a cosa 
voleva arrivare il prof. con questo codice.
In pratica quel codice non fa nulla, non fa che copiare all'infinito 0 
in zero nei device... mahh...
-- 
Bonus di 25 euro su 
betfair.it
, codice da inserire: AAAACGWFG
Vai sul mio sito(in fondo alla pagina) per altri dettagli:
http://digilander.libero.it/maxxam99/

 in zero nei device... mahh...
Ragazzi ho capito! :-)
In pratica il senso(almeno credo) è: mando in loop il programma e 
accendo i led quando mando come input qualcosa agli switch, ossia li 
cambio premendo a casaccio gli interruttori, vi pare anche a voi?
Certo che considerando che sono esercizi didattici potrebbero avere 
qualche commento più esplicativo...


 qualche commento più esplicativo...
Si, mi pare proprio che sia come hai intuito tu.
Devices esterni, col loro driver o con la loro circuiteria, possono
leggere e scrivere in ram dall'esterno.
Quindi nel tuo caso l'interruttore scrive il suo stato nella locazione
switch, il led legge dalla locazione led per sapere quali luci
accendere.
Il processo cicla spostando il dato switch su led gestendo in questo
modo il tutto.
Se il processore non deve fare altro, questo loop non e' sbagliato.
Se invece il processore deve gestire altra roba, allora il software di
gestione si complica e bisogna effettuare la copia del dato solo di
quando in quando, oppure su sollecitazione di un interrupt...

 leggere e scrivere in ram dall'esterno.
Solo una piccola precisazione.
Pi� che leggere e scrivere in RAM device semplici come questi sono 
"mappati" nello spazio di indirizzamento del processori e i loro 
registri di controllo (uno solo nel caso dei nostri led e switches) pu� 
essere modificato con le stesse istruzioni con cui normalmente si legge 
e scrive in memoria.
L'accesso alla RAM via DMA � di solito usato per dispositivi pi� 
complessi che devono trasferire grandi quantit� di dati (controller USB, 
display controller, controller di dischi e memorie di massa, 
acquisizioni video etc.).
Su alcune famiglie di processori (gli x86, ad esempio), ci sono bus e 
istruzioni diverse per l'accesso ai device fisici (IN e OUT) o alla 
memoria (anche se poi le periferiche possono comunque essere mappate in 
memoria), su altre (ARM e altri) non c'� questa distinzione e nella 
"mappa di memoria" del tuo microprocessore troverai sia memorie vere e 
proprie (RAM,ROM/Flash), sia dispositivi di I/O.
-- 
Valter Minute
(the reply address of this message is invalid)
(l'indirizzo di reply di questo messaggio non � valido)