Este artigo foi originalmente publicado no site O mundo do Windows Embedded por Guilherme Fernandes.
Dando continuidade aos meus posts a respeito de Windows Embedded Compact, finalmente vamos fazer um Hello World! A coisa principal que eu gosto de mostrar nesta etapa, e talvez a principal mensagem deste post, é desmistificar e mostrar como pode ser simples desenvolver sistemas embarcados, de arquitetura ARM (para deixar o cenário mais complicado), utilizando Windows Embedded Compact.
O Hardware
Para este tutorial utilizarei um Computador em Módulo (CoM) Toradex Colibri VF50, se você quiser saber um pouco mais sobre computadores em módulo, recomendo a leitura deste artigo que escrevi para o portal embarcados: Fast Time to Market com Computadores em Módulo. O Hardware apresentado na figura 1 é um CoM que tem como coração o System on Chip (SoC) Vybrid VF50 da Freescale. Este pequeno processador é um ARM Cortex-A5 com pico de processamento em 400MHz. Além do processador o CoM possui 128MB de RAM e mais 128MB de memória NAND. O computador em módulo está conectado a uma placa base (Carrier Board) e a um Display TFT 7’’.
No site de suporte a desenvolvimento da Toradex a empresa disponibiliza imagens para o Windows Compact Embedded 6.0, Windows Embedded Compact 7.0 e o Windows Embedded Compact 2013. Além destas, a empresa também disponibiliza os BSPs e os Workspaces para Platform Builder para todas as versões. Neste exemplo utilizaremos o Windows Embedded Compact 7.0. Em um post futuro vamos utilizar este BSP para criar nossa própria imagem do Windows EC.
O Ambiente de desenvolvimento para Windows Embedded Compact
O meu ambiente de desenvolvimento é um Notebook tradicional com Windows 7 Pro e com o Visual Studio 2008 Professional instalado. Além disso é necessária a instalação das seguintes atualizações para VS2008:
Além as devidas instalações, será necessária a instalação de um SDK, note que as instalações que comento neste post são para simples desenvolvimento de aplicação para Windows Embedded Compact e não para customização ou programação do S.O. Por isso não precisamos neste momento instalar o Platform Builder, conforme o artigo da Vivian em Windows Embedded Compact. Essa é mais uma das vantagens do Windows EC, pode-se separar desenvolvimento de aplicação do desenvolvimento do S.O. Justamente para isso serve o SDK que comentei no início do artigo. O SDK é o conjunto de informações e instruções que o compilador do Visual Studio precisa saber para poder compilar e fazer o debug da aplicação para um S.O. diferente do próprio host (cross-compiling). Note que no meu exemplo, até mesmo a arquitetura de computador é diferente!!
Mais uma vez a Toradex oferece em seu site de apoio ao desenvolvedor os SDKs para cada versão do Windows EC e as instruções para instalação. Se você estiver compilando sua própria versão você deverá criar seu próprio SDK para fornecer para os desenvolvedores de aplicação (esse é assunto para um post futuro!).
Tudo pronto, vamos lá!
Abra o seu VS2008 e inicie um novo projeto em VC++, note que após realizar as instalações necessárias você passa a ter a opção de um projeto para Smart Device. Vou escolher a opção Win32 Smart Device Project e colocar o nome do projeto para então avançar (Figura 2).
O VS2008 abre um Wizard para auxiliar sua seleção no restante do projeto, na primeira tela um simples next é suficiente. Na segunda tela (figura 3) o Wizard solicita que você selecione para quais plataformas sua aplicação será criada, note que você pode selecionar mais de uma. Conforme explicado acima selecione o SDK correto conforme a figura.
Nesta última tela o sistema solicita algumas informações adicionais para criação do projeto, figura 4. Para simplificar, vou apenas criar um Console Application, clique em Finish e veja o resultado. O VS2008 cria o projeto para você.
Escrevi um pequeno código em nosso programa recém criado para realizar um teste de Debug e depois compilei a solução (Build > Build Solution). Veja o resultado na figura 5.
O próximo passo é conectar o dispositivo ao seu host de desenvolvimento. Farei isso através da porta USB OTG presente na Carrier Board do meu sistema embarcado. Ao realizar esta ação o Windows abre o Windows Mobile Center e conecta ao módulo, repare na figura 6 que pelo próprio Windows Explorer podemos agora acessar a memória RAM e Flash do sistema embarcado que está conectado, tudo isso quem fez pra você foi o próprio Windows EC!
Uma vez que o dispositivo estiver conectado, pronto, é sé clicar em Debug > Start Debuging. O VS2008 irá conectar no disposto, transferir e iniciar a aplicação nele e enviar as mensagens de debug diretamente para o seu PC de desenvolvimento, veja as figuras 7 e 8 com o programa rodando no sistema embarcado de testes, um Computador de arquitetura ARM, enquanto você monitora o passo a passo do programa direto no VS2008 em seu PC de desenvolvimento. Simples, fácil e eficiente! Ideal para quem quer produtividade no desenvolvimento de sistemas embarcados!
Até a próxima!
Saiba mais sobre Windows Embedded Compact
– As vantagens de usar o Windows Embedded Compact, por Guilherme Fernandes
– Hello Windows Embedded (Compact) World!, por Guilherme Fernandes
– BeagleBone Black + Windows Embedded Compact, por Marcelo Jo
– Desenvolvendo Sistemas Embarcados com Windows Embedded Compact, por Guilherme Fernandes
– Placas de desenvolvimento compatíveis com Windows, por Fábio Souza





