Skip to content. Skip to navigation

Eletronica.org

Sections
Personal tools
You are here: Home Artigos Eletrônica Digital e Sistemas Embarcados Linux em Tempo Real (2)

Document Actions

Linux em Tempo Real (2)

by Cezar Taurion — last modified 04/05/2008 21:00

Há poucas semanas levantei um post abordando Linux embarcado. Interessante que foram colocados muitos comentários e recebi diversos emails sobre o assunto. O tema está realmente despertando interesse. Assim, acho que vale a pena extrair alguns paragráfos do meu livro “Software Embarcado: a Nova Onda da Informática”, editado pela Brasport e compartilhá-los com vocês.


O mercado de software embarcado tem peculiaridades específicas. Apresenta uma ampla diversidade de funcionalidades e utilizam uma gama muito grande de processadores. Os softwares embarcados apresentam uma variedade imensa de arquiteturas. É uma diversidade diferente do ambiente de computação tradicional, como desktops, onde existe uma concentração em poucos processadores, como Intel e AMD.

Uma característica do software embarcado é que deve apresentar alta estabilidade. Uma aeronave ou uma usina nuclear não pode apresentar falhas no software. Claro que existem dispositivos menos exigentes quanto à falhas, como por exemplo, uma máquina de venda de refrigerantes (vending machine), onde uma eventual falha não causa maiores danos ou riscos de vida. Outra característica de muitos dispositivos é a necessidade de operação em tempo real, principalmente nos equipamentos de controle de processo.

Algumas falhas de software embarcado podem ser catastróficas. Por exemplo, na guerra das Malvinas, a fragata inglesa Sheffield foi afundada porque o software de seu radar identificou um míssil argentino como “amigo” e não acionou as defesas antimísseis. Na primeira Guerra do Golfo, em 1991, um pequena falha de software, com erros de precisão de 0,000000095 segundos em cada décimo de segundo, gerou uma imprecisão acumulada em 100 horas que fez com um míssil Patriot não conseguisse interceptar um míssil iraquiano Scud, que explodiu no alvo, matando 28 pessoas.

As interfaces de acesso também são variadas, indo de simples teclados e mouses, a sensores e atuadores especializados.

A maioria dos dispositivos dispõe de pouco espaço, e, portanto o software deve operar em ambientes de recursos computacionais limitados, como memória ou discos magnéticos. Assim, recursos como gerenciamento de discos, rotinas de grande impacto no desempenho de sistemas comerciais, torna-se pouca importância no contexto da computação embarcada.

Esta heterogeneidade aparece também no volume de vendas do software. Dispositivos embarcados podem ser vendidos aos milhões, como telefones celulares ou em poucas unidades, como um sistema de automação de planta industrial. Os preços dos equipamentos também variam de poucos reais até milhões de reais.

Esta diversidade de hardware e funcionalidade leva a uma indústria altamente fragmentada. Este cenário, tradicionalmente ocupado por sistemas operacionais proprietários, começa a ser ocupado pelo Linux.

Esta tendência pode ser explicada em parte pela crescente sofisticação dos equipamentos e dos sistemas embarcados. Quando as funções eram relativamente simples e por serem únicas, a solução mais adotada era a construção de um sistema proprietário e especifico. À medida que os equipamentos se sofisticam, aumenta a complexidade do sistema operacional embarcado, e a manutenção de equipes para desenvolvimento e manutenção de sistemas proprietários de uso especifico começa a ficar caro demais. Os sistemas operacionais começam a ter interfaces mais sofisticados como Ethernet, USB, Bluetooth e outros.

O Linux torna-se atrativo, pois com ele se pode partir de um sistema operacional escalável e modular, com uma base sólida e estável, que já suporta os principais interfaces e protocolos abertos. Não se precisa reinventar a roda, mas parte-se de uma porção significativa de código fonte já pronto e testado, para concentrar-se apenas na construção das especificidades necessárias a função de um determinado equipamento. A redução de tempo (time-to-market) e custos é bastante positiva. Outro impulsionador para o uso do Linux em sistemas embarcados é o próprio modelo de software livre, que não exige pagamento por licenças. Como muitos dispositivos são contados aos milhões, um pagamento de royalties tornaria o negócio inviável.

