Falconwing boot

The Falconwing image has four to six partitions, depending on how you count them and when you're looking at them. A fresh Falconwing image has a boot partition, rfsA, rfsB, an extended partition marker, and psp. Upon first boot, it will expand the extended partition marker, rewrite psp, and create a new /mnt/storage partition as the sixth partition.

Contents

Boot partition overview

Falconwing uses the on-chip bootstream bootloader from Freescale. This uses encrypted images, which need to be encrypted either using the otp key, or a key distributed in the elftosb2 package. Their code assumes one Linux kernel, which does not conform to what Chumby needs.

Because of this, we've come up with the following partition layout that lives within the first DOS partition of the boot image:

Start

End

Size

Name

Purpose

0x00000000

0x00000800

0x00000800

reserved

This area is ignored.

0x00000800

0x00008000

0x00007800

blbs

Chumby boot blobs

0x0000c000

0x00010000

0x00004000

cnfg

Config block

0x00010000

0x00044800

0x00034800

boot

Chumby bootloader

0x00044800

0x0006a000

0x00025800

img1

Boot graphic

0x0006a000

0x0008f800

0x00025800

img2

Boot graphic

0x0008f800

0x000b5000

0x00025800

img3

Boot graphic

0x000b5000

0x000da800

0x00025800

img4

Boot graphic

0x000da800

0x00100000

0x00025800

img5

Boot graphic

0x00100000

0x00500000

0x00400000

krnA

First boot kernel

0x00500000

0x00900000

0x00400000

krnB

Second boot kernel

0x00900000

0x00e00000

0x00500000

krnC

Unused recovery kernel.

Configuration Partition

The configuration partition contains settings that describe the current state of the Chumby, as well as defining the layout for the remainder of the boot partition. It's laid out in 16-byte chunks, with the first few chunks representing global configuration data, and each subsequent chunk representing a partition. Many fields are left empty in the currently-shipping devices. Its layout on disk begins at 0xc800, and looks like this:

If kernel symbols have changed, you'll need to replace kernel modules as well. Because of this, it may make sense to statically-link USB and network drivers, so that you won't need to worry about being unable to access peripherals.