Newsgroup: it.comp.hardware.modem
Titolo: Re: Riprogrammare la flash di un modem DLINK DSL300G+

Allora ti dico quello che ho determinato fino ad adesso torturando un povero di-624+.
Il firmware in .bin e' in realta' compresso con arj (versione da 2.41c a 2.46, io ho usato la 2.46) con l'opzione -m1. Per determinare che versione di arj hanno usato alla dlink per compattare il nml.mem dai un arj v firmware.bin e leggi il readme presente nell'ultima versione di arj da sourceforge, dove c'e' una tabellina che aiuta a risalire all'arj usato guardando la revision del file.
All'interno del bin, scompattando con winrar o con arj, trovi il vero firmware, che di solito ha nome NML.MEM.
Apri il bin con un editor esadecimale, alla fine  troverai una stringa di questo tipo:
WLRT2454-XT0-B10     -00 fai copia e incolla e conserva e una volta scaricato mkflash.cpp da:
http://hri.sourceforge.net/di_604/mkflash.cpp
e ricompilalo con un compilatore C (mingw, devcpp dovrebbero funzionare, probabilmente anche VC++. Io ho usato con successo DevCPP), ma prima di compilarlo,
commenta la riga 13 fino alle 15 cosi'.
/*
const char Signature[] = {
	"WGRT-4T0        T1.0 -01"
};
*/
copia e incolla sotto (senza commenti) 
e sostituisci il tuo ID.
const char Signature[] = {
	"WLRT2454-XT0-B10     -00"
};
ricompila pure.
A questo punto: prendi il tuo nml.mem.
Comprimilo con arj.
arj -m1 a nml.arj nml.mem ,il nome nml.arj non e' casuale perche' il file di input di default di mkflash.exe e' proprio nml.arj.
una volta ottenuto nml.arj passalo con il tuo mkflash.exe come:
mkflash miosoftware.bin.
Tieni presente che cosi' riuscirai a bypassare il controllo dell'hardware id, ma questo significa anche riuscire ad aggirare il controllo imposto per firmware non validi.
In questo modo io momentaneamente reso inservibile un di-624+, e l'ho dovuto recuperare tramite crash recovery(spegni;reset tenuto pressato, accendi, tieni pressato per piu' di 12s e appare la crash recovery page, almeno sul mio).
Oltretutto rischi di rendere tutto veramente inservibile, fa attenzione,sopratutto se non hai la recovery page. Non so bene se via JTAG si puo' intervenire.
Il mio tentativo di usare un firmware di un router identico a livello hardware, ma di marca diversa e' fallito...Credo perche' c'e' un altro hardware id dentro nml.mem, che sabota tutto.
Ti confermo che il file va inviato compresso con arj, infatti se cerchi le caratteristiche di questi dispositivi di solito hanno 1mb di flash, mentre NML.MEM e' in genere piu' grande. Va uploadato compresso da arj, poi il bootloader lo scomprime nella ram.
Se hai bisogno di altre info, contattami pure. 
Mi piacerebbe sapere come hai realizzato la JTAG. Grazie
-- 
iapx8088 
------------------------------------------------------------------------
View this thread: 
http://www.itsistemi.net/viewtopic-759631.html
Inviato via 
http://www.itsistemi.net

 
Ciao,
Non ho realizzato una jtag, ma un adattatore seriale RS232 da RS232C a 
3.3volt utilizzando un integrato della Maxim il max3232 piu' 4 
condensatorini da 100nF.
Ho quindi collegato un connettore DB9 sul lato PC e un plug telefonico 
RJ4-4 sul lato modem.
Collegato alla porta console e lanciato l'Hyperterminal sul pc ho 
cominciato a comunicare con il DSP Helium.
Purtroppo qualcuno aveva gia' rasato la flash e quindi ho solo i pochi 
comandi messi a disposizione dal bootloader per agire.
Il firmware lo invio con il protocollo xmodem, poi dovrebbe arrangiarsi 
il bootloader a flashare, invece non fa un bel nulla e la zona flash 
sulla quale dovrei trovare il firmware compresso resta sempre a FF.
Non ho trovato comandi da console per forzare il programma di flash.
C'e' un unico comando che si chiama "enter" ma bisogna passargli un 
indirizzo corrispondente credo ad un entry point particolare che 
purtroppo non conosco.
Comunque non mi arrendo.
Serve per scaricare i nervi alla sera :)
Ciao
Giuseppe