As empresas que atuam no setor de computação embarcada usam o código base do Linux, fazem modificações e criam aditivos, com funcionalidades específicas, direcionadas às suas necessidades. Além disso, como o código Linux é abrangente, faz-se também uma verdadeira lipoaspiração, cortando código desnecessário às funções embarcadas. O Linux não foi inicialmente projetado para o mercado de software embarcado e precisa, portanto, passar por estas cirurgias.

Entre as funções e modificações destacam-se as que permitem o Linux operar em tempo real; que permitem um start-up imediato (o tempo de boot de um equipamento embarcado não pode ser tão lento quanto o de um desktop); e que fazem o sistema ser extremamente eficiente, operando em um ambiente com um mínimo de recursos computacionais.

Como o kernel padrão do Linux não é um sistema em tempo real, seu tempo de resposta não é determinístico. Para operar em tempo real, existem duas alternativas, ou colocar o Linux operando em baixo de um sistema tempo real (na verdade um mini sistema operacional, apenas focado em tratar interrupções em tempo real) ou tornar o próprio kernel do Linux preemptível, ou seja, permitir que tarefas de alta prioridade obtenham controle do processador com a máxima presteza. O patch que permite o Linux ser preemptível foi adotado por Linus Torvalds no código base a partir da versão 2.5.

Adicionar um segundo kernel, de alta prioridade, significa que o kernel normal vai operar como uma tarefa de menor prioridade. Alguns puristas lembram que esta opção injeta um componente não Linux (e eventualmente proprietário) no cenário.

Embora as alternativas embarcadas não sejam compatíveis entre si, não chegam a criar variantes (forkings) do kernel do Linux. As empresas de sistemas embarcados criam suas novas versões de tempo real a partir da última versão do kernel, não fazendo atualizações em cima das versões anteriores já adaptadas, o que o distanciaria mais e mais do Linux standard. Em cima desta última versão é que atualizam e inserem as funcionalidades de tempo real. Com isso se mantém a compatibilidade com o código base do Linux, e concentram-se em apenas uma pequena parte do kernel, exatamente a que precisa de modificações para se comportar na modalidade de tempo real.

Com esta estratégia, as empresas de sistemas embarcados conseguem usufruir do apoio e suporte da própria comunidade, no que se refere a bugs do código base, sem necessidade de retrabalhos.

Todos estes impulsionadores têm levado a uma crescente importância do Linux como sistema operacional para computação embarcada. O mercado de eletrônica de consumo é um dos segmentos mais atuantes na adoção do Linux. Uma pesquisa no site LinuxDevices (www.linuxdevices.com) retorna centenas de produtos, que variam de celulares, smartphones, telefones para VoIP, PDAs, set-top-boxes da televisão digital e diversos equipamentos baseados em versões embarcadas do Linux.



*Cezar Taurion é gerente de novas tecnologias aplicadas da IBM Brasil. Seu blog pode ser acessado em www-03.ibm.com/developerworks/blogs/page/ctaurion.

Este artigo foi publicado com a devida autorização. Todos os direitos reservados ao autor.




Acesso rápido: Lista Completa de Projetos | Diretório de Artigos | Apostilas & E-Books | Política de Privacidade

Assine o informativo Eletronica.org

Log in


Forgot your password?
New user?
Recent Changes
All recent changes…
Conheça Também
Sites em Português
  - DQSoft
  - Gabiarra
  - SafiraTec
  - Feira de Ciências
  - RoboFEI
  - Transistor548
  - Rogercom.com
  - Pise na Grama
  - Electronics.com.br
  - Tecnocientista.info

Listas em Português
  - PicListBrasil
  - SisEembarcados

Sites em Inglês
  - Embedded.com
  - Hack a Day
  - Electr. Design
  - Arch Embedded!



[O que é isso?]
 

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: