You are on page 1of 27

UNIVERSIDADEFEDERALDEUBERLNDIA FACULDADEDEENGENHARIAELTRICAFEELT

LASEC FEELT

COMOCRIARUMPROJETOEMCPARAARM

ltimaAtualizao13/05/2011

1Edio03/2011

Sumrio
CriandoumProjeto.......................................................................................................................3 ProgramaLED_Blink....................................................................................................................17 ComoImportarumArquivonoProjeto......................................................................................21 ProgramaLED_Blinkcomdelay_ms........................................................................................25 EdioeReviso:.....................................................................................................................27

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 2

1Edio03/2011

Criando um Projeto
Para executar o Eclipse, acesse o Menu Iniciar do Windows e Click em ARM C, no grupo de trabalho ARM C, como mostrado na figura abaixo.

Quando a janela Workspace Launcher surgir, configure o diretrio de trabalho.

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 3

1Edio03/2011

Na janela Welcome to the Eclipse IDE for C/C++ Developers, click com o mouse na opo Workbench.

Na sequncia, escolha File -> New -> C Project

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 4

1Edio03/2011

Na janela C Project (Create C project of selected type), na opo Project Name:, crie um projeto chamado LED_Blink, selecione a opo ARM Windows GCC (Yagarto) e click em Finish. OBS: O nome do projeto no deve possuir espao.

Acesse File -> Import...

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 5

1Edio03/2011

Na janela Import click em File System e em Next >

Click em Browse...

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 6

1Edio03/2011

Na janela Import from directory, selecione a pasta Arquivos de Configurao do ARM LPC2148 e click em OK

Na janela File system, selecione o check box do diretrio Arquivos de Configurao do ARM LPC2148 e click em Finish

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 7

1Edio03/2011

Aps a execuo destes passos, os arquivos de configurao e inicializao (low_level_init.c, LPC214x.h, startup.S, lpc2148_rom.ld, cpu_init.c e cpu_init.h) do ARM LPC2148 sero acrescentados ao projeto LED_Blink, como mostra a figura a seguir.

Click com o boto direito do mouse sobre o nome do projeto LED_Blink e escolha a opo Properties.

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 8

1Edio03/2011

Na janela Properties for LED_Blink, click em C/C++ Build e selecione a opo [All configurations].

Click em Settings, na aba Tool Settings click em Target Processor e na opo Processor escolha arm7tdmi, pois o microcontrolador que ser utilizado o LPC2148 que pertence a famlia ARM7. A opo Thumb deve ser desmarcada.

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 9

1Edio03/2011

Na janela Settings -> ARM Yagarto Windows GCC Assembler -> Directories, no item Include Paths (-I), click em Add...

Na janela Add directory path, click em Workspace...

Na janela Folder selection, marque a pasta LED_Blink e click em OK

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 10

1Edio03/2011

Na janela Add directory path click em OK

O resultado da operao mostrado na figura abaixo

Na janela Settings -> ARM Yagarto Windows GCC Compiler -> Directories, no item Include Paths (-I), click em Add...

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 11

1Edio03/2011

Na janela Add directory path, click em Workspace...

Na janela Folder selection, marque a pasta LED_Blink e click em OK

Na janela Add directory path click em OK

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 12

1Edio03/2011

O resultado da operao mostrado na figura abaixo

Na janela Settings -> ARM Yagarto Windows GCC Linker -> General, no item Script file (-T), click em Browse...

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 13

1Edio03/2011

Click no arquivo lpc2148_rom.ld que se encontra na pasta do projeto LED_Blink e, na sequncia, click em Abrir

Na janela Properties for LED_Blink, na aba Tool Settings -> ARM Yagarto Windows GNU Create Listing -> General, acrescente no campo Other flags a opo C

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 14

1Edio03/2011

Na janela Properties for LED_Blink, na aba Tool Settings -> ARM Yagarto Windows GNU Print Size -> General, marque o check box Hex e, para finalizar, click em OK.

Acesse a opo File -> New -> Source File

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 15

1Edio03/2011

Na janela New Source File, no campo Source file: digite main.c e click em Finish

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 16

1Edio03/2011

Programa LED_Blink
Copie e cole o programa abaixo no novo arquivo criado.
/*------------------------------------------------------------------------------------*/ /* INCLUDES */ /*------------------------------------------------------------------------------------*/ #include "LPC214x.h" #include "cpu_init.h"

