Sistemas Embarcados
Introdução ao Linux embarcado e
Introdução ao Linux embarcado e
aspectos de software livre
Aula 02
Linux
• É um núcleo, não um sistema operacional • Altamente modulável
• usado desde servidores a equipamentos dedicados
• Desktop x embedded
• foco:
2
INF01059 - Sistemas Embarcados
• desktop: ferramentas e aplicativos para usuário final • embedded: ferramentas de desenvolvimento • Reflexo em:
• conjunto de drivers e sistemas de arquivos • utilitários
• necessidade de suporte à GUI
• número de usuários (single user x multiuser)
Por que Linux embarcado?
• Independência de fornecedor
• soluções proprietárias levam a dependência de fornecedor • Linux: várias distribuições (comerciais e livres)
• Time to market
• existência de porte de Linux para várias plataformasp p p • tempo é gasto no desenvolvimento da aplicação • desenvolvimento e testes em ambientes Linux e não
necessariamente na plataforma alvo • flexibilidade
Por que Linux embarcado?
• Vasta gama de drivers já existentes • Baixo custo
• desenvolvimento
• evita necessidade de licenças de software para ambientes e ferramentas de desenvolvimento
• treinamento e contratação
• treinamento em UNIX básico e não em algo específico • royalties
• Linux não tem royalties
• reduz custos em ambientes competitivos
Distribuições de Linux embarcado
• Comerciais
• vasta gama (www.linuxdevices.com)
• “Do-it-yourself”
• obtenção de um núcleo (www.kernel.org) • instalação de uma toolchain
5
INF01059 - Sistemas Embarcados
ç
• customização de pacotes
• especial atenção para: busybox e BSP (mais adiante...)
O mercado de Linux embarcado
6
INF01059 - Sistemas Embarcados
Projeção do mercado de Linux embarcado
Vale a pena acessar este site!!
Distribuição Linux: desktop x embarcados
• Distribuição = conjunto de pacotes de software
• bibliotecas, ferramentas,utilitários, documentação etc • instaladores e gerenciadores de software
• Embarcados versus desktop/servers
• binários para determinado processador/plataformap p p • ausência de ambientes de janelas
• ferramentas de desenvolvimento (analisadores de memória, depuradores etc)
Linux embarcado: algumas distribuições
• Blue Cat Linux (LynuxWorks)
• disponível para x86 e PowerPC
• Cadenux
• ARM7 e ARM9 (sem MMU)
• Denx
9
INF01059 - Sistemas Embarcados Denx
• PowerPC, ARM, MIPS e Xscale
• Embedded Debian (Emdebian)
• Intel IA-32, Motorola, Sparc, Alpha, ARM, PowerPC, MIPS, HP PA-RISC e IA64
• ElinOS
• PowerPC, x86, ARM/Xscale, MIPS e SH microprocs
Linux embarcado: algumas distribuições
• Metrowerks
• X86, ARM, PowerPC e ColdFire
• Monta Vista Linux
• IA32, PowerPC, ARM, MIPS, Xscale e Xtensa
• Embedix (Lineo)
10
INF01059 - Sistemas Embarcados Embedix (Lineo)
• disponível para PowerPC e x86, suporte para ARM está sendo implementado
• RTLinux (Wind River)
• RTLinux é um RTOS mínimo rodando Linux standard como uma thread preemptável
• uClinux (RT-Control)
• primeira adaptação de Linux para microcontroladores sem MMU
Como escolher? Sugestões de critérios
• Características gerais • Ambiente de desenvolvimento • Documentação • Suporte
Qual distribuição?
• Pacote• tem o necessário para o desenvolvimento do projeto?
• Documentação
• exemplos, manuais de referência, etc
• Software proprietário?Software proprietário?
• código binário para drivers, módulos, ferramentas etc • cuidado: dependência e royalties
• Upgrades
• contempla atualizações? • custos?
Qual distribuição?
• Flexibilidade
• suporta os objetivos • longo prazo
• Suporte
• contrato à parte ou incluído?
13
INF01059 - Sistemas Embarcados
p • custo?
• qualidade do suporte?
Desenvolvimento com Linux embarcado
• Distribuição comercial
• vantagens
• suporte (atenção ao contrato)
• ferramentas de desenvolvimento e utilitários (busybox/BSP) • desvantagem: depender de expertise não local
14
INF01059 - Sistemas Embarcados
g p p
• Distribuição própria
• vantagem: expertise e know-how locais • desvantagem: suporte e ferramentas
• Aspectos legais (licenças e propriedade intelectual) • Porte de boot loader e BSP
• Roadmap
Frequently Asked Questions
• O Linux é muito grande ?• O Linux é tempo real ?
• Posso proteger meu código proprietário ?
Frequently Asked Questions
• O Linux é muito grande ?• O Linux é tempo real ?
• Posso proteger meu código proprietário ?• Sistema operacional completo, mas modular
• empregar apenas o necessário • Tamanhos típicos
• (MIN) 4MB RAM + 2MB (Flash) • (MAX) 32MB RAM + 4 MB (Flash) • Distribuições específicas
Frequently Asked Questions
• O Linux é muito grande ?• O Linux é tempo real ?
• Posso proteger meu código proprietário ?
• Tem capacidade, mas com limitações • RTAI
17
INF01059 - Sistemas Embarcados
• Esforços em desenvolvimento
Frequently Asked Questions
• O Linux é muito grande ?• O Linux é tempo real ?
• Posso proteger meu código proprietário ?
• SIM, é possível, porém deve-se estar atento a alguns pontos
18
INF01059 - Sistemas Embarcados
alguns pontos • A seguir...
Linux e Open Source
• Pontos polêmicos (?)
• (re)distribuição do fonte • contaminação de licenças • propriedade intelectual
• Objetivo: desmistificar “lendas urbanas”j
Software livre
• Software que pode ser usado, copiado, estudado, modificado e redistribuído sem restrições
• licença de software livre + código fonte
• Garante os direitos autorais
• software público - renúncia à propriedade do programap p p p g
• Free Software Foundation (FSF) - www.fsf.org
As 4 liberdades
• Executar o programa para qualquer propósito
• Estudar o funcionamento e adaptálo às necessidades -acesso ao fonte
• Liberdade para redistribuir cópias
• Liberdade para aperfeiçoar, e liberar os aperfeiçoamentos,
21
INF01059 - Sistemas Embarcados
Liberdade para aperfeiçoar, e liberar os aperfeiçoamentos, para beneficiar a comunidade - acesso ao fonte
Ser software livre é...
• Garantir as 4 liberdades • Poder redistribuir cópias
• com ou sem modificações
• gratuitamente ou mediante pagamento
• Não ser necessário pagar ou pedir permissão para usá-lo
22
INF01059 - Sistemas Embarcados
Não ser necessário pagar ou pedir permissão para usá lo • Poder modificar para uso privativo sem comunicar a ninguém
Copyleft
• Trocadilho com copyright
• Obrigação de manter as 4 liberdades
• FSF: “O copyleft diz que qualquer um que distribuir o software, com ou sem modificações, tem que passar adiante a liberdade de copiar e modificar novamente o programa”
©
• Na prática
• software livre com copyleft, caso seja distribuído, deve manter a mesma licença
• nem todos softwares livres incluem copyleft
Política & software
• Duas correntes filosóficas
• Free Software Foundation (FSF)
• software livre é uma visão ética e social • seguir as 4 liberdades
• Open Source Initiative (OSI)
• software livre é uma visão pragmática • software livre é uma visão pragmática • atender 10 critérios para ser software aberto
• Na prática, as diferenças são...
• objetivos • filosofia • modo de agir
Discordância básica: condenação ou não de software proprietário
Open Source
• Definição formal segue 10 critérios
• redistribuição livre • código fonte • trabalhos derivados
• integridade do código fonte (autor) • não discriminar pessoas ou grupos
25
INF01059 - Sistemas Embarcados
g
• não discriminar ramos de empreendimento ou aréas • distribuição de licença
• licença não pode ser específica a um produto • licença não pode restringir outros softwares • licença deve ser neutra quanto às tecnologias
Relação FSF e OpenSource: licenças
26
INF01059 - Sistemas Embarcados
OpenSource FSF
GPL
Licenças de software livre
• Existem várias (cerca de 32) • Possível criar a sua própria
• atender as quatro liberdades • incluir ou não o copyleft
• ExemplosExemplos
• GNU GPL (GNU Public Licence) v3 - inclui copyleft • MPL (Mozilla Public Licence) - copyleft non-strong • ASL v2 (Apache Software Licence) - copyleft non-strong • Lesser GPL - copyleft non-strong
Licenças de código aberto
• Licença que define privilégios e restrições
• uso, modificação e (re)distribuição de software • deve atender os 10 critérios
• Existem 58 licenças open source
• consultar www.opensource.orgp g
GPL (GNU Public Licence)
• Garante as 4 liberdades
• Usada no núcleo do Linux e no GNU • Faz “contaminação” (copyleft)
• qualquer software que englobe um programa sob GPL
automaticamente herda a GPL, ou seja, deve-se tornar o código
29
INF01059 - Sistemas Embarcados
j g
fonte disponível
• válido para ligações estáticas e dinâmicas
E agora!??
LGPL (Lesser GNU Public Licence)
• Licença menos restritiva
• a maioria das bibliotecas importantes estão sob a LGPL e não sob a GPL (POSIX threads, glibc etc)
• Não faz contaminação
• Permite a criação de software proprietário
30
INF01059 - Sistemas Embarcados
ç p p
Licenças no Linux
• Divisão em duas partes• espaço de núcleo (kernel) • espaço de usuário • Contaminação GPL
• no núcleo, seus derivados e
Espaço de usuário
componentes
• não afeta o espaço de usuário desde que sejam feitas apenas chamadas de sistema
Espaço de núcleo
Chamadas de sistema
Propriedade intelectual
• É possível preservar com código aberto • Procedimento
• identificar as partes sensíveis
• não usar software GPL (ou derivados) ou outra licença que gere contaminação não desejada
• Inclui ligação estática e dinâmica com bibliotecas • isolar bem componentes de código aberto proprietário
• Solução
• usar código/programas sob LGPL (ou similar) • interfacear com o núcleo com chamadas de sistema
• CUIDADO: módulos do núcleo
Conclusões
• Linux embarcado é uma realidade
• Pode ser usado em determinadas aplicações de tempo real • Possível proteger propriedade intelectual
• cuidados na fase de desenvolvimento
• Distribuição comercial x livre
33
INF01059 - Sistemas Embarcados Distribuição comercial x livre
• relação custo x benefício a ser analisada com cuidado