LEON3

Esta página tem como objetivo mostrar os passos para configurar um FPGA com uma imagem do processador LEON3 (desenvolvido em VHDL pela empresa Aeroflex Gaisler), e escrever programas para esse processador usando a linguagem C/C++ utilizando o sistema operacional Windows no computador hospedeiro.
No caso de um ambiente Linux, o processo é semelhante (e mais fácil).


1 - FPGA e bitstream

Assumindo que será utilizado a placa Atlys da empresa Digilent, realizar o download do arquivo leon3mp.bit e salvar em uma pasta conhecida.

[leon3mp.bit] - Arquivo bitstream, contendo o LEON3, para a placa Digilent Atlys.
[grlib_README] - README GRLIB/LEON3 para a placa Digilent Atlys.
[Digilent Atlys] - Informções sobre a Digilent Atlys.
> Para gerar sua própria versão do LEON3, seguir as instruções no site da Aeroflex/Gaisler: [LEON/GRLIB]


2 - Carregando o arquivo de configuração (bitstream) no FPGA da Atlys

É necessário usar algum gravador compatível com o FPGA. No caso da Atlys, que usa um FPGA da Xilinx, é possível usar as ferramentas da Xilinx (Impact) ou da própria da Digilent.
A Digilent disponibiliza um executável que é capaz de programar o FPGA em linha de comando, denominado djtgcfg, que faz parte das ferramentas Digilent ADEPT2.

[Digilent ADEPT2] - [Cópia Local] - [djtgcfg.exe]

Executar o prompt de comando no windows e utilizar o comando cd do prompt para entrar no diretório onde se encontra o bitstream e o programa djtgcfg. (ex. C:\>cd Alunos\proj_leon).

Programar o FPGA com o bitstream usando o comando a seguir no prompt:
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] - [Cópia Local]
[hello.cpp][leds.cpp] - Arquivos exemplo para testar o compilador.

Descompactar o arquivo sparc-elf-*-minigw.zip em um local conhecido (ex. C:\>cd Alunos\proj_leon).

Copiar os arquivos exemplo hello.cpp e leds.cpp para o diretório de trabalho criado anteriormente (C:\Alunos\proj_leon).

Para compilar o arquivo hello.cpp utilize o comando (em um prompt de comando):
C:\Alunos\proj_leon> \Atlys_leon\sparc-elf-4.4.2-mingw\bin\sparc-elf-g++.exe hello.cpp -o hello

Pode-se adicionar o caminho do compilador no PATH do sistema ou fazer um arquivo .bat para executar os comandos.


4 - Conecte ao processador via GRMON

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

[GRMON2] - [Cópia Local]

Descompactar o arquivo grmon-eval-*.tar.gz em um local conhecido (ex. C:\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:
C:\Alunos\proj_leon> \Atlys_leon\grmon-eval-2.0.56\win32\bin\grmon.exe -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, usar o comando "load" (notar que o prompt apresentado a seguir é do grmon):
grmon2> load hello

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

"Image C:/Alunos/proj_leon/hello loaded"

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

Deve ser possível ver a saída na tela do programa.


5 - Lather, rinse, repeat

A partir deste ponto o processo será o mesmo, editar o código, compilar, enviar para o processador, rodar e ver que o código está errado =)
Bom trabalho !


Resumo

Considerando que na pasta C:\Alunos\proj_leon estejam os seguintes arquivos:

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

e que na pasta C:\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 C:\Alunos\proj_leon
  • djtgcfg prog -d Atlys -i 0 -f leon3mp.bit
  • \Atlys_leon\sparc-elf-4.4.2-mingw\bin\sparc-elf-g++.exe hello.cpp -o hello
  • \Atlys_leon\grmon-eval-2.0.56\win32\bin\grmon.exe -u -digilent

No prompt do grmon:

  • grmon2>load hello
  • grmon2>run

Esta página é um trabalho de Paulo Villa e Eduardo Bezerra.
Dicas, Sugestões e Correções são sempre bem vindas, envie um email para: prcvilla at gmail dot com
Última atualização: 2014-09-29

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