LASEC FEELT
COMOCRIARUMPROJETOEMCPARAARM
ltimaAtualizao03/03/2011
Sumrio
CriandoumProjeto.......................................................................................................................3 ProgramaLED_Blink....................................................................................................................16 ConfiguraesparaDebugaroprogramacomoJLink..............................................................19 SobreEsteTutorial......................................................................................................................24 EdioeReviso:.....................................................................................................................24
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.
Pgina 3
Na janela Welcome to the Eclipse IDE for C/C++ Developers, click com o mouse na opo Workbench.
Pgina 4
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
Pgina 5
Click em Browse...
Pgina 6
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
Pgina 7
Aps a execuo destes passos, os arquivos de configurao e inicializao (low_level_init.c, LPC214x.h, startup.S e lpc2148_rom.ld) 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.
Pgina 8
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.
Pgina 9
Na janela Settings -> ARM Yagarto Windows GCC Assembler -> Directories, no item Include Paths (-I), click em Add...
Na janela Settings -> ARM Yagarto Windows GCC Compiler -> Directories, no item Include Paths (-I), click em Add...
Na janela Settings -> ARM Yagarto Windows GCC Linker -> General, no item Script file (-T), click em Browse...
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
Na janela Properties for LED_Blink, na aba Tool Settings -> ARM Yagarto Windows GNU Print Size -> General, marque o check box Hex
Na janela New Source File, no campo Source file: digite main.c e click em Finish
Programa LED_Blink
/* =============================== C/C++ SOURCE FILE ================================ */ /** \file \description Escrever o que a rotina faz \author Nome do autor */ /* ================================================================================== */ //#define __MAIN_C__
/*------------------------------------------------------------------------------------*/ /* INCLUDES */ /*------------------------------------------------------------------------------------*/ #include "LPC214x.h" /*------------------------------------------------------------------------------------*/ /* DEFINITIONS AND MACROS */ /*------------------------------------------------------------------------------------*/ #define PLOCK 0x400 // Frequency Lock (Configura o PLL)
/*------------------------------------------------------------------------------------*/ /* TYPEDEFS, CLASSES AND STRUCTURES */ /*------------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------------*/ /* PROTOTYPES */ /*------------------------------------------------------------------------------------*/ void feed(void); // Utilizado para Alimentar o PLL void Initialize(void); //Inicializa o Microcontrolador /*------------------------------------------------------------------------------------*/ /* GLOBAL VARIABLES */ /*------------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------------*/ /* LOCAL VARIABLES */ /*------------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------------*/ /* FUNCTION IMPLEMENTATION */ /*------------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------------*/ /* Funo que Inicializa o Microcontrolador */ /*------------------------------------------------------------------------------------*/ void Initialize(void) {
// Setting Multiplier and Divider values PLLCFG=0x24; feed(); // Enabling the PLL */ PLLCON=0x1; feed(); // Wait for the PLL to lock to set frequency while(!(PLLSTAT & PLOCK)) ; // Connect the PLL as the clock source PLLCON=0x3; feed(); // Enabling MAM and setting number of clocks used for Flash memory fetch (4 cclks in this case) MAMCR=0x2; MAMTIM=0x4; // Setting peripheral Clock (pclk) to System Clock (cclk) VPBDIV=0x1; } /*------------------------------------------------------------------------------------*/ void feed(void) { PLLFEED=0xAA; // Olhar no datasheet PLLFEED=0x55; }
/*------------------------------------------------------------------------------------*/ /* Funo Principal */ /*------------------------------------------------------------------------------------*/ int main (void) { int j; Initialize(); PINSEL0 |= (1<<8)|(1<<10)|(1<<12)|(1<<31); IODIR0 |= (1<<31); // Configura o pino correspondente ao bit 31 para sada
// Espera
IOCLR0 |= (1<<31);
IOSET0 |= (1<<31); }
Para salvar e compilar o programa pressione os cones indicados pelas setas 1 e 2, como indicado na figura seguinte.
Na janela Debug Configurations, na aba Main, inverta a Barra de Debug\LED_Blink.elf para Debug/LED_Blink.elf
Na janela Debug Configurations, na aba Debugger, no campo GDB command debugger: click em Browse
Na janela Debug Configurations, na aba Commands, no campo Initialize commands, copie o cdigo abaixo e cole no campo correspondente.
#ListeningforcommandsonthisPC'stcpport2331 targetremotelocalhost:2331 #Enableflashdownloadandflashbreakpoints. #Flashdownloadandflashbreakpointsarefeaturesof #theJLinksoftwarewhichrequireseparatelicenses #fromSEGGER. #Selectflashdevice monitorflashdevice=LPC2148 #EnableFlashDLandFlashBPs monitorflashdownload=1 monitorflashbreakpoints=1 #Setgdbservertolittleendian monitorendianlittle #SetJTAGspeedtoadaptive monitorspeedadaptive #Resetthechiptogettoaknownstate monitorreset0 #Setuptarget, #remapfirst64bytestotheinternalflash monitorwriteu160xE01FC040=0x0001 monitorwriteu160xE01FC040 fileoutput.elf load breakmain continue Universidade Federal de Uberlndia Faculdade de Engenharia Eltrica LASEC Pgina 21
Trocar a linha de cdigo file output.elf Debug/nome_do_arquivo.elf, como mostrado na figura seguinte.
por
Na janela Debug Configurations, na aba Common, no campo Display in favorites menu, marque o check box Debug, click em Apply e, para finalizar, em Close
Pronto!... Para debugar o programa, click na seta localizada direita do besouro e, em seguida, click na opo LED_Blink Debug
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