SlideShare uma empresa Scribd logo
1 de 44
Marcos AV Silva.
2013
 Estudar a arquitetura SPARC V8 da qual é
derivado o processador de 32 bits LEON3 da
empresa Aeroflex Gaisler.
 Elaboração do fluxo gravação do processador
LEON3 em kits de desenvolvimento da
ALTERA DE-2 e D0-nano.
 Testar a versão de Linux SnapGear no LEON3.
 O processador LEON3 é um modelo VHDL
sintetizável de um processador de 32-bits
compatível com a arquitetura SPARC V8. O
modelo é altamente configurável, e
particularmente apropriado para projetos do
tipo system-on-a-chip (SOC).
O processador tem as seguintes características:
 Conjunto de instruções do SPARC V8;
 Pipeline avançado de 7-estágios;
 Multiplicação e divisão em Hardware;
 Unidades de MAC;
 FPU de alto desempenho;
 Cache de instruções e de dados separadas
(Arquitetura Harvard);
 AMBA-2.0 AHB bus interface;
 Suporte a debug on-chip;
 Symmetric Multi-processor support (SMP);
 Até 125 MHz em FPGA e 400 MHz em ASIC
com tecnologia de 0.13µM;
 Extremamente configurável;
 Grande gama de ferramentas de software:
compiladores, kernels, simuladores e
monitores de debug.
 O LEON3 é totalmente parametrizável através de
configurações em seu VHDL, sem alterar nenhum
pacote de configuração global. Assim, é possível
instanciar vários núcleos em um mesmo projeto, com
diferentes configurações. As características do LEON3
podem ser definidas através de uma ferramenta
gráfica, facilitando a configuração do processador. A
ferramenta de configuração pode alterar todas as
características do processador, e também periféricos
on-chip como memórias e interfaces de rede.
 O processador LEON3 pode ser sintetizado com as
mais conhecidas ferramentas como Synplify,
Synopsys DC e Cadence RC. Este pode ser sintetizado
também com as ferramentas Xilinx XST e Altera
Quartus, tanto por scripts ou utilizando as interfaces
gráficas da própria ferramenta.
A Aeroflex Gaisler desenvolve IPs em VHDL, A maioria dos
“cores” são distribuídos dentro da biblioteca de IPs GRLIB,
proporcionando uma plataforma de desenvolvimento de
SoCs. O uso da versão LEON3/GRLIB é feita sob licença
GPL.
A GRLIB traz scripts automáticos para as ferramentas de
projeto da Synopsys, Synplify, Cadence, Mentor, Actel,
Altera, Lattice, e Xilinx e para os simuladores Modelsim,
Ncsim, Aldec, Sonata e GHDL.
A GRLIB é centrada no barramento, ou seja, assume-se
que a maioria dos IP “cores” serão conectados através do
barramento on-chip. O barramento AMBA-2.0 AHB/APB
foi o escolhido como o barramento comum devido a sua
popularidade no mercado (ARM) e por causa da sua
documentação vasta e ausência de restrições de licença.
O LEON3FT é uma versão tolerante a falhas do
processador LEON3. Ele foi projetado para
operações no ambiente espacial, e inclui
funcionalidades para detectar e corrigir erros do
tipo SEU ( single event upset) em memórias RAM
on-chip. O LEON3FT suporta a maioria das
funções do LEON3 e adiciona as seguintes
funcionalidades:
 Register file SEU error-correction de até 4 errors
por 32-bit word;
 Cache memory error-correction de até 4 errors
por 32-bit word;
 Tratamento de erros autônomo e transparente ao
software;
 Nenhum impacto no timing devido a detecção or
correção de erros.
As seguintes características do LEON3 não
são suportadas no LEON3FT:
 RAM de rascunho local (instruções ou dados);
 “Cache locking”.
 LRR (least recently replaced).
 O LEON3FT core é distribuído junto com uma
versão especial FT da GRLIB.
A implementação de um sistema com o
LEON3 é tipicamente feita usando uma das
“templates” de projetos fornecidas, e pode
ser dividida nas seguintes partes:
 Configuração do projeto usando xconfig;
 Simulação e “test-bench”;
 Síntese e “place & route”;
 Geração do “bitstream”;
 Configuração da FPGA na placa.
