El tamaño del volcado de memoria no coincide con el tamaño de la partición MTD

1

Dispositivo con sistema integrado Linux en memoria flash NAND. Hice el volcado de memoria de algunas particiones de dispositivos MTD utilizando la consola serie, desde el cargador de arranque U-boot usamos los comandos disponibles. Primero leí la partición MTD a la dirección en la memoria, luego vacié la memoria de esa dirección a la ventana del terminal. Por ejemplo, el tamaño de la partición MTD 0x01d60000-0x01e60000 : "FPAR" MTD es 0x00100000 = 1048576 bytes

nand read 0x20000000 0x01d60000 0x00100000
NAND read: device 0 offset 0x1d60000, size 0x100000
1048576 bytes read: OK
md.b 0x20000000 0x00100000

Luego guardé el archivo de registro con volcado como archivo de texto, recorté cosas adicionales antes y después del volcado y lo cubrimos con un uso binario

xxd -r -p dump.txt dump.bin

El tamaño del archivo bin resultante 1.310.860 bytes no coincide con el tamaño de la partición MTD (1.048.576 bytes), es mucho más grande. ¿El problema está relacionado con la conversión de datos hex o el proceso de volcado tiene errores? Entiendo que el tamaño de la partición MTD de 1048576 bytes es el tamaño asignado a la partición MTD completa, los datos reales en la partición ocupan un espacio mucho más pequeño, el espacio grande lleno de valores hexadecimales 'ff'. Además, ¿alguien puede recomendar una buena utilidad para la conversión de datos de hex a bin?

Editar: Intenté los mismos pasos con un tamaño de datos de 64 bytes y utilicé el modo de sesión de registro sin formato. Después de recortar cosas adicionales, el archivo ASCII resultante es de 318 bytes. Después de la conversión de volcado, el tamaño del contenedor es de 87 bytes.

20000000: a0 7c 4f fa 62 61 75 64 72 61 74 65 3d 31 31 35    .|O.baudrate=115
20000010: 32 30 30 00 65 74 68 61 64 64 72 3d 46 46 3a 46    200.ethaddr=FF:F
20000020: 46 3a 46 46 3a 46 46 3a 46 46 3a 46 46 00 6e 65    F:FF:FF:FF:FF.ne
20000030: 74 6d 61 73 6b 3d 32 35 35 2e 32 35 35 2e 32 35    tmask=255.255.25
    
pregunta triwo

1 respuesta

3

Prueba: xxd -r -seek -0x20000000 dump.txt dump.bin

xxd -r -p espera entradas en formato hexadecimal plano, sin direcciones o ASCII. xxd -r sin -seek asume que las direcciones están basadas en cero, y buscarán o rellenarán su salida para saltar regiones que no estén presentes en el volcado (el primer 0x20000000 = 536870912 bytes).

    
respondido por el lumato

Lea otras preguntas en las etiquetas