Archive

Posts Tagged ‘kernel’

Mediatek Releases Linux Source Code for Android One Smartphones

September 18th, 2014 6 comments

Android One is a program by Google aiming at bringing low cost smartphones to the emerging markets with firmware updates to the latest Android version guaranteed for two years. Three phones part of Android One program have recently been announced for the Indian market: Micromax Canvas A1, Karbonn Sparkle V, and Spice Dream Uno, and Android One phones will be available in Indonesia, the Philippines and South Asia (Bangladesh, Nepal, Pakistan, and Sri Lanka) by the year of the year. The three phones currently available sell for $100, which based on the specs (quad core processor, 1GB RAM, 4GB flash, 4.5″ display) is not exactly an aggressive pricing compared to what is already available from Aliexpress, but the main advantage here is clearly Google support with promised firmware updates, and currently Android 4.4.4. All these phones appear to be powered by Mediatek MT6582, and company decided to release the Linux 3.4.67 source code on Google servers. Please note it’s not the first time Mediatek Linux source code has been released, but at the time, the code was pretty messy, and not standard, so hopefully working with Google may have improved things.

Mediatek_Linux_Kernel_Android_One

Here’s how you can get it:

git clone https://android.googlesource.com/kernel/mediatek/ -b android-mediatek-sprout-3.4-kitkat-mr2

Before building the kernel, you may want to install Android gcc toolchain (in Ubuntu 14.04):

sudo apt-get install gcc-arm-linux-androideabi

Then the build should start with a script::

./build.sh

But it fails looking for an existing external script… Oh well. So I located a config file for MT6582, and completed the build the usual way:

make ARCH=arm sprout_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-androideabi- -j8

and it could generate zImage successfully.

I’ve also checked the Kernel Configuration, and it seems the “Mediatek Properitary Configuration” (sic) section found in the older 3.4.5 source code has now disappeared, and the company is using a standard method to define the kernel configuration (see screenshot above).

Via XDA Developers Blog

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Linux (Enlightenment and Lubuntu) in WeTek Play Amlogic TV Box

August 24th, 2014 21 comments

Last week I reviewed WeTek Play, a TV box with two DVB-S2 tuners, powered by Amlogic AML8726-MX dual core ARM Cortex A9 processor, and running Android 4.2, but the company also released several Linux based images including one with Enlightenment window manager, and another, temporary one, with Ubuntu core which allows you to install Lubuntu or Xubuntu with apt-get. There are also working on OpenELEC, but have not released the binary yet. Today, I’ll try the Enlightenment image because it also supports hardware video decoding via Gplay (gstreamer), and show how to install Lubuntu.

The instructions below have been done in a computer running Ubuntu 14.04, but a Windows computer can also be used.

  1. Download Wetek-Linux.img.bz2
  2. Connect a micro SD card to your computer, extract and flash Wetek-Linux.img:
    • In Linux using a terminal window:
      bzip2 -d Wetek-LInux.img.bz2
      sudo dd if=Wetek-Linux.img of=/dev/sdd bs=1M
      sync
    • In Windows, extract the image, and use Win32DiskImager to copy the image to your micro SD card
  3. Now insert the micro SD card into Wetek Play, and start the device.
  4. Linux should boot and run Enlightenment
Enlightenment in Wetek Play (Click for Original Size)

Enlightenment in Wetek Play (Click for Original Size)

For some reasons, the USB mouse and keyboard I connected where powered on, but no recognized / usable by the system, so instead I used the air mouse provided with the box. This is a minimal image with a rootfs built with buildroot, using busybox, and Enlightenment window manager. There are just three main applications in the menu: Mplayer, Enlightenment File Manager and Xterm. You also have more settings options.

Since I had no keyboard input, I connected the provided serial cable to the RS-232 port (barrel) on Wetek Play to my PC via an RS-232 to USB adapter, setup minicom to connect to /dev/ttyUSB0 with 115800 8N1 parameter, and I could access the serial console. For some reason all keyboard keys are repeated, so “ls -l” actually looks like “llss –ll”, but it works anyway. Pressing the Tab key may get rid off the duplicate characters.

I’ve run some commands to check the available storage space and memory.

# df  -h
Filesystem                Size      Used Available Use% Mounted on
/dev/mmcblk0p2            1.8G    334.4M      1.4G  19% /
devtmpfs                431.7M         0    431.7M   0% /dev
tmpfs                   433.1M         0    433.1M   0% /dev/shm
tmpfs                   433.1M    400.0K    432.7M   0% /tmp

# free  -m
total         used         free       shared      buffers
Mem:           866           88          777            0            2
-/+ buffers:                 85          780
Swap:            0            0            0

I’ve used a 16GB SD card, so I should probably have resized the partition with parted and resize2fs to make full use of the card capacity. But for quick testing, I skipped that part.  There’s plenty of free memory, becasue Enlightenment is an ultra lightweight desktop environment.

WeTek used the latest kernel 3.10.33 source from Amlogic with device tree support.

# uname  -a
Linux buildroot 3.10.33 #1 SMP PREEMPT Sun Aug 3 01:32:38 CEST 2014 armv7l GNU/x

Finally, I mounted a USB hard drive (ext-4), and successfully play a 1080p video with gplay:

mkdir -p /media/usb
mount -t ext4 /dev/sda2 /media/usb
gplay /media/usb/Video_Samples/High_Bitrate/big_buck_bunny_1080p_surround.avi

You can checkout the video below where I show the desktop environment, the serial connection, and play the 1080p video above.

This image us better suited as a start point to build your own application, still has some bugs, and not something you would use as a desktop computer. But at least, it’s one of the few ARM platform with proper hardware video decoding in Linux. Others would be the Freesale i.MX6 boards (Wandboard, TBS Matrix, etc…), Hardkernel ODROID boards, and Nvidia Tegra TK1 development board.

I’ve also included the full boot log below for reference:

HHH
BootFrom SPI
0x12345678
Boot from int dev 1stSPITE : 346507System StartedU-boot(m6_mbx@79a31247) (Aug 08 2014 – 13:50:34)aml_rtc_init
aml rtc init first time!
clr h-ram
DRAM:  1 GiB
relocation Offset is: 105e4000
MMC:   [mmc_register] add mmc dev_num=0, port=1, if_type=6
[mmc_register] add mmc dev_num=1, port=2, if_type=6
SDIO Port B: 0, SDIO Port C: 1
NAND:  Amlogic nand flash uboot driver, Version U1.06.020 (c) 2010 Amlogic Inc.
SPI BOOT : continue i 0
No NAND device found!!!
NAND device id: 2c 44 44 4b a9 0
NAND device: Manufacturer ID: 0x2c, Chip ID: 0x2c (Micron D revision NAND 4GiB )
1 NAND chips detected
#####aml_nand_init, with RB pins and chip->chip_delay:20
bus_cycle=5, bus_timing=6, start_cycle=6, end_cycle=7,system=5.0ns
oob size is not enough for selected bch mode: NAND_BCH60_1K_MODE force bch to mE
aml_chip->oob_fill_cnt =168,aml_chip->oob_size =744,bch_bytes =70
multi plane error for selected plane mode: NAND_TWO_PLANE_MODE force plane to :E
aml_nand_init:oobmul =1,chip->ecc.layout->oobfree[0].length=16,aml_chip->oob_si4
aml nand env valid addr: 8000 ,status =0
key start_blk=2040,end_blk=2047,aml_nand_key_init:684
aml nand key valid addr: ff010000
aml nand key valid addr: ff210000
aml nand key valid addr: ff410000
aml nand key valid addr: ff610000
CONFIG_KEYSIZE=0x10000; KEYSIZE=0xfffc; bbt=0x1330; default_keyironment_size=0xc
i=0,register — nand_key
NAND bbt detect Bad block at 0
Creating 8 MTD partitions on “nandnormal”:
0x000000800000-0x000001000000 : “logo”
0x000001000000-0x000001800000 : “aml_logo”
0x000001800000-0x000002000000 : “recovery”
0x000002000000-0x000002800000 : “boot”
0x000002800000-0x000042800000 : “system”
0x000042800000-0x000062800000 : “cache”
0x000062800000-0x000072800000 : “backup”
0x000072800000-0x0000ff000000 : “data”
nandnormal initialized ok
detect mx chiprevD :1 and nand_type: 40
nand_curr_device =1
SPI BOOT,spi_env_relocate_spec : env_relocate_spec 53
SF: Detected MX25L3205D with page size 256, total 4 MiBSPI NOR Flash have write protect!!!
In:    serial
Out:   serial
Err:   serial
register usb cfg[0] = 9fe85564
Net:   Meson_Ethernet
init suspend firmware done. (ret:0)
detect_storage
nand exist return 0
setenv storage nand
reboot_mode=normal
ir init
efuse version is not selected.
Hit Enter key to stop autoboot — :  0
exit abortboot: 0
Checking for OpenElectv …
sdio_detect return 1
[mmc_init] SDIO Port B:0, if_type=7, initialized OK!
Device: SDIO Port B
Manufacturer ID: 0
OEM: 0
Name: Tran Speed: 40000000
Rd Block Len: 512
SD version 2.0
High Capacity: Yes
Capacity: 15798894592
Boot Part Size: 0
Bus Width: 4-bit
reading kernel.img

** Unable to read “kernel.img” from mmc 0:1 **
Checking for Linux …
Device: SDIO Port B
Manufacturer ID: 0
OEM: 0
Name: Tran Speed: 40000000
Rd Block Len: 512
SD version 2.0
High Capacity: Yes
Capacity: 15798894592
Boot Part Size: 0
Bus Width: 4-bit
reading boot.img

6449001 bytes read

NAND read: logo whole chip
8388608 bytes read: OK
unpackimg:Magic error, use old format

NAND read: logo whole chip
8388608 bytes read: OK
unpackimg:Magic error, use old format
## ANDROID Format IMAGE
## Booting kernel from Legacy Image at 82000000 …
Image Name:   Linux-3.10.33
Image Type:   ARM Linux Kernel Image (lzma compressed)
Data Size:    3655540 Bytes = 3.5 MiB
Load Address: 80008000
Entry Point:  80008000
Verifying Checksum … OK
Ramdisk start addr = 0x8237d000, len = 0x2a495d
Process device tree. dt magic: edfe0dd0
One dtb detected
Flat device tree start addr = 0x82622000, len = 0x40c6 magic=0xedfe0dd0
Uncompressing Kernel Image … OK
uboot time: 5142982 us.
machid from environment: 0x4e27
EFUSE machid is not set.
Using machid 0x4e27 from environment
From device tree /memory/ node aml_reserved_end property, for relocate ramdisk 1
Loading Ramdisk to 84008000, end 842ac95d … OK
Loading Device Tree to 84000000, end 840070c5 … OK

Starting kernel …

