O primeiro passo para deixar seu ambiente preparado para programar com microcontroladores ARM em especial a familia de Microcontroladores Cortex-M, considerando que você já compreende os principais conceitos envolvidos nesta arquiteutra, é instalar 3 ferramentas principais:

Em cada um dos passos listados acima você verá que existem outros passos relativos, e iremos rever alguns conceitos e informações que são importantes no momento para
se ter sucesso, como a instalação do pacote XDF-ASF da ATMel que irá compor nossos projetos ARM.

Claro para se ter sucesso no uso total dos recursos instalados você irá precisar algo mais que um Arduino DUE ou Arduino Zero, já que para efetuar depuração dos códigos você precisará de uma placa de apoio a depuração como JTag entre outros.

A Placa de Prototipação

O Arduino DUE poderia ser a opção para nosso estudo, ou um Arduino Zero, mas ambos não possuem recurso para depuração, sendo necessário portanto um hardware de apoio a depuração para que possamos avançar adequadamente. Mesmo o Arduino DUE sendo hoje uma das melhores opções para quem deseja iniciar no mundo ARM/Cotext-M.

Eu estarei usando a SAM4S Explained, uma pequena e muito poderosa placa para estudos e aprendizado sobre Arquitetura Cortex-M e a Fámilia SAM4 da ATmel, já que vem equipada com um Cortex-M4, produzido pela ATMel, um SAM4S16C, veja neste link o datasheet deste microcontrolador. Não se assuste com o tamanho do arquivo, realmente é muita informação para quem está iniciando, mas com o tempo será façilmente assimilada.

Além do SAM4S, há também o apoio de um outro microcontrolador o SAM3U4C que roda o Software JLink para executar a tarefa do depurador.

SAM4S XPlained, uma placa de introdução e aprendizado sobre o mundo Cortex-M da ATMel

Bem vamos a instalação.

GCC ARM None EABI

o GCC ARM None EABI é um toolchain baseado no GCC, ou seja um conjunto de ferramentas que permite compilar códigos em C para microcontroladores ARM observando as normas EABI para construção e organização do código gerado em assembly. Além disso este compilador é do tipo Bare-Metal, ou seja gera código para ser excutado diretamente no microcontrolador sem ajuda de um sistema operacional, por isso a presença do termo none, já que o código gerado não é nem para Linux, Windows, MAC e etc.

Fazendo o Download do GCC ARM

Antes de iniciar a instalação, claro, você deve ter que fazer o download da ferramenta GCC para ARM, e esta deve ser obtida clicando em um dos links abaixo, se um dos links apresentar problemas por favor nos avise:

Instalando o GCC ARM

Depois de feito o download, basta descompactar o arquivo e copia-lo em uma pasta que será sua pasta de trabalho, eu irei usar paths referentes à minha instalação que é em um MAC OS X, porém se estiver usando o Windows, basta muar o path para a pasta q ue você escolheu.

Atenção: Evite usar espaços nos nomes de diretório e também de arquivos.

No meu caso o path onde foi instalado o GCC ARM foi: /usr/local/gcc-arm-none-eabi-4_8-2014q3/, se preferir você pode criar um link para a pasta usando um nome curto para o diretório ou renomear o diretório como preferir.

Atenção: Evite colocar este diretório em seu path do SO, evitando assim conflito de versões do GCC caso precise usar mais de uma versão.

Eclipse com CDT

Da mesma forma que você precisou fazer o downloado do GCC, terá que fazer do Eclipse, como para o GCC também há vários releases do Eclipse conforme o sistema operacional usado e também conforme recursos que desejamos, no nosso caso e estaremos usando o Eclipse Luna, este deverá vir já com o plugin CDT, e abaixo estão os links prontos para que você escolha conforme seu sistema operacional.

Veja no Caso do Eclipse você deve escolher se deseja usar a versão 32Bits ou 64Bits conforme o sistema operacional adotado.

Atenção: se perceber pequenas diferenças nas imagens deste tutorial com sua tela não se assuste, estou usando o Eclipse Luna Automotive. uma versão do Eclipse Luna para uso em desenvolvimento de soluções ligadas ao campo de Automação veicular.

Instalando o Eclipse

A Instalaçãodo Eclipse é bem simples, seja qual for o release, basta descompactar o diretório, no meu caso optei em gravar na seguinte pasta: /Application/IDE/Eclipse/Luna/Automotive

Os próximos passos são executados com o eclipse, basta executar o arquivo eclipse que está dentro da pasta descompactada.

Certificando que o Plugin para C/C++ está instalado

