Sistemas Embarcados com Linux Diego F. Nascimento [email protected].

36
Sistemas Embarcados com Linux Diego F. Nascimento [email protected]

Transcript of Sistemas Embarcados com Linux Diego F. Nascimento [email protected].

Page 1: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Sistemas Embarcados com Linux

Diego F. [email protected]

Page 2: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Tópicos

• Introdução aos Sistemas Embarcados• O que são?• Arquitetura Básica• Processadores mais Utilizados• Sistemas Operacionais Disponíveis.

• Desenvolvimento para Sistemas Embarcados• Conceitos Básicos

• Plataforma Alvo (target) e Plataforma de Desenvolvimento (host)• Tipos de Configuração Host-Target• Cross-Compiling

• Linux como Ambiente de Desenvolvimento• Modelo de Desenvolvimento em Linux• Ferramentas Disponíveis (GNU Build Tools)

• O Linux na Plataforma Alvo (Embarcado)• O Kernel Linux• Sistema de Arquivos• Bootloader

Page 3: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Objetivo

• O objetivo deste mini curso é apresentar alguns conceitos básicos sobre desenvolvimento para sistemas embarcados utilizando sistema operacional Linux.

Page 4: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Apresentação do Instrutor

Page 5: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Introdução aos Sistemas Embarcados

O que são Sistemas Embarcados?

• São Sistemas computacionais projetados para executar tarefas pré-definidas

Page 6: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Introdução aos Sistemas Embarcados

Características

• Interfaces Restritivas.• Pouca memória principal• Baixa capacidade de processamento• Baixo consumo de energia• Alguns devem executar suas tarefas em

tempo real• Geralmente são produzidos em larga escala

Page 7: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Introdução aos Sistemas Embarcados

Exemplo de Sistemas Embarcados mais Comuns

• PDAs • SmartPhones• Celulares• MP3 Players• Video Games• Impressoras• Câmeras• GPS

Page 8: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Introdução aos Sistemas Embarcados

• Aviônicos •Sistema de Navegação•Sistemas de Monitoramento de Pacientes• Sistemas de Injeção Eletrônica

Exemplo de Sistemas Embarcados de Tempo Real

Page 9: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Introdução aos Sistemas Embarcados

• Processador• Memória Principal• Memória Flash/EEPROM/ROM• Periféricos (Sensores, Atuadores, Interface Serial, USB, etc)• Interface para Gravação • Interface de Usuário (Opcional)

Arquitetura Básica

Page 10: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Introdução aos Sistemas Embarcados

• PowerPC (Freescale)

• ARM (Cirrus)

• MIPS (MIPS Technologies)

• SuperH - Hitachi

• X86 - Intel

Processadores mais Utilizados

Page 11: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Introdução aos Sistemas Embarcados

• Embedded Linux • RTLinux• Windows Mobile• Windows CE• Windows XP Embedded• Palm OS• FreeRTOS• Symbian• LynxOS

Sistemas Operacionais Disponíveis

Page 12: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento para Sistemas Embarcados

Page 13: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – Conceitos Básicos

• Devido as limitações das plataformas embarcadas é necessário uma plataforma mais robusta para o desenvolvimento das aplicações.

• Esta plataforma é chamada de plataforma de desenvolvimento ou simplesmente Host

• Já as plataformas onde as aplicações serão executadas são chamadas de Plataforma Alvo ou simplesmente Target

Introdução

Page 14: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – Conceitos Básicos

• Geralmente são computadores de propósito geral (Computadores Pessoais)• Possuem grande capacidade de armazenamento• Possuem grande quantidade de processamento• Disponibiliza interfaces mais adequadas para o desenvolvedor.• Éonde são executadas as ferramentas necessárias para o desenvolvimento de aplicações.

Plataforma de Desenvolvimento - Host

Page 15: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – Conceitos Básicos

• Produto propriamente dito.• Plataforma onde as aplicações serão executadas• Suas características foram citadas anteriormente• Geralmente são utilizadas plataformas de referência para o desenvolvimento até chegar ao produto final.

Plataforma Alvo - Target

Page 16: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – Conceitos Básicos

• É necessário uma interface entre a plataforma host e a plataforma target

• Atualmente existem 3 configurações para estas interfaces que são mais comuns:

• Linked Setup• Removable Storage Setup• Standalone Setup

