2 de dezembro de 2021

Do bit Ao Byte

Embarcados, Linux e programação

Debug da RPi Pico no VS Code com PlatformIO

RPi Pico no VS Code | Programar a RPi Pico | OpenOCD e GDB | OpenOCD no Raspberry

Em outra oportunidade, já há algum tempo, escrevi sobre debug da RPi Pico no VS Code usando o JLINK. O JLINK é um JTAG que foi artigo no Laboratório Maker.

Antes de continuar, vale lembrar que o processo de debug da RPI Pico no VS Code se dará através da conexão SWD entre A Raspberry Pi 400 e a Raspberry Pi Pico, como mostrado nesse vídeo.

Instalando PlatformIO no VS Code

Através do PlatformIO você terá suporte à API do Arduino no VS Code. Instalar é muito fácio, basta ir ao menu de plugins (na lateral esquerda da IDE do VS Code) e procurar por PlatformIO. Após instalar, será necessário reiniciar o VS Code, então aparecerá um alienígena no menu esquerdo.

O primeiro projeto criado para Raspberry Pi Pico consumirá algum tempo para iniciar porque ele instalará todas as dependências. Se quiser apreciar o uso do PlatformIO, veja esse vídeo para ter uma noção, é bem curto. No vídeo mostro como habilitar o JLINK para depurar, mas passo por alguns erros e mostro como solucioná-los. Isso você não vê em vídeo nenhum, só mostram o processo rodando liso!

Criando seu primeiro projeto

Não tem segredo, mas logo eu faço o vídeo do processo. É clicar no alien do menu vertical -> home -> Novo projeto. Escolha a placa Raspberry, aí vai aparecer a Pico entre elas. Selecione a Pico e então crie o projeto.

Abra o arquivo de projeto platformio.ini e adicione:

debug_tool = raspberrypi-swd

E o mesmo para upload_protocol. No final, o arquivo deve ficar assim:

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:pico]
platform        = raspberrypi
board           = pico
framework       = arduino
debug_tool      = raspberrypi-swd
upload_protocol = raspberrypi-swd

Hello world – O LED builtin

O LED está no pino 25, mas temos a macro LED_BUILTIN que aponta para o LED onboard. Nesse caso não precisamos decorar o pino. O blink pode ser idêntico ao do Arduino, já que agora podemos programar a RPi Pico no VS Code com a mesma API. Mas pra ficar mais legal:

#include <Arduino.h>
struct biting {
    int state :1;
} one_bit;

void setup() {
    pinMode(LED_BUILTIN,OUTPUT); //pin 25
    one_bit.state = 0;
}

void loop() {
  sleep_ms(400);
  one_bit.state += 1;
  digitalWrite(LED_BUILTIN, one_bit.state);
}

Esse é um código de blink que funciona em qualquer placa. Quer saber porque acontece o blink se só há incremento? Isso eu vou mostrar no vídeo, durante o debug.

Vídeo da RPi Pico no VS Code

“Caramba, mas o artigo foi só isso?” – você pode estar se perguntando. Dessa vez, sim, é só isso, porque chegou a hora de por a mão na massa e preciso deixar uma referência para vocês reproduzirem. Só que todas as explicações dos artigos anteriores sobre debug e algumas coisas mais você só verá no vídeo, então vá para o canal Dobitaobytebrasil no Youtube, inscreva-se e assista o vídeo!

Como é um vídeo de hands-on, não vai ter edição detalhada como os vídeos mais recentes, vai ser coisa bruta; quase uma live. Para referência, o título do vídeo será Debug com RPi Pico.

Agora vou editá-lo de forma básica e publico em seguida!