As “templates” de projeto se localizam no
diretório designs/ da GRLIB e se baseiam em três
arquivos:
 config.vhd: um pacote em VHDL contendo os
parâmetros de configuração do projeto, gerado
automaticamente pela ferramenta GUI xconfig.
 leon3mp.vhd: contém a entidade “top-level” e
instâncias de todos IP cores.
 testbench.vhd: testbench com memória externa,
emulando a placa FPGA.
Para ativarmos o GUI xconfig digitamos
make xconfig
na linha de comando. A seguir podemos ver
a ferramenta GUI xconfig:
Após a configuração do projeto, podemos
realizar as próximas etapas do processo
dentro da ferramenta de projeto Quartus da
ALTERA, ou digitarmos make quartus na
linha de comando.
Após a geração do “bit-stream” podemos
programar a FPGA através do Quartus ou
utilizando o comando make quartus-prog-
fpga. Esta etapa irá descarregar o arquivo
leon3mp.sof para a FPGA através da interface
JTAG.
Inicialmente trabalhamos com o kit DE-2 que possui as seguintes características:
- Altera Cyclone II 2C35 FPGA com 35000 LEs (elementos lógicos)
- Dispositivo de configuração serial Altera (EPCS16) para Cyclone II 2C35
- USB Blaster (built in on board) para programação e controle API
- Suporta modo JTAG e AS
- SDRAM de 8Mbyte (1M x 4 x 16)
- SRAM de 512K byte(256K X16)
- Memória flash de 4Mbyte (upgradeable to 4Mbyte)
- Socket para cartão SD
- 4 chaves tipo Push-button
- 18 chaves DPDT
- 9 LEDs cor verde
- 18 LEDs cor vermelho
- Módulo LCD 16 x 2
- Oscilador de 50MHz e 27MHz para fontes externas de clock
- CODEC de Áudio de 24-bit (Qualidade CD) com linha de entrada, saída e para
microfone
- VGA DAC (10-bit alta-velocidade triple DACs) com conector VGA de saída
- TV Decoder (NTSC/PAL) e conector de entrada para TV
- Controlador Ethernet 10/100 com socket. Controlador USB Mestre/Escravo com
conectores USB tipo A e tipo B.
- Transceiver RS-232 e conector de 9-pinos
- Conector PS/2 mouse/teclado
- Transceiver IrDA
- Dois Headers de expansão de 40-pinos com diodo de proteção
O segundo kit é o DE0-nano, que possui as seguintes características:
- Cyclone® IV EP4CE22F17C6N FPGA
22,320 Logic elements (LEs)
594 Memória Embarcada (Kbits)
66 Multipliers Embarcados 18 x 18
4 PLLs
153 FPGA I/O
- Circuito USB-Blaster on-board
- EPCS16 - Dispositivo de configuração serial
- Dois Headers 40-pin (GPIOs) - Dois pinos de energia 5V, dois pinos de
energia 3.3V e quatro pinos de terra
- Um Header de 16-pin, fornece 16 pinos I/O digital e 8 de análogicos
- 32MB SDRAM
- 2Kb I2C EEPROM
- 8 Leds verdes
- 2 push-buttons
- 4 dip-swiches
- Acelerometro ADXL345 com alta resolução (13-bit)
- NS ADC128S022, 8 Canais, 12-bit Conversor A/D50 ksps para 200 ksps
- Oscilador de 500Mhz
- USB mini-AB port (5V)
- Dois pinos DC (5V)
- Dois pinos Energia Externa (3.6-5.7V)
No desenvolvimento de aplicações em
linguagem C foi utilizado a IDE Eclipse
juntamente com o plugin fornecido pela
Aeroflex Gaisler que possui um cross-
compiler da linguagem C/C++ para LEON e
ERC32 e permite o debug e simulação do
hardware (GRMON).
Uma outra maneira de debug do LEON3 é
utilizando a ferramenta GRMON stand-alone.
Ela se conecta através da porta JTAG dos kits
de desenvolvimento e promove a interação
com a FPGA. Para ativar o GRMON
digitamos:
grmon -altjtag -u -nb -nosram
O GRMON é um monitor de depuração para o
processador LEON3. O GRMON se comunica com a
unidade de suporte a depuração (debug support unit
- DSU) do LEON3, permitindo depuração não intrusiva
do sistema. O GRMON tem as seguintes
características:
 Leitura/Escrita em todos os registradores e