Tipos de Configuração Host/Target

Page 17: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – Conceitos Básicos

• Configuração mais utilizada atualmente• Host é conectado ao Target através de um cabo.• Geralmente utiliza interface RS-232, USB ou Ethernet para comunicação com o target.• Possibilita depuração de código “remotamente”• Atualmente, é utilizado este tipo de configuração para a gravação e depuração de software na plataforma alvo com o auxílio de JTAGs.

Tipos de Configuração Host/Target – Linked Setup

Page 18: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – Conceitos Básicos

Esquema Linked Setup

Page 19: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – Conceitos Básicos

• Utiliza dispositivos removíveis para cópia da aplicação desenvolvida para a plataforma alvo.• Antigamente eram utilizadas placas de gravação contendo sockets para a memória a qual era utilizada na plataforma alvo.• Modelo quase obsoleto, pois este não permite a depuração da aplicação de forma eficaz

Tipos de Configuração Host/Target – Removable Storage Setup

Page 20: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – Conceitos Básicos

Esquema Removable Storage Setup

Page 21: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – Conceitos Básicos

• São utilizados em plataforma alvo bem mais robustas.• As ferramentas de desenvolvimento são executadas na plataforma alvo.• A plataforma de desenvolvimento é utilizada apenas para acessar a plataforma alvo.• Devido a evolução das plataformas embarcadas, este modelo já vem sendo utilizado.

Tipos de Configuração Host/Target – Standalone Setup

Page 22: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – Conceitos Básicos

Esquema Standalone Setup

Page 23: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – Conceitos Básicos

• É a construção de uma aplicação para um plataforma distinta da qual está sendo construída.• O Compilador, é executado na plataforma de desenvolvimento, porém gera um binário para outra plataforma: A plataforma Alvo.• Um binário compilado para uma plataforma, só pode ser executado nesta, pois as instruções geradas são específicas para cada arquitetura de processador.

Cross-Compiling

Page 24: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – O Linux

• Sistema Operacional Robusto• Desenvolvido por Linus Torvalds.• Baseado no antigo Minix (Derivado do Unix).• Possui seu código fonte aberto.• Licença GPL – (utilizar, modificar, estudar, distribuir)• Bastante visado pelas empresas devido ao baixo custo.

O que é o Linux?

Page 25: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – O Linux como Host

• A grande maioria das ferramentas são utilizadas através de linhas de comando.• Alguns IDEs também são utilizados.• São utilizadas linguagens auxiliares como shellscript, perl e python para auxiliar no processo de desenvolvimento.• GNU Build Tools é o conjunto de ferramentas que é mais utilizado entre os desenvolvedores Linux.

Modelo de Desenvolvimento Linux

Page 26: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – O Linux como Host

• É um conjunto de ferramentas (softwares) utilizadas para facilitar o processo de compilação e construção de aplicações• É composta pelos seguintes softwares:

• autoconf – gera scripts para auxiliar na construção de Makefiles• automake – auxilia na geração de makefiles portáveis• libtool – conjunto de ferramentas para geração de biliotecas estáticas e dinâmicas.

GNU Build Tools

Page 27: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – O Linux como Target

• É exatamente o mesmo linux utilizado em computadores pessoais.• Todos os recursos que não são utilizados na plataforma embarcada são descartados.• Algumas aplicações essenciais para execução do sistema são customizadas.• Alguns drivers de dispositivos precisam ser desenvolvidos.

Características

Page 28: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – O Linux como Target

• Bootloader• Kernel• Sistema de Arquivos

Estrutura de um Sistema Embarcado com Linux

Page 29: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – O Linux

Exemplo de Sistemas Embarcados que Utilizam Linux

Page 30: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – O Linux

Exemplo de Sistemas Embarcados que Utilizam Linux

Page 31: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – O Linux

Exemplo de Sistemas Embarcados que Utilizam Linux

Page 32: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – O Linux

Exemplo de Sistemas Embarcados que Utilizam Linux

Page 33: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Desenvolvimento – O Linux

Exemplo de Sistemas Embarcados que Utilizam Linux

Page 34: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Conclusões

• A importância do..

Page 35: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Referências

• http://www.uclinux.org• http://www.embeddedarm.com

Page 36: Sistemas Embarcados com Linux Diego F. Nascimento diego.fnascimento@gmail.com.

Perguntas e Dúvidas