Sistemas Embarcados com
Linux
Diego F. Nascimento
[email protected]
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
Objetivo
• O objetivo deste mini curso é apresentar alguns conceitos
básicos sobre desenvolvimento para sistemas embarcados
utilizando sistema operacional Linux.
Apresentação do Instrutor
• Engenheiro de Computação
• Atualmente atua como pesquisador técnico no Genius
Instituto de Tecnologia desenvolvendo aplicações de
reconhecimento de fala e sistemas embarcados.
Introdução aos Sistemas Embarcados
O que são Sistemas Embarcados?
• São Sistemas computacionais projetados para
executar tarefas pré-definidas
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
Introdução aos Sistemas Embarcados
Exemplo de Sistemas Embarcados mais Comuns
•
•
•
•
•
•
•
•
PDAs
SmartPhones
Celulares
MP3 Players
Video Games
Impressoras
Câmeras
GPS
Introdução aos Sistemas Embarcados
Exemplo de Sistemas Embarcados de Tempo Real
• Aviônicos
•Sistema de Navegação
•Sistemas de Monitoramento
de Pacientes
• Sistemas de Injeção
Eletrônica
Introdução aos Sistemas Embarcados
Arquitetura Básica
• 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)
Introdução aos Sistemas Embarcados
Processadores mais Utilizados
• PowerPC (Freescale)
• ARM (Cirrus)
• MIPS (MIPS Technologies)
• SuperH - Hitachi
• X86 - Intel
Introdução aos Sistemas Embarcados
Sistemas Operacionais Disponíveis
• Embedded Linux
• RTLinux
• Windows Mobile
• Windows CE
• Windows XP Embedded
• Palm OS
• FreeRTOS
• Symbian
• LynxOS
Desenvolvimento para Sistemas Embarcados
Desenvolvimento – Conceitos Básicos
Introdução
• 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
Desenvolvimento – Conceitos Básicos
Plataforma de Desenvolvimento - Host
• 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.
Desenvolvimento – Conceitos Básicos
Plataforma Alvo - Target
• 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.
Desenvolvimento – Conceitos Básicos
Tipos de Configuração Host/Target
• É 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
Desenvolvimento – Conceitos Básicos
Tipos de Configuração Host/Target – Linked Setup
• 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.
Desenvolvimento – Conceitos Básicos
Esquema Linked Setup
Desenvolvimento – Conceitos Básicos
Tipos de Configuração Host/Target – Removable
Storage Setup
• 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
Desenvolvimento – Conceitos Básicos
Esquema Removable Storage Setup
Desenvolvimento – Conceitos Básicos
Tipos de Configuração Host/Target – Standalone Setup
• 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.
Desenvolvimento – Conceitos Básicos
Esquema Standalone Setup
Desenvolvimento – Conceitos Básicos
Cross-Compiling
• É 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.
Desenvolvimento – O Linux
O que é 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.
Desenvolvimento – O Linux como Host
Modelo de Desenvolvimento Linux
• 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.
Desenvolvimento – O Linux como Host
GNU Build Tools
• É 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.
Desenvolvimento – O Linux como Target
Características
• É 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.
Desenvolvimento – O Linux como Target
Estrutura de um Sistema Embarcado com Linux
• Bootloader
• Kernel
• Sistema de Arquivos
Desenvolvimento – O Linux como Target
Bootloader
• Primeiro software que é executado em um sistema
embarcado
• Executa a detecção e inicialização do hardware
• Alguns possuem interfaces tftp para download de
arquivos
• Inicializa o kernel
• Os mais famosos são o u-boot e o redboot, lilo e grub
Desenvolvimento – O Linux como Target
Kernel
• É o linux propriamente dito.
• Responsável por gerenciar o hardware do sistema assim
como as tarefas executadas pelo mesmo.
• Pode ser baixado em www.kernel.org
• Possui suporte para muitos hardwares disponíveis no
mercado.
Desenvolvimento – O Linux como Target
Sistema de Arquivos
• É responsável pelo armazenamento de dados do sistema.
• Os mais comuns são: JFFS2, cramfs, ext3, ext2, fat32, ntfs
• JFFS2 e cramfs são os mais utilizados em sistemas
embarcados.
• É composto por uma estrutura de diretórios baseada na
FHS (Filesystem Hierarchy Standard)
• É nele que são armazenadas as aplicações.
Desenvolvimento – O Linux como Target
Estrutura do Sistema de Arquivos
Desenvolvimento – O Linux como Target
Exemplo de Sistemas Embarcados que Utilizam Linux
Desenvolvimento – O Linux como Target
Exemplo de Sistemas Embarcados que Utilizam Linux
Desenvolvimento – O Linux como Target
Exemplo de Sistemas Embarcados que Utilizam Linux
Desenvolvimento – O Linux como Target
Exemplo de Sistemas Embarcados que Utilizam Linux
Desenvolvimento – O Linux como Target
Exemplo de Sistemas Embarcados que Utilizam Linux
Referências
• http://www.embeddedarm.com
• http://www.ucdot.org/archive/tb/tb20020807.shtml
• http://www.linuxdevices.com
Perguntas e Dúvidas
Download

Desenvolvimento para Sistemas Embarcados