Conheça a LibOpenCM3 para ARM Cortex-M

LibOpenCM3

No mercado, hoje, há diversas opções de microcontroladores, de diversos fabricantes. Cada fabricante, geralmente, oferece um SDK para facilitar o desenvolvimento de firmwares para esses dispositivos. Entretanto, migrar o microcontrolador de sua solução pode acabar se tornando uma verdadeira odisseia, exatamente, porque as SDKs de fabricantes diferentes  - e às vezes de famílias diferentes - não são compatíveis a nível de código. Esse problema, exige um esforço extra de equipes de desenvolvedores, que terão que aprender a usar uma SDK nova a cada migração. Outro problema enfrentado por essas equipes, é o gerenciamento de licenças, pois nem sempre essas SDK estão disponíveis sob licenças “open source” ou livres de royalties. Para quem trabalha com a linha Cortex-M da ARM há uma solução para esses problemas: a biblioteca LibOpenCM3.

O projeto procura facilitar o desenvolvimento de aplicações oferecendo uma API de abstração de hardware comum para diversos  microcontroladores com núcleos ARM Cortex-M0/M0+/M3/M4 de diversos fabricantes. Assim, poucas modificações são necessárias caso uma equipe decida migrar de fabricante, ou mesmo de linha, como de Cortex-M0 para Cortex-M4, por exemplo.

Outro ponto interessante é a licença. Todo código fonte está disponível sob licença LGPLv3, comumente utilizada por bibliotecas, a exemplo do Qt. Assim, a tomada de decisão e as questões legais de distribuição e venda da sua firmware ficam bem definidas.

Características

Revisando o código, percebe-se que cada plataforma suportada possui o seu diretório em include e em library. Nesses diretórios os periféricos suportados são expostos através de seus endereços na header memorymap.h. Cada plataforma possui seu mapeamento, bem como uma implementação de funções de acesso a esses periféricos (gpio, uart, adc, dac, etc), mantendo a assinatura dessas funções iguais entre as implementações, ou pelo menos muito parecidas, a fim de garantir a característica de portabilidade e diminuir o “overhead” em caso de migração.

A documentação da biblioteca é outro grande diferencial. A maioria as funções e definições possuem marcações do doxygen, ferramenta muito comum de documentação de API e SDK, o que é um auxílio extra na hora de programar, pois a maioria dos desenvolvedores possui alguma familiaridade com esse tipo de documentação.

Hands-On com a LibOpencm3

Os fontes podem ser encontrados na conta do github do projeto. No arquivo README encontram-se listados as plataformas suportadas. No momento, por exemplo, são suportadas os seguintes microcontroladores:

  • ST STM32F0xx/F1xx/F2xx/F30x/F37x/F4xx/L0xx/L1xx
  • Atmel SAM3A/3N/3S/3U/3X
  • NXP LPC1311/13/17/42/43
  • Stellaris LM3S  (descontinuado)
  • TI (Tiva) LM4F (continuado como TM4F, compatível com LM4F)
  • EFM32 Gecko (suporte somente do núcleo)
  • Freescale Vybrid VF6xx

Perceba que há suporte a LM4F da Texas Instruments. Assim, vamos gerar um exemplo de pisca-led para rodar na Launchpad.

Primeiro, necessitamos das ferramentas de build. Para instalá-las no Fedora (>23), use o dnf:

Em seguida, clonaremos o repositório de exemplos:

A libopencm3 é instalada como um submódulo dos repositório de exemplos:

Para compilar os exemplos, basta rodar o make na raíz do projeto:

Para gravar o binário no dispositivo, acesse o diretório do exemplo desejado, e rode o make flash:

Nesse momento, deve-se observar que o led D1 pisca e troca de cor. Ao pressionar o botão SW2, o divisor do PLL é alterado, alterando a frequência de clock e, consequentemente, a frequência em que o led pisca. Ao pressionar o botão SW1, o PLL é ignorado e o clock do processador é setado na mesma frequência do cristal da placa (16MHz).

Conclusão

Para quem trabalha no desenvolvimento de firmware, este é um projeto a se considerar. Alguns projetos já o utilizam, inclusive comercialmente, o que demonstra que a maturidade do projeto vem aumentando.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Software » Conheça a LibOpenCM3 para ARM Cortex-M
Talvez você goste:
Comentários:

Deixe um comentário

avatar
  Notificações  
Notificar

Séries

Menu