Newsletter

Mantenha-se informado sobre as nossas novidades com nosso newsletter semanal, todas as segundas-feiras

Pois bem, pessoal, esta é a quarta e última parte do artigo sobre os Sistemas Operacionais "embarcados". Vejam as outras: parte I, parte II e parte III.

É claro que há outras opções além das mostradas aqui, mas o curto espaço de tempo não me permitiu estudá-las e, muito menos, comentá-las.

Desta vez, falarei de três sistemas que não poderiam faltar: eCos, Windows CE e Linux.

eCos

eCos é um S.O. "open source", completamente gratuito, que mantém compatibilidade com as APIs POSIX e os software GNU.

Foi desenhado para atender a demanda de dispositivos em tempo real, com sérias restrições quanto à memória disponível. Uma parte muito interessante é seu sistema de configuração, que permite "enxugar" a imagem gerada ao extremo.

No pacote, está o RedBoot, um gerenciador de boot ( pense nele como um lilo ) muito utilizado, mesmo em sistemas com linux embarcado.

O projeto está bem maduro, pois começou com a Cygnus Support, em 1989. Para vocês se situarem: a Cygnus, mais tarde comprada pela RedHat, foi uma das principais coloboradoras de vários dos projetos GNU, como o gcc e o gdb. Foram eles, também, que desenvolveram o cygwin. Por falta de boas referências é que não se pode eliminar o eCos...

Uma camada de abstração de hardware ( HAL ) "isola" o kernel do processador, facilitando muito a migração para outros sistemas. Tanto é assim que o eCos roda em ARM7, ARM9, StrongARM, CalmRISC, FR-V, H8, x86, ColdFire, AM3, MIPS, PowerPC, Sparc e SuperH. Nada mal, hein?

As ferramentas de criação rodam em Linux e Windows ( sob o cygwin ), mas há uma explícita preferência pelo sistema do pinguim.

Uma grande comunidade existe em torno do software e, para sistemas com restrições de "footprint", essa parece ser a escolha ideal.

Windows CE 5.0

Recebi da Microsoft, através da revenda Compusoftware, o ótimo Windows CE 5.0, para avaliação ( apesar da versão 6.0 estar saindo do forno ). O material, como sempre, é muito bem acabado e bonito, um esmero raramente encontrado em outros fornecedores de sofware para desenvolvimento.

O kernel é licenciado como "shared code". O desenvolvedor tem acesso ao código-fonte e pode modificá-lo, sem que seja necessário notificar a MS. Pelo menos, foi o que entendi... a política de licenciamento da MS sempre me confunde.

Os valores são bem aceitáveis, quando se considera a qualidade e o suporte: quase mil dólares pela ferramenta e de US$ 3,00 a US$ 21,00 de "royalties", por produto. No entanto, é uma escolha meio "às cegas". É preciso, primeiro, saber claramente os módulos a serem utilizados para, só depois, descobrir quanto vai custar.

Essa versão do Windows roda em plataformas ARM, MIPS, x86 e SH. Tem capacidade de tempo real e, a MS nunca se cansa de enfatizar, várias camadas de segurança.

A principal vantagem é a facilidade que o desenvolvedor Windows tem. Em poucas horas ele já está habituado e produzindo. O ganho de produtividade é sensível.

Em anexo, algumas imagens da ferramenta que, entre outras coisas, vem com um Emulador muito eficiente.

Realmente, fiquei tentado a utilizá-lo. O único ponto contra foi o fato de ficar atrelado a um único fornecedor.









[img_assist|nid=9243|desc=|link=none|align=left|width=340|height=400] Linux Embarcado

Como não poderia deixar de ser, o Linux também foi avaliado.

Rodando em dezenas de processadores diferentes, com código-fonte disponível e gratuito, uma comunidade realmente grande, com boa-vontade suficiente para ajudar mesmo nos casos mais extremos, essa parecia a opção ideal.

No entanto, as maiores virtudes do S.O. ( como a grande quantidade de fornecedores ) também são suas maiores faquezas. Explico: mesmo com o código-fonte e as ferramentas sendo distribuidas livremente pela internet, num projeto comercial o suporte é de vital importância. Ficar aguardando dois dias para que alguém leia sua pergunta num fórum russo e resolva responder, não é muito agradável e gera uma úlcera no gerente.

Por outro lado, se você compra uma ferramenta ( e, consequentemente, o suporte ), fica atrelado àquela empresa e, pasmem, pode perder a "simpatia" da comunidade. Por mais incrível que pareça, cheguei ler coisas assim: "... você comprou a ferramenta tal, vá atrás deles, não espere que solucionemos isso para você...".

Os principais fornecedores de soluções integradas ( IDEs gráficas e "debuggers" ) são: MontaVista, Freescale ( que comprou a Metrowerks, fabricante do CodeWarrior ) e a LynuxWorks, com preços variando de US$ 2.000,00 a US$ 6.000,00.

Vários fabricantes de processadores disponilizam gratuitamente "patches" ou "BSPs" ( Board Support Packages ), o que, a princípio, permite o desenvolvimento a partir da "linha de comando". Se não há um fornecedor de IDE para o processador escolhido, essa é única saída.

Ainda há uma "versão" do Linux projetada para rodar em processadores que não possuem MMU ( Unidade de Gerenciamento de Memória ): o uClinux. Com ele, o leque de "chips" que rodam linux aumentou bastante, com opções de baixíssimo custo unitário.

No frigir do ovos, escolhi o Linux como S.O. para o projeto. Mais por contar com o apoio de uma Instituição de Pesquisa que por seus méritos técnicos. É quase certo que, se estivesse sozinho, optaria pelo Windows CE.

É realmente uma pena que não tenha mais tempo para explicar detalhes de cada S.O., mas vocês poderão pesquisar a partir daqui. É realmente uma área fascinante e o mercado para desenvolvedores cresce rapidamente.

Para finalizar, algumas referências e "links" para ferramentas:

8 bits:
Zilog Z80, Z8 e Z-NEO: http://www.zilog.com/software/zds2.asp

Microchip MPLAB

CCS PIC C Compiler

Freescale CodeWarrior 8 bits

P&E Micro: Debuggers

Windows CE:

winCEBrasil

MSDN

Linux Embarcado:

Free Electrons

uClinux

Linux em DSP Analog Devices

Linuxdevices

Livro gratuito: Advanced Linux Programming

Ambientes gráficos para Linux Embarcado:

Nano-X

Qt Embedded

0

Ricardo Bicalho's picture

Marcellus, absolutamente fantástica essa série. Eu já havia feito pesquisas na área, mas foi só 25% do que você mostrou aqui. Aprendi uns acrônimos novos, processadores e sistemas operacionais que eu nunca ouvi falar.

Meus parabéns! Uau.

Pode revelar qual a ferramenta escolhida para desenvolver no Linux?

Marcellus Pereira's picture

Obrigado, Moardib. Foi mesmo um trabalho de pesquisa muito intenso. Aliás, queria agradecer ao meu amigo e colega Ricardo Paduan, que fez boa parte da pesquisa comigo.

Como eu optei por um chip que não é suportado por nenhuma das três ferramentas que citei ( Codewarrior, Bluecat e Montavista ), baixei o BSP e estou desenvolvendo a partir da linha de comando, mesmo. No entanto, um dos meus colaboradores está bem avançado na tarefa de utilizar o KDevelop, devidamente configurado para "cross compiling".

Robson França's picture

Parabéns pelo artigo, Marcellus!

Em tempo: dependendo do projeto, às vezes a melhor solução é o bom e velho DIY (Do It Yourself). Pelo simples fato de você pesquisar por S.O.'s significa que a plataforma de hardware que você vai trabalhar é relativamente complexa.
Em plataformas mais simples, normalmente você cria a sua própria HAL (camada de abstração de hardware) e desenvolve em cima dela. Mas, como isso iria deixar o projeto ainda mais difícil, é mais "simples" pegar um S.O. embutido e mandar brasa...

Só completando, já trabalhei com o Codewarrior da Freescale. Ainda prefiro o antigo Codewarrior, quando era da Metrowerks.

Abraços

ColdFusion's picture

Parábens pelos textos, muito bem escritos, mas fale um pouco mais sobre o projeto em sí, pelo menos em que área atua o tal dispositivo, rede, wi-fi, video, audio?

Marcellus Pereira's picture

Infelizmente, ColdFusion, não posso dar muitos detalhes,não. Só posso dizer que é um projeto na área médica...

Sabe como é... o segredo é a alma do negócio... ;)

cardoso (não verificado(a))

Marcapasso WIFI rodando Windows. O quê poderia dar errado?

ColdFusion's picture

NADA!