[    0.000000@0] Booting Linux on physical CPU 0x200
[    0.000000@0] Linux version 3.10.33 (sasa@AMLogic-ProXBMC) (gcc version 4.7.4
[    0.000000@0] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c5387d
[    0.000000@0] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruce
[    0.000000@0] Machine: Amlogic Meson6 platform, model: AMLOGIC
[    0.000000@0] physical memory start address is 0x80000000
[    0.000000@0] reserved_end is 8dafffff
[    0.000000@0]  reserved 511M-512M 1M memory for firmware
[    0.000000@0] Total memory is 1024 MiB
[    0.000000@0] Reserved low memory from 0x85000000 to 0x8dafffff, size: 139 M
[    0.000000@0]        ion_dev0(low)           : 0x85100000 – 0x87100000 ( 32 )
[    0.000000@0]        mesonfb0(low)           : 0x87100000 – 0x88100000 ( 16 )
[    0.000000@0]        mesonfb1(low)           : 0x88100000 – 0x88200000 (  1 )
[    0.000000@0]        deinterlace0(low)       : 0x88200000 – 0x89e00000 ( 28 )
[    0.000000@0]        mesonstream0(low)       : 0x89e00000 – 0x8a800000 ( 10 )
[    0.000000@0]        vdec0(low)      : 0x8a800000 – 0x8c800000 ( 32 MiB)
[    0.000000@0]        ppmgr0(low)     : 0x8c800000 – 0x8db00000 ( 19 MiB)
[    0.000000@0] Ignore bootargs ‘mem’ param.
[    0.000000@0] Memory policy: ECC disabled, Data cache writealloc
[    0.000000@0] PERCPU: Embedded 8 pages/cpu @c1231000 s8704 r8192 d15872 u3278
[    0.000000@0] Built 1 zonelists in Zone order, mobility grouping on.  Total 0
[    0.000000@0] Kernel command line: root=/dev/mmcblk0p2 rw rootfstype=ext3 ro1
[    0.000000@0] osd0:0
[    0.000000@0] 1080i:7
[    0.000000@0] full:2
[    0.000000@0] kernel get hdmimode form uboot is 1080i
[    0.000000@0] kernel get cvbsmode form uboot is 576cvbs
[    0.000000@0] ******** uboot setup mac-addr: 0:15:18:1:81:31
[    0.000000@0] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000@0] Dentry cache hash table entries: 131072 (order: 7, 524288 byte)
[    0.000000@0] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000@0] Memory: 80MB 292MB 512MB = 884MB total
[    0.000000@0] Memory: 884060k/884060k available, 21156k reserved, 278528K him
[    0.000000@0] Virtual kernel memory layout:
[    0.000000@0]     vector  : 0xffff0000 – 0xffff1000   (   4 kB)
[    0.000000@0]     fixmap  : 0xfff00000 – 0xfffe0000   ( 896 kB)
[    0.000000@0]     vmalloc : 0xef800000 – 0xff000000   ( 248 MB)
[    0.000000@0]     lowmem  : 0xc0000000 – 0xef000000   ( 752 MB)
[    0.000000@0]     pkmap   : 0xbfe00000 – 0xc0000000   (   2 MB)
[    0.000000@0]     modules : 0xbf000000 – 0xbfe00000   (  14 MB)
[    0.000000@0]       .text : 0xc0008000 – 0xc08ef880   (9119 kB)
[    0.000000@0]       .init : 0xc08f0000 – 0xc0923200   ( 205 kB)
[    0.000000@0]       .data : 0xc0924000 – 0xc098a100   ( 409 kB)
[    0.000000@0]        .bss : 0xc098a100 – 0xc0a23d8c   ( 616 kB)
[    0.000000@0] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000@0] Preemptible hierarchical RCU implementation.
[    0.000000@0] NR_IRQS:256
[    0.000000@0] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps evers
[    0.000000@0] Global timer: MESON TIMER-A (c0941d00) initialized
[    0.000000@0] Disable timerA
[    0.000000@0] Console: colour dummy device 80×30
[    0.000000@0] console [ttyS0] enabled
[    0.315911@0] Calibrating delay loop… 2387.14 BogoMIPS (lpj=11935744)
[    0.370051@0] pid_max: default: 32768 minimum: 301
[    0.372187@0] Security Framework initialized
[    0.376309@0] SELinux:  Initializing.
[    0.380128@0] Mount-cache hash table entries: 512
[    0.388105@0] CPU: Testing write buffer coherency: ok
[    0.390229@0] CPU0: thread -1, cpu 0, socket 2, mpidr 80000200
[    0.395489@0] Local timer: MESON TIMER-B (c0941e00) for CPU0 initialized
[    0.402216@0] Disable timerA
[    0.405028@0] Disable timerB
[    0.407897@0] Disable timerA
[    0.410899@0] Setting up static identity map for 0xc065ff20 – 0xc065ff78
[    0.417615@0] L310 cache controller enabled
[    0.421605@0] l2x0: 8 ways, 2048 sets, CACHE_ID 0x4100a0c8,  Cache size: 524B
[    0.429138@0]       AUX_CTRL 0x3e460000, PERFETCH_CTRL 0x30000006, POWER_CTR0
[    0.437233@0]       TAG_LATENCY 0x00000222, DATA_LATENCY 0x00000222
[    0.495893@1] CPU1: Booted secondary processor
[    0.555520@1] CPU1: thread -1, cpu 1, socket 2, mpidr 80000201
[    0.555534@1] Local timer: MESON TIMER-D (c0942000) for CPU1 initialized
[    0.555590@0] Brought up 2 CPUs
[    0.555596@0] SMP: Total of 2 processors activated (4780.85 BogoMIPS).
[    0.555599@0] CPU: All CPU(s) started in SVC mode.
[    0.556181@0] devtmpfs: initialized
[    0.561064@0] clkrate [ xtal         ] : 24000000
[    0.561071@0] clkrate [ pll_sys      ] : 1200000000
[    0.561076@0] clkrate [ pll_fixed    ] : 2000000000
[    0.561080@0] clkrate [ pll_vid2     ] : 378000000
[    0.561084@0] clkrate [ pll_hpll     ] : 378000000
[    0.561152@0] clkrate [ pll_ddr      ] : 516000000
[    0.561155@0] clkrate [ a9_clk       ] : 1200000000
[    0.561223@0] clkrate [ clk81        ] : 200000000
[    0.562413@0] pinctrl core: initialized pinctrl subsystem
[    0.562957@0] regulator-dummy: no parameters
[    0.563300@0] NET: Registered protocol family 16
[    0.580970@0] DMA: preallocated 4096 KiB pool for atomic coherent allocations
[    0.588066@0] amlogic_gpio gpio: Probed amlogic GPIO driver
[    0.588504@0] register lm device lm-root
[    0.588643@0] register lm device lm1
[    0.588766@0] register lm device lm0
[    0.589122@0] Init pinux probe!
[    0.589903@0] pinmux-m6 pinmux: Probed amlogic pinctrl driver
[    0.590100@0] ——-early_init_dt_probe:38———-
[    0.590295@0] ——-early_init_dt_init:115———-
[    0.590299@0] tv_init_module
[    0.590310@0] major number 254 for disp
[    0.590312@0] vout_register_server
[    0.590315@0] register tv module server ok
[    0.590438@0] major number 0 for disp
[    0.590441@0] register tv module server ok
[    0.590622@0] drivers/amlogic/i2c/aml_i2c.c : aml_i2c_init
[    0.590668@0] drivers/amlogic/i2c/aml_i2c.c : aml_i2c_probe
[    0.590678@0] plat->state_name:default
[    0.590693@0] master_no = 0, maseter_regs=f3100500
[    0.590943@0] aml-i2c i2c-AO: add adapter aml_i2c_adap0(ee97b4a8)
[    0.590948@0] aml-i2c i2c-AO: aml i2c bus driver.
[    0.591102@0] drivers/amlogic/i2c/aml_i2c.c : aml_i2c_probe
[    0.591109@0] plat->state_name:default
[    0.591121@0] master_no = 1, maseter_regs=f1108500
[    0.591305@0] aml-i2c i2c-A: add adapter aml_i2c_adap1(ee9bc0a8)
[    0.591310@0] aml-i2c i2c-A: aml i2c bus driver.
[    0.591431@0] drivers/amlogic/i2c/aml_i2c.c : aml_i2c_probe
[    0.591437@0] plat->state_name:default
[    0.591446@0] master_no = 2, maseter_regs=f11087c0
[    0.591630@0] aml-i2c i2c-B: add adapter aml_i2c_adap2(ee9bcca8)
[    0.591634@0] aml-i2c i2c-B: aml i2c bus driver.
[    0.592137@0] aml_pmu_init, 454
[    0.592250@0] call aml_dvfs_init in
[    0.592295@0] [DVFS]aml_dvfs_probe, child name:vcck_dvfs
[    0.592303@0] [DVFS]dvfs table of vcck_dvfs is:
[    0.592306@0] [DVFS]     freq,    min_uV,    max_uV
[    0.592310@0] [DVFS]   200000,   1010000,   1010000
[    0.592312@0] [DVFS]   600000,   1010000,   1010000
[    0.592314@0] [DVFS]   792000,   1010000,   1010000
[    0.592316@0] [DVFS]   816000,   1110000,   1110000
[    0.592319@0] [DVFS]   840000,   1110000,   1110000
[    0.592321@0] [DVFS]   984000,   1110000,   1110000
[    0.592323@0] [DVFS]  1000000,   1110000,   1110000
[    0.592325@0] [DVFS]  1080000,   1220000,   1220000
[    0.592327@0] [DVFS]  1200000,   1240000,   1240000
[    0.592330@0] [DVFS]  1320000,   1320000,   1320000
[    0.592332@0] [DVFS]  1500000,   1320000,   1320000
[    0.592553@0] hdmitx: system: amhdmitx_init
[    0.592556@0] hdmitx: system: Ver: 2014May6
[    0.592609@0] hdmitx: system: amhdmitx_probe
[    0.593035@0] amhdmitx is using the pin GPIOD_5
[    0.593455@0] hdmitx: system: hw init
[    0.593465@0] HDMI: get brd phy data
[    0.593466@0] hdmi phy setting
[    0.593515@0] HDMI: get brd phy data
[    0.593516@0] hdmi phy setting
[    0.594057@0] hdmitx: system: reset intr mask
[    0.605605@0] hdmitx: system: irq 1
[    0.658244@0] bio: create slab <bio-0> at 0
[    0.659407@0] SCSI subsystem initialized
[    0.660009@0] usbcore: registered new interface driver usbfs
[    0.660136@0] usbcore: registered new interface driver hub
[    0.660323@0] usbcore: registered new device driver usb
[    0.660648@0] Linux video capture interface: v2.00
[    0.661374@0] LCD driver init
[    0.661679@0] TV mode 1080i selected.
[    0.661683@0] [0x1b7e] = 0xff
[    0.661685@0] [0x105f] = 0x0
[    0.661687@0] [0x109d] = 0x814d3928
[    0.661689@0] [0x109e] = 0x6b425012
[    0.661691@0] [0x109f] = 0x110
[    0.661692@0] [0x109c] = 0x1043e
[    0.661694@0] [0x1066] = 0x10843
[    0.661696@0] [0x1059] = 0x100
[    0.661698@0] [0x105f] = 0x80000
[    0.661700@0] [0x105f] = 0x88001
[    0.661701@0] [0x105f] = 0x80003
[    0.661703@0] [0x104a] = 0x101
[    0.661705@0] [0x1bb8] = 0x52
[    0.661707@0] [0x1b62] = 0x2029
[    0.661708@0] [0x1b97] = 0x112f
[    0.661710@0] [0x1bae] = 0x464
[    0.661712@0] [0x1b98] = 0x58
[    0.661713@0] [0x1b99] = 0x108
[    0.661715@0] [0x1b9a] = 0x58
[    0.661717@0] [0x1ba4] = 0x204
[    0.661718@0] [0x1ba3] = 0x1103
[    0.661720@0] [0x1ba7] = 0x108
[    0.661722@0] [0x1ba8] = 0xb0
[    0.661724@0] [0x1b9f] = 0x8f0
[    0.661726@0] [0x1ba0] = 0x9a0
[    0.661727@0] [0x1b9b] = 0x1b8
[    0.661729@0] [0x1b9c] = 0x898
[    0.661730@0] [0x1b9d] = 0x0
[    0.661732@0] [0x1b9e] = 0x4
[    0.661733@0] [0x1ba1] = 0x0
[    0.661735@0] [0x1ba2] = 0x4
[    0.661737@0] [0x1ba6] = 0x14
[    0.661738@0] [0x1baf] = 0x22f
[    0.661740@0] [0x1ba9] = 0x58
[    0.661742@0] [0x1baa] = 0x58
[    0.661743@0] [0x1bab] = 0x0
[    0.661745@0] [0x1bac] = 0x5
[    0.661746@0] [0x1b94] = 0x204
[    0.661748@0] [0x1b95] = 0x1103
[    0.661749@0] [0x1b68] = 0x100
[    0.661751@0] [0x1bba] = 0x11
[    0.661753@0] [0x1b8d] = 0x5ffc
[    0.661754@0] [0x1b8e] = 0x19
[    0.661756@0] [0x1b81] = 0x207
[    0.661757@0] [0x1b60] = 0x0
[    0.661759@0] [0x1b6e] = 0x200
[    0.661761@0] [0x1b58] = 0x0
[    0.661762@0] [0x1bfc] = 0x1000
[    0.661764@0] [0x1b7e] = 0x0
[    0.661766@0] [0x1c0d] = 0x3102
[    0.661767@0] [0x1c0e] = 0x54
[    0.661768@0] [0x1b78] = 0x1
[    0.661770@0] [0x1b79] = 0x1
[    0.661771@0] [0x1b7a] = 0x1
[    0.661773@0] [0x1b7b] = 0x1
[    0.661774@0] [0x1b7c] = 0x1
[    0.661775@0] [0x1b7d] = 0x1
[    0.661777@0] [0x1b57] = 0x0
[    0.661778@0] [0x1b80] = 0x1
[    0.661781@0] tvoutc_setmode[397]
[    0.661783@0] mode is: 7
[    0.661786@0] config HPLL
[    0.661788@0] config HPLL done
[    0.718486@0] call aml_pmu_probe_init in
[    0.718781@0] get property:                  use_pwm, value:0x00000001, dec:1
[    0.718789@0] get property:              table_count, value:0x00000010, dec:6
[    0.718796@0] meson_cs_dvfs_probe, table count:16, use_pwm:1, pwm controller2
[    0.718799@0]  0, 00130009, 1010000
[    0.718801@0]  1, 0012000a, 1050000
[    0.718803@0]  2, 0011000b, 1070000
[    0.718806@0]  3, 0010000c, 1090000
[    0.718808@0]  4, 000f000d, 1110000
[    0.718810@0]  5, 000e000e, 1130000
[    0.718812@0]  6, 000d000f, 1150000
[    0.718814@0]  7, 000c0010, 1170000
[    0.718815@0]  8, 000b0011, 1190000
[    0.718817@0]  9, 000a0012, 1210000
[    0.718820@0] 10, 00090013, 1220000
[    0.718822@0] 11, 00080014, 1240000
[    0.718824@0] 12, 00070015, 1270000
[    0.718826@0] 13, 00060016, 1280000
[    0.718828@0] 14, 00050017, 1300000
[    0.718830@0] 15, 00040018, 1320000
[    0.718905@0] get pin for pwm——–
[    0.718913@0] [DVFS]aml_dvfs_register_driver, driver meson-cs-dvfs regist su1
[    0.719363@0] Advanced Linux Sound Architecture Driver Initialized.
[    0.720196@0] Bluetooth: Core ver 2.16
[    0.720359@0] NET: Registered protocol family 31
[    0.720363@0] Bluetooth: HCI device and connection manager initialized
[    0.720375@0] Bluetooth: HCI socket layer initialized
[    0.720381@0] Bluetooth: L2CAP socket layer initialized
[    0.720404@0] Bluetooth: SCO socket layer initialized
[    0.720958@0] cfg80211: Calling CRDA to update world regulatory domain
[    0.722251@0] Switching to clocksource Timer-E
[    1.262534@1] Disable timerD
[    1.265870@0] hdmitx: edid: edid ready
[    1.278832@1] NET: Registered protocol family 2
[    1.279416@1] TCP established hash table entries: 8192 (order: 4, 65536 byte)
[    1.285007@1] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    1.291653@1] TCP: Hash tables configured (established 8192 bind 8192)
[    1.298197@1] TCP: reno registered
[    1.301433@1] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    1.307606@1] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    1.314264@1] NET: Registered protocol family 1
[    1.319339@1] Unpacking initramfs…
[    1.465689@1] Freeing initrd memory: 2704K (c4008000 – c42ac000)
[    1.467796@1] audit: initializing netlink socket (disabled)
[    1.471657@1] type=2000 audit(1.410:1): initialized
[    1.477043@1] bounce pool size: 64 pages
[    1.485847@0] hdmitx: edid: edid ready
[    1.485885@0] hdmitx: edid: 202 errors between two reading
[    1.487333@1] VFS: Disk quotas dquot_6.5.2
[    1.487611@1] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    1.490489@1] fuse init (API version 7.22)
[    1.491362@1] msgmni has been set to 1187
[    1.493102@1] Block layer SCSI generic (bsg) driver version 0.4 loaded (majo)
[    1.493108@1] io scheduler noop registered
[    1.493112@1] io scheduler deadline registered
[    1.493337@1] io scheduler cfq registered (default)
[    1.529436@0] hdmitx: edid: check sum valid
[    1.533556@0] hdmitx: edid: check sum valid
[    1.537725@0] hdmitx: edid: blk0 raw data
[    1.541663@0] 00ffffffffffff0034a996a20101010100170103808048780adaffa3584aa29
[    1.548865@0] 17494b21080031404540614081800101010101010101023a80d072382d4010c
[    1.556069@0] 4580ba882100001e023a801871382d40582c4500ba882100001e000000fc000
[    1.563273@0] 616e61736f6e69632d54560a000000fd00173d0f440f000a20202020202001b
[    1.570480@0]
[    1.572130@0] hdmitx: edid: blk1 raw data
[    1.576217@0] 020322f24d9f9014052021221304120316072309070168030c002000b8260f2
[    1.583325@0] 004b011d80d0721c1620102c2580ba882100009e011d8018711c1620582c250
[    1.590529@0] ba8821[    1.592472@1] [drm] Initialized drm 1.1.0 20060810
[    1.596971@1] loop: module loaded
[    1.598228@1] tun: Universal TUN/TAP device driver, 1.6
[    1.598231@1] tun: (C) 1999-2004 Max Krasnyansky <[email protected]>
[    1.598522@1] PPP generic driver version 2.4.2
[    1.598871@1] PPP BSD Compression module registered
[    1.598874@1] PPP Deflate Compression module registered
[    1.598893@1] PPP MPPE Compression module registered
[    1.598899@1] NET: Registered protocol family 24
[    1.599088@1] usbcore: registered new interface driver asix
[    1.599288@1] usbcore: registered new interface driver ax88179_178a
[    1.599415@1] usbcore: registered new interface driver cdc_ether
[    1.599544@1] usbcore: registered new interface driver net1080
[    1.599669@1] usbcore: registered new interface driver cdc_subset
[    1.599804@1] usbcore: registered new interface driver zaurus
[    1.599968@1] usbcore: registered new interface driver cdc_ncm
[    1.600646@1] usbcore: registered new interface driver cdc_acm
[    1.600649@1] cdc_acm: USB Abstract Control Model driver for USB modems and s
[    1.600792@1] usbcore: registered new interface driver usb-storage
[    1.601098@1] usbcore: registered new interface driver usbserial
[    1.601230@1] usbcore: registered new interface driver option
[    1.601366@1] usbserial: USB Serial support registered for GSM modem (1-port)
[    1.601882@1] mousedev: PS/2 mouse device common for all mice
[    1.602527@1] i2c /dev entries driver
[    1.603440@1] usbcore: registered new interface driver uvcvideo
[    1.603442@1] USB Video Class driver (1.1.1)
[    1.603450@1] Bluetooth: HCI UART driver ver 2.2
[    1.603455@1] Bluetooth: HCI H4 protocol initialized
[    1.604567@1] usbcore: registered new interface driver usbhid
[    1.604569@1] usbhid: USB HID core driver
[    1.605188@1] zram: Created 1 device(s) …
[    1.605923@1] ashmem: initialized
[    1.606204@1] logger: created 256K log ‘log_main’
[    1.606435@1] logger: created 256K log ‘log_events’
[    1.606650@1] logger: created 256K log ‘log_radio’
[    1.606875@1] logger: created 256K log ‘log_system’
[    1.607199@1] vout_init_module
[    1.607275@1] start init vout module
[    1.607417@1] create  vout attribute ok
[    1.608142@1] ge2d_init
[    1.608152@1] ge2d_dev major:248
[    1.608552@1] ge2d start monitor
[    1.608631@1] osd_init
[    1.608683@1] osd_probe, vinfo:c06a3b78
[    1.608827@1] Frame buffer memory assigned at phy:0x87100000, vir:0xfb000000K
[    1.608830@1] osd_probe, mydef_var:c09613f0, vinfo:c06a3b78
[    1.608833@1] don’t find to display_size_default from mesonfb-dts
[    1.608835@1] init fbdev bpp is :24
[    1.609030@1] ge2d workqueue monitor start
00[    1.835408@1] Frame buffer memory assigned at phy:0x88100000, vir:0xefe000K
[    1.835412@1] osd_probe, mydef_var:c09613f0, vinfo:c06a3b78
[    1.835414@1] —————clear framebuffer1 memory
009e011d00bc52d01e20b8285540ba882100001e662156aa51001e30
[    1.859523@1] 468f3300ba88[    1.861916@1] osd probe ok
[    1.862261@1] osd_ext_init
[    1.862866@1] vout2_init_module enter
[    1.863939@1] amlvideo-000: V4L2 device registered as video10
[    1.864358@1] ionvideo-000: V4L2 device registered as video13
[    1.864362@1] Video Technology Magazine Ion Video Capture Board ver 1.0 succ.
[    1.865126@1] keys===========================================
[    1.865131@1] keys_devno=f400000
[    1.865478@1] securitykey: device aml_keys created
[    1.865574@1] amlkeys=0
[    1.865750@1] platform_driver_register–aml_keys_driver——————–
[    1.866230@1] set uart_ao pinmux use pinctrl subsystem
[    1.866233@1] P_AO_RTI_PIN_MUX_REG:5861
[    1.866257@1] start uart_ao_ttyS0:(irq = 122)
[    1.866259@1] register uart_ao ok
[    1.866611@1] start uart_a_ttyS1:(irq = 58)
[    1.866613@1] register uart_a ok
[    1.866936@1] start uart_d_ttyS4:(irq = 126)
[    1.866939@1] register uart_d ok
[    1.867126@1] dwc_otg: version 3.10a 12-MAY-2014
[    1.867173@1] dwc_otg_driver_probe NOT match
[    1.867212@1] usb1: type: 1, speed: 0, config: 0, dma: 0, id: 1, phy: f110840
2100001e000000000000000000000000000000000000000000ab
[    1.967848@0]
[    1.969560@0] hdmitx: edid: find IEEEOUT
[    1.973444@0] hdmitx: video: get current mode: 1080i
[    1.978432@0] hdmitx: system: already init VIC = 0  Now VIC = 5
[    1.984268@0] set mode VIC 5 (cd0,cs0,pm1,vd0,1)
[    1.988955@0] hdmitx: system: hw reset
[    1.992681@0] HDMI: get brd phy data
[    1.996248@0] hdmi phy setting
[    2.000316@0] hdmitx: audio: SPDIFHDMI: get brd phy data
[    2.004564@0] hdmi phy setting
[    2.007662@0] hdmitx: system: set pll
[    2.011249@0] hdmitx: system: param->VIC:5
[    2.015335@0] mode is: 7
[    2.017857@0] config HPLL
[    2.020449@0] config HPLL done
[    2.044513@0] hdmitx: system: fixed HDMI mode output
[    2.044539@0] Sink is HDMI device
[    2.047149@0] No sink attached
[    2.050205@0] hdmitx: audio: audio channel num is 0
[    2.055030@0] hdmitx: audio: SPDIFhdmitx: audio: current VIC: 5
[    2.060934@0] hdmitx: audio: audio sample rate: 0
[    2.065639@0] hdmitx: audio: reset audio N para
[    2.070139@0] hdmitx: audio: PCM out to HDMI
[    2.083657@0] hdmitx: audio: Time out: AIU_HDMI_CLK_DATA_CTRL
[    2.083753@0] hdmitx: audio: i2s_to_spdif_flag:1
[    2.088459@0] hdmitx: audio: Enable audio spdif to HDMI
[    2.093690@0] hdmitx: cec: CEC not ready
[    2.367839@1] USB (1) use clock source: XTAL input
[    2.568941@1] Core Release: 2.94a
[    2.568973@1] Setting default values for core params
[    2.571574@1] curmode: 0, host_only: 1
[    2.575327@1] ERROR::dwc_otg_set_param_host_perio_tx_fifo_size:5919: 500 inv.
[    2.575327@1]
[    2.588974@1] dwc_otg: probe of lm1 failed with error -22
[    2.594362@1] usb0: type: 0, speed: 0, config: 0, dma: 0, id: 0, phy: f110840
[    2.802982@1] Core Release: 2.94a
[    2.803006@1] Setting default values for core params
[    2.805634@1] curmode: 0, host_only: 0
[    2.809357@1] ERROR::dwc_otg_set_param_host_perio_tx_fifo_size:5919: 500 inv.
[    2.809357@1]
[    2.822995@1] dwc_otg: probe of lm0 failed with error -22
[    2.828635@1] boot_device_flag : 0
[    2.831727@1] ===========================================amlnf_init:632,nandd
[    2.841281@1] Nand PHY driver Version: 1.01.001.0005 (c) 2013 Amlogic Inc.
[    2.848159@1] amlnf_phy_init : amlnf init flag 0
[    2.852858@1] ######STS IRQ mode for nand driver
[    2.857436@1] NAND device id: 2c 44 44 4b a9 0 0 0
[    2.862111@1] detect NAND device: D revision NAND 4GiB MT29F32G08CBADA
[    2.913569@1] onfi timing mode set failed: 0
[    2.913724@1] bus_cycle=5, bus_timing=7,system=0.0ns,flash->T_REA =20,flash-5
[    2.920121@1] detect RB pin here and por_cfg:3dd
[    2.924688@1] detect without RB pin here
[    2.928617@1] force none rb mode for rb irq
[    2.932764@1] boot_device_flag = 0
[    2.952258@1] NAND CKECK  : arg nbbt: arg_valid= 0, valid_blk_addr = 0, vali0
[    2.954965@1] found NO arg : nbbt info
[    2.958726@1] nand scan bbt failed
[    2.962091@1] get device configs failed and ret:fffffff0
[    2.967402@1] nandphy_init failed and ret=0xfffffff0
[    2.972628@1] ethernet_driver probe!
[    2.975929@1] Please config phy  interface.
[    2.980050@1] Please config savepowermode.
[    2.984129@1] Please config reset_pin_enable.
[    2.988495@1] Please config reset_delay.
[    2.992376@1] Please config reset_pin.
[    2.996138@1] ethernetinit(dbg[c0964c80]=1)
[    3.000310@1] ethernet base addr is f3610000
[    3.004528@1] write mac add to:edef6908: 00 15 18 01 81 31 |...1|
[    3.016374@1] libphy: AMLMAC MII Bus: probed
[    3.016410@1] eth0: PHY ID 0007c0f1 at 1 IRQ -1 (0:01) active
[    3.022910@1] Amlogic A/V streaming port init
[    3.027629@1] init vdec memsource -1971322880->-1937768449
[    3.030801@1] [tsync_pcr_init]init success.
[    3.034820@1] amvideocap_init_module
[    3.038727@1] regist mpeg12 codec profile
[    3.042487@1] regist mpeg4 codec profile
[    3.046320@1] amvdec_vc1 module init
[    3.049971@1] regist vc1 codec profile
[    3.053570@1] amvdec_h264 module init
[    3.057417@1] regist h264 codec profile
[    3.061154@1] regist mjpeg codec profile
[    3.064940@1] amvdec_real module init
[    3.068756@1] regist real codec profile
[    3.073874@1] efuse===========================================
[    3.078602@1] efuse: device efuse created
[    3.082354@1] efuse——————————————–
[    3.088164@1] SARADC Driver init.
[    3.091621@1] __saradc_probe__
[    3.235634@1] saradc calibration: ref_val = 515
[    3.235659@1] saradc calibration: ref_nominal = 512
[    3.239382@1] saradc calibration: coef = 4169
[    3.243869@1] Remote Driver
[    3.246610@1] Remote platform_data g_remote_base=f3100480
[    3.252223@1] input: aml_keypad as /devices/platform/meson-remote/input/inpu0
[    3.259618@1] Remote date_valye======0,status == 8915d00
[    3.264407@1] remote config major:241
[    3.268462@1] physical address:0xaea1c000
[    3.272234@1] ADC Keypad Driver init.
[    3.275876@1] ==kp_probe==
[    3.278461@1] chan #4 used for ADC key
[    3.282175@1] menu key(139) registed.
[    3.285861@1] vol- key(114) registed.
[    3.289466@1] vol+ key(115) registed.
[    3.293111@1] back key(158) registed.
[    3.296786@1] home key(102) registed.
[    3.300403@1] ok key(232) registed.
[    3.304071@1] input: adc_keypad as /devices/platform/adc_keypad.3/input/inpu1
[    3.311327@1] adc keypad register input device completed.
[    3.316605@1] adc keypad major:240
[    3.320378@1] Meson KeyInput init
[    3.323422@1] Key 116 registed.
[    3.326680@1] input: key_input as /devices/platform/key_input.4/input/input2
[    3.333679@1] Meson KeyInput register RTC interrupt
[    3.338222@1] Meson KeyInput major=238
[    3.342432@1] ==touch_ts_init==
[    3.345361@1] ==ft5x0x_ts_init==
[    3.348574@1] ==goodix_ts_init==
[    3.351707@1] ==gsl_ts_init==
[    3.354653@1] i2c-core: driver [gslx680] using legacy suspend method
[    3.360940@1] i2c-core: driver [gslx680] using legacy resume method
[    3.367186@1] VTL ct36x TouchScreen driver, <[email protected]>.
[    3.373671@1] i2c-core: driver [ct36x] using legacy suspend method
[    3.379888@1] i2c-core: driver [ct36x] using legacy resume method
[    3.385846@1] VTL ct36x TouchScreen driver End.
[    3.390327@1] ==gsl_ts_init==
[    3.393374@1] ret=0
[    3.395831@1] i2c-core: driver [lis3dh_acc] using legacy suspend method
[    3.401959@1] i2c-core: driver [lis3dh_acc] using legacy resume method
[    3.408702@1] i2c-core: driver [bma222] using legacy suspend method
[    3.414718@1] i2c-core: driver [bma222] using legacy resume method
[    3.421092@1] i2c-core: driver [dmard06] using legacy suspend method
[    3.427384@1] i2c-core: driver [dmard06] using legacy resume method
[    3.433570@1] lsm303d driver: init
[    3.437062@1] i2c-core: driver [dmard10] using legacy suspend method
[    3.443189@1] i2c-core: driver [dmard10] using legacy resume method
[    3.449568@1] stk831x_init
[    3.452227@1] mxc622x accelerometer driver: init
[    3.456853@1] i2c-core: driver [mxc622x] using legacy suspend method
[    3.463066@1] i2c-core: driver [mxc622x] using legacy resume method
[    3.469608@1] cm3217 v.1.0.0.1
[    3.472437@1] i2c-core: driver [elan_epl6814] using legacy suspend method
[    3.479274@1] i2c-core: driver [elan_epl6814] using legacy resume method
[    3.485930@1] i2c-core: driver [LTR501] using legacy suspend method
[    3.492057@1] i2c-core: driver [LTR501] using legacy resume method
[    3.498528@1] spi_nor_init
[    3.501086@1] amlogic_spi_nor_probe:
[    3.504475@1] amlogic_spi->state_name:default
[    3.509063@1] AMLOGIC_SPI_NOR cc000000.spi: master is unqueued, this is deprd
[    3.516546@1] spi_nor_probe
[    3.519141@1] check_storage_device : spi boot_device_flag : 0
[    3.524912@1] spi_nor apollospi:32766: mx25l3205d (4096 Kbytes)
[    3.533601@1] Creating 2 MTD partitions on “apollospi:32766″:
[    3.536586@1] 0x000000000000-0x000000060000 : “bootloader”
[    3.543107@1] 0x000000080000-0x000000088000 : “ubootenv”
[    3.548256@1] amlogic_spi_nor_probe over
[    3.551403@1] mmc driver version: 1.05, 2014-05-14: sdhc regular tuning suppt
[    3.559339@1] host->base f1108c20
[    3.561790@1] pdata->caps 7
[    3.564537@1] pdata->caps2 0
[    3.567460@1] get property:                     port, value:0x00000001
[    3.573911@1] get property:                ocr_avail, value:0x00200000
[    3.580577@1] get property:                    f_min, value:0x000493e0
[    3.586960@1] get property:                    f_max, value:0x02faf080
[    3.593441@1] get property:                  f_max_w, value:0x02faf080
[    3.599977@1] get property:             max_req_size, value:0x00020000
[    3.606490@1] get property:                   irq_in, value:0x00000005
[    3.612971@1] get property:                  irq_out, value:0x00000006
[    3.619507@1] get property:              power_level, value:0x00000000
[    3.626137@1] get property:                  gpio_cd, str:CARD_6
[    3.631982@1] get property:               gpio_power, str:CARD_8
[    3.637998@1] get property:                  pinname, str:sd
[    3.643612@1] get property:                card_type, value:0x00000005
[    3.650162@1] get property:                gpio_dat3, str:CARD_3
[    3.656161@1] normal card in
[    3.695542@1] sd: mmc_rescan_try_freq: trying to init card at 400000 Hz
[    4.224117@0] sd: new high speed SDHC card at address 59b4, clock 50000000, h
[    4.225524@1] [aml_sdio_probe] aml_sdio_probe() success!
[    4.232344@1] [dsp]DSP start addr 0xc5000000
[    4.236471@0] mmcblk0: sd:59b4 SD    14.7 GiB
[    4.236497@1] [dsp]register dsp to char divece(232)
[    4.247178@0]  mmcblk0: p1 p2
[    4.265537@1] aml_rtc_init…
[    4.266541@1] aml_rtc rtc.0: rtc core: registered aml_rtc as rtc0
[    4.270061@1] [AXP]call axp_battery_init, ret = 0
[    4.274506@1] platform reg-20-cs-ldo2: Driver reg-20-cs-ldo2 requests probe l
[    4.281773@1] platform reg-20-cs-ldo3: Driver reg-20-cs-ldo3 requests probe l
[    4.289311@1] platform reg-20-cs-ldo4: Driver reg-20-cs-ldo4 requests probe l
[    4.297169@1] platform reg-20-cs-buck2: Driver reg-20-cs-buck2 requests probl
[    4.304872@1] platform reg-20-cs-buck3: Driver reg-20-cs-buck3 requests probl
[    4.312842@1] platform reg-20-cs-ldoio0: Driver reg-20-cs-ldoio0 requests prl
[    4.320901@1] [AML_PMU]call aml_pmu_battery_init, ret = 0
[    4.326338@1] [RN5T618]call rn5t618_battery_init, ret = 0
[    4.332486@1] wifi_power power_gpio is 24
[    4.335434@1] Error: Didn’t get power valid value — wifi_power_probe 320
[    4.342381@1] wifi_dev_probe : there is no wifi_power_on_pin2 setup in DTS f!
[    4.350145@1] amlogic rfkill init
[    4.354380@1] UMP: UMP device driver  loaded
[    4.358229@1] usbcore: registered new interface driver snd-usb-audio
[    4.365376@1] enter dummy_codec_audio_probe
[    4.368106@1] soc-audio soc-audio: ASoC: machine AML-DUMMY-CODEC should use )
[    4.377233@1] rtd ed875810
[    4.379527@1] cpu_dai eeae7600
[    4.382651@1] codec_dai eeae7500
[    4.386556@1] aml-pcm 0:playback preallocate_dma_buffer: area=efd72000, addr2
[    4.396353@1] iec958 0: preallocate dma buffer start=eff01000, size=80000
[    4.402398@1] aml-pcm 1:capture preallocate_dma_buffer: area=efd94000, addr=6
[    4.410578@1] soc-audio soc-audio:  dummy_codec <-> aml-dai0 mapping ok
[    4.418124@1] =dummy_codec_device_init==,dummy_codec_audio init done
[    4.423613@1] GACT probability NOT on
[    4.427248@1] Mirror/redirect action on
[    4.430827@1] u32 classifier
[    4.433689@1]     Actions configured
[    4.437286@1] Netfilter messages via NETLINK v0.30.
[    4.442169@1] nf_conntrack version 0.5.0 (13855 buckets, 55420 max)
[    4.449041@1] ctnetlink v0.93: registering with nfnetlink.
[    4.453898@1] NF_TPROXY: Transparent proxy support initialized, version 4.1.0
[    4.461070@1] NF_TPROXY: Copyright (c) 2006-2007 BalaBit IT Ltd.
[    4.467559@1] xt_time: kernel timezone is -0000
[    4.471727@1] ip_tables: (C) 2000-2006 Netfilter Core Team
[    4.477218@1] arp_tables: (C) 2002 David S. Miller
[    4.481725@1] TCP: cubic registered
[    4.486013@1] NET: Registered protocol family 10
[    4.490451@1] mip6: Mobile IPv6
[    4.492912@1] ip6_tables: (C) 2000-2006 Netfilter Core Team
[    4.498678@1] sit: IPv6 over IPv4 tunneling driver
[    4.504621@1] NET: Registered protocol family 17
[    4.507958@1] NET: Registered protocol family 15
[    4.512498@1] Bridge firewalling registered
[    4.516848@1] Bluetooth: RFCOMM TTY layer initialized
[    4.521646@1] Bluetooth: RFCOMM socket layer initialized
[    4.527078@1] Bluetooth: RFCOMM ver 1.11
[    4.530822@1] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    4.536318@1] Bluetooth: BNEP filters: protocol multicast
[    4.541678@1] Bluetooth: BNEP socket layer initialized
[    4.546827@1] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[    4.552873@1] Bluetooth: HIDP socket layer initialized
[    4.558037@1] NET: Registered protocol family 35
[    4.563043@1] VFP support v0.3: implementor 41 architecture 3 part 30 varian4
[    4.570420@1] Registering SWP/SWPB emulation handler
[    4.575349@1] enter meson_pm_init
[    4.579010@1] enter meson_pm_probe!
[    4.582121@1] meson_pm_probe done !
[    4.586731@0] platform reg-20-cs-ldo2: Driver reg-20-cs-ldo2 requests probe l
[    4.593381@0] platform reg-20-cs-ldo3: Driver reg-20-cs-ldo3 requests probe l
[    4.601148@0] platform reg-20-cs-ldo4: Driver reg-20-cs-ldo4 requests probe l
[    4.608826@0] platform reg-20-cs-buck2: Driver reg-20-cs-buck2 requests probl
[    4.616741@0] platform reg-20-cs-buck3: Driver reg-20-cs-buck3 requests probl
[    4.624606@0] platform reg-20-cs-ldoio0: Driver reg-20-cs-ldoio0 requests prl
[    4.632999@1] ERROR::usb_gadget_probe_driver:1372: usb_gadget_register_driveV
[    4.632999@1]
[    4.642071@1] init: failed to probe driver -19
[    4.646940@1] aml_rtc rtc.0: setting system clock to 2014-08-24 04:39:59 UTC)
[    4.654634@1] ### dt-test ### No testcase data in device tree; not running ts
[    4.662176@1] meson_cpufreq: no voltage_control prop
[    4.666965@1] voltage_control = 0
[    4.670500@0] platform reg-20-cs-ldo2: Driver reg-20-cs-ldo2 requests probe l
[    4.677986@1] <<-GTP-INFO->> GTP driver installing…
[    4.678058@0] platform reg-20-cs-ldo3: Driver reg-20-cs-ldo3 requests probe l
[    4.678104@0] platform reg-20-cs-ldo4: Driver reg-20-cs-ldo4 requests probe l
[    4.678148@0] platform reg-20-cs-buck2: Driver reg-20-cs-buck2 requests probl
[    4.678188@0] platform reg-20-cs-buck3: Driver reg-20-cs-buck3 requests probl
[    4.678228@0] platform reg-20-cs-ldoio0: Driver reg-20-cs-ldoio0 requests prl
[    4.722627@1] hdmitx: cec: CEC init
[    4.725989@0] hdmitx: cec: CEC task process
[    4.730033@1] input: cec_input as /devices/virtual/input/input3
[    4.736140@1] hdmitx: cec: hdmitx_device->cec_init_ready:0x1
[    4.741355@1] I[    4.765537@0] Changing uart_ao_ttyS0: baud from 0 to 115200
[    4.785661@0] Freeing unused kernel memory: 204K (c08f0000 – c0923000)
[    5.042140@1] aml_nftl_dev: module license ‘Proprietary’ taints kernel.
[    5.043123@1] Disabling lock debugging due to kernel taint
[    5.049584@1] boot_device_flag : 0
[    5.051975@1] register_ntd_blktrans start
[    5.056024@1] init_aml_nftl end
[    5.077954@0] kjournald starting.  Commit interval 5 seconds
[    5.083983@1] EXT3-fs (mmcblk0p2): using internal journal
[    5.084023@1] EXT3-fs (mmcblk0p2): mounted filesystem with ordered data mode
[    5.295586@0] ————[ cut here ]————
[    5.295644@0] WARNING: at kernel/smp.c:382 smp_call_function_many+0x84/0x2c4)
[    5.301950@0] Modules linked in: aml_nftl_dev(P)
[    5.306556@0] CPU: 0 PID: 4 Comm: kworker/0:0 Tainted: P             3.10.331
[    5.313851@0] Workqueue: events cs_dbs_timer
[    5.318126@0] [<c0014c3c>] (unwind_backtrace+0x0/0xf8) from [<c0011d14>] (sh)
[    5.326791@0] [<c0011d14>] (show_stack+0x10/0x14) from [<c002a2dc>] (warn_sl)
[    5.335899@0] [<c002a2dc>] (warn_slowpath_common+0x4c/0x6c) from [<c002a318>)
[    5.345705@0] [<c002a318>] (warn_slowpath_null+0x1c/0x24) from [<c0070c88>] )
[    5.355774@0] [<c0070c88>] (smp_call_function_many+0x84/0x2c4) from [<c00710)
[    5.365754@0] [<c0071054>] (smp_call_function+0x34/0x64) from [<c001b69c>] ()
[    5.375041@0] [<c001b69c>] (clk_set_rate_a9+0x9c/0xec) from [<c001baa4>] (me)
[    5.384503@0] [<c001baa4>] (meson_clk_set_rate+0xa0/0x184) from [<c001bc2c>])
[    5.393711@0] [<c001bc2c>] (clk_set_rate+0xa4/0xc0) from [<c03d01d0>] (meson)
[    5.404296@0] [<c03d01d0>] (meson_cpufreq_target_locked.isra.0+0xe0/0x1c8) f)
[    5.415584@0] [<c03d02dc>] (meson_cpufreq_target+0x24/0x3c) from [<c03347f0>)
[    5.425828@0] [<c03347f0>] (__cpufreq_driver_target+0x50/0x74) from [<c033b8)
[    5.435629@0] [<c033b854>] (dbs_check_cpu+0x254/0x268) from [<c0338634>] (cs)
[    5.444486@0] [<c0338634>] (cs_dbs_timer+0x98/0xc8) from [<c0040830>] (proce)
[    5.453596@0] [<c0040830>] (process_one_work+0x20c/0x340) from [<c0040e54>] )
[    5.462973@0] [<c0040e54>] (worker_thread+0x22c/0x37c) from [<c00470a8>] (kt)
[    5.471392@0] [<c00470a8>] (kthread+0xa0/0xac) from [<c000e258>] (ret_from_f)
[    5.479632@0] —[ end trace 529d33b6db914909 ]—
[    5.484405@0] ————[ cut here ]————
[    5.489182@0] WARNING: at kernel/smp.c:244 smp_call_function_single+0x98/0x1)
[    5.496555@0] Modules linked in: aml_nftl_dev(P)
[    5.501159@0] CPU: 0 PID: 4 Comm: kworker/0:0 Tainted: P        W    3.10.331
[    5.508450@0] Workqueue: events cs_dbs_timer
[    5.512709@0] [<c0014c3c>] (unwind_backtrace+0x0/0xf8) from [<c0011d14>] (sh)
[    5.521389@0] [<c0011d14>] (show_stack+0x10/0x14) from [<c002a2dc>] (warn_sl)
[    5.530501@0] [<c002a2dc>] (warn_slowpath_common+0x4c/0x6c) from [<c002a318>)
[    5.540309@0] [<c002a318>] (warn_slowpath_null+0x1c/0x24) from [<c0070adc>] )
[    5.550552@0] [<c0070adc>] (smp_call_function_single+0x98/0x1c0) from [<c007)
[    5.560706@0] [<c0071054>] (smp_call_function+0x34/0x64) from [<c001b69c>] ()
[    5.569993@0] [<c001b69c>] (clk_set_rate_a9+0x9c/0xec) from [<c001baa4>] (me)
[    5.579454@0] [<c001baa4>] (meson_clk_set_rate+0xa0/0x184) from [<c001bc2c>])
[    5.588659@0] [<c001bc2c>] (clk_set_rate+0xa4/0xc0) from [<c03d01d0>] (meson)
[    5.599247@0] [<c03d01d0>] (meson_cpufreq_target_locked.isra.0+0xe0/0x1c8) f)
[    5.610531@0] [<c03d02dc>] (meson_cpufreq_target+0x24/0x3c) from [<c03347f0>)
[    5.620775@0] [<c03347f0>] (__cpufreq_driver_target+0x50/0x74) from [<c033b8)
[    5.630580@0] [<c033b854>] (dbs_check_cpu+0x254/0x268) from [<c0338634>] (cs)
[    5.639434@0] [<c0338634>] (cs_dbs_timer+0x98/0xc8) from [<c0040830>] (proce)
[    5.648547@0] [<c0040830>] (process_one_work+0x20c/0x340) from [<c0040e54>] )
[    5.657923@0] [<c0040e54>] (worker_thread+0x22c/0x37c) from [<c00470a8>] (kt)
[    5.666343@0] [<c00470a8>] (kthread+0xa0/0xac) from [<c000e258>] (ret_from_f)
[    5.674583@0] —[ end trace 529d33b6db91490a ]—
[    5.730322@1] mail version=-1
[    5.730386@1] Mali pp1 MMU register mapped at f8064000…
[    5.733043@1] Mali pp2 MMU register mapped at f8065000…
[    5.788499@1] mali_meson_poweron: Interrupt received.
[    5.838622@1] mail version=1
[    5.888872@1] mali_meson_poweron: Interrupt received.
[    5.938973@1] mail version=1
[    5.940077@0] platform reg-20-cs-ldo2: Driver reg-20-cs-ldo2 requests probe l
[    5.940184@1] Mali: Mali device driver loaded
[    5.948578@0] platform reg-20-cs-ldo3: Driver reg-20-cs-ldo3 requests probe l
[    5.956336@0] platform reg-20-cs-ldo4: Driver reg-20-cs-ldo4 requests probe l
[    5.963968@0] platform reg-20-cs-buck2: Driver reg-20-cs-buck2 requests probl
[    5.971858@0] platform reg-20-cs-buck3: Driver reg-20-cs-buck3 requests probl
[    5.979756@0] platform reg-20-cs-ldoio0: Driver reg-20-cs-ldoio0 requests prl
[    5.990994@1] Mali DRM initialize, driver name: mali_drm, version 2.1
[    5.994412@1] [drm] Initialized mali_drm 2.1.1 20140306 on minor 0
[    6.000306@1] Mali DRM initialize, driver name: mali_drm, version 2.1
[    6.000381@0] platform reg-20-cs-ldo2: Driver reg-20-cs-ldo2 requests probe l
[    6.000448@0] platform reg-20-cs-ldo3: Driver reg-20-cs-ldo3 requests probe l
[    6.000493@0] platform reg-20-cs-ldo4: Driver reg-20-cs-ldo4 requests probe l
[    6.000538@0] platform reg-20-cs-buck2: Driver reg-20-cs-buck2 requests probl
[    6.000582@0] platform reg-20-cs-buck3: Driver reg-20-cs-buck3 requests probl
[    6.000626@0] platform reg-20-cs-ldoio0: Driver reg-20-cs-ldoio0 requests prl
[    6.054159@1] [drm] Initialized mali_drm 2.1.1 20140306 on minor 1
[    6.059947@0] platform reg-20-cs-ldo2: Driver reg-20-cs-ldo2 requests probe l
[    6.067815@0] platform reg-20-cs-ldo3: Driver reg-20-cs-ldo3 requests probe l
[    6.075606@0] platform reg-20-cs-ldo4: Driver reg-20-cs-ldo4 requests probe l
[    6.083202@0] platform reg-20-cs-buck2: Driver reg-20-cs-buck2 requests probl
[    6.091224@0] platform reg-20-cs-buck3: Driver reg-20-cs-buck3 requests probl
[    6.098976@0] platform reg-20-cs-ldoio0: Driver reg-20-cs-ldoio0 requests prl
Starting logging: OK
Populating /dev using udev: [    6.238118@1] udevd[1696]: starting version 1.5.3
done
Initializing random number generator… done.
Starting system message bus: done
Starting network…
ip: RTNETLINK answers: File exists
[    6.726537@0] netdev_open
[    6.726592@0] Ethernet reset
[    6.726621@0] NET MDA descpter start addr=edbb9000
[    6.731963@0] phy_interface = 1
[    6.734294@0] aml_phy_init:  trying to attach to 0:01
[    6.739950@0] –1–write mac add to:edef6908: 00 15 18 01 81 31 |...1|
[    6.746450@0] –2–write mac add to:edef6908: 00 15 18 01 81 31 |...1|
[    6.752694@0] write mac add to:edef6908: 00 15 18 01 81 31 |...1|
[    6.758948@0] Current DMA mode=0, set mode=621c100
[    6.763829@0] ether leave promiscuous mode
[    6.767861@0] ether leave all muticast mode
[    6.771964@0] changed the Multicast,mcount=1
[    6.776244@0] add mac address:33:33:00:00:00:01,bit=1
[    6.781283@0] set hash low=2,high=0
[    6.784722@0] changed the filter setting to :4
[    6.789431@0] changed the Multicast,mcount=1
[    6.793407@0] add mac address:33:33:00:00:00:01,bit=1
[    6.798594@0] changed the Multicast,mcount=2
[    6.802694@0] add mac address:33:33:00:00:00:01,bit=1
[    6.807768@0] add mac address:01:00:5e:00:00:01,bit=32
[    6.812845@0] set hash low=2,high=1
[    6.816373@0] changed the filter setting to :4
[    6.821863@0] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
udhcpc (v1.22.1) started
[    6.853618@1] changed the Multicast,mcount=2
[    6.853695@1] add mac address:33:33:00:00:00:01,bit=1
[    6.857374@1] add mac address:01:00:5e:00:00:01,bit=32
[    6.866272@1] changed the Multicast,mcount=2
[    6.866677@1] add mac address:33:33:00:00:00:01,bit=1
[    6.871706@1] add mac address:01:00:5e:00:00:01,bit=32
Sending discover…
[    7.070470@0] ionvideo open
[    7.070746@0] ionvideo release
[    7.073894@0] amlvideo openamlvideo close[    9.815955@0] libphy: 0:01 – Linl
[    9.816400@0] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    9.822167@0] changed the Multicast,mcount=3
[    9.826137@0] add mac address:33:33:00:00:00:01,bit=1
[    9.831096@0] add mac address:01:00:5e:00:00:01,bit=32
[    9.836232@0] add mac address:33:33:ff:01:81:31,bit=0
[    9.841087@0] set hash low=3,high=1
[    9.844554@0] changed the filter setting to :4
Sending discover…
Sending select for 192.168.0.102…
Lease of 192.168.0.102 obtained, lease time 7200
[   11.203898@0] changed the Multicast,mcount=3
[   11.204220@0] add mac address:33:33:00:00:00:01,bit=1
[   11.208036@0] add mac address:01:00:5e:00:00:01,bit=32
[   11.212840@0] add mac address:33:33:ff:01:81:31,bit=0
deleting routers
adding dns 192.168.0.1
Starting inetd: OK
Starting supplicant…
[   11.611426@0] rtl8192cu driver version=v4.0.2_9000.20130911
[   11.611748@0] build time: Aug  3 2014 01:33:35
[   11.620702@0] usbcore: registered new interface driver rtl8192cu
[   11.639456@1] Set usb wifi power up!
Getting initial time via ntp.
Starting network time protocol daemon: ntpd.
[   32.174196@1] tvmode set to 720p
[   32.174196@1]
[   32.174488@1] TV mode 720p selected.
[   32.179220@1] [0x1b7e] = 0xff
[   32.180139@1] [0x105f] = 0x0
[   32.182999@1] [0x109d] = 0x814d3928
[   32.187992@1] [0x109e] = 0x6b425012
[   32.189948@1] [0x109f] = 0x110
[   32.192981@1] [0x109c] = 0x1043e
[   32.197340@1] [0x1066] = 0x10843
[   32.199410@1] [0x1059] = 0x100
[   32.202443@1] [0x105f] = 0x80000
[   32.206525@1] [0x105f] = 0x88001
[   32.208870@1] [0x105f] = 0x80003
[   32.212076@1] [0x104a] = 0x101
[   32.215114@1] [0x107f] = 0x8c0000c3
[   32.219575@1] [0x1bb8] = 0x52
[   32.221540@1] [0x1b62] = 0x2029
[   32.224661@1] [0x1b8d] = 0x4040
[   32.228648@1] [0x1b8e] = 0x19
[   32.230741@1] [0x1b94] = 0x288
[   32.233775@1] [0x1b95] = 0xc87
[   32.237603@1] [0x1b97] = 0xce3
[   32.239856@1] [0x1b98] = 0x50
[   32.242804@1] [0x1b99] = 0xf0
[   32.246760@1] [0x1b9a] = 0x50
[   32.248710@1] [0x1b9b] = 0x2b0
[   32.251744@1] [0x1b9c] = 0xcb0
[   32.254781@1] [0x1b9d] = 0x4
[   32.257934@1] [0x1b9e] = 0x8
[   32.260516@1] [0x1ba1] = 0x4
[   32.263374@1] [0x1ba2] = 0x8
[   32.266485@1] [0x1ba4] = 0x288
[   32.269280@1] [0x1ba3] = 0xc87
[   32.272314@1] [0x1ba6] = 0x1d
[   32.275265@1] [0x1baf] = 0x2ec
[   32.278526@1] [0x1ba7] = 0x100
[   32.281346@1] [0x1ba8] = 0xa8
[   32.284292@1] [0x1ba9] = 0xa8
[   32.287506@1] [0x1baa] = 0x100
[   32.290286@1] [0x1bab] = 0x0
[   32.293146@1] [0x1bac] = 0x5
[   32.296877@1] [0x1bae] = 0x2ed
[   32.299045@1] [0x1b68] = 0x100
[   32.302081@1] [0x1b60] = 0x0
[   32.304945@1] [0x1b6e] = 0x200
[   32.308157@1] [0x1b58] = 0x0
[   32.310851@1] [0x1b7e] = 0x0
[   32.313712@1] [0x1b64] = 0x9061
[   32.316997@1] [0x1b65] = 0xa061
[   32.319965@1] [0x1b66] = 0xb061
[   32.323086@1] [0x1b78] = 0x1
[   32.326140@1] [0x1b79] = 0x1
[   32.328818@1] [0x1b7a] = 0x1
[   32.331680@1] [0x1b7b] = 0x1
[   32.334543@1] [0x1b7c] = 0x1
[   32.337586@1] [0x1b7d] = 0x1
[   32.340274@1] [0x271a] = 0xa
[   32.343137@1] [0x1bfc] = 0x1000
[   32.346555@1] [0x1c0d] = 0x3102
[   32.349390@1] [0x1c0e] = 0x54
[   32.352338@1] [0x1b80] = 0x1
[   32.355202@1] [0x1b57] = 0x0
[   32.358225@1] tvoutc_setmode[397]
[   32.361368@1] mode is: 6
[   32.363883@1] config HPLL
[   32.366635@1] config HPLL done
[   32.369559@1] new mode 720p
[   32.369559@1]  set ok
[   32.374674@1] hdmitx: video: get current mode: 720p
[   32.379872@1] hdmitx: system: already init VIC = 0  Now VIC = 4
[   32.385427@1] set mode VIC 4 (cd0,cs0,pm1,vd0,1)
[   32.390258@1] hdmitx: system: hw reset
[   32.393854@1] HDMI: get brd phy data
[   32.398016@1] hdmi phy setting

