(English) Kirkwood, Orion: Mainline Linux 4.12 for TK71

Leider ist der Eintrag nur auf Amerikanisches Englisch verfügbar. Der Inhalt wird unten in einer verfügbaren Sprache angezeigt. Klicken Sie auf den Link, um die aktuelle Sprache zu ändern.

A client asked for more recent Linux kernel support for a Marvell Kirkwood/Orion 88F6281 based board made by KaRo, the TK71. This is a Q7 form factor CPU module running @ 1.2GHz with two GBit Ethernet ports, two SATA ports, USB2.0 and PCIe support. The TK71 usually comes with 256MB of RAM, a 512MB version is available upon request. The Marvell Kirkwood CPU was intended for network appliances like routers or small NAS systems.

Originally I did the U-Boot and Linux kernel adaptations for the Warpcomm project in 2010, a joint venture of Avnet, Marvell and KaRo. At that time I ported a Linux mainline 2.6.36 kernel, later upgraded this to 2.6.38 but did no further updates.

Today I resurrected the old boards and gave them a small test drive 🙂

I started from a vanilla defconfig for Orion5 and used the ARM cross toolchain from Debian:

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make orion5x_defconfig
make zImage

Since the U-Boot version does not yet have device tree support I attached a device tree binary to the zImage and built the uImage from it:

make dtbs
cat arch/arm/boot/zImage arch/arm/boot/dts/kirkwood-openrd-base.dtb > zImage-openrd-base
/bin/sh ./scripts/mkuboot.sh -A arm -O linux -C none -T kernel -a 0x00008000 -e 0x00008000 -n 'Linux-4.12.5' -d ./zImage-openrd-base uImage-openrd-base

Looks a little scary but works nicely. On the TK71 I can load this kernel image via dhcp/tftp and boot into it:

 

TK71>> dhcp uImage-openrd-base
BOOTP broadcast 1
DHCP client bound to address 10.37.3.136
Using egiga0 device
TFTP from server 10.37.3.254; our IP address is 10.37.3.136
Filename 'uImage-openrd-base'.
Load address: 0x800000
Loading: #################################################################
 #################################################################
 ##################################
done
Bytes transferred = 2394329 (2488d9 hex)
TK71>> bootm
## Booting kernel from Legacy Image at 00800000 ...
 Image Name: Linux-4.12.5
 Image Type: ARM Linux Kernel Image (uncompressed)
 Data Size: 2394265 Bytes = 2.3 MB
 Load Address: 00008000
 Entry Point: 00008000
 Verifying Checksum ... OK
 Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Booting Linux on physical CPU 0x0
Linux version 4.12.5 (nica@sourceress) (gcc version 4.9.2 ( 4.9.2-10) ) #6 PREEM
PT Tue Aug 8 17:39:55 CEST 2017
CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=0005397f
...

Excellent!

The most important peripherals are working, like first Ethernet interface, serial console and NAND flash so I can continue from there. I guess that most of the work will be in properly configuring a devicetree for the TK71.