Uso básico del JTAG con insigth

Tabla de Contenidos

Uso básico del JTAG con insigth

Introducción

Servidor del JTAG

Debugging sobre RAM

Debugging sobre FLASH

Introducción

La programación del micro ARM se la puede hacer sobre la RAM o la FLASH. Si se decide programar sobre la RAM no se presentan mayores inconvenientes a la hora del debugging con el Jtag. No obstante para la programación sobre la FLASH se deben tener en cuenta ciertos puntos.

Servidor del JTAG

El Open On-Chip Debugger (OpenOCD) permite la interacción con el usuario a travéz de una interface telnet (por defecto: port 4444) y con un GDB server (por defecto: port 3333).

Previamente lo instalamos desde un terminal:

aptitude install openocd

"""IMPORTANTE""" Tener en cuenta: Antes de ejecutar el OpenOcd, el cable del JTAG debe estar conectado a la placa (controlar el sentido del mismo para evitar que se inviertan los pines). El led de la placa debe brillar con un color verde intenso, en caso de estar en rojo tenue, algo esta mal, posiblemente sea el cable USB o el JTAG mal conectado.

Para correrlo se lo hace desde un terminal como superusuario y con el archivo de configuración correspondiente:

openocd -f interface/arm-usb-ocd.cfg -f target/lpc2114.cfg

Verificar el orden de los comandos, la interface (placa olimex) va siempre primero, y luego el target (nuestra placa)

En esta instancia aparecerá, en el terminal, algo como sigue:

Open On-Chip Debugger 0.4.0 (2010-02-23-17:04)Licensed under GNU GPL v2For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.htmltrst_and_srst srst_pulls_trst srst_gates_jtag trst_push_pull srst_open_drainjtag_nsrst_delay: 100jtag_ntrst_delay: 1001000 kHzInfo : clock speed 1000 kHzInfo : JTAG tap: lpc2114.cpu tap/device found: 0x4f1f0f0f (mfg: 0x787, part: 0xf1f0, ver: 0x4)Info : Embedded ICE version 4Info : lpc2114.cpu: hardware has 2 breakpoint/watchpoint units

Una vez conectado con el servidor se puede usar, el JTAG, como conversor USB/RS232 y grabar el micro con el cable serial.

Puede descargar de el archivo de configuración lpc2114.cfg aquí ya que no viene con la instalación del openocd y guardarlo en la carpeta "/usr/share/openocd/scripts/target/".

Debugging sobre RAM

Para el debugging sobre la RAM se debe correr el servidor explicado en el punto anterior y luego correr el insight de la siguiente manera:

arm-elf-insight NAME.elf

Donde NAME es el nombre del archivo correspondiente.

Se enumeran los pasos que se deben realizar sobre la consola gdb del insight, pudiendo hacerse algunos desde los menús del insight:

target remote localhost:3333 ===> Conecta con el gdb a través del puerto 3333.

monitor soft_reset_halt ===> Detiene la placa del ARM y genera un reset por soft.

load ===> Carga el programa desde el insight al micro a través del Jtag.

A continuación se puede continuar el debugging de manera gráfica colocando todos los breakpoint necesarios sin mayores inconvenientes.

Debugging sobre FLASH

Se aclara que el insight tiene la problemática de no poder grabar la flash desde su entorno, por lo que se debe utilizar un cable serial para tal fin, pudiendo usar el puerto RS232 disponible del Jtag.

Otra cuestión poco estudiada es que tampoco se puede colocar breakpoints por software, pero se hace uso de los dos breakpoints por hardware que dispone el micro mediante dos script.

Se enumeran los pasos que se deben realizar sobre la consola gdb del insight, pudiendo hacerse algunos desde los menús del insight:

target remote localhost:3333 ===> Conecta con el gdb a través del puerto 3333.

monitor soft_reset_halt ===> Detiene la placa del ARM y genera un reset por soft.

step ===> Se realiza un paso de debugging.

source bpoint ===> Script que crea dos comandos para los breakpoint, bp1 y bp2.

bp1 0x80FD ===> Breakpoint 1 en la dirección 0x80FD.

bp2 0x70FD ===> Breakpoint 2 en la dirección 0x70FD.

A continuación se puede continuar el debugging de manera gráfica.

Nota: Ante los malos funcionamientos del debugger en determinadas circunstancias, se encontró como solución reiniciar el servidor y el insigth.

Puede descargar de aquí el script bpoint utilizado en la consola del gdb.

Puede descargar de aquí un script inicio que realiza hasta el punto cuatro de la explicación anterior.

Puede descargar de aquí un script inicio_bp_gui que permite los breakpoints por hardware en el entorno gráfico sin necesidad de realizar los pasos anteriores.