tutorial de desenvolvimento uclinux jarismar c. silva ppgee/pucrs [email protected]
TRANSCRIPT
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
32 Mb IDE Flash Disk
CS8900 – 10 Mbps Ethernet
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;
Detalhe Bits
Dados 32
Endereços 32
Registradores 32
ULA 32
Instruções 16
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.
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 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)
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 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
Configuração passo-a-passo
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á-lochmod 0777 hello
Finalmente execute o Aplicativohello.
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