Agora que o Eclipse já está funcionando, o procedimento de teste é bem simples, tecle a sequência [CTRL]+[N], e você deve ver uma tela similar a apresentada na imagem abaixo:

Testando se o ambiente está pronto para iniciar instalações, criando um projeto C/C++
Testando se o ambiente está pronto para iniciar instalações, criando um projeto C/C++

Selecione na arvore de opções do wizard, um projeto do tipo C++, a opção certa é C++ Project.

Então será apresentada uma tela como segue:

Escolha agora o template que deseja usar, para este este teste, sugiro ir direto ao template 'Hello World C++ Project'
Escolha agora o template que deseja usar, para este este teste, sugiro ir direto ao template 'Hello World C++ Project'

Nas telas a seguir apenas precione next até a janela que te pergunta pelo caminho do GCC, ainda não iremos compilar um código, então apenas escreva GCC e clique em nexto, já que e não faremos nada além de criar este ‘Hello World’, sem compila-lo, explicarei porque no final desta seção.

Aqui você pode escrever informações relativas a licença de seu projeto, nome do autor, e qual texto será usado para teste do 'Hello World'
Aqui você pode escrever informações relativas a licença de seu projeto, nome do autor, e qual texto será usado para teste do 'Hello World'
Nesta janela você pode escolher as formas de compilação disponibilizada com referência pelo Eclipse CDT, Debug e Release, em um artigo futuro iremos discutir sobre isso.
Nesta janela você pode escolher as formas de compilação disponibilizada com referência pelo Eclipse CDT, Debug e Release, em um artigo futuro iremos discutir sobre isso.
Nesta janela você pode escolher as formas de compilação disponibilizada com referência pelo Eclipse CDT, Debug e Release, em um artigo futuro iremos discutir sobre isso.
Nesta janela você pode escolher as formas de compilação disponibilizada com referência pelo Eclipse CDT, Debug e Release, em um artigo futuro iremos discutir sobre isso.
Aqui você deve espessificar o prefixo do seu compilador, por enquando deixe em branco, e o caminho também.
Aqui você deve espessificar o prefixo do seu compilador, por enquando deixe em branco, e o caminho também.

E para finalizar a criação, o Eclpse poderá lhe será perguntado se quer mudar de pespectiva, já que o Eclipse pode ser usado para várias linguagens e tarefas, como gerenciar seu projeto de código, ele terá diversas pespectiva que lhe apresentam janelas e recursos, e neste momento iremos usar a pespectiva para C/C++, respondendo sim ele mudará isso para você automáticamente.

Pronto nosso primeiro teste está pronto, nosso objetivo aqui é compilar códigos para uso com o microcontroladores ARM, e não iremos testar este código agora, já que para compila-lo teriamos que instalar e configurar um ToolChain para seu ambiente especificamente, aumentando este tutorial, mais ainda.

Veja na janela abaixo o resultado final esperado:

Nosso primeiro projeto de teste criado com o Eclipse, como não informamos um prefixo nem um path para o GCC ele irá usar o padrão de seu sistema operacional, se ouver.
Nosso primeiro projeto de teste criado com o Eclipse, como não informamos um prefixo nem um path para o GCC ele irá usar o padrão de seu sistema operacional, se ouver.

No meu caso tenho no path do sistema operacional um GCC padrão, então ele automáticamente encontrou o GCC e seu Toolchain, e identificou a biblioteca padrão que será usada para compilar nosso código, mas não se preocupe agora, em ter sucesso em compilar um código, apenas certifique-se que o projeto foi criado corretamente, talvez ele se queixe de erros no seu código se não achou o GCC padrão, o que neste caso é perfeitamente aceitável.

Veja nesta janela que ao lado esquerdo temos a arvore do diretório, nesta janela pode vir a ter uma pasta chamada Include, ela somente aparece se o compilador foi identificado corretamente e se há includes para seu projeto, portanto logo que criar seu projeto ela deve aparecer com as bibliotecas padrões de seu compilador.

Já no meio, temos um arquivo aberto que é o código fonte do exemplo criado, e do lado direito temos a janela Outline, que contém a estrutura do código fonte em evidência na janela de arquivos abertos.

Esta é a perspectiva padrão para códigos em C/C++, e você poderá muda-la ou criar novas perpectivas como desejar.

Vamos agora ao próximo passo dentro do que interessa neste tutorial.

GNU ARM Eclipse Plugin

Agora que temos o Eclipse CDT funcionando corretamente no que é necessário para este passo, vamos instalar o GNU ARM Eclipse Plugin, o plugin que irá nos dar recursos básicos e facilitadores para lidar com o desenvolvimento para MicroControladores ARM, depuração com JLink ou OCD.

