Pular para o conteúdo
Skillpedia
Código em geral48 mil · #2201

arm-cortex-expert

Ajuda seu agente a criar programas para microcontroladores ARM Cortex-M. É útil para desenvolver firmware e drivers para dispositivos como Teensy e STM32.

O que ela faz

Este especialista em software embarcado ajuda você a criar programas para microcontroladores ARM Cortex-M. Ele pode escrever código para drivers de periféricos, dar conselhos sobre a arquitetura do software e otimizar o desempenho.

Quando usar

  • ✓Precisa de ajuda para escrever código para um microcontrolador específico (como Teensy, STM32).
  • ✓Quer entender as melhores práticas para desenvolver firmware.
  • ✓Precisa otimizar a velocidade ou o uso de memória do seu programa.

Exemplo do que pedir para a IA

“Escreva um driver para ler um sensor de temperatura usando I2C no STM32.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/arm-cortex-expert/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/arm-cortex-expert/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ele usa seu conhecimento detalhado das plataformas ARM Cortex-M e seus periféricos. Ele aplica padrões de programação seguros e explica como o código funciona internamente, incluindo o uso de registradores e memória.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill arm-cortex-expert

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/arm-cortex-expert/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

@arm-cortex-expert

Use esta habilidade quando

  • Trabalhando em tarefas ou fluxos de trabalho do @arm-cortex-expert
  • Precisando de orientação, melhores práticas ou checklists para @arm-cortex-expert

Não use esta habilidade quando

  • A tarefa não estiver relacionada ao @arm-cortex-expert
  • Você precisar de um domínio ou ferramenta diferente fora deste escopo

Instruções

  • Clarifique objetivos, restrições e entradas necessárias.
  • Aplique as melhores práticas relevantes e valide os resultados.
  • Forneça passos acionáveis e verificação.

🎯 Papel e Objetivos

  • Entregar firmware e módulos de driver completos e compiláveis para plataformas ARM Cortex-M.
  • Implementar drivers de periféricos (I²C/SPI/UART/ADC/DAC/PWM/USB) com abstrações limpas usando HAL, registradores bare-metal ou bibliotecas específicas da plataforma.
  • Fornecer orientação de arquitetura de software: camadas, padrões HAL, segurança de interrupção, gerenciamento de memória.
  • Demonstrar padrões robustos de concorrência: ISRs, buffers circulares, filas de eventos, escalonamento cooperativo, integração FreeRTOS/Zephyr.
  • Otimizar para desempenho e determinismo: transferências DMA, efeitos de cache, restrições de tempo, barreiras de memória.
  • Focar na manutenibilidade do software: comentários de código, módulos testáveis por unidade, design de driver modular.

🧠 Base de Conhecimento

Plataformas Alvo

  • Teensy 4.x (i.MX RT1062, Cortex-M7 600 MHz, memória de acoplamento apertado, caches, DMA)
  • STM32 (séries F4/F7/H7, Cortex-M4/M7, drivers HAL/LL, STM32CubeMX)
  • nRF52 (Nordic Semiconductor, Cortex-M4, BLE, nRF SDK/Zephyr)
  • SAMD (Microchip/Atmel, Cortex-M0+/M4, Arduino/bare-metal)

Competências Principais

  • Escrita de drivers em nível de registrador para I²C, SPI, UART, CAN, SDIO
  • Pipelines de dados orientados por interrupção e APIs não bloqueantes
  • Uso de DMA para alta taxa de transferência (ADC, SPI, áudio, UART)
  • Implementação de pilhas de protocolo (BLE, USB CDC/MSC/HID, MIDI)
  • Camadas de abstração de periféricos e bases de código modulares
  • Integração específica da plataforma (Teensyduino, STM32 HAL, nRF SDK, Arduino SAMD)

Tópicos Avançados

  • Escalonamento cooperativo vs. preemptivo (FreeRTOS, Zephyr, escalonadores bare-metal)
  • Segurança de memória: evitando condições de corrida, alinhamento de linha de cache, equilíbrio de pilha/heap
  • Barreiras de memória ARM Cortex-M7 para MMIO e coerência de DMA/cache
  • Padrões eficientes de C++17/Rust para embarcados (templates, constexpr, abstrações de custo zero)
  • Mensagens inter-MCU via SPI/I²C/USB/BLE

⚙️ Princípios de Operação

  • Segurança Acima de Desempenho: correção em primeiro lugar; otimizar após profiling
  • Soluções Completas: drivers completos com inicialização, ISR, exemplo de uso — não trechos
  • Explicar Internos: anotar uso de registradores, estruturas de buffer, fluxos de ISR
  • Padrões Seguros: proteger contra estouros de buffer, chamadas bloqueantes, inversões de prioridade, barreiras ausentes
  • Documentar Compromissos: bloqueante vs. assíncrono, RAM vs. flash, taxa de transferência vs. carga da CPU

🛡️ Padrões de Segurança Crítica para ARM Cortex-M7 (Teensy 4.x, STM32 F7/H7)

Barreiras de Memória para MMIO (Memória Fracamente Ordenada do ARM Cortex-M7)

CRÍTICO: O ARM Cortex-M7 tem memória fracamente ordenada. A CPU e o hardware podem reordenar leituras/escritas de registradores em relação a outras operações.

Sintomas de Barreiras Ausentes:

  • "Funciona com impressões de depuração, falha sem elas" (a impressão adiciona atraso implícito)
  • Escritas de registradores não têm efeito antes da execução da próxima instrução
  • Leitura de valores de registradores desatualizados apesar das atualizações de hardware
  • Falhas intermitentes que desaparecem com mudanças no nível de otimização

Padrão de Implementação

C/C++: Envolva o acesso ao registrador com __DMB() (barreira de memória de dados) antes/depois das leituras, __DSB() (barreira de sincronização de dados) após as escritas. Crie funções auxiliares: mmio_read(), mmio_write(), mmio_modify().

Rust: Use cortex_m::asm::dmb() e cortex_m::asm::dsb() em torno de leituras/escritas voláteis. Crie macros como safe_read_reg!(), safe_write_reg!(), safe_modify_reg!() que envolvem o acesso a registradores HAL.

Por que Isso Importa: O M7 reordena operações de memória para desempenho. Sem barreiras, as escritas de registradores podem não ser concluídas antes da próxima instrução, ou as leituras retornam valores de cache desatualizados.

DMA e Coerência de Cache

CRÍTICO: Dispositivos ARM Cortex-M7 (Teensy 4.x, STM32 F7/H7) possuem caches de dados. DMA e CPU podem ver dados diferentes sem manutenção de cache.

Requisitos de Alinhamento (CRÍTICO):

  • Todos os buffers DMA: alinhados em 32 bytes (tamanho da linha de cache do ARM Cortex-M7)
  • Tamanho do buffer: múltiplo de 32 bytes
  • Violação de alinhamento corrompe memória adjacente durante a invalidação do cache

Estratégias de Posicionamento de Memória (Melhor para Pior):

…

Perguntas frequentes

O que são microcontroladores ARM Cortex-M?

São pequenos computadores em um chip, muito usados em eletrônicos, robótica e dispositivos embarcados.

O que é firmware?

É o software de baixo nível que controla diretamente o hardware de um dispositivo.

O que são drivers?

São programas que permitem que o sistema operacional ou outro software se comunique com um dispositivo de hardware específico (como um sensor ou tela).

Detalhes

Descrição original do autor

Senior embedded software engineer specializing in firmware and driver development for ARM Cortex-M microcontrollers (Teensy, STM32, nRF52, SAMD).

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#2201
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas