msdn06_capa.JPG

Clique aqui para ler todos os artigos desta edição

 

Descubra o Microsoft Windows Embedded

por Rodrigo Rocha

Este artigo aborda conceitos relativos a sistemas embarcados (Embedded Systems), tais como definição de sistemas, principais aplicações de mercado e alternativas da Microsoft para este cenário. Saiba os requerimentos para um sistema/dispositivo ser considerado “embarcado” e quais as ferramentas disponíveis para auxiliá-lo no desenvolvimento de novos dispositivos.

 

O que é um dispositivo dedicado, ou Embedded System?

Em um passado não muito distante, a maioria dos dispositivos dedicados era gerenciada por microcontroladores programados em linguagem Assembly ou em alguma outra solução proprietária. Com a crescente demanda por maior conectividade, acesso à Internet e funções multimídia, esses dispositivos passaram a requerer maior sofisticação, como novas funções e displays de vídeo para melhor interação com o usuário. A implementação de forma microcontrolada de todas essas novas funcionalidades seria bastante difícil e, em alguns casos, até inviável, em função da memória máxima endereçada por microcontroladores.

Soluções microprocessadas, com sistemas operacionais robustos e modularizados, tornaram-se a escolha natural dos fabricantes de dispositivos para resolver as limitações dos ambientes microcontrolados.

Baseado nesse novo conceito de sistemas operacionais modularizados, o Embedded System – sistema embarcado – consiste em qualquer dispositivo microprocessado e de função dedicada. Alguns exemplos presentes no mercado são:

Ø      Dispositivos móveis e portáteis (ex.: handhelds, telefones celulares);

Ø      Terminais de caixa no varejo – Ponto de Venda (PDV);

Ø      Terminais de auto-atendimento bancário;

Ø      Quiosques multimídia (terminais de shopping centers);

Ø      Thin-clients;

Ø      Decodificadores de TV a cabo (set-up box);

Ø      Sistemas de controles industriais, etc.

 

Pelo fato de o dispositivo dedicado estar sujeito às mais severas condições de temperatura e de localização, ele deve permitir que sua inicialização seja feita por meio de diferentes meios físicos, como, por exemplo, através da rede, de um Compact-Flash, “Disk on-chip”, CD-ROM ou hard disk convencional, entre outros. Além disso, o sistema operacional para esse tipo de dispositivo deve ser bastante customizável e privilegiar atividades dedicadas/exclusivas, bem como otimizações específicas no seu kernel, no hardware e na camada de aplicação.

 

A família de sistemas operacionais Windows Embedded

A Microsoft entrou oficialmente no mercado de sistemas embarcados em 1996, ao lançar o Windows CE 1.0, e seu objetivo era prover os desenvolvedores de sistemas dedicados tradicionais com novas e sofisticadas funcionalidades (até então restritas ao mundo dos desenvolvedores de “PCs desktop”).

O Windows CE 1.0 foi inicialmente desenvolvido para atender apenas aos OEMs (Original Equipment Manufacturers) de dispositivos móveis, com dispositivos de tamanho pequeno e com poucos recursos, como foi o caso dos primeiros handhelds e gerenciadores pessoais de informação (PIM).

Com o passar do tempo, a Microsoft sofisticou bastante o Windows CE e, em 1999, resolveu aumentar a família e lançar um segundo sistema operacional embarcado, chamado Windows NT Embedded. Esse software foi totalmente desenvolvido sob a plataforma Windows NT Workstation e sua confiabilidade, aliada a seu caráter componentizável, fez com que rapidamente ganhasse espaço no mercado.

Atualmente, a família de produtos Windows Embedded é composta do Windows CE .NET 4.2, Windows XP Embedded e do Server Appliance Kit 3.0, sendo este último a versão análoga ao Windows CE e XP Embedded para servidores).

 

O Windows XP Embedded

O Windows XP Embedded, ou Windows XPe, consiste em um sistema operacional modular, subdividido em mais de 11 mil componentes e totalmente baseado no kernel do Windows XP Professional. Essa herança de kernel faz com que o desenvolvedor de dispositivos dedicados conte com todos os device drivers disponíveis no mundo Windows e permite também que ele mantenha a mesma versão da aplicação, sem precisar criar uma versão específica para o Windows XP Embedded (a equipe na Microsoft que desenvolve os códigos do Windows XP Embedded é a mesma do Windows XP Professional).

Os mais de 11 mil módulos disponíveis dificultariam muito a tarefa de “construir” um sistema operacional do zero se não tivessem sido desenvolvidas ferramentas especiais para acelerar a escolha/definição dos componentes.

Uma dessas ferramentas é o Target Analyzer, utilizada para catalogar automaticamente todos os drivers necessários em um dispositivo dedicado. Após utilizar o Target Analyzer e com o catálogo de device drivers em mãos, o desenvolvedor utilizará então a ferramenta gráfica Target Designer para unir os componentes de hardware (device drivers) aos componentes de software básicos do sistema operacional e dos aplicativos.

Os componentes do Target Designer podem estar associados a componentes de hardware (suporte a diferentes plataformas/device drivers) ou a componentes de software (partes básicas do Sistema Operacional, como, por exemplo, Windows Media Player, Internet Explorer, jogos etc). Cada componente possui ainda propriedades individuais, que servem para informar ao sistema operacional como determinado componente deve estar configurado.

Como exemplo, vejamos o componente “User Interface Core” que reside dentro da categoria “Software -> System -> User Interface -> Shells -> Windows Shell” no Target Designer:

 

User Interface Core

         Settings – São os ajustes dos componentes, que no caso da interface com o usuário definem quais os elementos básicos da interface gráfica devem aparecer ou não.

Show My Computer on Start Menu:

 

Show My Documents on Start Menu:

 

Show My Recent Documents on Start Menu:

 

Show My Pictures on Start Menu:

 

Show My Music on Start Menu:

 

Files – Contém o conjunto de arquivos que fazem parte de um componente.

Ex: cpanel.chm, display.chm, display.hlp, docprop.dll etc.

Registry Data – Contém que entradas no registro aquele componente define.

Resources – Define quais são os recursos básicos que aquele componente deve possuir para funcionar adequadamente. Em sua maioria contém dependências de outros componentes ou dlls.  

 

Essas propriedades permitem que mesmo um componente predefinido pela ferramenta possa ser modificado para se adaptar melhor ao projeto de um dispositivo dedicado. Ainda no exemplo do componente “User Interface Core”, é possível definir através dele quais opções serão exibidas no menu “Iniciar”, se haverá uma lixeira no desktop, quais serão as teclas proibidas ao usuário e etc.

 

Windows CE .NET

O Windows CE .NET é o sucessor do Windows CE 3.0, que foi amplamente difundido no mercado como o sistema operacional base para os Pocket PCs. Ele consiste em um sistema operacional totalmente componentizado, voltado principalmente para o desenvolvimento de dispositivos móveis, compactos ou que necessitem rodar aplicações em modo “hard real-time”. Pelo fato de possuir um conjunto completo de ferramentas de desenvolvimento, o Windows CE .NET possibilita ao desenvolvedor construir, depurar e implementar dispositivos em um curto espaço de tempo.

A principal ferramenta de desenvolvimento do sistema operacional é o Platform Builder, que possui uma interface de desenvolvimento integrada (IDE) e que oferece ainda a habilidade de exportação do SDK do sistema operacional gerado. O Platform Builder inclui suporte do Windows CE .NET a diversos tipos de processadores presentes no mercado, como XScale (ARM), Super Hitachi (SH3 e SH4), MIPS, X86, dentre outros. Para obter a listagem completa dos processadores suportados pelo Windows CE, consulte a URL: http://www.microsoft.com/windows/embedded/ce.net/evaluation/hardware/processors.asp.

O Platform Builder tem um conceito bastante similar ao seu “primo” Target Designer, ou seja, ele é totalmente orientado a componentes. Os componentes podem estar divididos no catálogo entre BSPs, Core OS e Device Drivers.

Em geral, em um novo projeto, escolhe-se primeiro um componente da árvore “BSPs” (Board Support Package), pois ele definirá a plataforma básica a ser suportada pelo sistema operacional (ex: BSPs de ARMs, BSPs de X86 etc). Nele, estão incluídos também os device drivers que o fabricante da plataforma desenvolveu para o Windows CE. Na categoria “Core OS”, encontram-se os componentes relacionados aos aplicativos e componentes de software do sistema operacional, como Files System, Fontes, serviços internet etc. A categoria de componentes “Device Drivers” inclui todos os hardwares que o Windows CE .NET pode suportar nativamente (o que não impede que novos device drivers sejam adicionados posteriormente).

O desenvolvimento de aplicativos para Windows CE .NET pode ser feito por meio de dois caminhos: código nativo ou código gerenciado (.NET):

Ø      Microsoft eMbedded Visual C++® - ferramenta de desenvolvimento em C++, gráfica, totalmente gratuita, gera aplicações com seu código nativo para Windows CE .NET. O download do EVC++ pode ser feito em http://msdn.microsoft.com/vstudio/device/embedded/download.aspx;

