Mini2440 – Instalando WindowsCE no cartão SD
- por Sergio Prado
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