WinCE port/pt
This article applies to Windows CE only.
See also: Multiplatform Programming Guide
│
English (en) │
italiano (it) │
português (pt) │
русский (ru) │
中文(臺灣) (zh_TW) │
O porte do WinCE é bem completo e utilizável. Ele foi iniciado e é mantido por Yury Sidorov. Cabeçalhos Oliver (Oro06) portados da API do WinCE .
Estado atual
- O compilador 2.1.x dá suporte à compilação para WinCE.
- ARM CPU tem suporte.
- As seguintes plataformas têm suporte:
- Pocket PC 2002 – WinCE versão 3.0
- Pocket PC 2003 – WinCE versão 4.20
- Pocket PC 2003 Segunda Edição – WinCE versão 4.21
- Windows Mobile 5.0 – WinCE versão 5.0
- RTL e unidades FCL estão funcionando.
Construindo o Tutorial
Durante o tutorial alguns caminhos serão supostos para demonstrar o processo de contrução. Apenas substitua aqueles caminhos pelos do seu sistema.
Passo 1 - Binutils para cross-compilação:
Estas são as ferramentas básicas necessárias para criar executáveis, como: Vinculador (ld), Montador (as), Archiver (ar) (cria arquivos .a do smartlinking), strip e algumas outras.
Você precisa das binutils para cross-compilação para ARM-WinCE, pegue-os em ftp://ftp.freepascal.org/pub/fpc/contrib/cross/arm-wince-binutils.zip for Win32.
Extraia-os em algum diretório no caminho da sua máquina. Vamos supor que você os extraiu em: C:\Programas\arm
Passo 2 - Cross-compilador
Agora você precisa construir o cross-compilador FPC para o processador ARM. Para fazer isso você precisa dos fontes mais recentes do FPC 2.1.x e a instalação do FPC 2.0.4 funcionando para Win32.
Pegue os fontes mais recentes do repositório do 2.1.x no Subversion: http://www.freepascal.org/develop.html#svn
Vamos supor que o seu ompilador FPC para Win32 está localizado em: C:\Programas\fpc\bin\i386-win32
E os seus fontes do Free Pascal 2.1.x estão localizados em: C:\Programas\fpc
Passo 3 - O Processo de Construção
Para construir o cross-compilador é necessário ter uma variável de ambiente PATH correta. No Windows é muito fácil ter um PATH junto com a informação colocada pelos instaladores. Para se certificar de que o seu Path está correto, crie um arquivo de lote do DOS com o seguinte código:
PATH=C:\Programas\fpc\bin\i386-win32;C:\Programas\arm make cycle CPU_TARGET=arm OS_TARGET=wince
Ponha este arqquivo em C:\Programas\fpc\compiler, abra a linha de comando do Windows, vá para esta pasta e execute o arquivo de lote.
No fim da compilação você não deve ter mensagens de erro.
Você deve ter um ppccrossarm.exe em C:\Programas\fpc\compiler e alguns arquivos .o e .ppu em C:\Programas\fpc\rtl\units\arm-wince
Copie eses arquivos para a sua instalaçãodo Free Pascal. O cross-compilador ppccrossarm.exe deve ir para C:\Programas\fpc\bin\arm-wince e as unidades para C:\Programas\fpc\units\arm-wince
Passo 4 - Arquivo de configuração
Você precisa criar um arquivo de configuração fpc.cfg na pasta C:\Programas\fpc\bin\arm-wince para usar o ppccrossarm.exe com facilidade.
Crie um arquivo fpc.cfg vazio na pasta C:\Programas\fpc\bin\arm-wince e adicione as seguintes linhas:
-Twince -FuC:\Programas\fpc\units\arm-wince -XParm-wince- -FDC:\Programas\arm
Finalmente adicione C:\Programas\fpc\bin\arm-wince e C:\Programas\fpc\bin\i386-win32 à sua variável de ambiente PATH.
Lembre-se de substituir os caminhos pelos do seu sistema.
Compilando um Projeto de Teste
Você compilou o compilador. Agora, o que você pode fazer com ele? Este é um tutorial para criar um projeto "hello world" com o seu novo compilador.
Passo 1 - Instalando e Configurando o Emulador
Você vai precisar de um emulador Windows CE configurado para ActiveSync. O ActiveSync é necessário para instalar o PocketCMD, uma ferramenta de linha de comando para executar o nosso programa ""hello world'.
Baixe o emulador de dispositivo livre Pocket PC da Microsoft. Ele emula o ARM CPU. http://msdn.microsoft.com/mobility/downloads/Emulator/default.aspx
Existe um tutorial de como configurar o emulador para ActiveSync here.
Passo 2 - Instalando a linha de comando
Baixe e instale o PocketCMD da SymbolicTools. Pegue-o aqui
Verifique a seção WinCE port notes abaixo para maioresa detalhes sobre linhas de comando em Pocket PC.
Passo 3 - Compilando
Um arquivo de exemplo para compilar:
program test; {$apptype console} var Str: string; begin WriteLn('Software Developed with:'); WriteLn('The Free Pascal Compiler'); WriteLn(''); WriteLn('Please, enter your name:'); ReadLn(Str); WriteLn('Your name is: ' + Str); end.
Sample de linha de comando para compilar test.pas:
ppcrossarm test.pas
Você vai pegar o executável test.exe. Copie-o para o seu dispositivo Windows CE e execute.
Aqui está um screenshot de um programa criado dessa forma.
Depurando aplicações WinCE
O GBD pode ser usado para depurar suas aplicações WinCE remotamente via ActiveSync. Baixe o GDB 6.4 para hots Win32 e arm-wince target aqui: ftp://ftp.freepascal.org/pub/fpc/contrib/cross/gdb-6.4-win32-arm-wince.zip
Algumas dicas:
- Passe o parâmetro --tui para o GDB para habilitar a interface TUI que faz a depuração mais confortável.
- Use finais de linha unix (LF only) nos seus fontes Pascal. Senão o GDB vai mostrar os fontes incorretamente.
Como usar:
Primeiro faça a conexão ActiveSync no seu dispositivo Pocket PC.
Então carregue o gdb:
gdb --tui <seu_executavel_no_pc_local>
No prompt do gdb escreva:
run ou só r
GDB vai copiar o seu executável para o seu dispositivo na pasta \gdb e executá-lo.
Aqui está uma pequena lista dos comandos mais necessários do GDB:
- r args - executa o programa com args argumentos.
- s - step into.
- n - step over.
- ni - step over instrument. Pula instrução assembly .
- c - continua a execução.
- br <function_name> - configura um breakpoint em function_name. Usa PASCALMAIN para configurar um breakpoint no início do programa.
- br <source_file>:<line_number> - configura um breakpoint na linha especificada dos fontes.
- disas - mostra um disassembly da localização atual.
- x/fmt address - dump de memória no endereço com formato especial. use "help x" para maiores informações.
- bt - back trace. imprime back trace da chamada do stack.
- where - Mostra a linha atual e a função e o stack das chamadas that got you there.
- q - Sai do gdb.
Para aprender mais sobre como usar o GDB leia sua documentação aqui: http://www.gnu.org/software/gdb/documentation
Construindo bibliotecas do FPC
Se você quer construir bibliotecas disponíveis com o FPC vá para a pasta de bibliotecas e execute:
PATH=C:\Programas\fpc\bin\i386-win32;C:\Programas\fpc\compiler;C:\Programas\arm make OS_TARGET=wince CPU_TARGET=arm PP=ppcrossarm.exe
Por exemplo você quer construir a FCL. Vá para a pasta fpc\fcl e execute o comando abaixo. Você vai obter as unidades da FCL compiladas em fpc\fcl\units\arm-wince.
Documentação
Algumas notas sobre WinCE
- Se você estiver obtendo "Uknown error! Error code : 0xc1" e usando dlls, o erro deve haver porque você está usando algumas export entries não encontradas no arquivo da dll. Verifique a seção export da dll e o nome delas e como utilizá-las.
Notas sobre o porte para WinCE
- Procedimento chdir sempre produz um erro (WinCE não suporta configuração do diretório atual).
- Todos os arquivos/diretórios precisam ser absolutos (começados com \).
- WinCE é OS unicode. Todos os parâmetros de seqüência de caracteres para chamadas de API precisam ser PWideChar.
- WinCE n~~ao tem suuporte para environment strings.
- WinCE não tem suporte para aplicações de console por padrão. Mas você pode instalar suporte para console você mesmo. Note que o FPC cria aplicações GUI para WinCE target por padrão. Para criar aplicações de console você deve usar -WC compiler switch ou pôr a diretiva {$APPTYPE CONSOLE} nos fontes.
Para habilitar console em WinCE instale um dos seguintes programas:- PocketCMD by SymbolicTools. Essa é a solução recomendada. Pegue-o aqui
- PPC Command Shell de Microsoft Windows Mobile Developer Power Toys. Pegue-o aqui
PPC Command Shell tem menos funcionalidades que o PocketCMD. Tem também menos problemas. Um deles - uma nova janela de console é aberta mesmo se uma aplicação é iniciada da linha de comando do console.
Veja também
Links
- Informações úteis de WinCE http://www.rainer-keuchel.de/documents.html
- Emulador standalone de disositivo Pocket PC da Microsoft. Ele emula o ARM CPU. Pegue-o aqui
- KOL-CE. Porte para WinCE da biblioteca KOL GUI. http://sourceforge.net/projects/kol-ce/
- Porte Mamaich de Pocket PC de GCC http://mamaich.uni.cc
- Buildfaq é uma FAQ geral sobre como construir e configurar o FPC.
Aqui estão alguns links relacionados com a arquitetura ARM CPU
- ARM Core Developers Forum Não muito ativo entretanto.
- GCC ARM Improvement Project
- ARM ASSEMBLER Boa informação e código relacioando com a linguagem arm assembly.
- GNU ARM toolchain for Cygwin, Linux and MacOS
- Microsoft Windows CE .NET 4.2 ARM Guide
- ARM Instruction Sets & Programs Informação muito boa e concisa sobre arquitetura arm
- The ARM Instruction Set Outro bom arquivo power point sobre arm
Contato
Escreva qualquer pergunta sobre o porte para WinCE para Yury Sidorov