|
|
Building TinyX (Xfbdev) for Handhelds
Get the X Source Tree
As of iPAQ release v0.17, all changes required to support the iPAQ H3600 have been checked into the mainline XFree86 development tree. This instant, support is currently set up to cross-compile an fbdev server for an iPAQ H3600 using the Compaq touchscreen driver. Next on the list is further work on the touchscreen driver so that it can be completely generic across platforms.
Here is a summary of the process:
1. Get and install a cross compilation tool chain. While native compilation is certainly possible, since the X code is easy to cross compile and one's x86 system is generally faster than native for the iPAQ handheld.
2. Get a copy of the XFree86 CVS pool. I highly recommend using the cvsup tool for maintaining your shadow of the CVS pool (depending on how much you ask for, it can be as much as 500 megabytes), as it is much more efficient than a simple checkout. Using cvsup, it is entirely feasible to keep up with XFree86 development via a dialup line once an initial repository has been established. The instructions here presume XFree86 4.0.2, and in general are likely to track the development CVS rather than the less frequent releases.
3. Get a copy of the handhelds.org kernel source pool, for the touch screen driver. By modifying a symbolic link in the cross compilation environment, you can arrange to use the kernel headers from our pool, though you can copy the header files needed from our pool manually (note we still plan to complete the reorganization of the driver, which will remove this dependency and make the touch screen interface generic).
4. Read the XFree86 installation directions to get an overview of how configuration of the X distribution works.
5. Set up your host.def file to specify which X server will be built.
The xc/config/cf/host.def file determines what server gets built..
The current host.def file I use is:
[jg@armada cf]$ more host.def
/*
* This configuration file contains additional configuration needed
* to cross compile X for the Compaq iPAQ handheld computer or similar
* devices.
*/
#define KDriveXServer YES
#define KdriveServerExtraDefines -DMAXSCREENS=3
#define TinyXServer YES
#define CrossCompiling YES
#define TouchScreen YES
#define ItsyCompilerBug YES
#define BuildXinerama YES
#define ProjectRoot/usr/X11R6
This tells the X configuration stuff to build the kdrive server (Keith's frame buffer driver, TinyX)..
All the configuration information for the iPAQ is found in the iPAQH3600.cf file in the xc/config/cf directory: (e.g. the cross compile paths and the like). I plan to clean this up shortly, to disentangle cross compilation from configuration specific to the platform and make native builds easier. The TouchScreen option compiles support for the touchscreen in the iPAQH3600: I will eventually clean up the header files so that iPAQ H3600 specific information does not appear in the X sources; this is the only thing at all specific to the iPAQ left; the server should run on any fbdev driver.. Xinerama is used for the temporary screen switching hack, until the RandR extension has been completed. The CrossCompiling define tells the configuration file to use the information found in cross.def and cross.rules: if you do not use the handhelds.org toolchain, you'll have to customize the cross.def file appropriately.
To to customize for other targets, you may to replace the host.def file with one of your own, and you may need to modify the kdrive.cf file (which is what includes the iPAQH3600.cf file).
Build X
cd xc; make World
Cross-Compiling X
The cross.def and cross.rules files currently in XFree86 are already set up to cross compile using our toolchain. Look at cross.def and cross.rules file for details. This configuration file presumes the kernel headers and toolchain available from handhelds.org
The Server and Libraries
The server used on the handhelds is Xfbdev, which will be in xc/programs/Xserver after make World completed.
Modified January 2, 2001 by [email protected]
|
|
|