Site Tools


kerneldev

This is an old revision of the document!


DRAFT

Generality

A side note, at the Kernel level soft (armel)/hard float (armhf) doesn't matter, it matter at the userspace space level when passing function argument (in hard float there are pass via FPU register). Linaro as made a benchmark about this subject.

NVidia's Tegra21), which is dual-core ARM Cortex-A9, support only VFPv3 2) and not NEON 3) extension which is is more powerfull.

At 2012/02/18, the most stable kernel is 3.0.19, and Marc Dietrich, the most advanced on kernel's development, start its effort in adapting kernel 3.2.x series for AC100.

The most hotspot in kernel development is NVEC driver (incomplete implementation and marginal stability issue), sound driver (missing features like MIC, or noise annoyance, automatic switch between Speaker/Headphone, etc) and Wifi driver (stability issue and high stress on specific memory pool (reduced by echo 32000 > /proc/sys/vm/min_free_kbytes)).

Recompiling a Kernel

Before doing this operation, try an already compiled kernel for less harsh, here is some link to pick it:

Ubuntu

Debian

Fedora

RedSleeve

Others

You can extract zImage and corresponding modules from this packages.

Compilation environment consideration

Cross-compiling and native.

2.6.38 Kernel series

git clone -b chromeos-ac100-2.6.38 git://gitorious.org/~marvin24/ac100/marvin24s-kernel.git
cd marvin24s-kernel
make paz00_defconfig zImage modules modules_install INSTALL_MOD_PATH=/mnt/mmcblk1p1
abootimg -u /tmp/part-6.img -k arch/arm/boot/zImage

/mnt/mmcblk1p1 is where is your rootfs, if it is your live system suppress INSTALL_MOD_PATH=/mnt/mmcblk1p1

/tmp/part-6.img is your copy of your boot image (part 6 for nvflash, mmcblk0p2 device on eMMC for Linux)

If you want to create a custom version of your kernel's config, run make menuconfig after make paz00_defconfig.

After code update in Gitorious repository

git pull
make menuconfig zImage modules modules_install INSTALL_MOD_PATH=/mnt/mmcblk1p1
abootimg -u /tmp/part-6.img -k arch/arm/boot/zImage

3.0.x Kernel series

TODO

git clone -b chromeos-ac100-3.0 git://gitorious.org/~marvin24/ac100/marvin24s-kernel.git
cd marvin24s-kernel

Kernel Debugging

TODO

GDB and KGDB

TODO

Remote debugging session

TODO

SystemTap

TODO

Wikipedia's SystemTap article

SystemTap Wiki

http://sourceware.org/systemtap/SystemTap_Beginners_Guide/cross-compiling.html

http://sourceware.org/systemtap/SystemTap_Beginners_Guide/using-usage.html

http://omappedia.org/wiki/Systemtap

SystemTap: Instrumenting the Linux Kernel for Analyzing Performance and Functional Problems by IBM

Language reference

Examples written by Paul Fertser for tracking NVEC activities:

- first, fetch the address of NVEC:

stap -B CROSS_COMPILE=arm-none-linux-gnueabi- -a arm -r ~/openmoko/l/ -v -e 'probe 
                     kernel.function("nvec_write_async") { printf("hi, nvecs address is %p\n", $nvec) exit() }'

hi, nvecs address is 0xdf8ae000

- second, with this address, tracks events for controlling sound amplifier:

stap -g -B CROSS_COMPILE=arm-none-linux-gnueabi- -a arm -r ~/openmoko/l/ -v -e '%{ #include 
                     <../drivers/staging/nvec/nvec.h> %} probe begin { %{ nvec_write_async((struct nvec_chip*)0xdf8ae000, 
                     "\x0d\x10\x59\x94", 4) %} exit() }'

\x0d\x10\x59\x94 mutes the amplifier, with \x0d\x10\x59\x95 unmutes it.

DTrace

Git-Fu

TODO

A tutorial on Git by Charles Duan.

Kernel Hot patching

Support

kerneldev.1329585096.txt.gz · Last modified: 2012/02/18 18:11 by woglinde