MCU & FPGA STM32 Como Funcionam os Fuse Bits (Option Bytes) nos Microcontroladores STM32: Parametrização e Segurança do Firmware

Como Funcionam os Fuse Bits (Option Bytes) nos Microcontroladores STM32: Parametrização e Segurança do Firmware


1. Introdução ao Sistema de Fuse Bits em STM32

Em microcontroladores AVR e PIC, o termo fuse bits refere-se a configurações permanentes que controlam parâmetros do chip, como fontes de clock e mecanismos de proteção.
Nos STM32, o equivalente funcional são os Option Bytes, valores gravados em áreas especiais da Flash ou do Flash System Memory, usados para definir comportamento de boot, níveis de proteção, watchdog, brown-out e recursos de segurança.

Embora não sejam chamados literalmente de fuse bits, sua função é idêntica:
configurar parametrização estrutural e segurança do firmware, alterando características que o software comum não pode modificar livremente.

Essas opções são fundamentais em projetos profissionais porque permitem:

  • proteger a propriedade intelectual do firmware,
  • impedir gravações não autorizadas,
  • definir mecanismos de boot seguro,
  • reforçar a confiabilidade do sistema.

2. Estrutura dos Option Bytes nos STM32

Os Option Bytes variam levemente entre famílias (F1, F4, G0, L0, H7 etc.), mas a estrutura típica inclui:

2.1 RDP – Readout Protection Level (Proteção de Leitura)

Controla a proteção contra cópia do firmware.

NívelSignificado
RDP Level 0Sem proteção. Pode ler e gravar a flash normalmente.
RDP Level 1Impede leitura da Flash via debugger. Gravação ainda permitida, mas leitura é bloqueada.
RDP Level 2Proteção total e irreversível. Impede leitura e impede retorno ao nível 0.

Uso:
Aplicado em produtos comerciais onde há risco de pirataria. A maior parte dos fabricantes usa Level 1.


2.2 BOR – Brown-Out Reset (Níveis de Reset por Queda de Tensão)

Configura o limite de tensão abaixo do qual o MCU deve reiniciar para evitar corrupção.

Níveis típicos: OFF, 2.1V, 2.4V, 2.7V.

Função:
Evita operação instável quando a fonte cai momentaneamente.


2.3 nBOOT0, nBOOT1 e BOOT_LOCK

Controlam a lógica de boot:

  • nBOOT0 / nBOOT1: Selecionam se o MCU irá iniciar pela Flash, SRAM ou System Memory (bootloader da ST).
  • BOOT_LOCK: Impede alterações nos bits de boot para fortalecer a segurança.

Uso comum:
Permitir que o dispositivo inicialize sempre pela Flash e não aceite boot por RAM para evitar ataques.


2.4 WWDG_SW e IWDG_SW (Watchdog em Hardware ou Software)

Determinam se o watchdog é controlado:

  • por software, ou
  • apenas por hardware, impedindo que o firmware o desative.

Uso:
Aplicado em sistemas críticos onde segurança funcional exige watchdog sempre ativo.


2.5 IWDG_STOP e IWDG_STDBY

Definem se o Independent Watchdog deve continuar funcionando nos modos:

  • STOP
  • STANDBY

Uso:
Sistemas que não podem “congelar” a supervisão durante redução de consumo.


2.6 nRST_STOP e nRST_STDBY

Controlam se a saída de reset deve ser acionada ao sair de STOP/STANDBY.


2.7 PCROP (Proprietary Code Protection)

Protege áreas específicas da Flash contra:

  • leitura externa,
  • escrita,
  • apagamento.

Uso:
Indicado quando há uma “biblioteca” proprietária dentro do firmware.


2.8 Security Bit / TZEN (em MCUs com TrustZone)

Em STM32L5, U5 e H5:

  • TZEN = TrustZone Enable
    Ativa a arquitetura segura (Secure/Non-Secure).

Uso:
Gerenciamento de zonas seguras, criptografia, updates protegidos.


3. Ferramentas para Configuração dos Option Bytes

3.1 STM32CubeProgrammer (Método Oficial)

Ferramenta gráfica da ST que permite:

  • ler Option Bytes,
  • alterar valores,
  • editar níveis de RDP,
  • configurar BOR, watchdog, PCROP, TrustZone,
  • gravar firmware via SWD, JTAG, UART, USB DFU.

Interface intuitiva com abas dedicadas a cada Option Byte.


3.2 ST-Link Utility (antiga, mas ainda usada)

Ferramenta clássica para MCUs STM32F e STM32L.
Permite edição direta dos Option Bytes com rapidez.


4. Gravando o Firmware e Option Bytes via st-flash (CLI)

A ferramenta st-flash, parte do pacote stlink, permite gravação via linha de comando.

4.1 Gravando firmware

st-flash write firmware.bin 0x08000000

4.2 Lendo Option Bytes

st-flash read option_bytes.bin 0x1FFF7800 256

4.3 Gravando Option Bytes

Os Option Bytes ficam em endereços especiais dependendo da família.
Após atualizar os OBs, o chip reinicia automaticamente, aplicando as novas configurações.

st-flash também informa erros comuns como:

  • tentativa de gravar OBs protegidos,
  • violação de RDP,
  • incompatibilidade com certos níveis de segurança.

5. Considerações de Segurança e Boas Práticas

  1. Nunca aplique RDP Level 2 antes dos testes finais.
    É irreversível.
  2. Ative BOR em sistemas alimentados por baterias ou fontes ruidosas.
  3. Habilite watchdog por hardware em sistemas críticos.
  4. Use PCROP para proteger bibliotecas ou algoritmos proprietários.
  5. Em MCUs com TrustZone, habilite TZEN apenas com particionamento seguro já definido.
  6. Documente todos os Option Bytes usados no projeto.
    Isso evita perda de configurações em futuras versões.

6. Conclusão

O sistema de “fuse bits”, representado pelos Option Bytes, é um dos pilares de segurança e parametrização nos microcontroladores STM32. Ele define desde o comportamento básico de boot até proteções avançadas como RDP, PCROP e TrustZone.
A correta configuração desses parâmetros, aliada a ferramentas como STM32CubeProgrammer, ST-Link Utility e st-flash, garante firmware seguro, protegido contra cópia, e aumenta a confiabilidade do sistema embarcado.

0 0 votos
Classificação do artigo
Inscrever-se
Notificar de
guest
0 Comentários
mais antigos
mais recentes Mais votado
Feedbacks embutidos
Ver todos os comentários

Related Post

0
Adoraria saber sua opinião, comente.x