Estoy tratando de hacer que mi chip Atmel at91sam3u cortex-m3 haga que el LED parpadee. Tengo un programador jtag Olimex ARM-USB-OCD-H y estoy usando Open OCD en OS X para programar mi chip. Estoy usando los scripts de inicio de Open OCD proporcionados para el programador jtag y mi chip. No tengo problemas para compilar y vincular el programa, y parece que puedo cargar el programa correctamente en el chip. Sin embargo, el LED solo parpadea cuando ejecuto el programa a través de gdb. Funciona tanto si paso a través de él como si lo ejecuto continuamente.
Para hacer que funcione en gdb, primero ejecuto 'openocd' y luego en otra terminal (se omite la retroalimentación de gdb):
$ arm-none-eabi-gdb blinky/blinky.elf
(gdb) target remote :3333
(gdb) load
(gdb) cont
Esto funciona sin problemas y el LED parpadea. Por supuesto, cuando salgo de gdb, el programa se detiene y el LED se queda en el estado en que se encontraba en ese momento. Si hago clic en el botón de reinicio del chip, el LED pasa a un estado neutral (ligeramente encendido).
Para intentar simplemente programar el chip, ejecuto 'openocd' y luego en otra terminal:
$ telnet localhost 4444
> halt
target state: halted
target halted due to debug-request, current mod
xPSR: 0x81000000 pc: 0x00080107 msp: 0x20000598
> flash write_image blinky/blinky.elf
wrote 3044 bytes from file blinky/blinky.elf in 0.314594s (9.449 KiB/s)
> reset run
TAG tap: sam3.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
No hay errores, pero el LED no parpadea, permanece en un estado neutral.
La secuencia de comandos del vinculador establece el programa (.text) para que se ponga en la memoria flash0. Por lo tanto, he intentado configurar gpnvm bit 1 ya que es el bit de selección de arranque sram vs flash de acuerdo con la hoja de datos at91sam3. Esto no ayudó, y parecía haber evitado que gdb se ejecutara correctamente.
¿Es posible que deba actualizar la placa con algún tipo de cargador de arranque que pueda cargar programas desde el banco flash0? Asumí que el chip vino con esto.
Todavía no he podido cargar el .text en sram en lugar de flash0, ya que tuve problemas para cambiar el script del vinculador. Tengo que hacer esto.
Nota: El chip at91sam3u está en un pcb personalizado diseñado como parte de un proyecto de diseño de un estudiante. Por lo tanto, es posible que se haya cometido un error durante el diseño de pcb ... sin embargo, creo que en ese caso tampoco se ejecutaría correctamente en gdb.
Gracias.