tutorial de desenvolvimento uclinux jarismar c. silva ppgee/pucrs [email protected]
TRANSCRIPT
![Page 2: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/2.jpg)
Conteúdo
Introdução; Ciclo de desenvolvimento; Configuração do HW Excalibur/Nios; Exemplo de desenvolvimento de SW; Conclusões;
![Page 3: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/3.jpg)
Introdução
O ambiente uClinux foi portado para a placa Excalibur/Apex pela empresa MICROTRONIX para atender a necessidade de rápido desenvolvimento de aplicações embarcados.
Principais características: V2.4 do Kernel Linux; Bibliotecas para cross-compiling baseadas no
nios-elf-gcc; Suporte a Ethernet; Suporte a NFS e Samba para pontos de
montagem a partir do sistema na placa; Monousuário: apenas root.
![Page 4: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/4.jpg)
Introdução
Placa Excalibur
![Page 5: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/5.jpg)
Introdução
Acessórios para suporte ao uClinux
32 Mb IDE Flash Disk
CS8900 – 10 Mbps Ethernet
8 Mb Flash 16 Mb RAM
![Page 6: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/6.jpg)
Introdução
CPU Nios Processador descrito em VHDL; 32 bits; 512 registradores (acessíveis em janelas de 16); Arquitetura RISC pipeline; A maioria das instruções requer apenas um ciclo
de clock;
Detalhe Bits
Dados 32
Endereços 32
Registradores 32
ULA 32
Instruções 16
![Page 7: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/7.jpg)
Introdução
Periféricos Suporte a ethernet (CS8900 – 10 Mbps);
SocketsTelnetFTPHttp
2 UARTs (RS 232, ttyS0 e ttyS1); Memória ROM (flash) e RAM (SRAM); Timer;
O sistema original pode ser modificado através do SOPC Builder para suportar os demais componentes da placa.
![Page 8: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/8.jpg)
Ciclo de desenvolvimento
Visão geral de um projeto:
![Page 9: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/9.jpg)
Ciclo de desenvolvimento
Modelo do sistema e principais dispositivos:
![Page 10: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/10.jpg)
Ciclo de desenvolvimento
Etapas para alterar o sistema adicionando ou modificando o HW: Abrir o sistema no Quartus II; Iniciar o SOPC Builder; Alterar o mapa de memória, dispositivos, ou
adicionar novos dispositivos; Compilar o sistema no SOPC Builder; Alterar a pinagem do BDF do sistema; Compilar o sistema no Quartus II; Programar o FPGA; Desenvolver o SW para o novo sistema;
![Page 11: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/11.jpg)
Ciclo de desenvolvimento
Etapas para desenvolver SW Desenvolver o programa na máquina host; Compilar e criar arquivo ELF (usar Makefile); Simular utilizando nios-elg-gdb (c/ restrições); Baixar para a placa através de ftp ou; Montar um diretório remoto no sistema rodando
na placa; Logar na placa através de telnet ou nios-run –t; Executar programa; Verificar resultados; Corrigir eventuais erros.
![Page 12: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/12.jpg)
Desenvolvimento de SW
A seguir é apresentado um tutorial passo-a-passo demonstrando como compilar e baixar um programa para ser executado na placa Excalibur.
O programa é um simples helloWord, cujo código é listado abaixo:
int main(){
printf(“Hello Word!\n”);
return 0;
}
![Page 13: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/13.jpg)
Desenvolvimento de SW
Objetivos: Demonstrar o uso do Microtronix LDK; Demonstrar os passos necessários para tornar
um aplicativo disponível; Introduzir as principais etapas do ciclo de
desenvolvimento de SW.
![Page 14: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/14.jpg)
Configuração passo-a-passo
P1 : Abrir o LDK; Utilize o ícone do Desktop
P2 : Alterne para o diretório de projetos; cd niosuserland Dica: O ldk funciona através de um emulador de
linux (cygwin) o shell utilizado é o bash, então é possível utilizar o recurso de auto-completar através da tecla tab.
Tente digitar apenas cd ni e pressionar tab, você verá que o shell completa o comando.
![Page 15: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/15.jpg)
Configuração passo-a-passo
P3: crie um diretório para a aplicação: mkdir aHello [Enter]
Dica: um diretório chamado hello já existe. Alterne para o diretório cd aHello
![Page 16: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/16.jpg)
Configuração passo-a-passo
P3: Escreva o código do aplicativo: Utilize o vi, xemacs (normalmente presentes) ou Utilize um editor de texto do windows
P4: Salve o arquivo: Para editores windows o arquivo deve ser salvo em: C:\cygwin\opt\uclinux\niosuserland\aHello\hello.c
![Page 17: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/17.jpg)
Configuração passo-a-passo
P5: Escreva o makefile para compilar o arquivo: Este ítem é necessário pois as bibliotecas estão
em vários diretórios pelo disco; A seguir é apresentado o makefile para essa
simples aplicação. Você pode ainda copiar o arquivo que está no
hello original e alterar.“cp ../hello/Makefile .”
![Page 18: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/18.jpg)
Configuração passo-a-passo
Código do MakefileSTACKSIZE = 1024include ../Rules.mak
FTARGET = hello
all: hello.abself hello.relocbflt $(FTARGET) Makefile ../Makefile
SOURCES = hello.cinclude $(SOURCES:.c=.d)
$(FTARGET): hello.relocbfltcp -a $< $@chmod 0755 $@
clean:rm -f *.[iods] $(FTARGET)
![Page 19: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/19.jpg)
Configuração passo-a-passo
P6: Compile o projeto Basta digitar o comando make
Arquivo final
![Page 20: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/20.jpg)
Configuração passo-a-passo
P7: Baixar o programa para a placa Visão da ligação em rede Host x Nios
![Page 21: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/21.jpg)
Configuração passo-a-passo
P7: Baixando SW para a placa Descubra o IP da placa: No shell do cygwin digite
Nios-run –t [ENTER][ENTER]A placa deve solicitar o loginLogar como usuário root;Usar o comando /bin/ifconfig
O endereço IP aparece no texto de saída do comando no item eth0 e inet addr.
Alterne ainda as configurações de acesso ao diretório /var/tmp (onde o SW ficará)chmod 0777 /var/tmp
![Page 22: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/22.jpg)
Configuração passo-a-passo
![Page 23: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/23.jpg)
Configuração passo-a-passo
Após obter o endereço IP digite Ctrl+C para fechar o nios-run;
Digite ftp <IP> Logue como usuário operator; Alterne o modo da conexao para binário; Baixe o programa para o diretório tmp; Feche a conexão;
![Page 24: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/24.jpg)
Configuração passo-a-passo
P8: Executar o SW Logue na placa, mas agora via telnet; Utilize o usuário root; Alterne para o diretório /var/tmp Mude os atributos do arquivo hello para poder
executá-lochmod 0777 hello
Finalmente execute o Aplicativohello.
![Page 25: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br](https://reader033.vdocuments.pub/reader033/viewer/2022051413/552fc10c497959413d8c336b/html5/thumbnails/25.jpg)
Considerações finais
O desenvolvimento de SW para o uClinux exige o domínio de várias tecnologias típicas dos sistemas UNIX;
Atividades futuras incluem Desenvolvimento de device drivers para
disposistivos a serem utilizados na placa; Desenvolvimento de uma distribuição do sistema
operacional uClinux (abandonando a distribuição Microtronix de auto custo);
Para saber mais http://www.linuxdevices.com/ http://www.uclinux.org