View
127
Download
0
Category
Preview:
Citation preview
Última Atualização 03/03/2011
LASEC FEELT
COMO CRIAR UM PROJETO EM C PARA ARM
UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE ENGENHARIA ELÉTRICA ‐ FEELT
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página2
Sumário Criando um Projeto ....................................................................................................................... 3
Programa LED_Blink .................................................................................................................... 16
Configurações para Debugar o programa com o J‐Link .............................................................. 19
Sobre Este Tutorial ...................................................................................................................... 24
Edição e Revisão: ..................................................................................................................... 24
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página3
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 diretório de trabalho.
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página4
Na janela Welcome to the Eclipse IDE for C/C++ Developers, click com o mouse na opção Workbench.
Na sequência, escolha File -> New -> C Project
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página5
Na janela C Project (Create C project of selected type), na opção Project Name:, crie um projeto chamado LED_Blink, selecione a opção ARM Windows GCC (Yagarto) e click em Finish
Acesse File -> Import...
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página6
Na janela Import click em File System e em Next >
Click em Browse...
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página7
Na janela Import from directory, selecione a pasta Arquivos de Configuração do ARM LPC2148 e click em OK
Na janela File system, selecione o check box do diretório “Arquivos de Configuração do ARM LPC2148” e click em Finish
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página8
Após a execução destes passos, os arquivos de configuração e inicialização (low_level_init.c, LPC214x.h, startup.S e lpc2148_rom.ld) do ARM LPC2148 serão acrescentados ao projeto LED_Blink, como mostra a figura a seguir.
Click com o botão direito do mouse sobre o nome do projeto LED_Blink e escolha a opção Properties.
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página9
Na janela Properties for LED_Blink, click em C/C++ Build e selecione a opção [All configurations].
Click em Settings, na aba Tool Settings click em Target Processor e na opção Processor escolha arm7tdmi, pois o microcontrolador que será utilizado é o LPC2148 que pertence a família ARM7. A opção Thumb deve ser desmarcada.
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página10
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
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página11
Na janela Add directory path click em OK
O resultado da operação é mostrado na figura abaixo
Na janela Settings -> ARM Yagarto Windows GCC Compiler -> Directories, no item Include Paths (-I), click em Add...
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página12
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
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página13
O resultado da operação é mostrado na figura abaixo
Na janela Settings -> ARM Yagarto Windows GCC Linker -> General, no item Script file (-T), click em Browse...
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página14
Click no arquivo lpc2148_rom.ld que se encontra na pasta do projeto LED_Blink e, na sequência, 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 opção – C
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página15
Na janela Properties for LED_Blink, na aba Tool Settings -> ARM Yagarto Windows GNU Print Size -> General, marque o check box Hex
Acesse a opção File -> New -> Source File
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página16
Na janela New Source File, no campo Source file: digite main.c e click em Finish
Programa LED_Blink
Copie e cole o programa abaixo no novo arquivo criado.
/* =============================== 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)
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página17
/*------------------------------------------------------------------------------------*/ /* 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 */ /*------------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------------*/ /* Função 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; } /*------------------------------------------------------------------------------------*/ /* Função 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 saída while(1){ IOSET0 |= (1<<31); // Seta o bit 31 em nível lógico alto
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página18
for (j = 0; j < 1000000; j++ ) asm volatile ("NOP"); // Espera IOCLR0 |= (1<<31); // Seta o bit 31 em nível lógico baixo for (j = 0; j < 1000000; j++ ) asm volatile ("NOP"); // Espera IOSET0 |= (1<<31); // Seta o bit 31 em nível lógico baixo } return(0); } /*------------------------------------------------------------------------------------*/ /* EOF */ /*------------------------------------------------------------------------------------*/
Para salvar e compilar o programa pressione os ícones indicados pelas setas 1 e 2, como indicado na figura seguinte.
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página19
Configurações para Debugar o programa com o J-Link
Acesse a opção Debug Configurations que é exibida por meio de um click na seta localizada à direita do ícone do besouro.
Na Janela Debug Configurations, duplo click em Zylin Embedded debug (Native)
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página20
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…
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página21
No diretório C:\ARM\yagarto\bin selecionar o arquivo “arm-none-eabi-gdb.exe”
Na janela Debug Configurations, na aba Commands, no campo Initialize commands, copie o código abaixo e cole no campo correspondente.
# Listening for commands on this PC's tcp port 2331 target remote localhost:2331 # Enable flash download and flash breakpoints. # Flash download and flash breakpoints are features of # the J‐Link software which require separate licenses # from SEGGER. # Select flash device monitor flash device = LPC2148 # Enable FlashDL and FlashBPs monitor flash download = 1 monitor flash breakpoints = 1 # Set gdb server to little endian monitor endian little # Set JTAG speed to adaptive monitor speed adaptive # Reset the chip to get to a known state monitor reset 0 # Setup target, # remap first 64 bytes to the internal flash monitor writeu16 0xE01FC040 = 0x0001 monitor writeu16 0xE01FC040 file output.elf load break main continue
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página22
Trocar a linha de código file output.elf por Debug/nome_do_arquivo.elf, como mostrado na figura seguinte.
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página23
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 opção LED_Blink Debug
Se a janela Confirm Perspective Switch aparecer, click em Yes
UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página24
Para rodar o programa, click no ícone Resume (F8), como indicado na figura abaixo.
Sobre Este Tutorial
Este tutorial foi elaborado para servir de apoio didático a disciplina de Sistemas Embarcados ministrada na Universidade Federal de Uberlândia. Este material é distribuído gratuitamente para os alunos matriculados na disciplina de Sistemas Embarcados.
Todos os softwares que serão instalados são distribuídos gratuitamente pelos seus respectivos fornecedores, por isso, é expressamente proibida a comercialização destes softwares.
Edição e Revisão: Universidade Federal de Uberlândia Faculdade de Engenharia Elétrica
LASEC – Laboratório de Automação, Servomecanismos e Controle
www.lasec.feelt.ufu.br
STHS Tecnologia
http://www.sths.com.br
Prof. Fábio Vincenzi R. da Silva Eng. Gilson Fonseca Peres Filho
solucoes@sths.com.br
Recommended