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 Windows.
No caso de um ambiente Linux, o processo é semelhante (e mais fácil).
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. C:\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
- [Digilent ADEPT2 – Utilities] – arquivos “utilities” no site da Digilent (contém o djtgcfg e manuais).
- [Digilent ADEPT2 – Utilities – local] – Cópia Local do “Digilent ADEPT2 – Utilities”
- [djtgcfg.exe] – programa utilizado para programação do FPGA
Executar o comando “cmd” (prompt) no windows e navegar até o diretório onde se encontra o bitstream e o djtgcfg (ex. C:\>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 prompt do DOS:
C:\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“.
Se ocorrer um erro de falta de DLL no windows, instalar e executar o software disponivel em (versao atual é a v2.16.4):
http://store.digilentinc.com/digilent-adept-2-download-only/
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.
- [Cópia local] – Compilador C/C++ – versão para Windows.
- [bcc.pdf] – documentação.
Exemplos de fontes em C++:
Descompactar o arquivo sparc-elf-*-minigw.zip em um local conhecido (ex. C:\Atlys_leon). Copiar o arquivo fonte a ser compilado para esse local conhecido.
Para compilar o arquivo hello.cpp utilize o comando (no prompt):
C:\Alunos\proj_leon> sparc-elf-*-minigw\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 – 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] – [Cópia local – em caso de validade expirada, baixar uma nova versão do site oficial]
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-*\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 (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 C:/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 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
This work is licensed under a Creative Commons Attribution 3.0 Unported License.