Introdução à Arty e RISC-V
Visão Geral
O processo de unir a especificação ISA RISC-V com a placa Arty da Digilent pode tornar-se um produto interessante para projetos que desejam de um processador para sistemas de pequeno porte na qual utilizam de um FPGA.
O Arty possui um arcabouço suficiente para atender aos mais diversos projetos, tudo utilizando procedimentos open-sources que permitem as mais diversas combinações e interações com os mais diversos sistemas disponíveis por meio de seus GPIOs, além de ser compatível com a estrutura de um Arduino Uno, compreendendo na adição de seu shields.
O processo de compilação e utilização baseia-se em vários procedimentos na qual constituem por exemplo da compilação da aplicação desejada utilizando o freedom e o freedom-e-sdk explicados ao decorrer do artigo.
Observações: Antes de prosseguir com a execução do artigo, leia atentamente a seção de Requisitos.
Ao final, também será incluído o tutorial de como utilizar o Arduino IDE para compilação da mesma.
Requisitos mínimos para a utilização e Definições
Equipamentos necessários:
- Arty board;
- Olimex cable, vendido separadamente;
- Cabos USB para alimentação e envio de dados para os componentes acima.
Para a realização de qualquer upload para a placa que não seja os projetos demos, deve-se ter em mãos o cabo proprietário Olimex.
Este faz-se necessário pois, após o upload do soft-processor SiFive para a placa, não é possível o envio da aplicação pelos mesmos passos, sendo então necessário este cabo para o envio da aplicação por um meio indireto à placa.
O autor deste artigo não encontrou nenhuma forma de compilação de aplicações sem a necessidade deste cabo Olimex. Caso você tenha encontrado, divulgue aqui para outros leitores possam usufruir desde método :].
Como uma forma de organização, será utilizado um diretório para todos os softwares a serem instalados, e este será denominado $TOOLS, podendo ser definido de acordo com a escolha do usuário. Recomenda-se defini-lo como
[code language=”shell”]
mkdir ~/Tools
export TOOLS=~/Tools
echo $TOOLS
[/code]
Se o diretório for impresso da mesma forma como foi definido, então o diretório para os softwares está pronto para ser utilizado. Relembrando, o usuário definirá como este bem entender.
Configurando o sistema para sua utilização
Instalando o Vivado
O primeiro passo é obter o Vivado, software da Xilinx responsável por realizar a sintetizações de suas placas.
Dessa forma, basta entrar no site da Xilinx (Xilinx Downloads) e baixar o Vivado. Após baixado, para instalar basta realizar o unzip e executar o instalador, com é demonstrado a seguir
[code language=”shell”]
tar -xvf Xilinx_Vivado_SDK_2017.1_0415_1.tar.gz
cd Xilinx_Vivado_SDK_2017.1_0415_1/
./xsetup
[/code]
Observação: na tela de customização de instalação, selecione também o ‘7 Series’ na qual inclui alguns pacotes do Arty.
Com o fim da instalação, deve-se executar também a instalação dos drivers. Para isso, deve ir até a pasta contida no diretório do Vivado já instalado e executar o script ‘install_drivers’.
[code language=”shell”]
cd $VIVADO/2017.1/data/xicom/cable_drivers/lin64/install_script/install_drivers
sudo ./install_drivers
[/code]
Após a realização desses passos, o Vivado estará instalado no sistema com sucesso.
Adicionando as boards da Digilent ao Vivado
Após instalar o Vivado, deve-se adicionar também em seu sistema um pack de informações das placas produzidas pela Digilent com circuitos integrados da Xilinx. Para isso, basta baixar o arquivo que contém as placas (Digilent Boards), copiar a pasta com nome board_files para o diretório de placas do Vivado. Dessa forma o comando referente a este é
[code language=”shell”]
cp -rf board_files $VIVADO/2015.1/data/boards
[/code]
Feito isso, o Vivado estará apto a reconhecer e utilizar as placas da Digilent.
Adicionando os drivers de Olimex e suas Permissões
Tendo o cabo Olimex em mãos, deve-se alterar as regras udev para permitir que esse dispositivo seja acessado pelo grupo plugdev e assim permitir a utilização deste sem o comando sudo
.
Assim, o primeiro passo é abrir o arquivo de regras do udev para a adição das informações do dispositivo.
[code language=”shell”]
sudo vim /etc/udev/rules.d/99-openocd.rules
[/code]
Após aberto, adicionar as seguintes linhas e salvar o arquivo após as alterações.
[code language=”shell”]
# For the Olimex Device
SUBSYSTEM=="usb", ATTR{idVendor}=="15ba",ATTR{idProduct}=="002a", MODE="664", GROUP="plugdev"
SUBSYSTEM=="tty", ATTRS{idVendor}=="15ba",ATTRS{idProduct}=="002a", MODE="664", GROUP="plugdev"
[/code]
Alterado o arquivo de regras, basta adicionar o usuário ao grupo e recarregar as novas regras adicionadas. Isso pode ser realizado utilizando os seguintes comandos.
[code language=”shell”]
sudo usermod -a -G plugdev $(whoami)
sudo udevadm control –reload-rules
[/code]
Instalando os softwares SiFive
Observações: Este passo depende diretamente da sua conexão com a internet, e com isso pode demorar de acordo com esta.
Instalando o Freedom E310 no Flash do FPGA
Para que as aplicações sejam executadas na placa, é preciso adicionar baixar o arquivo de memória e instalá-lo na placa par que o processador RISC-V contido neste arquivo de memória possa ser executado nas aplicações futuras.
O primeiro passo deste processo é baixar o arquivo .mcs que contém os procedimentos básicos a serem instalados no Arty. Este pode ser obtido em Configuration Memory File.
A configuração do FPGA Arty é feito inicialmente pelo Vivado, e para isso, basta seguir os seguintes passos:
- Executar o Vivado;
- Abrir o “Open Hardware Manager” e em seguida o “open target board”;
- Clicar com o botão direito em “FPGA device” e selecionar “Add Configuration Memory Device”;
- Selecione o item cujas informações são:
- Part: n25q128-3.3v;
- Manufacturer: Micron;
- Family: n25q;
- Type: spi;
- Density: 128;
- Width: x1 _x2_x4.
- Clicar em “OK” par a janela que pergunta “Do you want to program the configuration memory device now?”
- Adicionar o arquivo .mcs baixado
- Clicar em “OK”
- Quando terminar o processamento, pressionar o botão “PROG” existente no canto da placa.
Freedom E SDK
Para a compilação de novas aplicações para a placa, é necessário baixar e instalar o compilador Freedom E SDK, específico para a Arty.
O código a seguir realiza o download, configuração e instalação do compilador já especificando a placa Arty como a board fim.
Observações: O processo pode demorar vários minutos, inclusive na execução do comando make tools.
[code language=”shell”]
cd $TOOLS
sudo apt-get install autoconf automake libmpc-dev libmpfr-dev libgmp-dev gawk bison flex texinfo libtool libusb-1.0-0-dev make g++ pkg-config libexpat1-dev zlib1g-dev
git clone –recursive https://github.com/sifive/freedom-e-sdk.git
cd freedom-e-sdk
git pull origin master
git submodule update –init –recursive
make tools BOARD=freedom-e300-arty
[/code]
Realizado a configuração, para realizar qualquer compilação, utiliza-se o comando
[code language=”shell”]
make software PROGRAM=<program_name>
[/code]
A compilação é feita com os projetos existentes dentro da pasta $TOOLS/freedom-e-sdk/software. Nesta pasta já existe vários projetos demo como o hello, led_fade, demo_gpio, dhrystone. Para compilar o demo_gpio por exemplo, basta executar o comando e os arquivos compilados estarão na mesma pasta de projeto.
[code language=”shell”]
make software PROGRAM=demo_gpio
[/code]
Feito a compilação do projeto agora é possível enviar o projeto para a placa utilizando o cabo Olimex já configurado no sistema. Para isso, utiliza-se do comando upload.
[code language=”shell”]
make upload PROGRAM=demo_gpio
[/code]
Utilizando o Arduino IDE para compilação da Arty
O projeto SiFive e Freedom também permite utilizar suas ferramentas de compilação junto com a já conhecida IDE Arduino.
Isso permite uma facilidade maior de sua utilização ao utilizar uma IDE simples e que já é de conhecimento de toda comunidade desenvolvedora de protótipos eletrônicos.
Para utilizar o Arduino IDE, primeiro deve-se tê-lo já instalado em seu computador. Ele pode ser obtido gratuitamente por meio do site Arduino.
Instalado, execute-o e navegue por File e Preferences para adicionar o SiFive no Board Manager URL. Adicione o link a seguir: http://static.dev.sifive.com/bsp/arduino/package_sifive_index.json e a primeira etapa já está concluída.
Adicionado o link, agora é necessário fazer o download do kit de desenvolvimento SiFive para o Arduino, para isso, deve-se ir em Tools, Board, Board Manager, procurar por SiFive e clicar em Install.
Após a instalação, reinicie a IDE e verifique se em Tools, Board existe novas opções de placas. Selecione SiFive OpenOCD como o Programmer.
Feito os passos acima, você está apto para compilar suas aplicações por meio do Arduino IDE. Faça o teste do Blink para verificar a corretude dos passos.