Iliad Overview for developers
Contents |
[edit] Hardware
The iliad is a Linux embedded computer running on a ARM processor.
The relevant parts are:
- Processor: ARM v5TE compatible at 400Mhz (more on arm in the wikipedia entry for the arm architecture)
- RAM: 64MB
- Flash: 72MB in the root partition (TTFS), 128MB in the /mnt/free partition (VFAT, the one exported via USB)
- Display: electrophoretic (EPD, e-ink) display with a resolution of 768x1024, delta controller chip capable of 16 shades of gray
- Ethernet: smc91x-compatible, Fast Ethernet
- WiFi: cf8385-compatible, 802.11b/g
[edit] Software stack
The software stack of the iliad is built with OpenEmbedded, and basically is comprised of:
- Linux kernel 2.4.19-rmk7-pxa2-irex1
- GNU Libc 2.3.2+cvs20040726 (a CVS version in-between 2.3.2 and 2.3.3; software compiled against 2.3.2 will work)
- Busybox 1.01
- KDrive X Server cvs20050207
- X11 libraries from XOrg 6.2.1
- GTK+ 2.6.7 (glib 2.6.6, pango 1.8.1, freetype 2.1.10)
- Matchbox window manager 0.9.5
- Tao Intent Java VM, supporting J2ME MIDP (closed source)
More information at iRex site: iliad base software
The shell is managed by
- contentLister: from here the user selects the books to read; that part of the screen is replaced with the viewer application.
- matchbox panel 0.9.2 (patched): to show the icons at the bottom, always visible.
- pageBar: shows the page status bar at the bottom, always visible.
For reading there are two main viewer applications:
- ipdf for reading PDFs: based on libpoppler 0.5.4+svn20070605 and gtk+
- mobipocket reader (closed source): J2ME MIDP application
For taking handwritten notes there is one app:
- scribble: lets the user draw over a png file with the stylus.
NOTE: that ipdf and the mobipocket reader are also capable of this, using libscribble.
And it has the following daemons running:
- displayMgr: listens for applications request to refresh the screen (every app, after drawing on the screen, has to notify displayMgr so that the screen gets refreshed and shows the modifications to the screen). This is done this way instead of being automagical because the screen is very slow to refresh (up to 2 seconds!) and frequent unnecessary refreshes can annoy the user.
- erbusyd: controls the busy led
- powerMgr: controls the CPU frequency to save power; it lowers it when idle.
There are some other programs for the setup interface (settings), for connecting with iDS (connectionMgr), and for sharing documents with the PC (pcshareMgr).
[edit] Before you start
To run community provided programs or you own programs in the iliad, you have to request shell access. A more detailed howto is [The absolute n00b guide to installing applications].
Also note that iliad development is done in 32bit x86 Linux, preferably Debian or Ubuntu distributions. If you use something else, using the [iLiad Development VMWare image] is the safest bet.
A important thing to check is that you can reflash the iliad to factory defaults if something really nasty occurs when developing for the iliad. Read now the [How to unbrick (reflash, restore, etc) your iLiad ], do a backup of the iliad and follow the steps for checking if you are able to reflash (it's the part that says ..."you want to be sure that you are able to reflash before you break anything. Here's what you need to do.").
[edit] Compiling programs for the iliad
[edit] Compiling the kernel
For instructions on how to set-up a toolchain to compile the kernel, see the thread [How to compile the iRex stock kernel and modules? ]
[edit] Compiling iRex programs (ipdf, contentLister, etc.)
You will ned to install the official toolchain and get the sources of the program to compile. There is a step-by-step howto in the [How to build iPDF with toolchain?] thread,
If you are adventurous, you can also follow the [guide to integrate the official toolchain with scratchbox] thread.
[edit] Porting general linux programs
The easier way for those is using the unofficial toolchain, and using xepdmgr for handling the refreshes.
(Need to be completed O:).