memórias;
 Carregamento e execução de aplicações;
 Gerencia de breakpoint e watchpoint;
 Conexão remota com o depurador GDB;
 Definições de comandos pelo usuário;
 Suporte para interface plug-and-play LEON3/GRLIB;
 Interfaces para depuração Serial, Ethernet, JTAG, PCI e
USB.
Dentro do GRMON podemos transferir um
código compilado para o processador LEON3
através do comando
load <arqbin>
e executá-lo através do comando:
run
Foram escritos códigos em linguagem C para
acessar alguns periféricos das placas DE-2 e
DE0-nano, tais como chaves ON/OFF, push-
buttons, LEDs, DISPLAY LCD e GPIO (32 bits).
A template de LEON3 para placa DE-2 possui
duas GPIO que estão conectadas via
barramento AMBA APB ao processador. A
seguir vemos uma parte do código que
acessa uma dessas portas:
printf("GPIO_0 ADDR = %08Xn",pio);
pio[2] |= 0x01FF; // Set direction of
line 1 to output
pio[1] &= ~0x1FF; // Set line 1 low
printf("pio_0 din = %08Xn",pio[0]);
printf("pio_1 dout = %08Xn",pio[1]);
printf("pio_2 dir = %08Xn",pio[2]);
printf("pio_3 imask = %08Xn",pio[3]);
printf("pio_4 level = %08Xn",pio[4]);
printf("pio_5 edge = %08Xn",pio[5]);
printf("pio_6 bypass = %08Xn",pio[6]);
printf("pio_7 reserved = %08Xn",pio[7]);
printf("pio_8 irqmap = %08Xn",pio[8]);
O Display LCD da placa DE-2 é compatível com
HD44780 e também foi utilizado, a seguir vemos
um pouco do código de uso do LCD:
/* * init display LCD * */
send_ctrl_LCD(0x38);
send_ctrl_LCD(0x0F);
send_ctrl_LCD(0x01);
send_ctrl_LCD(0x06);
/* * send data * */
send_data_LCD(' ');
send_data_LCD(' ');
send_data_LCD(' ');
send_data_LCD('D');
send_data_LCD('H');
Os push-buttons e os LEDs foram acessados
conforme o código abaixo:
while(key2 != 0x00){
pio[1] ^= 0x1FF;
// pisca LEDs
key2 = pio[0] & 0x0200;//testa
se foi pressionado
for(i = 0; i <= 1000000;i++){}
//delay
}
Nesta etapa vamos utilizar a versão 2.6.x do
kernel Linux SnapGear que tem suporte para
MMU, este kernel vem do kernel.org com
patches específicos para o LEON3 e drivers
adicionais para a GRLIB.
Nós baixamos e instalamos a toolchain do
LEON GLibC Cross-compiler (linux-x86 host)
do site:
O processo de instalação deve ser feito no
diretório /opt e o path (/opt/sparc-[uc]-
linux-3.x.x/bin) deve ser adicionado para a
variável PATH do shell.
A instalação da distribuição SnapGear pode
ser feita em qualquer lugar dentro do
diretório home:
mkdir ~/SnapGear
cd ~/SnapGear
tar -xjf
/path/to/dist/snapgear-2.6p42.tar.bz2
O SnapGear traz uma interface GUI
semelhante aos utilitários do kernel Linux.
Nessa GUI é possível selecionar o
processador, versão de Linux, biblioteca C e
qual aplicações a serem incluídas no root file
system (imagem ROMFS). É também possível
configurar os parâmetros de boot loader e o
kernel Linux. Para ativar a GUI é só digitar:
make xconfig
Após ter configurado o kernel e as aplicações,
é possível compilar o SnapGear usando o
comando:
make
Após a compilação e build do kernel, duas imagens
foram geradas:
 image.flashbz : imagem PROM que irá descomprimir
