Introdução à Black Magic Probe

- por Sergio Prado

Categorias: Ferramentas Tags: , ,

Quando vi a campanha da Black Magic Probe no Kickstarter no final do ano passado não pensei duas vezes em participar da campanha de financiamento e receber a minha plaquinha logo nos primeiros lotes de produção.

O projeto da Black Magic Probe na verdade é antigo, e a primeira versão desta placa é de 2010. A campanha no Kickstarter teve o objetivo de lançar a versão 2.1, com algumas melhorias, em conjunto com um kit de desenvolvimento chamado 1Bitsy.

A campanha de financiamento fechou com sucesso, arrecadando quase 5 vezes mais que o objetivo original de $10,000. Recebi a Black Magic Probe há algumas semanas e agora tive a oportunidade de brincar um pouco com ela.

Você deve estar se perguntando, o que é esta Black Magic Probe? Em poucas palavras, é uma ferramenta de depuração JTAG e SWD. Para quem não conhece, uma ferramenta de depuração JTAG permite, dentre outras tarefas, gravar na flash ou na RAM do microcontrolador, controlar o fluxo de execução do código na CPU, colocar breakpoints, executar o código passo-a-passo, inspecionar registradores e memória, etc.

A Black Magic Probe permite depuração tanto por JTAG quanto por SWD (Serial Wire Debug), uma interface de depuração mais simples criada pela ARM.

Mas o que difere esta ferramenta de tantas outras como o J-Link da Segger, ULINK da Keil, I-jet Trace da IAR ou ST-LINK da STMicroelectronics?

São muitas diferenças, a começar pelo fato da ferramenta ser aberta. O hardware é aberto, utiliza um microcontrolador da STMicroelectronics e pode ser facilmente reproduzido (o esquemático tem apenas uma página!). O firmware também é aberto e está disponível no Github sob licença GPLv3.

Mas não é necessariamente o fato de ser aberta que difere esta ferramenta de tantas outras existentes no mercado.

Sou um defensor da liberdade de escolha de ferramentas e ambientes de desenvolvimento. E a maioria das ferramentas JTAG possui uma interface proprietária ou específica do fabricante, o que dificulta seu uso em qualquer ambiente de desenvolvimento. Por exemplo, o protocolo do J-Link é fechado e o I-jet Trace só funciona no IAR. Mesmo ferramentas JTAG baseadas em protocolos abertos como o CMSIS-DAP costumam trazer dificuldades ao tentar integrá-las com ambientes de desenvolvimento (sistema operacional, IDE, toolchain, etc) diferentes do original. Quem já precisou configurar o OpenOCD alguma vez sabe do que estou falando!

Bom, a Black Magic Probe resolve todos estes problemas porque ela traz integrado um GDB Server! Em específico, ela implementa o GDB Extended Remote Debugging Protocol, um protocolo de depuração remota do GDB. Mas como isso funciona?

Primeiro, você deve conectar a Black Magic Probe na placa que deseja depurar via JTAG.

Depois, você deve conectar a Black Magic Probe no seu PC pela USB. Será criada no PC uma porta serial que você irá utilizar para se comunicar com a Black Magic Probe.

Basta então executar o GDB na sua máquina e iniciar o processo de depuração pela serial. Nada de interfaces proprietárias ou protocolos específicos do fabricante. É uma simples interface serial que implementa o protocolo do GDB Server, e que permite conectar utilizando o GDB para depurar o hardware por JTAG ou SWD. Funciona em Linux, Windows e Mac, não exige nenhum driver especial, e funciona com qualquer ambiente de desenvolvimento que tenha suporte ao GDB. Simples assim!

Como comentei, o hardware é bastante simples, e o esquemático cabe em uma única página!

Ele utiliza o microcontrolador STM32F103CB da STMicroelectronics, um ARM Cortex-M3 com 128KB de Flash, 20KB de RAM e CPU de 72MHz. Possui 4 leds de status, um regulador de tensão, e quatro transceivers da Texas Instruments (74LVC2T45) para fazer a conversão dos níveis de tensão de cada sinal JTAG (TMS, TCK, TDO, TDI) ou SWD (SWDIO, SWCLK). Isso permite com que a ferramenta suporte a depuração de placas que trabalham com níveis de tensão no range de 1.7 V a 5.0V.

E tudo isso numa plaquinha que tem o tamanho de 3 feijões! What!?

E tem mais. Ao plugar a Black Magic Probe no PC, na verdade serão criadas duas portas seriais. Um delas é a interface que comentei com o GDB Server para depuração. A segunda porta serial é genérica e você pode utilizar conforme a necessidade. Ou seja, além de um depurador JTAG, a Black Magic Probe serve também como um conversor USB/serial genérico!

