¿Puedo programar todo tipo de chips programables por SWD (ARM-MCU) con ST-Link?
¿Puedo programar todo tipo de chips programables por SWD (ARM-MCU) con ST-Link?
Respuestas:
También puede actualizar el enlace st y convertirlo en una sonda de magia negra . La misma imagen también convertirá una píldora azul en una BMP.
He hecho las dos cosas. La píldora azul tiene la ventaja de que el puente usb-rs232 que exporta BMP está fácilmente disponible.
El BMP admite una gama de chips para incluir, entre otros:
ST Microelectronics STM32F0, STM32F1, STM32F3, STM32F2, STM32F4, STM32F7, STM32L0, STM32L1, STM32L4
Atmel SAM3N, SAM3X, SAM3S, SAM3U, SAM4S, SAM4S, D4, SAM4S, SAM4S
Nordic nRF51, nRF52 (Es por eso que uso el BMP)
El BMP es de código abierto, se puede usar para programación comercial y el hardware puede ser barato (el BMP "real" cuesta alrededor de $ 60, un paquete azul de 5 píldoras de Amazon se envió por menos de $ 20).
Para agregar a la respuesta existente; Se sabe que algunos chips no funcionan correctamente con ST-LINK y OpenOCD.
En particular, si su objetivo es de la familia de MCU Atmel SAMD21, es probable que encuentre problemas extraños, donde se detecta el procesador, pero cualquier intento de borrar sectores flash falla con un error.
La razón es bastante complicada , por citar:
AFAIK el problema está en la escritura de media palabra (16 bits) en el registro NVMCTRL-> CTRLA. STLink no implementa el acceso de memoria de media palabra y OpenOCD emula es como operaciones de dos bytes. Lamentablemente, el registro CTRLA se compone de una clave y un comando que deben escribirse atómicamente. Si STLink escribe dos bytes, el controlador NVM establece el bit PROGE en ESTADO: "Se escribió / se escribió un comando inválido y / o una palabra clave incorrecta en el registro de comandos NVM"
La solución consiste en recompilar OpenOCD con parches de código. No es divertido.
Sin embargo, si no le importa actualizar su ST-Link (a través de otro ST-Link), puede convertirlo en un adaptador CMSIS-DAP , que funciona bien con el SAMD y también debería funcionar con STM32 y otros Cortex-M papas fritas.
Sí, creo que esto es posible, aunque no lo he probado. Probablemente violaría el acuerdo de licencia de ST si intentara programar dispositivos distintos de los de ST
Como ejemplo, Segger (uno de los líderes del mercado en depuradores y programadores) admite la conversión de su ST-Link a J-link (esencialmente sobrescribiendo el chip ST-Link con el código Segger). Esto también es reversible, por lo que si desea restaurar su dispositivo ST-link a su forma original, puede hacerlo.
Sin embargo, hay varias versiones de ST-Link. Eche un vistazo a los siguientes enlaces que proporcionan más información y una guía sobre cómo hacerlo.
https://www.segger.com/jlink-st-link.html
https://www.segger.com/jlink-ob.html
Si es posible. Estoy usando stlink v2 (original, así como clones de tipo de memoria USB) con Coocox IDE. Coocox también tiene una aplicación de programador independiente: CoFlash , que podría usarse para programar una gran cantidad de chips. Tengo experiencia con solo dos series: LPC176x y LPC175x, a través de la interfaz SWD. Y no tengo ningún problema con esas fichas. Tampoco he realizado cambios o actualizaciones específicas para los programadores (excepto que el enlace st original requería el nivel de alto voltaje en TVCC (PIN1), de lo contrario, no permitía programar el chip, así que conecté directamente el pin 19 (3.3vcc) al pin 1 en stlink v2).
También se puede utilizar un STLink V2 / V2.1 o V3 con firmware reciente con la plataforma PC-stlinkv2 de Blackmagic alojada en PC. Compile con "make PROBE_HOST = pc-stlinkv2", inicie el servidor de depuración con "blackmagic_stlinkv2" y conéctese a: 2000 en gdb o cargue directamente los archivos binarios con "blackmagic_stlinkv2". Esto funciona con todos los objetivos que BMP conoce. Sin embargo, V3 niega activamente trabajar en objetivos que no sean ST, mientras que a V2 no le importa.