24
Ú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

Tutorial -Como Criar Um Projeto Em C Para ARM

Embed Size (px)

Citation preview

Page 1: Tutorial -Como Criar Um Projeto Em C Para ARM

 

  

 

 

 

 

 

 

Ú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 

 

Page 2: Tutorial -Como Criar Um Projeto Em C Para ARM

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 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Page 3: Tutorial -Como Criar Um Projeto Em C Para ARM

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.

Page 4: Tutorial -Como Criar Um Projeto Em C Para ARM

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

Page 5: Tutorial -Como Criar Um Projeto Em C Para ARM

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...

Page 6: Tutorial -Como Criar Um Projeto Em C Para ARM

UniversidadeFederaldeUberlândia–FaculdadedeEngenhariaElétrica‐LASEC Página6 

Na janela Import click em File System e em Next >

Click em Browse...

Page 7: Tutorial -Como Criar Um Projeto Em C Para ARM

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

Page 8: Tutorial -Como Criar Um Projeto Em C Para ARM

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.

Page 9: Tutorial -Como Criar Um Projeto Em C Para ARM

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.

Page 10: Tutorial -Como Criar Um Projeto Em C Para ARM

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

Page 11: Tutorial -Como Criar Um Projeto Em C Para ARM

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...

Page 12: Tutorial -Como Criar Um Projeto Em C Para ARM

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

Page 13: Tutorial -Como Criar Um Projeto Em C Para ARM

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...

Page 14: Tutorial -Como Criar Um Projeto Em C Para ARM

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

Page 15: Tutorial -Como Criar Um Projeto Em C Para ARM

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

Page 16: Tutorial -Como Criar Um Projeto Em C Para ARM

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)

Page 17: Tutorial -Como Criar Um Projeto Em C Para ARM

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

Page 18: Tutorial -Como Criar Um Projeto Em C Para ARM

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.

Page 19: Tutorial -Como Criar Um Projeto Em C Para ARM

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)

Page 20: Tutorial -Como Criar Um Projeto Em C Para ARM

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…

Page 21: Tutorial -Como Criar Um Projeto Em C Para ARM

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 

Page 22: Tutorial -Como Criar Um Projeto Em C Para ARM

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.

Page 23: Tutorial -Como Criar Um Projeto Em C Para ARM

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

Page 24: Tutorial -Como Criar Um Projeto Em C Para ARM

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

[email protected]