Lembrando que este plugin é somente para a arquitetura ARM, e pode atender no desenvolvimento com o Arduino DUE e Arduino Zero, porém outros Arduinos baseados na arquiteutra AVR, deverão usar outro plugin, e poderão compartilhar este ambiente. Em proximo post eu irei relatar como fazer a instalação do Plugin AVR para Eclipse.

Instalando o GNU ARM Eclipse Plugin

A instalação do GNU ARM Eclipse Plugin é muito simples, copie o link: http://gnuarmeclipse.sourceforge.net/updates e cole na janela de atualização que deve ser acessada visitano o menu help -> install new software, veja nas imagens abaixo:

Selecionando o menu de instalação de novos Softwares
Selecionando o menu de instalação de novos Softwares.

Cole o link http://gnuarmeclipse.sourceforge.net/updates na caixa de texto, work with: e tecle enter então será feito o download das versões disponíveis, e apresentado uma lista para selção, selecione o conjunto GNU ARM C/C++ Cross Development Tools e precione o botão next.

Tela de instalação de atualizações e novos plugins
Tela de instalação de atualizações e novos plugins.

A seguir lhe será dado detalhes sobre o que será instalado em seu ambiente, click next novamente.

Tela apresentando detalhes do que será instalado
Tela apresentando detalhes do que será instalado.

Em seguida confirme a aceitando os termos de licença, basta selecionar o primeiro item da lista, que agrupa todos os demais e selecionar o botão de seleção I accept the terms of the license agreement, que está no canto inferior direito da janela, acima dos botões de controle, clique no botão Finish para finalizar a instalação.

Tela que solicita o aceite dos termos de licença
Tela que solicita o aceite dos termos de licença.

Ao terminar esta instalação, o Eclipse irá lhe solicitar que reinicialize a interface. Observe que este processo pode demorar alguns minutos conforme a velocidade de sua internet.

Arquivos sendo baixados
Arquivos sendo baixados.

Caso seja questionado pelo fato dos softwares não serem autenticados/assinados, confirme clicando em OK, veja a tela abaixo.

Confirmando autenticidade do pacote
Confirmando autenticidade do pacote.

Pronto, tudo deve correr como citado acima, sem nada a mais ou a menos, portanto seu ambiente já está pronto para que possa criar seu primeiro projeto.

Mas antes, como iremos trabalhar focados no CMSIS e no XDK-ASF (Atmel) precisamos instala-los, veja como proceder nas próximas seções comentadas a baixo.

Instalando pacotes CMSIS

Vamos instalar o Pacote CMSIS conforme oferecido pelo Plugin ARM GNU Eclipse, veja que este pacote é na verdade oferecido pela KEIL que é a ferramenta divulgada oficialmente pela ARM Ltd. como sendo sua indicação para queme deseja trabalhar com Processadores e Microcontroladores ARM.

Para aprender mais sobre a interface de desenvolvimento e outros produtos da KEIL visite o link http://www.keil.com/product/.

Inclusive há um plugin da KEIL para usar o MDK-ARM e uVision com Eclipse, se deseja usar tais ferramentas veja mais detlahes no link: http://www.keil.com/support/man/docs/ecluv/ecluv_install.htm, já que não pretendemos focar nesta ferramenta

A isntalação do pacote CMSIS com o ARM Gu Eclipse é feita clicando no icone destacado na imagema baixo:

Abrindo a pespectiva de instalação de pacotes do CMSIS
Abrindo a pespectiva de instalação de pacotes do CMSIS.

Ao abrir pela primeira vez a pespectiva irá parecer estar vazia, já que ainda não existe nenhum pacote disponível para instalação, para baixar as definições de pacote é preciso atualiza-los clicando no botão atualizar, conforme é destacado na imagem abaixo.

Atualizando as definições disponíveis.
Atualizando as definições disponíveis.

Uma vez solicitado a atualização das definições e pacotes CMSIS, você verá na barra do rodapé do Eclipse quantos porcento faltam para finalizar, e na janela um pouco acima, verá quantos pacotes já foram baixados, veja a imagem abaixo.

Baixando os pacotes, andamento do processo.
Baixando os pacotes, andamento do processo.

O download dos pacotes pode levar de 1 a vários minutos dependendo de sua internet veja a imagem abaixo como ficará a lista de pacotes depois de terminado o download.

Como ficará a lista de pacotes depois de terminado o Download.
Como ficará a lista de pacotes depois de terminado o Download.

Agora selecione na arvore de pacotes a coleção da ATmel, e na janela ao lado selecione o pacote SAM4 DFP, clique no icone acima de um pacote com a setinha para baixo, conforme sinalizado na imagem.

