Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS [email protected].

25
Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS [email protected]

Transcript of Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS [email protected].

Page 1: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br.

Tutorial de Desenvolvimento uClinux

Jarismar C. Silva

PPGEE/[email protected]

Page 2: 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;

Page 3: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br.

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.

Introdução

Placa Excalibur

Page 5: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br.

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.

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.

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.

Ciclo de desenvolvimento

Visão geral de um projeto:

Page 9: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br.

Ciclo de desenvolvimento

Modelo do sistema e principais dispositivos:

Page 10: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Configuração passo-a-passo

Page 23: Tutorial de Desenvolvimento uClinux Jarismar C. Silva PPGEE/PUCRS jarismar@ee.pucrs.br.

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.

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.

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