/*------------------------------------------------------------------------------------*/ /* FUNCTION IMPLEMENTATION */ /*------------------------------------------------------------------------------------*/ int main (void) { int j; cpu_init(); // Inicializa a CPU do ARM LPC2148 PINSEL1 &= ~((1<<30)|(1<<31)); // O PINSEL1 um registrador que seleciona a funo dos pinos (P0.16-31) do PORT0 e utiliza 2 bits de configurao para cada pino. Neste caso, quando o bit 30 e 31 do registrador igual a 0 (zero), o pino P0.31 configurado como entrada/sada (I/O)- Ver item 7.4.1, denominado Pin Function Select Register no documento LPC214X User Manual.pdf IODIR0 |= (1<<31); // Configura o pino correspondente ao bit 31 para sada

while(1){ IOSET0 = (1<<31); // Coloca o bit 31 em nvel lgico alto for (j = 0; j < 1000000; j++ ) asm volatile ("NOP"); // Espera IOCLR0 = (1<<31); // Coloca o bit 31 em nvel lgico baixo for (j = 0; j < 1000000; j++ ) asm volatile ("NOP"); // Espera } return(0); } /*------------------------------------------------------------------------------------*/ /* EOF */ /*------------------------------------------------------------------------------------*/

Para salvar e compilar o programa pressione os cones indicados pelas setas 1 e 2, como indicado na figura seguinte.

Para transferir o arquivo binrio gerado na compilao para o microcontrolador ARM, consulte o tutorial Gravando e Debugando o Microcontrolador ARM, fornecido no arquivo Aulas.zip.

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 17

1Edio03/2011

Solues de Possveis Problemas


Soluo 01: Caso aparea na aba Console, uma mensagem informando que o arquivo arm-none-eabi-gcc.exe no foi encontrado, como mostrado na figura abaixo, necessrio configurar uma varivel de ambiente no Eclipse ou uma varivel de ambiente no path do windows.

OU

Nestes casos, ou em alguma outra ocorrncia de arquivo no encontrado, para acrescentar variveis de ambiente no ECLIPSE, click com o boto direito do mouse sobre o nome do projeto LED_Blink e escolha a opo Properties.

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 18

1Edio03/2011

Na janela Properties for LED_Blink, click em C/C++ Build e selecione a opo Enviroment.

No campo Configuration, selecione a opo [All Configuration], como mostrado a seguir:

Em seguida, click em Add... Na janela New variable, no campo Name: digite path e no campo Value: digite C:\ARM\yagarto\bin;C:\ARM\yagartotools\bin;

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br Pgina 19

1Edio03/2011

Se ao clicar em OK, o valor do path sofrer alterao, como mostrado no exemplo abaixo, selecione a opo Replace native environment with specified one e em seguida click em Edit...

Na janela Edit variable, substitua novamente o valor do campo Value: por C:\ARM\yagarto\bin;C:\ARM\yagartotools\bin; e click em OK. Finalize clicando no boto OK da janela principal intitulada Properties for LED_Blink.

Compile o programa novamente utilizando o cone: OBS: A informao bash.exe: warning: could not find /tmp, please create! indica que o caminho C:\ARM\yagarto\bin, na varivel de ambiente do windows, no est operando adequadamente. Porm, neste caso, os arquivos com a extenso elf e hex sero criados normalmente.

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 20

1Edio03/2011

Como Importar um Arquivo no Projeto


Para demonstrar como importar arquivos para um projeto, utilizaremos a funo delay_ms do mdulo delay_loop para implementar o tempo de espera do programa LED_Blink criado anteriormente. A vantagem de se utilizar o mdulo delay_loop que ele leva em considerao a frequncia do clock da CPU na hora de gerar o atraso desejado. O mesmo no ocorre quando se utiliza um loop para se executar, um determinado nmero de vezes, uma instruo assembly NOP, pois, esta soluo depende do clock da CPU. Resoluo: Para acrescentar o mdulo delay_loop no projeto LED_Blink, primeiramente, abra o projeto LED_Blink. Para abrir um projeto, click com o boto direito do mouse sobre o nome do projeto que deseja abrir e em seguida click com o boto esquerdo do mouse sobre Open Project. Evitar manter mais do que um projeto aberto para facilitar a alterao, compilao e gravao. Se for necessrio fechar algum projeto, click com o boto direito do mouse sobre o nome do projeto que deseja fechar e em seguida click com o boto esquerdo do mouse sobre a opo Close Project.

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 21

1Edio03/2011

Acesse File -> Import...

Na janela Import click em Next>

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 22

1Edio03/2011

No campo From directory: click em Browse...

Na janela Import from directory selecione a pasta _Mdulos do ARM LPC2148 localizada em C:\ARM\PROGRAMAS\LPC2148\

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br Pgina 23

1Edio03/2011

Na janela Import marque os arquivos delay_loop.c e delay_loop.h e em seguida click em Finish. Caso a pasta mencionada no esteja atualizada, o arquivo Aulas.zip, encontrado na rea de download do site: www.lasec.feelt.ufu.br, contm uma pasta chamada _Mdulos do ARM LPC2148, com os mdulos atualizados.

A figura abaixo mostra os arquivos delay_loop.c e delay_loop.h inseridos no projeto LED_Blink

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 24

1Edio03/2011

As linhas de cdigo destacadas acrescentadas/alteradas no programa LED_Blink.

em

amarelo

foram

Programa LED_Blink com delay_ms


/*------------------------------------------------------------------------------------*/ /* INCLUDES */ /*------------------------------------------------------------------------------------*/ #include "LPC214x.h" #include "cpu_init.h" #include "delay_loop.h" // Inclui o mdulo delay_loop.h /*------------------------------------------------------------------------------------*/ /* FUNCTION IMPLEMENTATION */ /*------------------------------------------------------------------------------------*/ int main (void) { int j; cpu_init(); PINSEL1 &= ~((1<<30)|(1<<31)); // O PINSEL1 um registrador que seleciona a funo dos pinos (P0.16-31) do PORT0 e utiliza 2 bits de configurao para cada pino. Neste caso, quando o bit 30 e 31 do registrador igual a 0 (zero), o pino P0.31 configurado como entrada/sada (I/O)- Ver item 7.4.1, denominado Pin Function Select Register no documento LPC214X User Manual.pdf

IODIR0 |= (1<<31); // Configura pino P0.31 como sada

while(1){ IOSET0 = (1<<31); delay_ms(500); // Espera 500ms IOCLR0 = (1<<31); delay_ms(500); // Espera 500ms } return(0); } /*------------------------------------------------------------------------------------*/ /* EOF */ /*------------------------------------------------------------------------------------*/

Facilidades no Desenvolvimento com Eclipse


O Eclipse possui vrios recursos teis que facilitam o desenvolvimento de software com o objetivo de agilizar este processo. Segue a descrio e mtodos de configurao de alguns destes recursos:

Salvar o projeto automaticamente antes de compilar


Quando so realizadas alteraes em alguma parte do cdigo do projeto em desenvolvimento necessrio salvar todos os arquivos editados antes de compilar, caso contrrio o Eclipse ir compilar o projeto sem as modificaes realizadas.

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 25

1Edio03/2011

Esta configurao poupa muito tempo do programador, porque, muitas vezes, ele descobre que o programa no foi salvo somente aps gravar e rodar o programa compilado com a verso anterior. Para que o Eclipse salve o programa automaticamente antes de compilar, execute os passos descritos abaixo: Window -> Preferences -> General -> Workspace -> Save automatically before build Click na opo Windows, na barra de tarefas do Eclipse e em seguida click em Preferences, como mostrado na figura a seguir.

O prximo passo expandir a rvore de opes do ramo General, selecionar a opo Workspace e marcar o check box com a opo Save automatically before build, como mostrado na figura abaixo.

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 26

1Edio03/2011

Edio e Reviso:
Universidade Federal de Uberlndia Faculdade de Engenharia Eltrica
LASEC Laboratrio de Automao, Servomecanismos e Controle www.lasec.feelt.ufu.br

STHS Tecnologia
http://www.sths.com.br Eng. Gilson Fonseca Peres Filho solucoes@sths.com.br

Prof. Fbio Vincenzi R. da Silva

Agradecimentos

Antes de comear a citar nomes, gostaramos de agradecer a todos de modo geral, pois temos falado com muitas pessoas tanto no meio acadmico quanto no comrcio, indstria e servios sobre os benefcios de se criar material didtico para esta rea de Sistemas Embarcados. A resposta de todos tem sido muito encorajamento e entusiasmo. Obrigado, vocs ajudaram muito. Agradecemos a todos aqueles que contriburam e que ainda contribuiro com exemplos e sugestes para melhorar este material didtico e com apoio financeiro para a construo de kits didticos utilizados nas aulas e laboratrios de pesquisa. Neste sentido, em nome de todos aqueles que j se beneficiaram e daqueles que iro se beneficiar com este material, nossos mais sinceros agradecimentos aos amigos: Universidade Federal de Uberlndia
Faculdade de Engenharia Eltrica FEELT Felipe Adriano da Silva Gonalves (Aluno da FEELT - UFU) Joo Batista Vieira Jnior (Professor da FEELT - UFU) Leandro dos Santos Martins (Aluno de Mestrado da FEELT - UFU) Raony Barrios (Aluno da FEELT UFU)

Prof. Fbio V.R.S. www.lasec.feelt.ufu.br & Eng. Gilson F.P.F. www.sths.com.br

Pgina 27

You might also like