wagner coimbra

Post on 12-Aug-2015

80 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

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, São Paulo

Agenda

• Parte I: Entendendo os Problemas

• Parte II: Um Exemplo de Solução (com demonstrações)

• Considerações Finais

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

PARTE I: ENTENDENDO OS PROBLEMAS

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Aplicações que exigem alto desempenho

• IHMs com recursos 2D e 3D • Aplicações industriais com baixo consumo e suporte a rede • Dataloggers com análise de dados em tempo real • Diagnóstico médico (ex: radiologia)

Aplicações 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 saída adequada ao usuário.

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Empregando sistemas microprocessados

• Qual linha de microprocessador? • Custo do processador? • Complexidade do hardware? • Kits para desenvolvimento? • Sistemas operacionais disponíveis? • Ambientes de desenvolvimento disponíveis? • Bibliotecas disponíveis? • Tempo de permanência dos componentes no mercado?

26-27 de Junho/June 2012 Transamerica Expo Center, São 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? Média, comparado a um PC • Kits para desenvolvimento? Existem de diferentes fabricantes • Sistemas operacionais disponíveis? Win, Distros Linux e Android • Ambientes de desenvolvimento disponíveis? IDEs diversos + gcc • Bibliotecas disponíveis? QtEmbedded, SDKs dos fabricantes, etc • Tempo de permanência dos componentes no mercado?

Depende do Fabricante Escolhido

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Exemplo de Processador ARM Cortex A8

DM3730 (Digital Media Processor) • Núcleo Microprocessado: Cortex A8 com clock de até 1GHz • Núcleo DSP: TMS320 com operação até 660MHz • Acelerador de Áudio e de Vídeo on Chip • Controlador de Memória Externa • E/S: 1,8V

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Famílias de Processadores ARM Cortex A8

A classificação depende do fabricante. Normalmente está relacionada aos periféricos embarcados. Exemplo (TI): DaVinci: Núcleo Cortex A8 com periféricos para aplicações multimídia on chip.

Sitara: Núcleo Cortex A8 sem periféricos on chip específicos para multimídia.

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Exemplos de kits para desenvolvimento

Beagleboard xM Beaglebone Pandaboard TechNexion i.MX53 Quick Blizzard Board Start Board

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Principais Quebras de Paradigma

Haverá uma (inevitável) mudança relacionada à:

1. Definição do hardware de desenvolvimento; 2. Definição da ferramenta de desenvolvimento (IDE + Compilador); 3. Execução de testes iniciais (ambientação com um Pisca-LED); 4. Construção de um framework próprio; 5. Desenvolvimento de produtos e de soluções para os clientes.

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Principais Quebras de Paradigma 1. Definição do hardware de desenvolvimento Principais Critérios (com microcontroladores):

a) Custo ($) b) Periféricos embarcados c) Facilidade de aquisição (tempo, burocracia, etc)

Principais Critérios (com microprocessadores):

a) Facilidade de aquisição (tempo, burocracia, etc) b)Custo ($) c) Periféricos existentes no kit

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Principais Quebras de Paradigma 2. Definição da ferramenta de desenvolvimento (IDE + Compilador) Microcontroladores:

a) Custo ($) b) Facilidade de uso c) Suporte

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Principais Quebras de Paradigma 2. Definição 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, São Paulo

Principais Quebras de Paradigma 3. Efetuar testes iniciais (ambientação 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 começarão as diferenças importantes entre sistemas microcontrolados e microprocessados.

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Principais Quebras de Paradigma 3. Efetuar testes iniciais (ambientação com um Pisca-LED) Microprocessadores: a) Escolher um sistema operacional Pago ou Gratuito? Suponhamos Linux b) Qual distribuição? Qual é a mais leve? Qual me dá os recursos gráficos que necessito? ... c) Definir os recursos do SO que deverão ser embarcados Modo Console? Modo Gráfico? GNOME? ...

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Principais Quebras de Paradigma 3. Efetuar testes iniciais (ambientação com um Pisca-LED) Microprocessadores: d) Definir bibliotecas para periféricos específicos Áudio? OpenGL? Ethernet? USB? I2C? SPI? ...

e) Definir se serão usadas bibliotecas de terceiros SDK do fabricante? Qt? ...

f) Preparar um cartão SD com os recursos necessários 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, São Paulo

