Desenvolvimento de sistemas
UnB@Gama
Lanado pela primeira vez em 1991. Foi criada uma fundao, a Free Software Foundation, que vem trabalhando para a sua popularizao.
Modo difcil: compilar a partir do cdigo fonte disponvel em www.kernel.org. Modo fcil: instalar uma distribuio (e.g., Fedora, Slackware, Debian,...)
UnB@Gama
O que um sistema embarcado ? - Um sistema computacional desenvolvido para aplicaes dedicadas, e geralmente envolvem restries como computao de tempo real, reduo de poder de processamento e/ou restrio de consumo.
Mas quais as vantagem de incluir um sistema operacional em sistemas dedicados ? - Qualidade dos cdigos. - Herana de cdigos, uma grande variedade de aplicativos disponveis. - Portabilidade e escalabilidade. - Footprint relativamente pequenos (kernel entre 0,5 a 2 MB de ash). - Custos reduzidos. - Fruns, listas, e-mail, FAQ, exemplos, suportes, etc.
UnB@Gama
UnB@Gama
UnB@Gama
UnB@Gama
uCLinux (http://www.uclinux.org/). Blue Cat (http://www.lynuxworks.com/embedded-linux/embedded-linux.php). Monta Vista (http://www.mvista.com/). iMedia Linux (http://www.mini-box.com). Damn Small Linux (http://www.damnsmalllinux.org/)
Algumas referncias:
UnB@Gama
x86: i386, i486, Pentium, Core 2 Duo, i3, i5, i7, Xeon, Atom, Fusion, Geode, Athlon, Phenom, Turion, Opteron e similares. ARM: cores ARM7TDMI, ARM9TDMI, Marvell (XScale), Cortex, etc. Motorola 68000 (m68k): famlia ColdFire Motorola PowerPC, Virtex II Pro FPGA with PowerPC cores Analog Devices BlackFin. Intel XScale. IBM Cell microprocessor. Texas Instruments: OMAP. e muitos outros...
UnB@Gama
Linux from Scratch - Recompila-se a partir dos fontes ou de uma distribuio para sistemas embarcados.
Remasterizao Retira-se tudo que for desnecessrio para a aplicao, de modo a necessitar de pouco espao de armazenamento.
UnB@Gama
Programar em C obrigatrio.
Bnus: C++, HTML, CGI e scripts (Python, PHP, Perl, etc), Java, Qt, Qtopia, ...
UnB@Gama
Microcontroladores/Microprocessadores.
UnB@Gama
10
Algumas ferramentas
Compiladores cruzados (toolchains) - Portes do GCC para a plataforma desejada (binutils/glibc/GCC/GDB,...). - Download de toolchains pr-compilados ou compilao (pode ser facilitada com buildroot, CrossTool, OpenEmbedded ou scratchbox)
Outros - Conhecimentos de redes (Congurao, TFTP, NFS, ...) - Uso de aplicativos como minicom (console serial), hexdump, conversores. - Controle de verso (CVS/Subversion), patches, Makeles, etc.
UnB@Gama
11
Equipamentos necessrios
UnB@Gama
12
Plataforma Embarcada
Principais alternativas para a plataforma embarcada: - Emulao: Qemu ou outro emulador especco. - PC (ATX, mini-ATX, nano-ATX). - PC/104. - SBC (Single Board Computers). - BSP (Board Support Package). - Hardware hackeado (PDAs, celulares, MP3 players, roteadores, set top boxes, video games, relgios, etc). - Hardware proprietrio.
UnB@Gama
13
Plataforma Embarcada:
Hardware proprietario pode ter custo elevado: - Projeto do circuito eletrnico. - Layout da placa. - Confeco da PCB (Printed Circuit Board) e montagem. - Instrumentao (osciloscpio, analisadores lgicos, multmetros, estaes de solda, estao de retrabalho, fontes de alimentao, ...). - Integrao hardware-software. - Mecnica (caixas, xao, conectores, etc). - Certicao, quando necessrio.
UnB@Gama
14
JTAG (Joint Test Action Group) - Permite debug da plataforma por meio de uma interface simples, geralmente via porta paralela, USB ou ethernet (ICE-In Circuit Emulation), desde que o chip tenha suporte ao JTAG. - Custo baixo, alguns podem ser feitos em casa. - Breakpoints, inspeo de memria, execuo passo a passo, acesso a registros, etc.
BDM (Background Debug Mode) - Funcionalidade ICE similar ao JTAG, empregado pela Motorola
Emuladores (via hardware) - Equipamentos que emulam o processador/microcontrolador (solues bem mais caras).
UnB@Gama
15
Metodologia de desenvolvimento:
Stand-alone : Todo desenvolvimento realizado no Target. Requer maior espao de armazenagem e processadores mais rpidos.
UnB@Gama
16
Metodologia de desenvolvimento:
Host-target com unidade de armazenamento removvel: Desenvolvimento realizado no Host (e.g., microcomputador PC). Inconveniente de ter que alternar a conexo da mdia de boot entre o host e o target.
UnB@Gama
17
Metodologia de desenvolvimento:
Host-target interligados por conexo serial ou ethernet: Desenvolvimento realizado no Host (e.g., microcomputador PC). Transferncia remota do target via link de comunicao. a abordagem mais comum.
UnB@Gama
18
Compiladores C/C++ reconhecidamente estvel: gcc/g++ Depurao no host por meio dos aplicativos gdb/xgdb Depurao remota por JTAG ou DBM Ambientes integrados de desenvolvimento: Anjuta, KDevelop, Eclipse, etc. Ambientes grcos de baixo requerimento de memria. Grande nmero de ferramentas de conectividade e administrao remota: ftp, ssh, nfs. Stacks TCP/IP e USB implementadas no kernel. Disponibilidade de recursos para sistemas multimdia: codecs, sistema de som/vdeo.
O kernel multitarefas preemptivo com prioridades, seguindo o padro POSIX que especica, entre outras coisas, comunicao entre processos, semforos e compartilhamento de dados.
UnB@Gama
19
Extenses de tempo-real permitem lanar uma tarefa a 50kHz com baixo jitter.
J existe suporte a vrios tipos de perifricos, de forma que no se faz necessrio desenvolver todos os drivers.
Vantagem exclusiva para a arquitetura ARM: maior compatibilidade de cdigo para dispositivos com o mesmo core ;
Vantagem exclusiva para processadores ColdFire: a Freescale disponibiliza gratuitamente cdigo fonte para codicadores/decodicadores H264, MPEG, JPEG, MP3 e WMA.
UnB@Gama
20
Necessidade de desenvolvimento em plataformas que possuem maior restrio, principalmente em termos de memria, armazenamento, capacidade de processamento, consumo, etc.
UnB@Gama
21
Entretanto...
... o que possibilitou a adequao do Linux em sistemas embarcados e a implementao em novas arquiteturas.
22
UnB@Gama
Linux from scratch: construo do sistema a partir dos fontes. Utilizao de uma distribuio pr-compilada. Desenvolvido pela comunidade (no-comercial). Comercial.
UnB@Gama
23
uCLinux
Juntamente com a biblioteca uClib, o sistema nal pode ocupar menos que 1MB.
Atualmente portado para diversas arquiteturas, sendo as principais Blackn, Coldre, H8 e ARM7.
UnB@Gama
24
Ocupa 50MB de armazenagem. No processo de boot, o sistema descomprimido ocupando 128MB de RAM.
Baseado no Debian/KNOPPIX.
UnB@Gama
25
O sistema alvo
Utilizamos uma fonte sobre-dimensionada, j que o sistema possui baixo consumo. No entanto, sendo para ns de teste/prototipao, seu baixo custo justica o uso.
UnB@Gama
26
KNOPPIX/
Diretrio que contm o DSL compactado na forma do arquivo KNOPPIX de aproximadamente 50MB.
boot.msg
f2
Mensagem mostrada na tela quanto a tecla F2 pressionada durante o prompt de boot do sistema.
f3
Mensagem mostrada na tela quanto a tecla F3 pressionada durante o prompt de boot do sistema.
27
UnB@Gama
german.kb
linux24
Imagem compactada (bzImage) do kernel 2.4 do Linux. Maiores informaes podem ser obtidas a partir do comando file -s linux24.
logo.16
Imagem de boot do DSL, que pode ser facilmente alterada usando um editor como GIMP e o comando ppmtolss16.
minirt24.gz
Imagem RAMDISK de inicializao do sistema. Contm os mdulos mnimos necessrios usados pelo kernel quando na primeira fase do processo de inicializao.
readme.txt
UnB@Gama
syslinux.cfg
UnB@Gama
29
# cfdisk /dev/sda
# mkdosfs /dev/sda
# cp -R /home/user/dsl-x.x.x-embedded/* /mnt/card
Neste caso, o diretrio /home/user/dsl-x.x.x-embedded/ o diretrio no qual o DSL foi descompactado. A opo -R usada para garantir a cpia dos subdiretrios.
30
UnB@Gama
# umount /mnt/card
# dd if=/dev/zero of=/dev/sda bs=446 count=1 Procure pelo arquivo mbr.bin na pasta syslinux. Em seguida, faa: # cat /usr/lib/syslinux/mbr.bin > /dev/sda
UnB@Gama
31
remaster image Diretrio temporrio para montar o sistema de arquivos da distro dsl-x.x.x-embedded. master Diretrio que conter a nova distro dsl-x.x.x-embedded, que poder ser colocada em um carto de memria. source/KNOPPIX Diretrio fonte da nova distro. Uma vez montado, poder ser alterado sempre que necessrio. Este diretrio contm todo o sistema que estar no sistema embarcado.
32
UnB@Gama
# # # # #
Necessita do cloop, que permite a criao de dispositivos do tipo loops compactados. Estes dispositivos permitem a montagem de arquivos imagens como se fossem dispositivos de blocos (por exemplo, pendrive). O cloop pode ser obtido instalando o pacote cloop-utils. # extract compressed fs master/KNOPPIX/KNOPPIX tmp.iso
O arquivo tmp.iso montado no diretrio image, cujo contedo copiado para source/KNOPPIX
33
UnB@Gama
# mount -o loop tmp.iso image # rsync -Hav image/. source/KNOPPIX # umount image
O diretrio image e o arquivo tmp.iso no sero mais necessrios, podendo ser apagados.
A partir deste ponto, o diretrio raiz da nova distro est disponvel em source/KNOPPIX. Para tanto deve-se modificar o diretrio raiz para source/KNOPPIX e ento montar o diretrio proc.
UnB@Gama
Para criar uma nova distro, deve-se apagar o arquivo KNOPPIX da distro anterior. Considerando-se que o usurio encontra-se no diretrio remaster, deve-se executar o comando
# rm master/KNOPPIX/KNOPPIX
# mkisofs -R -U -V -hide-rr-moved -cache-inodes -no-bak -pad source/KNOPPIX | create compressed fs - 65536 > master/KNOPPIX/KNOPPIX
UnB@Gama
35