Você está na página 1de 51

Primeiros Passos para Embarcar Linux em Sistemas Baseados em Processadores ARM

Prof. Wagner Augusto Pires Coimbra


26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Agenda

Parte I: Entendendo os Problemas Parte II: Um Exemplo de Soluo (com demonstraes) Consideraes Finais

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

PARTE I: ENTENDENDO OS PROBLEMAS

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Aplicaes que exigem alto desempenho


IHMs com recursos 2D e 3D Aplicaes industriais com baixo consumo e suporte a rede Dataloggers com anlise de dados em tempo real Diagnstico mdico (ex: radiologia)

Aplicaes tais como estas exigem sistemas com alto desempenho, seja para tratar as entradas, efetuar algum condicionamento e/ou armazenamento de dados ou ainda para proporcionar uma sada adequada ao usurio.

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Empregando sistemas microprocessados


Qual linha de microprocessador? Custo do processador? Complexidade do hardware? Kits para desenvolvimento? Sistemas operacionais disponveis? Ambientes de desenvolvimento disponveis? Bibliotecas disponveis? Tempo de permanncia dos componentes no mercado?

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Empregando sistemas microprocessados


Qual linha de microprocessador? ARM Cortex A8 Custo do processador? US$ 5,00 a US$ 40,00 (FOB) Complexidade do hardware? Mdia, comparado a um PC Kits para desenvolvimento? Existem de diferentes fabricantes Sistemas operacionais disponveis? Win, Distros Linux e Android Ambientes de desenvolvimento disponveis? IDEs diversos + gcc Bibliotecas disponveis? QtEmbedded, SDKs dos fabricantes, etc Tempo de permanncia dos componentes no mercado?

Depende do Fabricante Escolhido


26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Exemplo de Processador ARM Cortex A8


DM3730 (Digital Media Processor) Ncleo Microprocessado: Cortex A8 com clock de at 1GHz Ncleo DSP: TMS320 com operao at 660MHz Acelerador de udio e de Vdeo on Chip Controlador de Memria Externa E/S: 1,8V

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Famlias de Processadores ARM Cortex A8


A classificao depende do fabricante. Normalmente est relacionada aos perifricos embarcados. Exemplo (TI): DaVinci: Ncleo Cortex A8 com perifricos para aplicaes multimdia on chip. Sitara: Ncleo Cortex A8 sem perifricos on chip especficos para multimdia.

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Exemplos de kits para desenvolvimento

Beagleboard xM

Beaglebone

Pandaboard

TechNexion Blizzard Board


26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

i.MX53 Quick Start Board

Principais Quebras de Paradigma


Haver uma (inevitvel) mudana relacionada : 1. 2. 3. 4. 5. Definio do hardware de desenvolvimento; Definio da ferramenta de desenvolvimento (IDE + Compilador); Execuo de testes iniciais (ambientao com um Pisca-LED); Construo de um framework prprio; Desenvolvimento de produtos e de solues para os clientes.

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Principais Quebras de Paradigma


1. Definio do hardware de desenvolvimento Principais Critrios (com microcontroladores): a) Custo ($) b) Perifricos embarcados c) Facilidade de aquisio (tempo, burocracia, etc) Principais Critrios (com microprocessadores): a) Facilidade de aquisio (tempo, burocracia, etc) b)Custo ($) c) Perifricos existentes no kit

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Principais Quebras de Paradigma


2. Definio da ferramenta de desenvolvimento (IDE + Compilador) Microcontroladores: a) Custo ($) b) Facilidade de uso c) Suporte

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Principais Quebras de Paradigma


2. Definio da ferramenta de desenvolvimento (IDE + Compilador) Microprocessadores: a) O compilador o gcc para arm (free) b) O IDE pode ser o Eclipse (ou outro free) c) O custo destas ferramentas R$0,00 d) Existem diversos recursos no IDE (trabalho facilitado) e) Suporte: a comunidade (o que devo concluir disso?)

At aqui parece que s existem vantagens.


Vamos continuar...

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Principais Quebras de Paradigma


3. Efetuar testes iniciais (ambientao com um Pisca-LED) Microcontroladores: a) Configurar o sistema de clock e GPIO b) Implementar um Pisca-LED (usando delay com for) c) Gravar e executar o Pisca-LED

Agora comearo as diferenas importantes entre sistemas microcontrolados e microprocessados.

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Principais Quebras de Paradigma


