Foros ZackYFileS

Foros ZackYFileS (http://foros.zackyfiles.com/index.php)
-   6 PINES (http://foros.zackyfiles.com/forumdisplay.php?f=434)
-   -   Jtag 6 pins por jubamo (http://foros.zackyfiles.com/showthread.php?t=514331)

nick1 15/05/2007 22:05

Jtag 6 pins por jubamo
 
publicado por jubamo, en el foro el rincon del sl 65:

Pues eso que acabo de conseguir empezar a leer la flash del SL65 con ALI M3329 por el Jtag de 6 pines.

Es nuestro,
CABLE:
resistencia de 100 ohm a cada uno exceto la masa.
pc a deco: 5 TRST; 2 TDI; 13 TDO; 4 TMS; 3 TCK; la masa como en todos a GND.

PROGRAMA:
h**p://downloads.openwrt.org/utils/HairyDairyMaid_WRT54G_Debrick_Utility_v48.zip


coger el archivo wrt54g.c
ir a linea 796.

y donde pone esto:
// Reading an instruction from our module so fetch the instruction from the module
offset = (address - MIPS_DEBUG_VECTOR_ADDRESS) / 4;
data = *(unsigned int *)(pmodule + offset);


añadir lo del if
// Reading an instruction from our module so fetch the instruction from the module
offset = (address - MIPS_DEBUG_VECTOR_ADDRESS) / 4;
if (offset > 0xfff) offset = 0;
data = *(unsigned int *)(pmodule + offset);

quitar las dos barras del princpio si estais compilando en windows linea 148
// #define WINDOWS_VERSION // uncomment only this for Windows Compile / MS Visual C Compiler

se queda asi
#define WINDOWS_VERSION // uncomment only this for Windows Compile / MS Visual C Compiler

compilar
(lo siento no uso windows).

Abrir el deco cambiar de sitio el puente que esta al lado de la ram (modo debug) conectar cables y encenderlo.

ejecutar asi:

wrt54g -backup:wholeflash /skipdetect /fc:1 /instrlen:5

No he intentado borrar ni flashear, pues mi deco esta vivo.

Saludos.
[B]publicado por jubamo el 15/05/07
[/B]

Pd : creo que es interesante lo cuelgo aqui.

nick1 15/05/2007 22:20

Otro mensage de jubamo

He arrancado el pc con Knoppix,
boot: knoppix 2
luego en consola: modprobe ppdev
enchufar un usb con los archivos
consola: mount /dev/sda1 /mnt
ir al directorio donde esta el wrt54g.c, el Makefile y el wrt54g.h
consola: ./make (esto lo compila).consola ./wrt54g -backup:who...............

Si os faltan datos, pasaros por g*ogle "jubamo jtag sl65" Es el origen de todo esto.

Gracias a los compañeros del otro foro y a
HairyDairyMaid que es el autor de programa, que sin saberlo nos sirve a nosotros.

Saludos

diessel 15/05/2007 23:16

Interesantisíma aportación de jubamo...

Voy a ver si veo las "tripas" de mi A1

barrigaverde 15/05/2007 23:41

bueno estoy informandome y por lo que creo entender se puede arrancar el ordenador con una live de linux (un cd con el programa que arranca desde el CD) y poder realizar esa compilacion podeis ampliar este dato para los mortales que no entendemos y si deseamos probar haber si funciona aunque no lo pongo en duda es solo un poco de mono claro es saludos a todos

nick1 16/05/2007 00:07

que queres decir que si probamos un ubuntu de linux que arranca desde cd y deja probar el software, se puede hacer esto?

xeloa 16/05/2007 00:50

chicos explicaros mejor para los mas catetos en el tema como yo,el programa no me arranca en windows manolo 123 me dio una explicacion que no he sabido aprovechar ,me lo puede explicar alguien en lengua cateto.gracias y saludos

xeloa 16/05/2007 00:54

manlolo_321:
Yo lo hago funcionar en Linux, tambien decirte que hay otras versiones.
Fijate en esto está al final del encabezado del archivo wrt54g.c y dice que descomentes la segunda linea, pues por defecto esta para Linux.
/
/ Default is Compile for Linux (both #define's below should be commented out)
// #define WINDOWS_VERSION // uncomment only this for Windows Compile / MS Visual C Compiler
// #define __FreeBSD__ // uncomment only this for FreeBSD


esta es la explicacion que me dio pero como digo no he sabido aprobecharla

jubamo 16/05/2007 04:18

/ Default is Compile for Linux (both #define's below should be commented out)
// #define WINDOWS_VERSION // uncomment only this for Windows Compile / MS Visual C Compiler
// #define __FreeBSD__ // uncomment only this for FreeBSD

QUITAS LAS DOS BARRAS DE LA 2ª LINEA, DEBE DE QUEDAR ASI:

/ Default is Compile for Linux (both #define's below should be commented out)
#define WINDOWS_VERSION // uncomment only this for Windows Compile / MS Visual C Compiler
// #define __FreeBSD__ // uncomment only this for FreeBSD

Saludos.

xeloa 16/05/2007 07:57

gracias jubamo lo he provado y sigue sin abrirse ,me he bajado el programa para windows xp ,luego provare haver si este funciona como con el que estais trabajando,si tienes xp o windows podrias hecharle un vistazo si no es mucho pedir ,gracias
http://www.ranvik.net/prosjekter-privat/jtag_for_wrt54g_og_wrt54gs/new-winxp_ejtag_debrick_v%5b1%5d.99beta/

zivago40 16/05/2007 09:28

Sobre todo enhorabuena a jubamo por su trabajo. Para barrigaverde puedes descargar una version en español, arrancable desde el cd y sin problemas, detecta todos los dispositivos y tiene una interfaz grafica mejor que windows,
http://www.knoppix-es.org/?q=knoppix-descarga. Yo he intentado compilar con visual c++ 2005 y no hay forma me da error en la cabecera windows.h y despues de copiarla de borland c++ me sigue dando problemas. Intentare con linux a ver que tal.

zivago40 16/05/2007 11:39

Ya he podido compilar el programa y al correrlo me da lo siguiente:
====================================
WRT54G/GS EJTAG Debrick Utility v4.8
====================================

Probing bus ... Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

- EJTAG IMPCODE ....... : 00000000000000000000000000000000 (00000000)
- EJTAG Version ....... : 1 or 2.0
- EJTAG DMA Support ... : Yes

Issuing Processor / Peripheral Reset ... Done
Enabling Memory Writes ... Done
Halting Processor ... <Processor did NOT enter Debug Mode!> ... Done
Clearing Watchdog ... Done

Manual Flash Selection ... Done

Flash Vendor ID: 00000000000000000000000000000001 (00000001)
Flash Device ID: 00000000000000000010001001001001 (00002249)
*** Manually Selected a AMD 29lv160DB 1Mx16 BotB (2MB) Flash Chip ***

- Flash Chip Window Start .... : 1fc00000
- Flash Chip Window Length ... : 00200000
- Selected Area Start ........ : 1fc00000
- Selected Area Length ....... : 00200000

*** You Selected to Backup the WHOLEFLASH.BIN ***
todo lo que lee son 0000000.... aunque hay una cosa que esta bien, la flash device ID corresponde con Macronix. Quiere decirse que ha ido a leer a la flash, aunque no a la zona de datos. Lo que no sale es la implementación, que con el e_jtag si.
Edito para corregir, el ID no es de macronix, es AMD y MANUALLY SELECTED, como bien dice el programa. Me da la impresion que no lee nada del puerto.

zivago40 16/05/2007 12:04

Para Xeloa, si no quieres no te molestes en la version XP porque no funciona, no te deja saltarte la deteccion de micro y no continua. Yo he conseguido compilar con Dev-c++, gratuito y facil de manejo, haciendo lo que dice jubamo de quitar barras en la definicion de windows, aunque luego tienes que registrar el dispositio giveio, que en el readme que acompaña al programa te lo explica mu bien como hacerlo, y si tienes dudas aqui estamos.

xeloa 16/05/2007 14:06

gracias zibago me estoy bajando Visual c++2005 expres,son 43mb asi que me llevara un rato,dime es lo que necesito?sino es asi me mandas un enlace de la copilacion dv c++ que tu tienes.gracias majete

zivago40 16/05/2007 14:48

Cita:

Iniciado por xeloa (Mensaje 2885301)
gracias zibago me estoy bajando Visual c++2005 expres,son 43mb asi que me llevara un rato,dime es lo que necesito?sino es asi me mandas un enlace de la copilacion dv c++ que tu tienes.gracias majete

Lo puedes encontrar en www.bloodshed.net, es bastante mas pequeño que VC y creo que mas facil de usar, aunque yo estoy como tu aprendiendo segun va haciendo falta. Luego me cuentas como te va. Y no hay de que.

xeloa 16/05/2007 16:06

esta claro que algo hago mal pues se abre dos segundos y se cierra HELP

jubamo 16/05/2007 17:33

zivago 40:
si no te da el IMPCODE 00C05288 (si no me equivoco), es que no lo lee, seguro que tienes el cable antiguo, tienes que cambiar el TMS x TDI.
Cuando te de el impcode y si le has puesto el "if offset > ............" Seguro que te va.

Xeloa:
La versión que comentas es antigua y no tiene las opciones necesarias. Voy a probar a compilarlo con el que comenta zivago 40 y si funciona te lo mando.

Recordar: (aunque se puede cambiar antes de compilar para que sean iguales)
Cambian TMS x TDI respecto al ejtag_p y si os lee el IMPCODE con el ejtag_p debe de leerlo con este programa (lo digo porque en 2 ordenadores rápidos que he probado no lee bien).

Saludos.

manolo_321 16/05/2007 18:07

Hola !!!, Juabano eres el MEJOR, que rabia no estoy en casa para probarlo, el curro:p, pero bueno sigo leyendo, esta la cosa muy interensante, para compilar el programa en windows yo lo hago con el "visual c++ 6.0" y sin problemas solo hay que hacer la siguiente modifcacion en el archivo wrt54g.c :
linea 148
#define WINDOWS_VERSION // uncomment only this for Windows Compile / MS Visual C Compiler

queda asin:

define WINDOWS_VERSION // uncomment only this for Windows Compile / MS Visual C Compiler

Se guarda y se compila con e visual c++ 6.0 y todo perfecto en windows xp.

Para Zivago40 el programa debe leer el IMPCODE (00C05288) es importante lanzar el programa con el comando "/instrlen:5", ejemplo :

wrt54g -probeonly /skipdetect /instrlen:5 /nodma

Si todo es correcto debes leer el IMPCODE 00C0528, voy a subir el ejecutable para winxp con la modificacion de Jubano. Esta en el upload 12.

P.D ANIMO a todos la solucion esta muy cerca.

jubamo 16/05/2007 18:36

Hola manolo_321:
me alegra que estés por aquí, dí si la configuración de cables la has cambiado ( igual al ejtag_p o como el wrt54g).

Solo era cuestión de hacer trabajar el programa de HairyDairy..... (el si que domina el tema, y en caso de apuros se le puede comentar) que seguro le falta algún retoque para el Ali, pues el fallo es que en la linea 1699

// ----------------------------------
// Enable Memory Writes
// ----------------------------------
// Always skip for EJTAG versions 2.5 and 2.6 since they do not support DMA transactions.
// Memory Protection bit only applies to EJTAG 2.0 based chips.
if (ejtag_version != 0) issue_enable_mw = 0;
printf("Enabling Memory Writes ... ");
if (issue_enable_mw)
{
// Clear Memory Protection Bit in DCR
ejtag_dma_write(0xff300000, (ejtag_dma_read(0xff300000) & ~(1<<2)) );
printf("Done\n");
} else printf("Skipped\n");

detecta version 0 y no lo es, por eso lo del if.

Ahora a probar de borrar y escribir.

Saludos.

manolo_321 16/05/2007 19:18

Hola Juabano , las pruebas que hice el fin de semana fue con la configuracion del cable del ejtag_n, previa modificacion del archivo wrt54g.h, ejecutaba el programa con la opcion "/wiggler", y tenia lectura del IMPCODE, hasta este punto me quede, gracias a tus aportaciones damos un gran paso, lastima no puedo probarlo ahora pues estoy fuera de viaje, haver si alguien puede intentar grabar en la flash, por cierto Jubano , en tus pruebas ¿ llegaste a hacer una lectura completa de las flash ? , ¿era correcta la lectura ?. Saludos !!

jubamo 16/05/2007 19:24

Solo he leído 61k pues va lento, y lo que comparé estaba correcto, leer si que lee, pues lo he probado varias veces y siempre da correcto = que el original que le metí.

jubamo 16/05/2007 20:21

Los datos de la memoria de más abajo no son correctos en vez de leer el id vededor y fabricante, lee la primera posición, no acepta los comandos de detección de chip, quizás tampoco se pueda borrar si no se modifica la rutina.

Para que veais la salida en pantalla de:

./wrt54g -backup:wholeflash /skipdetect /fc:1 /instrlen:5

====================================
WRT54G/GS EJTAG Debrick Utility v4.8
====================================

Probing bus ... Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

- EJTAG IMPCODE ....... : 00000000110000000101001010001000 (00C05288)
- EJTAG Version ....... : 1 or 2.0
- EJTAG DMA Support ... : No

Issuing Processor / Peripheral Reset ... Done
Enabling Memory Writes ... Done
Halting Processor ... <Processor Entered Debug Mode!> ... Done
Clearing Watchdog ... Done

Manual Flash Selection ... Done

Flash Vendor ID: 00000000000000000000000011100011 (000000E3)
Flash Device ID: 00000000000000000001000000000000 (00001000)
*** Manually Selected a AMD 29lv160DB 1Mx16 BotB (2MB) Flash Chip ***

- Flash Chip Window Start .... : 1fc00000
- Flash Chip Window Length ... : 00200000
- Selected Area Start ........ : 1fc00000
- Selected Area Length ....... : 00200000

*** You Selected to Backup the WHOLEFLASH.BIN ***

=========================
Backup Routine Started
=========================

Saving WHOLEFLASH.BIN.SAVED_20070424_224548 to Disk...
[ 0% Backed Up] 1fc00000: 100000e3 00000000 00000100 4352434e
[ 0% Backed Up] 1fc00010: 746f6f62 64616f6c 00007265 00000000
[ 0% Backed Up] 1fc00020: 2e312e31 00000030 00000000 00000000
[ 0% Backed Up] 1fc00030: 35303032 2d34302d 00003830 00000000
[ 0% Backed Up] 1fc00040: 00000080 00000000 00000000 00000000
[ 0% Backed Up] 1fc00050: 00000000 00000000 00000000 00000000
[ 0% Backed Up] 1fc00060: 00000000 00000000 00000000 00000000
[ 0% Backed Up] 1fc00070: 00000000 00000000

manolo_321 17/05/2007 00:19

Jubano OK, tienes razon, tenemos lectura de la flash, aunque los datos los lee alreves (invertidos de posicion), solo tenemos que hacer algun retoque mas, segun tu lectura de la flash:
100000e3 00000000 00000100 4352434e 746f6f62 64616f6c 00007265

Datos dump original:

E3000010 00000000 00010000 4E435243 626F6F74 6C6F6164 65720000

Como puedes son iguales, pero leidos al reves.

jubamo 17/05/2007 05:09

Eso solo es porque los lee a 4 bytes y en la memoria están a byte, cuando lo ves el archivo de salida, coincide.

Lo malo es que creo que no se le pueden mandar comandos a la flash (borrar, lectura de ID, programar, etc).

A ver si se coge alguien más pues las pruebas me llevan mucho tiempo.

Saludos.

zivago40 17/05/2007 11:58

Cita:

Iniciado por xeloa (Mensaje 2885420)
esta claro que algo hago mal pues se abre dos segundos y se cierra HELP

Hola, lo de que se abre dos segundo te refieres a la ventana??? Lo tienes que hacer en una ventana de DOS y si hay problemas te dira que pasa, si no encuentra el giveio, o si los parametros no son correctos.

Jubamo, he cambiado el cable y ahora me lee el chip ID como 7 y el resto 0, esto parece un juego de adivinanzas, pero que aqui seguimos.

jubamo 17/05/2007 17:10

Cita:

Iniciado por zivago40 (Mensaje 2886473)
Jubamo, he cambiado el cable y ahora me lee el chip ID como 7 y el resto 0, esto parece un juego de adivinanzas, pero que aqui seguimos.

Hola, voy a intentar ayudar:

1 - Tal y como viene el ejecutable que hay dentro de la carpeta de windows, fijandonos en el conexionado que hay en jtag-hairydairymaid.png,, (pero en la parte derecha de la imagen, olvidándonos de los números e intercambiando TDO por TDI vemos que a falta de poner la conexión de TRST, se corresponde con el conector del Ali), dándole de entrada "-probeonly /skipdetect /instrlen:5" ya te debe de detectar el IMPCODE 00C50288.

2 - He hecho muchas pruebas pero todas en un PC en el que nunca he conseguido leer con el ejtag_p el IMPCODE, hasta que hace menos de 2 semanas se me ocurrió probarlo con uno muy lento (200Mhz P-mmx) y el más rápido de los que he probado y funcione es AMD K7 1800Xp P-Base K7s5a, aqui lo he probado sin tocar en Xp y Knoppix cd-V5.1.1-ES modificando el wrt54g.c.

3 - Como ya he dicho a la flash no se le pueden ejecutar comandos, por defecto se queda en lectura. Este programa no esta escrito para el M3329C, le han incluido las rutinas Pracc para poder utilizarlo en CPU's Mips que no dispongan de DMA, por eso y al decodificar el IMPCODE el bit 14 lo tiene a 1, lo que significa que el M3329C no dispone de DMA he optado por experimentar con el.

4 - Para poder leer la flash he tenido que modificar incluyendo un IF .... (comentado anteriormente) y fijar la memoria como AMD 29lv160DB 1Mx16 BotB que es compatible con la Macronix que lleva el deco.

5 - Tenemos el código fuente y al principio del wrt54g.c podemos ver los términos del copyright, las garantías, la dirección email de Hairy........

Espero que os sirva de ayuda, pero es más complicado, hay que ejecutar comandos de la flash para que nos sirva de algo, y esto todavía no lo hace.

Saludos.

manolo_321 18/05/2007 23:40

Hola, estoy testeando el ejtag wrt54g con la modificacion de Jubano y ya puedo leer la flash, por fin hemos avanzado!!! , bueno , esta claro que ya tenemos acceso para hacer una lectura de la flash mx29lv160, he hecho varias pruebas como borrar la flash (no pasa del primer sector ) o intentar grabarla , pero no he tenido exito, he estado mirando el programa y los comandos para grabar en la flash AMD (equivalente a la MX ) son correctos. Es posible sea la configuracion de la flash.

manolo_321 19/05/2007 00:18

Ok, he probado con la configuracion de la flash /fc:10 , de momento me ha pasado el borrado (erase) , ahora esta grabado la flash, espero que salga bien, esto va para largo.

manolo_321 19/05/2007 00:37

Nada, al final se ha bloqueado, no a borrado nada de la flash. No pasa del primer bloque al borrar la flash.

xeloa 19/05/2007 01:36

pues yo con la ayuda de jubamo he conseguido leer la flash,he abierto el programa en el simbolo de sistema,luego he tocado un boton del wall y sorpresa se me a quedado a cero el display bueno solo ha sido un sustillo por que al reiniciar se a puesto bien,pero el trozo de flash que ha leido es correcta.felicidades chicos estais haciendo un gran trabajo

jubamo 19/05/2007 02:41

Muy bien xeloa ya ves que puedes acceder dentro del deco con el JTAG.

Ahora hay que centrarse el la función en la que he tenido que añadir el if:
void ExecuteDebugModule(unsigned int *pmodule)

También mirar la rutina pracc de escribir ( que esta en el wrt54g.h):
unsigned int pracc_writehalf_code_module[] = {

Modificar las definiciones de flash para ver si las detecta:
marca MX:
{ 0x00C2, 0x2249, size2MB, CMD_TYPE_AMD, "MX29lv160 1Mx16 BotB (2MB)" ,1,size16K, 2,size8K, 1,size32K, 31,size64K },

marca EN:
{ 0x007F, 0x2249, size2MB, CMD_TYPE_AMD, "EN29lv160 1Mx16 BotB (2MB)" ,1,size16K, 2,size8K, 1,size32K, 31,size64K },
{ 0x001C, 0x2249, size2MB, CMD_TYPE_AMD, "EN29lv160 1Mx16 BotB (2MB)" ,1,size16K, 2,size8K, 1,size32K, 31,size64K },

Por la tarde voy a probar a borrar una zona de flash sin utilizar dma en el ruter original del programa y os cuento si allí funciona.

Como veis solo es cuestión de hacer que la flash acepte comandos. A ver quien lo consigue.

Seria interesante informar en otros foros de más al norte, pues allí se defienden mejor en estos temas.

Saludos a todos.

jubamo 19/05/2007 04:16

[QUOTE=jubamo;2888773]
Por la tarde voy a probar a borrar una zona de flash sin utilizar dma en el ruter original del programa y os cuento si allí funciona.[/QUOTE]
manolo_321, xeloa, etc:
No he podido esperar y la respuesta es que allí si que funciona.

Otra opción y que sería mas rápida, de funcionamiento, (modificando el wrt54g) es analizar el flashwr.exe que esta en ALIUSB29/3329c (del Jtag USB) porque creo que este manda al debug_vector 0xff200200 el cache.abs, para cargar el especifico flashwr27sf.abs y el volcado de la flash a la ram y para terminar ejecuta flashwr27sf.abs para grabar la memoria.

Bueno, como veis un simple aparatito nos da para jugar mucho.

SALUDOS.

malillo1 19/05/2007 08:59

Desde aqui os felicito y animo por el trabajo que estais realizando. Yo en esto no os puedo ayudar (no tengo ni idea) pero no decaer, estoy seguro lo conseguireis.


Saludos

barrigaverde 19/05/2007 10:57

saludos compañeros jubamo me podrias pasar la relacion del cambio que has hecho entre el jtag y puerto paraalelo que voy a mirar si me funciona

xeloa 19/05/2007 11:47

barrigaverde jubamo me subio ayer un archivo al upload 5 con el nombre xeloa ,dentro viene el esquema de las conexiones y el programa adaptado,yo no he conseguido copilarlo pero siguiendo las indicaciones de jubamo wrt54g -backup:wholeflash /fc:1(es el comando para leer la flash)en modo msdos esta en INICIO-TODOS LOS PROGRAMAS-ACCESORIOS-SIMBOLO DE SISTEMA se abre la pantallita msdos instalo el exe en el directorio donde me es mas facil acceder y escribo el comando,si tu sabes copilar supongo que te sera mas facil yo de momento voy asi.saludos

barrigaverde 19/05/2007 15:43

pues me pasa lo mismo ando un poco fuera de juego lo de compilar no lo he realizado nunca por eso pedi ayuda para aclararme mejor y mas rapido pero aun no me he enterado supongo que sera algo facil , buscare ese fichero saludos

malillo1 19/05/2007 15:49

Acabo de ver en el sat 5 un archivo con fecha de hoy (Jtag-M3329) no se si lo habréis subido alguno de vosotros, por si os vale de ayuda


Saludos

jubamo 19/05/2007 16:28

[QUOTE=malillo1;2889175]Acabo de ver en el sat 5 un archivo con fecha de hoy (Jtag-M3329) no se si lo habréis subido alguno de vosotros, por si os vale de ayuda


Saludos[/QUOTE]

Lo he puesto yo para asi hacer que lo vea alguien con buenos conocimientos, (los que andan buscando el jtag para el Globo) y logre hacerlo funcionar en escritura.

En fín para difundirlo mas, pero es el mismo que dice xeloa mas el original.

Barrigaverde, si quieres compilar es facil, pero lo más complicado es saber escribir un programa o modificarlo para adaptarlo. He utilizado el que dijo zivago40 gratuito y 9 megas. En la red encontraras mucha informacion de C (el lenguaje en el que esta escrito este progarma), pero como dice xeloa todo lo que podemos hacer hasta ahora lo hace este que ya esta listo para usar.

Si lo lee vishero, no estaria mal comentarle al programador creador del original el error que nos da sin modificar y que no podemos escribir, por si tiene alguna ocurrencia.

Saludos.

manolo_321 19/05/2007 18:50

Hola he estado mirando la configuracion de la flash y la fc:01 es equivalente a nuestra mx29lv160cb, simplemente hay que retocar los datos del fabricante i el del id-device quedaria asin:
{ 0x00C2, 0x2249, size2MB, CMD_TYPE_AMD, "MX 29lv160CB 1Mx16 BotB (2MB)" ,1,size16K, 2,size8K, 1,size32K, 31,size64K },

Segun he comprobado los comandos que utilizamos para la manipulacion de la flash son equivalentes a los de nuestra flash (son los de la AMD), cuando quiero hacer un erase no consigo pasar del primer sector.

manolo_321 19/05/2007 19:07

Juabano segun has comentado has probado a borra con el programa wrt54g en modo "/nodma" , y funciona con el router con la cpu con la que esta diseñado el programa ,OK , una prueba para saber si la rutina de escritura es operativa seria si alguien pudiera hacer la prueba con algun deco con cpu distinta ala nuestra por ejemplo algun deco con STI, asin comprobariamos si las rutina de escritura Pracc (/nodma) trabaja correctamente con otra cpu diferente a la que fue diseñado el programa.

jubamo 19/05/2007 20:35

[QUOTE=manolo_321;2889337]Juabano segun has comentado has probado a borra con el programa wrt54g en modo "/nodma" , y funciona con el router con la cpu con la que esta diseñado el programa ,OK , una prueba para saber si la rutina de escritura es operativa seria si alguien pudiera hacer la prueba con algun deco con cpu distinta ala nuestra por ejemplo algun deco con STI, asin comprobariamos si las rutina de escritura Pracc (/nodma) trabaja correctamente con otra cpu diferente a la que fue diseñado el programa.[/QUOTE]

Por lo que he visto y si no me equivoco, el Sti5518 no lleva cpu mips por lo que no sirve este programa sino st20 cpu.

La información que tengo sobre la cpu mips es de 79RC32364_MA_38374.pdf aquí por ejemplo no encuentro el bit SETDEV del registro INSTR_CONTROL (utilizado en el programa) y en este manual solo es de lectura (el bit), o sea que hay diferencias y como no disponemos de info del Ali, voy a seguir investigando esto.

Mira a ver si encuentras algo de interés en el programa del USB.

Saludos.

omnitron 19/05/2007 23:42

Hola Jubamo, hola de nuevo Xeloa he llegado hasta aqui xD

Jubamo me gustaría ayudar, por ahora no tengo resistencias tan pekeñas para hacer el Jtag, las tengo más grandes, por ahora entiendo todo y me gustaría hacer unas pruebas a ver si pueiera conseguir algo, deciros ke tengo mi sl35 muerto así ke puedo hacer tantas pruebas como kiera.

Tan solo hay una cosa que no entiendo jubamo, es cuando dices ke funciona el programa al probar sin dma en el ruter original del programa, el dma se lo ke es pero no tengo ni idea de a ke te refieres con 'el ruter principal del programa'.

Se bastante de electronica y soy Ingeniero Informatico así que te puedes imaginar ke se me da bastante bien C, espero poder ayudar a partir del lunes

Gracias!

xeloa 20/05/2007 00:52

creo que se refiere a que el programa original (wrt54g.exe)es para flasear ruters,y bienvenido

manolo_321 20/05/2007 01:18

He estado hechando un vistazo al datasheet de la 29lv160, en el se habla como desproteger (unlock) la flash por hardware, hay un pin RESET#, el cual si se pone a Vhv(12volts) la flash se puede borrar y programar, es posible que actualmente estemos intentando programar con la flash un estado cerrada (lock), seria interesante verificar en el momento de borrar la flash como se encuentra el sector (01H=protejido, 00H=unlock).

barrigaverde 20/05/2007 02:19

entendido jubamo osea el programa esta preparado no tengo que compilar solo usarlo como esta comentado por xeloa asi lo entiedo ya tengo cambiado el jtag

bueno subo dos pdf al upload 5 con el nombre que esta entre parentesis, procede de este titulo que he encontrado sobre modificacion del sl 35 s (TUTO_Modif_comag_sl35s_11.9_en_version_flashable) meritos a quien corresponda saludos

jubamo 20/05/2007 05:10

para omnitron
 
Hola, omnitron:

Tomando la información que nos da la lectura el IMPCODE del ALI y aplicandola a datashetts de otros chips con cpu mips (IDT™ Interprise™ 79RC32434 Integrated Communications Processor User Reference Manual), concluimos que no tiene DMA (dentro del chip Ali) por lo que para leer o escribir en la memoria hay que meterle dentro primero las rutinas PraCc correspondientes.

Estamos utilizando:
[url]http://downloads.openwrt.org/utils/HairyDairyMaid_WRT54G_Debrick_Utility_v48.zip[/url]
que lo han escrito originalmente para unos BROADCOM (aparato Linksys WRT54G), que si puede trabajar para chips que no tienen DMA, este programa nos da error de violación de segmento (en el BROADCOM, no), al ejecutar (void ExecuteDebugModule(unsigned int *pmodule)), por lo que he introducido la modificación del if comentada anteriormente.

Creo que nuestro problema esta en que hay alguna diferencia en el CONTROL REGISTER del puerto TAP del Jtag del Ali y no ejecuta bien en escritura, (pues para leer la identificación de la flash debe de escribir primero el comando correspondiente en la flash).

Espero que con esto te ayude a aclarar tus dudas, pero te digo que no tenemos info del ALI.

SAludos.

omnitron 20/05/2007 10:35

Buenos días!

Gracias Jubamo por la aclaración, he estado viendo el programa y el datashet que comentaba manolito y a mi me da la impresión que el problema está en que no se introduce bien el modo escritura, ya que si la lectura la hace =, la escritura debería hacerlo tambien bien, tambien se me ocurre que hayan cambiado el codigo de operacion para la escritura, bueno mañana a ver si me hago el jtag y veo que es lo que ocurre cuando intentas escribir o eliminar, donde se queda y demás

Un saludo!!

zivago40 21/05/2007 09:31

A ver si alguno me podeis ayudar antes de formatear el ordenador para hacer sitio para linux. Resulta que en w98 el programa no corre porque no encuentra la giveio.sys y en w2k no lee nada. Segun las instrucciones en 98 no haria falta hacer nada pero ni copiandola a todos los directorios de sistema funciona. Y para colmo de males arranco knoppix 3.8 y aborta el arranque porque algo del kernel que no se muy bien porque. Un saludo y seguid asi.

jubamo 21/05/2007 10:00

Cita:

Iniciado por zivago40 (Mensaje 2891199)
A ver si alguno me podeis ayudar antes de formatear el ordenador para hacer sitio para linux. Resulta que en w98 el programa no corre porque no encuentra la giveio.sys y en w2k no lee nada. Segun las instrucciones en 98 no haria falta hacer nada pero ni copiandola a todos los directorios de sistema funciona. Y para colmo de males arranco knoppix 3.8 y aborta el arranque porque algo del kernel que no se muy bien porque. Un saludo y seguid asi.

Hola, respecto al error al arrancar Linux con Knoppix 3.8, si tienes buena velocidad de descarga de Internet, te recomiendo que te bajes otra aquí hay muchas y baja muy rapido.
[url]ftp://ftp.caliu.cat/pub/distribucions/knoppix-es/[/url]
Si consigues arrancar con Knoppix yo te guio paso a paso.

Lo de w98 debería de funcionar, yo lo he probado y tampoco funciona en Xp sí.

Formatear para instalar Linux,
Si tienes espacio libre en el disco (unos 5 gigas) puedes con partition magic dejar espacio libre y crear allí dos particiones una de 4.6G (donde dejaras el Linux) y otra de 0.5G swap (intercambio).
Si esta es la primera vez que lo intentas y no tienes a nadie que en persona te pueda ayudar, te digo que la cosa está difícil, yo te recomiendo que empieces con Knoppix en modo consola y con una memoria usb ya tienes para hacer las pruebas e iniciarte en Linux.

Y si no quieres arriesgarte para instalar Linux, consigue otro disco duro y lo cambias por el actual, para hacer las pruebas sin tocar lo que tienes.

Si tienes mas dudas, aquí estamos para ayudarte y respecto de Linux busca por el error que te sale en google que seguro te ayuda.

Saludos.

xeloa 21/05/2007 10:04

zibago si te refieres al wrt54g.exe a mi tampoco me funciona excepto en modo msdos,si te vas a programas/accesorios /simbolo de sistema ,se abre la ventana para trabajar en msdos,en el xp copio el wrtr54g.exe en documentns and setting/xeloa que es mi carpeta de usuario ,escribo el comando en la ventana msdos y trabaja igual,bueno todo esto me queda grande asi que alomejor te he dado una explicacion que no buscabas en ese caso perdona talvez mas tarde te den la respuesta que buscas .saludos

Pescao 21/05/2007 10:20

Cita:

Iniciado por zivago40 (Mensaje 2891199)
A ver si alguno me podeis ayudar antes de formatear el ordenador para hacer sitio para linux. Resulta que en w98 el programa no corre porque no encuentra la giveio.sys y en w2k no lee nada. Segun las instrucciones en 98 no haria falta hacer nada pero ni copiandola a todos los directorios de sistema funciona. Y para colmo de males arranco knoppix 3.8 y aborta el arranque porque algo del kernel que no se muy bien porque. Un saludo y seguid asi.

También puedes probar con un ubuntu que puedes descargar de aquí.

O puedes intentar instalar bien el driver de esta manera:

descargar giveio.sys y el programa instdrv.exe.
  • Copias giveio.sys (dentro del zip en giveio\i386\free\) y lo metes en directorio de windows \system32\drivers\ (supongo que para win98 será c:\windows\system32\drivers\).
  • Luego usas el instdrv.exe en una consola de esta manera instdrv giveio c:\windows\system32\drivers\giveio.sys

Esto en un principio es para hacer funcionar el driver en win2k, pero te puede vales para el 98 también.

De todos modos, Xeloa tiene razón, el programa es para usarlo via ms-dos, es decir, en una consola, si lo lanzas pinchando dos veces sobre él, es normal que no te valla

Un saludo.

zivago40 21/05/2007 12:24

Cita:

Iniciado por Pescao (Mensaje 2891279)
También puedes probar con un ubuntu que puedes descargar de aquí.

O puedes intentar instalar bien el driver de esta manera:

descargar giveio.sys y el programa instdrv.exe.
  • Copias giveio.sys (dentro del zip en giveio\i386\free\) y lo metes en directorio de windows \system32\drivers\ (supongo que para win98 será c:\windows\system32\drivers\).
  • Luego usas el instdrv.exe en una consola de esta manera instdrv giveio c:\windows\system32\drivers\giveio.sys

Esto en un principio es para hacer funcionar el driver en win2k, pero te puede vales para el 98 también.

De todos modos, Xeloa tiene razón, el programa es para usarlo via ms-dos, es decir, en una consola, si lo lanzas pinchando dos veces sobre él, es normal que no te valla

Un saludo.

Gracias pescao voy a probar, y lo de la consola ya lo sabia mas qe nada por pasar parametros al programa. Tengo una version de ubuntu pero necesita instalarse, la facilidad de knoppix es que no hace falta nada y te lo deja todo como esta.

Ya he tenido antes instalado linux, desde mandriva a guadalinex. El "problema" es el espacio, que tengo que deshacerme de w98 o w2k, porque otro disco duro en estos momento va a ser que no.

zivago40 21/05/2007 13:35

No funciona, me dice que no puede conectar con giveio. Voy a instalar linux, que si he podido compilar sin problemas y a ver si puedo seguir por ahi. Gracias a todos.

manolo_321 22/05/2007 00:10

Hola a todos, tenemos otro programa con soporte PRACC para procesadores MPIS, es el "jtag-0.6-cvs-20051228", en el archivo NEWS pone :
- EJTAG processor access for MIPS and clones (Marek Michalkiewicz).
Viene con el codigo fuente, haber si nos sirve y funciona la rutina de escritura.

Vientodarena 22/05/2007 03:28

Hace un tiempo me dí cuenta de una cosa referente a GIVEIO, teniendo el programa IcProg y en su configuracion (apartado miscelaneo) habilitando la compatibilidad con win 2000/xp, no hace falta instalador para el GIVEIO en winXP.
Imagino que en win98 instalará tambien ese driver solo con encender el programa, aunque esto último no lo he probado.

jubamo 22/05/2007 09:27

Cita:

Iniciado por manolo_321 (Mensaje 2892216)
Hola a todos, tenemos otro programa con soporte PRACC para procesadores MPIS, es el "jtag-0.6-cvs-20051228", en el archivo NEWS pone :
- EJTAG processor access for MIPS and clones (Marek Michalkiewicz).
Viene con el codigo fuente, haber si nos sirve y funciona la rutina de escritura.


Lo tengo instalado en el pc que no me funciona ninguno con el ali (posiblemente es demasiado rápido, tampoco me va el ejtag_p ni wrt54g) aqui hay otro corregido veréis que ya trae un ejecutable windows. este comparado con el wrt54g es......., bueno el que quiera que lo mire.
Lo meteré el el lento y cuando lo pruebe, os cuento los resultados.

Respecto del wrt54g, pues eso que es para un Broadcom y parece que tiene diferencias con el Ali, pues en el primero va bien todo y en el segundo, para que lea hay que modificarlo y para escribir, vete a saber.......

Another popular JTAG utility is a Openwince JTAG. Unfortunately, the development is stalled, but you can use a CVS snapshot fork with EJTAG driver implemented by Marek Michalkiewicz : jtag-0.6-cvs-20051228. One more snapshot with corrected Flash block mapping may be found there: http://star.oai.pp.ru/jtag/jtag-brecis-ok.zip. To access a Flash chip in 8-, 16- or 32-bit mode via EJTAG, use 0x1fc00000, 0x3fc00000 and 0x5fc00000 addresses respectively.

Espero que esto no os aburra, pero es lo que hay en el trasfondo de todas esas aplicaciones tan bonitas que se manejan con el ratón.

Saludos.

omnitron 22/05/2007 11:35

Buenos dias chicos, he estado intentando leer la flash de mi deco y parece que no he conectado bien los cables, podrías comentarme jubamo cual es el orden de los pines del ejtag en el deco ? es decir mirandolo por el frontal al deco el pin de la derecha es el 1 o es el 6? Para conectarlo al pc con un db25 vale no? No me lee por ahora el ICMP ni nada

jubamo 22/05/2007 12:11

Dentro del Hairy..... tienes el esquema para el wrt54g y en en:
http://foros.zackyfiles.com/showpost...7&postcount=30
tienes lo del ali,

Si te sale todo ceros, prueba en otro ordenador mas lento, a mi tampoco me funciona en los pc rapidos.

Saludos.

omnitron 22/05/2007 12:27

Ok ya lo vi, es que en mi deco no esta escrito qué es cada punto entonces lo intuí por las resistencias cual era cada uno... pero seguro me equivoqué, me salia todo 111111111 pero estaba seguro mal conectado pk daba igual que lo tuviera conectado o no.....

Mcuhas gracias esta noche ya lograré leer la flash y mañana intentare hacer pruebas a ver que puedo hacer

zivago40 22/05/2007 13:27

He subido al up5 un archivo, mips_ejtag_docs.zip, con varios docs sobre la especificacion ejtag de mips. De moento es lo que puedo hacer a ver si se termina de instalar linux. Saludos

jubamo 22/05/2007 22:29

para omnitron
 
te recuerdo que para poner el chip en modo debug debes de cambiar el puente que esta al lado de la ram, sino solo lee 11111111.

omnitron 22/05/2007 22:37

No consigo hacer que lea nada....

Cambio el puente de la RAM y ahora cundo enciendo el deco se encienden las 2 luces la roja y la verde, he seguido el eskema ke ke hay en el programa (en el que solo se utilizan 5 pins de los 6) pero nada, he comprobado la continuidad en cada punto y está ok ya no se qué probar,.

No creo que lo que haya hecho de la masa esté mal, lo que he hecho es conectar los pines 20 y 25 que son los que pone en el eskema al metal del DB25 y a este he conectado un cable que va al GND del deco...

La verdad es que no lo entiendo.....

xeloa 23/05/2007 00:27

para omnitron yo uso esta configuracion:
http://foros.zackyfiles.com/showthread.php?t=514803
y jubamo me colgo el archivo modificado (adaptado a esta configuracion)en el upload 5 com el nombre xeloa
si la configuracion esta bien lo sabras porque el wall2.0 y el ejtag-nt detectan implementacion 0c5288 .saludos

omnitron 23/05/2007 10:17

Jue vaya lio.....

En ese esquema que me pasas xeloa hay resistencias de 33 Ohmios y ahi si que se utilizan los 6 pines, el archivo que me comentas del up 5 no puedo bajarlo pk stoy en el curro y me bloquea la descarga :(

jubamo 23/05/2007 11:03

Cita:

Iniciado por omnitron (Mensaje 2893711)
Jue vaya lio.....

En ese esquema que me pasas xeloa hay resistencias de 33 Ohmios y ahi si que se utilizan los 6 pines, el archivo que me comentas del up 5 no puedo bajarlo pk stoy en el curro y me bloquea la descarga :(

Es que para que le fuera mas fácil el probarlo, le puse por defecto esa configuración de pins, que es la misma que ya había utilizado con otros programas y asi sin tocar nada tenia que poder leer la flash.
Ya te digo que dentro del Hairy...... esta como hacer el cable, lo de 33 0 100 ohms es irrelevante, yo las tengo de 100 y en la foto del enlace del foro que te puse, tienes la nomenclatura de los pins en el deco. Repito lo que comenta xeloa es una adaptación (alli están los fuente modificados) y que a mi en dos pc rapidos > 2400 Mhz no me funciona, lee solo 00000000000.

Respecto de las pruebas "jtag-0.6-cvs-20051228", pues como no tiene definido el M3329C, con bus ejtag no puede detectar la flash, y retocar este si que es un lio.

Resumiendo, no mezcles lo que comenta xeloa con lo que hay en el Hairy..... porque son distintos.

Saludos

manolo_321 23/05/2007 21:20

Hola, aqui pongo un link donde describe como implementar una cpu nueva en el jtag-0.6, creo podemos "engañar" al comando "detect" si describimos a nuestra cpu ALI como ID 0000..., este software soporta mas versiones de cpu, este es el link:
http://forum.openwrt.org/viewtopic.php?pid=20623

jubamo 24/05/2007 10:47

[QUOTE=manolo_321;2894498]Hola, aqui pongo un link donde describe como implementar una cpu nueva en el jtag-0.6, creo podemos "engañar" al comando "detect" si describimos a nuestra cpu ALI como ID 0000..., este software soporta mas versiones de cpu, este es el link:
[url]http://forum.openwrt.org/viewtopic.php?pid=20623[/url][/QUOTE]

Lo he vuelto a probar con "initbus ejtag" (que es el que usa para mips sin DMA) y no hay manera. Seguramente el 0000000 del IDCODE es porque no lee nada y no se le puede crear una nueva descripción de procesador.

Si miras en "jtag-brecis-ok/src/bus/ejtag.c" veras que hace algo similar al wrt54g.c con las rutinas PrAcc. Creo que solo hay que modificar el wrt54g.c para que pueda escribir, pero como no hay info del Ali, a ver que le cambias.

Sería interesante sacar algo de info de lo que hay para el Jtag USB y en esto estoy verde.

zivago40 24/05/2007 11:58

Hola a todos, jubamo te tomo la palabra y te pido un poquitin de ayuda. Te cuento, arranque un pc con knoppix, compilo wrt54g lo ejecuto sin argumentos y me suelta el rollo de las opciones y demas, pero cuando lo ejecuto con algun parametro me dice que no encuentra /dev/parport0. Lo he compilado con el make en mandrake y me dice que no puede ejecutar un archivo binario. Por otro lado, hay otro procesador mips que no admite dma, el nec upd61110 que llevan los xinuo 1000fta y que para ellos si hay jtag, ahora mismo no recuerdo el nombre pero es cuestion de mirar. Saludos

jubamo 24/05/2007 12:35

Cita:

Iniciado por zivago40 (Mensaje 2895104)
Hola a todos, jubamo te tomo la palabra y te pido un poquitin de ayuda. Te cuento, arranque un pc con knoppix, compilo wrt54g lo ejecuto sin argumentos y me suelta el rollo de las opciones y demas, pero cuando lo ejecuto con algun parametro me dice que no encuentra /dev/parport0. Lo he compilado con el make en mandrake y me dice que no puede ejecutar un archivo binario. Por otro lado, hay otro procesador mips que no admite dma, el nec upd61110 que llevan los xinuo 1000fta y que para ellos si hay jtag, ahora mismo no recuerdo el nombre pero es cuestion de mirar. Saludos

esto es lo que hice con Knoppix:

He arrancado el pc con Knoppix,
boot: knoppix 2
luego en consola: modprobe ppdev
enchufar un usb con los archivos (modificados)
consola: mount /dev/sda1 /mnt
cd /mnt......
ir al directorio donde esta el wrt54g.c, el Makefile y el wrt54g.h
consola: ./make (esto lo compila).consola ./wrt54g -backup:who...............

prueba modprobe ppdev y mira si tienes /dev/parport0 , sino busca en google por el mensaje de error que te da pues; creo que había una forma de crear el dispositivo parport0 con makedev

zivago40 24/05/2007 14:00

Gracias, mañana probare de nuevo.

zivago40 25/05/2007 12:25

Hola a todos, ya he conseguido leer el IMPCODE con linux. Ahora la lectura me da todo 0, pero puede ser un problema de que desolde la memoria para intentar leerla con willem, y aprovechando la voy a cambiar por una amd29lv160 que esta definida por el programa. Sl2

omnitron 25/05/2007 22:54

Snif snif ya no se que hacer llevo toda la semana intentando leer la flash y nada, lo unico que consigo son todo 1 he comprobado hast ala continuidad de las resistencias del deco por si estubieran kemadas y nada, he probado con el ejtag_p y lo mismo todo 1, además es igual que tengas el deco conectado desconectado ni nada...

La verdad es que ya me queda poco he probado siguiendo concienzudamente el esquema del HAiry, tb como lo pones tu en el post , cambiando algunos conectores pero nada...

jubamo 26/05/2007 00:56

[QUOTE=omnitron;2897120]Snif snif ya no se que hacer llevo toda la semana intentando leer la flash y nada, lo unico que consigo son todo 1 he comprobado hast ala continuidad de las resistencias del deco por si estubieran kemadas y nada, he probado con el ejtag_p y lo mismo todo 1, además es igual que tengas el deco conectado desconectado ni nada...

La verdad es que ya me queda poco he probado siguiendo concienzudamente el esquema del HAiry, tb como lo pones tu en el post , cambiando algunos conectores pero nada...[/QUOTE]

Una causa de que solo lea 11111 es que no este en modo Debug que en el SL65 con chip Ali es colocando el puente Jp1 entre los dos pins que hay mas hacia el frontal del aparato. Asi solo se enciende el led rojo de alimentación.
Si lo tienes entre los dos de mas hacia la parte trasera funciona normalmente.
Aparte de que pruebes con otro ordenador, no se que mas decirte.

Saludos.

barrigaverde 26/05/2007 09:10

ademas jubamo tambien dan problemas de lectura algunas placas base yo por ejemplo la que tengo trabajando ahora no hay manera de leer ningun receptor por jtag tengo que utilizar uno que tengo con windo 98 pero por que es otra placa mas antigua y lo de la version del ecp epp es compatible esta que tengo no,osea que puede ser eso configurala de distinta forma haber si tienes suerte onmitron saludos

zivago40 26/05/2007 11:15

omnitron prueba a medir en la patilla de reset a ver si tienes 3,3V, es la primera de la derecha; cuando hice las pruebas con linux tuve que poner una resistencia de 1k a 3,3v para que el chip entrara en reset y poder leer, la explicacion no se si sera algun fallo de conexionado porque no me dio tiempo a verlo pero asi funciono.

manolo_321 27/05/2007 21:59

Hola, he estado haciendo pruebas con el jtag-0.6, y nada, descartado por el momento, me da tengo error "ejtag(139) no access procesador", con lo que de momento me declino por el wrt54g, al menos podemos leer la flash, seria interesante modificar el programa para saber el estado del registro de control, imprimir en pantalla el estado de los bits del "ctrl_reg" , asin podriamos saber el estado real , bueno necesitamos alguien que sepa bastante de programacion en "c".

jubamo 28/05/2007 17:30

Hola manolo_321,

Estoy de acuerdo contigo en todo excepto en lo que necesitamos un experto en "C", pues dandole unas cuantas vueltas queda todo muy claro.

Lo del ejtag-tools, lo he probado y el problema que hay es el mismo que el wrt54g, falla el bus de comunicación para acceder a la memoria, alli ni puedo leerla, cosa que en el wrt54g.c lo solventamos añadiendo lo del if, y claro esto si funciona bien con el "broadcom" y no con el "ali", quiere decir que tienen alguna diferencia y en este caso el if es porque despues de probar con ambos y tomando lecturas del registro:

set_instr(INSTR_ADDRESS);
address = ReadData();
if (DEBUGMSG) printf("DEBUGMODULE: address 0x%08X\n", address);

vemos que en uno al entrar en la rutina PrAcc tiene FF200200 y el otro FF300000
Y si en vez del if ponemos al inicio del

void ExecuteDebugModule(unsigned int *pmodule)
{
unsigned int ctrl_reg;
unsigned int address;
unsigned int data = 0;
unsigned int offset = 0;
int finished = 0;
int DEBUGMSG = 0;

//EESSTTOOOOOOO ************
set_instr(INSTR_ADDRESS);
WriteData(0xff200200);
//**************************

if (DEBUGMSG) printf("DEBUGMODULE: Start module.\n");

tenemos el mismo efecto que con el if

Nuestro problema es que nos falta informacion de la cpu del Ali y debemos suplirla con nuestras deducciones, el programa es sencillo y la clave es hacer que ejecute una rutina PrAcc adecuada.

Si lo modificas para tomar algunas lecturas y quieres que lo pase por el broadcom, que si funciona, me lo dices por privado.

Saludos.

manolo_321 28/05/2007 21:29

Hola Jubano , haciendo una pqueña recopilacion tanto el jtag-0.6 como el wrt54g nos dicen que nuestra version del ejtag es =< 2 , segun el ejtag-0.6 la configuracion del EJTAG Control Register:

/* EJTAG control register bits */
#define PerRst 20
#define PRnW 19
#define PrAcc 18
#define PrRst 16
#define ProbEn 15
#define JtagBrk 12
#define BrkSt 3

/* EJTAG 2.6 */
#define Rocc 31
#define ProbTrap 14

Podemos apreciar que los bits 31 y 14 son para la version 2.6, y en archivo ejtac.c vemos como los utiliza solo para la version 2.5:

ejctrl->in->data[PrAcc] = 1;
ejctrl->in->data[ProbEn] = 1;
if (EJTAG_VER >= EJTAG_25) {
ejctrl->in->data[ProbTrap] = 1;
ejctrl->in->data[Rocc] = 1;


Ahora vemos la configuracion en el wrt54g del EJTAG Control Register:
// --- Some EJTAG Bit Masks ---
#define TOF (1 << 1 )
#define BRKST (1 << 3 )
#define DRWN (1 << 9 )
#define DERR (1 << 10)
#define DSTRT (1 << 11)
#define SETDEV (1 << 14)
#define PROBEN (1 << 15)
#define DMAACC (1 << 17)
#define PRACC (1 << 18)
#define PRNW (1 << 19)
#define DLOCK (1 << 5 )
#define TIF (1 << 2 )
#define SYNC (1 << 23)
#define PRRST (1 << 16)
#define PERRST (1 << 20)
#define JTAGBRK (1 << 12)
#define DNM (1 << 28)
#define ROCC (1 << 31)

Aqui apreciamos que al bit 14 lo llama diferente SETDEV , y ademas cuando configura el registro no hace distinciones de la version del ejtag, solo hace referencia a la version del Ejtag para la escritura de memoria :

// ----------------------------------
// Enable Memory Writes
// ----------------------------------
// Always skip for EJTAG versions 2.5 and 2.6 since they do not support DMA transactions.
// Memory Protection bit only applies to EJTAG 2.0 based chips.
if (ejtag_version != 0) issue_enable_mw = 0;
printf("Enabling Memory Writes ... ");

Esta claro que el wrt54g nos funciona en modo lectura, este configura el registro para version 2.6, aunque en el arranque reconoce que nuestro ejtag es una version =<2.
Por el contrarion el jtag-0.6 si que hace referencia a la version del ejtag para configurar los bits 14,31 del registro, ahora mi duda es si es cierto que nuestro EJTAG es version 2 ó version 2.6. Haber si encuentro info sobre el Ejtag v2, para saber diferencias sobre el v2.6, ademas podemos ver como como en el wrt54g hace referencia a la escritura de la memoria para la version 2 del ejtag que ademas es nuestro problema.

xeloa 29/05/2007 07:15

para manolo no se si esta es la version que buscas hechale un vistazo
http://66.249.91.104/translate_c?hl=...%3Des%26sa%3DG

zivago40 30/05/2007 12:44

Hola a todos: he cambiado la memoria por una amd pero sigue sin reconocerla, se queda en "clearing wachtdog" y no pasa, aunque sigue haciendo lo que sea porque con el osciloscopio sigue habiendo salida en el TDO.

Lo que si me he dado cuenta que no le hace falta conectar el RST, lo tengo desoldado y funciona igual. Y la lectura que hace de la memoria es dfdf y todo lo mismo.

Adobe 31/05/2007 14:34

Por si acaso vale para algo.
 
Xeloa quizas sepas lo que pone.
Der Flash controller für den m3329 muß konfiguriert werden damit man zugriff auf den flash hat,
für id auslesen usw. dazu peer jtag an die Stelle 0xb8000090 0xF0005 schreiben.
Dann wird der flash erkannt und kann beschrieben werden.
* zu verwendendes tool: ist ziemlich egal OCDemon oder openwince jtag breckis
hauptsache PrAcc und byte mode programming wird
unterstützt(bei mir ist übrigens ein en29lv160at drinn)

xeloa 31/05/2007 16:25

El REGULADOR de destello para el m3329 se debe configurar de tal modo un flash alcanzado tiene, porque la identificación etc. selecto además más jtag del par el lugar 0xb8000090 0xF0005 escribir. Después el flash uno reconoce y puede ser descrito. * el que puede ser herramienta usada: OCDemon o el openwince es algo toda la misma cosa principal PrAcc de los breckis del jtag y la programación del modo de octeto se apoya (con mí a propósito está un drinn de en29lv160at)
adobe lo he traducido con google pues yo con el aleman caput,espero que los que saben mas le den utilidad

manolo_321 31/05/2007 19:29

Perdonar , de donde a salido esa informacion, alguien puede explicarlo.

Adobe 31/05/2007 19:58

Esto es un copy paste del foro aleman lo puse por lo de las direcciones, como uno no sabe demasido crei que pudiera ser util.

xeloa 31/05/2007 19:58

la informacion la ha colgado adobe talvez guarde la pagina

jubamo 31/05/2007 20:03

Pues de aqui:
http://www.sat-ulc.com/ulc/thread.php?threadid=39452&sid=

Me temo que la cosa se complica, según entiendo, entre la cpu y la flash hay un controlador de dispositivo que al igual que cuando el wrt54g.c borra el watchdog
"ejtag_write(0xb8000080,0);" para el de la flash esta en xb8000090.
yo he probado con "ejtag_write(0xb8000090,xxxx);" con algunos valores y no detecta la flash pero lee en distinto orden de bytes, o sea que actua sobre la flash.

Esperemos a ver que van averiguando.

Saludos.

manolo_321 31/05/2007 22:30

He escrito un mail al que escribio esta info en ese foro, he encontrado una pagina en la cual se habla de estas direcciones :

bdiGDB configuration file for IDT79S334A board
[INIT]
; Setup Internal Bus
WM32 0xFFFFE200 0xAA82AAAA ;CPU Port Width Register, Flash 32bit
WM32 0xFFFFE204 0x3FFFFFFF ;CPU BTA Register
WM32 0xB8000000 0x3FFFFFFF ;BTA Register
WM32 0xB8000004 0x00000007 ;Address Latch Timing Register
;
WCP0 12 0x10010000 ;Setup Status Register, clear BEV
WCP0 13 0x00000000 ;Clear Cause Register
WCP0 16 0x00000003 ;Set kseg0 coherency
WM32 0xB8000730 0x00000000 ;Disable Watchdog Timer
;
; Init memory controller
WM32 0xB8000080 0x1FC00000 ;Memory Base Address Bank 0, Flash
WM32 0xB8000084 0xFFC00000 ;Memory Base Mask Bank 0, Flash
WM32 0xB8000088 0x04000000 ;Memory Base Address Bank 1, SRAM
WM32 0xB800008C 0xFFF00000 ;Memory Base Mask Bank 1, SRAM
WM32 0xB8000200 0x00002884 ;Memory Control Bank 0, Flash 32bit
WM32 0xB8000204 0x00002863 ;Memory Control Bank 1, SRAM

manolo_321 01/06/2007 08:49

Hola a todos, ayer envie un mail al que puso esta informacion en el foro aleman haber si ellos nos pueden hechar una mano esto es lo que me constesto "SPIDER", al parece ellos tambien han podido leer la flash:

> Hi, do you know about this adress 0xb8000090 0xF0005 ,
Sorry I don´t understand this sentence. As I already written you can
access the flash on the board by writing 0xf0005 to the dword address
0x58000090. for e.g. with open wince jtag "poke 0x58000090 0xf0005" then
you can access the chip like any other, issue an
"detectflash 0x1fc00000" or what ever.

> we can read flash, but not write it, if can you help us , please write
me . THANKS !!!

which tool do you use for accessing the flash? If it is the wrt54g HDM
tool, it can't access the flash even with issuing this sequence cause
some problems in the PrAcc implementation. Actually you can read the
flash but forget about writing.

If you guys are the Spanish people who patched the wrt54g tool for
reading say it as I have some info for this guys too.

zivago40 01/06/2007 13:20

Haciendo un bucle en el numero de instruccion desde 1 hasta 1F me da las siguientes lineas:
sh-3.1$ wrt54g -probeonly /skipdetect /instrlen:5 /nocwd

====================================
WRT54G/GS EJTAG Debrick Utility v4.8
====================================

Probing bus ... Instruccion: 00000001
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000002
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000003
Done

Instruction Length set to 5

CPU Chip ID: 00000000110000000101001010001000 (00C05288)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000004
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000005
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000006
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000007
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000008
Done

Instruction Length set to 5

CPU Chip ID: 11111111001000000000001000000000 (FF200200)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000009
Done

Instruction Length set to 5

CPU Chip ID: 00001000000000000000000000000100 (08000004)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 0000000a
Done

Instruction Length set to 5

CPU Chip ID: 00000000000001001000000100001000 (00048108)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 0000000b
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 0000000c
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 0000000d
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 0000000e
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 0000000f
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000010
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000011
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000012
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000013
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000014
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000015
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000016
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000017
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000018
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 00000019
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 0000001a
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 0000001b
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 0000001c
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 0000001d
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

Instruccion: 0000001e
Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000000 (00000000)
*** CHIP DETECTION OVERRIDDEN ***

- EJTAG IMPCODE ....... : 00000000110000000101001010001000 (00C05288)
- EJTAG Version ....... : 1 or 2.0
- EJTAG DMA Support ... : No

Issuing Processor / Peripheral Reset ... Done
Enabling Memory Writes ... Done
Halting Processor ... <Processor Entered Debug Mode!> ... Done
Clearing Watchdog ... Skipped

Probing Flash at (Flash Window: 0x1fc00000) ... Done

*** Unknown or NO Flash Chip Detected ***

*** REQUESTED OPERATION IS COMPLETE ***

La 3 es ya conocida, y la 8, 9 y A dan otras cosas, por si ayuda.

jubamo 01/06/2007 17:47

Hola, si miras en este manual o en el wrt54g.h veras que son

IDT™ Interprise™ 79RC32434 Integrated Communications Processor User Reference Manual

// --- Some EJTAG Instruction Registers ---
#define INSTR_EXTEST 0x00
#define INSTR_IDCODE 0x01
#define INSTR_SAMPLE 0x02
#define INSTR_IMPCODE 0x03
#define INSTR_ADDRESS 0x08
#define INSTR_DATA 0x09
#define INSTR_CONTROL 0x0A
#define INSTR_BYPASS 0xFF


Este manual no es de nuestro Ali pero sirve para hacernos una idea de lo que estamos tocando

Con JTAG Tools 0.6-cvs-20051228, he sacado esta lectura, equivalente a la mostrada por zivago40.

jtag> cable ppdev /dev/parport0 DLC5
Initializing Xilinx DLC5 JTAG Parallel Cable III on ppdev port /dev/parport0
jtag> discovery
Detecting IR length ... 5
Detecting DR length for IR 11111 ... 1
Detecting DR length for IR 00000 ... -1
Detecting DR length for IR 00001 ... -1
Detecting DR length for IR 00010 ... -1
Detecting DR length for IR 00011 ... -1
Detecting DR length for IR 00100 ... 1
Detecting DR length for IR 00101 ... 1
Detecting DR length for IR 00110 ... 1
Detecting DR length for IR 00111 ... 1
Detecting DR length for IR 01000 ... 32
Detecting DR length for IR 01001 ... 32
Detecting DR length for IR 01010 ... 32
Detecting DR length for IR 01011 ... -1
Detecting DR length for IR 01100 ... -1
Detecting DR length for IR 01101 ... -1
Detecting DR length for IR 01110 ... -1
Detecting DR length for IR 01111 ... -1
Detecting DR length for IR 10000 ... -1
Detecting DR length for IR 10001 ... -1
Detecting DR length for IR 10010 ... -1
Detecting DR length for IR 10011 ... -1
Detecting DR length for IR 10100 ... -1
Detecting DR length for IR 10101 ... -1
Detecting DR length for IR 10110 ... -1
Detecting DR length for IR 10111 ... -1
Detecting DR length for IR 11000 ... -1
Detecting DR length for IR 11001 ... -1
Detecting DR length for IR 11010 ... -1
Detecting DR length for IR 11011 ... -1
Detecting DR length for IR 11100 ... -1
Detecting DR length for IR 11101 ... -1
Detecting DR length for IR 11110 ... -1

Sabemos que tenemos acceso a la memoria flash y que para leerla o escribirla hay que ejecutar, mandándole instrucción a instrucción a la Cpu Ali comenzando por la dirección 0xff200200 el programita ya codificado en binario que esta está en wrt54g.h esto se hace colocando la instrucción en el registro 0x08 y la dirección en el 0x09 y en el 0x0a es el de control. Todo esto es necesario porque no dispone de DMA.

Para poder escribir, borrar, leer el Id de la flash hace falta escribir en ella y es aquí donde fallamos, también he de decir que usamos una utilidad no diseñada especificamente para el Ali. Tampoco disponemos de información de esta chip, la única información de este tipo de chips que tengo es la referenciada al principio y según esta, la flash es un dispositivo, manejada por un controlador de dispositivos con unos registros para configurar el acceso a cada dispositivo.

The device controller on the RC32434 device provides a glueless interface to: SRAMs, ROMs/PROMs/
EEPROMs, dual port memories, and many peripheral devices. The device controller generates all of the
signals required to support both Intel and Motorola style peripherals and can directly control up to six
devices. Additional devices may be supported through external decoding of the address bus.

Parece ser que si el ali funciona de forma similar al del manual, hace falta borrar el bit de WP (protección de escritura) en el registro correspondiente para poder seguir.

Saludos.

manolo_321 01/06/2007 22:53

Aqui pongo estas direcciones sacada del ali-usb, tal vez sean de utilidad:

0B8000070
0B8001030
0B8001000
0B8001004
0B8000084
0B8000080 -----> segun el wrt54 es para "Clear Watchdog"
0B8000034
0B800007C

ff200200
ff20003c
ff203000

jubamo 02/06/2007 06:42

Y esto es una lectura de esa zona de registros, se observa que hay datos en las direcciones que aparecen en el USB.

- Selected Area Start ........ : b8000000
- Selected Area Length ....... : 00040000

*** You Selected to Backup the CFE.BIN ***

=========================
Backup Routine Started
=========================

Saving CFE.BIN.SAVED_20070602_063715 to Disk...
[ 0% Backed Up] b8000000: 00000000 00000000 00000000 00000000
[ 0% Backed Up] b8000010: 00000000 00000000 00000000 00000000
[ 0% Backed Up] b8000020: 00000000 00000000 00000000 00000000
[ 0% Backed Up] b8000030: 00000000 00000000 00000000 00000000
[ 0% Backed Up] b8000040: 0001dfea 00000000 7fffffff 00000000
[ 0% Backed Up] b8000050: 007f4000 00000000 80000000 00000000
[ 0% Backed Up] b8000060: 00000000 00000000 00000000 00000000
[ 0% Backed Up] b8000070: 0004221b 00000000 00000000 00000000
[ 0% Backed Up] b8000080: 15040000 c1b33505 00000000 00000000
[ 0% Backed Up] b8000090: 003f0004 00000000 00000000 00000000
[ 0% Backed Up] b80000a0: 002aaaaa 00000000 0000ffff 00000000
[ 0% Backed Up] b80000b0: 00000000 00000000 00000000 00000000
[ 0% Backed Up] b80000c0: 00000000 00000000 00000000 00000000
[ 0% Backed Up] b80000d0: 00000000 00000000 00000000 00000000
[ 0% Backed Up] b80000e0: 00000000 00000000 00000000 00000000
[ 0% Backed Up] b80000f0: 00000000 00000000 00000000 00000000

manolo_321 03/06/2007 22:34

Hola, segun he podido ver con el wrt54g , cuando hacemos un "backup" el registro EJTAG_CONTROL es el siguiente:

EJTAG_CONTROL....... : 00000000001001001100000100001000 (0024c108)

Podemos observar los bits que tenemos activos :

bit:3----->DM (modo debug)
bit:8----->¿? (segun MPIS deveria estar a 0)
bit:14---->ProbTrap (vector debug 1=dmseg at 0xFFFF FFFF FF20 0200)
bit:15----->ProbeN (control servicio procesador)
bit:18----->PraCC (acceder al procesador)
bit:21----->Half (estado interno del clock 1=parado)

Con esta configuracion del EJTAG_CONTROL tenemos acceso junto a las rutinas Pracc a la lectura de la flash. Pero cuando queremos grabar la flash, segun las pruebas que he hecho la lectura del EJTAG_CONTROL es la misma:

EJTAG_CONTROL....... : 00000000001001001100000100001000 (0024c108)

Aqui es donde temenos el problema, con esta configuracion vemos como el bit 19 (PRnW) lo tenemos a 0, el cual nos dice que el procesador esta en modo lectura.

manolo_321 04/06/2007 22:22

Hola a todos !!!, he escrito un mail al programador del bus ejtag del proyecto openwince (jtag-0.6), el cual tiene soporte para pracc, pero desafortunadamente no funciona con nuestro ALI, bueno me ha constetado con celeridad aqui pongo lo que me dice:

On Mon, Jun 04, 2007 at 05:17:50PM +0000, wrote:

> ejtag.c(139) No processor access, ctrl=00000000001000001000000100001000

This means the program expects the target CPU to execute in debug mode,
but the target CPU is doing something else (not fetching instructions
through the JTAG cable). There could be many reasons, like a hardware
watchdog timer which needs to be disabled quickly.

> We have this error "ejtag.c(139) No procesor access", We only can read
> flash with software "wrt54gv48" with Pracc routine, we put this new line:

I have no idea how PrAcc flash read can work at all, if the CPU failed
to enter the debug mode.

> Halting Processor ... <Processor did NOT enter Debug Mode!> ... Done

This basically means the same thing as "No processor access".

> You can see ALI M3329 hasn't dma, we need to work with pracc routines, we
> saw in the EJTAG_CONTROL the bit 19 Prnw=0, who put it in write mode ?, we

Prnw=0 is correct (read mode according to the EJTAG spec, 1 is write mode).
One possible reason why reading works but writing doesn't is using wrong
access width (16-bit writes on 8-bit flash or vice versa). For reads, it
is fastest to use 32 bits, but for writes, the width must be correct (in
my patch, you can specify it by adding an offset to the address).

> search about this ALI M3329 but nothing, ,we need some new idea for we can

I'm afraid I can't help much without access to hardware, documentation
_and_ a lot of time to play with it (unfortunately, I'm very busy).
And, I was hoping my changes to openwince-jtag would be merged upstream,
but the project seems to be dead.

Marek

Pues esto lo que me ha contestado, haver si hay alguien que domine el ingles y nos ponemos en contacto haver si nos dan alguna pista para seguir con este proyecto.

zivago40 05/06/2007 08:58

He subido al up5 dos archivos que hablan de los registros de control del ejtag, uno de IDT y otro de procesadores MIPs de 32bits. Se llaman MD00016-2B-4K-SUM-01.17.zip y 79RC32364_MA_38374.zip. Para quien quiera saber lo del estado de los bits esta bien y mientras encontramos otra cosa para entretenerse no es mal. Saludos

jubamo 05/06/2007 10:13

Hola,
Marek propone como causa de que no se pueda escribir en la flash el que deba de ser accedida mediante un ancho de 8 bits, no nos puede ayudar porque no tiene ni tiempo, ni documentación, ni aparatito para jugar con el.

De mis observaciones deduzco que es una cpu con lo que respecta al JTAG muy simple, no tiene IDCODE y si os fijáis solo tiene IMPCODE, CONTROL, ADDRESS y DATA, lo justito para poder hacer algo con el.

En modo debug ya esta cuando arranca con el puente hacia adelante, o sea que no hay que preocuparse por ponerlo en modo debug, el hacer rutina PrAcc distinta no tiene dificultad en el wrt54g.h solo buscar un ensamblador para mips y la colocamos en el sitio adecuado.

El WathDog, no se que decir, pues si la lee sin interrumpirse creo que esta desactivado o ni siquiera tiene.

Así que yo sugiero para los que tienen el deco patas arriba y además conocimientos y equipo de pruebas que verifiquen si hay actividad el la patilla de la flash de WE cuando se le solicita la detección, reset o programación de la memoria, pues en el caso de que esa señal no este activada para escritura entonces el primer problema que hay que solucionar es activar el controlador de la flash para habilitar escrituras.

De la info de zivago40, muy buena, como esa debería de estar para el ali, pero parece que la tienen reservada para uso interno; también Spider-man del foro alemán en contestación a manolo_321 comenta algo del acceso al a flash de 8 bits y el colocar en 0xb8000090 -> 0xf0005 esto en los IDT corresponde a la zona de controles de dispositivo.

Un saludo.

manolo_321 05/06/2007 19:06

Hola a todos !!!!, tengo dos noticias, haber si con la ayuda de Spider y Hairy lo conseguimos, la primera es que "Spider" me ha enviado una modificacion del wrt54g, a qui pongo lo que me envio:

> Hi Spider!! we are working with "wrt54gv48" software, you search in
> http://(No permitidos enlaces) this file "jtag-m3329".
>
I already know :) BUT there are some problems with your changes...
for e.g. the 0xff300000 read issue you fixed is just because the
switches are used the wrong way, there is no bug. and the PrAcc segfault
is also only because of this miss use.

I have changed the tool a little bit more to make it working. BUT don't
use IMPCODE for detection!!this is just bad practice...

detect, reading and (probably) erasing is working, but writing needs
some feet back. So if you like, try it.

La segunda es de Hairy:

You may already have known this - but the debrick utility *should* be able to work on most all MIPS based processor. Some MIPS processors, of course, do not support DMA mode - but they all support PrAcc mode. The problem is the PrAcc mode is very slow by nature because it has to "feed" MIPS instructions to the processor that contain meaningful instrucions that get executed by the host (on the host). That complicates things over DMA mode where you can do things much easier...

I know that someone has already done a bit of poking around on the ALI M3329 chip with respect to the JTAG debrick utility. I have attached that for you to try. I am not sure about why they made any changes (short of the Chip ID) - but all I can guess is that they were trying to avoid allowing instructions beyond a range... as the line they added was in the ExecuteDebugModule routine and it reads:

if (offset > 0x3fff) offset = 0;

Anyhow - I'm short on time tonight - so I'll just email this over in hopes this helps...

Let me know if you get anywhere using this version or not and if you are still having trouble tomorrow I might be able to dig into things to try and help...

Cheers,
-hairydairymaid

P.D voy a probar y os cuento.

jubamo 06/06/2007 08:01

Buenas noticias,

Nuestro amigo Spider-Man (del foro aleman) ha modificado el wrt54g con la parte de PrAcc del openwince-jtag brecis y añadido lo del 0xb8000090 0xf0005" y yo como la flash de mi deco es una Mx le he añadido su definición y sorpresa!! detecta la flash y la lee con esta llamada ./wrt54g -backup:wholeflash /instrlen:5 /skipdetect /alienable.

La detecta pues después de la detección he puesto para que me escriba en pantalla en código leído y es el de la flash, cosa que antes era la primera dirección de la memoria y como que para poder leer el código hay que escribir el ella pues creo que debe de funcionar en todos los modos y si no solo será cuestión de unos pequeños ajustes.

En el up 5 lo dejo con las modificaciones de la flash MX. "wrt-ali.zip"
Así que a probar los que lo tengan muerto, pues el mio vive y no arriesgo a borrar nada.

Saludos.

jubamo 06/06/2007 09:17

No he podido aguantarme y he borrado el ultimo sector -erase:nvram al leerlo antes de borrar salen datos, después ffffffffffffffffffffffff cuando lo arranco borrado me sale lo de PAgE en el display y si lo leo después ya tiene datos, ahora la estoy grabando el nvram que según esta configurado es el ultimo sector de la flash voy por el 26% va muy lento.

Edito para seguir la prueba,
No graba bien, Graba esto:
Erasing block: 35 (addr = 1fdf0000)...Done

Loading NVRAM.BIN to Flash Memory...
[ 0% Flashed] 1fdf0000: 12345678 00000000 03060164 03030303

y lee despues:
Saving NVRAM.BIN.SAVED_20070606_093249 to Disk...
[ 0% Backed Up] 1fdf0000: ff34ff78 ff00ff00 ff06ff64 ff03ff03

Edito por haber hecho mas pruebas,
Me modificado la función para grabar la flash "void sflash_write_word" en modo byte
y este es el resultado:

./wrt54g -flash:nvram /instrlen:5 /skipdetect /alienable
Total Blocks to Erase: 1
Erasing block: 35 (addr = 1fdf0000)...Done

Loading NVRAM.BIN to Flash Memory...
[ 0% Flashed] 1fdf0000: 12345678 00000000 03060164 03030303
[ 0% Flashed] 1fdf0010: 00000000 00000300 00000000 03010000
[ 0% Flashed] 1fdf0020: 01002601 00000003 00000000 00000000

Y leo:
./wrt54g -backup:nvram /instrlen:5 /skipdetect /alienable
=========================
Backup Routine Started
=========================

Saving NVRAM.BIN.SAVED_20070606_100847 to Disk...
[ 0% Backed Up] 1fdf0000: 12345678 00000000 03060164 03030303
[ 0% Backed Up] 1fdf0010: 00000000 00000300 00000000 03010000
[ 0% Backed Up] 1fdf0020: 01002601 00000003 00000000 00000000

O sea que graba correctamente, pero como lo hace en modo byte va más lento.
Ahora ya sabemos que funciona el Jtag para el ali y también como lo hace, a ver si alguién se anima
y mejora la rutina pracc para hacerla más rápida.

Lo empaqueto y lo dejo en el 5 con nombre wrt-ali-graba.zip.

Saludos.

zivago40 06/06/2007 11:01

Cita:

Iniciado por jubamo (Mensaje 2910333)

O sea que graba correctamente, pero como lo hace en modo byte va más lento.
Ahora ya sabemos que funciona el Jtag para el ali y también como lo hace, a ver si alguién se anima
y mejora la rutina pracc para hacerla más rápida.

Lo empaqueto y lo dejo en el 5 con nombre wrt-ali-graba.zip.

Saludos.

Enhorabuena !!!!

Ya que esta, sabeis si puede influir el que le haya cambiado la memoria MX por la AMD y no la reconozca al encender y no pueda hacer nada con ella???

omnitron 06/06/2007 11:30

Y a mi que no me funciona el JTAG y con el deco muerto..... :(

Esta tarde voy a pedir un pc viejo le meto Ubuntu y a ver si me reconoce el JTAG, con un liveCD se puede hacer? es que tengo un Pc viejo pero sin HDD

A ver si para mañana tengo un deco resucictado :D

Cuando dices que tarda mucho, a cuanto te refiers más o menos?

Que buen curro jubamo!!!!!!


La franja horaria es GMT +2. Ahora son las 09:08.

Powered por vBulletin™ Version 3.8.10
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.
Traducido por vBsoporte - vBulletin en español
ZackYFileS - Foros de Debate