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ível | Significado |
|---|---|
| RDP Level 0 | Sem proteção. Pode ler e gravar a flash normalmente. |
| RDP Level 1 | Impede leitura da Flash via debugger. Gravação ainda permitida, mas leitura é bloqueada. |
| RDP Level 2 | Proteçã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
- Nunca aplique RDP Level 2 antes dos testes finais.
É irreversível. - Ative BOR em sistemas alimentados por baterias ou fontes ruidosas.
- Habilite watchdog por hardware em sistemas críticos.
- Use PCROP para proteger bibliotecas ou algoritmos proprietários.
- Em MCUs com TrustZone, habilite TZEN apenas com particionamento seguro já definido.
- 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.