IlPuntoTecnico
Hardware e Software => Connessioni ADSL/VDSL/FTTC => Topic aperto da: guybrush - 21 Ottobre 2007, 10:51
-
Ciao a tutti! :) Ho un G604T "brickato": nonostante adam2 non sia corrotto, quando si esegue il boot, adam2 tenta di scrivere i valori di default nella mtd3 e si blocca all'inizio della scrittura (cosa verificata via seriale). Ho collegato la jtag e provato con Flash Programmer: qualunque cosa faccia, mi da il messaggio di errore "unable to stop target" che, a detta dell'help dipende da un problema di connessione (cosa non possibile dato che con Ciclamab e debrick-mod tutto va alla perfezione).
Lasciato stare Flash Programmer, sono passato a debrick-mod da linea di comando e non attraverso Ciclamab per avere più controllo e libertà d'azione: il risultato inaspettato a cui sono giunto è che non solo non scrive mtd3 ma non scrive in nessun'altra zona esclusi i primi 64Kb della flash (quelli riservati proprio ad Adam2).
Con la modalità custom, ho provato a scrivere l'immagine di mtd3 un pò in tutte le posizioni della flash e il risultato è sempre il blocco mentre (nonostante sia ovviamente assurdo) se scrivo nel primo blocco riservato ad adam2 la scrittura va a buon fine. Insomma, sembra che ci sia un lock hardware su tutta la flash escluso il primo blocco. Questo, se verificato, deporrebbe per il fatto che la flash è bloccata esattamente alla rovescia di come dovrebbe essere (quando c'è un hw lock di solito è rivolto proprio alla zona dove risiede il bootloader) e questo di fatto apre le porte ad un problema ben più ampio cioè il fatto che, anche riuscendo a ripristinare mtd3, non sarebbe comunque possibile riprogrammare il firmware in queste condizioni.
Ho scaricato il datasheet della flash atmel (AT49BV322A):
http://www.atmel.com/dyn/resources/prod_documents/doc3308.pdf
e visto che l'unico modo di disabilitare il blocco è quello di resettare la flash (pagina 8, sezione 4.8.2) o attraverso cicli di accensione (non ho idea di cosa intenda...Devo accendere e spegnere il router ripetutamente?). Ho individuato il pin di reset ma non ho idea di come si possa resettare (sicuramente applicandoci un'alimentazione ma come?).
Mi verrebbe da pensare ad un danneggiamento della flash ma possibile che un danneggiamento possa essere così selettivo? Mi sembra improbabile che sia sia danneggiata tutta la flash tranne i primi 64Kb... Mi ricordo di aver letto che c'era un metodo per scirvere le partizioni in blocchi da 8Kb per superare proprio problemi di scrittura ma non ricordo dove l'ho letto, devo fare altre ricerche...
Insomma, prima di arrendermi sono sicuro ci sia qualche altra prova da fare e chiedo a voi qualche dritta a riguardo. Grazie a tutti! :)
-
All'accensione o dopo un reset tutti i settori sono sbloccati (pag.7), quindi è il programma di boot che provvede a bloccare il settore da proteggere.
Una volta bloccato l'unico modo per sbloccarlo è un reset o una riaccensione.
La procedura di blocco è descritta a pag.26 e non mi sembra possa ripetersi per sbaglio su tutti i settori escluso proprio quello che dovrebbe essere protetto.
O hai il bootloader corrotto e blocca i settori sbagliati o la tua flash è guasta e si comporta esattamente al contrario di quello che dovrebbe.
bye
-
Ciao e grazie della tua risposta! :) Sono d'accordo con te però se fosse il bootloader a bloccare alcuni settori, quando lo stesso bootloader vuole scrivere su quegli stessi settori dovrebbe parimenti essere in grado di sbloccarli e mi pare molto strano che non sia così.
Il tasto reset del router (almeno a quanto ne so) serve solo a resettarne le impostazioni ma questo solo a boot regolarmente eseguito (cosa che non accade dato che si blocca in scrittura su mtd3), in caso contrario non ha nessuna funzione. Per quello mi chiedevo se ci fosse (sono praticamente certo che ci debba essere) un modo di resettare la flash manualmente (di sicuro cortocircuitando il pin di reset con un'altro pin contenente un alimentazione adatta).
Per quanto riguarda la corruzione del bootloader, la escludo perchè ne ho riprogrammati diversi tramite jtag (presi da altri tre G604Ti, tutti con flash non Intel e uno addirittura con la stessa esatta flash e ovviamente perfettamente funzionanti) quindi il fatto che Adam2 sia in ordine è l'unica certezza che ho.
Insomma, da quel che dici, mi pare di intuire tu pensi ci sia ben poco da fare... Sono sostanzialmente d'accordo con te però sono altrettanto sicuro ci sia qualche altra prova possibile prima di gettare definitivamente la spugna.
-
Ciao e grazie della tua risposta! :) Sono d'accordo con te però se fosse il bootloader a bloccare alcuni settori, quando lo stesso bootloader vuole scrivere su quegli stessi settori dovrebbe parimenti essere in grado di sbloccarli e mi pare molto strano che non sia così.
At power-up or reset, all sectors are unlocked.
The only way to unlock a sector that is locked down is through reset or power-up cycles. After
power-up or reset, the content of a sector that is locked down can be erased and reprogrammed.
Il tasto reset del router (almeno a quanto ne so) serve solo a resettarne le impostazioni
Per reset si intende un restart del dispositivo, non il riportarlo alla situazione di default con il tastino.
Per quello mi chiedevo se ci fosse (sono praticamente certo che ci debba essere) un modo di resettare la flash manualmente (di sicuro cortocircuitando il pin di reset con un'altro pin contenente un alimentazione adatta).
Da quello che ho capito il pin di reset non serve ad azzerare la flash ma solo a riportare la logica sequenziale interna allo stato iniziale.
Per quanto riguarda la corruzione del bootloader, la escludo perchè ne ho riprogrammati diversi tramite jtag (presi da altri tre G604Ti, tutti con flash non Intel e uno addirittura con la stessa esatta flash e ovviamente perfettamente funzionanti) quindi il fatto che Adam2 sia in ordine è l'unica certezza che ho.
Visto che con la jtag puoi comunque ripristinarlo, azzera il bootloader e restarta il router. Se la situazione non cambia è sicuramente un problema hw (flash). :'(
bye
-
Ciao di nuovo! :) La parte del datasheet che hai citato ovviamente l'avevo già letta e compresa ed avevo altrettanto ovviamente capito che il tasto reset del router non servisse a nulla (se noti lo scrivo anche nel mio precedente messaggio).
La mia speranza è proprio quella che resettando lo stato della flash si possa eliminare quel blocco inspiegabilmente indotto da chissà cosa. Non sono un esperto quindi prendi queste mie parole con il beneficio del dubbio e correggimi se sbaglio ma, ragionando per logica, non penso che una flash si danneggi proteggendosi alla rovescia... Mi pare più probabile si corrompa tutta (primi 64Kb compresi).
Proprio perchè (anche questo te l'ho già detto, hai anche citato la mia frase) ho già fatto la prova di riscrivere il bootloader via jtag, prima di arrendermi volevo tentare un hard reset sulla flash (per questo chiedevo dritte su come fosse possibile farlo) o quantomeno tentare di cancellare la flash con qualcosa di diverso da debrick-mod (motivo per cui ho provato con Flash Programmer e per cui mi sarebbe interessato capire il perchè di quel messaggio di errore che ho descritto oppure conoscere se c'era un'alternativa per cancellare la flash via jtag con una wiggler non bufferizzata meglio nota come la poor jtag). Ciao e grazie di nuovo.
-
non penso che una flash si danneggi proteggendosi alla rovescia... Mi pare più probabile si corrompa tutta (primi 64Kb compresi).
A meno che non sia giunta ai fatidici 100000 cicli mentre la parte normalmente protetta funzioni ancora perché cancellata meno volte. Ma non penso sia il tuo caso. ;)
Proprio perchè (anche questo te l'ho già detto, hai anche citato la mia frase) ho già fatto la prova di riscrivere il bootloader via jtag.
Hai provato a scrivere la flash dopo aver restartato il router senza bootloader (azzerato)?
prima di arrendermi volevo tentare un hard reset sulla flash (per questo chiedevo dritte su come fosse possibile farlo)
Non penso ci sia qualcosa del genere, o almeno nel datasheet non è riportato.
o quantomeno tentare di cancellare la flash con qualcosa di diverso da debrick-mod (motivo per cui ho provato con Flash Programmer e per cui mi sarebbe interessato capire il perchè di quel messaggio di errore che ho descritto oppure conoscere se c'era un'alternativa per cancellare la flash via jtag con una wiggler non bufferizzata meglio nota come la poor jtag). Ciao e grazie di nuovo.
Non so che metodo usa il debrick-mod o il Flash Programmer, ma gli unici modi per cancellare (riportare a FF) la flash sono quelli indicati dalla tabella a pag.14:
Chip Erase 6 555 AA AAA 55 555 80 555 AA AAA 55 555 10
Sector Erase 6 555 AA AAA 55 555 80 555 AA AAA 55 SA 30
Resta comunque il problema dei settori protetti:
If the sector lockdown has been enabled, the chip erase will not erase the data in the sector that has been locked out; it will erase only the unprotected sectors.
An attempt to erase a sector that has been protected will result in the operation terminating immediately.
bye
-
Farò la prova di scrivere la flash dopo aver riavviato il router con la flash azzerata, non è male come idea... Per il resto, non so che dire: in gran parte concordo con te. Ti spieghi il perchè del mio problema con Flash Programmer? Per me sarebbe importante poter avere una pietra di paragone ma, se non risolvo il problema, non ho alternative. Conosci per caso qualche alternativa a debrick-mod e flash programmer?
-
Ho provato a cancellare la flash completamente con -erase:wholeflash e quindi riavviare: a questo punto ho provato a riprogrammare prima mtd3 (solito blocco all'inizio) quindi adam2, riavviare e di nuovo tentare di programmare mtd3 (di nuovo blocco) quindi niente di fatto. Credo questo chiarisca definitivamente che il blocco non dipende dal bootloader ma è la flash fisicamente bloccata (o danneggiata anche se, lo ripeto, mi pare un guasto alquanto anomalo).
Da notare la cosa strana che a fare l'erase dell'intera flash ci ha messo solo 13s. So perfettamente che l'erase è molto ma molto più veloce della scrittura ma 13s mi sembrano veramente pochi: credo questo deponga ulteriormente per la protezione della flash infatti blocchi protetti vengono saltati in cancellazione.
A questo punto l'unica altra strada è riuscire a far funzionare Flash Programmer (ho la versione 2.53 ma anche con altre più recenti che ho provato il comportamento è lo stesso) oppure trovare una terza alternativa (che però io non conosco).
Per quanto riguarda flash programmer, ho un dubbio circa la configurazione: so di averlo già usato con successo con un altro G604T ma non ricordo la configurazione perchè è passato parecchio tempo. Cmq stavolta ho usato questa configurazione:
ho lasciato la cpu indefinita (la TNETD7300GDU della Texas non è supportata da Fpgm) con memory start a $0000
ho scelto al AT49BV322A come flash e messo l'inizio in 0x90000000
Con questa configurazione mi da il già citato messaggio di errore "unable to stop target".
Se invece scelgo come cpu la arm7 (cosa che dovrebbe essere corretta dato che la cpu, seppur prodotta da TI, è una ARM7 da che ne so) e lascio memory start a $0000, l'errore diventa "unable to put target into background mode", errore immagino dovuto all'errata definizione della cpu (ma al riguardo non ho spulciato l'help).
Insomma, in ogni caso non sono in grado di utilizzare fpgm. Sono a corto di idee, spero che qualcuno sappia darmi una dritta. Ciao e grazie a tutti! :)
-
Non conosco Flash Programmer e simili. L'unica mia esperienza con la jtag l'ho fatta sui decoder sat, quindi non posso aiutarti.
L'unica cosa che mi viene in mente è che leggendo la flash dovresti trovare tutto a ff se la cancellazione è andata a buon fine. Se trovi altri valori quel settore non è stato cancellato.
bye
-
Il processore da selezionare in FPGM è: CPU: MIPS32_4KE
Ciao.
-
Guybrush in flash programmer prova a impostare la flash a 8 bit anzichè 16 e come indirizzo della flash prova anche 0x10000000. Prima prova una cosa e poi l'altra, poi insieme. Ti può anche servire OCD Commnader che trovi nel sito Macraigor, in particolare, per fermare la CPU, i comandi halt e reset.
Se ci sono aree protette le puoi sproteggere con l'apposita funzione del flash programmer accessibile mediante il bottone Protect.
Nel caso proprio non riesci prova anche con JTAG Tools:
http://star.oai.pp.ru/jtag/jtag-brecis-ok.zip
Segui un po' quello che ho fatto io tempo fa con un 300t:
https://www.ilpuntotecnico.com/forum/index.php/topic,3034.msg37483.html#msg37483
Riguardo JTAG Tools guarda un po' in giro anche nel thread e nel wiki di Openwrt:
http://wiki.openwrt.org/OpenWrtDocs/Customizing/Hardware/JTAG_Cable
PS
Il processore non è un ARM7 http://www.arm.com/products/CPUs/families/ARM7Family.html
ma un MIPS 4KEC integrato nel chip TI AR7 (che non è una CPU ma la contiene). Architetture completamente diverse.
PS2
Prova anche con la flash AT49BV322AT, ha la geometria invertita rispetto alla AT49BV322A, magari è quello il problema...
PS3
Talvolta, raramente, debrick e Ciclamab hanno dei problemi che possono essere risolti dando, prima di usarli, un halt con OCD Commander... può servire.
PS4
Come indirizzo della flash prova anche quelli citati sul sito openwrt:
To access a Flash chip in 8-, 16- or 32-bit mode via EJTAG, use 0x1fc00000, 0x3fc00000 and 0x5fc00000 addresses respectively.
rispettando il bit mode.
Per il momento ho finito le idee... poi si vedrà ;)
-
Grazie ragazzi per tutte le dritte che mi avete dato! :) Grazie a bovirus1963 per la correzione sul processore!
@marven
Grazie anche a te per la correzione sul processore, ero convinto fosse un arm7 e sbagliavo. Potrebbero dipendere da questo i problemi con fpgm? Credo proprio di sì, peccato che non ho modo di provarlo subito... Grazie per tutte le dritte che mi hai dato! Sono talmente tante che ci vorrà un pò per fare tutte le prove! ;)
Provvederò a fare le prove che mi hai suggerito nonchè a scaricare OCD Commander e Jtag Tools. Il secondo l'avevo già trovato ma l'avevo scartato dato che, se non mi confondo (cosa probabile visto tutto il materiale vagliato negli ultimi giorni), era per Linux e al momento non ho Linux installato su nessuna macchina.
Ora vado a dare un'occhiata al topic che mi hai segnalato. Riguardo il PS2, ho già provato con la flash AT49BV322AT e non è servito a nulla.
Vi aggiorno appena possibile su eventuali sviluppi... Grazie di nuovo a tutti e due! :)
-
Ho avuto tempo di fare solo qualche prova e questi sono i risultati:
- Impostato fpgm con:
CPU MIPS32_4KE
Target RAM $0000
EEPROM AT49BV322A
Starts at: 90000000
Width: 16x2
riesco ad eseguire la cancellazione della flash però con alcune anomalie:
Se seleziono la cancellazione dell'intera flash non mi da nessun errore ma non la termina nemmeno dopo più di mezz'ora (dopo di che ho terminato la cancellazione)
Se seleziono la cancellazione settore per settore, per i primi 8 settori mi da l'errore "unable to erase target flash: sequence aborted" e in effetti la cancellazione non avviene (verificato tramite blank check) mentre cancella correttamente dal blocco 9 al blocco 71
Se richiedo la lettura dell'ID della flash, altra anomalia: come ID produttore legge 0x40809000 invece dell'atteso 0x1F001F e come ID della flash 0x300030 anzichè 0xC800C8 - Come mi ha suggerito Marven, ho provato sia con l'indirizzamento ad 8 che a 16 bit senza cambiamenti, ho provato anche gli indirizzi 0x10000000 (stesso esatto comportamento che con 0x90000000), 0x3fc00000 e 0x1fc00000 rispettivamente per i 16 e gli 8 bit (l'errore sopra menzionato si estende a molti altri settori anzichè solo i primi 9)
- In ogni caso, la scrittura di mtd3 con debrick-mod fallisce come sempre
- Ho scaricato Jtag Tools ma non ho ancora installato Cygwin (dato che come detto non ho Linux attualmente installato su nessuna macchina) quindi non ho potuto provarlo.
Spero che già questi primi risultati possano essere utili per capire qualcosa in più... Molto strano mi sembra che le ID di produttore e flash non corrispondano a quelle della ATMEL49BV322A, come pure il fatto che i primi 8 settori non siano cancellabili nonchè il fatto che, anche eseguendo la cancellazione con un secondo programma, non cambi nulla.
-
Il target RAM è sbagliato. Quello giusto è 0xA0000000
L'indirizzo della flash mettilo nel formato 0x90000000 forse gli piace di più ::)
-
In riferimento al mio precedente messaggio, correggo una mia svista dovuta al fatto che nella fretta ho confuso blocchi (cui fa riferimento debrick-mod) con settori (cui fa riferimento) fpgm. Ovviamente i primi 8 settori da 8Kb che mi impedisce di cancellare sono quelli riservati ad adam2 quindi direi che è un comportamento più che corretto: quello che semmai è strano è che lo stesso non accada con debrick-mod che mi fa cancellare tutta la flash. Non ho ancora provato con OCD Commander (lo devo ancora scaricare) anche se dubito cambi qualcosa: se avessi problemi di scrittura con debrick-mod da cercare di aggirare con halt e reset, non dovrei avere problemi anche a scrivere i primi 64Kb di adam2 (cosa che invece non accade)? Correggetemi se sbaglio...
Ho invece tentato anche di installare jtag tools ma senza successo. Ho scaricato i pacchetti jtag 0.5.1, ioperm 0.4 e openwince include 0.4.2 e li ho instllati (il pacchetto openwince non mi ha dato problemi di sorta mentre non sono riuscito ad installare ioperm a causa dell'impossibilità di trovare l'header ntddk.h. Di conseguenza, quando ho fatto ioperm -i, il servizio non è stato avviato (ci mancherebbe!).
Sono comunque andato avanti con la compilazione di jtag.exe (quello già compilato nel pacchetto brecis se eseguito mi dava un errore dovuto all'impossibilità di trovare un entry point, immagino a causa del fatto che la compilazione sia stata eseguita su un sistema fondamentalmente diverso dal mio) e anche qui non ho avuto successo a causa della funzione "detect flash" cui non verrebbero forniti abbastanza paramertri.
Non mi spiego questi errori dato che non credo di aver fatto nulla di sbagliato nella compilazione. A questo punto sono piuttosto scoraggiato: non riesco a far funzionare l'unica alternativa a fpgm e debrick-mod e questi ultimi non mi hanno aiutato. Non riesco ad accettarlo perchè mi pare sia veramente assurdo un guasto alla flash così anomalo ma credo di dovermi arrendere...
Fatemi sapere se c'è qualcos'altro che possa tentare.
@marven
Ho dimenticato di dirti che la funzione protect nel mio fpgm è disabilitata (probabilmente è una funzione non disponibile nella demo, non so). Ovviamente avevo già messo l'indirizzo in formato 0x..., ho abbreviato scrivendolo.
-
Guybrush, non so se ti è sfuggito... nel caso lo ripeto perchè è fondamentale:
l'indirizzo target RAM per la CPU MIPS 4kec deve essere 0xA0000000 altrimenti il flash programmer non ti funzionerà mai.
cerca poi di procurarti la versione non demo.
-
Ho corretto l'indirizzo target ram start ma il comportamento è sempre lo stesso...
-
@marven
L'unica cosa che mi rimane da provare è OCD Commander anche se non sono troppo fiducioso... Volendo usare fpgm per il flashing, ho visto che l'immagine bin andrebbe convertita in s19 (c'è un programmino apposito sotto fpgm) ma non capisco cosa intenda per start address che va specificato da linea di comando... :o Non credo proprio sia quello nella flash visto che stiamo solo convertendo un file...
I risultati delle prove che ho postato alla pagina precedente non ti suggeriscono nulla? Ho dato uno sguardo al topic che mi hai segnalato (sguardo inevitabilmente superficiale dato che sono circa 14 pagine) e non mi pare di aver trovato accenni ai miei problemi con la compilazione di Jtag Tools: tu hai per caso avuto i miei stessi problemi? Nel topic dici di aver utilizzato il precompilato di jtag-brecis ma magari ti è capitato di farlo in un'altra occasione, almeno spero! ;)
Ciao e grazie per la tua risposta! :)
-
Ho scaricato e installato ocd commander e, a parte che non sono sicuro di aver correttamente definito la cpu (a parte che anche qui la TI non c'è, i modelli sono diversi da quelli di fpgm comunque ho messo IDT mips32...) anche facendo l'halt la scrittura di mtd3 si blocca al principio.
Inizio a pensare seriamente di dovermi arrendere... :(
-
@Guybrush
La sintassi di BinToS19.exe è questa (esempio con adam2):
BinToS19.exe mio_adam2 0x90000000 mio_adam2.s19
Il file .s19 è un file di testo e l'indirizzo della flash il flash programmer lo legge da li facilitando le cose. in realtà ci puoi mettere l'indirizzo che vuoi e poi quello giusto lo metti nell'interfaccia di flash programmer.
Prima di flashare il file .s19 lo devi convertire ancora con il programmillo ByteSwapS19.exe. E' una questione di endianess del processore.
ByteSwapS19.exe mio_adam2.s19 mio_adam2_swappato.s19
quindi alla flash invii il file mio_adam2_swappato.s19
ByteSwapS19.exe lo trovi dentro uno dei file .zip che trovi qui:
http://files.dlinkpedia.net/altro/adam2_backup/
Riguardo la configurazione di OCD Commander, come Target Processor devi mettere MIPS/4KE oppure MIPS/EJTAG 2.5, 32 bit
Magari devi anche impostare la velocità della LPT1 : 1 è la più alta, 8 la più bassa. Talvolta abbassando la velocità di comunicazione (ciò vale anche per il flash programmer) si possono risolvere eventuali problemi di compatibilità con la porta parallela. Anche cambiare il modo di comunicazione della parallela nel bios del PC può aiutare.
Riguardo Jtag Tools, io ho usato l'exe che c'è nel pacchetto. Non ricordo di averlo mai compilato.
Se non l'hai già fatto e se ti è possibile ti consiglierei di provare OCD flash e programmer con un router che sicuramente non ha problemi alla flash, poi una volta che ti sei assicurato che il setup cioè interfaccia JTAG, impostazioni varie di OCD e del bios PC sono a posto e tutto funziona, puoi passare al G604T problematico.
-
Ciao marven e grazie! Avevo intuito qualcosa del genere (anche se come giustamente dici anche tu è un'informazione ridondante dato che viene ridefinita all'atto della scrittura) infatti la conversione l'avevo fatta con il comando:
bintos19 mtd3.bin 0x903f0000 mtd3.s19
ma non ho fatto il byte swap (il programmino è già presente in fpgm, quello di dlinkpedia ha qualcosa di diverso?), grazie della dritta! Ho comunque provato a fare il flashing (anche se di un'immagine non corretta visto che mancava lo swap) e tutto è andato come sempre però con una strana differenza: a volte si blocca subito, altre si blocca dopo un pò (comunque molto poco e sempre in punti diversi)...
Ovvio che in OCD Commander cercassi il mips/4KE. In effetti è molto strano visto anche che sullo stesso sito MacRaigor dicono che ocd supporta lo stesso hw di fpgm ma i processori disponibili sono diversi e il mips non c'è come ti ho detto. Ho scaricato l'ultima versione disponibile sul sito.
Per quanto riguarda la parallela, sfondi una porta aperta: quando faccio queste cose, la prima cosa che faccio è mettere da bios la parallela in modalità SPP (quindi la più lenta) e di impostare la velocità della porta in fpgm al minimo proprio come mi hai suggerito.
Per la validità dell'accoppiata parallela/jtag, ti confermo che ci ho già resuscitato alcuni modem e router di amici (l'ultimo circa tre settimane fa) quindi che vada è l'unica certezza che ho.
Penso seriamente di dover iniziare a pensare alla resa anche se mi fa una rabbia che non immagini non per il danno (il router non è neanche mio ma come al solito di un amico) ma per il fatto di dargliela vinta! >:(
-
Per la validità dell'accoppiata parallela/jtag, ti confermo che ci ho già resuscitato alcuni modem e router di amici (l'ultimo circa tre settimane fa) quindi che vada è l'unica certezza che ho.
E' già qualcosa. Ti resta da verificare il "trio" wiggler-OCD-router_senza_problemi.
Ovvio che in OCD Commander cercassi il mips/4KE. In effetti è molto strano visto anche che sullo stesso sito MacRaigor dicono che ocd supporta lo stesso hw di fpgm ma i processori disponibili sono diversi e il mips non c'è come ti ho detto. Ho scaricato l'ultima versione disponibile sul sito.
Non so che dirti. Ho scaricato e installato l'ultima versione 1 min fa e MIPS c'è.
-
Guarda...Non so che dire! Magari ieri mi è sfuggito, ma effettivamente in OCD Commander MIPS c'è così come il 4KE. Si vede che, a forza di sbattere la testa sempre su queste stesse cose, non vedo neanche più quello che ho sotto al naso, scusami!
Cmq di seguito ti riporto i passi che ho seguito:
- Impostato ocd con MIPS 4KE e velocità al minimo, dato il reset quindi l'halt (tutto liscio senza problemi). Lo status viene sempre dato "in DEBUG", credo sia normale essendo OCD un debugger...
- Aperto fpgm con:
CPU: MIPS32_4KE
target RAM starts at: 0xA0000000
EEPROM: AT49BV322A
starts at: 0x90000000 - Convertito mtd3.bin salvato da telnet da un G604T gemello (al momento non ho un G604T con pettine jtag saldato per poterlo fare da jtag ma tanto non cambia nulla) mediante il comando:
BinToS19.exe mtd3.bin 0x903f0000 mtd3.s19 - Fatto il byte swap del file appena creato mediante il comando:
ByteSwapS19.exe mtd3.s19 mtd3swp.s19
(non ho specificato la swap size assumendo che, dato che non mi hai detto nulla, il 4 di default vada bene) - Tentata la scrittura con fpgm del file così creato con questi risultati:
Prima scrittura: blocco su 0x903f0000
Seconda: blocco su 0x903f1000
Terza: blocco su 0x903f2000
Quarta: blocco su 0x903f3000
Quinta: blocco su 0x903f4000
Sesta: di nuovo blocco su 0x903f0000 (e di nuovo con la sequenza appena descritta all'infinito, non riesco mai ad andare oltre ox903f4000) - Ho riprovato la stessa esatta procedura anche selezionando come flash la AT49BV322AT e tutto va nello stesso esatto modo
Penso che questa cosa del blocco su punti diversi a seconda del tentativo (sempre allo stesso modo, te lo ripeto) possa essere significativa. Non so che altro dire se non che sarebbe utile poter provare con Jtag Tools.
Pensavo... E' vero che hai usato il jtag.exe precompilato ma ioperm.sys l'avrai quantomeno dovuto compilare ed io ho avuto problemi anche lì: a te invece è andato tutto liscio?
-
Stavo pensando: e se scrivessi la flash in blocchi più piccoli? L'unità minima sono 8Kb? E poi, come potrei spezzare (senza corrompere) il file? Ciao e buona serata! :)
-
Riguardo la scrittura a pezzi ciò è possibile. Devi dividere il file da inviare.
La procedura da seguire è quella da me descritta un paio di anni fa su dlinkpedia per risolvere un probema con la flash Intel di un mio 302t:
http://www.dlinkpedia.net/hardware/jtag_su_30xT-preparazione-adam.php
Li il blocco avveniva a 1 KB.
Però non capisco perchè vuoi scrivere la mtd3. Ti basta cancellarla. Ti risparmi tutto il lavoro con gli s19 etc
Una volta cancellata flashi il router con Ciclamab. Probabilmente nello stato in cui è ora la mtd3 contiene dei valori (dovuti a corruzione) che bloccano ADAM2, ma se è cancellata funzionerebbe.
Se sei riuscito a scriverci qualcosa (verifica con Target memory) è sicuramente sprotetta.
Hai riprovato con Ciclamab/Jtag o debrick-mod?
Riguardo ioperm.sys non l'ho compilato, l'ho trovato sicuramente da qualche parte, non ricordo dove, cerca con google.
PS
Ti sei assicurato che la versione adam2 installata sulla flash sia adatta alla flash AT49BV322A?
Hai provato con altre versioni, per esempio quelle di Jack?
-
Non sono masochista, credimi... Come descritto all'inizio del thread, se cancello mtd3, al primo avvio adam2 provvede a scriverlo con i valori di default (come è normale che sia), peccato che si blocchi all'inizio della scrittura! :( Questo verificato via seriale. Per quello devo necessariamente trovare un modo di scriverlo io...
La versione di adam2 come detto viene da un router con la stessa esatta flash (e comunque, correggimi se sbaglio, la distinzione è Intel vs tutti gli altri produttori quindi, a meno di non incappare in una flash Intel, il problema non si pone).
Il blocco "ciclico" e il fatto che le ID rilevate dalla flash non corrispondano con quelle attese non ti dice nulla? Cmq darò uno sguardo al link che mi hai indicato. Ciao e buona giornata per domani (o per meglio dire oggi! ;) )
-
Il problema è che anche se la mtd3 la flashi tu via Jtag ciò che ti serve non è la mtd3 corretta che hai flashato ma la cancellazione che precede la scrittura. Quindi è sufficiente che cancelli la mtd3 e verifichi che sia cancellata con Target Memory oppure facendone un backup con Ciclamab/Jtag o debrick-mod.
Anche dovessi riuscire a metterci una mtd3 corretta via Jtag e dovessero permanere i problemi di scrittura con adam2 e/o con il firmware (sempre che riesci a mettercelo) probabilmente avresti un router con dei problemi. Al primo tentativo di scrittura delle variabili d'ambiente o del config la scrittura si bloccherebbe e forse la mtd3 si corromperebbe.
OCD deve rilevare ID corretti, altrimenti vuol dire che ci sono dei problemi. Anche il blocco in scrittura indica ovviamente che ci sono dei problemi.
Riguardo la questione flash Intel o non Intel, adam2 per flash Intel o flash non Intel, è vero che il problema talvolta è stato rilevato su router Dlink con flash Intel in cui all'origine (o dopo un aggiornamento firmware) è stato installato adam2 per flash AMD, ciò non toglie che il "tuo" adam2 possa avere dei problemi con "quella" flash problematica e che un altro adam2 invece no. Quindi vale la pena provare.
-
Hai perfettamente ragione... Sono tutte considerazioni che ho già fatto e infatti mi arrendo qui perchè è evidente che ci deve essere un qualche danno hw (infatti il router ha smesso di funzionare di punto in bianco senza cause apparenti). L'ultimo tentativo che ho fatto è stato scrivere mtd3 in blocchi da 1Kb come mi hai indicato (tutto molto più semplice di quanto immaginassi) e il risultato è che la scrittura va a buon fine (in realtà per ogni blocco da 1Kb devo fare due scritture perchè la prima fallisce regolarmente ma alla fine riesco e il verify da esito positivo) salvo poi il fatto che di punto in bianco la flash si riazzera.
Ho provato tre adam2 originali e anche la versione di Oleg sempre con lo stesso risultato quindi temo sia chiaro che il problema non risiede lì.
Come detto, depongo le armi. Grazie mille per le dritte che mi hai dato: se non altro ho imparato altre cose e, fosse solo per questo, non è stato tempo perso. ;)
-
Eh si, mi sa che è arrivata l'ora di rassegnarsi, dev'esserci un problema HW. Vabbè, è sempre tutta esperienza 8)