o kernel e as aplicações na RAM e rodar tudo de lá.
 image.dsu: imagem RAM para fins de download e
execução no hardware final usando o DSU ou os
simuladores.
Para transferir as imagens geradas para os
kits DE-2 e D0-nano, utilizamos o GRMON.
grmon -altjtag -u -nb -nosram
A seguir digitamos o comando:
load image.dsu
Para executarmos o kernel baixado digitamos:
run
 Os resultados com a placa DE-2 não foram
satisfatórios.
 Recomendamos o uso do kit D0-nano.
© 2013 MAVS

Mais conteúdo relacionado

Mais procurados

Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1Alcides Costa
 
Webinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoWebinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoEmbarcados
 
PHP e PostgreSQL - Dois Elefantes trabalham muito mais !
PHP e PostgreSQL - Dois Elefantes trabalham muito mais !PHP e PostgreSQL - Dois Elefantes trabalham muito mais !
PHP e PostgreSQL - Dois Elefantes trabalham muito mais !William Felipe
 
Laboratório configuração de um túnel ponto a ponto vpn gre
Laboratório configuração de um túnel ponto a ponto vpn greLaboratório configuração de um túnel ponto a ponto vpn gre
Laboratório configuração de um túnel ponto a ponto vpn greNuno Teixeira
 
Arquitetura pentium
Arquitetura pentiumArquitetura pentium
Arquitetura pentiumEMSNEWS
 
Roteamento avançado em Linux - GTER
Roteamento avançado em Linux - GTERRoteamento avançado em Linux - GTER
Roteamento avançado em Linux - GTERHelio Loureiro
 
Linux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCLinux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCEmbarcados
 

Mais procurados (20)

Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1
 
Slides apresentação 12 erm
Slides  apresentação 12 ermSlides  apresentação 12 erm
Slides apresentação 12 erm
 
Webinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoWebinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcado
 
Roteiro exp9
Roteiro exp9Roteiro exp9
Roteiro exp9
 
Ko 7 kdp-06
Ko 7 kdp-06Ko 7 kdp-06
Ko 7 kdp-06
 
Eripi2018 p4 tutorial
Eripi2018 p4 tutorialEripi2018 p4 tutorial
Eripi2018 p4 tutorial
 
PHP e PostgreSQL - Dois Elefantes trabalham muito mais !
PHP e PostgreSQL - Dois Elefantes trabalham muito mais !PHP e PostgreSQL - Dois Elefantes trabalham muito mais !
PHP e PostgreSQL - Dois Elefantes trabalham muito mais !
 
Assembly
AssemblyAssembly
Assembly
 
Resumo x86
Resumo x86Resumo x86
Resumo x86
 
Laboratório configuração de um túnel ponto a ponto vpn gre
Laboratório configuração de um túnel ponto a ponto vpn greLaboratório configuração de um túnel ponto a ponto vpn gre
Laboratório configuração de um túnel ponto a ponto vpn gre
 
Arquitetura pentium
Arquitetura pentiumArquitetura pentium
Arquitetura pentium
 
Trabalho protocolo profibus
Trabalho protocolo profibusTrabalho protocolo profibus
Trabalho protocolo profibus
 
Roteamento avançado em Linux - GTER
Roteamento avançado em Linux - GTERRoteamento avançado em Linux - GTER
Roteamento avançado em Linux - GTER
 
Linguagem assembly
Linguagem assemblyLinguagem assembly
Linguagem assembly
 
Relatório final
Relatório finalRelatório final
Relatório final
 
Ac16 conjunto de instruções v2
Ac16   conjunto de instruções v2Ac16   conjunto de instruções v2
Ac16 conjunto de instruções v2
 
Cpic
CpicCpic
Cpic
 
Profibus pa
Profibus paProfibus pa
Profibus pa
 
Linux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCLinux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoC
 
