Grabadores de flash hay muchos en el mercado. A mi personalmente me gusta mucho beeprog, pero seguro que hay alternativas mucho mas baratas como las que se
usan para programar las nand de XBOX, PLAY, etc...
Volviendo al tema que abrió David, pienso que sería muy buena idea hablar un poco mas del tema, porque siempre nos acordamos de esto cuando hay un desastre,
y luego vienen las prisas y los nervios.
Yo no tengo direcciones ni mapas de memoria, lo que si estoy intentando es hacer un dump completo de la flash por si por algún motivo (actualizaciones, sectores defectuosos en la nand flash o lo que sea) el aparado tomase la decisión de no arrancar. Por no arrancar se entiende que no responde al boot, osea que estamos hablando de un "fiambre" al que no se puede conectar por rs232 para resucitarlo por telnet o métodos alternativos. Una opción es jtag o en caso de daño real en la flash nand, sustituirla por una nueva, pero ahí es donde toma importancia lo que dice David, para eso habría que tener acceso al fichero del bootloader o mejor al dump de la memoria flash.
Un método preventivo sería hacer un volcado cuando el aparato está vivo.
En casa tengo un dm500 y un gigabluequad. googleando un poco veo que el gigablue responde a un comando muy sugerente para estos temas: nanddump.
gbquadplus login: root
root@gbquadplus:~# nanddump
Usage: nanddump [OPTIONS] MTD-device
Dumps the contents of a nand mtd partition.
-h --help Display this help and exit
--version Output version information and exit
--bb=METHOD Choose bad block handling method (see below).
-a --forcebinary Force printing of binary data to tty
-c --canonicalprint Print canonical Hex+ASCII dump
-f file --file=file Dump to file
-l length --length=length Length
-n --noecc Read without error correction
--omitoob Omit OOB data (default)
-o --oob Dump OOB data
-p --prettyprint Print nice (hexdump)
-q --quiet Don't display progress and status messages
-s addr --startaddress=addr Start address
-t --truncate Truncate empty blocks (FF) from dump
--bb=METHOD, where METHOD can be `padbad', `dumpbad', or `skipbad':
padbad: dump flash data, substituting 0xFF for any bad blocks
dumpbad: dump flash data, including any bad blocks
skipbad: dump good data, completely skipping any bad blocks (default)
root@gbquadplus:~#
En el link del cloudibox están muy bien explicadas las zonas de memoria, pero para los que queremos tener un backup de nuestra nand y no tenemos el mapa de memoria
una opción sería volcar la nand entera. Estoy muy verde en linux y de ahí mi pregunta. hay algún comando que nos diga el tamaño de la nand? o cual es la partición o
disco entero en la carpeta dev/mtd?
Hago una prueba con
root@gbquadplus:/# nanddump -a --oob --bb=dumpbad -f /mnt/hdd/backup.bin /dev/mtd0
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x1f000000...
root@gbquadplus:/#
y me devuelve un archivo en el disco duro de 511mb (496 si lo hago omitiendo OOB data). Pienso que si la flash del quad es de 512mb, posiblemente haya conseguido el dump,
lo que no tengo claro es si en ese dump va el bootloader.
En la dm500 no existe el comando nanddump, en su lugar hay otro que se llama dd. Posiblemente sirva para hacer un volcado tb..
BusyBox v1.2.2 (2006.12.14-03:36+0000) multi-call binary
Usage: dd [if=FILE] [of=FILE] [bs=N] [count=N] [skip=N]
[seek=N]
root@dreambox:~>
a ver si hay alguien puesto en el tema y nos da alguna pista de como dumpear la flash completa con su bootloader incluido.