[   32.401553@1] hdmitx: audio: SPDIFHDMI: get brd phy data
[   32.406030@1] hdmi phy setting
[   32.408996@1] hdmitx: system: set pll
[   32.412575@1] hdmitx: system: param->VIC:4
[   32.416787@1] mode is: 6
[   32.419172@1] config HPLL
[   32.421774@1] config HPLL done
[   32.447232@1] hdmitx: system: fixed HDMI mode output
[   32.447327@1] Sink is HDMI device
[   32.449879@1] No sink attached
[   32.458075@0] set_vout_mode[156]
[   33.114100@0] create_disp_get_ump_secure_id******0
[   33.116636@0] create_disp_get_ump_secure_id******1

If you want a useable desktop image, you can install Lubuntu in the Ubuntu 14.04 core image provided by the company. A ready-to-use Ubuntu 14.04 firmware with video decoding will be made available a little later.

I haven’t tried the current image due to time contraints, and because it does not support hardware video decoding yet. But here’s what you’d need to do to install Lubuntu 14.04:

  1. Download Ubuntu 14.04 for Wetek Play
  2. Flash the image to a micro SD card with dd or Win32DiskImager as shown above, using 8GB micro SD at least, and preferably Class 10 for better performance
  3. Insert the micro SD card into Wetek Play, connect the serial console, and power the device.
  4. In the serial console (connected via minicom, Hyterminal, putty,….), install Lubuntu as follows:
    apt-get update
    apt-get upgrade
    apt-get install lubuntu-desktop
    sync
    reboot
  5. After reboot, you should be able to access the LXDE desktop environment.
Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Embedded Linux Conference Europe 2014 Schedule – IoT, ARM vs x86, Optimization, Power Management, Debugging…

