arm-wince
This page describes setup of a crosscompiling enviroment (Host is Win32)
Download cross compiler
The easiest way to start development for WinCE is to download the latest release version of FPC for Win32 and arm-wince cross compiler for Win32.
Download them here: http://www.freepascal.org/download.var
First install FPC for Win32, then install arm-wince cross compiler as add-on package.
Building WinCE cross compiler from sources
During the tutorial some paths will be suposed to demonstrate the build process. Just substitute those paths with the ones on your system.
This tutorial demonstrates how to build arm-wince crosscompiler.
Step 1 - Cross binutils
These are the basic tools necessary to create executables, such as: Linker (ld), Assembler (as), Archiver (ar) (Creates smartlinking .a files), strip and some others.
You need cross binutils for arm-wince, get them from ftp://ftp.freepascal.org/pub/fpc/contrib/cross/arm-wince-binutils.zip for Win32.
Extract them to some dir in the path on your machine. We will supose that you extracted the cross binutils to: C:\Programas\arm
Step 2 - Cross compiler
Now you need to build fpc cross compiler for ARM processor. To do that you need fpc 2.2.0 or later sources and working installation of fpc 2.2.0 for Win32.
You can get the latest fpc source repository from Subversion: http://www.freepascal.org/develop.html#svn
We will supose that your Win32 fpc compiler is located here: C:\Programas\fpc\bin\i386-win32
And your Free Pascal source code is located here: C:\Programas\fpc
Step 3 - The Build process
In order to build the cross compiler it is necessary to have a correct PATH environment variable. On Windows it is very easy to get a PATH crowded with information put by installers. To ensure that your path is correct, create a batch file with the following code:
PATH=C:\Programas\fpc\bin\i386-win32;C:\Programas\arm make cycle CPU_TARGET=arm OS_TARGET=wince
Put this file on C:\Programas\fpc\compiler, open the Windows command line, go to this folder and execute the batch file.
On the end of the compile you should not see any errors.
You should have a ppccrossarm.exe in C:\Programas\fpc\compiler and some .o and .ppu files in C:\Programas\fpc\rtl\units\arm-wince
Now copy those files to your Free Pascal installation. The cross compiler ppccrossarm.exe should go to C:\Programas\fpc\bin\arm-wince and the units to C:\Programas\fpc\units\arm-wince
Step 4 - Configuration file
Now you need to create fpc.cfg configuration file in C:\Programas\fpc\bin\arm-wince folder in order to use ppccrossarm.exe easy.
Create empty fpc.cfg file in C:\Programas\fpc\bin\arm-wince folder and add the following lines to it:
-Twince -FuC:\Programas\fpc\units\arm-wince -XParm-wince- -FDC:\Programas\arm
Finally add C:\Programas\fpc\bin\arm-wince and C:\Programas\fpc\bin\i386-win32 to your PATH environment variable.
Remember to substitute the paths with the ones on your system.
Alternative Step 4 - Configuration file for hybrid compilation
If you want to compile your projects with the same "fpc" for both win32 and winCE platforms, you can do the following:
- copy ppcrossarm.exe into your fpc/bin/i386-win32 directory
- edit your fpc.cfg in that directory and add:
-FuC:\path_to_fpc\units\arm-wince -XParm-wince- -FDC:\path_to_arm_binutils
Remember to substitute the paths with the ones on your system.
Now when you want to compile for WinCE you just have to specify the OS and Arch targets to fpc.
NOTE: if you use Lazarus this will work flawlessly, but make sure to point lazarus to "fpc.exe" not "ppc386.exe".
Building FPC libraries
If you want to build libraries available with FPC just go to library folder and execute:
PATH=C:\Programas\fpc\bin\i386-win32;C:\Programas\fpc\compiler;C:\Programas\arm make OS_TARGET=wince CPU_TARGET=arm PP=ppcrossarm.exe
Compiling a Test Project
You compiled the compiler! Now, what can I do with it? This is a tutorial to create a hello world like software with your new compiler.
Step 1 - Installing and Configuring the Emulator
You will need a Windows CE Emulator configured for ActiveSync. The ActiveSync is necessary to install PocketCMD, a command line tool to run our hello world software.
Download the free Pocket PC device emulator from Microsoft. It emulates ARM CPU. http://msdn.microsoft.com/mobility/downloads/Emulator/default.aspx
There is a tutorial on how to set up the Emulator for ActiveSync here.
Step 2 - Installing the command line
Download and install PocketCMD by SymbolicTools. Get it here (this site seems to be gone) but try here [1]
To enable the console on newer devices (I needed it in my 6.1CE pro), you may to set the following registry value link
HKEY_LOCAL_MACHINE\Drivers\Console\OutputTo -> 0
Check WinCE_port_Hints for more details on programming under Windows CE platform.
Step 3 - Compiling
A example file to compile:
program test; {$apptype console} var Str: string; begin WriteLn('Software Developed with:'); WriteLn('The Free Pascal Compiler'); WriteLn(''); WriteLn('Please, enter your name:'); ReadLn(Str); WriteLn('Your name is: ' + Str); end.
Sample command line to compile test.pas:
ppcrossarm test.pas
You will get test.exe executable file. Copy it to your Windows CE device and run.
Here is a screenshot of a software created this way.