Esta página tem como objetivo mostrar os passos para configurar o ambiente de desenvolvimento necessário para carregar um FPGA com uma imagem do processador Leon3 (ver diagrama de blocos), desenvolvido em VHDL pela empresa Gaisler, e programá-lo usando a linguagem C/C++ no ambiente Linux.

Siga esse link para o tutorial para o ambiente Windows.


1 – FPGA e bitstream

Assumindo que será utilizada a plataforma Atlys da empresa Digilent, realizar o download do arquivo leon3mp.bit para seu computador e salvá-lo em uma pasta conhecida (ex. Alunos/proj_leon).

Alguns arquivos e documentação relacionados ao LEON3 e plataforma Atlys:

  • [leon3mp.bit] – arquivo contendo o “bitstream” (arquivo de configuracao) do LEON3 para a plataforma Digilent Atlys.
  • [grlib_README] – README GRLIB/LEON3 para a placa Digilent Atlys.
  • [Digilent Atlys] – Informações sobre a Digilent Atlys.
  • [grlib.pdf] – Descrição das ferramentas e dicas de implementação utilizando a biblioteca GRLIB.
  • Para gerar sua propria versão do LEON3, seguir as instruções no site da Aeroflex/Gaisler: [LEON/GRLIB].
  • [LEON3_install_guide.pdf] – informações detalhadas sobre a configuração (criação) de um processador LEON3.

2 – Configurando o FPGA da Atlys

É necessário usar um gravador compatível com o FPGA. No caso da Atlys, que utiliza um FPGA da Xilinx, é possível usar as ferramentas da Xilinx (Impact) ou da própria Digilent.

A Digilent disponibiliza um executável para configuração do FPGA em linha de comando, denominado djtgcfg. Esse software faz parte das ferramentas Digilent ADEPT2, sendo que algumas dessas ferramentas estão listadas a seguir:

  • [Página Digilent ADEPT2] – site da Digilent
  • [djtgcfg] – programa utilizado para programação do FPGA. Esse programa encontra-se instalado nos computadores do laboratório, e pode ser obtido na página da Digilent para instalação em outros computadores. É necessário realizar o download do “Runtime” e do “Utilities” para a plataforma alvo (nesse caso, Linux).

Em um terminal do Linux, navegar até o diretório onde se encontra o bitstream e o djtgcfg (ex. >cd Alunos/proj_leon).

Alimentar a placa, conectar o cabo USB na porta PROG, e ligar a placa.

Configurar o FPGA com o bitstream usando o comando a seguir no terminal do Linux:

Alunos/proj_leon>djtgcfg prog -d Atlys -i 0 -f leon3mp.bit

Durante o envio do bitstream do LEON3 para o FPGA da placa, será apresentada a mensagem: “Programming device. Do not touch your board. This may take a few minutes…“.

Se a configuração do FPGA for realizada com sucesso, será apresentada a mensagem: “Programming succeeded“.

 


3 – Compilando programas C/C++ para o processador LEON3

Para compilar códigos em C/C++ para o LEON3 é necessário usar o cross-compiler Bare-C Cross-Compiler System (bcc), que é disponibilizado pela Aeroflex/Gaisler:

  • [bcc] – Compilador C/C++ – versões para Linux e Windows.
  • [bcc.pdf] – documentação.

Exemplos de fontes em C++:

  • [hello.cpp] – Exemplo em c++ Hello World!
  • [leds.cpp] – Exemplo em c++ para acesso ao I/O da Atlys.

Descompactar o arquivo sparc-elf-*-minigw.zip em um local conhecido (ex. Atlys_leon/). Copiar o arquivo fonte a ser compilado para esse local conhecido.

Para compilar o arquivo hello.cpp utilize o comando (no prompt):

Alunos/proj_leon> sparc-elf-g++ hello.cpp -o hello

 


4 – Conexão com o processador Leon3 via GRMON

Para estabelecer uma conexão com o LEON3 é necessário usar uma ferramenta que se comunica com o Debug Support Unit (DSU).

A Aeroflex/Gaisler disponibiliza o GRMON2, que pode ser utilizado para obtenção de informações sobre o sistema, e para enviar e executar binários no processador. Procurar usar sempre a versão mais recente disponível no link a seguir (ver “GRMON2 Evaluation/Academic version”):

[GRMON2]

Descompactar o arquivo grmon-eval-*.tar.gz em um local conhecido (ex. Atlys_leon/).

