Mini2440 – Instalando WindowsCE no cartão SD

- por Sergio Prado

Categorias: Mini2440, Windows CE Tags: ,

Algumas pessoas entraram em contato comigo nas últimas semanas perguntando se é possível iniciar o WindowsCE do cartão SD. Após algumas pesquisas descobri que não existe nenhuma documentação disponível a respeito, então decidi fazer uns testes e postar o resultado aqui.

A solução existe, e é fácil. Então vamos lá!

CONFIGURANDO O CARTÃO SD

Formate o cartão SD com o sistema de arquivos fat32. Você pode usar qualquer ferramenta de partição (eu usei o “gparted”):

Depois de formatado, você precisa copiar a imagem para o cartão SD. O Windows CE possui dois formatos de imagem, um com a extensão “bin” e outro com a extensão “nb0”.

O formato “bin” organiza o código em blocos, especificando o endereço de início e o tamanho daquele bloco (bem parecido com o S-REC da Motorola). Seu formato está especificado aqui. Isso significa que não é um arquivo que podemos carregar para a memória e executá-lo. Ou seja, não é o formato que usaremos aqui.

O formato “nb0”, por outro lado, é uma imagem byte-a-byte do binário da aplicação. Ou seja, podemos carregá-lo para a memória e executá-lo. Só precisamos nos atentar a um detalhe. A imagem é gerada para ser executada a partir de um endereço base, e o bootloader (no nosso caso o U-Boot) precisará conhecer este endereço para carregar o arquivo para a memória. Ele precisará saber os valores de “Image Start”, que é onde a imagem deverá ser carregada, e “Start Address”, que é onde começa o código executável.

Portanto, copie para o cartão SD o “NK.nb0” gerado pelo seu ambiente de desenvolvimento. No meu caso, utilizarei a imagem do WindowsCE que veio com o kit, o arquivo “NK_T35_English.nb0”.

PREPARANDO O U-BOOT

Você precisará instalar o U-boot no seu kit. Se ainda não o tiver instalado, execute os procedimentos deste artigo aqui.

Conforme expliquei acima, você precisará conhecer os valores de “Image Start” e “Start Address”. No meu caso, o endereço base do WindowsCE é 0x80000000, e os parâmetros estão configurados conforme abaixo:

Image Start -> 0x80200000

Start Address -> 0x80201000

Precisaremos converter estes valores (endereço virtual) para o endereço real da RAM na mini2440, usando a formula abaixo:

Real = Virtual – 0x80000000 + 0x30000000

Aplicando a formula:

Image Start = 0x80200000 – 0x80000000 + 0x30000000 = 0x30200000

Start Address = 0x80201000 – 0x80000000 + 0x30000000 = 0x30201000

Vamos agora então configurar a variável de ambiente do U-Boot para iniciar o WindowsCE pelo cartão SD usando os parâmetros acima (não esqueça de alterar o nome da imagem de acordo com a gerada pelo seu ambiente):

MINI2440 # setenv bootcmd 'mmcinit; fatload mmc 0 0x30200000 NK_T35_English.nb0; go 0x30201000'
MINI2440 # saveenv

Pronto! Agora é só “bootar” o kit que o WindowsCE será iniciado pelo cartão SD.

Um abraço,

Sergio Prado

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.