Principais Quebras de Paradigma 3. Efetuar testes iniciais (ambientação com um Pisca-LED) Microprocessadores: g) Configurar parâmetros 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, São Paulo

Principais Quebras de Paradigma 3. Efetuar testes iniciais (ambientação com um Pisca-LED) Microprocessadores: h) Implementar a aplicação (Pisca-LED)

Onde estão 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 faço um delay? (LIBs?)

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Principais Quebras de Paradigma 3. Efetuar testes iniciais (ambientação com um Pisca-LED) Microprocessadores: i) Compilar a aplicação Como configuro o ambiente para compilar a aplicação? j) Embarcar a aplicação Como transfiro a aplicação? Onde devo colocar a aplicação? Como executar a aplicação

(é possível detalhar mais, mas isso não é necessário neste momento)

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Principais Quebras de Paradigma 4. Construir um framework Microcontroladores: a) Definir os periféricos que normalmente serão usados b) Implementar e testar bibliotecas c) Manter um backup/controle de versão das bibliotecas

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Principais Quebras de Paradigma 4. Construir um framework Microprocessadores: a) Definir os periféricos que normalmente serão usados - Identificar bibliotecas existentes - Testar as bibliotecas disponíveis - Definir uma estratégia de acesso/uso de periféricos sem biblioteca disponível (kernel space? user space?) b) Implementar e testar bibliotecas (este trabalho também é feito com microcontroladores, mas agora o ambiente é mais complexo) c) Manter um backup/controle de versão das bibliotecas (seria interessante salvar, também, imagens Linux?)

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Principais Quebras de Paradigma 5. Desenvolver produtos e soluções para os clientes Microcontroladores: a) Criar uma aplicação-base, com as bibliotecas necessárias b) Acrescentar funcionalidades específicas 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 segurança dos seus dados d) Criar um procedimento para embarcar a aplicação (para os clientes)

(e até agora não estamos pensando no projeto de hardware)

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Conclusão desta primeira análise

Para quem está iniciando, o primeiro desafio consiste em efetuar o primeiro teste de ambientação (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 próprio método de trabalho.

Considerando que este seja o seu primeiro contato, as informações a seguir o ajudarão com o primeiro desafio!

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

PARTE II: UM EXEMPLO DE SOLUÇÃO

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Objetivo desta Segunda Parte

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

26-27 de Junho/June 2012 Transamerica Expo Center, São 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, São Paulo

2. Preparação do ambiente de desenvolvimento

Um desktop com o Ubuntu Linux 10.04 LTS (32 bits) Observações:

1. Podem ser usadas máquinas virtuais. No entanto, é recomendada uma máquina real.

2. Você poderá manter Windows e Linux em uma mesma máquina usando um dual-boot. Há muita informação sobre isso no Google.

3. Não 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, São Paulo

3. Escolha de uma Distribuição Linux (a ser embarcada)

Angstrom Linux (leve e free)

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

4. Produzir uma imagem da distribuição Linux

Por meio de um Buildsystem (gerador de imagens Linux): • Buildroot (execução offline – na sua máquina); • Narcissus (execução online – você configura na página 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, São Paulo

5. Preparar um cartão microSD

a) Insira o cartão no desktop e descubra o seu nome de dispositivo: $ demesg | tail [ 60.625434] sd 4:0:0:0: [sdb] Assuming drive cache: write through

[ 60.629428] sd 4:0:0:0: [sdb] Assuming drive cache: write through

[ 60.629436] sdb: sdb1

[ 60.635440] sd 4:0:0:0: [sdb] Assuming drive cache: write through

[ 60.635448] sd 4:0:0:0: [sdb] Attached SCSI removable disk

Neste exemplo: dispositivo /dev/sdb (que possui uma partição apenas, chamada sdb1)

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

5. Preparar um cartão 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 demonstração = imagem completa)

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

5. Preparar um cartão microSD

c) Descompacte a imagem do Angstrom Linux $ unzip xMc_4_25.zip (necessários 4GB de espaço livre no HD)

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

5. Preparar um cartão microSD

d) Grave a imagem descompactada no cartão 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 partições (se estiverem montadas) e retire o cartão microSD do micro. Ele está pronto para ser usado com a Beagleboard xM.

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

6. Efetuando o boot e testando o cartão microSD

