Please enable javascript, or click here to visit my ecommerce web site powered by Shopify.
Jump to: navigation, search

Rock/Linux Mainline

< Rock
Revision as of 11:01, 13 March 2014 by Julien (Talk | contribs)

Build Linux Mainline

Download

Get latest Linux stable version, default config and initramfs.cpio.

   wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.13.6.tar.xz
   tar xJf linux-3.13.6.tar.xz
   cd linux-3.13.6
   wget http://www.sntech.de/rockchip/rockchip_defconfig -O arch/arm/configs/rockchip_defconfig
   wget http://www.sntech.de/rockchip/initramfs.cpio

Apply latest patches from linux-next tree

These patches add snoop-control-unit, power-management-unit, smp bringup code, sram dt nodes and documentation (thanks to Heiko Stuebner).

   for i in f6f70cf7 de18e014 46b8219c5 a7a2b311 ; do curl -s https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/patch/?id=$i | patch -p1 ; done

Build

   export ARCH=arm && export CROSS_COMPILE=arm-linux-gnueabihf-
   make rockchip_defconfig
   make -j8 rk3188-radxarock.dtb
   make -j8 zImage

Flash boot image

   cat arch/arm/boot/zImage arch/arm/boot/dts/rk3188-radxarock.dtb > kernel.img
   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.

TODO: among things that are not working yet and remain to be implemented in mainline kernel: I2C, SPI, USB, framebuffer, HDMI driver, etc.