Boa tarde! Fiz uma aplicação em c# 2003 e gerei os CABs. Minha plataforma é Windows CE .net 4.2 e de um OEM. Minha aplicação exige a instalação do .NET compact framework 3.5 e roda normalmente. SOmete após o restart do sistema, perco a instalação do .net framwork. Alguém sabe uma maneira de deixar essa instalação persistente?
Guilherme, muito interessante seu artigo. Os artigos de Windows embarcado são escassos não permitindo ao público conhecer e poder escolher o Windows de acordo com a necessidade. Você tem conhecimento do Windows Compact ou outra versão para embarcado (IMX 6 por exemplo) se já possui drivers para os codecs de vídeo (h264 1080p por exemplo) já estão disponíveis? Esses drivers são pagos a parte? o custo de licenciamento do Windows e desenvolvimento são muito altos?
Prezado Caio, Sim existe para iMX6 Windows Embedded Compact, vide o link a seguir, a Toradex oferece a imagem disponível para download, ela mantém o otimaza a imagem lançando uma atualização a cada 3 meses mais ou menos: https://developer.toradex.com/knowledge-base/apalis-imx6-wince-bring-up Outras empresas também oferecem BSP e outros para Download para iMX6 based hardware: https://www.compulab.co.il/products/computer-on-modules/cm-fx6/#devres Finalmente na página a seguir, temos diversos BSPs disponíveis, inclusive para iMX6: https://www.microsoft.com/windowsembedded/en-us/bspcatalog.aspx Com relação aos CODECs de vídeo, vou precisar pesquisar, na nossa linha (TEGRA) os drivers estão inclusos na imagem padrão, acredito que a abordagem no iMX6 será a mesma. Os custos de desenvolvimento (Aplicação)… Leia mais »
Interessante Guilherme! Vou pesquisar mais à respeito, fiquei bastante decepcionado com o preço do Qt Enterprise e o custo de licenciamento. Para alguns projetos o Windows Embedded Compact pode ser bastante interessante. Obrigado!
Saudações Caio! Poderia compartilhar o preço do Qt Enterprise? Estou procurando uma solução para software embarcado e o Qt parecia o mais promissor.
Olá Davi , sim sem dúvidas o Qt é bem promissor.
O Enterprise ajuda a resolver alguns problemas que temos quando desenvolvemos uma aplicação embarcadas voltada a sistemas touchscreen (Teclado, gerenciamento de conexão, imagem otimizada etc…). Não posso divulgar os valores aqui na lista infelizmente. Mas é interessante ressaltar que o responsável pela América Latina está disposto a negociar o valor da licença e royalties.
Olá Davi e Caio,
O QT é sem dúvida uma ferramenta fantástica! E também roda em Windows CE o que é ainda mais legal. Eu mesmo já fiz algumas brincadeiras nele com Toradex, vejam o link:
https://developer.toradex.com/knowledge-base/getting-started-with-qt
Abraços!
Bacana Guilherme! bem legal!
Aproveitando a thread, tem um keyboard bem interessante para QT com licença LGPL maliit (https://github.com/maliit/) e já tem receita no yocto (Fido 1.8)
Guilherme, ótimo artigo. Tenho algumas dúvidas referente a essa board e ao Windows Embedded.
O sistema operacional é carregado da NAND ou do cartão SD? A outra dúvida é se eu consigo desenvolver um aplicativo em C# e rodá-lo normalmente no Windows Embedded. Sei que no Windows CE 6.0 é possível, pois eu o utilizo no trabalho, juntamente do .NET Compact Framework, mas a minha dúvida é se esse suporte ainda existe!
Obrigado.
Obrigado Rafael!
O Sistema operacional está na NAND do módulo. Sendo assim não é necessário um SD card para o boot do Windows CE.
Com relação ao C# é tão fácil quanto no CE6. Você só precisa instalar o .NET CF 3.5 no módulo embarcado, desenvolver sua aplicação e debugar online. Pra isso vai utilizar o VS2008.
Na página do fabricante existe uma infinidade de demos e how-to com o Windows CE: https://developer.toradex.com/knowledge-base/getting-started-with-toradex-arm-modules
Abraços!
Rafael, escrevi um artigo sobre como fazer o hello world em C#: https://www.windowsembedded.net.br/programando-aplicacoes-graficas-para-windows-embedded-compact/