3. Efetuar testes iniciais (ambientao com um Pisca-LED) Microprocessadores: a) Escolher um sistema operacional Pago ou Gratuito? Suponhamos Linux b) Qual distribuio? Qual a mais leve? Qual me d os recursos grficos que necessito? ... c) Definir os recursos do SO que devero ser embarcados Modo Console? Modo Grfico? GNOME? ...

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Principais Quebras de Paradigma


3. Efetuar testes iniciais (ambientao com um Pisca-LED) Microprocessadores: d) Definir bibliotecas para perifricos especficos udio? OpenGL? Ethernet? USB? I2C? SPI? ... e) Definir se sero usadas bibliotecas de terceiros SDK do fabricante? Qt? ... f) Preparar um carto SD com os recursos necessrios Como particionar/formatar? Existe imagem pronta? Terei de construir uma? Como construo uma imagem? Como testo uma imagem?
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Principais Quebras de Paradigma


3. Efetuar testes iniciais (ambientao com um Pisca-LED) Microprocessadores: g) Configurar parmetros de boot (a grosso modo, algo equivalente ao config.sys e ao autoexec.bat do antigo DOS) Como o processo de boot? O que eu posso configurar? O que eu preciso configurar? Como eu configuro?

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Principais Quebras de Paradigma


3. Efetuar testes iniciais (ambientao com um Pisca-LED) Microprocessadores: h) Implementar a aplicao (Pisca-LED) Onde esto os LEDs (no hardware)? Como acessos os LEDs (no Linux)? Ok, acessei via linha de comando. Mas e no programa? Ok, acessei no programa, mas como fao um delay? (LIBs?)

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Principais Quebras de Paradigma


3. Efetuar testes iniciais (ambientao com um Pisca-LED) Microprocessadores: i) Compilar a aplicao Como configuro o ambiente para compilar a aplicao? j) Embarcar a aplicao Como transfiro a aplicao? Onde devo colocar a aplicao? Como executar a aplicao

( possvel detalhar mais, mas isso no necessrio neste momento)


26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Principais Quebras de Paradigma


4. Construir um framework Microcontroladores: a) Definir os perifricos que normalmente sero usados b) Implementar e testar bibliotecas c) Manter um backup/controle de verso das bibliotecas

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Principais Quebras de Paradigma


4. Construir um framework Microprocessadores: a) Definir os perifricos que normalmente sero usados - Identificar bibliotecas existentes - Testar as bibliotecas disponveis - Definir uma estratgia de acesso/uso de perifricos sem biblioteca disponvel (kernel space? user space?) b) Implementar e testar bibliotecas (este trabalho tambm feito com microcontroladores, mas agora o ambiente mais complexo) c) Manter um backup/controle de verso das bibliotecas (seria interessante salvar, tambm, imagens Linux?)
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Principais Quebras de Paradigma


5. Desenvolver produtos e solues para os clientes Microcontroladores: a) Criar uma aplicao-base, com as bibliotecas necessrias b) Acrescentar funcionalidades especficas a cada caso. Microprocessadores: a) Criar um processo para desenvolvimento de produtos b) Criar um processo para treinamento de novos empregados c) Criar recursos para manter a segurana dos seus dados d) Criar um procedimento para embarcar a aplicao (para os clientes) (e at agora no estamos pensando no projeto de hardware)
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Concluso desta primeira anlise


Para quem est iniciando, o primeiro desafio consiste em efetuar o primeiro teste de ambientao (o velho Pisca-LED), partindo do zero e chegando a um programa de teste funcional, sem se perder (muito) ao longo do caminho. O segundo desafio consiste em criar o seu prprio mtodo de trabalho.

Considerando que este seja o seu primeiro contato, as informaes a seguir o ajudaro com o primeiro desafio!
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

PARTE II: UM EXEMPLO DE SOLUO

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Objetivo desta Segunda Parte

Explorar um caminho que permite preparar um kit de desenvolvimento baseado em processadores ARM para embarcar uma distribuio de Linux, deixar o sistema operacional e test-lo por meio de dois programas de ambientao simples.

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

1. Escolha de um kit para desenvolvimento

Neste exemplo, ser usado um kit Beagleboard xM. (processador DM3730CBP 1GHz)

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

2. Preparao do ambiente de desenvolvimento


Um desktop com o Ubuntu Linux 10.04 LTS (32 bits) Observaes: 1. Podem ser usadas mquinas virtuais. No entanto, recomendada uma mquina real. 2. Voc poder manter Windows e Linux em uma mesma mquina usando um dual-boot. H muita informao sobre isso no Google. 3. No atualize o seu sistema sem um motivo concreto. Consulte o site do fabricante para saber o S.O. que est homologado.
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

