Difference between revisions of "WinCE port"

From Free Pascal wiki
Jump to navigationJump to search
Line 35: Line 35:
 
* All file/dir paths must be absolute (started with \).
 
* All file/dir paths must be absolute (started with \).
 
* WinCE is unicode OS. All string parameters to API calls must be PWideChar.
 
* WinCE is unicode OS. All string parameters to API calls must be PWideChar.
 +
* WinCE does not have support for console applications by default. But you can install console support by yourself:
 +
** '''PocketCMD''' by SymbolicTools. It is recommended solution. Get it [http://www.symbolictools.de/public/pocketconsole/applications/PocketCMD here]
 +
**'''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]
 +
 
=== First tests ===
 
=== First tests ===
 
* There is a writeln pb : text to std output give a runtime error 103. So trying the same code with evc -> result:  nothing appear.
 
* There is a writeln pb : text to std output give a runtime error 103. So trying the same code with evc -> result:  nothing appear.

Revision as of 13:26, 13 August 2005

The WinCE port is under development. Currently only WinCE on ARM and i386 (WinCE emulator) is supported.

Status

The 2.1.x compiler has compiler support for arm-wince and a partial working system unit.

TODO

Windows unit

Converting PocketPC SDK headers to Windows unit is needed. It is main show-stopper now.

Since H2PAS dont eat MS headers the easiest way to port is to use win32 Windows unit and remove all functions which are missing in WinCE. The following list of WinCE API functions can be used as a reference: http://www.rainer-keuchel.de/wince/dllexports/ipaq-coredll.txt First of all there are almost no functions with A suffix and they must be removed. Also some functions exists as wrappers (SetEvent,ResetEvent and some other). Some of them are already implemented in system.pp

Building

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.

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.

Documentation

WinCE port notes

  • chdir always produces an error (WinCE does not support setting of current directory).
  • All file/dir paths must be absolute (started with \).
  • WinCE is unicode OS. All string parameters to API calls must be PWideChar.
  • WinCE does not have support for console applications by default. But you can install console support by yourself:
    • PocketCMD by SymbolicTools. It is recommended solution. Get it here
    • PPC Command Shell from Microsoft Windows Mobile Developer Power Toys. Get it here

First tests

  • There is a writeln pb : text to std output give a runtime error 103. So trying the same code with evc -> result: nothing appear.
  • In fact cmd.exe is not installed by default on pda's ie not text console, no CON: device but this can be installed with external

tools (ms provide one with PowerToys,there are others on the net)

  • After that cmd.exe is installed, running the previous simpliest printf progs, show the expected text in a text window, existing of console.dll in \windows dir have been detected and stdout configured at runtime.
  • The only difference is that a new console is opened every time, even if hello.exe is run from a console !

Links

Contacts

Write any questions regarding WinCE port to Yury Sidorov