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:
Exemplos de fontes em C++:
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
This work is licensed under a Creative Commons Attribution 3.0 Unported License.