Informazioni sull’aggiornamento delle memorie Flash del Nokia Mediamaster
Ultimo aggiornamento: 16.12.97
Testo originale inglese: Icecool (icecool@dominance.net)
Traduzione italiana: Giovanni Vecchio, The Magic Rat (gvecchio@mbox.medianet.pv.it)
PRECISAZIONE IMPORTANTE
Questi appunti sono stati scritti per agevolare la comprensione del funzionamento di base e la procedura d'aggiornamento del Nokia Mediamaster nelle versioni 9200/9500/9600 a solo scopo didattico. L'autore non puo' essere ritenuto responsabile per l'uso (o l'abuso) che l'utente finale puo' fare delle informazioni qui contenute. [Lo stesso dicasi per il traduttore; N.d.T.]
INTRODUZIONE
Per iniziare, e' necessario capire a grandi linee il funzionamento del Mediamaster [qui di seguito: MM; N.d.T.]. Esso e' attualmente paragonabile ad un potente computer multimediale e, come tale, possiede un processore o CPU, il 68340 della Motorola, della memoria RAM per l'esecuzione dei programmi, un sistema operativo, un software e, non ultima, una memoria "non volatile" contenente appunto il sistema operativo ed il relativo software. Questa memoria e' detta "Flash RAM" e mantiene immagazzinati i dati anche in caso di mancanza di alimentazione - da cui il termine "non volatile". La qualita' che caratterizza questo tipo di RAM e' il suo velocissimo tempo di risposta da cui il nome "Flash". Questo tipo di RAM e' impiegata per ridurre l'utilizzo di DRAM e per recuperare spazio sulla piastra madre, in quanto le sue prestazioni sono paragonabili a quelle della DRAM stessa ed in alcuni casi anche superiori (ne esiste una versione con tempo di accesso di 90 ns.). E' possibile paragonarla al vostro Hard Disk, ma con una rapidita' di accesso ai dati notevolmente superiore (HD: 10 Millisecs. Flash: 100 Nsesc.) e senza parti meccaniche in movimento; unico svantaggio un costo per MB per ora molto elevato.
TIPOLOGIE DI FLASH RAM NEL MM
Ci sono due tipi di Flash nei MM finora prodotti: 29f400 e 29f800.Generalmente i MM di recente produzione incorporano una flash da un Mb (29f800) mentre le prime versioni erano dotate di 2 29f400 che, come facilmente deducibile, sono da 512Kb ciascuna. E' importante capire che la CPU indirizza la RAM allo steso modo indipendentemente dal numero di chip presenti; cio' che cambia e' la selezione del chip attivo ( "chip enable" o CE) in modo da indirizzare la corretta quantita' di dati ad un banco di memoria per poi "switchare" la restante parte di dati all' altro banco di memoria non appena venga raggiunto l'ultimo indirizzo disponibile ("top address").In parole povere un SW scritto per due chip funzionera' perfettamente (perfino piu' velocemente) anche su un singolo chip. Per meglio comprendere cio' pensate alle espansioni RAM per il vostro PC: basta installarle e il PC funziona ugualmente!! Le uniche differenze tra i due tipi di memorie e' il celeberrimo aggiornamento via BDM, poiche' la CPU riceve istruzioni di basso livello per la scrittura delle flash, quindi e' necessario specificare il banco da programmare.
ORGANIZZAZIONE DELLE FLASH
Tutte le flash sono divise in vari settori, delimitati da indirizzi di memoria. Il modello 29f800, ad esempio, e' suddiviso in 19 settori che non sono tutti della medesima grandezza, cosi' da mantenere una certa versatilita' nell'utilizzo della memoria. Ci sono 15 settori da 64 Kb, uno da 32 Kb, uno da 16 Kb e 2 da 8 Kb, per un totale di 1 Mb. Alcuni di questi settori sono protetti in scrittura da un jumper marcato XP06.Esso e' sito in diverse locazioni secondo la revisione HW del MM. Ad esempio le versioni recenti (29f800) lo hanno vicino al CAM mentre nei primi modelli e' ben nascosto sotto il tuner [personalmente ho verificato che nel mio MM (serie /E ) sebbene con 2 29f400 il jumper si trova gia' vicino al CAM; N.d.T.].
Da cio' che e' stato possibile capire, la memoria del MM e' cosi' organizzata:
+-------------------------------+00000h
| Primo settore del Boot Loader | 16Kbytes (*)
+-------------------------------+03fffh
+-------------------------------+04000h
|..............area.............| 8KBytes
|-------------------------------+06000h
|.........memorizzazione....... | 8KBytes
|-------------------------------+08000h
|.............canali............| 32KBytes
+-------------------------------+0ffffh
+-------------------------------+10000h
|...2^ settore Boot/System......| 64KBytes (*)
+-------------------------------+1ffffh
+-------------------------------+20000h
|...............................|
|...............................|
|....14 settori "software"......|
|...............................| 896KBytes (14x64Kb)
|.scritti dal loader seriale....|
|...............................|
|...............................|
+-------------------------------+fffffh
(*) = settori protetti in scrittura dal jumper XP06.
Da un semplice calcolo apprendiamo che la dimensione massima del SW caricabile e' di
896Kb * 1024 = 917.504 bytes
Cio' significa che non e' possibile caricare nel MM software piu' grandi di 917.504 bytes, a meno di una riorganizzazione/ottimizzazione della memoria, ad esempio la riduzione dello spazio per la memorizzazione dei canali potrebbe lasciare piu' spazio per l' "area-software". Ho notato che il SW del 9600 e' solo un settore piu' grande di quello del 9500 per cui potrebbe essere possibile ottimizzarlo per quest'ultimo riducendo la succitata "area-canali" (naturalmente l'aggiunta di una ulteriore 29f800 risolverebbe tutti i problemi). Questo leggero aumento di spazio occupato fa nascere il sospetto che il SW del 9600 sia stato aumentato "ad arte", ma pere saperlo con certezza sarebbe necessario disassemblare il SW stesso. In effetti se tentiamo di caricare quel software su un 9500 notiamo subito che i blocchi da caricare sono 15 e non 14: non appena il 15^ blocco viene inviato al MM, non essendoci piu' spazio fisico su cui scrivere, otteniamo un errore di download ( il ricaricamento del SW normalmente utilizzato via seriale riportera' comunque il MM alla normalita' J ).
INTERFACCIA BDM
Come ormai noto BDM e' un acronimo per "Background Debugging Mode" ed e' uno strumento pressoche' indispensabile per le verifiche di nuovi SW applicati a nuovi sistemi. Non solo, la BDM e' inoltre un potente strumento di diagnostica che permette a personale qualificato di verificare tutti registri del MM per capire "cosa sta succedendo". E' una "porta di servizio" che puo' essere aperta da mani esperte in qualsiasi momento per editare/leggere/scrivere su qualsiasi periferica del sistema. Ecco perche' e' possibile accedere alla flash utilizzando la BDM. Attraverso specifiche istruzioni date alla CPU e' possibile eseguire una operazione di scrittura in un determinato indirizzo della RAM. Fare cio' manualmente tramite il software originale per BDM occuperebbe moltissimo tempo e risulterebbe noioso……Ecco perche' e' stato scritto il programma "dboxbdm". Questo piccolo programma esegue una serie di istruzioni specifiche per l'aggiornamento delle flash, rendendo il procedimento molto piu' semplice: basta scegliere il file .bin e caricarlo nell' indirizzo prescelto. Se il vostro MM ha caricato un SW non aggiornabile da seriale (il vecchio Multi-Choice, DF1 o l'italiano Telepiu') allora dovrete utilizzare la BDM per scrivere il nuovo loader nella flash. Attualmente il metodo piu' rapido per aggiornare un MM e' quello di programmare l' "area.loader" (boot kernel area) tramite BDM e poi proseguire al caricamento del sw tramite il caricamento seriale. Se cio' non dovesse funzionare, potete sempre copiare il primo file .bin nella eeprom0 ( sovrascrivendo quindi sia l'area canali ma anche il bootloader) e poi proseguire con il "seral download" anche se le flash sono parzialmente scritte ( perche' vengono comunque sovrascritte). Ricordate sempre che per sovrascrivere il bootloader e' necessario ponticellare i connettore XP06, o altrimenti, avrete atteso invano. L
ATTENZIONE!! ATTENZIONE!! ATTENZIONE!! ATTENZIONE!! ATTENZIONE!! ATTENZIONE!!
Ricordate che l'apertura del MM comporta il decadimento immediato della garanzia.
Prima di aprire il MM ricordatevi di "staccare la spina". Ci sono parti in tensione a 220 V nell'area del trasformatore che se toccate possono UCCIDERVI.
Ricordate sempre che i componenti CMOS sono molto sensibili alle cariche elettrostatiche e possono essere seriamente danneggiati da queste, per cui prima di compiere qualsiasi operazione assicurate di esservi "scaricati" toccando una superficie metallica connessa a terra.
ATTENZIONE!! ATTENZIONE!! ATTENZIONE!! ATTENZIONE!! ATTENZIONE!! ATTENZIONE!!
Il connettore BDM e' sito all'interno del MM sotto il modem (quella scheda avvitata al retro del MM con il connettore RJ-11 per la linea telefonica. Per accedervi e' necessario rimuovere il modem dalla piastra sconnettendolo dalla MB (cavetto rs232).Fatto cio' potete tranquillamente individuare il connettore a 5 pin DIL (Dual-In-Line), al quale dovete attaccare l'interfaccia BDM prestando attenzione affinche' il pin 1 DIL (che e' verso il retro del MM) venga connesso al pin 1 DIL del connettore BDM (generalmente marcato in rosso o con una freccia). Fatto questo attaccate l' interfaccia alla parallela del vostro PC (spento!!!!). Il programma "dboxbdm" deve essere lanciato in ambiente MS-DOS ( no win95 dos!!). Assicuratevi di disabilitare tutti i programmi TSR per evitare qualsiasi problema. [E' in circolazione anche un PRG per BDM funzionante sotto win95..ancora in fase di beta-test; N.d.T.].
CARICAMENTO DEI FILE BDM
Tramite dboxbdm.exe e ,naturalmente, una interfaccia BDM correttamente installata e funzionante e' possibile estrarre/salvare su disco l'intero contenuto delle Flash del MM. Otteniamo cio' lanciando il programma, selezionando la porta parallela desiderata e scegliendo una velocita' di clock appropriata al PC utilizzato: per i Pentium (pentia??) il valore 100 andra' bene, ma per sistemi piu' lenti come 3/486 questo valore dovra' essere inferiore (es: 386/33 -->circa 40). [Una volta lanciato il programma e' necessario digitare il comando "B" che arrestera' ogni programma in esecuzione nel MM; N.d.T.]. Ora scegliete semplicemente l'operazione di lettura, il nome del file in cui salvare i dati e l'operazione di estrazione avra' inizio. Sono necessari da 20 a 40 minuti a seconda del sistema posseduto e dei settaggi della parallela (e' consigliabile settare la parallela in modalita' SPP, anche se su alcuni Pentium la modalita' EPP e' piu' veloce...). Il programma e' abbastanza lento in scrittura, probabilmente perche' non perfettamente ottimizzato per un aggiornamento "a settori", mentre il normale "serial download" legge un settore e lo scrive in un unico blocco atraverso il loader interno (si, il famoso loader seriale non e' altro che un programma che richiama un altro programma all'interno del MM che possiede una routine di scrittura eeprom). Il procedimento di scrittura da BDM e' altrettanto semplice: basta premere <shift> e <F1> e selezionare il file da caricare [questo per la prima eeprom, salvo poi ripetere l'operazione per la seconda eeprom con <shift> e <F2> o <F3> a seconda del modello di eeprom posseduta; N.d.T.]. Ricordate che per sovrascrivere il Bootloader e' necessario ponticellare il Jumper XP06. Se cio' non avviene, sicuramente otterrete un errore di boot. Tra l'altro una volta aggiornato il bootloader, non userete piu' la vostra BDM finche' non ci sara' un nuovo bootloader o un nuovo software con differente organizzazione. [Va altresi' detto che l'interfaccia BDM permette di caricare nella memoria del MM un differente database di canali; anche se quest'operazione e' possibile anche da "seriale" nessun software attualmente e' stato sviluppato in questo senso; N.d.T.]
FILE SERIALI E FILE BDM
Come avrete senz'altro notato, i software per il caricamento seriale sono costituiti da un unico file di grandi dimensioni (circa 900K), mentre i file prodotti dalla BDM sono sempre due file di esattamente 512K.Questo perche' , come piu' volte ricordato, il programma per BDM legge il contenuto di TUTTE le locazioni delle Flash, siano esse piene o vuote, raggiungendo cosi' l'esatta dimensione delle Flash stesse. Allora perche' il software "seriale" e' piu' piccolo di un Mb?? Considerato che esso non contiene ne il bootloader ne l'"area-canali", la risposta e' pressoche' servita. Consultando poi la mappa della memoria sopradescritta, si puo' agevolmente notare che l'ammontare di memoria occupata da bootloader e "area-canali" e' di 146.456 bytes che, sottratti a 1.048.576 forniscono un valore piu' o meno corrispondente alla dimensione del file "seriale". C'e ancora un'ultima nota: la routine di caricamento seriale "riempie" automaticamente i bytes mancanti (poiche' il SW e' sempre "piu' piccolo" dell'area effettiva a disposizione cioe' 917.504 bytes) al completamento dell' ultimo settore. Ecco perche' non abbiamo mai un file seriale lungo esattamente 917.504 bytes!! L'unico caso riguarda il file di aggiornamento per il 9600 che e' 10 bytes piu' lungo.....E per quei 10 bytes noi utenti del 9500 non possiamo tentare il caricamento.
Per ogni chiarimento potete contattare l'autore ( icecool@dominance.net ) o il traduttore ( gvecchio@mbox.medianet.pv.it ).
Vistate la pagina di Icecool: www.dominance.net
NOTA IMPORTANTE:
E' fatto assoluto divieto di linkare questa pagina senza il consenso dell'autore che lo concedera' liberamente a chiunque ne faccia esplicita richiesta. Se avete raggiunto questa pagina tramite un link vi prego di avvisarmi.(c) 1997 - Magic_rat_art. Last Update dec 16 1997