Newsgroup: it.hobby.elettronica.digitale
Titolo: Scheda ISA mappata in memoria

Devo realizzare una scheda ISA mappata in memoria per poterla 
controllare tramite alcuni metodi messi a disposizione da Java Real-Time 
(
https://rtsj.dev.java.net/nonav/source/browse/*checkout*/rtsj/www/doc/javax/realtime/PhysicalMemoryManager.html
https://rtsj.dev.java.net/nonav/source/browse/*checkout*/rtsj/www/doc/javax/realtime/RawMemoryAccess.html
).
Il mio dubbio è però relativo agli indirizzi di memoria utilizzabili, ho 
letto in rete una montagna di informazioni che però, invece di chiarirmi 
le idee, me le hanno confuse. In particolare non capisco quale di queste 
aree di memoria posso utilizzare:
0-640Kb
640Kb-1Mb
15-16Mb
Se qualcuno di voi volesse chiarimi le idee o potesse anche solo 
indicarmi un documento/libro chiaro ed esaustivo su questo argomento 
gliene sarei grato.
Grazie mille
Ciao
Billy
PS: per curiosità... ma a che servono le opzioni "Shadow Configuration" 
dei bios?

 Billy
ciao ale

 ciao ale
Mi pare che quelli siano indirizzi di I/O, mentre io devo mappare la 
scheda in memoria, come se fosse RAM.
Ciao
Billy

 scheda in memoria, come se fosse RAM.
Gli Intel x86 non hanno l'istruzione I/O e manco la linea per distinguere 
accessi in memoria da acessi a porte i/o, ergo bisogna utilizzare la 
mappatura in memoria tu leggi/scrivi come fosse memoria e se c'e' una 
periferica e' lei a risponderti/reagire.
Una curiosita', ma dove la pianti la scheda isa che da diversi anni il busse 
isa non si vede piu' ?
Ciao
RobertoA

 isa non si vede piu' ?
va be nei computer "vecchi" c'è ancora...e poi fare una scheda pci
(anche solo il connettore) mi sembra 1 po' impossibile :-)
ciao
ale

 isa non si vede piu' ?
Le schede madri col bus ISA le trovi a tonnellate (di recupero) e
restano l'unico bus per PC alla portata degli hobbisti.
Comunque da molti anni ormai esiste il bus PC104, ha i connettori
diversi ma i segnali sono sempre gli stessi del vecchio ISA ed e' lo
standard dei pc embedded.

 RobertoA
Ciao
Billy

isa non si vede piu' ?
Sul bus dei PC104, come del resto ti hanno già detto.
--
ciao
  Stefano


Eh si, ho proprio toppato stavolta.
Ciao
RobertoA 