August 21st, 2014 2 comments

The Embedded Linux Conference Europe (ELC 2014), CloudOpen, and LinuxCon Europe will jointly take place at the Congress Centre Düsseldorf, in Germany on October 13 – 15, 2014. The 3-day events will consists of keynotes, presentations, and tutorials. Each day will open with two or three keynotes by speakers including  Jim Zemlin (Executive Director, Linux Foundation), and Jono Bacon (XPRIZE), followed by presentation and tutorials. There will be 45 presentations for ELCE, 58 for LinuxCon, and 47 for CloudOpen, I’ll make a virtual schedule with a few sessions part of the Embedded Linux Conference Europe “track”.

ELCE_2014

Monday, October 13

When faced with a performance problem, the initial steps towards a solution include identifying the sections of code responsible and the precise reasons they are time-consuming. To this end, the ‘perf’ profiling tools provide valuable insight into the characteristics of a program. The presentation will show, using real-world examples, how the ‘perf’ tools can be used to pinpoint the parts of a program in need of optimization.

It’s not uncommon to produce embedded Linux based devices that end up with long and inconvenient boot times – yet eliminating boot time delays can be difficult and time consuming. Furthermore once a minimal boot time has been achieved it’s often just as difficult to maintain it through subsequent software development.

In this presentation, Andrew unfolds 12 keys lessons learned in his experience of boot time reduction. These lessons provide an insight into the common causes of boot time delays, why they are present and how they can be overcome. In describing these lessons Andrew will also take you on a journey that indicates why file system benchmarks should probably be ignored (with respect to boot time reduction) and a journey that illustrates that the Linux kernel is rarely the worst offender for boot delays.

