Tutorial do STM32CubeProgrammer

Índice

STM32CubeProgrammer Tutorial

Introdução ao STM32CubeProgrammer

O STM32CubeProgrammer é uma ferramenta de programação STM32 muito poderosa lançada pela STMicroelectronics. Ela integra altamente as funções das seguintes ferramentas:

  • STVP ou STLinkUtility (ferramenta de programação JTAG/SWD)
  • STMFlashLoaderDemo (ferramenta de programação UART)
  • DfuSeDemo (ferramenta de gravação USB)
  • ST-LinkUpgrade (ferramenta de atualização de firmware do programador Stlink)

Interface do usuário do STM32CubeProgrammer

O STM32CubeProgrammer oferece interfaces gráficas e de linha de comando. Além disso, também oferece uma API C++, e os usuários podem integrar as funções do STM32CubeProgrammer nos aplicativos para PC que desenvolvem.

Overview of STM32CubeProgrammer
Overview of STM32CubeProgrammer

Conforme mostrado na figura acima, na área de configuração à direita, os usuários podem optar por se conectar ao microcontrolador STM32 através da interface de depuração STLink ou interfaces de comunicação como USB e UART. Após conectar-se ao microcontrolador STM32, você pode ver o modelo atual do MCU, a versão e o tamanho do Flash na área "Informações do dispositivo". Se uma placa de desenvolvimento ST oficial estiver conectada, o nome da placa de desenvolvimento também será exibido.

Funções do STM32CubeProgrammer

O STM32CubeProgrammer suporta a exclusão e leitura/gravação da memória integrada dos MCUs STM32 através da interface de depuração SWD/JTAG do STLink ou através de interfaces de comunicação como UART, USB, I2C, SPI e CAN, utilizando o bootloader do sistema programado de fábrica armazenado dentro do chip.

Aqui estão as principais funções do STM32CubeProgrammer:

Apagando e programando

O STM32CubeProgrammer suporta o apagamento por setor e o apagamento completo do chip da memória Flash. Ele pode importar vários formatos de arquivo para programação, incluindo arquivos binários (.bin), elf (.elf, .axf, .out), hexadecimais (.hex) e Motorola S-record (.srec).

Erasing and Programming of STM32CubeProgrammer
Erasing and Programming of STM32CubeProgrammer

Operação de apagamento

Depois de estabelecer uma conexão com o MCU de destino através do STLink, você pode apagar setores Flash na página "Apagando e Programando" por setor ou realizar um apagamento completo do chip selecionando o botão "Apagar chip completo".

Operação de programação

Na página "Apagar e programar", você pode clicar no botão "Procurar" para importar um arquivo executável e, em seguida, clicar em "Iniciar programação" para iniciar o processo de programação.

Como alternativa, na página "Memória e edição de arquivos", você pode abrir o arquivo executável que deseja programar e clicar em "Download" para iniciar a programação.

Na página "Memória e edição de arquivos", em "Memória do dispositivo", você também pode ler os valores da memória do MCU em um intervalo de endereços especificado e salvar o conteúdo lido como arquivos binários (.bin), hexadecimais (.hex) ou S-record (.srec) usando o menu "Salvar como".

Além de programar o arquivo executável inteiro, você pode modificar diretamente o valor em um endereço específico na página "Memory & File Edition" (Edição de memória e arquivo) em "Device Memory" (Memória do dispositivo). Após pressionar "Enter", o STM32CubeProg irá automaticamente ler, modificar, apagar e gravar novamente. Este método pode ser usado para programar bytes programáveis uma única vez (OTP).

Byte de opção Leitura/Gravação

Na página OB (Byte de Opção), você pode visualizar as configurações atuais dos bytes de opção para o MCU conectado. Você também pode modificar os valores dos bytes de opção aqui. Para obter explicações detalhadas sobre os bytes de opção, consulte o manual de referência do MCU específico.

Option bytes Reading and Writing of STM32CubeProgrammer
Option bytes Reading and Writing of STM32CubeProgrammer

Programação "Dois em Um"