Para se conectar ao DSU do LEON3, colocar a chave SW7 do kit Atlys em ‘1’ e, a seguir, executar no prompt do DOS o programa grmon com os seguintes parâmetros:

Alunos/proj_leon> grmon -u -digilent

Ao se conectar ao LEON3 carregado no FPGA, o computador hospedeiro irá receber via USB as mensagens recebidas do LEON3. As mensagens de depuração do grmon e do LEON3 serão apresentadas na tela do computador hospedeiro (ex. frequência de operação, …).

Para enviar um binário (programa executável), usar o comando load a seguir, assumindo que o grmon está sendo executado na mesma pasta do binário.

ATENÇÃO!! Antes de usar o comando load, posicionar todas as chaves (SW) da placa em 0.

grmon2> load hello

Serão apresentadas mensagens informando o progresso do download e, ao final, será apresentado:

Image Alunos/proj_leon/hello loaded

Para executar no LEON3 o programa desenvolvido em C/C++, usar o comando “run“:

ATENÇÃO!! Após executar o comando run, posicionar chave 7 (SW7) da placa em 1.

grmon2> run

Na tela do computador hospedeiro (PC) deverá ser apresentada a mensagem indicada no “cout” do programa exemplo.


Exemplos de programas para o LEON3 na Atlys

  • [clocktest.cpp] – Exemplo de uso do <time.h> (compila com ambos, g++ e sparc-g++).
  • [OLED/] – Exemplo de uso do OLED.
  • [examples/] – Diversos exemplos: amba, uart, fpu, gpio, timer, i2c, irq, vga.
  • [examples/] – Mais exemplos: c-irq.c, clock, pthread, freertos.

Resumo

Considerando que na pasta Alunos/proj_leon estejam os seguintes arquivos:

  • djtgcfg
  • hello.cpp
  • leds.cpp
  • leon3mp.bit

e que na pasta Atlys_leon/ estejam as seguintes pastas:

  • grmon-eval-2.0.56/
  • sparc-elf-4.4.2-mingw/

A sequencia de comandos a seguir deve ser executada para: carregar o bitstream do Leon3 no FPGA, compilar o fonte em C++, executar o programa monitor (grmon – para comunicação entre o computador hospedeiro e o kit Atlys), realizar o download do executável (programa do usuário) para o kit Atlys, e execução do programa no kit.

No prompt de comando:

  • cd Alunos/proj_leon
  • djtgcfg prog -d Atlys -i 0 -f leon3mp.bit
  • sparc-elf-g++ hello.cpp -o hello
  • grmon -u -digilent

No prompt do grmon:

  • grmon2>load hello
  • grmon2>run

Instalacão dos arquivos para funcionamento do Leon3 na Atlys

Instalacão dos arquivos para funcionamento do Leon3 na Atlys em um computador com linux (Debian 64bits)

Passo 1:
Baixar o arquivo Leon3_Atlys.tar.gz

Passo 2:
Descompactar o arquivo Leon3_Atlys.tar.gz
tar -xfv Leon3_Atlys.tar.gz

Passo 3:
Seguir para o diretório Downloads/Leon3_Atlys/
cd ~/Downloads/Leon3_Atlys

Passo 4:
Instalação dos pacotes necessários. (Necessita da senha de root)
/.Install.sh

 

**************************************************************
Executando um exemplo na Atlys com o processador Leon3
**************************************************************
Passo 1:
Seguir para o diretório Downloads/Leon3_Atlys/Leon3:
cd ~/Downloads/Leon3_Atlys/Leon3

Passo 2:
djtgcfg prog -d Atlys -i 0 -f leon3mp.bit

Obs.: Neste momento a placa deverá estar programada
e com o processador Leon3 operando!

Passo 3:
Agora siga para o diretório Downloads/Leon3_Atlys/exemplos:
cd ~/Downloads/Leon3_Atlys/Leon3/exemplos

Passo 4:
Compilando o hello.cpp:
sparc-elf-g++ hello.cpp -o hello

Passo 5:
Conectando com o processador Leon3:
grmon -u -digilent

Passo 6:
Transferindo o programa compilado para placa:
load hello

Passo 7:
Executar o programa:
run

 


Esta pagina é um trabalho de Alexandro Vanderley dos Santos e Eduardo Bezerra. Dicas, sugestões e correções são sempre bem vindas, envie um email para: alex061275 at gmail dot com
Última atualização: 26-09-2019

Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 Unported License.