Programar CY8CKIT049-42xx con OpenOCD y STLink-v2

En sus versiones mas recientes OpenOCD tiene soporte para los microcontroladores PSoC4, usando el STLink-v2 que viene con la tarjeta STM32F4Discovery y conexiones SWD se puede programar la tarjeta CY8CKIT049-42xx. Una vez separado el "programador" que trae la tarjeta de PSoC4, las conexiones son las siguientes:

Conexiones SWD entre la STLink-v2 y la CY8CKIT049-42xx
Creamos nuestro programa en PSoC Creator, esta vez sin el componente Bootloader, el procedimiento es como si hicieramos un proyecto para la Pioneer Board de PSoC4. En mi caso el proyecto se llama LED, una vez compilado de manera exitosa nos situamos en el directorio de nuestro projecto, ingresamos en la carpeta con extensión .cydsn -> CortexM0 -> ARM_GCC_4xx -> Debug (o Release, dependiendo de como esta configurado el build process), dentro de esta carpeta esta el .hex generado despues de la compilación exitosa, (nombre_del_proyecto).hex, abrimos una ventana de comandos en esa carpeta, conectamos nuestro STLink-v2 a la PC y tecleamos en la terminal:
> openocd -f interface/stlink-v2.cfg -f target/psoc4.cfg
Obtendremos lo siguiente:
GNU ARM Eclipse 64-bits Open On-Chip Debugger 0.9.0-00073-gdd34716-dirty (2015-05-19-09:55)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select '.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 1500 kHz
ocd_process_reset_inner
Info : Unable to match requested speed 1500 kHz, using 1200 kHz
Info : Unable to match requested speed 1500 kHz, using 1200 kHz
Info : clock speed 1200 kHz
Info : STLINK v2 JTAG v23 API v2 SWIM v0 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 2.908703
Info : psoc4.cpu: hardware has 4 breakpoints, 2 watchpoints
En otra terminal establecemos conexión con un cliente Telnet en el puerto 4444:
> telnet localhost 4444
Y nos abrira el "puente":
Open On-Chip Debugger
> reset init
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0xa1000000 pc: 0x10000046 msp: 0x20000fe8
pc (/32): 0x10000046
pc (/32): 0x00000010
msp (/32): 0x20001000
> psoc4 mass_erase 0
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0xa1000000 pc: 0x20000000 msp: 0x200000c8
psoc mass erase complete
> flash write_image erase LED.hex 0
auto erase enabled
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0xa1000000 pc: 0x20000000 msp: 0x200000c8
no flash bank found for address 90300000
no flash bank found for address 90400000
no flash bank found for address 90500000
no flash bank found for address 90600000
wrote 32768 bytes from file LED.hex in 19.430176s (1.647 KiB/s)
> reset
TODO: La escritura tarda 19 segundos, no tengo respuesta para esto, pero como no estoy programando miles de microcontroladores no tengo mas que esperar.

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