Android Fat Binaries
Android Fat BinariesAndroid Fat Binaries
Android Fat Binaries
 

Semelhante a Configuração e desenvolvimento de sistemas embarcados com LEON3

Semelhante a Configuração e desenvolvimento de sistemas embarcados com LEON3 (20)

Blackfin
BlackfinBlackfin
Blackfin
 
Microcontroladores pic
Microcontroladores picMicrocontroladores pic
Microcontroladores pic
 
Palestra omap
Palestra omapPalestra omap
Palestra omap
 
MICROCONTROLADORES E PLATAFORMAS DE PROTOTIPAGEM
MICROCONTROLADORES E PLATAFORMAS DE PROTOTIPAGEMMICROCONTROLADORES E PLATAFORMAS DE PROTOTIPAGEM
MICROCONTROLADORES E PLATAFORMAS DE PROTOTIPAGEM
 
Microcontroladores AVR
Microcontroladores AVRMicrocontroladores AVR
Microcontroladores AVR
 
CompactLogix
CompactLogixCompactLogix
CompactLogix
 
Seminario pic
Seminario picSeminario pic
Seminario pic
 
AVR
AVRAVR
AVR
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptx
 
Microcontroladores x microprocessadores
Microcontroladores x microprocessadoresMicrocontroladores x microprocessadores
Microcontroladores x microprocessadores
 
Webinar: Projeto de Hardware: ASIC e FPGA
Webinar: Projeto de Hardware: ASIC e FPGAWebinar: Projeto de Hardware: ASIC e FPGA
Webinar: Projeto de Hardware: ASIC e FPGA
 
10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladores
 
PSoC
PSoCPSoC
PSoC
 
Arduino
ArduinoArduino
Arduino
 
Corpo relatorio
Corpo relatorioCorpo relatorio
Corpo relatorio
 
Internet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentosInternet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentos
 
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux Systems
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux SystemsLinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux Systems
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux Systems
 
Arduino: Soluções para o mundo moderno
Arduino: Soluções para o mundo modernoArduino: Soluções para o mundo moderno
Arduino: Soluções para o mundo moderno
 
Treinamento arduino (1).pptx
Treinamento arduino (1).pptxTreinamento arduino (1).pptx
Treinamento arduino (1).pptx
 
Conceito Ethernet Sniffer em Visual Studio C#
Conceito Ethernet Sniffer em Visual Studio C#Conceito Ethernet Sniffer em Visual Studio C#
Conceito Ethernet Sniffer em Visual Studio C#
 

Último

Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3filiperigueira1
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptxVagner Soares da Costa
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptxVagner Soares da Costa
 
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdfPROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdfdanielemarques481
 
Tipos de Cargas - Conhecendo suas Características e Classificações.pdf
Tipos de Cargas - Conhecendo suas Características e Classificações.pdfTipos de Cargas - Conhecendo suas Características e Classificações.pdf
Tipos de Cargas - Conhecendo suas Características e Classificações.pdfMarcos Boaventura
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxFlvioDadinhoNNhamizi
 
Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMdiminutcasamentos
 

Último (7)

Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
 
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdfPROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
 
Tipos de Cargas - Conhecendo suas Características e Classificações.pdf
Tipos de Cargas - Conhecendo suas Características e Classificações.pdfTipos de Cargas - Conhecendo suas Características e Classificações.pdf
Tipos de Cargas - Conhecendo suas Características e Classificações.pdf
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
 
Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPM
 

