A few days ago, we’ve seen Chromium OS running on Rockchip RK3288 development platform. I’ve been informed the source code could have already been released via the newly registered rkchrome github account with Linux kernel 3.10.30 and the overlay files to build Chromium OS for RK3288. There’s also a u-boot repository but it is currently empty. This Linux kernel can also boot Rockchip RK3188 based Radxa Rock development board, but more tests are needed to see if it’s really usable.

I’ll have a look at the Linux kernel, and try to build it, and leave the Chromium OS part for later or other people.

Let’s retrieve the source code:



git clone https://github.com/rkchrome/kernel.git cd kernel 1 2 git clone https : // github .com / rkchrome / kernel .git cd kernel



We’ve got two kernel config files related to Rockchip in arch/arm/config:



ls arch/arm/configs/ | grep rock rockchip_chromium_defconfig rockchip_defconfig 1 2 3 ls arch / arm / configs / | grep rock rockchip_chromium_defconfig rockchip_defconfig



But since this is a recent 3.10 kernel with support for Flattened Device Tree support, and multi-platform support, there’s not much to be seen in these files, and we have to go to arch/arm/boot/dts/ where we can find several rk3188 and rk3288 related files:



cd arch/arm/boot/dts/ ls rk* rk3188-clocks.dtsi rk3188-tb.dts rk3288-fpga.dts rk3288-tesco.dts rk3188.dtsi rk3288-chrome.dts rk3288-p977.dts rk616.dtsi rk3188-lr097.dts rk3288-clocks.dtsi rk3288-pinctrl.dtsi rk808.dtsi rk3188-pinctrl.dtsi rk3288.dtsi rk3288-tb.dts 1 2 3 4 5 6 cd arch / arm / boot / dts / ls rk * rk3188 - clocks .dtsi rk3188 - tb .dts rk3288 - fpga .dts rk3288 - tesco .dts rk3188 .dtsi rk3288 - chrome .dts rk3288 - p977 .dts rk616 .dtsi rk3188 - lr097 .dts rk3288 - clocks .dtsi rk3288 - pinctrl .dtsi rk808 .dtsi rk3188 - pinctrl .dtsi rk3288 .dtsi rk3288 - tb .dts



dtsi files contains parameters relevant to the SoC and common to all hardware platforms. dts files are device specific. All dts file seem to include an LCD display so they may all be for tablets.

Let’s try to build the kernel with one of the default config in Ubuntu 14.04:



make ARCH=arm rockchip_defconfig make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8 1 2 make ARCH = arm rockchip_defconfig make ARCH = arm CROSS_COMPILE = arm - linux - gnueabi - - j8



The build actually failed due to some inlining issues such as:

arch/arm/mach-rockchip/pm.h:161:20: error: inlining failed in call to always_inline ‘rkpm_set_ctrbits’: function body not available

But each time, editing the code to remove the inline declaration, e.g. “extern inline void” to “extern void,” fixed the build, and eventually I could get a zImage that in theory can boot RK3188 or RK3288 based devices.

If you want to generate the dtb (Device Tree Binary) file from the dts you can run something like:



make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- rk3288-tb.dtb 1 make ARCH = arm CROSS_COMPILE = arm - linux - gnueabi - rk3288 - tb .dtb



Thanks to Omegamoon for the tip.