|
|
Line 1: |
Line 1: |
− | = Status = | + | = Linux Kernel 3.17 = |
− | == Kernel 3.17 ==
| + | |
| | | |
| + | == Status == |
| | | |
| + | What currently works in Linux mainline: |
| + | * UART |
| + | * SPI |
| + | * I2C |
| + | * GPIOs / LEDs |
| + | * USB |
| + | * SD/MMC |
| + | * Ethernet |
| | | |
− | = Build Linux Mainline =
| |
| | | |
− | '''WARNING: this Linux kernel is intended for developers only. A lot of things are not working yet: I2C, SPI, USB, framebuffer, HDMI driver, SD/MMC, NAND Flash, etc.'''
| + | What remains to be done: |
| + | * DRM Display driver / LCD controller |
| + | * HDMI / TV OUT drivers |
| + | * NAND flash support |
| | | |
| == Download == | | == Download == |
| | | |
− | Get linux-next kernel tree, default config and initramfs.cpio. | + | Get '''linux-next''' kernel tree, default config and initramfs.cpio. |
| | | |
| git clone --depth 1 git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git | | git clone --depth 1 git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git |
| cd linux-next | | cd linux-next |
| + | |
| wget http://www.sntech.de/rockchip/rockchip_defconfig -O arch/arm/configs/rockchip_defconfig | | wget http://www.sntech.de/rockchip/rockchip_defconfig -O arch/arm/configs/rockchip_defconfig |
| wget http://www.sntech.de/rockchip/initramfs.cpio | | wget http://www.sntech.de/rockchip/initramfs.cpio |
| | | |
− | == Build == | + | == Build kernel == |
| + | |
| + | We have to build two files: |
| + | * '''zImage''' (the kernel) |
| + | * '''rk3188-radxarock.dtb''' (the device tree blob) |
| + | |
| + | |
| + | export ARCH=arm |
| + | export CROSS_COMPILE=arm-linux-gnueabihf- |
| | | |
− | export ARCH=arm && export CROSS_COMPILE=arm-linux-gnueabihf-
| |
| make rockchip_defconfig | | make rockchip_defconfig |
− | make -j8 rk3188-radxarock.dtb
| + | make -j8 zImage dtbs |
− | make -j8 zImage | + | |
| | | |
− | == Flash boot image == | + | == Create boot image == |
| | | |
− | cat arch/arm/boot/zImage arch/arm/boot/dts/rk3188-radxarock.dtb > kernel.img
| + | We need to append the device tree blob to zImage (CONFIG_ARM_APPENDED_DTB option) until we can use U-Boot device tree support. |
− | mkbootimg --kernel kernel.img --ramdisk initramfs.cpio -o boot.img
| + | |
− | upgrade_tool di -b boot.img
| + | |
− | upgrade_tool rd
| + | |
| | | |
− | The device will reboot and you will see the linux kernel booting with GPIO, UART and SMP support.
| + | cat arch/arm/boot/zImage arch/arm/boot/dts/rk3188-radxarock.dtb > zImage-dtb |
| | | |
− | = Boot log =
| + | Create the '''boot.img''' using mkbootimg (Rockchip version). |
| | | |
− | In | + | mkbootimg --kernel zImage-dtb --ramdisk initramfs.cpio -o boot.img |
− | 3 3 DDR3
| + | |
− | 222MHz
| + | == Flash boot image == |
− | Bus Width=32 Col=10 Bank=8 Row=16 CS=1 Die Bus-Width=8 Size=2048MB
| + | |
− | Memory OK
| + | Flash boot.img using either '''rkflashtool''' or '''upgrade_tool''': |
− | OUT
| + | |
− | BUILD=====2
| + | rkflashtool w boot < boot.img |
− | No.1 FLASH ID:2c 64 44 4b a9 0
| + | rkflashtool b |
− | OK! 267026
| + | |
− | unsigned!
| + | upgrade_tool di -b boot.img |
− | SecureBootEn = 0 0
| + | upgrade_tool rd |
− | Boot ver: 2014-03-03#2.13
| + | |
− | RECOVERY key is pressed
| + | |
− | UsbBoot 272418
| + | |
− | UsbHook ...926685
| + | |
− | powerOn 926711
| + | |
− | 1198166 UsbConnected
| + | |
− | 1270413 UsbConnected
| + | |
− | 1352808 UsbConnected
| + | |
− | DDR Version 1.04 20140217
| + | |
− | In
| + | |
− | SRX
| + | |
− | DDR3
| + | |
− | 3 222MHz
| + | |
− | Bus Width=32 Col=10 Bank=8 Row=16 CS=1 Die Bus-Width=8 Size=2048MB
| + | |
− | OUT
| + | |
− | BUILD=====3
| + | |
− | No.1 FLASH ID:2c 64 44 4b a9 0
| + | |
− | No.2 FLASH ID:7f ff ff ff ff ff
| + | |
− | OK! 273294
| + | |
− | unsigned!
| + | |
− | SecureBootEn = 0 0
| + | |
− | Boot ver: 2014-03-03#2.13
| + | |
− | start_linux=====278869
| + | |
− | 2046791 Starting kernel...@0x60408000
| + | |
− |
| + | |
− | Uncompressing Linux... done, booting the kernel.
| + | |
− | [ 0.000000] Booting Linux on physical CPU 0x0
| + | |
− | [ 0.000000] Linux version 3.15.0-rc1-next-20140414 (julien@pandora) (gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu7) ) #2 SMP Mon Apr 14 16:10:50 CEST 2014
| + | |
− | [ 0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c53c7d
| + | |
− | [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
| + | |
− | [ 0.000000] Machine model: Radxa Rock
| + | |
− | [ 0.000000] bootconsole [earlycon0] enabled
| + | |
− | [ 0.000000] Memory policy: Data cache writealloc
| + | |
− | [ 0.000000] PERCPU: Embedded 7 pages/cpu @ee7c6000 s7680 r8192 d12800 u32768
| + | |
− | [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 522768
| + | |
− | [ 0.000000] Kernel command line: console=ttyS2,115200 earlyprintk init=/init
| + | |
− | [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
| + | |
− | [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
| + | |
− | [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
| + | |
− | [ 0.000000] Memory: 2074088K/2097152K available (2551K kernel code, 131K rwdata, 740K rodata, 2019K init, 209K bss, 23064K reserved, 1318912K highmem)
| + | |
− | [ 0.000000] Virtual kernel memory layout:
| + | |
− | [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
| + | |
− | [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
| + | |
− | [ 0.000000] vmalloc : 0xf0000000 - 0xff000000 ( 240 MB)
| + | |
− | [ 0.000000] lowmem : 0xc0000000 - 0xef800000 ( 760 MB)
| + | |
− | [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
| + | |
− | [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
| + | |
− | [ 0.000000] .text : 0xc0008000 - 0xc033eeec (3292 kB)
| + | |
− | [ 0.000000] .init : 0xc033f000 - 0xc0537e00 (2020 kB)
| + | |
− | [ 0.000000] .data : 0xc0538000 - 0xc0558e90 ( 132 kB)
| + | |
− | [ 0.000000] .bss : 0xc0558e98 - 0xc058d594 ( 210 kB)
| + | |
− | [ 0.000000] Hierarchical RCU implementation.
| + | |
− | [ 0.000000] NR_IRQS:16 nr_irqs:16 16
| + | |
− | [ 0.000021] sched_clock: 64 bits at 150MHz, resolution 6ns, wraps every 1832519401472ns
| + | |
− | [ 0.009620] Console: colour dummy device 80x30
| + | |
− | [ 0.014626] Calibrating delay loop... 1196.85 BogoMIPS (lpj=5984256)
| + | |
− | [ 0.102253] pid_max: default: 32768 minimum: 301
| + | |
− | [ 0.107648] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
| + | |
− | [ 0.115059] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
| + | |
− | [ 0.123874] CPU: Testing write buffer coherency: ok
| + | |
− | [ 0.130006] Setting up static identity map for 0x60283ea8 - 0x60283f00
| + | |
− | [ 0.141348] CPU1: Booted secondary processor
| + | |
− | [ 0.180620] CPU2: Booted secondary processor
| + | |
− | [ 0.220659] CPU3: Booted secondary processor
| + | |
− | [ 0.259308] Brought up 4 CPUs
| + | |
− | [ 0.277018] SMP: Total of 4 processors activated.
| + | |
− | [ 0.282303] CPU: All CPU(s) started in SVC mode.
| + | |
− | [ 0.288319] devtmpfs: initialized
| + | |
− | [ 0.297250] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
| + | |
− | [ 0.306337] pinctrl core: initialized pinctrl subsystem
| + | |
− | [ 0.312800] regulator-dummy: no parameters
| + | |
− | [ 0.320519] NET: Registered protocol family 16
| + | |
− | [ 0.326502] DMA: preallocated 256 KiB pool for atomic coherent allocations
| + | |
− | [ 0.334756] cpuidle: using governor ladder
| + | |
− | [ 0.339400] cpuidle: using governor menu
| + | |
− | [ 0.343959] L310 cache controller enabled
| + | |
− | [ 0.348460] l2x0: 16 ways, CACHE_ID 0x4100c0c8, AUX_CTRL 0x76050001, Cache size: 512 kB
| + | |
− | [ 0.360943] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
| + | |
− | [ 0.369844] hw-breakpoint: maximum watchpoint size is 4 bytes.
| + | |
− | [ 0.380991] SCSI subsystem initialized
| + | |
− | [ 0.386198] Switched to clocksource arm_global_timer
| + | |
− | [ 0.403056] NET: Registered protocol family 2
| + | |
− | [ 0.408724] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
| + | |
− | [ 0.416680] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
| + | |
− | [ 0.424023] TCP: Hash tables configured (established 8192 bind 8192)
| + | |
− | [ 0.431211] TCP: reno registered
| + | |
− | [ 0.434859] UDP hash table entries: 512 (order: 2, 16384 bytes)
| + | |
− | [ 0.441509] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
| + | |
− | [ 0.448859] NET: Registered protocol family 1
| + | |
− | [ 0.583624] futex hash table entries: 1024 (order: 4, 65536 bytes)
| + | |
− | [ 0.591714] bounce pool size: 64 pages
| + | |
− | [ 0.596430] msgmni has been set to 1474
| + | |
− | [ 0.601430] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
| + | |
− | [ 0.609689] io scheduler noop registered
| + | |
− | [ 0.614088] io scheduler deadline registered (default)
| + | |
− | [ 0.620105] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
| + | |
− | [ 0.628965] 10124000.serial: ttyS0 at MMIO 0x10124000 (irq = 66, base_baud = 1500000) is a 16550A
| + | |
− | [ 0.661593] dw-apb-uart 10126000.serial: Couldn't set LCR to 0
| + | |
− | [ 0.670018] dw-apb-uart 10126000.serial: Couldn't set LCR to 0
| + | |
− | [ 0.676568] 10126000.serial: ttyS1 at MMIO 0x10126000 (irq = 67, base_baud = 1500000) is a 16550A
| + | |
− | [ 0.687132] console [ttyS2] disabled
| + | |
− | [ 0.711313] 20064000.serial: ttyS2 at MMIO 0x20064000 (irq = 68, base_baud = 1500000) is a 16550A
| + | |
− | [ 0.721192] console [ttyS2] enabled
| + | |
− | [ 0.721192] console [ttyS2] enabled
| + | |
− | [ 0.728603] bootconsole [earlycon0] disabled
| + | |
− | [ 0.728603] bootconsole [earlycon0] disabled
| + | |
− | [ 0.761298] dw-apb-uart 20068000.serial: Couldn't set LCR to 0
| + | |
− | [ 0.770043] dw-apb-uart 20068000.serial: Couldn't set LCR to 0
| + | |
− | [ 0.775903] 20068000.serial: ttyS3 at MMIO 0x20068000 (irq = 69, base_baud = 1500000) is a 16550A
| + | |
− | [ 0.785905] brd: module loaded
| + | |
− | [ 0.789367] mousedev: PS/2 mouse device common for all mice
| + | |
− | [ 0.795010] Synopsys Designware Multimedia Card Interface Driver
| + | |
− | [ 0.801361] TCP: cubic registered
| + | |
− | [ 0.804699] NET: Registered protocol family 17
| + | |
− | [ 0.810545] input: gpio-keys.1 as /devices/soc.0/gpio-keys.1/input/input0
| + | |
− | [ 0.826727] Freeing unused kernel memory: 2016K (c033f000 - c0537000)
| + | |
− | mount: mounting /dev/mmcblk0p1 on /mnt failed: No such device or address
| + | |
− | total 0
| + | |
− | drwxr-xr-x 2 1000 1000 40 May 30 2013 .
| + | |
− | drwxr-xr-x 13 1000 1000 280 Jun 9 2013 ..
| + | |
− | umount: can't umount /mnt: Invalid argument
| + | |
− | processor : 0
| + | |
− | model name : ARMv7 Processor rev 0 (v7l)
| + | |
− | Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
| + | |
− | CPU implementer : 0x41
| + | |
− | CPU architecture: 7
| + | |
− | CPU variant : 0x3
| + | |
− | CPU part : 0xc09
| + | |
− | CPU revision : 0
| + | |
− |
| + | |
− | processor : 1
| + | |
− | model name : ARMv7 Processor rev 0 (v7l)
| + | |
− | Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
| + | |
− | CPU implementer : 0x41
| + | |
− | CPU architecture: 7
| + | |
− | CPU variant : 0x3
| + | |
− | CPU part : 0xc09
| + | |
− | CPU revision : 0
| + | |
− |
| + | |
− | processor : 2
| + | |
− | model name : ARMv7 Processor rev 0 (v7l)
| + | |
− | Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
| + | |
− | CPU implementer : 0x41
| + | |
− | CPU architecture: 7
| + | |
− | CPU variant : 0x3
| + | |
− | CPU part : 0xc09
| + | |
− | CPU revision : 0
| + | |
− |
| + | |
− | processor : 3
| + | |
− | model name : ARMv7 Processor rev 0 (v7l)
| + | |
− | Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
| + | |
− | CPU implementer : 0x41
| + | |
− | CPU architecture: 7
| + | |
− | CPU variant : 0x3
| + | |
− | CPU part : 0xc09
| + | |
− | CPU revision : 0
| + | |
− |
| + | |
− | Hardware : Rockchip Cortex-A9 (Device Tree)
| + | |
− | Revision : 0000
| + | |
− | Serial : 0000000000000000
| + | |
− |
| + | |
− |
| + | |
− | BusyBox v1.20.2 (Debian 1:1.20.0-8) built-in shell (ash)
| + | |
− | Enter 'help' for a list of built-in commands.
| + | |
− |
| + | |
− | /bin/sh: can't access tty; job control turned off
| + | |
− | / #
| + | |
− | / # ps
| + | |
− | PID USER COMMAND
| + | |
− | 1 0 {init} /bin/sh /init
| + | |
− | 2 0 [kthreadd]
| + | |
− | 3 0 [ksoftirqd/0]
| + | |
− | 4 0 [kworker/0:0]
| + | |
− | 5 0 [kworker/0:0H]
| + | |
− | 6 0 [kworker/u8:0]
| + | |
− | 7 0 [rcu_sched]
| + | |
− | 8 0 [rcu_bh]
| + | |
− | 9 0 [migration/0]
| + | |
− | 10 0 [migration/1]
| + | |
− | 11 0 [ksoftirqd/1]
| + | |
− | 12 0 [kworker/1:0]
| + | |
− | 13 0 [kworker/1:0H]
| + | |
− | 14 0 [migration/2]
| + | |
− | 15 0 [ksoftirqd/2]
| + | |
− | 16 0 [kworker/2:0]
| + | |
− | 17 0 [kworker/2:0H]
| + | |
− | 18 0 [migration/3]
| + | |
− | 19 0 [ksoftirqd/3]
| + | |
− | 20 0 [kworker/3:0]
| + | |
− | 21 0 [kworker/3:0H]
| + | |
− | 22 0 [khelper]
| + | |
− | 23 0 [kdevtmpfs]
| + | |
− | 24 0 [netns]
| + | |
− | 25 0 [writeback]
| + | |
− | 26 0 [bioset]
| + | |
− | 27 0 [kblockd]
| + | |
− | 28 0 [kworker/0:1]
| + | |
− | 29 0 [kswapd0]
| + | |
− | 30 0 [fsnotify_mark]
| + | |
− | 31 0 [kworker/u8:1]
| + | |
− | 34 0 [kworker/1:1]
| + | |
− | 35 0 [deferwq]
| + | |
− | 38 0 [kworker/2:1]
| + | |
− | 57 0 /bin/sh
| + | |
− | 58 0 [kworker/3:1]
| + | |
− | 59 0 {busybox} ps
| + | |
− | / # cat /proc/interrupts | + | |
− | CPU0 CPU1 CPU2 CPU3
| + | |
− | 27: 0 0 0 0 GIC 27 gt
| + | |
− | 29: 36951 36928 36931 36927 GIC 29 twd
| + | |
− | 68: 205 0 0 0 GIC 68 serial
| + | |
− | 160: 0 0 0 0 rockchip_gpio_irq 4 GPIO Key Power
| + | |
− | IPI0: 0 0 0 0 CPU wakeup interrupts
| + | |
− | IPI1: 0 0 0 0 Timer broadcast interrupts
| + | |
− | IPI2: 99 116 30 22 Rescheduling interrupts
| + | |
− | IPI3: 1 53 54 54 Function call interrupts
| + | |
− | IPI4: 0 0 0 0 Single function call interrupts
| + | |
− | IPI5: 0 0 0 0 CPU stop interrupts
| + | |
− | IPI6: 10 5 6 0 IRQ work interrupts
| + | |
− | IPI7: 0 0 0 0 completion interrupts
| + | |
− | Err: 0
| + | |
− | / # | + | |
We need to append the device tree blob to zImage (CONFIG_ARM_APPENDED_DTB option) until we can use U-Boot device tree support.