Ver Mensaje Individual
Antiguo 03/01/2006, 03:42   #1
ferix
Usuario Activo
 
Fecha de ingreso: 12/jul/2005
Mensajes: 82
ferix está en el buen camino
Tutorial para dumpear un ITD4430

Tutorial para dumpear un ITD4430:

Lo primero que necesitamos es un adaptador jtag compatible con el wiggler de Macraigor. Tanto el Patel como el autoalimentado que aparece en zackyfiles nos valen.

http://zackyfiles.com/secciones/...dores/jtag.htm

A continuación necesitamos la utilidad "GSP Patel Jtag" que encontrareis tambien en zackyfiles.

[url]http://zackyfiles.com/files/patel_jtag_soft_gsp.zip[/url]

La forma de conectarlo al deco es como se explica en archivo de instrucciones que acompaña al programa. De todos modos, por si no lo veis claro, os pongo esta imagen.



Solo es necesario que conecteis los pines del jtag correspondientes. El pin VCC no es necesario para el adaptador jtag autoalimentado.

Bueno, ahora, pasemos a la parte del software.
Lo primero que debemos hacer, aparte de escribir un número de registro cualquiera, es configurar la conexión.
Para ello, nos vamos al menú Configuratión, y luego a la opción Communications.
En la ventana que aparece, seleccionaremos "Wiggler/Parallel" en el apartado "Comm Method". En "Comm Port" seleccionamos el puerto en el que conectamos el adaptador jtag.
Luego, y esto es la parte más importante para que funcione bien, en "Debug Port Rate: 4 Mhz /" pondremos un número entre 3 y 8. Este valor establece la velocidad máxima a la que va a funcionar, partiendo de 4 Mhz. Si ponemos 4, por ejemplo, la velocidad efectiva será de 1 Mhz. El problema es que el adaptador wiggler no funciona más allá de 1,5 Mhz, con lo cual, la velocidad máxima que podemos utilizar es 4 Mhz/3. Yo os recomiendo 4 Mhz/4 para estar seguros. Podeis probarlo a 4 Mhz y probablemente os deje ver el contenido de la memoria, pero en un dump completo va a fallar.
Lo siguiente es configurar el programa para que pueda utilizarse con nuestro deco.
En la pestaña "Program", debemos poner el valor 0x04000000 en la casilla "Target RAM Starts at:". Esta es la dirección de memoria donde el programa de arranque (el BONG) mapea la ram. En principio no es necesario para que el dump funcione, pero si para grabar las flash, aunque en esto todavia estoy trabajando.
A continuación, seleccionamos el tipo de flash que lleva nuestro deco desde la pestaña "Flash". Aquí seleccionamos el fabricante y modelo, y ponemos la dirección de inicio de esta. Esta dirección es siempre 0xFF800000, y la pondremos en la casilla "Starts at:". Si nuestro deco tiene dos flash, simplemente lo pondremos en la casilla "Chips X".
El último paso es enchufar el deco y "tomar el control". Para ello nos vamos a la sección CPU, y seleccionamos el fabricante LSI Logic, y el procesador ARM7TDMI. Justo despues le damos al botón "Snoop Target" y al cabo de unos segundos nos saldra un error diciendonos que no es posible poner en modo background la cpu. Esto es normal, ya que el tipo de cpu que seleccionamos no es el correcto, pero es la única forma de que luego nos funcione bien el programa.
Una vez que cerramos la ventana de error, ya podemos seleccionar el modelo correcto que seria IBM para el fabricante, y 401GX para el modelo. Acto seguido le damos al botón "Snoop Target" y cuando nos aparezca una ventana preguntandonos el método de conexión, seleccionaremos la segunda opción "Read target CPU's configuration registers after..." y aceptamos pulsando en "Begin Snoop". Si todo va bien, no dara ningún error, y cambiaran los valores de los registros.
Una vez llegados hasta aquí, ya podemos jugar con los botones de la pestaña "Program", aunque yo recomiendo no tocar los botones "Erase", "Program" o "Fill", ya que podriamos dejar el deco inservible (aunque no irreparable).
Para realizar el dump del firmware, debemos de pulsar el botón "Upload flash". Una vez pulsado, nos aparece una ventana, donde debemos de escribir el nombre del fichero que queremos generar, y dos casillas con la dirección de inicio y fin de la flash. Estas direcciones son 0xFF800000 (como ya hemos visto antes) para el inicio o "Start Upload at:", y 0xFFFFFFFF para el fin o "End at:".
Despues pulsamos el botón "Upload" y comenzara a realizarse el dump. Sed pacientes, ya que tarda bastante, sobre 45 minutos aproximadamente. Uno de los problemas que me he encontrado es que una vez que llega al final de la flash, y que la barra de progreso ya ha llegado al 100%, el programa sigue leyendo sin parar. Esto hace que el fichero del dump se llene de basura, así que deberiais pulsar cancel pasados unos segundos despues de que la barra llegase al 100%.
De esta forma deberiais obtener un archivo de aproximadamente unos 12 Mb. Para eliminar la información extra que nos ha metido, necesitamos editar el archivo con un editor de texto como el worpad, y borrar a partir de la linea que empieza con S325FFFFFFE0.
OJO: Es importante que una vez editado el archivo, lo guardeis como texto sin formato. Si lo guardais de otro modo, probablemente no servira de nada despues, además de ocupar bastante más.
Con esto nos llega para tener un backup válido de nuestro firmware, pero si lo que queremos es investigar con él, necesitamos convertirlo a un formato más "manejable" como el formato binario, ya que se encuentra en un formato hexadecimal que se conoce como srecord o S19.
Con la utilidad GSP vienen unos programillas de conversión que no estan mal, pero que a mi no me funcionan correctamente bajo Win XP, así que utilizo otra opción, que es usar las gnu binutils. Si teneis un ordenador con linux, probablemente ya las tendreis instaladas, y si lo quereis hacer desde windows, lo mejor es que os bajeis el suite MinGW.
Para esto solo necesitais bajaros el paquete binutils de [url]http://www.mingw.org[/url] y seguir las instrucciones de instalación.
Una vez instalado, el comando para convertir el archivo seria del siguiente estilo: objcopy -I srec -O binary ARCHIVO_DUMP.S19 ARCHIVO_DUMP.BIN
En realidad, así seria para linux, que es como yo lo hago, y me imagino que en la versión de windows es igual, aunque puede variar...
Despues de convertirlo, deberiamos de haber obtenido un archivo binario de 8Mb exactos, o lo que es lo mismo 8.388.608 bytes

Por último, os recomiendo que os leais tambien el documento de instrucciones que acompaña al programa GSP.

Bueno, espero que este tutorial os ayude a obtener buenos dumps del firm, ya sea para investigar o para echar mano de ellos en caso de catastrofe.

Última edición por ferix; 03/01/2006 a las 16:29.
ferix está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Publicidad: Conoce las ofertas de ANUNCIATE