With the introduction of Bluetooth Smart (aka Low Energy), the ubiquity of Bluetooth is more and more present. Millions of devices support Bluetooth Low Energy and with Bluetooth 4.1 specification, they are ready for the Internet of Things. This presentation will give an overview of Bluetooth Low Energy, and its usage for the Internet of Things. It will also introduce 6loWPAN over Bluetooth and show the possibilities this opens for Linux.

With experience developing community based open hardware for both the ARM based PandaBoard project and the x86 based MinnowBoard project, this presentation will provide a detailed comparison of the pros and cons of each platform with highlights of what each platform can learn from the other. Not only limited to the hardware aspect of the platforms, but also discuss community, software, corporate and general embedded aspects.

For almost as long as there have been deployments of Linux, there has been someone wondering “how can I get the device started quicker?” and “how do I configure some redundancy, easily, in case something goes wrong?”. And for the longest time, the answer has been “hack this and this and that” or “hire these consultants, they have done it before”. In this presentation, Tom will show what you need to turn on and the prep work required for, getting a lot of those items out of the box in U-Boot, what the hardware (and/or ROM) needs to do, and the what works is left going forward.

Got a question, comment, gripe, praise, or other communication for the Yocto Project and/or OpenEmbedded? Or maybe you’d just like to learn more about these projects and their influence on the world of embedded Linux? Feel free to join us for an informal BoF.

