aboutsummaryrefslogtreecommitdiff

# LCR for IFC6410 #

A port of Linaro Confectionary Release (lollipop) to Inforce Computing IFC6410.

Status

The port is unsupported and has only been superficially tests. Nevertheless the following hardware has been tested and is working:

  • Boot from eMMC.
  • USB mouse and keybaord.
  • Unaccelerated framebuffer GFX works but cursor flash from the underlying console is not disabled and causes pixel damage in the mid-left of the image.
  • Ethernet networking. IP address is obtained using DHCP by the kernel before is started init.

The kernel used for the port is based on Linux 3.19, although it does have additional hardware enablement patches from Linaro Landing Team dedicated to Qualcomm applies. Note the kernel does not have any Android specific patches added to it; once the hardware is fully enabled upstream the kernel could be replaced with a pure mainline kernel.

Prerequisites

This release was tested on Ubuntu x86_64 14.04 (Trusty Tahr) running in an LXC container and all instructions below assume a similar environment (although if you already run Trusty there is no need for the container).

The prerequisites for LCR are similar to those of the underlying AOSP. In addition to the normal Linux build environment the following packages will also be required:

sudo apt-get install abootimg curl python-mako

Getting the source

These instructions are similar to other LCR releases, see the generic instructions on the Linaro wiki for additional background details.

mkdir android-ifc6410
cd android-ifc6410
curl https://storage.googleapis.com/git-repo-downloads/repo > repo
chmod +x ./repo
./repo init \
    -u http://android.git.linaro.org/git/platform/manifest.git \
    -b android-5.0.2_r1 \
    -g default,-non-default,ifc6410
git clone \
    git://git.linaro.org/people/daniel.thompson/platform/manifest.git \
.repo/local_manifests -b linaro-lollipop
./repo sync

Building

It is optional by highly recommended to USE_CCACHE in addition to the basic instructions below:

source build/envsetup.sh
lunch ifc6410-userdebug
make -j `nproc` droid all_dtbs

droid is the default Android build target (i.e. what you get if you launch make without a build target.

all_dtbs builds the device tree blobs which otherwise are not compiled.

Install and boot

The build system automatically generates most of the images needed to flash the system but there is one omision, it does not generate the boot image containing the kernel, device tree and initial ramdisk. We must do that before flashing the images:

cd $T/out/target/product/ifc6410/
cat $T/kernel/linaro/ifc6410/fixup.bin kernel \
    obj/kernel/arch/arm/boot/qcom-apq8064-ifc6410.dtb > kernel_and_dtb
abootimg \
    --create boot.img -k kernel_and_dtb -r ramdisk.img \
    -c "bootsize = 0xa00000" \
    -c "pagesize = 0x800" \
    -c "kerneladdr = 0x80208000" \
    -c "ramdiskaddr = 0x82508000" \
    -c "secondaddr = 0x82100000" \
    -c "tagsaddr = 0x80200100" \
    -c "name = ifc6410" \
    -c "cmdline = \
console=ttyMSM0,115200,n8 init=/init ip=dhcp video=1280x720-16@60 \
androidboot.console=ttyMSM0 \androidboot.selinux=disabled"

We are now ready to flash the device. I typically force the board to remain in fastboot by connecting a jumper between pins 30 and 26 of the 40 pin expansion connector. We can then re-flash the device with the following commands:

fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot flash cache cache.img

If you are doing a lot of flashing it is best to leave the jumper permanently connected and use fast boot to get the board to continue booting.

fastboot continue