Laboratório 2
Download
1 / 15

Laboratório 2 - PowerPoint PPT Presentation


  • 68 Views
  • Uploaded on

Laboratório 2. Sistemas embarcados Período 2010.2. Roteiro. Inicialização Sistema de arquivos raiz. Inicialização. Os programas responsáveis pela inicialização do núcleo são os bootloaders. Dentre eles pode-se destacar:

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Laboratório 2' - ismael


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Laboratório 2

Sistemas embarcados

Período 2010.2


Roteiro
Roteiro

  • Inicialização

  • Sistema de arquivos raiz


Inicializa o
Inicialização

  • Os programas responsáveis pela inicialização do núcleo são os bootloaders.

  • Dentre eles pode-se destacar:

    • GRUB(x86), LILO(x86), RedBoot(x86, ARM, PowerPC, MIPS e m68k) e U-Boot(x86, ARM e PowerPC).

  • U-Boot

    • É o melhor bootloader para ARM(suporte a um maior número de plataformas baseadas no ARM).

    • Projeto U-boot: http://sourceforge.net/projects/uboot


Compilando o u boot
Compilando o U-Boot

  • Instalar dependências build-essential, autoconf, autotools

  • Tem que ser compilado usando o toolchain da Texas para OMAP

    • Baixar no site de recursos

    • E descompactar como root

      • tar xjvf gcc-3.3.2.tar.bz2 -C /

  • Baixar o fonte

    • wget -b http://linux.omap.com/pub/bootloader/h2/source/u-boot.tar.gz

    • tar zxvf u-boot.tar.gz

    • cd u-boot

  • Configura o U-Boot para omap:

    • make omap1610inn_config

  • Alterar o Makefile

    • Apagar a linha 124 do Makefile

    • Os exemplos não compilam

  • Inicia compilação:

    • export PATH=$PATH:/usr/local/arm/3.3.2/bin

    • make

  • Arquivos gerados:

    • u-boot, uboot.bin

    • mkimage (programa usado para gerar uma imagem do núcleo entendível pelo o u-boot)‏


Sistema de arquivos raiz
Sistema de arquivos raiz

  • Estrutura de como os arquivos são organizados

  • Os principais comandos GNU são providos pelo busybox

  • O busybox é um arquivo executável

  • Os comandos são links simbólicos para o busybox

  • O busybox os identifica pelo link chamado

  • Provê desde o processo init, até servidores mais sofisticados (http)‏


Vantagens
Vantagens

  • Construir seu próprio sistema de arquivos raiz traz algumas vantagens:

    • Melhor entendimento

    • Maior controle

    • Configurações mais simples


Sistema de arquivos raiz1
Sistema de arquivos raiz

  • Os dispositivos (/dev) podem ser criados a partir do mdev (mini udev) provido pelo busybox

  • Só são necessários dois devices

    • /dev/null

    • /dev/console

  • Em versões mais antigas do núcleo (2.6.12) os dispositivos eram montados como um sistema de arquivos

    • devfs

  • Em distribuições mais completas, pode-se usar um initrd para carregar módulos que variam de acordo com as configurações das máquinas

    • Maior compatibilidade

    • Maior tamanho de distribuição


Criando um sistema de arquivos raiz
Criando um sistema de arquivos raiz

  • Baixar da página o script que instala as dependências pra compilar o busybox

  • sh dependencias_busybox.sh

  • Baixando o Busybox:

    • wget http://busybox.net/downloads/busybox-1.2.1.tar.gz

    • tar zxvf busybox-1.2.1.tar.gz

    • cd busybox-1.2.1

  • Configura o Busybox:

    • Habilita todas as opções do Busybox

      • make defconfig


  • Altera algumas opções:

    • make menuconfig

    • (Caso apareça o erro /usr/bin/ld: cannot find -lncurses checar as dependências ncurses-base, ncurses-bin, ncurses-hexedit, ncurses-term, libncurses5, libncurses5-dbg, libncurses5-dev, libncursesw5, libncursesw5-dbg, libncursesw5-dev)‏


  • Busybox settings

    • Build options

      • Marcar: Build BusyBox as a static binary (no shared libs)‏

      • Desmarcar: Build with Large File Support (for accessing files > 2 GB)‏

  • Shells

    • Choose your default shell: ash

  • cd ..

  • mv busybox-1.2.1 /scratchbox/users/userLogin/home/userLogin/

  • /scratchbox/login

  • cd busybox-1.2.1

  • Compila

    • make install


Povoando o sistema de arquivos raiz
Povoando o sistema de arquivos raiz

  • Pasta raiz

    • sudo mkdir -p /embedded/targets/tux

  • Copiando a estrutura dos arquivos do Busybox para dentro da imagem montada:

    • (Fora do scratchbox)‏

    • sudo rsync -a /scratchbox/users/<userLogin>/home/<userLogin>/busybox-1.2.1/_install/ /embedded/targets/tux/


Criando os principais devices
Criando os principais devices

  • Criar a pasta de dispositivos:

    • sudo mkdir /embedded/targets/tux/dev

    • cd /embedded/targets/tux/dev

  • Criando o device “console”:

    • sudo mknod console c 5 1

  • Criando o device “null”:

    • sudo mknod null c 1 3


Etc inittab do rootfs
/etc/inittab do rootfs

  • Criar arquivo /etc/inittab:

    • sudo mkdir -p /embedded/targets/tux/etc

    • sudo vi /embedded/targets/tux/etc/inittab

    • Arquivo inittab:

      # This is run first script

      ::sysinit:/etc/init.d/rcS

      # Start an "askfirst" shell on the console

      ::askfirst:-/bin/sh

      # Stuff to do when restarting the init process

      ::restart:/sbin/init

      # Stuff to do before rebooting

      ::ctrlaltdel:/sbin/reboot

      ::shutdown:/bin/umount -a -r


Script etc init d rcs
Script /etc/init.d/rcS

  • Criar o script /etc/init.d/rcS:

    • sudo mkdir -p /embedded/targets/tux/etc/init.d

    • sudo vi /embedded/targets/tux/etc/init.d/rcS

    • sudo chmod 777 /embedded/targets/tux/etc/init.d/rcS

#!/bin/sh

/bin/busybox mkdir -p /proc

/bin/busybox mkdir -p /sys

/bin/busybox mount -t proc none /proc

/bin/busybox mount -t sysfs none /sys

/bin/busybox mkdir -p /dev/pts

/bin/busybox mount -t devpts devpts /dev/pts

# /bin/busybox echo /sbin/mdev > /proc/sys/kernel/hotplug

/bin/busybox mdev -s

/bin/busybox ifconfig lo 127.0.0.1 up

exec /etc/profile

rcS


#!/bin/sh

TSLIB_TSDEVICE=/dev/event1

TSLIB_CONFFILE=/etc/ts.conf

PATH=$PATH:/usr/X11R6/bin:/sbin

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib

DISPLAY=:0

export TSLIB_TSDEVICE TSLIB_CONFFILE PATH LD_LIBRARY_PATH DISPLAY

profile


ad