Qualquer problema é só reiniciar o paciênte usando o CTRL+ALT+DEL (desfibrilador também ajuda)!!

Musashi_DJ's picture

140 Jaules!

Clear!!! TUUMMM
E no estetoscopio se ouve aquela músiquinha do inicio do windows...
-----------
Reuse, reconstrua, recicle, simplifique, esclaresa economise.

Artigo muito interessante, sempre me interessei por dispositivos, principalmente pelo fato de que sempre me interessei em trabalhar no desenvolvimento em equipamentos na área de entreterimento, seria para multimidia né?, pois sempre me interessei por brinquedos, e coisas do gênero, como ta,mbém sempre pensei em começar um empreendimento em "firúlas" eletrônicos, as pessoas são loucas por isso, e com a internet então, sempre tive idéias, sei dos produtos chineses no mercado, e por isso sempre tive pensamento nesse sentido, mas, nunca tive tempo para estudar o mesmo. Sempre quis desenvolver coisas nesse sentido.

Então, queria saber se vocês poderiam me responder umas coisas: Para mim que me interesso em dispositivos, para ser o "núcleo" de projetos no ramo que citei acima(entreterimento, brinquedos), vocês tem uma dica, uma recomendação em especial para essa área em específico? No Brasil, para qual área os sistemas embarcados são mais desenvolvidos? Para multimídia, qual sistema vocês acreditam ser o melhor?

Vocês citaram tercerização, nos comentários, vocês tem alguma sugestão de profissional ou empresa, que desenvolva projetos embarcados? Acredito que tercerização é interessante, diminui custos, e também tira o peso, assim a gente enfoca mais no designer de um X produto, enquanto, a parte eletronica é tercerizada.

Desculpem se fui expansivo, mas tenho dúvidas, adoro eletronica, mesmo sem saber muito, e tenho essas dúvidas.
E também sou louco por brinquedinhos eletrônicos.

Obrigado jootah

Robson França's picture

Olá jootah, tudo bem?

Para desenvolvimento em dispositivos embarcados, recomendo estudar um pouco de eletrônica, especialmente sobre a arquitetura dos principais ambientes embarcados, como o Windows CE citado pelo Marcellus.
Com certeza a plataforma embutida que está em franca expansão são os telefones celulares e os "gadgets", como PDA's e os Tablets.
Assim procure informações sobre J2ME (em especial a versão nacional e não-oficial do J2ME, o excelente SuperWaba), Symbian OS, Palm OS (veja em palmsource.com), uCLinux. Na parte de brinquedos, vale acrescentar que eles tem uma arquitetura bem mais modesta. Um Atari 2600, por exemplo, só contava com 128 bytes de RAM. Atualmente os brinquedos contam com mais recursos, mas nem tanto (a tela é monocromática, a IHM é bem simplificada, etc.).
Então procure informações sobre como trabalhar com essas limitações no PC mesmo, usando a ferramenta de desenvolvimento que mais te agrade (C#, Java, Delphi, VB, etc.) e tente "imitar" tais limitações para buscar o entendimento sobre isso.
Em suma, pesquise bastante!

Abraços

P.S.: Alguns brinquedos (especialmente consoles de videogame populares) usam um tal de "NES-on-a-chip". Procure sobre isso no Google, Wikipedia, etc.

Marcellus Pereira's picture

Caro jootah, antes de qualquer coisa, se você pretende levar a sério a produção de qualquer coisa, entre em contato com o SEBRAE mais próximo. Eles têm ótimos consultores e poderão instruí-lo sobre como criar um plano de negócio, para saber se sua idéia é factível.

__De fato é preciso, para projetos embarcados, de um suporte de terceiros, como o instituto citado por você marcellus. Penso que este é o problema do Linux:Ele não tem a capilaridade do Windows. Todo mundo meche nessa plataforma. O WIndows é o sistema do ignorante, sem demérito.Devido ao marketing e a rede de fornecedores de Software e Hardware que a MS montou. Coisas do Marketing.

__Eu pessoalmente acho os celulares com Windows horríveis. Com relação ao PalmOS e o EcOS são bons sistemas...Mas falta qualificação do profissional brasileiro, infelizmente...Eu não quebraria minha cara com Linux, para fornecê-lo ao meu cliente, sem a ajuda de um instituto.Simplesmente, porque embora use Linux para meus trabalhos pessoais e geração dos profissionais, não poderia portá-lo para um cliente com necessidade especificas.



Design Wenetus