Processador Nios II – Desenvolvimento: Parte IV

Olá pessoal,

Continuando com o desenvolvimento do processador Nios II embarcado em FPGA neste tópico demonstraremos como criar projeto no Eclipse. Se você não leu o post anterior pode ser encontrado aqui.

4. Criando projeto no Eclipse

O software Nios II contém duas partes principais: aplicações e BSP (Board Support Package).  O primeiro são os programas do usuário e o segundo são códigos específicos de configurações  Nios II. Note-se que a BSP baseia-se na informação a partir do arquivo .sopcinfo. Os códigos das duas parte são compilado e integrado em uma única imagem (arquivo .elf) e carregado para a memória principal do sistema do Nios II. O primeiro passo é abrir a IDE Eclipse:

Figura 01
Figura 01: Eclipse.

A tela abaixo informa qual local será o Workspace dos projetos. O Workspace poderá conter vários projetos, ou seja, pode criar outros projetos utilizando o mesmo Workspace.

Figura 02
Figura 02: Local do Workspace.

Criamos a pasta “firmware” dentro do projeto do Quartus II. A seguir aparecerá a página inicial do Eclipse. Para iniciar um novo projeto clique em “File => Nios II Application and BSP from Template”.

Figura 03
Figura 03: Iniciando o projeto.

Então surge a janela de acordo com a figura abaixo:

Figura 04
Figura 04: Aplicações do Nios II.

No campo “SOPC Information File Name” devemos inserir o arquivo “nios2_project.sopcinfo” onde contém as informações do BSP gerado pelo Qsys. Após importar este arquivo no campo “CPU Name” informará o nome do processador Nios II e em “Project Name” deve inserir o nome do projeto. Veja o exemplo abaixo:

Figura 05:
Figura 05: Configurando as aplicações do Nios II.

Em seguida clica em “Next >”.

Figura 06:
Figura 06: Configurando o Nios II Board Support Package.

No campo “Project name” deverá conter o nome do projeto BSP. Por exemplo, “nios2_bsp” e em seguida clica em “Finish”.

Para organização do projeto é importante que as aplicações e os arquivos BSP estão contidos na mesma estrutura de pasta dentro do projeto.

Veja na figura abaixo os arquivos de aplicações e as configurações de hardware (BSP).

Figura 07
Figura 07: Criado os arquivos.

Na pasta de aplicações (nios2_app) possui um arquivo “hello_word_small.c” onde criaremos o nosso programa em Linguagem C.

Figura 08
Figura 08: Hello Word.

Veja que o Eclipse já criou um trecho de código que poderá ser utilizado pelo programador.

O nosso programa deverá ler o status da chave “i_sw0” e acionar o led (o_led) e o o_led_blink deverá ficar aceso/apagado por 500ms.

// Bibliotecas
#include "sys/alt_stdio.h"
#include "system.h"
#include "altera_avalon_pio_regs.h"

// Rotina Principal
int main()
{ 
 // Loop Inifinito 
 while (1)
 {
    if (IORD_ALTERA_AVALON_PIO_DATA(I_SW0_BASE))        // Lê o status da chave
       IOWR_ALTERA_AVALON_PIO_DATA(O_LED_BASE,1);       // Atribui nível lógico alto para saída o_led
    else
       IOWR_ALTERA_AVALON_PIO_DATA(O_LED_BASE,0);       // Atribui nível lógico baixo para saída o_led

    IOWR_ALTERA_AVALON_PIO_DATA(O_LED_BLINK_BASE,0);    // Atribui nível lógico baixo para saída o_led_blink
    usleep(500000);                                     // Atraso de 500ms
    IOWR_ALTERA_AVALON_PIO_DATA(O_LED_BLINK_BASE,1);    // Atribui nível lógico alto para saída o_led_blink
    usleep(500000);                                     // Atraso de 500ms
 }

 return 0;
}

A arquivo “system.h” são os endereços base de cada componente inserido no projeto do Qsys, veja o exemplo para entrada “i_sw0”:

#define ALT_MODULE_CLASS_i_sw0 altera_avalon_pio
#define I_SW0_BASE 0x3000
#define I_SW0_BIT_CLEARING_EDGE_REGISTER 0
#define I_SW0_BIT_MODIFYING_OUTPUT_REGISTER 0
#define I_SW0_CAPTURE 0
#define I_SW0_DATA_WIDTH 1
#define I_SW0_DO_TEST_BENCH_WIRING 0
#define I_SW0_DRIVEN_SIM_VALUE 0
#define I_SW0_EDGE_TYPE "NONE"
#define I_SW0_FREQ 50000000
#define I_SW0_HAS_IN 1
#define I_SW0_HAS_OUT 0
#define I_SW0_HAS_TRI 0
#define I_SW0_IRQ -1
#define I_SW0_IRQ_INTERRUPT_CONTROLLER_ID -1
#define I_SW0_IRQ_TYPE "NONE"
#define I_SW0_NAME "/dev/i_sw0"
#define I_SW0_RESET_VALUE 0
#define I_SW0_SPAN 16
#define I_SW0_TYPE "altera_avalon_pio"

E o arquivo “altera_avalon_pio_regs.h”  contém as macros de leitura e escrita nos periféricos de IO, exemplo:


if (IORD_ALTERA_AVALON_PIO_DATA(I_SW0_BASE))     // Lê o status da chave 
   IOWR_ALTERA_AVALON_PIO_DATA(O_LED_BASE,1);    // Atribui nível lógico alto na saída o_led

Para compilar o projeto clica em “Project” em em seguida “Build Project”.

Figura 09
Figura 09: Compilar o Projeto.

Após compilar o projeto verifica na aba Console a mensagem “Build Finished”, caso apresenta algum erro o mesmo será informado pelo Console.

No próximo post estaremos gravando os arquivos .sof (FPGA) e .elf (NIOS) no kit de desenvolvimento DE1 demonstrando seu funcionamento.

Até mais!

Anúncios

3 comentários sobre “Processador Nios II – Desenvolvimento: Parte IV

  1. Pingback: Processador Nios II – Desenvolvimento: Parte I | AGE TECHNOLOGY

  2. Ricardo

    Olá. Está apresentando os seguintes erros na compilação no eclipse no meu projeto:

    address 0x7e30 of nios2_soft.elf section `.rwdata’ is not within region `onchip_memory2_0′

    address 0x9b58 of nios2_soft.elf section `.bss’ is not within region `onchip_memory2_0′

    address 0x9b58 of nios2_soft.elf section `.onchip_memory2_0′ is not within region `onchip_memory2_0′

    make: *** [nios2_soft.elf] Error 1 nios2_soft

    nios2_soft.elf section `.text’ will not fit in region `onchip_memory2_0′ nios2_soft

    region `onchip_memory2_0′ overflowed by 31576 bytes

    undefined reference to `__alt_invalid’ nios2_soft

    Sabe me dizer o que pode ser?

    Curtir

    1. Alexandre Magalhães

      Olá Ricardo, Verificar se você alterou o tamanho da memória “ON CHIP MEMORY” e certificar qual família do processador NIOS (Nios II/e, Nios II/s ou Nios II/f). Se a versão do Quartus for Web Ediion sugiro utilizar Nios II/e.

      Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s