Difference between revisions of "WinCE port/pt"

From Free Pascal wiki
Jump to navigationJump to search
(New page: WinCE port is quite complete and usable. The port was started and maintained by Yury Sidorov. Oliver (Oro06) ported WinCE API headers. == Status == * The 2.1.x compiler has compiler suppo...)
 
 
(24 intermediate revisions by 2 users not shown)
Line 1: Line 1:
WinCE port is quite complete and usable. The port was started and maintained by Yury Sidorov. Oliver (Oro06) ported WinCE API headers.
+
{{WinCE port}}
  
== Status ==
+
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 .
* The 2.1.x compiler has compiler support for WinCE.
 
* [[ARM]] CPU is supported.
 
* The following platforms are supported:
 
** Pocket PC 2002 – WinCE version: 3.0
 
** Pocket PC 2003 – WinCE version: 4.20
 
** Pocket PC 2003 Second Edition – WinCE version: 4.21
 
** Windows Mobile 5.0 – WinCE version: 5.0
 
* [http://community.freepascal.org:10000/docs-html/rtl RTL] and [http://community.freepascal.org:10000/docs-html/fcl FCL] units are working.
 
  
== Building Tutorial==
+
== 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
 +
* [http://community.freepascal.org:10000/docs-html/rtl RTL] e unidades [http://community.freepascal.org:10000/docs-html/fcl FCL] estão funcionando.
  
During the tutorial some paths will be suposed to demonstrate the build process. Just substitute those paths with the ones on your system.
+
== 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.
  
'''Step 1''' - Cross binutils
+
'''Passo 1''' - Binutils para cross-compilação:
  
These are the basic tools necessary to create executables, such as: Linker (ld), Assembler (as), Archiver (ar) (Creates smartlinking .a files), strip and some others.
+
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.
  
You need cross binutils for arm-wince, get them from  ftp://ftp.freepascal.org/pub/fpc/contrib/cross/arm-wince-binutils.zip for Win32.
+
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.
  
Extract them to some dir in the path on your machine.
+
Extraia-os em algum diretório no caminho da sua máquina.
We will supose that you extracted the cross binutils to: <tt>C:\Programas\arm</tt>
+
Vamos supor que você os extraiu em:
 +
<tt>C:\Programas\arm</tt>
  
 +
'''Passo 2''' - Cross-compilador
  
'''Step 2''' - Cross compiler
+
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.
  
Now you need to build fpc cross compiler for ARM processor. To do that you need latest fpc 2.1.x sources and working installation of fpc 2.0.4 for Win32.
+
Pegue os fontes mais recentes do repositório do 2.1.x no Subversion:
 +
http://www.freepascal.org/develop.html#svn
  
Get the latest 2.1.x source repository from Subversion: http://www.freepascal.org/develop.html#svn
+
Vamos supor que o seu ompilador FPC para Win32 está localizado em:
 +
<tt>C:\Programas\fpc\bin\i386-win32</tt>
  
We will supose that your Win32 fpc compiler is located here: <tt>C:\Programas\fpc\bin\i386-win32</tt>
+
E os seus fontes do Free Pascal 2.1.x estão localizados em:
 +
<tt>C:\Programas\fpc</tt>
  
And your Free Pascal 2.1.x source code is located here: <tt>C:\Programas\fpc</tt>
 
  
 +
'''Passo 3''' - O Processo de Construção
  
'''Step 3''' - The Build process
+
Para construir o cross-compilador é necessário ter uma variável de ambiente <tt>PATH</tt> correta. No Windows é muito fácil ter um <tt>PATH</tt> 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:
 
 
In order to build the cross compiler it is necessary to have a correct <tt>PATH</tt> environment variable.
 
On Windows it is very easy to get a <tt>PATH</tt> crowded with information put by installers. To ensure that your path is correct, create a batch file with the following code:
 
 
 
 
<pre>
 
<pre>
 
PATH=C:\Programas\fpc\bin\i386-win32;C:\Programas\arm
 
PATH=C:\Programas\fpc\bin\i386-win32;C:\Programas\arm
Line 47: Line 50:
 
</pre>
 
</pre>
  
Put this file on <tt>C:\Programas\fpc\compiler</tt>, open the Windows command line, go to this folder and execute the batch file.
+
Ponha este arqquivo em <tt>C:\Programas\fpc\compiler</tt>, abra a linha de comando do Windows, vá para esta pasta e execute o arquivo de lote.
  
On the end of the compile you should not see any errors.  
+
No fim da compilação você não deve ter mensagens de erro.
  
You should have a <tt>ppccrossarm.exe</tt> in <tt>C:\Programas\fpc\compiler</tt> and some <tt>.o</tt> and <tt>.ppu</tt> files in <tt>C:\Programas\fpc\rtl\units\arm-wince</tt>
+
Você deve ter um <tt>ppccrossarm.exe</tt> em <tt>C:\Programas\fpc\compiler</tt> e alguns arquivos <tt>.o</tt> e <tt>.ppu</tt> em <tt>C:\Programas\fpc\rtl\units\arm-wince</tt>
  
Now copy those files to your Free Pascal installation. The cross compiler <tt>ppccrossarm.exe</tt> should go to <tt>C:\Programas\fpc\bin\arm-wince</tt> and the units to <tt>C:\Programas\fpc\units\arm-wince</tt>
+
Copie eses arquivos para a sua instalaçãodo Free Pascal. O cross-compilador <tt>ppccrossarm.exe</tt> deve ir para <tt>C:\Programas\fpc\bin\arm-wince</tt> e as unidades para <tt>C:\Programas\fpc\units\arm-wince</tt>
  
 +
'''Passo 4''' - Arquivo de configuração
  
'''Step 4''' - Configuration file
+
Você precisa criar um arquivo de configuração <tt>fpc.cfg</tt> na pasta <tt>C:\Programas\fpc\bin\arm-wince</tt> para usar o <tt>ppccrossarm.exe</tt> com facilidade.
  
Now you need to create <tt>fpc.cfg</tt> configuration file in <tt>C:\Programas\fpc\bin\arm-wince</tt> folder in order to use <tt>ppccrossarm.exe</tt> easy.
+
Crie um arquivo <tt>fpc.cfg</tt> vazio na pasta <tt>C:\Programas\fpc\bin\arm-wince</tt> e adicione as seguintes linhas:
 
 
Create empty <tt>fpc.cfg</tt> file in <tt>C:\Programas\fpc\bin\arm-wince</tt> folder and add the following lines to it:
 
 
<pre>
 
<pre>
 
-Twince
 
-Twince
Line 68: Line 70:
 
</pre>
 
</pre>
  
Finally add <tt>C:\Programas\fpc\bin\arm-wince</tt> and <tt>C:\Programas\fpc\bin\i386-win32</tt> to your <tt>PATH</tt> environment variable.
+
Finalmente adicione <tt>C:\Programas\fpc\bin\arm-wince</tt> e <tt>C:\Programas\fpc\bin\i386-win32</tt> à sua variável de ambiente <tt>PATH</tt>.
  
'''Remember to substitute the paths with the ones on your system.'''
+
'''Lembre-se de substituir os caminhos pelos do seu sistema.'''
  
== Compiling a Test Project ==
+
== Compilando um Projeto de Teste ==
  
You compiled the compiler! Now, what can I do with it? This is a tutorial to create a hello world like software with your new compiler.
+
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.
  
'''Step 1''' - Installing and Configuring the Emulator
+
'''Passo 1''' - Instalando e Configurando o Emulador
  
You will need a Windows CE Emulator configured for ActiveSync. The ActiveSync is necessary to install PocketCMD, a command line tool to run our hello world software.
+
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'.
  
Download the free Pocket PC device emulator from Microsoft. It emulates ARM CPU. http://msdn.microsoft.com/mobility/downloads/Emulator/default.aspx
+
Baixe o emulador de dispositivo livre Pocket PC da Microsoft. Ele emula o ARM CPU. http://msdn.microsoft.com/mobility/downloads/Emulator/default.aspx
  
There is a tutorial on how to set up the Emulator for ActiveSync [http://www.pocketpcfaq.com/faqs/5.0/emulator.htm here].
+
Existe um tutorial de como configurar o emulador para ActiveSync [http://www.pocketpcfaq.com/faqs/5.0/emulator.htm here].
  
'''Step 2''' - Installing the command line
+
'''Passo 2''' - Instalando a linha de comando
  
Download and install '''PocketCMD''' by SymbolicTools. Get it [http://www.symbolictools.de/public/pocketconsole/applications/PocketCMD here]
+
Baixe e instale o '''PocketCMD''' da SymbolicTools. Pegue-o [http://www.symbolictools.de/public/pocketconsole/applications/PocketCMD aqui]
  
Check the [[#WinCE_port_notes | WinCE port notes]] section bellow for more details on command lines on Pocket PC.
+
Verifique a seção [[#WinCE_port_notes | WinCE port notes]] abaixo para maioresa detalhes sobre linhas de comando em Pocket PC.
  
'''Step 3''' - Compiling
+
'''Passo 3''' - Compilando
  
A example file to compile:
+
Um arquivo de exemplo para compilar:
  
 
<pre>
 
<pre>
Line 111: Line 113:
 
</pre>
 
</pre>
  
Sample command line to compile <tt>test.pas</tt>:
+
Sample de linha de comando para compilar <tt>test.pas</tt>:
  
 
<tt>ppcrossarm test.pas</tt>
 
<tt>ppcrossarm test.pas</tt>
  
You will get <tt>test.exe</tt> executable file. Copy it to your Windows CE device and run.
+
Você vai pegar o executável <tt>test.exe</tt>. Copie-o para o seu dispositivo Windows CE e execute.
  
[http://wiki.lazarus.freepascal.org/index.php/Windows_CE_Interface#Screenshots Here] is a screenshot of a software created this way.
+
[http://wiki.lazarus.freepascal.org/index.php/Windows_CE_Interface#Screenshots Aqui] está um screenshot de um programa criado dessa forma.
  
== Debugging WinCE applications ==
+
== Depurando aplicações WinCE==
  
GDB can be used to debug your WinCE applications remotely via ActiveSync. Download GDB 6.4 for Win32 host and arm-wince target here: ftp://ftp.freepascal.org/pub/fpc/contrib/cross/gdb-6.4-win32-arm-wince.zip
+
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
  
'''Some hints:'''
+
'''Algumas dicas:'''
  
* Pass <tt>--tui</tt> parameter to GDB to enable TUI interface which makes debugging more comfortable.
+
* Passe o parâmetro <tt>--tui</tt> para o GDB para habilitar a interface TUI que faz a depuração mais confortável.  
* Use unix line endings (LF only) in your pascal source files. Otherwise GDB will show sources incorrctly.
+
* Use finais de linha unix (LF only) nos seus fontes Pascal. Senão o GDB vai mostrar os fontes incorretamente.
  
'''How to use:'''
+
'''Como usar:'''
  
First, make ActiveSync connection to your Pocket PC device.
+
Primeiro faça a conexão ActiveSync no seu dispositivo Pocket PC.
  
Then launch gdb:  
+
Então carregue o gdb:  
  
<tt>gdb --tui <your_executable_at_local_pc></tt>
+
<tt>gdb --tui <seu_executavel_no_pc_local></tt>
  
On gdb prompt type:
+
No prompt do gdb escreva:
  
<tt>run</tt> or just <tt>r</tt>
+
<tt>run</tt> ou só <tt>r</tt>
  
GDB will copy your executable to the device in <tt>\gdb</tt> folder and run it.
+
GDB vai copiar o seu executável para o seu dispositivo na pasta <tt>\gdb</tt> e executá-lo.
  
Here is a short list of most needed GDB commands:
+
Aqui está uma pequena lista dos comandos mais necessários do GDB:
* <tt>r args</tt> - run program with args arguments.
+
* <tt>r args</tt> - executa o programa com args argumentos.
 
* <tt>s</tt> - step into.
 
* <tt>s</tt> - step into.
 
* <tt>n</tt> - step over.
 
* <tt>n</tt> - step over.
* <tt>ni</tt> - step over instrument.step over assembly instruction.
+
* <tt>ni</tt> - step over instrument. Pula instrução assembly .
* <tt>c</tt> - continue execution.
+
* <tt>c</tt> - continua a execução.
* <tt>br <function_name></tt> - set a breakpoint at <tt>function_name</tt>. Use <tt>PASCALMAIN</tt> to set a breakpoint at program start.
+
* <tt>br <function_name></tt> - configura um breakpoint em <tt>function_name</tt>. Usa <tt>PASCALMAIN</tt> para configurar um breakpoint no início do programa.
* <tt>br <source_file>:<line_number></tt> - set a breakpoint at specified source line.
+
* <tt>br <source_file>:<line_number></tt> - configura um breakpoint na linha especificada dos fontes.
* <tt>disas</tt> - show disassembly of current location.
+
* <tt>disas</tt> - mostra um disassembly da localização atual.  
* <tt>x/fmt address</tt> - dump memory at address with special format.use "help x" for more informations.
+
* <tt>x/fmt address</tt> - dump de memória no endereço com formato especial. use "help x" para maiores informações.
* <tt>bt</tt> - back trace.print back trace of the call stack.
+
* <tt>bt</tt> - back trace. imprime back trace da chamada do stack.  
* <tt>where</tt> - Display the current line and function and the stack of calls that got you there.
+
* <tt>where</tt> - Mostra a linha atual e a função e o stack das chamadas that got you there.
* <tt>q</tt> - Quit gdb.
+
* <tt>q</tt> - Sai do gdb.
To learn more how to use GDB read its documentation here: http://www.gnu.org/software/gdb/documentation
+
Para aprender mais sobre como usar o GDB leia sua documentação aqui: http://www.gnu.org/software/gdb/documentation
  
== Building FPC libraries ==
+
== Construindo bibliotecas do FPC==
  
If you want to build libraries available with FPC just go to library folder and execute:
+
Se você quer construir bibliotecas disponíveis com o FPC vá para a pasta de bibliotecas e execute:
 
<pre>
 
<pre>
 
PATH=C:\Programas\fpc\bin\i386-win32;C:\Programas\fpc\compiler;C:\Programas\arm
 
PATH=C:\Programas\fpc\bin\i386-win32;C:\Programas\fpc\compiler;C:\Programas\arm
Line 165: Line 167:
 
</pre>
 
</pre>
  
For example you want to build FCL. Go to <tt>fpc\fcl</tt> folder and execute the command above. You will get FCL compiled units in <tt>fpc\fcl\units\arm-wince</tt>.
+
Por exemplo você quer construir a FCL. Vá para a pasta <tt>fpc\fcl</tt> e execute o comando abaixo. Você vai obter as unidades da FCL compiladas em  <tt>fpc\fcl\units\arm-wince</tt>.
 +
 
 +
== Documentação ==
 +
 
 +
=== Algumas notas sobre WinCE ===
  
== Documentation ==
+
* 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.
  
=== some WinCE notes ===
+
=== Notas sobre o porte para WinCE ===
* If you are getting "Uknown error! Error code : 0xc1" and using dlls then the error might be becouse of using some export entries not found in dll file.Check the dll file export section and name of them and how you used them.
 
  
=== WinCE port notes ===
+
* Procedimento <tt>'''chdir'''</tt> sempre produz um erro (WinCE não suporta configuração do diretório atual).
* <tt>'''chdir'''</tt> procedure always produces an error (WinCE does not support setting of current directory).
+
* Todos os arquivos/diretórios precisam ser absolutos (começados com \).
* All file/dir paths must be absolute (started with \).
+
* WinCE é OS unicode. Todos os parâmetros de seqüência de caracteres para chamadas de API precisam ser PWideChar.
* WinCE is unicode OS. All string parameters to API calls must be PWideChar.
+
* WinCE n~~ao tem suuporte para environment strings.
* WinCE does not have support for 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 <tt>-WC</tt> compiler switch ou pôr a diretiva <tt>{$APPTYPE CONSOLE}</tt> nos fontes.<br>Para habilitar console em WinCE instale um dos seguintes programas:
* WinCE does not have support for console applications by default. But you can install console support by yourself. Please note that FPC creates GUI applications for WinCE target by default. To create console application you should use <tt>-WC</tt> compiler switch or put <tt>{$APPTYPE CONSOLE}</tt> directive to source code.<br>To enable console in WinCE install one of the following programs:
+
** '''PocketCMD''' by SymbolicTools. Essa é a solução recomendada. Pegue-o [http://www.symbolictools.de/public/pocketconsole/applications/PocketCMD aqui]
** '''PocketCMD''' by SymbolicTools. It is recommended solution. Get it [http://www.symbolictools.de/public/pocketconsole/applications/PocketCMD here]
+
**'''PPC Command Shell''' de Microsoft Windows Mobile Developer Power Toys. Pegue-o [http://www.microsoft.com/downloads/details.aspx?FamilyID=74473fd6-1dcc-47aa-ab28-6a2b006edfe9&displaylang=en aqui]<br>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.
**'''PPC Command Shell''' from Microsoft Windows Mobile Developer Power Toys. Get it [http://www.microsoft.com/downloads/details.aspx?FamilyID=74473fd6-1dcc-47aa-ab28-6a2b006edfe9&displaylang=en here]<br>PPC Command Shell have less features than PocketCMD. Also it have some issues. One of them - a new console window is opened even if an application is started from a console command prompt.
 
  
== See Also ==
+
== Veja também==
  
 
* [[Tested Unstable Revisions]]
 
* [[Tested Unstable Revisions]]
Line 188: Line 192:
  
 
== Links ==
 
== Links ==
* Useful WinCE info http://www.rainer-keuchel.de/documents.html
+
* Informações úteis de WinCE http://www.rainer-keuchel.de/documents.html
* Standalone Pocket PC device emulator from Microsoft. It emulates ARM CPU. Get it [http://www.microsoft.com/downloads/details.aspx?FamilyId=C62D54A5-183A-4A1E-A7E2-CC500ED1F19A&displaylang=en here]
+
* Emulador standalone de disositivo Pocket PC da Microsoft. Ele emula o ARM CPU. Pegue-o [http://www.microsoft.com/downloads/details.aspx?FamilyId=C62D54A5-183A-4A1E-A7E2-CC500ED1F19A&displaylang=en aqui]
* KOL-CE. WinCE port of KOL GUI library. http://sourceforge.net/projects/kol-ce/
+
* KOL-CE. Porte para WinCE da biblioteca KOL GUI. http://sourceforge.net/projects/kol-ce/
* Mamaich Pocket PC port of GCC http://mamaich.uni.cc
+
* Porte Mamaich de Pocket PC de GCC http://mamaich.uni.cc
* [http://www.stack.nl/~marcov/buildfaq.pdf Buildfaq] is a general FAQ about how to build and configure FPC.
+
* [http://www.stack.nl/~marcov/buildfaq.pdf Buildfaq] é uma FAQ geral sobre como construir e configurar o FPC.
  
Here are some links related to ARM CPU Architecture
+
Aqui estão alguns links relacionados com a arquitetura ARM CPU  
  
* [http://www.armcorepro.com/ ARM Core Developers Forum] Not that much active though.
+
* [http://www.armcorepro.com/ ARM Core Developers Forum] Não muito ativo entretanto.
 
* [http://www.inf.u-szeged.hu/gcc-arm/ GCC ARM Improvement Project]
 
* [http://www.inf.u-szeged.hu/gcc-arm/ GCC ARM Improvement Project]
* [http://www.heyrick.co.uk/assembler/index.html ARM ASSEMBLER] Good information and codes related to arm assembly language.
+
* [http://www.heyrick.co.uk/assembler/index.html ARM ASSEMBLER] Boa informação e código relacioando com a linguagem arm assembly.
 
* [http://www.gnuarm.com/ GNU ARM toolchain for Cygwin, Linux and MacOS]
 
* [http://www.gnuarm.com/ GNU ARM toolchain for Cygwin, Linux and MacOS]
 
* [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcechp40/html/ccrefarmguide.asp Microsoft Windows CE .NET 4.2 ARM Guide]
 
* [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcechp40/html/ccrefarmguide.asp Microsoft Windows CE .NET 4.2 ARM Guide]
* [http://soc.csie.ndhu.edu.tw/source/intro_embedded/ch2-arm-2.ppt ARM Instruction Sets & Programs] Very good and consice information about arm architecture
+
* [http://soc.csie.ndhu.edu.tw/source/intro_embedded/ch2-arm-2.ppt ARM Instruction Sets & Programs] Informação muito boa e concisa sobre arquitetura arm  
* [http://web.njit.edu/~baltrush/arm_stuff/ARMInst.ppt The ARM Instruction Set ] Another fine power point file about arm
+
* [http://web.njit.edu/~baltrush/arm_stuff/ARMInst.ppt The ARM Instruction Set ] Outro bom arquivo power point sobre arm
  
== Contacts ==
+
== Contato ==
Write any questions regarding WinCE port to [mailto:yury_sidorov@mail.ru Yury Sidorov]
+
Escreva qualquer pergunta sobre o porte para WinCE para [mailto:yury_sidorov@mail.ru Yury Sidorov]

Latest revision as of 17:37, 29 September 2007

WinCE Logo.png

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

Aqui estão alguns links relacionados com a arquitetura ARM CPU

Contato

Escreva qualquer pergunta sobre o porte para WinCE para Yury Sidorov