OpenAlchemy Wizard Tour

From OpenAlchemy.org

Welcome O Wizard! To the land of the OpenAlchemy Developers. = A quick overview of the code base of OpenAlchemy is given here, with brief notes.


Contents

Amida Linux Kernel

Introduction

Linux is a POSIX complaint kernel (UNIX-like), originally created by Linus Torvalds in 1991, with the assistance of developers around the world. Its source code is released under the GNU General Public License (GPL).It has grown to be a very stable, extensible, scalable, secure and standards-complaint kernel, and is widely used today in various computers ranging from mainframes and desktops to embedded devices.

A very important factor in the choice of the Operating System (OS) for the Amida, is that it should be completely open, so that development can be completely in control of the developers, allowing complete freedom to make modification to the kernel, for all the devices present on the Amida, without any dependence on any other third-party or company. In addition, it must not be expensive to develop, distribute and deploy. The source should also be distributable to customers who ask for it. Most importantly, the kernel should not place any restriction on the User Interface (UI) layers above it, which is crucial for Amida's revolutionary UI.

The Linux kernel fits all the above criteria perfectly, while also being stable, activelydeveloped and proven in the industry. IBM has the Linux kernel working on a wrist watch as well on a mainframe. This proves the scalability of the kernel. In addition, the kerneldoes not place any restrictions on how the UI should be structured, like some commercial operating systems do. Also, there is already a wide variety of applications already available on the GNU/Linux platform, which allows for fast development on applications for theAmida.

The Amida Linux kernel, is derived from the the Linux kernel for the ARM architecture. The development for this branch is hosted at http://arm.linux.org.uk.

The boot loader used on the Amida is the blob, which is derived from the LART project (http://www.lart.tudelft.nl/). Blob resides in flash memory in the boot area of the Amida. It is responsible for initializing the RAM and loading the Amida kernel from flash memory to RAM.

The Linux kernel consists of various subsystems namely, the process subsystem including the scheduler, the virtual memory subsystem, the networking subsystem, the file subsystem and the device drivers. The kernel currently used on the Amida is the kernel version 2.4.18-rmk7-pp1.

The following are the various device drivers for the Amida.


LCD

Depending on the Amida model, the driver handles monochrome, STN or TFT LCDs. The driver handles the refresh frequency, the palette and set up the DMA as required by the LCD.

Flash Memory

Depending on the Amida model, the driver handles 16MB or 32MB of flash memory mapped into partitions of boot area (blob + logo), kernel, root file system (/), and application file system (/usr/local). The flash currently used is an Intel Strata Flash which supports the CFI interface.

Touch Screen

Depending on the Amida model, this is a driver for the Philips UCB1200/1300/1400. It handles interrupts from the touch screen, then samples the X position, Y position and pressure, using an ADC and sends events to a higher user-level library called tslib, which is resposible for jitter removal, and scaling the values to suit the resolution of the LCD.

Audio

This is a driver for the mono-audio codec found on the Philips UCB1x00. It emulates an OSS complaint interface for user level programs. It handles both recording, playback and a mixer for volume control.

Serial Port

This driver handles the internal SA1110/XScale UART. The serial port 0 is used as the debug serial port and also as the port for the external modem. The serial port 3 is used forthe smartcard.

Smartcard

This driver is basically a driver for the serial port 3 of the processor, which is connected to the Philips smartcard controller. It understands the ALPAR protocol framework of the smartcard controller. The protocol details are handled by a user level driver, whereasonly ALPAR request and reply frames are handled by this driver.

RTC

The real time clock driver is reposible for synchronizing the system clock to the real time clock, which runs even when the simputer is off. The driver is also responsible for setting and triggering alarms. The Amida is capable of waking from sleep using RTC alarms.

USB Master (Host)

The USB Host driver is a driver for the Philips ISP1161 host controller which supports upto 2 master hubs. The Amida has two USB master hubs. In addition to the driver for the master hub which handles all the four types of USB transfer devices (control, interrupt, bulk and isochronous). In addition to this various USB class drivers are written for USB keyboard, USB 802.11 wireless LAN, USB ethernet adapter, CDMA phone, USB flash stick, digital camera etc.

USB Slave (device)

The USB Slave driver is a driver for the inbuilt USB device controller found on the SA1110/XScale processor. It allows for connection to a PC. An USB class driver called usb-net provides a network device emulation when connected to the PC, enabling connection to the Amida using a TCP/IP network interface.

Accelerometer

The Accelerometer driver is a driver for the accelerometer chip present. Its purpose is to measure the acceleration in the X and Y planes and report the measured value to the user-level accelerometer daemon, which recognizes the user's gesture.

Infra Red

The Infra Red driver is a driver for the SA1110/XScale¿s internal infra red controller. A higher layer of this driver implements the IrDA protocol, which enables the Amida to communicate with other IrDA complaint devices such as other Amidas, IrDA printers, other handhelds etc.

Battery Driver

The Battery driver measures the amount of charge in the Amida¿s battery and reports this to higher layers, which can decide to alert the user or forcefully put the Amida to sleep.

Buttons Driver

This driver reports the press/release events of the buttons driver to higher layers like the X Server.

Block diagram of Amida Software Architecture

Amida Software Architecture

Users

OpenAlchemy is a Free and Open Source Software project
proudly supported by
Geodesic Information Systems Limited

Comments? Feedback? Contact Us.

MediaWiki