Tuesday, October 14

While user experiences are increasingly moving to 3D, rendering of 2D content remains at the core of how we interact with computer applications today. Skia is an open-source project maintained by Google whose goal is to bring the best 2D graphics library to a variety of targets, from mobile to desktop and embedded. Skia is used in highly popular projects like Mozilla Firefox, the Chromium browser and Android.

This talk will introduce Skia to developers and users, giving an overview of its design, architecture and features. It will also discuss briefly how hardware acceleration improves performance of Skia in the context of new devices, form-factors and the industry shift to mobile; with focus set on Linux and Android platforms.

The 4.4 KitKat release includes the results of “Project Svelte”: a set of tweaks to the operating system to make it run more easily on devices with around 512 MB RAM. This is especially important for people working with Android Wearables and “Embedded Android”, that is, implementing Android on devices at the lower end of the Android ecosystem. A large part of the problem is knowing how much RAM is really being used. Android offers a variety of tools for the purpose: procrank, procmem, meminfo and procstats, which Chris covers in the first part of the talk. In the second part, he takes a real-world example and show the practical steps you can take to optimize memory use including tuning the size of the Dalvik heap, enabling KSM (Kernel samepage merging) and swap to zRAM.

Android has relied from its early days on the Linux kernel for sandboxing the processes it runs. Yet, the permission model presented to app developers is significantly different from the Unix permission model. What’s the relationship between those two models? How is Android’s app security framework tied to the Linux kernel’s security model? More recently, Android has started using SELinux and has been extended by SEAndroid to support similar functionality. How is SELinux used by Android and what is SEAndroid about? Furthermore, how does Android provide support for multiple users?

