Posso programmare tutti i tipi di chip programmabili SWD (ARM-MCU) con ST-Link?
Posso programmare tutti i tipi di chip programmabili SWD (ARM-MCU) con ST-Link?
Risposte:
È inoltre possibile eseguire il flashing dello st-link e convertirlo in una sonda di magia nera . La stessa immagine convertirà anche una pillola blu in un BMP.
Ho fatto entrambe le cose. La pillola blu ha il vantaggio che il bridge usb-rs232 esportato da BMP è facilmente disponibile.
Il BMP supporta una gamma di chip da includere ma non limitato a:
ST Microelectronics STM32F0, STM32F1, STM32F3, STM32F2, STM32F4, STM32F7, STM32L0, STM32L1, STM32L4
Atmel SAM3N, SAM3X, SAM3S, SAM3U, SAM4S, SAM4S, SAM4S, SAM4S, SAM4S, SAM4S, SAM4S
Nordic nRF51, nRF52 (Questi sono i motivi per cui utilizzo il BMP)
Il BMP è open source, può essere utilizzato per la programmazione commerciale e l'hardware può essere economico (il BMP "reale" costa circa $ 60, un pacchetto blu da 5 pillole di Amazon era spedito a meno di $ 20).
Aggiungere alla risposta esistente; alcuni chip non funzionano correttamente con ST-LINK e OpenOCD.
In particolare, se il tuo target proviene dalla famiglia di MCU Atmel SAMD21, è probabile che si verifichino strani problemi, in cui viene rilevato il processore, ma qualsiasi tentativo di cancellare i settori flash fallisce con un errore.
Il motivo è piuttosto coinvolto , per citare:
AFAIK il problema è in mezza parola (16 bit) scrivere nel registro NVMCTRL-> CTRLA. STLink non implementa l'accesso alla memoria di mezza parola e OpenOCD emula come operazioni a due byte. Sfortunatamente il registro CTRLA comprende da chiave e comando e deve essere scritto atomicamente. Se STLink scrive due byte, il controller NVM imposta il bit PROGE in STATUS: "Un comando non valido e / o una parola chiave errata sono stati / sono stati scritti nel registro comandi NVM"
La soluzione alternativa prevede la ricompilazione di OpenOCD con patch di codice. Non è divertente.
Tuttavia, se non ti dispiace far lampeggiare ST-Link (tramite un altro ST-Link), puoi convertirlo in un adattatore CMSIS-DAP , che funziona perfettamente con il SAMD e dovrebbe funzionare anche con STM32 e altri Cortex-M patatine fritte.
Sì, credo che sia possibile, anche se non l'ho provato. Probabilmente violi il contratto di licenza ST se provassi a programmare dispositivi diversi da quelli di ST
Ad esempio Segger (uno dei leader di mercato nei debugger e programmatori) supporta la conversione di ST-Link in J-link (essenzialmente sovrascrivendo il chip ST-Link con il codice Segger). Anche questo è reversibile, quindi se vuoi ripristinare il tuo dispositivo ST-link nella sua forma originale, puoi farlo.
Esistono tuttavia diverse versioni di ST-Link. Dai un'occhiata ai seguenti link che forniscono ulteriori informazioni e una guida su come farlo.
https://www.segger.com/jlink-st-link.html
https://www.segger.com/jlink-ob.html
Si è possibile. sto usando stlink v2 (cloni di chiavetta USB originale e cinese) con Coocox IDE. Coocox ha anche un'app programmatore standalone - CoFlash , che potrebbe essere utilizzata per programmare molti chip. Ho esperienza con solo due serie: LPC176x e LPC175x, tramite interfaccia SWD. E non ho problemi con quelle patatine. Inoltre non ho apportato modifiche o aggiornamenti specifici per i programmatori (tranne per il fatto che lo st link originale richiedeva il livello di alta tensione a TVCC (PIN1), altrimenti non permetteva di programmare il chip, quindi ho collegato direttamente il pin 19 (3.3vcc) pin 1 su stlink v2).
Un STLink V2 / V2.1 o V3 con firmware recente può essere utilizzato anche con la piattaforma PC-stlinkv2 Blackmagic ospitata da PC. Compilare con "make PROBE_HOST = pc-stlinkv2", avviare il server di debug con "blackmagic_stlinkv2" e connettersi a: 2000 in gdb o caricare direttamente i binari con "blackmagic_stlinkv2". Funziona con tutti gli obiettivi che BMP conosce. Tuttavia V3 nega in modo attivo di lavorare su bersagli non ST, mentre a V2 non importa.