Conexões essenciais: Mouse; Teclado e; Monitor (conectados à Beagleboard xM).

>>> Demonstração

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

7. Resumo do Processo de Boot

1. Um bootloader de 1º estágio (X-Loader), embutido em uma ROM existente no chip da MPU, verifica o estado lógico de alguns pinos de entrada para determinar onde está armazenado o bootloader de 2º estágio (o U-Boot).

2. Após determinar onde está o U-Boot, o X-Loader configura os periféricos necessário para carregar o bootloader de 2º estágio.

3. O U-boot é carregado na memória, e lê o seu arquivo de configuração (uEnv.txt). Após isso, o U-Boot configura demais periféricos e inicia a carga e a execução do kernel do Linux.

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

7. Resumo do Processo de Boot

IMPORTANTE: • Na Beagleboard xM, o uBoot fica na partição primária de um cartão

microSD.

• Esta partição primária é do tipo FAT32.

• A distribuição Linux fica na segunda partição (ext3).

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

8. Compilação e execução do programa de teste

Opções: • Crosscompiler: desenvolver e compilar no Desktop. Descarregar

para o kit de desenvolvimento. Requer preparação do ambiente de desenvolvimento.

• Compilação diretamente no kit: a compilação é mais demorada do que em um desktop, mas dispensa o trabalho de configuração da máquina de desenvolvimento.

Sempre inicie pelo caminho menos complexo, para aumentar a sua chance de sucesso. Portanto, será usada compilação pelo kit.

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

9. Pacotes de programas necessários a compilações

Abra uma janela TERMINAL na Beagleboard xM e faça 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 simbólico 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, São Paulo

10. Primeiro programa de teste (teste de compilação)

#include <stdio.h>

int main()

{

printf("\n\n\rAlo mundo!\n\n\r");

return 0;

}

Salve com o nome: alo_mundo.c Compile com: $ gcc alo_mundo.c –o alo_mundo Execute com: $ ./alo_mundo

>>> Demonstração

26-27 de Junho/June 2012 Transamerica Expo Center, São 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 periféricos no sistema de arquivos) Nesta demonstração será usado o SYSFS.

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

11. Acessando Hardware no Linux

Os LEDs da Beagleboard xM estão mapeados no SYSFS, de acordo com o seguinte modelo: Periférico Pasta Atributos do periférico Arquivos Configurações e transmissão de dados Escrita Leitura de status e recebimento de dados Leitura O mapeamento de periféricos fica em /sys/class

26-27 de Junho/June 2012 Transamerica Expo Center, São 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, São 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 automático sobre o LED $ echo "none" > trigger

Ligar $ echo 1 > brightness

Desligar $ echo 0 > brightness

>>> Demonstração

26-27 de Junho/June 2012 Transamerica Expo Center, São 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, São Paulo

12. Segundo Programa de Teste (pisca_led.cpp)

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

>>> Demonstração

IMPORTANTE: 1. Extensão .C é usada com fontes escritos em C estruturado. Esses

fontes são compilados com o programa gcc. 2. Extensão .CPP é usada com fontes escritos em C++ (Programação

Orientada a Objetos). Esses fontes são compilados com o programa g++.

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

CONSIDERAÇÕES FINAIS

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Considerações Finais

• Reserve tempo para se adequar ao desenvolvimento com microprocessadores. Este requisito é independente do fabricante/kit escolhido.

• Desenvolver usando microprocessadores não é extremamente difícil, mas é complexo: organização e paciência são fundamentais.

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Considerações Finais

• Não queime etapas, pois uma informação ou uma experiência ignorada podem fazer falta depois.

• Aceite que eventualmente será necessário buscar ajuda e, com isso, desenvolva o seu método de busca (comunidade, amigos, eventos, treinamentos, etc).

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

Considerações Finais

• Linux é de uso livre. • Muitos dos seus recursos são gratuitos. • No entanto, é grande o volume de conhecimento e experiência

necessário para desenvolver com naturalidade usando Linux (principalmente Linux embarcado em algum hardware).

• Portanto, adquira o hábito de investir na sua qualificação.

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

REFERÊNCIAS

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

26-27 de Junho/June 2012 Transamerica Expo Center, São Paulo

DADOS PARA CONTATO

Prof. Wagner Augusto Pires Coimbra

wagner@techtraining.eng.br Currículo Lattes: http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4596982Z6

top related