This talk will explore Android’s security model in great detail and explain how the functionality found in the kernel is used to isolate user processes and the SE enhancements are leveraged by Android. As we’ll see, there are quite a few moving parts in Android’s security model.

Since last year, Free Electrons has been working on supporting the SoCs from Allwinner, a Chinese SoC vendor, in the mainline kernel. These SoCs are cheap, wide-spread, backed by a strong community and, until last year, only supported by an out-of-tree kernel. Through this talk, Maxime will share the status of this effort: the status a year ago, what solutions were in place, where we are currently, and what to expect from the future. He will also focus on the community around these SoCs, the work that is done there, etc.

Enlightenment Foundation Library is a set of libraries designed to use the full potential of any hardware to do great UI. It has been designed with the embedded devices in mind, but it is a desktop class toolkit. Being done in C, it is providing a stable API/ABI, high efficiency, low memory and low battery usage for all kind of Linux devices. Enabling development of modern UI adapted to any hardware that run Linux. These are the reason why Samsung uses it in its Tizen devices. This talk, after a short overview of what this libraries cover, will focus on this year improvement, and where it is heading. It will also be an opportunity to learn about project around EFL that will help people develop product with it. And it would also be a good opportunity to see where EFL are used with some real use case.

Wednesday, October 15

A major issue the community faces is the lack of power measurement (PM) instrumentation, coupled with poor integration: development boards not designed for it, expensive high-precision lab equipment not accessible to hobbyists (plus limited Linux support), limited low-cost solutions (precision, sampling rate) to monitor high-performance SoC (System On Chips) platforms (e.g. smartphones, tablets, IoT, …). After a brief introduction to the problematic (PM techniques, sense resistor / ADC selection, …) and a comparative study of existing solutions, this presentation will focus on a new upcoming initiative to close these gaps and bring a full-blown multi-channel but low-cost power (and temperature) measurement equipment to the community, including the definition of an open standard PM connector. After having covered motivations, challenges, key decisions, a live demo will close the talk.

In 2013, at the Embedded Linux Conference in Europe in Edinburgh, there was a race between a dog and a blimp. It was said that despite the dogs win, that the blimp had participated in the miracle of flight. In 2014, John wants to show that the brains of that dog can be transplanted and that it too, can participate in the miracle of flight. The talk is mainly targeting taking an off the shelf embedded platform, Minnowboard Max, and it’s use in UAVs, specifically quad-copters. With the ability to do real time computer vision, as well as various GPIO capabilities he will explore the directions that significantly more autonomous UAVs can take with Linux and embedded platforms using, mostly, off the shelf components.

There have been many presentations on what a device tree looks like and how to create a device tree. This talk instead examines how the Linux kernel uses a device tree. Topics include the kernel device tree framework, device creation, resource allocation, driver binding, and connecting objects. Troubleshooting will consider initialization, allocation, and binding ordering; kernel configuration; and driver problems.

Providing real-time capabilities to a general purpose operating system is an outstanding technical problem, and Linux Preempt-RT has been developed for 10 years for this goal. In this presentation, Jim proposes a lightweight open source para-virtualization layer, called “rtmux”, using resource-multiplexing techniques to provide a highly deterministic RT environment for Linux/ARM. Typically, less than 500 lines modification against Linux kernel are required to enable rtmux accompanied by POSIX/PSE51 compatible runtime.

During the last 2.5 years, a team of engineers at Free Electrons has been involved in mainlining the support for several ARM processors from Marvell, converting the not-so-great vendor-specific BSP into mainline quality code progressively merged upstream. This effort of several hundreds working days, has led to the integration of hundreds of patches in the kernel. Through this talk, Thomas will share some lessons learned regarding this mainlining effort, which could be useful to other engineers involved in ARM SoC support, as well as detail the steps Free Electrons engineers have gone through, the mistakes made and how they’ve been solved, as well as their overall experience on this project.

To make your own schedule matching your interests, you can check out the events’ program.

To attend the conference, you can register online.

The fees are listed as follows:

  • All-access Registration Fee – $600 until August 22 (tomorrow), $750 until October 2, and $850 afterwards
  • Attendee Networking Pass Registration – No access to conference sessions. $250 until August 22, $300 afterwards.
  • Student Registration Fee – $200 (valid student id required).
  • Registration Discount Scholar – $300. For active open source community members who can’t be sponsored by their company. .

Fees are significantly higher than last year, because there are only all-in-one (ELCE, CloudOpen and LinuxCon )options, and you can’t simply register to one single event.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Linux 3.16 Released

August 6th, 2014 3 comments

Linus Torvalds announced the release of Linux Kernel 3.16 over the week-end:

So nothing particularly exciting happened this week, and 3.16 is out there.

And as usual (previous release being the exception) that means that the merge window for 3.17 is obviously open. And for the third time in a row, the timing sucks for me, as I have travel coming up the second week of the merge window. Many other core developers will be traveling too, since it’s just before the kernel summit in Chicago.

So we’ll see how the next merge window goes, but I’m not going to worry about it overmuch. If I end up not having time to do all the merges, I might delay things into the week of the kernel summit, but I’ll hope to get most of the big merging done this upcoming week before any travel takes place, so maybe it won’t come to that. So this is just a heads-up that the merge window *might* be extended.