Boot log

   DDR Version 1.04 20130517
   In
   DDR3
   300MHz
   Bus Width=32 Col=10 Bank=8 Row=16 CS=1 Die Bus-Width=8 Size=2048MB
   Memory OK
   OUT
   BUILD=====2
   SdmmcInit=0 0
   FwPartOffset=0 , 0
   No.1 FLASH ID:ad de 94 eb 74 44
   No.2 FLASH ID:14 ff ff ff ff ff
   OK! 312004
   unsigned!
   SecureBootEn = 0 0
   Boot ver: 2013-12-27#2.10
   start_linux=====317529
    1903042 Starting kernel...@0x60408000
   
   Uncompressing Linux... done, booting the kernel.
   Booting Linux on physical CPU 0x0
   Linux version 3.13.6+ (julien@julien-ubuntu) (gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu7) ) #1 SMP Thu Mar 13 11:34:41 CET 2014
   CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c53c7d
   CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
   Machine model: Radxa Rock
   bootconsole [earlycon0] enabled
   Memory policy: Data cache writealloc
   PERCPU: Embedded 7 pages/cpu @c18dd000 s7616 r8192 d12864 u32768
   Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 522768
   Kernel command line: console=ttyS2,115200 earlyprintk init=/init
   PID hash table entries: 4096 (order: 2, 16384 bytes)
   Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
   Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
   Memory: 2074164K/2097152K available (2491K kernel code, 128K rwdata, 728K rodata, 2011K init, 207K bss, 22988K reserved, 1318912K highmem)
   Virtual kernel memory layout:
       vector  : 0xffff0000 - 0xffff1000   (   4 kB)
       fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
       vmalloc : 0xf0000000 - 0xff000000   ( 240 MB)
       lowmem  : 0xc0000000 - 0xef800000   ( 760 MB)
       pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
       modules : 0xbf000000 - 0xbfe00000   (  14 MB)
         .text : 0xc0008000 - 0xc032cf0c   (3220 kB)
         .init : 0xc032d000 - 0xc0523dc0   (2012 kB)
         .data : 0xc0524000 - 0xc05442c8   ( 129 kB)
          .bss : 0xc05442d0 - 0xc0578058   ( 208 kB)
   Hierarchical RCU implementation.
   NR_IRQS:16 nr_irqs:16 16
   sched_clock: 32 bits at 150MHz, resolution 6ns, wraps every 28633115641ns
   Console: colour dummy device 80x30
   Calibrating delay loop... 1196.85 BogoMIPS (lpj=5984256)
   pid_max: default: 32768 minimum: 301
   Mount-cache hash table entries: 512
   CPU: Testing write buffer coherency: ok
   Setting up static identity map for 0x60274fc8 - 0x60275020
   CPU1: Booted secondary processor
   CPU2: Booted secondary processor
   CPU3: Booted secondary processor
   Brought up 4 CPUs
   SMP: Total of 4 processors activated.
   CPU: All CPU(s) started in SVC mode.
   devtmpfs: initialized
   VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
   pinctrl core: initialized pinctrl subsystem
   regulator-dummy: no parameters
   NET: Registered protocol family 16
   DMA: preallocated 256 KiB pool for atomic coherent allocations
   cpuidle: using governor ladder
   cpuidle: using governor menu
   L310 cache controller enabled
   l2x0: 16 ways, CACHE_ID 0x4100c0c8, AUX_CTRL 0x76050001, Cache size: 512 kB
   hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
   hw-breakpoint: maximum watchpoint size is 4 bytes.
   bio: create slab <bio-0> at 0
   SCSI subsystem initialized
   Switched to clocksource arm_global_timer
   NET: Registered protocol family 2
   TCP established hash table entries: 8192 (order: 3, 32768 bytes)
   TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
   TCP: Hash tables configured (established 8192 bind 8192)
   TCP: reno registered
   UDP hash table entries: 512 (order: 2, 16384 bytes)
   UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
   NET: Registered protocol family 1
   bounce pool size: 64 pages
   msgmni has been set to 1475
   Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
   io scheduler noop registered
   io scheduler deadline registered (default)
   Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
   10124000.serial: ttyS0 at MMIO 0x10124000 (irq = 66, base_baud = 1500000) is a 16550A
   dw-apb-uart 10126000.serial: Couldn't set LCR to 0
   dw-apb-uart 10126000.serial: Couldn't set LCR to 0
   10126000.serial: ttyS1 at MMIO 0x10126000 (irq = 67, base_baud = 1500000) is a 16550A
   20064000.serial: ttyS2 at MMIO 0x20064000 (irq = 68, base_baud = 1500000) is a 16550A
   console [ttyS2] enabled
   console [ttyS2] enabled
   bootconsole [earlycon0] disabled
   bootconsole [earlycon0] disabled
   dw-apb-uart 20068000.serial: Couldn't set LCR to 0
   dw-apb-uart 20068000.serial: Couldn't set LCR to 0
   20068000.serial: ttyS3 at MMIO 0x20068000 (irq = 69, base_baud = 1500000) is a 16550A
   brd: module loaded
   mousedev: PS/2 mouse device common for all mice
   Synopsys Designware Multimedia Card Interface Driver
   TCP: cubic registered
   NET: Registered protocol family 17
   input: gpio-keys.1 as /devices/soc.0/gpio-keys.1/input/input0
   Freeing unused kernel memory: 2008K (c032d000 - c0523000)
   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        [deferwq]
      39 0        [kworker/1:1]
      40 0        [kworker/2:1]
      57 0        /bin/sh
      58 0        [kworker/3:1]
      59 0        {busybox} ps
   / # help
   Built-in commands:
   ------------------
   	. : [ [[ alias bg break cd chdir command continue echo eval exec
   	exit export false fg getopts hash help jobs kill let local printf
   	pwd read readonly return set shift source test times trap true
   	type ulimit umask unalias unset wait [ [[ adjtimex ar arp arping
   	ash awk basename blockdev brctl bunzip2 bzcat bzip2 cal cat chgrp
   	chmod chown chroot chvt clear cmp cp cpio crond crontab cttyhack
   	cut date dc dd deallocvt depmod df diff dirname dmesg dnsdomainname
   	dos2unix dpkg dpkg-deb du dumpkmap dumpleases echo ed egrep env
   	expand expr false fdisk fgrep find fold free freeramdisk ftpget
   	ftpput getopt getty grep groups gunzip gzip halt head hexdump
   	hostid hostname httpd hwclock id ifconfig ifdown ifup init insmod
   	ionice ip ipcalc kill killall klogd last less ln loadfont loadkmap
   	logger login logname logread losetup ls lsmod lzcat lzma md5sum
   	mdev microcom mkdir mkfifo mknod mkswap mktemp modinfo modprobe
   	more mount mt mv nameif nc netstat nslookup od openvt passwd
   	patch pidof ping ping6 pivot_root poweroff printf ps pwd rdate
   	readlink realpath reboot renice reset rev rm rmdir rmmod route
   	rpm rpm2cpio run-parts sed seq setkeycodes setsid sh sha1sum
   	sha256sum sha512sum sleep sort start-stop-daemon stat strings
   	stty su sulogin swapoff swapon switch_root sync sysctl syslogd
   	tac tail tar taskset tee telnet telnetd test tftp time timeout
   	top touch tr traceroute traceroute6 true tty tunctl udhcpc udhcpd
   	umount uname uncompress unexpand uniq unix2dos unlzma unxz unzip
   	uptime usleep uudecode uuencode vconfig vi watch watchdog wc
   	wget which who whoami xargs xz xzcat yes zcat
   
   / # mkdir /usr/bin /usr/sbin
   / # /bin/busybox --install
   / # ifconfig -a
   lo        Link encap:Local Loopback  
             LOOPBACK  MTU:65536  Metric:1
             RX packets:0 errors:0 dropped:0 overruns:0 frame:0
             TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
             collisions:0 txqueuelen:0 
             RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
   
   / # mount
   rootfs on / type rootfs (rw,size=1037080k,nr_inodes=188813)
   proc on /proc type proc (rw,relatime)
   sysfs on /sys type sysfs (rw,relatime)
   none on /debug type debugfs (rw,relatime)
   / # mount -t devtmpfs none /dev
   / # ls /dev
   console             tty17               tty37               tty57
   cpu_dma_latency     tty18               tty38               tty58
   full                tty19               tty39               tty59
   input               tty2                tty4                tty6
   kmsg                tty20               tty40               tty60
   mem                 tty21               tty41               tty61
   network_latency     tty22               tty42               tty62
   network_throughput  tty23               tty43               tty63
   null                tty24               tty44               tty7
   ptmx                tty25               tty45               tty8
   ram0                tty26               tty46               tty9
   random              tty27               tty47               ttyS0
   tty                 tty28               tty48               ttyS1
   tty0                tty29               tty49               ttyS2
   tty1                tty3                tty5                ttyS3
   tty10               tty30               tty50               urandom
   tty11               tty31               tty51               vcs
   tty12               tty32               tty52               vcs1
   tty13               tty33               tty53               vcsa
   tty14               tty34               tty54               vcsa1
   tty15               tty35               tty55               zero
   tty16               tty36               tty56
   / #