Atualmente, ela suporta diversos microcontroladores e microprocessadores de arquitetura ARM Cortex-M e ARM Cortex-A, incluindo NXP Kinetis KL25, KL27 e KL02, Texas Instruments LM3S e TM4C, NXP LPC8xx, LPC11xx, LPC15xx e LPC43xx, Atmel SAM3N, SAM3X, SAM3S, SAM3U e SAM4S, ST Microelectronics STM32, além de um suporte experimental para a Raspberry Pi 2! Uma lista completa está disponível no site do projeto, e como é um projeto aberto, o suporte a novas plataformas de hardware tende a crescer.

No momento, a Black Magic Probe pode ser adquirida diretamente no site da 1BitSquared por $60. É um investimento que vale a pena! Além de ser uma ótima ferramenta de depuração, pode servir bem ao propósito de realizar engenharia reversa em hardware (inspecionar a execução do código, disassemblar e extrair o firmware da flash, etc).

Se você não tiver condições de comprar, é possível montar o hardware ou gravar o firmware da Black Magic Probe em um kit de desenvolvimento da STMicroelectronics. Por exemplo, este artigo explica como gravar o firmware da Black Magic Probe no STM32F4 Discovery Board e este artigo explica o mesmo processo para um clone de $4 do ST-LINK.

No próximo artigo explicarei como utilizar esta belezura para depurar um ARM Cortex-M3. Meus testes serão feitos no kit de desenvolvimento STM32VLDISCOVERY da STMicroelectronics.

Até lá!

Happy Hacking,

Sergio Prado

  • Sérgio, como foi o envio dessa placa? Passou na alfândega tranquilo? Eu mandei uma placa pra Oshpark manufaturar, eles mandaram pra cá e o conjunto se perdeu no limbo da alfândega :(

    • Olá Fernando!

      Passou direto pela alfândega e não fui taxado. Talvez tenha sido sorte, ou então pelo tamanho do pacote (a placa é tão pequena que veio em um envelope).

  • Felipe Navarro

    Se você usar ST, ainda acho que o ST-Link vale muito mais a pena, plug’n’play e custa 1/3 dessa probe.

    • Olá Felipe!

      O ST-Link é plug’n’play desde que você utilize todo o ambiente de desenvolvimento da ST (SO + IDE + Driver).

      E se você quiser utilizar um SO que não seja compatÍvel com o driver da probe deles? Esquece.

      E se você quiser utilizar uma outra IDE (Atom, Eclipse, Sublime, CoIDE, etc). Mesmo que funcione, vai te dar um bom trabalho para configurar, e a estabilidade não será das melhores.

      E se um dia você desenvolver outro projeto com outro chip. Vai trabalhar com duas probes + duas IDEs diferentes?

      Sempre que possível, sou muito mais propenso a soluções livres, sem dependência com nenhum fabricante de chip/hardware.

      E como comentei no post, se você não quer/puder pagar os $60 desta ferramenta e colaborar com a evolução do projeto, pode construí-la com um ST-Link genérico de $4.

      Um abraço!

      • Bruno

        Ola Sergio, vc pode usar STLink com openOCD sem problemas. Eu utilizo GCC + GDB + openOCD e trabalho com STLink sem necessidade de IDE proprietária.
        Abs,

      • Felipe Navarro

        Eu gostei bastante do Atollic TrueStudio, funcionou tudo out of the box.

    • Felipe Neves

      So lembrando que o ST-Link eh proprietario, ta? Se um dia voce quiser migrar de micro, vai ter que mudar o debug probe tambem, nisso a black magic faz de forma open e bem feito que soh vi uma empresa fazer, a segger.

      O mais legal eh que a black magic pode servir de base para acessar outras arch que nao sejam arm, bastando ter um jtag pra fora ;)

    • Se todos os seus produtos o chip for ST e for casado com Windows, compensa. Mas pelo que entendi do Sergio e do projeto é a liberdade do projeto e não ficar amarrado a um fabricante.
      Achei sensacional o projeto e um custo muito.

      • Rafael Dias

        sem contar o que vêm no pacote: debug + VCOM

    • Eu uso meus st-link com OpenOCD no Linux e Mac. Funciona perfeitamente até mesmo com microcontroladores não ST. Também dá pra usar isto aqui, que funciona perfeitamente: https://github.com/texane/stlink

  • Eu não conheci o Kickstarter original porque não tava mais trabalhando com embarcados na época. Mas a pouco tempo atrás, comprei uns pendrives USB na China que vem com st-link no FW original. Paguei US$ 2.25 por cada um e coloquei BMD. To curtindo bastante.

  • Tem um typo no texto onde está escrito “ST Microelectronics STM3” sem o 2 no final.

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.