Porting Overview

This topic describes the typical steps that you will need to do to create a base port.

The easiest way to create a base port is to take the supplied template port and expand it to suit your own hardware configuration(s). The template port, is an outline, but working, framework that you can modify to suit your own hardware.

The template port can be found under the sf/os/kernelhwsrv/bsptemplate/ directory. For more information about the template port see Kernel & Hardware Quick Start Guide.

Set up the environment

The first thing to do is to set up your environment for building, downloading onto your hardware, and testing that the port works.

Build, download, and test the supplied template port

As supplied, the template port is designed to boot on any hardware. It should boot successfully, but clearly, the system can do nothing more at this time. A successful boot shows that your build environment has been set up correctly.

Copy and rename the Template port

When porting the base to a new platform, you will need to code and build the Variant. This provides those hardware dependent services required by the kernel. In nearly all ports, this is split into an ASSP DLL and a Variant DLL. We usually refer to the ASSP layer and the Variant layer.

It is desirable that code that depends only on the properties of the ASSP be segregated from code that depends on details of the system outside the ASSP, so that multiple systems that use the same ASSP can share common code.

For example, in the template reference port, the ..\template_assp\... directory contains source code that contains the ASSP code, whereas the ...\template_variant\... directory contains the code specific to the template board.

Code the Bootstrap

The bootstrap consists of several generic source and header files suppplied as part of Symbian platform, and a set of platform specific files. You need to create these platform specific files as part of a base port.

For details, see Bootstrap.

The updated port can then be built, downloaded and tested.

Implement the interrupt dispatcher

An interrupt is a condition that causes the CPU to suspend normal execution, enter interrupt handling state and jump to a section of code called an interrupt handler. The ASSP/variant part of the base port must implement an interrupt dispatcher class to manage interrupts.

For details, see the Interrupt Dispatcher Implementation Tutorial.

The updated port can then be built, downloaded and tested.

Implement the Asic class

The Kernel requires that the ASSP/variant part of the base port provides an implementation of the Asic interface. This defines a small number of hardware-specific functions that are used by the Kernel.

For details, see the Asic Class Tutorial.

The updated port can then be built, downloaded and tested.

Port the User-Side Hardware Abstraction (HAL)

The User-Side Hardware Abstraction (HAL) component provides a simple interface for programs to read and set hardware-specific settings, for example, the display contrast. A base port must define the attributes that clients can use on a phone, and implement any functions that are required to get and set the attributes.

For details, see User-Side Hardware Abstraction.