Usando o modo de programação "Dois em Um" na página "Apagando e Programando", você pode programar tanto a memória FLASH quanto os bytes opcionais em uma única operação. A configuração dos bytes opcionais é feita usando a "linha de comando STM32CubeProgrammer" com o comando "-ob". Por exemplo, para definir a proteção contra leitura no nível 1 após programar a FLASH, siga estas etapas:

  • Defina o caminho para o arquivo executável a ser baixado.
  • Marque "Full chip erase" (Apagar chip completo) e "Download file" (Baixar arquivo) em "Automatic Mode" (Modo automático).
  • Na caixa de entrada "Comandos de bytes de opção", digite "-ob rdp=0xBB".
  • Clique em "Iniciar modo automático" e o STM32CubeProgrammer executará as operações especificadas em sequência, exibindo o progresso na janela de log.
2 in 1 Programming-Automatic Mode of STM32CubeProgrammer
2 in 1 Programming-Automatic Mode of STM32CubeProgrammer

Para obter detalhes sobre o formato do comando "-ob", consulte a seção 3.2.15 do UM2237 (Manual do Usuário da Ferramenta de Software STM32CubeProgrammer). As definições do campo OptByte no comando "-ob" não são explicadas no UM2237, mas você pode encontrá-las inspecionando a guia "Option bytes" na interface gráfica do STM32CubeProgrammer, pois as definições no comando "-ob" correspondem às encontradas aqui. Como alternativa, você pode usar o comando "-ob displ" para exibir a configuração atual de todos os bytes de opção, permitindo que você entenda as definições de cada campo OptByte.

Leitura/gravação de memória externa

Se você deseja ler/gravar em uma memória externa conectada ao STM32 por meio de interfaces como SPI, FMC, QSPI, será necessário um carregador externo. O CubeProgrammer fornece carregadores externos padrão correspondentes à memória externa integrada às placas de desenvolvimento STM32. Se você estiver usando um modelo de memória diferente, poderá criar seus próprios arquivos de carregador externo (*.stldr). Consulte a seção 2.3.3 do UM2237 para obter instruções detalhadas.

External Memory Programming of STM32CubeProgrammer
External Memory Programming of STM32CubeProgrammer

Antes de realizar operações na memória externa, você deve selecionar o carregador externo correspondente na página "Carregador externo". Esse carregador externo será usado nas operações subsequentes de apagamento e programação na memória externa nas páginas "Apagamento e programação" e "Edição de memória e arquivo".

Carregador de inicialização

De fábrica, os MCUs STM32 vêm com uma memória interna do sistema que contém um bootloader, permitindo atualizações da memória Flash no chip através de interfaces como USART, USB, I2C, SPI e CAN. A interface do bootloader suportada varia dependendo do modelo do MCU STM32, e você pode encontrar informações específicas na nota de aplicação AN2606. O STLink v2 e o STLink v3 fornecem interfaces de ponte dos protocolos de comunicação USART, USB, I2C, SPI e CAN para USB, permitindo que os MCUs STM32 se conectem a um PC.

Bootloader of STM32CubeProgrammer
Bootloader of STM32CubeProgrammer

O STM32CubeProgrammer fornece uma interface para PC para realizar o apagamento e a programação da memória Flash no chip através do bootloader. O STLink v2 suporta apenas interfaces de comunicação USART e USB, enquanto o STLink v3 adiciona suporte para interfaces de comunicação I2C, SPI e CAN. Anteriormente, a ST oferecia duas ferramentas de software separadas para PC: "STM32 Flash loader demonstrator" e "Dfuse Demo", cada uma com suporte para bootloader USART e funcionalidade USB DFU. Agora, você pode usar o STM32CubeProgrammer, uma única ferramenta de software, para oferecer suporte a todas essas interfaces de comunicação.

Janela de entrada de informações SWO

Durante o desenvolvimento, muitas vezes é necessário gerar informações de depuração. Um método comum é redirecionar a saída printf para uma porta serial, o que consome uma porta serial. Outro método é redirecionar a saída printf para o pino SWO (Serial Wire Output) através da interface de depuração SWD, permitindo que as informações de depuração sejam enviadas através do SWO. A janela SWV (Serial Wire Viewer) do STM32CubeProgrammer pode exibir informações de depuração enviadas através do SWO e salvar todas as informações recebidas em um arquivo ".log" especificado.

