quarta-feira, 28 de outubro de 2015

Preparando-se para programar os microcontroladores ARM Cortex M0 e M4

Programar um processador ARM Cortex M0 ou M4 é, aparentemente, uma tarefa complicada. Muitos detalhes são necessários mas, o ideal, é começar da forma mais simples. A figura abaixo mostra um fluxo básico de desenvolvimento de aplicações para o processador ARM Cortex M0 o qual é o mesmo para o modelo M4.
Fluxo básico de desenvolvimento
Programa-se, idealmente, através de código C, C++ ou Assembly. Uma vez compilado, o código gerado dever ser preparado para a carga no processador através de um linker. Esse último processo toma as saídas dos compiladores mais arquivos de configuração, que veremos adiante, e gera o arquivo final de carga ou executável o qual possui formatos diferentes conforme o uso: simulação, carga da memória flash ou depuração.
Para iniciarmos o entendimento desse fluxo ao mesmo tempo que entendemos o funcionamento dos processadores ARM Cortex M0 e M4, precisamos de algumas ferramentas ou, no jargão da área: um toolchain. Muitas das ferramentas de desenvolvimento ARM Cortex são proprietárias o que dificulta o seu uso para aplicações não comerciais. Existe porém, um conjunto de ferramentas abertas desenvolvida para processadores ARM que é totalmente compatível com eles e plenamente utilizável.
O site GCC ARM Embedded (https://launchpad.net/gcc-arm-embedded) possui o conjunto completo de compiladores e ferramental necessário para compilar e gerar aplicações para carga, simulação e depuração desses processadores. Como a maioria dos fornecedores de microcontroladores que utilizam esses processadores possuem suas ferramentas baseadas em MS-Windows, utilizaremos o toolchain para esse SO.

Baixemos a versão executável para win32 conforme a figura acima e, após sua conclusão, instalemo-la.  


Siga os passos de instalação e, ao final, não esqueça de ligar a opção "Add path to environment variable" conforme indicado abaixo.


Feche as janelas e abra uma nova janela de linha de comando e execute o comando arm-none-eabi-gcc -v. Se tudo correu bem, a resposta deve ser semelhante à mostrada abaixo:


Uma pausa aqui. O último comando retornou uma informação importante: Target: arm-none-eabi .

O compilador GCC pode gerar executáveis para diversas arquiteturas como: x86, ARM v4/v5/v6/v7 entre outras. Em computadores pessoais, GNU GCC é um compilador voltado para aplicações escritas para LINUX X86 para PC. Quando desenvolvemos em uma plataforma como por exemplo MS-Windows para uma plataforma destino distinta como, por exemplo, ARM Cortex, temos um ferramental denominado cross compiler. Devido à diversidade de arquiteturas diferentes toolchains existem. A convenção para a denominação desses ferramentais é a seguinte:

arch [-vendor] [-os] - eabi

  • arch: corresponde à arquitetura destino (no caso aqui: ARM)
  • vendor: corresponde ao fornecedor do ferramental
  • os: refere-se ao sistema operacional destino
  • eabi: significa Embedded Application Binary Interface ou Interface Binária de Aplicações Embarcadas

Dessa forma, estamos trabalhando com um toolchain de arquitetura destino ARM, sem fornecedor e sem sistema operacional e para aplicações binárias embarcadas: arm-none-eabi.

Finalmente, por estarmos em ambiente de desenvolvimento em MS-Windows, precisamos de algumas ferramentas auxiliares nativas do ambiente Linux. Uma publicação dessas ferramentas suficiente para o que precisamos é a Minimalist GNU for Windows cujo download está em http://sourceforge.net/projects/mingw/files/ . Baixemos o instalador e procedamos à instalação.
Certifique-se de selecionar as opções mingw-development-kit e msys-base na tela do MinGW Intallation Manager. 



 Selecione Apply changes na no menu Intallation.


E novamente Apply.


Ao final da instalação, feche as janelas e abra uma nova janela de linha de comando. Direcione ao diretório de executáveis do MinGW através do comando: cd C:\MinGW\msys\1.0\bin.
Execute os comandos: make -v e dd --version. Uma resposta semelhante à abaixo deve aparecer:


Por último, acrescente o diretório C:\MinGW\msys\1.0\bin à variável PATH do Windows.

REFERÊNCIAS:
"The Definitive Guide to the ARM Cortex-M0",Joseph Yiu
https://launchpad.net/gcc-arm-embedded
https://en.wikipedia.org/wiki/Application_binary_interface
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.subset.swdev.abi/index.html
http://www.mingw.org/

Nenhum comentário:

Postar um comentário