Programación de PSoC con kitprog + OpenOCD

Teniendo la versión más reciente de OpenOCD (más un parche con el que da soporte inicial a kitprog, ver aqui para los pasos de instalación) es posible grabar el PSoC4 de la tarjeta 049-42xx con un kitprog (el presente en el kit 059 por ejemplo) y por supuesto también se pueden grabar PSoC5LP !!!.

Para grabar el PSoC4 del kit 049-42xx hacemos las siguientes conexiones:

KITPROG               PSoC4
  VTARG       <----->    VDD
    GND        <----->    GND
  SWDIO      <----->   SWDIO
  SWDCLK   <----->   SWDCLK
RST             <----->     RESET

Todo esto lo estoy haciendo en Ubuntu 16.04, debe ser parecido en otras distribuciones.

Nos vamos al directorio donde tenemos el .elf que queremos grabar en el PSoC4.
Abrimos una consola de comandos y tecleamos lo siguiente:

$ sudo openocd -c "interface kitprog; kitprog_acquire_target" -f target/psoc4.cfg

Tecleamos Enter y nos aparecerá el siguiente mensaje:

Open On-Chip Debugger 0.10.0-dev-00387-g3fa7ef2 (2016-10-15-01:48)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'swd'
adapter speed: 1500 kHz
cortex_m reset_config sysresetreq
ocd_process_reset_inner
Info : KitProg v2.17
Info : Hardware version: 17
Info : VTARG = 4.789 V
Info : This adapter doesn't support configurable speed
Error: Sequence 1 not supported.
Info : SWD DPIDR 0x0bb11477
Info : psoc4.cpu: hardware has 4 breakpoints, 2 watchpoints

Abrimos otra consola de comandos, nos vamos al directorio donde tenemos el .elf que vamos a grabar y escribimos lo siguiente:

$ telnet localhost 4444

Tecleamos Enter y nos aparecerá el siguiente mensaje:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
>

escribimos halt y hacemos enter, aparecerá lo siguiente:

psoc4.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0xa1000000 pc: 0x10000046 msp: 0x20000fe8
>
 
escribimos psoc4 mass_erase 0 y hacemos enter, aparecerá lo siguiente:

SPCIF geometry: 32 kb flash, row 128 bytes.
CY8C4245AXI-483 device detected.
flash size = 32 kbytes
flash bank set 256 rows
psoc mass erase complete
>

escribimos flash write_image Blinky.elf  (el elf que queria grabar se llama Blinky xD )y hacemos enter, aparecerá lo siguiente:

wrote 1816 bytes from file Blinky.elf in 4.805101s (0.369 KiB/s)
>

escribimos kitprog reset_target y todo listo, se debe estar ejecutando el elf que grabamos en el PSoC4.

En total la segunda consola tiene lo siguiente:

$ telnet localhost 4444
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> halt
psoc4.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0xa1000000 pc: 0x10000046 msp: 0x20000fe8
> psoc4 mass_erase 0
SPCIF geometry: 32 kb flash, row 128 bytes.
CY8C4245AXI-483 device detected.
flash size = 32 kbytes
flash bank set 256 rows
psoc mass erase complete
> flash write_image Blinky.elf
wrote 1816 bytes from file Blinky.elf in 4.805101s (0.369 KiB/s)
> kitprog reset_target

Ahora podemos cerrar OpenOCD en ambas consolas/terminales.

Saludos

Comentarios

Entradas más populares de este blog

PSoC Creator Tools

PSoC5LP Usando el SAR ADC y la señal EoS para manejar una LUT

PSoC 4M DMA Periferico a Periferico Ej. 1