WinCE port

From Free Pascal wiki
Revision as of 03:15, 9 August 2020 by Trev (talk | contribs) (Move platform template to page template; remove category already in page template)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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)

WinCE port is quite complete and usable. The port was started and maintained by Yury Sidorov. Oliver (Oro06) ported WinCE API headers.


  • 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)
  • 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:

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:

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


Here are some links related to ARM CPU Architecture


Write any questions regarding WinCE port to Yury Sidorov