Possíveis Problemas na Aula: Tutorial FPGA NIOS¶
Neste tutorial, usamos o Quartus para criar um projeto contendo um processador NIOS II.
Para tanto, fazermos uso de:
- Plataform Designer (antigo QSys);
- Para instanciar e conectar os IPs do NIOS, memória, comunicação, etc…
- NIOS II Software Build Tools for Eclipse;
- Para programar, em C, o processador e transferir o resultado para a placa FPGA.
1. Plataform Designer¶
Para fazer as conexões entre os módulos do Plataform Designer, deve-se clicar no circulo cinza nos cruzamentos de barramentos ou sinais, conforme mostrado abaixo:
Plataform Designer
A imagem acima é a conexão final utilizada no projeto.
2. NIOS II Software Build Tools for Eclipse¶
2.1 - Lentidão no Eclipse¶
No Linux, o eclipse fica muito lento com a ampulheta durando vários minutos.
O problema está no uso do GTK 3. A solução é a alteração para o GTK 2. Para tanto, temos que editar o eclipse.ini que está dentro do diretório do Quartus 18, faça a busca pelo nome do arquivo e adicione duas linhas antes da linha que contém a opção –launcher.appendVmargs, conforme mostrado abaixo:
--launcher.GTK_version
2
Ver detalhes em: https://stackoverflow.com/questions/65240134/nios-ii-ide-unsuably-slow
2.2 - Não Encontra o ID na Cadeia JTAG¶
Ao transferir o programa em C para o Kit FPGA, através da opção Run Run, pode ocorrer o seguinte erro:
Para resolver, pode-se ignorar a verificação do ID na configuração em Run Run Configurations …, conforme mostrado abaixo:
Caso ocorra o erro de Time Stamp, como mostrado abaixo, basta ignorá-lo na mesma tela de configuração mostrada acima.
2.3 - Não Conecta com o NIOS para Transferir o Programa¶
Garanta que a sequência de trabalho seja:
- Gerar o projeto do NIOS no Plataform Design (antigo QSys);
- Compilar o projeto no Quartus e gravar no Kit FPGA;
- Gerar o BSP, no NIOS II Software Build Tools for Eclipse, e transferir o programa.
3. Problemas com RAM¶
Apesar do instruction_master e data_master serem barramentos diferentes o programa pode não rodar se o barramentos s1 da OnChip Memory não estiver conectado a ambos barramentos.
Ao adicionar uma segunda OnChip Memory, para separar RAM de ROM, pode ocorrer dois problemas ao tentar executar programas no Nios II:
- Erro ao baixar o ELF
- ELF baixado com sucesso porém o programa não faz nada
3.1 - Solução Parte 1 (Platform Designer)¶
- Adicionar uma segunda OnChip Memory (RAM)
- Alterar a primeira OnChip Memory para tipo ROM
- Conectar os dois barramentos em ambas memórias
- Gerar novamente os endereços dos periféricos
3.2 Solução Parte 2 (Linker)¶
- No eclipse entre em BSP Editor
- Abra a aba Linker Script
- Na seção Linker Memory Regions verifique se as memórias foram reconhecidas, caso contrario clique em restore default.
- Na seção Linker Sections Regions clique em restore defaults.
- Verifique se apenas o .text esta na memória ROM (como na imagem abaixo), caso contrario altere manualmente mantendo apenas o .text na ROM.
Tamanho .elf¶
Para saber o tamanho que está sendo gerado para seu arquivo .elf, acesse a pasta que contém o arquivo .elf gerado:
cd ~/intelFPGA_lite/18.1/nios2eds/bin/gnu/H-x86_64-pc-linux-gnu/nios2-elf/bin
OBS: Esse path exemplo é referente ao Quartus 18.1, para outras versões altere o path.
Agora, considerando que o nome do arquivo seja "niosLab2.elf", utilize o seguinte comando:
nios2-elf-size niosLab2.elf
Connection Error/ Java.lang.Exception¶
Solução¶
- No eclipse clique em Run > Run Configurations
- Va na aba Target Connection
- Scrolle para o lado e clique em Refresh Connections
- Clique em apply e depois em Run
- Caso não funcione feche o programador no quartus. Reinicie a placa e grave novamente. Em seguida repita os passos a partir do passo 1.