250 likes | 380 Views
Tutorial de Desenvolvimento uClinux. Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br. Conteúdo. Introdução; Ciclo de desenvolvimento; Configuração do HW Excalibur/Nios; Exemplo de desenvolvimento de SW; Conclusões;. Introdução.
E N D
Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br
Conteúdo • Introdução; • Ciclo de desenvolvimento; • Configuração do HW Excalibur/Nios; • Exemplo de desenvolvimento de SW; • Conclusões;
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.
Introdução • Placa Excalibur
Introdução • Acessórios para suporte ao uClinux CS8900 – 10 Mbps Ethernet 32 Mb IDE Flash Disk 8 Mb Flash 16 Mb RAM
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;
Introdução • Periféricos • Suporte a ethernet (CS8900 – 10 Mbps); • Sockets • Telnet • FTP • Http • 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.
Ciclo de desenvolvimento • Visão geral de um projeto:
Ciclo de desenvolvimento • Modelo do sistema e principais dispositivos:
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;
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.
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; }
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.
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.
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
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
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 .”
Configuração passo-a-passo • Código do Makefile STACKSIZE = 1024 include ../Rules.mak FTARGET = hello all: hello.abself hello.relocbflt $(FTARGET) Makefile ../Makefile SOURCES = hello.c include $(SOURCES:.c=.d) $(FTARGET): hello.relocbflt cp -a $< $@ chmod 0755 $@ clean: rm -f *.[iods] $(FTARGET)
Configuração passo-a-passo • P6: Compile o projeto • Basta digitar o comando make Arquivo final
Configuração passo-a-passo • P7: Baixar o programa para a placa • Visão da ligação em rede Host x Nios
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 login • Logar 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
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;
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á-lo • chmod 0777 hello • Finalmente execute o Aplicativo • hello.
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