Difference between revisions of "WinCE port"

From Free Pascal wiki
Jump to navigationJump to search
m (Move platform template to page template; remove category already in page template)
 
(119 intermediate revisions by 15 users not shown)
Line 1: Line 1:
The WinCE port is under development. Currently only WinCE on [[ARM]] and i386 (WinCE emulator) is supported.
+
{{WinCE port}}
 +
 
 +
WinCE port is quite complete and usable. The port was started and maintained by Yury Sidorov. Oliver (Oro06) ported WinCE API headers.
  
 
== Status ==
 
== 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.<br> 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.<br>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
 +
* [http://community.freepascal.org:10000/docs-html/rtl RTL] and [http://community.freepascal.org:10000/docs-html/fcl 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 <tt>--tui</tt> 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:
 +
 +
<tt>gdb --tui <your_executable_at_local_pc></tt>
 +
 +
On gdb prompt type:
 +
 +
<tt>run</tt> or just <tt>r</tt>
 +
 +
GDB will copy your executable to the device in <tt>\gdb</tt> folder and run it.
 +
 +
Here is a short list of most needed GDB commands:
 +
* <tt>r args</tt> - run program with args arguments.
 +
* <tt>s</tt> - step into.
 +
* <tt>n</tt> - step over.
 +
* <tt>ni</tt> - step over instrument.step over assembly instruction.
 +
* <tt>c</tt> - continue execution.
 +
* <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 <source_file>:<line_number></tt> - set a breakpoint at specified source line.
 +
* <tt>disas</tt> - show disassembly of current location.
 +
* <tt>x/fmt address</tt> - dump memory at address with special format.use "help x" for more informations.
 +
* <tt>bt</tt> - back trace.print back trace of the call stack.
 +
* <tt>where</tt> - Display the current line and function and the stack of calls that got you there.
 +
* <tt>q</tt> - 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 <tt>fpc\fcl</tt> folder and execute the command above. You will get FCL compiled units in <tt>fpc\fcl\units\arm-wince</tt>.
  
The 2.1.x compiler has compiler support for arm-wince and a partial working system unit.
+
== See Also ==
  
== Building ==
+
* [[WinCE_port_Hints|WinCE port hints]]
* You need cross binutils for arm-wince, get them from  ftp://ftp.freepascal.org/pub/fpc/contrib/cross/arm-wince-binutils.zip for Win32.
+
* [http://wiki.lazarus.freepascal.org/Windows_CE_Interface Windows CE interface for Lazarus]
* Extract them to some dir in the path on your machine.
+
* [http://wiki.lazarus.freepascal.org/Windows_CE_Development_Notes Windows CE Development Notes]
* Prepend the executable from the archive with a arm-wince- i.e. as.exe becomes arm-wince-as.exe.
+
* [[KOL-CE|WinCE port of KOL GUI library]]
* Get the 2.1 source repository from SVN: http://www.freepascal.org/develop.html#svn
 
* Go to fpc/compiler and execute make cycle CPU_TARGET=arm OS_TARGET=wince
 
  
At a certain point this breaks when the native compiler is compiled. This doesn't hurt, because you usually don't need the native compiler.
+
== Links ==
 +
* Useful WinCE info 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]
 +
* Mamaich Pocket PC port of GCC http://mamaich.uni.cc
 +
* [http://www.stack.nl/~marcov/buildfaq.pdf Buildfaq] is a general FAQ about how to build and configure FPC.
  
You should end with the units compiled to fpc/rtl/units/arm-wince and a ppccrossarm.exe in fpc/compiler. Copy them to locations fitting your fpc installation.
+
Here are some links related to ARM CPU Architecture
  
== TODO ==
+
* [http://www.armcorepro.com/ ARM Core Developers Forum] Not that much active though.
* Converting PocketPC SDK headers to Windows unit is needed. It is main show-stopper now.  
+
* [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.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://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://web.njit.edu/~baltrush/arm_stuff/ARMInst.ppt The ARM Instruction Set ] Another fine power point file about arm
  
== Documentation ==
+
== Contacts ==
  
=== WinCE port notes ===
+
Write any questions regarding WinCE port to [mailto:yury_sidorov@mail.ru Yury Sidorov]
* '''chdir''' is not supported (due to OS design).
 
* All file/dir paths must be absolute (started with \).
 
* WinCE is unicode OS. All string parameters to API calls must be PWideChar.
 

Latest revision as of 03:15, 9 August 2020

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.

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

Links

Here are some links related to ARM CPU Architecture

Contacts

Write any questions regarding WinCE port to Yury Sidorov