Autor Tópico: Linux em Tempo Real  (Lida 4393 vezes)

Description:

0 Membros e 1 Visitante estão vendo este tópico.

Offline Guia CNC

  • Guia CNC
  • Administrador
  • CNCMASTER
  • *******
  • Posts: 15640
  • Sexo: Masculino
    • Grupo CNC Caseiras Brasil Facebook
  • Cidade - UF: Minas Gerais
  • Nome:: Guia CNC
  • Profissão: Administrador
Linux em Tempo Real
« Online: 16 de Setembro de 2008, 18:44 »

Linux em Tempo Real
por Cézar Taurion - Última modificação 04/05/2008 21:00

Nos últimos anos temos visto uma crescente utilização de softwares embarcados em praticamente todos os objetos construídos pelo homem. Software embarcado é o software que é embutido dentro de um equipamento, como um sistema de injeção eletrônica de um automóvel, permitindo que este equipamento atue com maior funcionalidade e flexibilidade.

Antes apenas utilizados em sistemas complexos como sistemas industriais, aeronaves e navios, hoje vemos softwares embarcados em geladeiras, televisores e fornos de microondas. Estes equipamentos tornam-se cada vez mais sofisticados, demandando mais e mais complexidade no seu hardware e software embarcado.

Muitas indústrias que tradicionalmente competiam pela qualidade do seu produto físico, como automóveis e eletrodomésticos, estão começando, de maneira crescente e rápida, a adotar software em seus produtos. Em alguns setores, como o automotivo as estimativas apontam que mais de 70% das futuras inovações serão baseadas em tecnologia de software e não mais nas partes mecânicas. Estima-se que por volta de 2010 os modelos de automóveis topo de linha deverão incorporar mais de 100 milhões de linhas de código de software em cada veículo. O uso do software embarcado na indústria não é mais uma questão restrita aos setores de Pesquisa e Desenvolvimento (P&D), mas parte integrante e essencial das estratégias de diferenciação competitiva dos seus produtos.

Alguns números já demonstram de forma inequívoca a importância do software embarcado no setor industrial. Quando falamos em diferenciação competitiva, já observamos que parcela significativa da diferenciação entre os produtos baseia-se na maior oferta de funcionalidade, suportada por tecnologia de software. A revolução digital tem mudado e vai continuar mudando a dinâmica de muitas indústrias. Na indústria de eletroeletrônicos vemos claramente a digitalização substituindo o mundo analógico.

As transformações não ocorrem apenas em máquinas sofisticadas, como automóveis de luxo, mas já vemos lavadoras de roupa com software embarcado possibilitando uma maior oferta de funções. As vantagens dos objetos falarem uns com os outros e com os computadores que processam as aplicações nas empresas são imensas. Para um fabricante de geladeiras, saber com antecedência de eventuais problemas de manutenção identificados por sensores e transmitidos via Internet aceleram as atividades da assistência técnica e transformam as relações com os seus clientes.

Neste mercado o Linux tem papel de extrema importância, principalmente pelo custo de entrada baixo. Como o Linux não demanda pagamento de royalties, o usuário não vai pagar um valor adicional pelo custo da funcionalidade adicionada a uma geladeira...O resultado é que o Linux está caminhando para se tornar o sistema dominante no ambiente de sistemas embarcados. Recentes pesquisas apontam que os desenvolvedores de sistemas embarcados estão migrando ou planejando a migração para Linux, migrando dos sistemas proprietários que anteriormente dominavam este mercado. Já existem muitos negócios gravitando neste mundo, inclusive distribuidoras especializadas como a "Red Hat" do Linux embarcado, a MontaVista (www.mvista.com).

A liderança do Linux nos sistemas embarcados tem um significado importante, pois à medida que se dissemine em milhões de dispositivos (em número muito maior que os PCs...), acarretará uma forte influencia nas plataformas tradicionais. Como software é software, qualquer que seja a plataforma, desenvolvedores acostumados a desenvolver aplicações para o ambiente Linux em um celular, podem rapidamente adaptar seus conhecimentos para desenvolver também aplicações para qualquer outra plataforma.

Porque o Linux tem feito tanto sucesso neste cenário? O mercado de software embarcado tem peculiaridades específicas. Apresenta uma ampla diversidade de funcionalidades e utiliza uma gama muito grande de processadores. É uma diversidade diferente do ambiente de computação tradicional, onde existe uma concentração em poucos processadores.

O software embarcado deve apresentar alta estabilidade. Uma aeronave ou uma usina nuclear não pode apresentar falhas no software. Outra característica de muitos dispositivos é a necessidade de operação em tempo real, principalmente nos equipamentos de controle de processo.

