Dragonboard/APQ8060A

From eLinux.org
< Dragonboard
Revision as of 19:01, 24 April 2013 by Mcgrof (talk | contribs)
Jump to: navigation, search

APQ8060A Linux upstream work

This documentation is for folks who who want to work on ramping up linux upstream development based on APQ8060A. You'll need am armel toolchain installed. Below are documentation for Linux distributions.

Getting gcc-armel on Debian

Add this to your /etc/apt/sources.list:

deb http://www.emdebian.org/debian testing main

Then do

sudo apt-get update
sudo apt-get install gcc-4.4-base-armel-cross

Updating environment

Add to your .bashrc:

export CROSS_COMPILE=/usr/bin/arm-linux-gnueabi-

It would also help if you have a simple script called make-arm in your PATH somewhere that does this:

make ARCH=arm O=kobj $@


Get the code

We are going to be relying on two trees, one from CAF and another one that is used for upstream development and is synched regularly to Linus. The goal is to get rid of the delta. There is an issue with the CAF git tree master branch so use the msm-3.4 branch.

git clone git://codeaurora.org/quic/la/kernel/msm.git msm-3.4
git://git.kernel.org/pub/scm/linux/kernel/git/davidb/linux-msm.git

The way to think about this:

  • msm-3.4: things not upstream
  • linux-msm: target upstream -- you should be on the for-next branch

Building msm-3.4

mkdir kobj
cp arch/arm/configs/msm8960_defconfig kobj/.config
make-arm menuconfig
make-arm -j 4

Building linux-msm

mkdir kobj
cp arch/arm/configs/msm_defconfig kobj/.config
make-arm menuconfig
make-arm -j 4

Getting your initrd

For msm-3.4 you'll want to get the ramdisk that came with you original boot.img, the interweb has a script unpack-H.pl that you can use to extract it:

unpack-H.pl boot.img

Your ramdisk will be named boot.img-ramdisk.gz

Enabling debug

Enable a few kernel debugging flags:

 * CONFIG_DEBUG_LL
 * CONFIG_EARLY_PRINTK
Kernel Hacking -->
Kernel low-level debugging functions (read help!)
Early printk

http://drvbp1.linux-foundation.org/~mcgrof/images/debug.png

You do not need to enable anything under " Kernel low-level debugging port (No low-level debugging UART)", that is, you do not need CONFIG_DEBUG_ICEDCC or CONFIG_DEBUG_SEMIHOSTING.

Enabling APQ8060A

On the msm-3.4 branch you will need to enable:

 * CONFIG_MACH_APQ8060A_DRAGON
System Type --->
MSM Board Selection --->
[*] APQ8060A Based Dragonboard

http://drvbp1.linux-foundation.org/~mcgrof/images/apq8060a.png

Latest boot log

This is the latest boot log.. with just one pending patch applied (out of I don't know how many left) to the msm-3.4 branch to be able to start hacking.

https://gist.github.com/mcgrof/5456938

Generating initial boot image

The APQ8060A will have shipped with an Android boot loader so you need to first get the kernel you built into a format it will like. This section will be expanded soon. Right now this is a placeholder for some more details to be added later.

  • msm-3.4: package 8960 boot.img-ramdisk.gz --cmdline="console=ttyMSM0,115200,n8"
  • linux-msm: package 8960dt --cmdline="console=ttyMSM0,115200,n8"