Ø      Microsoft Visual Studio® .NET – principal ferramenta de desenvolvimento da Microsoft, permite a geração de código .NET para Windows CE por meio do .NET Compact Framework. Com o Visual Studio .NET, o desenvolvedor pode utilizar diversas linguagens de programação para gerar a aplicação, como Visual Basic® .NET, Visual C#® .NET, etc.

Além de possuir diversos componentes exclusivos de plataformas móveis, o Windows CE .NET traz ainda em sua versão mais recente:

Ø      Suporte a redes TCP/IP seguras e escaláveis;

Ø      Processamento hard real-time avançado;

Ø      Melhor performance em relação às versões anteriores;

Ø      Preparado para operações com browsers e aplicações ricas em multimídia;

Ø      Maior interoperabilidade dos equipamentos com computadores pessoais, servidores e dispositivos móveis.

 

Além dos benefícios acima, a característica componentizável do sistema operacional faz também com que seus requisitos mínimos de processador e de memória sejam mais baixos do que os de um sistema operacional convencional (um menor número de componentes/pedaços do sistema operacional no dispositivo requer menor uso de CPU e memória).

Existem diversos artigos no MSDN dos EUA e no MSDN Brasil (http://www.msdn.com.br/tecnologias/Embedded/) para os desenvolvedores interessados em conhecer mais sobre o Windows XP Embedded e o Windows CE.NET.

As ferramentas de avaliação do Windows XP Embedded e do Windows CE.NET  são totalmente gratuitas e não têm restrição técnica de funcionalidade. A única limitação é o fato de que elas geram uma versão do sistema operacional válida somente por 120 dias. O acesso gratuito às ferramentas de desenvolvimento de avaliação pode ser feito das seguintes formas:

Ø      Windows XPe:
Download em http://www.microsoft.com/downloads/details.aspx?FamilyID=257343f0-a931-4a5e-aaef-08f1cd4b0a80&DisplayLang=en
Windows CE .NET
http://www.microsoft.com/downloads/details.aspx?FamilyID=c60f61c1-623b-481b-83b8-031129cf1594&DisplayLang=en

Para quem deseja receber o kit de desenvolvimento em CDs por correio, basta acessar a URL: https://www.interactservices.com/WinEmbedded/Products.asp (serão cobrados apenas os custos referentes ao envio da ferramenta).

Server Appliance Kit – SAK 3.0

O Server Appliance Kit é a alternativa de sistema embutido da Microsoft para a criação de Server Appliances. Em geral, o termo appliances é utilizado para definir servidores restritos e que executam apenas uma função. Esses sistemas são comumente encontrados no mercado sob o conceito de “caixas pretas”, sem mouse, sem monitor e sem teclado, podendo ser VPN Servers, Firewalls, NAS (Network Attached Storage), Web Servers etc. Com o SAK, o desenvolvedor pode gerar um appliance que seja totalmente configurável remotamente via web browser.

Para iniciar um projeto de appliance com SAK 3.0, o desenvolvedor precisa procurar um distribuidor autorizado Windows Embedded e solicitar o OPK (OEM Pre-instalation Kit) do SAK 3.0. Para obter mais informações sobre o OPK do SAK 3.0, consulte http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sakopk/sak_opk_reference.asp

 

Quem pode usufruir dos sistemas operacionais Windows Embedded?

Os sistemas operacionais Windows Embedded são direcionados principalmente aos OEMs, System Builders e Integradores que queiram desenvolver novos dispositivos dedicados, de alta confiabilidade e baixo custo em curto espaço de tempo. A construção desses sistemas operacionais para inserção em dispositivos dedicados é uma atividade direcionada exclusivamente às empresas, e não cabe ao usuário residencial adquirir ou manipular essas ferramentas.

As empresas que possuem uma grande base instalada de pontos de vendas (PDVs) ou os caixas eletrônicos de bancos (ATMs) também podem considerar os sistemas operacionais Windows Embedded como alternativa, pois além de propiciarem um grande aproveitamento do parque instalado de equipamentos, eles trarão ainda melhores recursos multimídia, maior segurança, etc.

 

Conclusão

Existe hoje no Brasil, bem como em todo o mundo, uma grande variedade de dispositivos com essas tecnologias embarcadas. Cada vez mais, os fabricantes de equipamentos têm utilizado processadores de 32-Bit em seus projetos, e a família Windows Embedded revelou-se excelente solução devido à sua flexibilidade e rápido desenvolvimento.

Ao utilizar as tecnologias Windows Embedded em seus dispositivos, o fabricante de equipamentos estará garantindo ao desenvolvedor ampla compatibilidade de aplicações com as APIs Win32 e com a tecnologia .NET. Essas características fazem com que o trabalho de readaptação das aplicações seja mínimo ou praticamente nulo, na maioria dos casos.