Baixando o pacote SAM4 DFP para ATmel.
Baixando o pacote SAM4 DFP para ATmel.

Você pode ver que há uma aba, para as placas de prototipagem, infelizmente a SAM4S Xplained somente tem a versão profissional, mas vale a pena baixar e estudar seu uso.

A aba Boards.
A aba Boards.

Pronto, agora iremos instalar o pacote XDK-ASF para estudos e teste. Este é o último passo neste tutorial, uma vez terminado, iremos trabalhar outro tutorial demonstrando como criar um projeto com base nesta instalação.

Instalando o pacote XDK-ASF da ATMel

O pacote XDK-ASF é um pacote genérico da ATmel que contem tudo que você precisa para começar a desenvolver com os microcontroladores sejam eles ARM ou AVR. Portanto ele lhe será útil tanto com a linha SAM3 usada no Arduino DUE, como na linha ATMega e ATtiny usada no Arduino UNO e outras variações.

Maiores informações sobre o pacote XDK-ASF pode ser obtido no link http://www.atmel.com/tools/AVRSOFTWAREFRAMEWORK.aspx.

No link a seguir você pode fazer o download direto do pacote XDK-ASF, porém pode lhe ser solicitado que preencha um pequeno formulário, com seu nome, email e outros dados, preencha os dados e receberá um novo link para download.

Para download do pacote clique aqui.

Depois de feito o download do pacote, basta descompacta-lo no próprio workspace, se desejar crie um projeto geral para no Eclipse para este pacote, mas não é uma boa ideia, já que é um pacote muito grande e pode a indexão se tornar pouco eficiente.

Agora que tudo está pronto, no proximo artigo demonstro como criar um projeto baseado no exemplo do QTouch para o SAM4S Xplained e como depura-lo. Aguarde, postarei o link aqui assim que estiver pronto.

Criando um projeto ARM para testar sua instalação.

Após tudo instalado, você irá perguntar, onde eu configuro o GCC e digo qual usar se não o coloquei no Path do meu Sistema Operacional?

Bem, você irá informar a cada vez que criar um novo projeto qual GCC pretente usar, não se preocupe.

Digite a sequência [CTRL]+[N] para que possa abrir a janela de novo projeto.

A primeira vista nada mudou, você terá a listagem de projetos, escolha criar um C++ Project como antes.

Criando meu primeiro projeto ARM C/C++
Criando meu primeiro projeto ARM C/C++.

Em seguida digite o nome que deseja dar ao projeto, e escolha na lista o projeto do tipo Hello World ARM C++ Project, você verá que somente um toolchain está disponível, o Cross ARM GCC.

Dando nome e selecionando o tipo e toolchain para o projeto ARM C/C++
Dando nome e selecionando o tipo e toolchain para o projeto ARM C/C++.

Abaixo segue imagens na sequência para criar o projeto e o resultado obtido, veja que neste exemplo a última imagem mostra o código em assembly, não entrarei em detalhes aqui como é o procedimento para obtenção deste código, isso será feito no próximo artigo.

Informações delicensiamento e configuraçòes iniciais da compilação, não mexa no último campo.
Informações delicensiamento e configuraçòes iniciais da compilação, não mexa no último campo.
Nomes de configurações de referência.
Nomes de configurações de referência.
Nomes de configurações de referência.
Nomes de configurações de referência.

Agora você deve selecionar o nome do toolchain usado, isso irá impactar na construção do path para acesso das ferramentas de compilação.

Selecione GNU Tools for ARM Embbedded Processors (arm-none-eabi-gcc).

Seleção do prefixo do Toolchain.
Seleção do prefixo do Toolchain.

Digite o caminho onde foi instalado/descompacto o toolchain, como explicado acima.

caminho do Toolchain.
Camiho do Toolchain.
Resultado final esperado
Projeto criado, resultado final esperado.

Após a primeira compilação já temos alguns arquivos interessantes, veja que tenho acesso ao código assembly do projeto, porém ainda não fizemos a configuração necessária para gerar tal arquivo, isso somente será explicado no próximo artigo, é um processo simples, mas não queremos deixar este artigo maior ainda.

Resultado final já com arquivo do código assembly gerado.
Resultado final já com arquivo do código assembly gerado.

Um video de todo este processo

Aguarde, postarei o link aqui assim que estiver pronto.

O que aprender agora?


Carlos Delfino

Escrito por:

Analista de Redes Windows e Linux, Analista de Desenvolvimento em diversas linguagens, incluindo para Microcontroladores, Consultor, mais de 20 anos de experiência no mercado de TICs

Google LinkedIn Digg Reddit StumbleUpon

Atualizado em