WinCE port
This article applies to Windows CE only.
See also: Multiplatform Programming Guide
│
English (en) │
italiano (it) │
português (pt) │
русский (ru) │
中文(臺灣) (zh_TW) │
WinCE port is quite complete and usable. The port was started and maintained by Yury Sidorov. Oliver (Oro06) ported WinCE API headers.
Status
- FPC 2.2.0 or later supports WinCE target.
- CPU support for WinCE target:
- ARM CPU is fully supported. See arm-wince how to setup a crosscompiling enviroment.
There are readymade crosscompiler package available(See Lazarus download sources) - i386 CPU support was not tested too much and may contain bugs. Patches are welcome.
Normally there is no readymade crosscompiler package for this CPU. See i386-wince howto setup a cross compile enviroment(Win32 Host)
- ARM CPU is fully supported. See arm-wince how to setup a crosscompiling enviroment.
- The following platforms are supported:
- Devices based on WinCE 3.0 or later
- 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 – WinCE version: 5.0
- Windows Mobile 6 – WinCE version: 5.2
- Windows Mobile 6.5 - WinCE version: 5.2.1
- RTL and FCL units are working.
Debugging WinCE applications
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
Some hints:
- Pass --tui parameter to GDB to enable TUI interface which makes debugging more comfortable.
- Use unix line endings (LF only) in your pascal source files. Otherwise GDB will show sources incorrctly.
How to use:
First, make ActiveSync connection to your Pocket PC device.
Then launch gdb:
gdb --tui <your_executable_at_local_pc>
On gdb prompt type:
run or just r
GDB will copy your executable to the device in \gdb folder and run it.
Here is a short list of most needed GDB commands:
- r args - run program with args arguments.
- s - step into.
- n - step over.
- ni - step over instrument.step over assembly instruction.
- c - continue execution.
- br <function_name> - set a breakpoint at function_name. Use PASCALMAIN to set a breakpoint at program start.
- br <source_file>:<line_number> - set a breakpoint at specified source line.
- disas - show disassembly of current location.
- x/fmt address - dump memory at address with special format.use "help x" for more informations.
- bt - back trace.print back trace of the call stack.
- where - Display the current line and function and the stack of calls that got you there.
- q - Quit gdb.
To learn more how to use GDB read its documentation here: http://www.gnu.org/software/gdb/documentation
For example you want to build FCL. Go to fpc\fcl folder and execute the command above. You will get FCL compiled units in fpc\fcl\units\arm-wince.
See Also
- WinCE port hints
- Windows CE interface for Lazarus
- Windows CE Development Notes
- WinCE port of KOL GUI library
Links
- Useful WinCE info http://www.rainer-keuchel.de/documents.html
- Standalone Pocket PC device emulator from Microsoft. It emulates ARM CPU. Get it here
- Mamaich Pocket PC port of GCC http://mamaich.uni.cc
- Buildfaq is a general FAQ about how to build and configure FPC.
Here are some links related to ARM CPU Architecture
- ARM Core Developers Forum Not that much active though.
- GCC ARM Improvement Project
- ARM ASSEMBLER Good information and codes related to arm assembly language.
- GNU ARM toolchain for Cygwin, Linux and MacOS
- Microsoft Windows CE .NET 4.2 ARM Guide
- ARM Instruction Sets & Programs Very good and consice information about arm architecture
- The ARM Instruction Set Another fine power point file about arm
Contacts
Write any questions regarding WinCE port to Yury Sidorov