Serial Wire Viewer of STM32CubeProgrammer
Serial Wire Viewer of STM32CubeProgrammer

Interface de linha de comando

O STM32CubeProgrammer fornece uma interface de linha de comando que permite executar a maioria das suas funções através da execução de comandos. O ficheiro executável "STM32_Programmer_CLI.exe" pode ser encontrado na pasta "bin" do diretório de instalação do STM32CubeProgrammer. Ao executar o "STM32_Programmer_CLI.exe", será exibida uma lista dos comandos suportados e dos seus parâmetros.

Command Writing of STM32CubeProgrammer
Command Writing of STM32CubeProgrammer

A interface de linha de comando também oferece algumas funcionalidades que não estão disponíveis na interface gráfica, como a criação de pacotes confiáveis, programação segura, cálculo de valores CRC e muito mais. Para obter instruções detalhadas, consulte UM2237. O exemplo na figura demonstra a conexão com o chip de destino por meio da interface SWD e a configuração do nível de proteção de leitura 1 usando instruções de linha de comando. O comando completo é "STM32_Programmer_CLI.exe -c port=SWD -ob rdp=0xBB".

Atualização do firmware STLink

Depois de conectar o depurador STLink ao seu computador, abra o STM32CubeProgrammer e atualize a conexão STLink para visualizar a versão atual do firmware STLink. Clique no botão "Atualização do firmware" e abra a ferramenta STLinkUpgrade para atualizar a versão do firmware STLink.

Firmware Upgrade of ST-LINK of STM32CubePorgrammer
Firmware Upgrade of ST-LINK of STM32CubePorgrammer

Como usar o STM32CubeProgrammer?

O STM32CubeProg é uma ferramenta de programação abrangente que inclui operações típicas, como leitura, gravação (download/programação), apagamento e programação de bytes opcionais.

Download do STM32CubeProg

Ambiente de instalação

O STM32CubeProg é compatível com os sistemas operacionais Windows, Linux e macOS. Como ele é baseado em JAVA, você precisa instalar o Java Runtime Environment (JRE) no seu computador. O processo de instalação é mostrado na imagem abaixo (versão 2.5.0b):

Conectando chips e STM32CubeProg

Ao usar o STM32CubeProgrammer para conectar-se à placa de destino via STLINK, pode haver casos em que a conexão falhe. Isso pode ser devido a uma versão baixa do firmware dentro do STLINK. Para resolver isso, clique no botão "Atualização do firmware" para realizar uma atualização do firmware. Durante o processo de atualização, pode ser necessário conectar e desconectar várias vezes. Após a conclusão da atualização, desconecte e reconecte uma vez para que o STM32CubeProgrammer reconheça o STLINK.

Programação e depuração de chips

Após concluir a depuração do programa, você precisa programar o chip com seu código. Normalmente, você tem três opções:

  1. Use a interface de depuração JTAG/SWD para programar o chip, o que geralmente requer o software STLink Utility ou STVP.
  2. Programar o chip através da interface UART, usando o software demonstrador STM32 Flash loader no PC.
  3. Programar o chip pela interface USB, utilizando o software USB DfuSe.

Programação com ST-LINK

Programming with ST-LINK _ STM32CubeProgrammer
Programming with ST-LINK _ STM32CubeProgrammer

Programação com UART

Programming with UART_ STM32CubeProgrammer
Programming with UART_ STM32CubeProgrammer

Programação com USB

Programming with USB_ STM32CubeProgrammer
Programming with USB_ STM32CubeProgrammer

Ao programar através do modo USB DFU, certifique-se de desinstalar todas as ferramentas de programação STM32 DFU instaladas anteriormente. Em seguida, execute o arquivo STM32Bootloader.bat no diretório de instalação.

Inscreva-se

Inscreva-se na nossa lista de assinantes para receber atualizações mensais do blog, notícias sobre tecnologia e estudos de caso. Nunca enviaremos spam e você pode cancelar a assinatura a qualquer momento.

Sobre o autor

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Precisa de ajuda?

Rolar para cima

Instant Quote