Ver Mensaje Individual
Antiguo 10/05/2007, 11:33   #208
jubamo 
Usuario PREMIUM+
 
Avatar de jubamo
 
Fecha de ingreso: 15/ago/2006
Mensajes: 420
jubamo es como un diamante en brutojubamo es como un diamante en brutojubamo es como un diamante en brutojubamo es como un diamante en bruto
Bien, como encuentro interesante, por su facilidad de adaptación el
ejtag_p.cpp, , vamos a ir sacando detalles del mismo:

De la linea 28 a la 32 obtengo:
Señal -> nº de pin Db25; TMS-2,TCK-3,TDI-4,TRST-5,TDO-13,
De 35 a 39:
Podemos invertir, compilandolo posteriormente la polaridad de las señales.
De 46 a 49:
Algunas instrucciones del TAP, en este caso del STi5510.
En la 293 "EnterIRInst(5, 0xA);" utiliza intrucciones de 5 bits y pone 0xA, numérico
cuando ya lo había definido en la linea 48
En la 826 "EnterIRInst(5, 0x1)" es donde le mete la instrucción 0x1=IDCODE y en la siguiente linea lee el codigo del chip.
En la 847 "EnterIRInst(5, 0x3)"instrucción 0x3=IMPCODE y luego lee los 32 bits de implementación del chip.
En la 441 función para leer 16 bits de dirección adr, 450 selecionamos dirección (ADD_IR), 451 la colocamos, 454 - 455coloca en el CTRL_IR la palabra para lectura del DMA con lo que comienza la lectura de la posición de memoria seleccionada y si no ha habido error lo devuelve en la variale data.

Hay que tener claro que lo dicho anteriormente funciona con el STI5510.


Esto del ejtag_p.cpp para el STI5510
/* DMA State Machine Definitions */
#define ADDR_IR 0x8
#define DATA_IR 0x9
#define CTRL_IR 0xA
#define ALL_IR 0xB

/* DMA Control Reg Definintions */
#define DINC 1<<4
#define DLOCK 1<<5
#define DSZ0 1<<7
#define DSZ1 1<<8
#define DRWN 1<<9
#define DERR 1<<10
#define DSTRT 1<<11
#define EJTAGBRK 1<<12
#define DABORT 1<<13
#define SETDEV 1<<14
#define PROBEN 1<<15
#define PRRST 1<<16
#define DMAACC 1<<17
#define PERRST 1<<20
#define DNM 1<<28


Esto es de un Broadcom BCM4702
// --- 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

// --- 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)


Esto es de un atheros ar2312
instruction length 5

instruction BYPASS 11111 BR
instruction SAMPLE/PRELOAD 00010 BSR
instruction IDCODE 00001 DIR
instruction EJTAG_IMPCODE 00011 EJIMPCODE
instruction EJTAG_ADDRESS 01000 EJADDRESS
instruction EJTAG_DATA 01001 EJDATA
instruction EJTAG_CONTROL 01010 EJCONTROL
instruction EJTAG_ALL 01011 EJALL
instruction EJTAGBOOT 01100 BR
instruction NORMALBOOT 01101 BR
instruction EJTAG_FASTDATA 01110 EJFASTDATA

Esto es de un dec sa1100

instruction length 5

# mandatory instructions
instruction EXTEST 00000 BSR
instruction SAMPLE/PRELOAD 00001 BSR
instruction BYPASS 11111 BR

# optional instructions
instruction CLAMP 00100 BR
instruction HIGHZ 00101 BR
instruction IDCODE 00110 DIR

Vemos que son bastante similares.

Respecto de la busqueda del IDCODE por parte de manolo_321 puede que tenga otro codigo o no lo tenga.


Mala noticia:
De http://www.linux-mips.org/wiki/JTAG

Decode IMPCODE

31:29 EJTAGver 010 Version 2.6
28 R4k/R3k 0 R4k
24 DINTsup 1 supported
22:21 ASIDsize 10 8-bit ASID
16 MIPS16e 0 not supported
14 NoDMA 1 No EJTAG DMA support
0 MIPS32/64 0 MIPS32

Que seria la explicación de los bits de implemetation y según manolo_321 es: Implentation=00C05288
los bits 15 - 12 valen 5 hex = 0101 bin de donde el bit 14 vale 1 (NoDMA 1 No EJTAG DMA support)

lo que lleva a la conclusión de que el ejtag_p.cpp no nos sirve, pues utiliza DMA.
Suponiendo que sea igual al del ADM5120 que es al que se refiere en esta página.

Aunque he probado a leer con el ejtag_p en un deco con el STI5518 y en implementation me da DB6C36DB
los bits 15 - 12 valen 3 hex = 0011 bin de donde el bit 14 vale 0 (NoDMA 1 No EJTAG DMA support)
con lo cual este si lo soporta.

Saludos.

Última edición por jubamo; 10/05/2007 a las 12:27. Razón: añadir detalles
jubamo está desconectado
Respuesta rápida a este mensaje
Subir