Neste artigo veremos como converter o gravador e debugger ST-Link da ST em um J-Link da SEGGER, e suas principais diferenças e como usá-los no System Workbench e Atollic (principais ferramentas de desenvolvimento da ST).
J-Link
O J-Link é uma ferramenta poderosa de gravação e debug da SEGGER. Diferente do ST-Link, ele possui um GDB Server integrado em seu hardware, permitindo a depuração do target via JTAG ou SWD mais rápida. A velocidade de depuração e gravação na flash e RAM do ST-Link pode chegar a 12,8 KBytes/s, enquanto o J-Link na sua versão Pro pode chegar a 3 MBytes/s.
O J-Link possui suporte para CPUs ARM 7/9/11, Cortex-M/R/A, Microchip PIC32, Renesas RX. Os probes de depuração do J-Link são suportados por todas as principais IDEs, incluindo o Eclipse, as IDEs baseadas no GDB e o SEGGER Embedded Studio.
Kits de desenvolvimento ST
A SEGGER e a ST, diferente do que se possa pensar, possuem algumas parcerias comerciais. O resultado de uma delas criou a possibilidade de converter o ST-Link que vem nos kits de desenvolvimento Nucleo e Discovery da ST em uma versão lite do J-Link.
Ao realizar essa conversão você não ganha somente uma melhoria na performance de debug, mas também ganha acesso ao leque de ferramentas da SEGGER:
- Ozone;
- J-Link Configurator;
- J-Link GDB Server;
- J-Link Remote Server;
- J-Link Commander;
- J-Scope;
- SystemView (Versão Pro e paga);
- RTT Viewer.
Para não fugir muito do tema, o uso e configuração de cada uma dessas ferramentas serão abordados em artigos futuros aqui no Embarcados.
Realizando a conversão
Nesta etapa você precisa usar uma máquina com o sistema operacional Windows, certifique-se que você tem os drivers da ST instalados em sua máquina. Caso não tenha, baixe-os neste link.
O windows reconheceu sua placa. Baixe o ST-Link Reflash aqui.
Ao executar o programa STLinkReflash.exe, você precisará aceitar os termos da SEGGER para realizar a conversão.
Após aceitar os termos, será exibido um menu com 4 opções. A opção 1 realiza a conversão de ST-Link para J-Link; a opção 2 atualiza o firmware do J-Link e a opção 3 realiza a conversão de J-Link para ST-Link. Selecione a opção 1 para realizar a conversão.
Para saber se a conversão foi realizada com sucesso, verifique se algum dispositivo J-Link foi detectado como mostra a figura abaixo.
Usando o J-Link no System Workbench
Ao instalar a IDE System Workbench o plugin de debug via J-Link não virá instalado por padrão. Para instalar o plugin, 4 passos precisam ser realizados.
Passo 1 – Baixar os drivers J-Link
Acesse esta página e realize o download dos drivers J-Link para o sistema operacional correspondente:
No meu caso estou usando o sistema operacional Ubuntu/Linux e farei o download do arquivo JLink_Linux_V634h_x86_64.deb.
Após instalar o pacote JLink_Linux_V634h_x86_64.deb, na pasta /opt será criado um diretório SEGGER com os driver do J-Link.
Passo 2 – Instalar o pluging GNU ARM C/C++ J-Link Debugging no Eclipse
Acesse o caminho abaixo para instalar o Plugin J-Link para o Eclipse.
help->Install New Software->Add
Adicione o repositório abaixo para baixar e instale o pacote GNU ARM C/C++ J-Link Debugging.
Passo 3 – Configurar o Eclipse para usar os drivers do J-Link
Acesse o caminho Window > Preferences e procure pelo menu de configuração SEGGER J-Link.
Configure como mostra a figura abaixo:
Obs: A pasta /opt/SEGGER/JLink é um link de atalho para a pasta /opt/SEGGER/JLink_V634h
Passo 4 – Configurar o GDB para usar o J-Link
Neste ponto você já precisa ter um projeto pronto para testarmos o debug via J-Link.
Acesse Debug Configurations e crie uma nova instância do objeto GDB SEGGER J-Link Debugging.
Nesta etapa, 3 rotinas precisam ser configuradas:
- Em Executable é preciso informar o caminho do arquivo /opt/SEGGER/Jlink/JLinkGDBServer. Porém já mapeamos este arquivo no passo 3 e ele já virou uma variável de sistema do eclipse via ${jlink_path}/${jlink_gdbserver}
- Em Device Name precisamos indicar o ID do microcontrolador que estamos usando. No meu caso estou usando uma placa Nucleo-F401RE que usa o microcontrolador STM32F401RE. OBS: É preciso lembrar que estamos usando uma versão Lite do J-Link, portanto ele só executa debug e gravação de firmwares de microcontroladores usados nos kits Núcleo e Discovery.
- Em GDB Client Setup que será usado no nosso caso será utilizada a variável de sistema ${openstm32_compiler_path}/arm-none-eabi-gdb, que faz referência ao arquivo ~/Ac6/SystemWorkbench/plugins/fr.ac6.mcu.externaltools.arm-none.linux64_1.15.0.201708311556/tools/compiler/bin/arm-none-eabi-gdb.
A Figura abaixo mostra o resultado final e o J-Link sendo usado como ferramenta de debug.
Extra
Ainda no período de debug, caso queira ter mais informações, você pode acessar seu J-Link via browser no endereço localhost:19080. Nesta página são exibidas diversas informações como: consumo de energia do target, log, troca de mensagens via RTT, trace, breakpoints criados, status dos registradores da CPU, etc.
Usando o J-Link no Atollic
Aqui já não existem mais segredos ao instalar os drivers do J-Link no Atollic. É perguntado se você deseja instalar os pacotes de Debug do J-Link; fazendo isso ele já realiza todas as etapas mostradas acima. Tudo o que você precisa fazer é indicar qual ferramenta de debug você deseja usar como mostra a figura abaixo.
Conclusão
Neste artigo apresentamos a ferramenta debug J-Link e como podemos incorporá-la em nossos kits de desenvolvimento da ST.
Mostramos passo a passo como instalar e usá-la nas 2 principais IDEs de desenvolvimento da ST.
Talvez ao fazer esta conversão você não veja de imediato como o seu debug melhorou, isso vai depender do tamanho de sua aplicação e o tipo de Core ARM que você está usando. Eu confesso que só vi essa melhoria usando um Kit Discovery STM32F7. A melhoria de debug foi muito absurda.
Vantagens:
Um das grandes vantagens com certeza é o ganho de velocidade durante o período de debug.
Acesso aos softwares de desenvolvimento que ajudam a verificar a performance e desempenho de seu firmware. Essas ferramentas são disponibilizadas gratuitamente pela SEGGER, com o porém de você ter em mãos um J-Link original (Falaremos dessas ferramentas em artigos futuros).
Desvantagens:
As desvantagens são as limitações ao se usar um J-Link versão Lite, não podendo estender o debug a microcontroladores que não são usados nos kits de desenvolvimento da ST.
O preço desta ferramenta em comparação ao ST-Link acaba sendo uma desvantagem também. A versão PRO pode chegar perto de $ 1.000,00 (Mil dólares), porém existem versões Educational com custo perto dos $ 60,00 (sessenta dólares).
Extra:
A SEGGER possui parceria comercial com vários fabricantes de microcontroladores, entre os mais conhecidos aqui no Brasil estão NXP e a antiga Frescale.
Este artigo teve foco em como usar o J-Link nos kits de desenvolvimento da ST, porém existe a possibilidade de fazer o mesmo com o Kit de desenvolvimento de outros fabricantes. Para mais informações acesse o site da SEGGER e se informe.
Dúvidas:
Caso tenha ficado alguma duvida comente aqui embaixo! =)
Saiba mais
Primeiros passos com a Placa STM32F0 Discovery
GNU ARM Cross-toolchain – OpenOCD + GDB
Ambiente de desenvolvimento para LaunchPad Tiva C no Ubuntu
Referências
https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/
https://www.segger.com/products/debug-probes/j-link/models/other-j-links/opensda-sda-v2/













