Autor Tema: GDB + openocd (en eclipse)... no me conecta...  (Leído 4955 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
GDB + openocd (en eclipse)... no me conecta...
« en: 26 de Enero de 2009, 11:43:42 »
Hola,

a ver si me podeis echar una mano.
Tengo instalado Eclipse, compilador, y openOCD. Compila bien. Puedo cargarlo con el boot que lleva el micro por el puerto serie. Pero ahora quiero depurar. Tengo el JTAG de olimex. He seguido los pasos que recomiendan en la web donde compre la placa y resulta que no me funciona.

He adjuntado los script tanto del gdb, como del openocd.

El texto que me aparece de error es el siguiente:
"Open On-Chip Debugger (2008-06-19 19:00) svn: 717
URL: http://svn.berlios.de/svnroot/repos/openocd/trunk
Info:    options.c:50 configuration_output_handler(): jtag_speed: 8, 8
Info:    options.c:50 configuration_output_handler(): Open On-Chip Debugger (2008-06-19 19:00) svn: 717
Info:    jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x0792611f (Manufacturer: 0x08f, Part: 0x7926, Version: 0x0)
Info:    server.c:78 add_connection(): accepting 'telnet' connection from 0
Error:   telnet_server.c:237 telnet_input(): error during read: No error
Info:    server.c:395 server_loop(): dropped 'telnet' connection
Info:    server.c:78 add_connection(): accepting 'gdb' connection from 0
Error:   arm7_9_common.c:2546 handle_arm7_9_sw_bkpts_command(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
User:    gdb_server.c:574 gdb_output(): target must be stopped for "cp15" command
User:    gdb_server.c:574 gdb_output(): target must be stopped for "cp15" command
User:    gdb_server.c:574 gdb_output(): fast memory access is enabled"

He probado a cambiar la velocidad, pero nada. En otros intentos el texto de salida del OpenOCD es menor (no parece depender de la velocidad usada":

"Open On-Chip Debugger (2008-06-19 19:00) svn: 717
URL: http://svn.berlios.de/svnroot/repos/openocd/trunk
Info:    options.c:50 configuration_output_handler(): jtag_khz: 100, 100
Info:    options.c:50 configuration_output_handler(): Open On-Chip Debugger (2008-06-19 19:00) svn: 717
Info:    jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x0792611f (Manufacturer: 0x08f, Part: 0x7926, Version: 0x0)
Info:    server.c:78 add_connection(): accepting 'telnet' connection from 0
Error:   telnet_server.c:237 telnet_input(): error during read: No error
Info:    server.c:395 server_loop(): dropped 'telnet' connection
Info:    server.c:78 add_connection(): accepting 'gdb' connection from 0
Error:   arm7_9_common.c:2546 handle_arm7_9_sw_bkpts_command(): target not halted
Warning: arm7_9_common.c:1980 arm7_9_write_memory(): target not halted
Warning: jtag.c:1211 jtag_check_value(): value captured during scan didn't pass the requested check: captured: 0x00 check_value: 0x01 check_mask: 0x0f
Warning: jtag.c:1171 jtag_read_buffer(): in_handler reported a failed check
User:    gdb_server.c:574 gdb_output(): 0 0 1 0: 00051078
User:    gdb_server.c:574 gdb_output(): 0 0 7 5: 00000000
User:    gdb_server.c:574 gdb_output(): fast memory access is enabled"

Ademas tb copio el texto de salida que da el GDB:
"source /cygdrive/D/ARM9/LEDblink/LEDblink/.gdbinit
/cygdrive/D/ARM9/LEDblink/LEDblink/.gdbinit:48: Error in sourced command file:
No executable file specified.
Use the "file" or "exec-file" command."

Usar GDB es nuevo para mi, y no doy con la tela. Conectar parece que conecta, y luego da un error de lectura.
Primero ejecuto openocd y se abre OK. Detecta el JTAG y se queda a la espera. Despues le doy a depurar, y empieza a ejecutar el script del gdb pero enseguida lanza ese error.

un saludo. Dani

Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: GDB + openocd (en eclipse)... no me conecta...
« Respuesta #1 en: 28 de Enero de 2009, 09:42:22 »
Hola ARMeros,

sigo sin que funcione eclipse+gdb+openocd, pero he avanzado  en algunas pruebas. Os cuento, ya sin textos de errores, a ver si me podeis echar una mano:

Como dije, el OpenOCD conecta bien y se queda a la espera del GDB.
He probado a conectarme desde simbolo de sistema, mediante telnet con el comando (telnet localhost 4444, sin usar GDB). Y conecta con el OpenOCD correctamente. Me he descargado de la web los comandos disponibles de OpenOCD y he probado cosillas, y he podido inicializar la SDRAM, etc... (ose la misma inicializacion que hace el GDB, pero hecha a mano por mi por telnet con comandos que entiende OpenOCD).

Posteriomente con 'load_image' he cargado mi programita en ram, y con 'reg pc 0xc0200000' he preparado el PC a esa direccion para que ejecute mi programa. Hasta ahi todo bien.
Si ejecuto paso a paso con el comando 'step' (todo linea de comandos, nada grafico), va bien. Si pongo un breakpoint (con 'bp direccion'), y le doy a 'resume' (osea RUN) ejecuta y se para en ese punto. Todo esto OK.

Donde esta el problema? cuando llego a la zona del programa donde se inicializa el PLL (en este micro se llama MPLL) deja de funcionar. Supongo que al no arrancar el PLL,  deja de funcionar todo. El PLL este funciona de la siguiente manera. Primero debes pararlo, despues modificar el registro que indica la velocidad de salida que quieres, y despues volver a  ponerlo en marcha. Pues es justamente en la instruccion donde se reactiva de nuevo el MPLL donde todo hace CRASH.

El programa esta bien, ya que si lo cargo en RAM mediante el boot del micro, ejecuta perfectamente, y el PLL funciona OK.
He probado a cambiar ese registro del PLL donde se activa de nuevo el PLL, mediante un comando OpenOCD (mww direccion valor), en lugar desde mi programa, y ocurre exactamente los mismo. Dice que no lo puede modificar, y catapum...

En concreto dice:
"value captured during scan didn't pass the requested check: captured: 0x00 check_value:0x01 check_mask:0x0f
in_handler reported a failed check"

y obviamente esa escritura en ese registro no ha tenido efecto, luego el PLL no se activa, y no va el programa.

Igual esto es algo comun en la depuracion de los ARM, y ya os suena a alguno este problema.

Un saludo. Dani.

Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: GDB + openocd (en eclipse)... no me conecta...
« Respuesta #2 en: 28 de Enero de 2009, 15:41:48 »
Una pista mas...

primero: no es del todo cierto lo que he comentado antes del PLL. No se deshabilita en ningun momento. Se cambia la velocidad de salida en un registro, y se modifica el bit de otro registro para hacer efectivos los cambios (ese bit se llama reestablecer PLL). Es esa accion la que da error (modificar ese bit). Pero el PLL siempre esta activo, y el reloj que se usa para el JTAG por lo tanto tb, Otra cosa es que se haga un lio en el momento de cambio de velocidad....podria ser?.

segundo: he conseguido una chapucilla. He cargado el programa en ram con el internal boot, y posteriormente (mientras se ejecuta el codigo) he conectado por telnet y he enviado un comando 'halt' para detener el flujo de programa. Ha funcionado. Todo desde linea de comandos. Pero claro no veo el codigo fuente ni nada.  No es un depurador con IDE esto que he probado.

Mis conclusiones preliminares son que no es compatible cambiar la velocidad del PLL mientras estas depurando con el JTAG.  Pero claro, si arranco con el JTAG y cargo la imagen en RAM, el truco debe estar en deshabilitar el JTAG durante Xms, que sera el tiempo en el cual el programa modifica la velocidad del PLL. Si, me parece una chapuza, pero lo probare. Tiene que poder solucionarse de alguna manera mejor.

Alguna idea? no habeis tenido ningun problema al depurar un ARM con PLL??

Un saludo. Dani.

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: GDB + openocd (en eclipse)... no me conecta...
« Respuesta #3 en: 05 de Febrero de 2009, 22:32:25 »
Yo tenia un problema con la placa h-jtag no me reconocia el micro cortex m3, pero comprobe en otra cpu si funciono era que mi puerto paralelo estaba con fallas, ahora funciona normal mi circuito ise un arreglo a mi puerto paralelo.
Tenia una duda con las conexiones basicas del arm cortex lei el pdf bien me faltaba tambien conectar un condensador en unos de los pines a tierra para que funcione, el reset es opcional para mi micro.
Hay modelos de arm que nesecita abilitar el jtag tiene unos pines especiales.

Desconectado Ado2078

  • PIC10
  • *
  • Mensajes: 1
Re: GDB + openocd (en eclipse)... no me conecta...
« Respuesta #4 en: 25 de Abril de 2011, 04:00:16 »
Hola, yo soy nuevo en esto de los cortex M3 y estoy buscando un IDE y un programador, encontre el wiggler y lo arme, al igual que ustedes uso el HJTAG por puerto paralelo y hasta ahorita si pude leer un m3 de TI el LM3s811, pero no se como utilizar el HJTAG, he visto que usan el hj tag server junto con el keil pero me queda la pregunta sobre si es el hjtag server o el hjtag flsher el que debo de usar para programar el cortex m3. Espero que alguien me pueda decir por favor.

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: GDB + openocd (en eclipse)... no me conecta...
« Respuesta #5 en: 25 de Abril de 2011, 11:49:53 »
Los dos funciona juntos el H-jtag y el h-flasher.
El h-flasher nececita del h-jatg para que funcione.
El h-jtag se configura el hardware y identifica los parametros del micro el otro graba la flash.
Hay trae un pdf como configurarlo tal como viene no nececita configurar el h-jtag solo el h-flasher se configura se busca el modelo de micro en "flash selection" en configuracion se pone la velocidad del cristal lo demas por defecto.
init scripts no se pone nada, en programcion se chequea si corresponde y hay tiene para grabar lod demas el chip entero y flash addres se preciona el chip chiquito par que salga flash base si que no lo tiene.