Overview

Linux kernel for Utilite2 provides support for on-board peripherals and abstracts the functionality provided by the hardware.

Building kernel for Utilite2

Cross-Compiler

There are several options for cross-compilation toolchain setup. You can either compile your cross-compiler or use an already built cross-compiler. The cross-compiler should support the ARM embedded-application binary interface ("EABI")

Getting kernel sources

The Utilite2 Linux kernel is based on the Snapdragon 600 Linux Platform Ubuntu-based release by Linaro.
In the following guide, we assume that /home/development/Utilite2/kernel directory path has been created for Utilite2 kernel development.

Boot image

In general a boot image is a data image composed of following sections:

Control Header

Linux Kernel binary (zImage)

Initial Ramdisk binary image

Second Stage Image (optional)

The boot image Control Header describes the image layout and carries other useful information like board name and kernel command line.
The Utilite2 boot image includes first three sections (Header, Kernel and Ramdisk).

Preparing boot image

A special utility named abootimg is used to create boot images.
Some Linux disributions provide abootimg utility within their package repositories.
For example, on Ubuntu platform, abootimg utility may be obtained via abootimg package.

The abootimg utility obtains Linux Kernel binary and Initial Ramdisk image as input parameters.
Additionally, it uses a special boot image configuration file which provides an essential information for a proper boot image creation.
Please refer to the section Boot Configuration file in the abootimg project README file for more details.

To create a boot image based on a custom developer kernel perform the following steps:

Fastboot

Utilite2 application botloader LK supports USB driver and fastboot protocol.
This allows obtaining boot images from a remote host machine over a USB connection.
There are two sides to using fastboot

a host machine side,

a target device side connected to the host via a USB cable.

Images obtained over USB can be either executed on the device or flashed onto main storage device (e.g. MMC, eMMC).

In general fastboot is provided within the Android SDK.
Also some Linux distributions provide fastboot within their package repositories.
For example, on Ubuntu platform, fastboot may be obtained via Template:Parameter package.

Testing developer boot image

The developer boot image can be loaded over fastboot protocol to the application bootloader (LK) and then run without need to flash it onto the storage device.

It is essential to test the developer boot image prior to flashing it onto the storage device permanently.

As long as there is a valid boot image on the storage device (on-board eMMC), the application bootloader will load it automatically.

Prevent the automatic loading and force the Utilite2 enter the application bootloader (LK).

Basic platform support

The Utilite2 basic platform support is implemented in several files with common prefix board-8064*.c found in the arch/arm/mach-msm/ directory of Linux kernel source tree.
These files include default setup of multi-functional pins, registration of devices integrated in the Utilite2 and platform-specific configuration.

USB 3G Modem

USB 3G modem with mini PCIe adapter can be used by Utilite2 for mobile broadband connections.
Point-to-Point Protocol (PPP) is the protocol used for establishing internet links over dial-up modems, DSL connections, and many other types of point-to-point links. The pppd daemon works together with the kernel PPP driver to establish and maintain a PPP link with another system (called the peer) and to negotiate Internet Protocol (IP) addresses for each end of the link.