While doing a Google search to locate the open Linux page of AMLogic, I noticed another link reading “Amlogic AML8726-MX Linux kernel code released“. Interesting. So AMLogic appears to have released the kernel source code for their latest dual core Cortex A9 processor at the beginning of August and the tarball is available from their open source site: kernel-common-2012-08-03-git-a63244fb9c.tar.gz.
A github user (fards) also imported the code to github, but he’s not affiliated with AMLogic, so don’t expect commits from AMLogic there. Let’s retrieve it:
git clone git://github.com/fards/AMlogic_Meson6_030812release.git
AML8726-MX is codenamed MESON6 in the source code, and the code is in arch/arm/mach-meson6/, but let’s see if we can find a config file in arch/arm/configs. Yes! There are 4:
- meson6_android_defconfig – Android config file (Single core)
- meson6_defconfig – Linux config file (Single core) all Android config disabled.
- meson6smp_android_defconfig – Android config file with smp (symmetric multiprocessing) support
- meson6smp_defconfig – Config file with smp (symmetric multiprocessing) support, Android stuffs enabled, but no touchscreen support…
The descriptions are my guesses based on the file names and a quick look and the configs.
Since ARM8726-MX is a dual core processor, and it’s no fun using the single core version, let’s try meson6smp_defconfig:
make ARM=arm meson6smp_defconfig
*** Default configuration is based on 'meson6smp_defconfig'
arch/arm/plat-meson/Kconfig:117: warning: Skip customer/boards/Kconfig
arch/arm/plat-meson/Kconfig:124: warning: Skip customer/drivers/Kconfig
The warnings mean we won’t have access to some board config and drivers specific to AMLogic’s customer board, but we should still be able to build the kernel with one of AMLogic reference platforms.
There are 2 Meson6 boards available in menuconfig:
- Meson6 socket board
- Meson6 reference board
I have no idea what those are, so let’s carry on with the default setting (Meson6 socket board).
I first tried to build with Linaro toolchain, but this failed with :
arch/arm/mach-meson6/hotplug.c:18:20: error: inlining failed in call to always_inline âmeson_set_cpu_ctrl_regâ: function body not available
which appears to be a bug in gcc-4.7. So I’ve used the toolchain provided on openlinux.amlogic.com (Code Sourcery G++) instead:
make ARCH=arm CROSS_COMPILE=~/amlogic/arm-2010q1/bin/arm-none-linux-gnueabi- -j 12 uImage
Image Name: Linux-3.0.8-g42697c8
Created: Sat Aug 18 18:14:00 2012
Image Type: ARM Linux Kernel Image (lzma compressed)
Data Size: 2943441 Bytes = 2874.45 kB = 2.81 MB
Load Address: 80008000
Entry Point: 80008000
Image arch/arm/boot/uImage is ready
Great, the kernel builds fine. Let’s complete this by building and installing the modules:
make ARCH=arm CROSS_COMPILE=
~/amlogic/arm-2010q1/bin/arm-none-linux-gnueabi--j12 INSTALL_MOD_PATH=build_modules modules
make ARCH=arm CROSS_COMPILE=
~/amlogic/arm-2010q1/bin/arm-none-linux-gnueabi--j12 INSTALL_MOD_PATH=build_modules modules_install
Those last steps will build the Mali drivers (ump.ko and mali.ko), and “install” all modules in build_modules directory.
For AMLogic AM8726-MX set-top boxes such as Geniatech ATV1200 (See video), this code might be enough, but fads mentioned in a comment that lcd/ips code is missing and it might be more difficult to use this code on tablets such as Ainol Novo 7 Aurora II. He also started a developers thread in slatedroid.com, join the discussion if you are a developer interested in this project.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.