O software embarcado 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.

O fator custo é de grande importância em sistemas embarcados. Um telefone celular não pode custar o dobro de outro por causa do preço do software básico que esteja embutido nele. O sistema operacional de um equipamento destes é totalmente invisível e não desperta a percepção do comprador. As diferenças devem ser claramente perceptíveis, como um maior número de funcionalidades disponibilizadas. Um sistema operacional baseado nos princípios do Open Source tira um peso grande do custo, tornando-se bem atraente para este setor.

O Linux, pela qualidade de seu código já é hoje peça fundamental da arquitetura de tecnologia de sistemas embarcados militares dos EUA. A Marinha americana baseou sua arquitetura, denominada NOACE - Navy Open Architecture Computing Environment em padrões abertos e considera o Linux fundamental em sua estratégia de reduzir os tempos e custos de desenvolvimento de seus sistemas embarcados em navios, aeronaves e submarinos. O primeiro grande projeto da Marinha americana a adotar esta tecnologia é a nova classe de destroyers DD(X), cujo primeiro navio é o DDG 1000, Zunwalt. O software destes navios vai rodar em servidores Blade da IBM, que também contribuiu decisivamente para adaptar os ambientes Linux e Java (WebSphere Real Time) para operar em tempo real.

O mesmo conceito de padrões abertos foi adotado pelo Exército americano em sua arquitetura chamada de WSCOE – Weapons Systems Common Operating Environment.

De maneira geral, os usuários (consumidores) destes equipamentos não sabem e nem precisam saber que o Linux está rodando em seus dispositivos. Mas para os fabricantes o fato do Linux estar disponível em código fonte, permite que seja usado sem pagamento de royalties para cada produto vendido, além de facilitar em muito a customização, praticamente montando-o para as necessidades especificas de cada aparelho. Isto dá aos fabricantes um completo controle sobre o dispositivo, permitindo fazer modificações e implementar inovações muito rapidamente.


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.co m) 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.

juliocno

  • Visitante
Re: Linux em Tempo Real
« Resposta #1 Online: 29 de Outubro de 2008, 10:05 »
TEMPO REAL, tenho lido com frequencia sobre esta frase aqui no forum, no que diz respeito a execução dos programas que acionam as nossas maquininhas. Percebi que muitos companheiros tem uma visão distorcida do que realmente é isto e o que realmente significa para nosso universo CNC.

Tenho comichões em escrever um post bem detalhado sobre isto, por hora, digo que o tão falado "REAL TIME" , no nosso caso, é mais um problema de hardware do que de software...

Offline C N C N o w !

  • CNCMASTER
  • ******
  • Posts: 6300
  • Sexo: Masculino
Re: Linux em Tempo Real
« Resposta #2 Online: 29 de Outubro de 2008, 11:02 »
Tenho comichões em escrever um post bem detalhado sobre isto ...

Pois escreva, Júlio, será muito bem-vindo ...

Não prometo não atirar pedras, mas posso escolher as menorzinhas ... he, he, he ... ;D

juliocno

  • Visitante
Re: Linux em Tempo Real
« Resposta #3 Online: 29 de Outubro de 2008, 11:07 »
Citação de: C N C N o w ! link=topic=2988.msg65968#msg65968
Não prometo não atirar pedras, mas posso escolher as menorzinhas ... he, he, he ... ;D
[/quote

Jorge... eu tinha certeza que voce ia ser o primeiro a se manifestar... :D :D :D

Offline F2S

  • Novato
  • *
  • Posts: 0
  • Sexo: Masculino
  • Cidade - UF: Santos - SP
Re: Linux em Tempo Real
« Resposta #4 Online: 29 de Outubro de 2008, 11:54 »
Julio,

Apenas uma dica, se me permite.

Ao responder com uma citação, escolha citar e digite sua mensagem fora dos colchetes. Assim a mensagem citada ficará enquadrada com o fundo azul, e a sua mensagem limpa do lado de fora.  :)

juliocno

  • Visitante
Re: Linux em Tempo Real
« Resposta #5 Online: 29 de Outubro de 2008, 11:58 »
É Serrão, eu sei...
O vacilo meu foi ter tentado diminuir um pouco da citação, dai não percebi que escrevi dentro dela...

Mas... vai ficar feio mesmo porque não posso editar, nem ligo, hahahaha ;)

Offline F2S

  • Novato
  • *
  • Posts: 0
  • Sexo: Masculino
  • Cidade - UF: Santos - SP
Re: Linux em Tempo Real
« Resposta #6 Online: 29 de Outubro de 2008, 12:36 »
Ok ! Julio,

Apenas confirmando, a minha intenção foi tão somente informar.

 

/** * */