Della serie ... meglio tardi che mai :-)
Nell' architettura PC (ISA) originale il processore 8088 poteva
indirizzare un massimo di 1Mbyte di memoria e 64K di IO.
Questo perche' nell' architettura INTEL ci sono DUE spazi DIFFERENTI
di indirizzamento, uno e' lo spazio di MEMORIA e l' altro e' lo spazio
di IO, che si accedono con istruzioni di processore diverse.
IO SPACE
-----------
L' IO ORIGINALE e' stato limitato a 1024 locazioni (da 0x0 a 0x3FF) e
qui si possono allocare le schede ISA che rispondono ai segnali di IO
(IORD, IOWR), ovviamente in spazi LIBERI e non occupati da altre
periferiche ISA (come ad esempio le porte seriali, la parallela, il
floppy, disco etch....). Di solito le schede di IO occupano da 8 a 16
BYTE di spazio CONTIGUO e possono essere sia a 8BIT che a 16BIT.
Le schede che lavorano su IO sono le piu' facili da progettare :-)
(nei moderni PC lo spazio di IO e' stato esteso OLTRE il primo K
e lavora su tutto lo spazio di 64K, a patto che NON ci siano schede
ISA VECCHIE che decodificano solo le linee di indirizzo tra A0 e A10)
MEMORIA
-----------
I progettisti originali hanno assegnato i primi 640K alla RAM (famosa
memoria BASE del DOS, da 0x00000 a 0x9FFFF) mentre lo spazio rimanente,
da 0xA0000 a 0xFFFFF, e' stato suddiviso tra differenti funzioni.
Tra 0xA0000 e 0xBFFFF in genere c'e' la RAM dedicata alla memoria
video nei vari modi CGA/MDA/VGA, mentre tra 0xC0000 e 0xDFFFF c'e'
spazio per le varie schede di espansione MAPPATE IN MEMORIA: queste
schede rispondono a segnali DIVERSI da quelli di IO.
Lo spazio SOPRA il primo 1Mbyte invece viene utilizzato dai PC
MODERNI equipaggiati con processori a partire dall' 80286 in su'
e che possono indirizzare parecchi GIGA byte di memoria per i vari
banchi dei memoria RAM e per le schede PCI ....
Tornando allo spazio originale, nei 400K OLTRE la memoria RAM di
BASE si trova lo spazio di ESPANSIONE:
Tra 0xE0000 e 0xFFFFF di solito c'e' mappata la ROM del BIOS.
Quindi una scheda ISA deve essere mappata (ovvero decodifica gli
indirizzi di memoria) nello spazio compreso tra 0xA0000 e 0xDFFFF.
Le schede generalmente devono potere essere progettate per potere
variare il loro indirizzo di BASE, di solito con granularita' di 16Kbyte
o 32Kbyte, tra questi indirizzi. Infatti ogni PC potrebbe avere una
o piu' periferiche che gia' occupano uno di questi spazi, per cui e'
necessario potere variare quello della propria periferica.
Cio' detto va in oltre puntualizzato che lo spazio di memoria puo'
essere acceduto con BUS a 8bit o BUS a 16BIT: questa ultima modalita'
e' un po' piu' difficile da gestire perche' bisogna supportare anche
(se possibile) il byte-swap per gestire gli accessi a 16 bit effettuati
agli indirizzi dispari. Inoltre, per una particolarita' dell'
architettura PC, c'e' una limitazione di convivenza tra schede a 8BIT
e quelle a 16BIT, a causa di un segnale generato durante l' accesso
a 16bit. Questa limitazione preclude la convivenza di schede a 8BIT
in uno spazio di 18K in cui risiedono anche delle schede a 16bit.
Per capirsi: nei 400K disponibili da 0xA0000 a 0xFFFFF ci sono
vari spazi da 128K:
0xA0000..0xAFFFF,   (memoria video standard)
0xB0000..0xBFFFF,   (video o libero, dipende dal sistema)
0xC0000..0xCFFFF,   (Video o libero, dipende dal sistema)
0xD0000..0xDFFFF,   (generalmente libero)
0xE0000..0xEFFFF,   (riservato, a volte libero, dipende dal sistema)
0xF0000..0xFFFFF,   Spozio ROM BIOS
Se nello spazio tra 0xB0000 e 0xBFFFF e' presente una scheda a 8bit,
allora non ci si potra' allocare nessuna scheda a 16bit e cosi'
via.
SHADOW CONFIGURATION
------------------------
Poiche' nello spazio delle schede mappate in memoria potrebbe
anche essere compreso un 'BIOS' della scheda (ad esempio, il BIOS
specifico della scheda video...), di solito costituito da ROM o FLASH,
la funzione di Shadowing permette di COPIARE IN RAM questa memoria
in modo che il PC possa eseguire l' eventuale BIOS in una memoria
che ha una velocita' di accesso generalmente MOLTO superiore a quella
di una FLASH o ROM, aumentando le performance.
NOTA BENE:
Questa funzione e' DANNOSA se associata ad una scheda che NON DISPONE
di un proprio firmware a BORDO perche' andra' a mascherare le sue
funzioni con uno spazio di RAM che NON permettera' di accedere alla
scheda stesssa!!!!
Comunque con Google si trova facilmente documentazione sul bus ISA,
ovviamente e' quasi tutta in inglese.
Questo e'solo uno dei tanti siti:
http://www.techfest.com/hardware/bus/isa.htm
Bye,
Brix