3. Escolha de uma Distribuio Linux (a ser embarcada)

Angstrom Linux (leve e free)

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

4. Produzir uma imagem da distribuio Linux


Por meio de um Buildsystem (gerador de imagens Linux): Buildroot (execuo offline na sua mquina); Narcissus (execuo online voc configura na pgina web, a imagem compilada no servidor web e, ao final, voc recebe um link para download da imagem). ... Ou por meio de uma imagem pr-compilada pelo fabricante: http://circuitco.com/support/files/BeagleboardxM/xMc_4_25.zip
Inicie por meio de uma imagem pr-configurada, para diminuir o universo de problemas em potencial.
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

5. Preparar um carto microSD


a) Insira o carto no desktop e descubra o seu nome de dispositivo: $ demesg | tail
[ [ [ [ [ 60.625434] 60.629428] 60.629436] 60.635440] 60.635448] sd 4:0:0:0: sd 4:0:0:0: sdb: sdb1 sd 4:0:0:0: sd 4:0:0:0: [sdb] Assuming drive cache: write through [sdb] Assuming drive cache: write through [sdb] Assuming drive cache: write through [sdb] Attached SCSI removable disk

Neste exemplo: dispositivo /dev/sdb (que possui uma partio apenas, chamada sdb1)

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

5. Preparar um carto microSD


b) Baixe a imagem demo do Angstrom Linux:
$ wget http://circuitco.com/support/files/BeagleboardxM/xMc_4_25.zip
Resolving circuitco.com... 206.188.192.85 Connecting to circuitco.com|206.188.192.85|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 228082726 (218M) [application/zip] Saving to: `xMc_4_25.zip'

100%[===================>] 228,082,726

204K/s

in 18m 21s

2012-06-11 11:21:06 (202 KB/s) - `xMc_4_25.zip' saved [228082726/228082726]

(imagem de demonstrao = imagem completa)


26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

5. Preparar um carto microSD


c) Descompacte a imagem do Angstrom Linux $ unzip xMc_4_25.zip
(necessrios 4GB de espao livre no HD)

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

5. Preparar um carto microSD


