Tutorial de uClinux sobre NIOS II●   Mario Alexandre Gazziro●   Lirio Onofre Baptista de Almeida●   Coordenador: Jan Frans...
OrganizaçãoParte 1: Demonstração com binários já preparadosParte 2: Compilação do NIOS II e síntese da FPGAParte 3: Acrésc...
Parte 1: Demonstração com binários já preparadosArquivos utilizados:●   DE2_NIOS_HOST_MOUSE_VGA_time_limited.sof●   zImage...
Parte 1: Demonstração com binários já preparadosuClinux/Nios II                                                    Shell i...
Parte 1: Demonstração com binários já preparadosRealizar a configuração da rede TCP/IP ajustando o IP/>ifconfig eth0 192.1...
Parte 1: Demonstração com binários já preparadosAjuste de rota (via gateway) e habilitação de servidores de ftp e telnetDe...
Parte 1: Demonstração com binários já preparadosMontagem de pasta em computador externo via NFS(sobre uma pasta exportada ...
Parte 1: Demonstração com binários já preparadosInicialização do ambiente de janelas Nano-X/>nano-X &/>nanowm &Visualizaçã...
Parte 1: Demonstração com binários já preparadosCriação dos devices para comunicação com o controlador de I/O/>mknod /dev/...
Parte 2: Compilação do NIOS II e síntese da FPGAArquivos utilizados:●   DE2_NIOS_HOST_MOUSE_VGA.ZIP●   Avalon_VGA_Controll...
Parte 3: Acréscimo do controlador de I/O ao                               barramento AVALONentity pio eigen is       port ...
Parte 3: Acréscimo do controlador de I/O ao                           barramento AVALONArquivos utilizados:●   pio_eigen.v...
Parte 3: Acréscimo do controlador de I/O ao                            barramento AVALON●   Component Group: DIPTERALAB●  ...
Parte 3: Acréscimo do controlador de I/O ao                           barramento AVALON●   No Quartus, com o projeto abert...
Parte 4: Instalação do cross-compilador nios2gccArquivos utilizados:●   nios2gcc.tar.bz2●   nios2libs.tar.bz2Roteiro:●   E...
Parte 5: Compilação do kernel do uClinux com recursos básicosArquivos utilizados:●   uClinux-dist-20070130.tar.gz●   uClin...
Parte 5: Compilação do kernel do uClinux com recursos básicos●   Selecionar kernel versão 2.6.x, excluir a Libc e ajustar ...
Parte 6: Compilação do kernel com suporte a rede                        e uso de framebufferRoteiro:●   Para entrar nas co...
Parte 6: Compilação do kernel com suporte a rede                         e uso de framebuffer●   Dentro da configuração do...
Parte 6: Compilação do kernel com suporte a rede                        e uso de framebuffer●   Nas configurações do kerne...
Parte 6: Compilação do kernel com suporte a rede                        e uso de framebuffer    if you will use PS/2 mouse...
Parte 6: Compilação do kernel com suporte a rede                  e uso de framebuffer–   MicroWindows --->    [*] MicroWi...
Parte 7: Instalação do módulo de controle de I/O junto ao kernelArquivos utilizados:●   nios2rootfs.tar.bz2●   nios2-uClin...
Parte 7: Instalação do módulo de controle de I/O junto ao kernelRoteiro:●   Extrair o arquivo nios2rootfs.tar.bz2 na área ...
Parte 7: Instalação do módulo de controle de I/O junto ao kernel●   Ainda no mesmo diretorio, editar o arquivo Kconfig acr...
Parte 8: Compilação cruzada de aplicativo para acessar                      o I/O via módulo do kernelArquivos utilizados:...
Parte 8: Compilação cruzada de aplicativo para acessar                      o I/O via módulo do kernel#define DIR_FILE "/d...
Referências●   DE2 Kit information: http://users.ece.gatech.edu/~hamblen/DE2/●   SASH Shell: http://members.tip.net.au/~db...
Upcoming SlideShare
Loading in...5
×

Tutorial uclinux

807
-1

Published on

Tutorial de uClinux sobre NIOS II
Para Kit Terasic Altera DE-2 35

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
807
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Tutorial uclinux

  1. 1. Tutorial de uClinux sobre NIOS II● Mario Alexandre Gazziro● Lirio Onofre Baptista de Almeida● Coordenador: Jan Frans Willem Slaets DIPTERALAB – IFSC – USP www.dipteralab.ifsc.usp.br/novo
  2. 2. OrganizaçãoParte 1: Demonstração com binários já preparadosParte 2: Compilação do NIOS II e síntese da FPGAParte 3: Acréscimo do controlador de I/O ao barramento AVALONParte 4: Instalação do cross-compilador nios2gccParte 5: Compilação do kernel do uClinux com recursos básicosParte 6: Compilação do kernel com suporte a rede e uso de framebufferParte 7: Instalação do módulo de controle de I/O junto ao kernelParte 8: Compilação cruzada de aplicativo para acessar o I/O via módulo do kernel
  3. 3. Parte 1: Demonstração com binários já preparadosArquivos utilizados:● DE2_NIOS_HOST_MOUSE_VGA_time_limited.sof● zImage● testeRoteiro:Entrar no "Nios II Command Shell" e mudar para o diretório onde se encontram os arquivos acima.Carregamento do arquivo SOF (SRAM OBJECT FILE)>nios2-configure-sof DE2_NIOS_HOST_MOUSE_VGA_time_limited.sofEntrar em outro interpretador "Nios II Command Shell"Carregamento da imagem do kernel e do sistema de arquivos raiz>nios2-download -g zImage_de2_vgaBoot do uClinux via console JTAG>nios2-terminalO uClinux vai apresentar as mensagens de boot através do terminal do NiosIIO símbolo /> indica o prompt do interpretador de comandos SASH (Standalone Shell) usado no uClinux
  4. 4. Parte 1: Demonstração com binários já preparadosuClinux/Nios II Shell invoked to run file: /etc/rcAltera Nios II support (C) 2004 Microtronix Datacom Ltd. Command: hostname uClinux Command: mount -t proc proc /procsetup_arch: No persistant network settings signature at 003F0000 Command: mount -t sysfs sysfs /sysBuilt 1 zonelists. Total pages: 2032 input: AT Raw Set 2 keyboard as /class/input/input0Kernel command line: Command: mount -t usbfs none /proc/bus/usbPID hash table entries: 32 (order: 5, 128 bytes) Command: mkdir /var/tmpConsole: colour dummy device 80x25 Command: mkdir /var/logDentry cache hash table entries: 1024 (order: 0, 4096 bytes) Command: mkdir /var/runInode-cache hash table entries: 1024 (order: 0, 4096 bytes) Command: mkdir /var/lockMemory available: 5452k/8192k RAM, 0k/0k ROM Command: mkdir /var/emptyMount-cache hash table entries: 512 Command: ifconfig lo 127.0.0.1NET: Registered protocol family 16 Command: route add -net 127.0.0.0 netmask 255.0.0.0 loNET: Registered protocol family 2 Command: cat /etc/motdIP route cache hash table entries: 1024 (order: 0, 4096 bytes) Welcome toTCP established hash table entries: 1024 (order: 0, 4096 bytes) ____ _ _TCP bind hash table entries: 1024 (order: 0, 4096 bytes) / __| ||_|TCP: Hash tables configured (established 1024 bind 1024) _ _| | | | _ ____ _ _ _ _TCP reno registered | | | | | | || | _ | | | | / /fb0: Altera frame buffer device, using 600K of video memory | |_| | |__| || | | | | |_| |/ altps2 : base 80682010 irq 9 | _______|_||_|_| |_|____|_/_/io scheduler noop registered | |io scheduler deadline registered (default) |_|Serial: JTAG UART driver $Revision: 1.3 $ttyJ0 at MMIO 0x806810f0 (irq = 1) is a jtag_uart For further information check:<DM9KS> I/O: 806810f8, VID: 90000a46 http://www.uclinux.org/mice: PS/2 mouse device common for all miceTCP cubic registered Execution Finished, ExitingNET: Registered protocol family 1NET: Registered protocol family 17 Sash command shell (version 1.1.1)Freeing unused kernel memory: 896k freed (0x9a4000 - 0xa83000) />
  5. 5. Parte 1: Demonstração com binários já preparadosRealizar a configuração da rede TCP/IP ajustando o IP/>ifconfig eth0 192.168.180.116/>ifconfigeth0 Link encap:Ethernet HWaddr 00:07:ED:00:00:00 inet addr:192.168.180.116 Bcast:192.168.180.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:247 (247.0 B) TX bytes:0 (0.0 B) Interrupt:6 Base address:0x10f8lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
  6. 6. Parte 1: Demonstração com binários já preparadosAjuste de rota (via gateway) e habilitação de servidores de ftp e telnetDefinição da rota padrão/>route add default gw 192.168.180.1/>routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface192.168.180.0 * 255.255.255.0 U 0 0 0 eth0127.0.0.0 * 255.0.0.0 U 0 0 0 lodefault 192.168.180.1 0.0.0.0 UG 0 0 0 eth0Inicialização do servidor de FTP e TELNET embutido no BusyBox/>inetd &>ftp 192.168.180.116Conectado a 192.168.180.116.220- Welcome to the uClinux ftpd!220 uClinux FTP server (GNU inetutils 1.4.1) ready.Usuário (192.168.180.116:(none)): ftp331 Guest login ok, type your name as password.Senha:230 Guest login ok, access restrictions apply.ftp>>telnet 192.168.180.116Sash command shell (version 1.1.1)/>
  7. 7. Parte 1: Demonstração com binários já preparadosMontagem de pasta em computador externo via NFS(sobre uma pasta exportada na máquina 192.168.180.122 chamada home/nios2)/>mkdir /mnt/nfs/>mount -t nfs -n -o nolock,rsize=1024,wsize=1024 192.168.180.122:/home/nios2 /mnt/nfsInicialização do servidor Web/>boa &
  8. 8. Parte 1: Demonstração com binários já preparadosInicialização do ambiente de janelas Nano-X/>nano-X &/>nanowm &Visualização do logotipo do IFSC pelo aplicativo nxview/>nxview /mnt/nfs/IFSC.jpg
  9. 9. Parte 1: Demonstração com binários já preparadosCriação dos devices para comunicação com o controlador de I/O/>mknod /dev/iodata c 240 0/>mknod /dev/iodir c 241 0Execução do aplicativo de teste do controlador de I/O/>cd /mnt/nfs/>./testeImprimindo 1010101b nos leds verdes
  10. 10. Parte 2: Compilação do NIOS II e síntese da FPGAArquivos utilizados:● DE2_NIOS_HOST_MOUSE_VGA.ZIP● Avalon_VGA_Controller.zip● PS2.zip● de2_vga.zipRoteiro:● Extrair o conteúdo do arquivo DE2_NIOS_HOST_MOUSE_VGA.ZIP para o diretório alteraqdesignsXX (onde XX é a versão do Quartus).● Extrair os demais arquivos comprimidos (indicados acima) para o diretório alteraqdesignsXXDE2_NIOS_HOST_MOUSE_VGA● Executar o programa Quartus II● Abrir o projeto DE2_NIOS_HOST_MOUSE_VGA.qpf● Acessar o menu Tools, opção SOPC Builder● Clicar no botão Generate e aguardar a compilação da CPU do Nios II.● Clicar em Exit● Clicar 2 vezes no componente SDRAM_PLL e seguir o tutorial de PLL até o fim para geração dos arquivos necessários para a nova configuração de clock (de 50 para 100MHz).● No ambiente do Quartus, selecionar menu Processing e submenu Start Compilation● Verificar se a compilação ocorreu corretamente.OBS: Um novo arquivo em verilog descrevendo a PLL de 100MHz já foi extraído no diretório de trabalho,mas mesmo assim o tutorial de PLL deve ser executado para complementar os arquivos necessários.
  11. 11. Parte 3: Acréscimo do controlador de I/O ao barramento AVALONentity pio eigen is port ( −− inputs: signal address : IN STD LOGIC VECTOR (1 DOWNTO 0); signal chipselect : IN STD LOGIC; signal clk : IN STD LOGIC; signal reset n : IN STD LOGIC; signal write n : IN STD LOGIC; signal read n : IN STD LOGIC; signal writedata : IN STD LOGIC VECTOR (7 DOWNTO 0); 10 −− outputs: signal out port : INOUT STD LOGIC VECTOR (7 DOWNTO 0); signal readdata : OUT STD LOGIC VECTOR (7 DOWNTO 0) );end entity pio eigen;
  12. 12. Parte 3: Acréscimo do controlador de I/O ao barramento AVALONArquivos utilizados:● pio_eigen.vhd● altera_vhdl_support_lib.vhdRoteiro:● Copiar os arquivos indicados acima para o diretório alteraqdesignsXXDE2_NIOS_HOST_MOUSE_VGA● Abrir o projeto DE2_NIOS_HOST_MOUSE_VGA.qpf● Acessar o menu Tools, opção SOPC Builder● Clicar 2 vezes sobre "Create New Component..."● Selecionar o TAB "HDL Files"● Clicar em "Add HDL File..."● Selecionar "altera_vhdl_support_lib.vhd"● Aguardar a verificação do componente e clicar em Ok● Clicar novamente em "Add HDL File..."● Selecionar "pio_eigen.vhd"● Aguardar a verificação do componente e clicar em Ok● Selecionar o TAB "Signals" e verificar se aparecem os sinais de controle do avalon● Selecionar o TAB "Component WizardDI" e escolher um nome para o grupo do componente:
  13. 13. Parte 3: Acréscimo do controlador de I/O ao barramento AVALON● Component Group: DIPTERALAB● Selecione YES para salvar as alterações no componente● Selecione o grupo DIPTERALAB na lista de componentes do NIOS II● Clique 2 vezes sobre o componente recém criado "pio_eigen"● Clicar em "Finish"● Clicar em "Generate"● Clicar em "Exit"OBS: Anotar o endereço no qual ocomponente foi instalado no barramentoAvalon. Neste exemplo, o valor foi0x00400000 , porém este endereço variasempre. O componente instanciado sechama pio_eigen_0
  14. 14. Parte 3: Acréscimo do controlador de I/O ao barramento AVALON● No Quartus, com o projeto aberto, editar a linha 413 do arquivo DE2_NIOS_HOST_MOUSE_VGA.v : .out_port_from_the_led_green(LEDG), deve se tornar: .out_port_to_and_from_the_pio_eigen_0(LEDG), para associar os pinos do KIT DE2 ligados aos leds verdes ao novo componente criado.● No menu "Project", selecionar "Add/Remove Files in Project..."● Adicionar primeiro o arquivo "altera_vhdl_support_lib.vhd" e depois o arquivo "pio_eigen.vhd"● Salvar o projeto● Selecionar menu "Processing" e submenu "Start Compilation"● Verificar se a compilação ocorreu corretamente.
  15. 15. Parte 4: Instalação do cross-compilador nios2gccArquivos utilizados:● nios2gcc.tar.bz2● nios2libs.tar.bz2Roteiro:● Extrair os arquivos acima no diretório raiz >su >tar jxf nios2gcc.tar.bz2 -C / >tar jxf nios2libs.tar.bz2 -C / >exit● As ferramentas de cross-compilação serão instaladas no diretório /opt/nios● Ajuste o Path para PATH=$PATH:/opt/nios2/bin:$HOME/bin● Verifique a instalação com o comando >nios2-linux-uclibc-gcc -v Reading specs from /opt/nios2/lib/gcc/nios2-linux-uclibc/3.4.6/specs Configured with: /root/buildroot/toolchain_build_nios2/gcc-3.4.6/configure -- prefix=/opt/nios2 --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu -- target=nios2-linux-uclibc --enable-languages=c --enable-shared –disable- __cxa_atexit --enable-target-optspace --with-gnu-ld --disable-nls –enable- threads --disable-multilib --enable-cxx-flags=-static Thread model: posix gcc version 3.4.6
  16. 16. Parte 5: Compilação do kernel do uClinux com recursos básicosArquivos utilizados:● uClinux-dist-20070130.tar.gz● uClinux-dist-20070130-nios2-02.diff.gz● system_0.ptfRoteiro:● Extrair o arquivo uClinux-dist-20070130.tar.gz no diretório do usuário ($home) e aplicar o patch >tar -zxvf uClinux-dist-20070130.tar.gz >cd uClinux-dist >zcat ../uClinux-dist-20070130-nios2-02.diff.gz | patch -p0● Iniciar a configuração do kernel >make menuconfig● Ajusta o fabricante: Altera, nios2nommu Vendor/Product Selection ---> --- Select the Vendor you wish to target (Altera) Vendor --- Select the Product you wish to target (nios2nommu) Altera Products
  17. 17. Parte 5: Compilação do kernel do uClinux com recursos básicos● Selecionar kernel versão 2.6.x, excluir a Libc e ajustar para configurações padrão. Kernel/Library/Defaults Selection ---> (linux-2.6.x) Kernel Version (None) Libc Version [*] Default all settings (lose changes) [ ] Customize Kernel Settings [ ] Customize Vendor/User Settings [ ] Update Default Vendor Settings Then <exit> <exit> <yes>● Copiar o arquivo system_0.ptf , gerado pelo SOPC Builder do Nios II (contendo especificações do processador) para o diretório ~/uClinux-dist/linux-2.6.x/ >make vendor_hwselect SYSPTF=system_0.ptf● Escolher a partir de qual memoria o kernel deve inicializar. Escolher 1, 1 e 2 para SDRAM.● Cria imagem do sistema de arquivos >make romfs● Compila o kernel + filesystem, estilo initramfs >make (o primeiro make pode falhar, por causa da compilação concorrente) >make● Cria imagem contendo o kernel e o sistema de arquivos para ser carregada na memoria do kit. >make linux image
  18. 18. Parte 6: Compilação do kernel com suporte a rede e uso de framebufferRoteiro:● Para entrar nas configurações do kernel e dos aplicativos: >cd ~uClinux-dist >make menuconfig Kernel/Library/Defaults Selection ---> (linux-2.6.x) Kernel Version (None) Libc Version [ ] Default all settings (lose changes) [*] Customize Kernel Settings [*] Customize Vendor/User Settings [ ] Update Default Vendor Settings Retornar ao menu principal e sair
  19. 19. Parte 6: Compilação do kernel com suporte a rede e uso de framebuffer● Dentro da configuração do kernel, a rede deve ser configurada como a seguir: Networking --> [*] Networking support Networking options ---> <*> Packet socket <*> Unix domain sockets [*] TCP/IP networking Device Drivers -->Network device support ─> [*] Network device support [*] Ethernet (10 or 100Mbit) [ ] SMC 91C9x/91C1xxx support [ ] Opencores (Igor) Emac support [ ] MoreThanIP 10_100_1000 Emac support [ ] DM9000 support [*] DM9000A with checksum offloading File systems -> Network File Systems --> [*] NFS file system support [*] Provide NFSv3 client support
  20. 20. Parte 6: Compilação do kernel com suporte a rede e uso de framebuffer● Nas configurações do kernel, fazer os ajustes para suporte ao Nano-X Processor type and features --> --- Platform drivers Options [*] Avalon VGA controller support [*] PS2 controller Device Drivers --> Character devices ---> [*] Virtual terminal [ ] Support for console on virtual terminal # DESELECIONAR ESTA OPÇÂO! select the frame buffer driver, Device Drivers --> Graphics support ---> Console display driver support ---> [ ] VGA text console # DESELECIONAR ESTA OPÇÂO! < > Framebuffer Console support select input device drivers, Device Drivers --> Input device support --- Generic input layer (needed for keyboard, mouse, ...) [ ] Userland interfaces [*] Mouse interface [ ] Provide legacy /dev/psaux device # DESELECIONAR ESTA OPÇÂO! (1024) Horizontal screen resolution (768) Vertical screen resolution
  21. 21. Parte 6: Compilação do kernel com suporte a rede e uso de framebuffer if you will use PS/2 mouse or keyboard, --- Input Device Drivers [*] Keyboard ---> <*> AT keyboard [*] Mouse ---> <*> PS/2 mouse Hardware I/O ports ---> --- Serial I/O support [ ] i8042 PC Keyboard controller # DESELECIONAR ESTA OPÇÂO! [ ] Serial port line discipline # DESELECIONAR ESTA OPÇÂO! Retornar ao menu principal e sair● Nas configurações dos aplicativos que vão compor o filesystem, selecionar: Library Configuration--> [*] Build libZ [*] Build libjpeg
  22. 22. Parte 6: Compilação do kernel com suporte a rede e uso de framebuffer– MicroWindows ---> [*] MicroWindows --- Compiling Options [*] Optimize --- Libraries [*] NanoX --- Demos [*] NanoXDemo --- Applications [*] NanoWM --- Settings (Packed-16bit-5/6/5) Screeen PixType [ ] Link App into server [*] Have File IO [*] Have JPEG Support be selected --- Display Config [*] Frame Buffer Display --- Mouse/Touch Screen [*] Serial Mouse --- Keyboard [*] Scan Keyboard --- Install These Applications [*] Nano-X [*] NanoWM [*] NTetris [*] NXclock [*] NXterm [*] NXView Sair e salvar. Seguir as etapas finais para compilação como na Parte 4.
  23. 23. Parte 7: Instalação do módulo de controle de I/O junto ao kernelArquivos utilizados:● nios2rootfs.tar.bz2● nios2-uClinux-additional_hardware-files.tar.gz
  24. 24. Parte 7: Instalação do módulo de controle de I/O junto ao kernelRoteiro:● Extrair o arquivo nios2rootfs.tar.bz2 na área $home do usuário● Acrescentar as linhas no arquivo "rootfs_list" no diretório ~/uClinux-dist/vendors/Altera/nios2nommu nod /dev/iodata 666 0 0 c 240 0 nod /dev/iodir 666 0 0 c 241 0● Extrair o arquivo "io.c" de nios2-uClinux-additional_hardware-files.tar.gz e colocar no diretorio ~/uClinux/linux-2.6.x/drivers/misc● Alterar o arquivo "io.c" colocando o endereço que foi atribuido automaticamente no barramento avalon para o registrador de dados e acrescente 1 para o endereço do registrador de endereços. /* register addresses */ #define DATA_REGISTER 0x00400000 #define DIR_REGISTER 0x00400001● No mesmo diretório, editar o arquivo Makefile, acrescentando a linha: obj-$(CONFIG_IO) += io.o
  25. 25. Parte 7: Instalação do módulo de controle de I/O junto ao kernel● Ainda no mesmo diretorio, editar o arquivo Kconfig acrescentando a seção: config IO tristate "IO module for custom IO" help Enable module to access custom IO. OBS: O arquivo deve ser mantido terminando com "endmenu" >make menuconfig Kernel/Library/Defaults Selection ---> (linux-2.6.x) Kernel Version (None) Libc Version [ ] Default all settings (lose changes) [*] Customize Kernel Settings [ ] Customize Vendor/User Settings [ ] Update Default Vendor Settings● Retornar ao menu principal e sair● Selecionar "Device Drivers --> Misc Devices" [*] IO module for custom IO Sair e salvar. Seguir as etapas finais para compilação como na Parte 4.
  26. 26. Parte 8: Compilação cruzada de aplicativo para acessar o I/O via módulo do kernelArquivos utilizados:● pio_eigen.h● teste.cRoteiro:● No computador desktop, realizar a cross-compilação do aplicativo de teste: >nios2-linux-uclibc-gcc teste.c -o teste -elf2flt="-s 16000" -Wall● Copiar o aplicativo teste para o diretório /home/nios2/ visível para o NFS do kit altera● Executar o aplicativo de teste a partir do shell do uClinux />cd /mnt/nfs />./teste Imprimindo 1010101b nos leds verdes#include <stdio.h>#include <unistd.h>#include "pio_eigen.h"int main(void){ /* define todos os pinos como saida */ write_dev(dir_file,255); printf("Imprimindo 1010101b nos leds verdesn"); write_dev(dat_file,0x55); return(0);}
  27. 27. Parte 8: Compilação cruzada de aplicativo para acessar o I/O via módulo do kernel#define DIR_FILE "/dev/iodir"#define DAT_FILE "/dev/iodata"typedef enum{dat_file,dir_file} files;// read from device file and return value of byte // write byte to device fileunsigned char read_dev(files file) void write_dev(files file, unsigned char val){ { char string[5]={0}; char string[5]={0}; FILE *f=NULL; FILE *f=NULL; int i=0; /* open requested file for writing */ /* open requested file for reading */ switch(file) switch(file) { { case dat_file: case dat_file: f=fopen(DAT_FILE,"r+"); f=fopen(DAT_FILE,"r"); break; break; case dir_file: case dir_file: f=fopen(DIR_FILE,"r+"); f=fopen(DIR_FILE,"r"); break; break; } } /* read line */ /* read line */ itoa(string,val); while((i<5) && (string[i++]=fgetc(f))); fprintf(f,string); fclose(f); fclose(f); /* return value */ } return atoi(string);} No SASH: />echo "255" > /dev/iodir />echo "85" > /dev/iodata />cat /dev/iodata
  28. 28. Referências● DE2 Kit information: http://users.ece.gatech.edu/~hamblen/DE2/● SASH Shell: http://members.tip.net.au/~dbell/● Busybox: http://www.busybox.net/● Nioswiki JotSpot: http://nioswiki.jot.com/WikiHome/%C2%B5Clinux● Nios II uClinux with additional hardware: http://piie.net/index.php?section=nios● Niosforum: http://www.niosforum.com/● Uclinux: http://www.uclinux.org/● The Nano-X System: http://www.microwindows.org/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×