Configuração e desenvolvimento de sistemas embarcados com LEON3

  • 2.  Estudar a arquitetura SPARC V8 da qual é derivado o processador de 32 bits LEON3 da empresa Aeroflex Gaisler.  Elaboração do fluxo gravação do processador LEON3 em kits de desenvolvimento da ALTERA DE-2 e D0-nano.  Testar a versão de Linux SnapGear no LEON3.
  • 3.  O processador LEON3 é um modelo VHDL sintetizável de um processador de 32-bits compatível com a arquitetura SPARC V8. O modelo é altamente configurável, e particularmente apropriado para projetos do tipo system-on-a-chip (SOC).
  • 4. O processador tem as seguintes características:  Conjunto de instruções do SPARC V8;  Pipeline avançado de 7-estágios;  Multiplicação e divisão em Hardware;  Unidades de MAC;  FPU de alto desempenho;  Cache de instruções e de dados separadas (Arquitetura Harvard);  AMBA-2.0 AHB bus interface;
  • 5.  Suporte a debug on-chip;  Symmetric Multi-processor support (SMP);  Até 125 MHz em FPGA e 400 MHz em ASIC com tecnologia de 0.13µM;  Extremamente configurável;  Grande gama de ferramentas de software: compiladores, kernels, simuladores e monitores de debug.
  • 6.  O LEON3 é totalmente parametrizável através de configurações em seu VHDL, sem alterar nenhum pacote de configuração global. Assim, é possível instanciar vários núcleos em um mesmo projeto, com diferentes configurações. As características do LEON3 podem ser definidas através de uma ferramenta gráfica, facilitando a configuração do processador. A ferramenta de configuração pode alterar todas as características do processador, e também periféricos on-chip como memórias e interfaces de rede.  O processador LEON3 pode ser sintetizado com as mais conhecidas ferramentas como Synplify, Synopsys DC e Cadence RC. Este pode ser sintetizado também com as ferramentas Xilinx XST e Altera Quartus, tanto por scripts ou utilizando as interfaces gráficas da própria ferramenta.
  • 7.
  • 8. A Aeroflex Gaisler desenvolve IPs em VHDL, A maioria dos “cores” são distribuídos dentro da biblioteca de IPs GRLIB, proporcionando uma plataforma de desenvolvimento de SoCs. O uso da versão LEON3/GRLIB é feita sob licença GPL. A GRLIB traz scripts automáticos para as ferramentas de projeto da Synopsys, Synplify, Cadence, Mentor, Actel, Altera, Lattice, e Xilinx e para os simuladores Modelsim, Ncsim, Aldec, Sonata e GHDL. A GRLIB é centrada no barramento, ou seja, assume-se que a maioria dos IP “cores” serão conectados através do barramento on-chip. O barramento AMBA-2.0 AHB/APB foi o escolhido como o barramento comum devido a sua popularidade no mercado (ARM) e por causa da sua documentação vasta e ausência de restrições de licença.
  • 9.
  • 10. O LEON3FT é uma versão tolerante a falhas do processador LEON3. Ele foi projetado para operações no ambiente espacial, e inclui funcionalidades para detectar e corrigir erros do tipo SEU ( single event upset) em memórias RAM on-chip. O LEON3FT suporta a maioria das funções do LEON3 e adiciona as seguintes funcionalidades:  Register file SEU error-correction de até 4 errors por 32-bit word;  Cache memory error-correction de até 4 errors por 32-bit word;  Tratamento de erros autônomo e transparente ao software;  Nenhum impacto no timing devido a detecção or correção de erros.
  • 11. As seguintes características do LEON3 não são suportadas no LEON3FT:  RAM de rascunho local (instruções ou dados);  “Cache locking”.  LRR (least recently replaced).  O LEON3FT core é distribuído junto com uma versão especial FT da GRLIB.
  • 12. A implementação de um sistema com o LEON3 é tipicamente feita usando uma das “templates” de projetos fornecidas, e pode ser dividida nas seguintes partes:  Configuração do projeto usando xconfig;  Simulação e “test-bench”;  Síntese e “place & route”;  Geração do “bitstream”;  Configuração da FPGA na placa.
  • 13. As “templates” de projeto se localizam no diretório designs/ da GRLIB e se baseiam em três arquivos:  config.vhd: um pacote em VHDL contendo os parâmetros de configuração do projeto, gerado automaticamente pela ferramenta GUI xconfig.  leon3mp.vhd: contém a entidade “top-level” e instâncias de todos IP cores.  testbench.vhd: testbench com memória externa, emulando a placa FPGA.
  • 14. Para ativarmos o GUI xconfig digitamos make xconfig na linha de comando. A seguir podemos ver a ferramenta GUI xconfig:
  • 15. Após a configuração do projeto, podemos realizar as próximas etapas do processo dentro da ferramenta de projeto Quartus da ALTERA, ou digitarmos make quartus na linha de comando.
  • 16. Após a geração do “bit-stream” podemos programar a FPGA através do Quartus ou utilizando o comando make quartus-prog- fpga. Esta etapa irá descarregar o arquivo leon3mp.sof para a FPGA através da interface JTAG.
  • 17. Inicialmente trabalhamos com o kit DE-2 que possui as seguintes características: - Altera Cyclone II 2C35 FPGA com 35000 LEs (elementos lógicos) - Dispositivo de configuração serial Altera (EPCS16) para Cyclone II 2C35 - USB Blaster (built in on board) para programação e controle API - Suporta modo JTAG e AS - SDRAM de 8Mbyte (1M x 4 x 16) - SRAM de 512K byte(256K X16) - Memória flash de 4Mbyte (upgradeable to 4Mbyte) - Socket para cartão SD - 4 chaves tipo Push-button - 18 chaves DPDT - 9 LEDs cor verde - 18 LEDs cor vermelho - Módulo LCD 16 x 2 - Oscilador de 50MHz e 27MHz para fontes externas de clock - CODEC de Áudio de 24-bit (Qualidade CD) com linha de entrada, saída e para microfone - VGA DAC (10-bit alta-velocidade triple DACs) com conector VGA de saída - TV Decoder (NTSC/PAL) e conector de entrada para TV - Controlador Ethernet 10/100 com socket. Controlador USB Mestre/Escravo com conectores USB tipo A e tipo B. - Transceiver RS-232 e conector de 9-pinos - Conector PS/2 mouse/teclado - Transceiver IrDA - Dois Headers de expansão de 40-pinos com diodo de proteção
  • 18.
  • 19. O segundo kit é o DE0-nano, que possui as seguintes características: - Cyclone® IV EP4CE22F17C6N FPGA 22,320 Logic elements (LEs) 594 Memória Embarcada (Kbits) 66 Multipliers Embarcados 18 x 18 4 PLLs 153 FPGA I/O - Circuito USB-Blaster on-board - EPCS16 - Dispositivo de configuração serial - Dois Headers 40-pin (GPIOs) - Dois pinos de energia 5V, dois pinos de energia 3.3V e quatro pinos de terra - Um Header de 16-pin, fornece 16 pinos I/O digital e 8 de análogicos - 32MB SDRAM - 2Kb I2C EEPROM - 8 Leds verdes - 2 push-buttons - 4 dip-swiches - Acelerometro ADXL345 com alta resolução (13-bit) - NS ADC128S022, 8 Canais, 12-bit Conversor A/D50 ksps para 200 ksps - Oscilador de 500Mhz - USB mini-AB port (5V) - Dois pinos DC (5V) - Dois pinos Energia Externa (3.6-5.7V)
  • 20.
  • 21. No desenvolvimento de aplicações em linguagem C foi utilizado a IDE Eclipse juntamente com o plugin fornecido pela Aeroflex Gaisler que possui um cross- compiler da linguagem C/C++ para LEON e ERC32 e permite o debug e simulação do hardware (GRMON).
  • 22.
  • 23. Uma outra maneira de debug do LEON3 é utilizando a ferramenta GRMON stand-alone. Ela se conecta através da porta JTAG dos kits de desenvolvimento e promove a interação com a FPGA. Para ativar o GRMON digitamos: grmon -altjtag -u -nb -nosram
  • 24.
  • 25. O GRMON é um monitor de depuração para o processador LEON3. O GRMON se comunica com a unidade de suporte a depuração (debug support unit - DSU) do LEON3, permitindo depuração não intrusiva do sistema. O GRMON tem as seguintes características:  Leitura/Escrita em todos os registradores e memórias;  Carregamento e execução de aplicações;  Gerencia de breakpoint e watchpoint;  Conexão remota com o depurador GDB;  Definições de comandos pelo usuário;  Suporte para interface plug-and-play LEON3/GRLIB;  Interfaces para depuração Serial, Ethernet, JTAG, PCI e USB.
  • 26. Dentro do GRMON podemos transferir um código compilado para o processador LEON3 através do comando load <arqbin> e executá-lo através do comando: run
  • 27. Foram escritos códigos em linguagem C para acessar alguns periféricos das placas DE-2 e DE0-nano, tais como chaves ON/OFF, push- buttons, LEDs, DISPLAY LCD e GPIO (32 bits). A template de LEON3 para placa DE-2 possui duas GPIO que estão conectadas via barramento AMBA APB ao processador. A seguir vemos uma parte do código que acessa uma dessas portas:
  • 28. printf("GPIO_0 ADDR = %08Xn",pio); pio[2] |= 0x01FF; // Set direction of line 1 to output pio[1] &= ~0x1FF; // Set line 1 low printf("pio_0 din = %08Xn",pio[0]); printf("pio_1 dout = %08Xn",pio[1]); printf("pio_2 dir = %08Xn",pio[2]); printf("pio_3 imask = %08Xn",pio[3]); printf("pio_4 level = %08Xn",pio[4]); printf("pio_5 edge = %08Xn",pio[5]); printf("pio_6 bypass = %08Xn",pio[6]); printf("pio_7 reserved = %08Xn",pio[7]); printf("pio_8 irqmap = %08Xn",pio[8]);
  • 29. O Display LCD da placa DE-2 é compatível com HD44780 e também foi utilizado, a seguir vemos um pouco do código de uso do LCD: /* * init display LCD * */ send_ctrl_LCD(0x38); send_ctrl_LCD(0x0F); send_ctrl_LCD(0x01); send_ctrl_LCD(0x06); /* * send data * */ send_data_LCD(' '); send_data_LCD(' '); send_data_LCD(' '); send_data_LCD('D'); send_data_LCD('H');
  • 30. Os push-buttons e os LEDs foram acessados conforme o código abaixo: while(key2 != 0x00){ pio[1] ^= 0x1FF; // pisca LEDs key2 = pio[0] & 0x0200;//testa se foi pressionado for(i = 0; i <= 1000000;i++){} //delay }
  • 31. Nesta etapa vamos utilizar a versão 2.6.x do kernel Linux SnapGear que tem suporte para MMU, este kernel vem do kernel.org com patches específicos para o LEON3 e drivers adicionais para a GRLIB. Nós baixamos e instalamos a toolchain do LEON GLibC Cross-compiler (linux-x86 host) do site:
  • 32.
  • 33. O processo de instalação deve ser feito no diretório /opt e o path (/opt/sparc-[uc]- linux-3.x.x/bin) deve ser adicionado para a variável PATH do shell. A instalação da distribuição SnapGear pode ser feita em qualquer lugar dentro do diretório home: mkdir ~/SnapGear cd ~/SnapGear tar -xjf /path/to/dist/snapgear-2.6p42.tar.bz2
  • 34. O SnapGear traz uma interface GUI semelhante aos utilitários do kernel Linux. Nessa GUI é possível selecionar o processador, versão de Linux, biblioteca C e qual aplicações a serem incluídas no root file system (imagem ROMFS). É também possível configurar os parâmetros de boot loader e o kernel Linux. Para ativar a GUI é só digitar: make xconfig
  • 35.
  • 36. Após ter configurado o kernel e as aplicações, é possível compilar o SnapGear usando o comando: make
  • 37. Após a compilação e build do kernel, duas imagens foram geradas:  image.flashbz : imagem PROM que irá descomprimir o kernel e as aplicações na RAM e rodar tudo de lá.  image.dsu: imagem RAM para fins de download e execução no hardware final usando o DSU ou os simuladores.
  • 38. Para transferir as imagens geradas para os kits DE-2 e D0-nano, utilizamos o GRMON. grmon -altjtag -u -nb -nosram
  • 39.
  • 40. A seguir digitamos o comando: load image.dsu
  • 41. Para executarmos o kernel baixado digitamos: run
  • 42.
  • 43.  Os resultados com a placa DE-2 não foram satisfatórios.  Recomendamos o uso do kit D0-nano.