d) Grave a imagem descompactada no carto SD $ sudo dd if=./xMc_4_25.img of=/dev/sdb bs=8225280
dd: writing `/dev/sdb': No space left on device 475+0 records in 474+0 records out 3904897024 bytes (3.9 GB) copied, 625.463 s, 6.2 MB/s

(demora cerca de 12 minutos) Desmonte as parties (se estiverem montadas) e retire o carto microSD do micro. Ele est pronto para ser usado com a Beagleboard xM.
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

6. Efetuando o boot e testando o carto microSD


Conexes essenciais:
Mouse; Teclado e; Monitor (conectados Beagleboard xM).

>>> Demonstrao
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

7. Resumo do Processo de Boot


1. Um bootloader de 1 estgio (X-Loader), embutido em uma ROM existente no chip da MPU, verifica o estado lgico de alguns pinos de entrada para determinar onde est armazenado o bootloader de 2 estgio (o U-Boot).
2. Aps determinar onde est o U-Boot, o X-Loader configura os perifricos necessrio para carregar o bootloader de 2 estgio. 3. O U-boot carregado na memria, e l o seu arquivo de configurao (uEnv.txt). Aps isso, o U-Boot configura demais perifricos e inicia a carga e a execuo do kernel do Linux.
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

7. Resumo do Processo de Boot


IMPORTANTE:
Na Beagleboard xM, o uBoot fica na partio primria de um carto microSD. Esta partio primria do tipo FAT32.

A distribuio Linux fica na segunda partio (ext3).

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

8. Compilao e execuo do programa de teste


Opes:
Crosscompiler: desenvolver e compilar no Desktop. Descarregar para o kit de desenvolvimento. Requer preparao do ambiente de desenvolvimento. Compilao diretamente no kit: a compilao mais demorada do que em um desktop, mas dispensa o trabalho de configurao da mquina de desenvolvimento. Sempre inicie pelo caminho menos complexo, para aumentar a sua chance de sucesso. Portanto, ser usada compilao pelo kit.
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

9. Pacotes de programas necessrios a compilaes


Abra uma janela TERMINAL na Beagleboard xM e faa o seguinte:
Atualize os caminhos para download de pacotes $ opkg update Baixe o pacote de programas para desenvolvimento $ opkg install task-native-sdk Crie um link simblico para o a biblioteca compartilhada libgcc_s: $ ln -s /lib/libgcc_s.so.1 /usr/lib/libgcc_s.so
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

10. Primeiro programa de teste (teste de compilao)


#include <stdio.h>
int main() { printf("\n\n\rAlo mundo!\n\n\r"); return 0; }

Salve com o nome: Compile com: Execute com:

alo_mundo.c $ gcc alo_mundo.c o alo_mundo $ ./alo_mundo

>>> Demonstrao
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

11. Acessando Hardware no Linux


Existem dois tipos de interface para acesso a hardware no Linux:
Syscalls (uso de rotinas existentes em drivers) SYSFS (mapeamento de perifricos no sistema de arquivos)

Nesta demonstrao ser usado o SYSFS.

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

11. Acessando Hardware no Linux


Os LEDs da Beagleboard xM esto mapeados no SYSFS, de acordo com o seguinte modelo:
Perifrico Pasta Atributos do perifrico Arquivos Configuraes e transmisso de dados Escrita Leitura de status e recebimento de dados Leitura

O mapeamento de perifricos fica em /sys/class


26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

11. Acessando Hardware no Linux


Na Beagleboard xM: Arquivo referente ao LED USR0:
Pasta: /sys/class/leds/beagleboard::usr0 Arquivo trigger : define eventos de controle do LED Valores validos: none nand-disk mmc0 heartbeat Arquivo brightness controle manual do estado do LED Valores validos: 1-ligado e 0-desligado
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

11. Acessando Hardware no Linux


Via linha de comando : Entrar na pasta referente ao LED USR0 $ cd /sys/class/leds/beagleboard::usr0 Desativar qualquer controle automtico sobre o LED $ echo "none" > trigger
Ligar $ echo 1 > brightness Desligar $ echo 0 > brightness

>>> Demonstrao
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

12. Segundo Programa de Teste (pisca_led.cpp)


#include <stdio.h> #include <fcntl.h> #include <unistd.h> int main() { int i, led; led = open("/sys/class/leds/beagleboard::usr0/brightness", O_WRONLY); if( -1 == led ) {printf(\n\rErro de acesso ao LED\n\r"); return -1;} for(i=0; i<5; i++) { write(led, "1", 1); sleep(1); write(led, "0", 1); sleep(1); } close(led); return 0; }
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

12. Segundo Programa de Teste (pisca_led.cpp)


Salve com o nome: Compile com: Execute com: $ pisca_led.cpp $ g++ pisca_led.cpp o pisca_led $ ./pisca_led

>>> Demonstrao
IMPORTANTE: 1. Extenso .C usada com fontes escritos em C estruturado. Esses fontes so compilados com o programa gcc. 2. Extenso .CPP usada com fontes escritos em C++ (Programao Orientada a Objetos). Esses fontes so compilados com o programa g++.
26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

CONSIDERAES FINAIS

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Consideraes Finais
Reserve tempo para se adequar ao desenvolvimento com microprocessadores. Este requisito independente do fabricante/kit escolhido.
Desenvolver usando microprocessadores no extremamente difcil, mas complexo: organizao e pacincia so fundamentais.

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Consideraes Finais

No queime etapas, pois uma informao ou uma experincia ignorada podem fazer falta depois.
Aceite que eventualmente ser necessrio buscar ajuda e, com isso, desenvolva o seu mtodo de busca (comunidade, amigos, eventos, treinamentos, etc).

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

Consideraes Finais

Linux de uso livre. Muitos dos seus recursos so gratuitos. No entanto, grande o volume de conhecimento e experincia necessrio para desenvolver com naturalidade usando Linux (principalmente Linux embarcado em algum hardware). Portanto, adquira o hbito de investir na sua qualificao.

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

REFERNCIAS
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Angstrom Linux ARM Beagleboard xM Beaglebone Blizzard Board Buildroot Build System i.MX53 Quick Start Board Narcissus Angstrom Distribution TI Processors Wiki (Sitara) U-Boot Universal Bootloader Ubuntu Desktop http://www.angstrom-distribution.org http://www.arm.com http://beagleboard.org http://beagleboard.org/bone http://www.technexion.com http://buildroot.uclibc.org http://www.freescale.com http://narcissus.angstrom-distribution.org http://processors.wiki.ti.com http://www.denx.de/wiki/U-Boot http://www.ubuntu.com

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo

DADOS PARA CONTATO

Prof. Wagner Augusto Pires Coimbra


wagner@techtraining.eng.br

Currculo Lattes:
http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4596982Z6

26-27 de Junho/June 2012 Transamerica Expo Center, So Paulo