Sign in Join
Wiki copytemporary

WinCE port/pt: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: WinCE port/pt

OldNewLine
1+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 .
2+
3+## Estado atual
4+
5+- O compilador 2.1.x dá suporte à compilação para WinCE.
6+- [[ARM]] CPU tem suporte.
7+- As seguintes plataformas têm suporte:
8+ - Pocket PC 2002 – WinCE versão 3.0
9+ - Pocket PC 2003 – WinCE versão 4.20
10+ - Pocket PC 2003 Segunda Edição – WinCE versão 4.21
11+ - Windows Mobile 5.0 – WinCE versão 5.0
12+- [RTL](http://community.freepascal.org:10000/docs-html/rtl) e unidades [FCL](http://community.freepascal.org:10000/docs-html/fcl) estão funcionando.
13+
14+## Construindo o Tutorial
15+
16+Durante o tutorial alguns caminhos serão supostos para demonstrar o processo de contrução. Apenas substitua aqueles caminhos pelos do seu sistema.
17+
18+**Passo 1** - Binutils para cross-compilação:
19+
20+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.
21+
22+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.
23+
24+Extraia-os em algum diretório no caminho da sua máquina. Vamos supor que você os extraiu em: `C:\Programas\arm`
25+
26+**Passo 2** - Cross-compilador
27+
28+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.
29+
30+Pegue os fontes mais recentes do repositório do 2.1.x no Subversion: <http://www.freepascal.org/develop.html#svn>
31+
32+Vamos supor que o seu ompilador FPC para Win32 está localizado em: `C:\Programas\fpc\bin\i386-win32`
33+
34+E os seus fontes do Free Pascal 2.1.x estão localizados em: `C:\Programas\fpc`
35+
36+**Passo 3** - O Processo de Construção
37+
38+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:
39+
40+ PATH=C:\Programas\fpc\bin\i386-win32;C:\Programas\arm
41+ make cycle CPU_TARGET=arm OS_TARGET=wince
42+
43+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.
44+
45+No fim da compilação você não deve ter mensagens de erro.
46+
47+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`
48+
49+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`
50+
51+**Passo 4** - Arquivo de configuração
52+
53+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.
54+
55+Crie um arquivo `fpc.cfg` vazio na pasta `C:\Programas\fpc\bin\arm-wince` e adicione as seguintes linhas:
56+
57+ -Twince
58+ -FuC:\Programas\fpc\units\arm-wince
59+ -XParm-wince-
60+ -FDC:\Programas\arm
61+
62+Finalmente adicione `C:\Programas\fpc\bin\arm-wince` e `C:\Programas\fpc\bin\i386-win32` à sua variável de ambiente `PATH`.
63+
64+**Lembre-se de substituir os caminhos pelos do seu sistema.**
65+
66+## Compilando um Projeto de Teste
67+
68+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.
69+
70+**Passo 1** - Instalando e Configurando o Emulador
71+
72+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'.
73+
74+Baixe o emulador de dispositivo livre Pocket PC da Microsoft. Ele emula o ARM CPU. <http://msdn.microsoft.com/mobility/downloads/Emulator/default.aspx>
75+
76+Existe um tutorial de como configurar o emulador para ActiveSync [here](http://www.pocketpcfaq.com/faqs/5.0/emulator.htm).
77+
78+**Passo 2** - Instalando a linha de comando
79+
80+Baixe e instale o **PocketCMD** da SymbolicTools. Pegue-o [aqui](http://www.symbolictools.de/public/pocketconsole/applications/PocketCMD)
81+
82+Verifique a seção WinCE port notes abaixo para maioresa detalhes sobre linhas de comando em Pocket PC.
83+
84+**Passo 3** - Compilando
85+
86+Um arquivo de exemplo para compilar:
87+
88+ program test;
89+
90+ {$apptype console}
91+
92+ var
93+ Str: string;
94+ begin
95+ WriteLn('Software Developed with:');
96+ WriteLn('The Free Pascal Compiler');
97+ WriteLn('');
98+ WriteLn('Please, enter your name:');
99+ ReadLn(Str);
100+ WriteLn('Your name is: ' + Str);
101+ end.
102+
103+Sample de linha de comando para compilar `test.pas`:
104+
105+`ppcrossarm test.pas`
106+
107+Você vai pegar o executável `test.exe`. Copie-o para o seu dispositivo Windows CE e execute.
108+
109+[Aqui](http://wiki.lazarus.freepascal.org/index.php/Windows_CE_Interface#Screenshots) está um screenshot de um programa criado dessa forma.
110+
111+## Depurando aplicações WinCE
112+
113+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>
114+
115+**Algumas dicas:**
116+
117+- Passe o parâmetro `--tui` para o GDB para habilitar a interface TUI que faz a depuração mais confortável.
118+- Use finais de linha unix (LF only) nos seus fontes Pascal. Senão o GDB vai mostrar os fontes incorretamente.
119+
120+**Como usar:**
121+
122+Primeiro faça a conexão ActiveSync no seu dispositivo Pocket PC.
123+
124+Então carregue o gdb:
125+
126+`gdb --tui <seu_executavel_no_pc_local>`
127+
128+No prompt do gdb escreva:
129+
130+`run` ou só `r`
131+
132+GDB vai copiar o seu executável para o seu dispositivo na pasta `\gdb` e executá-lo.
133+
134+Aqui está uma pequena lista dos comandos mais necessários do GDB:
135+
136+- `r args` - executa o programa com args argumentos.
137+- `s` - step into.
138+- `n` - step over.
139+- `ni` - step over instrument. Pula instrução assembly .
140+- `c` - continua a execução.
141+- `br <function_name>` - configura um breakpoint em `function_name`. Usa `PASCALMAIN` para configurar um breakpoint no início do programa.
142+- `br <source_file>:<line_number>` - configura um breakpoint na linha especificada dos fontes.
143+- `disas` - mostra um disassembly da localização atual.
144+- `x/fmt address` - dump de memória no endereço com formato especial. use "help x" para maiores informações.
145+- `bt` - back trace. imprime back trace da chamada do stack.
146+- `where` - Mostra a linha atual e a função e o stack das chamadas that got you there.
147+- `q` - Sai do gdb.
148+
149+Para aprender mais sobre como usar o GDB leia sua documentação aqui: <http://www.gnu.org/software/gdb/documentation>
150+
151+## Construindo bibliotecas do FPC
152+
153+Se você quer construir bibliotecas disponíveis com o FPC vá para a pasta de bibliotecas e execute:
154+
155+ PATH=C:\Programas\fpc\bin\i386-win32;C:\Programas\fpc\compiler;C:\Programas\arm
156+ make OS_TARGET=wince CPU_TARGET=arm PP=ppcrossarm.exe
157+
158+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`.
159+
160+## Documentação
161+
162+### Algumas notas sobre WinCE
163+
164+- 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.
165+
166+### Notas sobre o porte para WinCE
167+
168+- Procedimento **`chdir`** sempre produz um erro (WinCE não suporta configuração do diretório atual).
169+- Todos os arquivos/diretórios precisam ser absolutos (começados com \\).
170+- WinCE é OS unicode. Todos os parâmetros de seqüência de caracteres para chamadas de API precisam ser PWideChar.
171+- WinCE n\~~ao tem suuporte para environment strings.
172+- 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.\
173+ Para habilitar console em WinCE instale um dos seguintes programas:
174+ - **PocketCMD** by SymbolicTools. Essa é a solução recomendada. Pegue-o [aqui](http://www.symbolictools.de/public/pocketconsole/applications/PocketCMD)
175+ - **PPC Command Shell** de Microsoft Windows Mobile Developer Power Toys. Pegue-o [aqui](http://www.microsoft.com/downloads/details.aspx?FamilyID=74473fd6-1dcc-47aa-ab28-6a2b006edfe9&displaylang=en)\
176+ 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.
177+
178+## Veja também
179+
180+- [[Tested Unstable Revisions]]
181+- [Windows CE interface for Lazarus](http://wiki.lazarus.freepascal.org/Windows_CE_Interface)
182+- [Windows CE Development Notes](http://wiki.lazarus.freepascal.org/Windows_CE_Development_Notes)
183+
184+## Links
185+
186+- Informações úteis de WinCE <http://www.rainer-keuchel.de/documents.html>
187+- Emulador standalone de disositivo Pocket PC da Microsoft. Ele emula o ARM CPU. Pegue-o [aqui](http://www.microsoft.com/downloads/details.aspx?FamilyId=C62D54A5-183A-4A1E-A7E2-CC500ED1F19A&displaylang=en)
188+- KOL-CE. Porte para WinCE da biblioteca KOL GUI. <http://sourceforge.net/projects/kol-ce/>
189+- Porte Mamaich de Pocket PC de GCC <http://mamaich.uni.cc>
190+- [Buildfaq](http://www.stack.nl/~marcov/buildfaq.pdf) é uma FAQ geral sobre como construir e configurar o FPC.
191+
192+Aqui estão alguns links relacionados com a arquitetura ARM CPU
193+
194+- [ARM Core Developers Forum](http://www.armcorepro.com/) Não muito ativo entretanto.
195+- [GCC ARM Improvement Project](http://www.inf.u-szeged.hu/gcc-arm/)
196+- [ARM ASSEMBLER](http://www.heyrick.co.uk/assembler/index.html) Boa informação e código relacioando com a linguagem arm assembly.
197+- [GNU ARM toolchain for Cygwin, Linux and MacOS](http://www.gnuarm.com/)
198+- [Microsoft Windows CE .NET 4.2 ARM Guide](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcechp40/html/ccrefarmguide.asp)
199+- [ARM Instruction Sets & Programs](http://soc.csie.ndhu.edu.tw/source/intro_embedded/ch2-arm-2.ppt) Informação muito boa e concisa sobre arquitetura arm
200+- [The ARM Instruction Set](http://web.njit.edu/~baltrush/arm_stuff/ARMInst.ppt) Outro bom arquivo power point sobre arm
201+
202+## Contato
203+
204+Escreva qualquer pergunta sobre o porte para WinCE para [Yury Sidorov](mailto:yury_sidorov@mail.ru)
205+
206+---
207+*From the Free Pascal wiki, page "WinCE port/pt", as it stood on 2007-09-29 after a change by Antoniog, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history