Parabéns pelo artigo. Sou um entusiasta de sistemas embarcados, estou interessado para desenvolver para nrf52832, hoje tenho um E73-2G4M04S1B da EBYTE, um SoC, com objetivo de utilizar o BLE 4.0, o que preciso pra começar a fazez aplicações em C/C++?
Muito legal, com isso posso utilizar meu kit da stm para gravar microcontroladores da NXP, correto?
Será que aqueles ST Link clones que compramos no Aliexpress aceita essa mudança de firmware??
Nunca tentei fazer isso… mas provavelmente deve aceitar a mudança sim, mesmo que você consiga fazer isso, você fica limitado a usar ele nos microcontroladores que vem nos Kits da ST.
A lista dos microcontroladores ST esta na seção: “Compatible Evaluation Boards” na pagina
https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/
Só lembrando que fazer essa conversão em gravadores não oficiais da ST é proibido e ilegal.
Jorge, de onde vc tirou essa informação de ser proibido e ilegal modificar o firmware dos ST link clones?
Segue o Link: https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/ “SEGGER created a firmware which runs on the ST-LINK on-board, making it J-Link compatible. In order to make use of this firmware, the following Terms Of Use must be accepted: The firmware is only to be used with ST target devices. Using it with other devices is prohibited and illegal. The firmware is for use with evaluation boards only. It is not for use with custom hardware. The firmware may only be used for development and/or evaluation purposes. It may not be used for production purposes. The firmware is made available without any warranty and without… Leia mais »
Meio tarde mas …. acabei de testar e não funciona em clones de stlink.
Tenho uma dev board do nrf52832 e tem um j-link ob. Fiquei impressionado com a velocidade, é muito rápido.
Muito legal. Mas eu tenho uma duvida. É possível, depois de fazer essa alteração, usar esse j-link no atmel studio?
Sim e possível, aqui você pode ter mais detalhes:
https://www.segger.com/products/debug-probes/j-link/technology/ides/atmel-studio/
Muito bommm e de grande ajuda! Valeu pela dica e parabéns pelo artigo Jorge Guzman
Muito bom o post!