O presente post tem por objetivo mostrar os primeiros passos para o desenvolvimento de projetos utilizando o soft-processor LEON3. Este post é baseado em um documento interno utilizado pela Universidade do Vale do Itajaí (UNIVALI) e pela Universidade Federal de Santa Catarina (UFSC). Foi desenvolvido pelo Lucas Pereira e pelo Professor Douglas R. Melo. Como existem dicas valiosas, os autores acreditam que vale a pena listá-las no Embarcados. Obrigado Lucas e Douglas.
Segundo a Cobham Gaisler, o processador LEON3 (Figura 1) consiste em um soft-processor sintetizável de 32 bits, descrito em VHDL (VHSIC Hardware Description Language), Rad-Hard, baseado na arquitetura Sparc V8, projetado tanto para uso comercial quanto para aplicações espaciais. Consiste portanto em um processador configurável e ideal para projetos de Sistemas on-Chip (SoC). Opera sobre licença GNU GPL, cujo fonte é aberto e liberado de forma gratuita para uso em pesquisa e educação. Para uso comercial possui um “preço camarada” quando comparado a outros IP-Cores. Abaixo são listadas algumas das principais características desse processador:
- ISA baseado no Sparc V8;
- 7 estágios de pipeline;
- Barramento AMBA-AHB;
- SPARC Reference MMU (SRMMU) com TLB configurável;
- On-Chip debug de instruções e dados;
- Suporte a Symmetric Multi-Processor (SMP);
- Modo Power-down e Clock Gating;
- Até 125MHz de frequência de operação em FPGA e 400MHz em ASIC com tecnologia 0.13 μm;
- Tolerante a faltas e tolerante a SEU na versão paga para aplicações espaciais;
- Possui uma gama de ferramentas de software como compiladores, kernels, simuladores e ferramentas de debug;
- Performance de 1.4DMIPS/MHz, 1.8CoreMark/MHz (gcc -4.1.2).
O processador LEON3 integra a biblioteca GRLIB IP, que por sua vez inclui projetos sintetizáveis para diversas plataformas de fornecedores como Synopsys, Mentor, Xilinx e Altera.
Requisitos de Instalação – Hardware e Software
Você deve ter disponíveis os seguintes itens para começar a trabalhar com o LEON3:
- KIT desenvolvimento (para quem necessita da síntese em FPGA);
- Sistema Operacional: Ubuntu, CentOs, KDE Neon, ou qualquer distribuição derivada que comporte as ferramentas da Intel Altera;
- Intel Altera Quartus Prime (ou Quartus II 13sp1 – versão mais sólida do Quartus II);
- GRLIB Library;
- Bare-C Cross Compile System (BCC).
Instalação – Quartus Prime ou Quartus II
- Acesse o site da Intel Altera, em Support -> Download faça o download do Quartus Prime ou Quartus II;
- Descompacte o arquivo: tar -xvf <arquivo Quartus Prime ou Quartus II>.tar;
- Execute o instalador: ./setup.sh;
- Aceite todos os termos e faça a instalação – uma sugestão, instale o Quartus na pasta /opt do seu computador para melhor organizar as instalações.
Instalação – Compiladores C
- Sempre vale a pena verificar e instalar todos os compiladores C/C++. Execute o seguinte comando (para KDE Neon e Ubuntu, respectivamente):
sudo apt install autoconf ou sudo apt-get install autoconf
Instalação – GRLIB/LEON3
- Acesse este link;
- Faça o seguinte download1: LEON3 and GRLIB IP Library -> LEON3/GRLIB source code -> grlib-gpl-2017.3-b4208.tar.gz;
- Descompacte o arquivo: grlib-gpl-2017.3-b4208.tar.gz na pasta /home/{nome_do_usuario}/ ou crie uma pasta para melhor organizar as instalações;
- (Opcional) Renomeie a pasta criada de grlib-gpl- 1.5.0-b4164 para grlib.
Instalação – GRMON
- Acesse este link;
- Faça o download1 da versão Acadêmica/Avaliação para Linux (Evaluation/Academic) – Aqui cabe uma observação. No tempo de escrita deste artigo, a versão utilizada do GRMON é a de 32 bits. Essa versão funciona sem maiores problemas na plataforma LINUX de 64 bits;
- Descompacte o arquivo baixado na pasta /home/{nome_do_usuario}/;
- (Opcional) Renomeie a pasta criada de grmon-eval- 2.0.88 para grmon.
Instalação – BCC (sparc-elf)
- Acesse este link;
- Faça o download da última versão disponível;
- Descompacte o arquivo na pasta /home/{nome_do_usuario}/;
- (Opcional) Renomeie a pasta criada de sparc-elf-3.4.4-1.0.46.tar.bz2 para sparc-elf.
Configuração das Variáveis de Ambiente
Aqui chegamos em momento muito pessoal para cada usuário Linux – configurar as variáveis de ambiente da sua distribuição. Uma forma para configurar as variáveis de ambiente é descrita a seguir.
- Digite o comando a seguir como super-usuário para editar o arquivo que inicializa as variáveis de
ambiente do seu profile:
sudo gedit ~/.profile
- Adicione as variáveis de ambiente, descritas a seguir, no final do arquivo (INSTALAÇÃO PARA QUARTUS II SP1):
Variáveis de Ambiente:
# Include the ALTERA fpga software PATH="$PATH:$HOME/altera/13.0sp1/quartus/bin/" # Include the ALTERA Modelsim PATH="$PATH:$HOME/altera/13.0sp1/modelsim_ase/linuxaloem" # Include ALTERA Linux path PATH="$PATH:$HOME/altera/13.0sp1/quartus/linux/" # Include the grmon bin PATH="$PATH:$HOME/grmon/linux/bin/" # Include Grmon share PATH="$PATH:$HOME/grmon/linux/share/grmon/" # Include Grmon libraries PATH="$PATH:$HOME/grmon/linux/lib/" # Include grlib PATH="$PATH:$HOME/grlib/bin/" # Include BCC PATH="$PATH:$HOME/sparc-elf/bin/"
- Salve e feche o arquivo;
- Agora vamos editar o seu bash.bashrc. Digite o o comando:
sudo gedit /etc/bash.bashrc
- Adicione as seguintes configurações no fim do arquivo:
# GRMON e QUARTUS export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/altera/13.0sp1/quartus/linux/:$HOME/grmon/linux/lib/"
- Salve e feche o arquivo;
- Recarregue as variáveis de ambiente. Digite o comando a seguir ou reinicie o computador:
source ~/.bashrc
Verifique a JTAG
Caso você não tenha configurado a JTAG, seguem algumas dicas. Como super-usuário crie o arquivo altera-usb-blaster.rules na pasta /etc/udev/rules.d.
- Acrescente as seguinte linhas de código:
ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="666" ATTR{idVendor}=="09fb", ATTR{idProduct}=="6002", MODE="666" ATTR{idVendor}=="09fb", ATTR{idProduct}=="6003", MODE="666" ATTR{idVendor}=="09fb", ATTR{idProduct}=="6010", MODE="666" ATTR{idVendor}=="09fb", ATTR{idProduct}=="6810", MODE="666"
- Salve e feche o arquivo;
- Conecte o kit e verifique o correto funcionamento acessando a pasta:
cd /opt/altera/13.0sp1/quartus/bin
Através do comando ./jtagconfig certifique o corrento funcionamento da jtag.
Conclusão
A princípio o ambiente está configurado. Podem ocorrer variações nos caminhos das variáveis de ambiente, por conta das instalações das aplicações e dos nomes dos arquivos. Dessa forma não esqueça de testar o caminho fim-a-fim (através do comando echo $<variável> para verificar o caminho correto).
Em um segundo momento trataremos mais detalhes sobre a criação do projeto utilizando LEON3 – iremos cada vez mais afundo nesse assunto. Bons estudos.
[1] O nome do arquivo pode variar conforme atualizações











Usei esse processador no meu TCC. Me deu bastante trabalho mas foi uma experiência interessante 🙂