Anyway, back to the changes since -rc7: it’s really fairly small stuff randomly all over, with a third being architecture updates, a third drivers, and a third “misc” (mainly mm and networking). The architecture stuff is small ARM updates (mostly DT), some x86 Xen fixups, some random small powerpc things. The shortlog gives a good idea of what kind of stuff it all is, but it’s really just 83 commits (plus merges and the release commit) and about a third of them are marked for stable.

So while 3.16 looked a bit iffy for a while, things cleared up nicely, and there was no reason to do extra release candidates like I feared just a couple of weeks ago.

Linus

Kernel 3.15 brought various file systems improvements, faster resume from suspend, etc… Some of Linux 3.16 main changes include:

  • Various KVM improvements: optimizations, support for migration, and GDB support for s390, little-endian support for POWER8, as well as MIPS improvements.
  • Xen – Virtual network interfaces now have multi-queue support for much better performance.
  • Goldfish virtual platform now has 64-bit support.
  • Hugepage migration has been turned off for all architectures except x86_64 since it is only tested on that architecture and there are bugs for some of the others.
  • Automatic NUMA balancing has been turned off for 32-bit x86. Existing 32-bit NUMA systems are not well supported by the code and the developers did not think the effort to support them would be worthwhile.
  • EFI – The kernel EFI code will now handle Unicode characters, and initial support for ARM64 (aarch64) had been added.
  • NFS – Patches to make loopback NFS mounts work reliably have been merged through the NFS tree.  External data representation (XDR) handling in NFS has been reworked to support access control lists (ACLs) larger than 4KB. It also returns readdir() results in chunks larger than 4KB giving better performance on large directories.
  • Modules now have the read-only (RO) and no-execute (NX) bits set on their data sections much earlier in the loading process, before parsing any module arguments. This will further reduce the time window in which a misbehaving (or malicious) module can modify or execute its data.
  • Support for TCP fast open over IPv6 has been added.
  • Support for busy polling on stream control transmission protocol (SCTP) sockets has been added. Busy polling is set on a socket using the SO_BUSY_POLL socket option; it can reduce the latency of receives on high-traffic interfaces that support the option.

New features and improvements specific to the ARM architecture include:

  • AllWinner – All platforms: AXP20x PMIC and MMC support, 5 drivers + SMP reworked for AllWinner A31, touchscreen drivers for AllWinner A10. DTS added for Mele M9 and R7. You can read details about AllWinner changes here.
  • Rockchip – RK3xxx SoC I2C drivers
  • Xen on ARM systems now supports suspend and resume.
  • Hibernation support added for ARM targets.
  • Initial support for ARM64 (aarch64) had been added
  • SMP support has been added for Marvell Armada 375 and 38x SoCs. SMP has been reworked for the Allwinner A31 SoC.
  • New ARM SoC added: ST Microelectronics STiH407; Freescale i.MX6SX; Samsung Exynos 3250, 5260, 5410, 5420, and 5800; and LSI Axxia AXM55xx.
  • Nouveau driver has initial support for NVIDIA Tegra K1 GK20A devices.
  • Various changes for Atmel AT91, Marvell Armada, Fresscale i.MX, Samsung Exynos, and TI AM43xx SoCs.

Further details on Linux 3.16 will eventually be available on Kernelnewbies.org. For more details about ARM changes, remember to also check ARM architecture and drivers sections.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Linaro 14.06 Release with Linux Kernel 3.15 and Android 4.4.3

July 1st, 2014 No comments

Linaro 14.06 has been released last week with Linux Kernel 3.15 (baseline), Linux Kernel 3.10.44 (LSK), and Android has been updated to 4.4.3.

One interesting development this month is that Android for ARMv8 (64-bit ARM) is booting on the fast models using ARM Trusted firmware and U-Boot.  SELinux has been enabled in Android. I could not see much new member hardware, except possibly B2120 (HDK) reference board for STMicro STiH407 “Monaco” STB SoC.

Here are the highlights of this release:

  • Linux Linaro 3.15-2014.06
    • GATOR version 5.18 (same version as in 2014.04)
    • updated basic Capri board support from Broadcom LT
    • cortex-strings-arm64 topic (same as in 2014.02)
    • updated Versatile Express ARM64 support (FVP Base and Foundation models, Juno) from ARM LT.
    • updated Versatile Express patches from ARM LT
    • more HiP0x Cortex A15 family updates from HiSilicon LT (hip04_eth, hip04_defconfig)
    • updated LLVM topic
    • Big endian support (same as in 2014.05)
    • ftrace_audit topic from the Kernel WG (same as in 2014.05)
    • config fragments changes – android: Enable SELinux related configurations
  • Linaro Toolchain Binaries 2014.06
    • based on GCC 4.9 and updated to latest Linaro TCWG releases
    • Linaro GCC 4.9-2014.06
    • Linaro Binutils 2.24.0-2014.06
    • Linaro GDB 7.7.1-2014.06
  • Linaro Android 14.06 – Built with Linaro GCC 4.8-2014.05, upgraded to Android 4.4.3
  • Linaro OpenEmbedded 2014.06
    • integrated Linaro GCC 4.9-2014.06
    • integrated Linaro EGLIBC 2.19-2014.06
    • integrated Linaro binutils 2.24-2014.06
    • integrated Linaro GDB 7.7.1-2014.06
    • integrated powerdebug 0.7.3
    • several ODP updates
    • upstreaming: fixed hwlatdetect metadata,  fixed recipes related to oe-core binconfig changes: apache2, php and swig, and updated PM QA to 0.4.11
  • Linaro Ubuntu 14.06
    • added openssh-server to the images, SSH keys are generated on first boot.
    • updated packages: ARM trusted firmware (0.7), openssl (1.0.1h), PM QA (0.4.11), powerdebug (0.7.3), powertop (2.6.1), LSK 3.10.44 and linux-linaro 3.15 kernels.
  • ARMv8 Ubuntu engineering build for Enterprise
  • Android for ARMv8 is booting with ARM Trusted firmware and U-Boot on Models
  • CI loop has been setup for Juno Android member build
  • CI bring up: ST B2120 engineering build
  • Build rootfs image for toolchain benchmarking
  • CI bring up: HiSilicon Hi3716cv200
  • CI bring up: ARM64 kexec build and regression test setup
  • CI bring up: Juno OpenEmbedded member build
  • LSK: add RT patchset CI loop
  • LSK: add Juno CI loop
  • Build Ubuntu rootfs image for toolchain automation framework
  • SELinux is enabled on LSK with Android 4.4.3 for ARMv7

You can visit https://wiki.linaro.org/Cycles/1406/Release for a list of known issues, and further release details about the LEB and community builds, Android, Kernel, Graphics, Multimedia, Landing Team, Platform, Power management and Toolchain (GCC / Qemu) components.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Emtrion DIMM-AM335x SoM Supports Mainline Linux Kernel

June 30th, 2014 1 comment

When I cover system-on-modules (SoM), companies will usually provide some BSP (Board Support Packages) for older kernels, and did not submit their changes to mailine kernel, so I was interested in a news from Emtrion entitled “DIMM-AM335x: Linux mainline support ready“, which actually means they’ve done the work to support a recent Linux kernel (3.14) and provides instructions and code (device tree files), but did not submit patches to the linux-arm-kernel mailing list to get their changes added to kernel.org.

Emtrion_DIMM-AM335xLet’s look at the hardware specs first:

  • SoC – Texas Instruments Sitara AM335x ARM Cortex A8 processor @ 720Mhz to 1GHz (AM3354 or AM3359)
  • System Memory – onboard 512 MB SDRAM/optional 256 MB
  • Storage – 512 MB NAND Flash (managed) + 2 SD card interfaces
  • Display – LCDs I/F with resolution up to SVGA, with 4-wire touch interface
  • Audio – Analog Audio with SSI I/F
  • USB – USB 2.0 Host and Device
  • Connectivity – 100BaseTX Ethernet
  • Other I/Os:
    • 2x CAN
    • 4x serial interfaces
    • 4x analog inputs
    • 1x SPI, 1x I²C
    • 10x GPIOs
  • Misc – RTC (Battery buffered)
  • Temperature range – 0°C to 70°C (optional from – 40°C to 85°C)
  • Dimensions – 67,6 x 45 mm

The company provide four different baseboard for development. You can find more details about the hardware on Emtrion DIMM-AM335x page.

The company provides BSP and development kit for Linux 3.2.0 (via Yocto 1.5.1), and QNX 6.5, but you can also get BSPs for Windows Embedded Compact 7, Windows 2013, and Android 4.0 on request. To make there SoM “Linux mainline ready” they’ve provided a tarball file with documentation and files namely:

  • DIMM-AM335x-Mainline-Support-v001en.pdf – Documentation for Linux mainline support for DIMM-AM335x
  • am335x-dimm.dts – Device tree file with the SoM
  • am335x_mainline_defconfig – Kernel config
  • uboot_script – Uboot script

And apparently that’s all what’s needed to support a Sitara AM335x SoM in mainline kernel. They have tested it against Linux 3.14.y from kernel.org, but it should also work with the latest version. They also have added this to Yocto in the FTP (see PDF). I’m not sure why they’ve have gone the extra steps and submitted a patch to add their module to mainline.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Marvell Armada 370 Processor Datasheet Released, Mainline Linux Kernel Supported on Netgear ReadyNAS 102/104

June 13th, 2014 4 comments

Free Electrons has been working on porting several ARM SoC to the Linux kernel (mainline), including Marvell XP and 370 SoCs, and they’ve been informed by Marvell that the company finally released Marvell Armada 370 processor publicly without requiring NDA nor registration. Marvell Armada XP dual and quad core processors datasheet found in higher-end NAS and cloud servers has not been released (yet), but we’ve been told many peripheral blocks are very similar, so Marvell Armada 370 datasheet can also be used for Armada XP processors to some extend.

Marvell Armada 370 () Block Diagram

Marvell Armada 370 (88F6710) Block Diagram

Two documents have actually been released for Marvell Armada 370: the functional specification and the hardware specification (datasheet). The first document is actually the one with the most information with 1148 pages providing details about peripherals, against 164 pages for the latter providing details about pins and electrical characteristics.

So we’ve got an ARM SoC with mainline kernel support, and decent documentation. That’s already good, but there’s more as at least three devices based on Marvell Armada 370 are supported in mainline:

So you could just download the kernel from kernel.org, build it with your needed/required features, and use the relevant DTS files (armada-370-mirabox.dts, armada-370-netgear-rn102.dts, or armada-370-netgear-rn104.dts) to run the latest Linux kernel on your device.

Let’s just check the hardware specs of Netgear RM10200:Netgear_ReadyNAS_102

  • CPU – Marvell Armada 370 ARMv7 processor @ 1.2GHz
  • System Memory – 512MB
  • Storage – Some flash for firmware, 2x bays for 2.5″or 3.5″ SATA/SSD supporting up to 8GB in total, 1x eSATA expansion port
  • Connectivity – 1x Gigabit LAN port
  • USB – 1x USB 2.0, 2x USB 3.0
  • Misc – 2-Line LCD display, 92mm fan
  • Power Supply – 12V, 5A External 60W: input 100-240V AC, 50/60Hz
  • Power Consumption – 31W during operating, 1W on Waker on LAN mode, and 210 mW in power off mode.
  • Dimensions – 220 x 101 x 142 mm
  • Weight – 2.12 kg

If you want to see more technical details including pictures of internals, details about the chips inside the NAS, instructions to get access to the serial console via a USB to TTL debug board, and step by step instructions to build the kernel and install Debian, you can visit natisbad blog.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter