Archive

Posts Tagged ‘bsp’

F&S armStoneA9 is a Pico-ITX Board Powered by Freescale i.MX 6 with up to 4GB RAM

June 19th, 2013 No comments

F&S Elektronik Systeme GmbH has announced the armstoneA9, a pico-ITX board featuring Freescale i.MX 6 Solo/Dual or Quad Cortex A9 processor with up to 4GB DDR3 SDRAM, and 128 MB flash (1GB+ flash optional) that available in both commercial and industrial temperature range.

armStoneA9Here are the specifications of the board:

  • SoC – Freescale i.MX 6 Cortex-A9 (Quad-/ Dual-/ Single-Core) @ 800 MHz to 1 GHz with Vivante GPU
  • System Memory – 1GB (standard version) to 4 GB DDR3 SDRAM
  • Storage – 128MB Flash (1GB+ optional), micro-SD Card Slot, and SATA interface
  • Display:
    • up to SVGA (800 x 600, 65536 colors) via RGB
    • up to WUXGA (1920 x 1200, 18Bit/ 24Bit) via 2x LVDS
    • up to FullHD (1920 x 1080, 24Bit) via HDMI
  • Touch Panel – 4-wire, analogue resistive and PCAP-Touch Interface via I2C
  • Interfaces:
    • 1x 10/100/1000MBit Ethernet
    • 3x Serial (2x RS232, 1x TTL 3.3V Level)
    • 1x USB 2.0 Host, 1x USB 2.0 Device
    • 1x CAN 2.0
    • 1x I2C, 1x SPI
    • 1x Audio-Line IN/OUT/MIC
    • 1x miniPCIe
    • Up to 66 digital I/O
  • Power Supply – 5V or 8-14V DC / ±5%, 4W typical power consumption
  • Temperature Range – 0°C – +70°C (commercial) or -25°C – +85°C (industrial)
  • Dimensions – 100mm x 72mm x 15mm
  • Weight – 40g

The company already supports Linux 3.0.35 for the board (uboot, BSP, interface drivers, Qt, Streamer) and Ubuntu, and Windows Embedded Compact 7 (WEC 7) should be available soon with the bootloader, kernel, SDK, and interface drivers. armStoneA9-SKIT is the starter kit for development which includes the board, cables, a micro SD card, and access to the download area of the site with software and documentation.

The standard versions of the board include 1GB RAM, 128MB flash, but the company can provides customized version, for example with 4GB RAM, for order of 100 units or more. I could not find pricing nor availability information for the board. Further details may be found on F&S armStoneA9 page.

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

Wandboard Dual Benchmarks, Serial Console Fun, and Distributions List

June 11th, 2013 5 comments

Since last time I tried Android and Ubuntu on the Wandboard, a few things happened. I’m not talking about Wandboard Quad announcement, but instead I received a Class 10 SD card, which makes the system so much responsive, and a RS232 to USB adapter so that I can access the serial console. So today, I’ll publish some benchmark results on Wandboard Dual since none appear to be available, and play a little with the serial console. A few things also happened on the operating systems side with more distributions now available for the board.

Prerequisites

I ran benchmark in Android, so I installed the latest Android 4.1.2 image (11th of April 2012) to my new SD card (ADATA 16 GB Class 10), and contrary to my poor experience on a 4GB Class 4 micro SD, everything was very fluid. I’ve also installed Google Play in order to install the applications. To do so in any device, you need to download the latest version for your Android version from http://goo.im/gapps. In our case (Android 4.1.2), we need to download gapps-jb-20121011-signed.zip, extract it and copy the files in the micro SD card in a Linux PC:

cd ~/
mkdir gapps-jb
cd gapps-jb 
unzip ~/Downloads/gapps-jb-20121011-signed.zip 
sudo cp ~/gapps-jb/system/* /media/system/ -rf 
sync
In order to capture screenshots, I also had to root the device using the following steps from a Linux PC with Wandboard connected to the PC via its mini USB port:
wget http://downloads.androidsu.com/superuser/su-bin-3.1.1-arm-signed.zip
unzip su-bin-3.1.1-arm-signed.zip
adb push system/bin/su /mnt/sdcard/su
adb shell
mount -o remount,rw /system
busybox cp /mnt/sdcard/su /system/xbin/su
chmod 6755 /system/xbin/su
sync
reboot
At this point you should get a rooted image with a working Google Play on the Wandboard, the final step is to install superuser so that you can control which apps get root access.

Antutu and Quadrant Benchmarks on Wandboard Dual

The screen will rotate with both Antutu 3.3 and Quadrant benchmark, so they are performed in portrait mode. This is using full screen, so the results should still be valid for comparison. The board also overheated once during Antutu’s 3D Graphics benchmarks, and froze. A immediate reboot of the board showed the following message:
CPU: Freescale i.MX6 family TO1.1 at 792 MHz 
CPU is 80 C, too hot to boot, waiting... 
Temperature:   73 C, calibration data 0x59952b5f
I turned the board around so that i.MX6 SoC can get better ventilation, and the benchmark could complete.
Wandboard Antutu

With 6190 points, Wandboard Dual performance is between Amazon Kindle Fire (TI OMAP4430) and Samsung Galaxy Nexus (TI OMAP4460), which seems about right. This also compares to 8516 points in Hi-802 (Freescale i.MX 6 Quad), with the quad version getting double the score for integer, over 50% more for RAM and floating-point tests. Surprisingly 3D graphics results are better in Wandboard Dual (1771) compared to Hi-802 (1272) in Antutu. This is an anomaly that could either be due to a different Android version (4.0 vs 4.1) and/or better drivers, or the orientation during the test really affects the results.

Wandboard_Quadrant

Quadrant benchmark places the device just below LG Optimus 2X (Nvidia Tegra 2) and Galaxy Nexus, so no surprises here.

Setting-up the Serial Console on Wandboard

Many boards provide access to the serial console via +3.3V TTL signals, so you can just connect a TTL to USB board. The Wandboard uses RS232 signals, so you’ll need a different type of debug board, or simply a null-modem cable if your computer features a DB-9 serial connector. Mine does not, so I bought a cheap RS232 to USB converter. Build quality is poor, but it does the job. At first, I thought I could just connect it directly to the Wandboard, but it also needs a null-modem cable, Since I don’t have one myself, I used three breadboard wires instead connecting Tx, Rx, and GND following the diagram below:

Source: Microtik

Source: Microtik

I only connected pin 2,3 and 5, and ignored the other connection which are not needed for our purpose. The picture below shows the end result. I just connect the RS232 to USB converter to a USB hub to access it from Linux or Windows.

Wandboard UART Connection

In Linux (Ubuntu 12.04), the converter is immediately recognized, and you can just access the serial port with minicom, after setting up 115200bps/8n1 connection to /dev/ttyUSB0. In Windows, you’ll need to install a driver either from the provided CDROM, or download CH341SER.zip.

For reference, here’s the boot log from Android 4.1.2:

U-Boot 2009.08 (Apr 11 2013 – 15:55:59)CPU: Freescale i.MX6 family TO1.1 at 792 MHz
Temperature: 67 C, calibration data 0x59952b5f
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 198000000Hz
emi_slow clock: 99000000Hz
ddr clock : 396000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6DL/Solo-WandBoard: unknown-board Board: 0×61011 [WDOG ]
Boot Device: SD
DRAM: 1 GB
MMC: FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2
*** Warning – bad CRC or MMC, using default environmentIn: serial
Out: serial
Err: serial
Gotr MAC = 00:1F:7B:B2:02:F4
Net: got MAC address from IIM: 00:1f:7b:b2:02:f4
FEC0 [PRIME]
Hit any key to stop autoboot: 0
kernel @ 10808000 (2289836)
ramdisk @ 11800000 (169948)
kernel cmdline:
use boot.img command line:
console=ttymxc0,115200 init=/init video=mxcfb0:dev=hdmi,1280x720M@60,ifStarting kernel …

[ 0.000000] Linux version 3.0.35 (root@edward-x220-laptop) (gcc version 4.6.3
[ 0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
[ 0.000000] CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine: Freescale i.MX 6DualLite/Solo Wandboard
[ 0.000000] EDWARD : ram console init at phys 0x3ff00000
[ 0.000000] EDWARD : GPU_Reserved Memory equals to 184549376
[ 0.000000] EDWARD : gpumem init at phys 0×15000000
[ 0.000000] Memory policy: ECC disabled, Data cache writealloc
[ 0.000000] CPU identified as i.MX6DL/SOLO, silicon rev 1.1
[ 0.000000] PERCPU: Embedded 7 pages/cpu @80f67000 s5696 r8192 d14784 u32768
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pa0
[ 0.000000] Kernel command line: console=ttymxc0,115200 init=/init video=mxce
[ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[ 0.000000] Memory: 80MB 511MB 212MB = 803MB total
[ 0.000000] Memory: 805480k/805480k available, 243096k reserved, 0K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 – 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 – 0xfffe0000 ( 896 kB)
[ 0.000000] DMA : 0xfbe00000 – 0xffe00000 ( 64 MB)
[ 0.000000] vmalloc : 0xc0800000 – 0xf2000000 ( 792 MB)
[ 0.000000] lowmem : 0×80000000 – 0xc0000000 (1024 MB)
[ 0.000000] pkmap : 0x7fe00000 – 0×80000000 ( 2 MB)
[ 0.000000] modules : 0x7f000000 – 0x7fe00000 ( 14 MB)
[ 0.000000] .init : 0×80008000 – 0×80038000 ( 192 kB)
[ 0.000000] .text : 0×80038000 – 0x805de000 (5784 kB)
[ 0.000000] .data : 0x805de000 – 0x80620f80 ( 268 kB)
[ 0.000000] .bss : 0x80620fa4 – 0x8075ffe0 (1277 kB)
[ 0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=2, 1
[ 0.000000] Preemptible hierarchical RCU implementation.
[ 0.000000] NR_IRQS:496
[ 0.000000] MXC GPIO hardware
[ 0.000000] sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1s
[ 0.000000] Set periph_clk’s parent to pll2_pfd_400M!
[ 0.000000] arm_max_freq=2
[ 0.000000] MXC_Early serial console at MMIO 0×2020000 (options ’115200′)
[ 0.000000] bootconsole [ttymxc0] enabled
[ 0.000000] Console: colour dummy device 80×30
[ 0.245885] Calibrating delay loop… 1581.05 BogoMIPS (lpj=7905280)
[ 0.334225] pid_max: default: 32768 minimum: 301
[ 0.339085] Mount-cache hash table entries: 512
[ 0.344360] CPU: Testing write buffer coherency: ok
[ 0.450152] CPU1: Booted secondary processor
[ 0.539562] Brought up 2 CPUs
[ 0.546824] SMP: Total of 2 processors activated (3162.11 BogoMIPS).
[ 0.571679] print_constraints: dummy:
[ 0.575671] NET: Registered protocol family 16
[ 0.584294] print_constraints: vddpu: 725 1300 mV at 700 mV fast normal
[ 0.591792] print_constraints: vddcore: 725 1300 mV at 1150 mV fast nor
[ 0.599531] print_constraints: vddsoc: 725 1300 mV at 1200 mV fast norm
[ 0.607166] print_constraints: vdd2p5: 2000 2775 mV at 2400 mV fast nor
[ 0.614921] print_constraints: vdd1p1: 800 1400 mV at 1100 mV fast norm
[ 0.622591] print_constraints: vdd3p0: 2625 3400 mV at 3000 mV fast nor
[ 0.632723] ram_console: got buffer at 3ff00000, size 100000
[ 0.638535] ram_console: found existing buffer, size 35924, start 35924
[ 0.738384] console [ram-1] enabled
[ 0.853886] L310 cache controller enabled
[ 0.858092] l2x0: 16 ways, CACHE_ID 0x410000c8, AUX_CTRL 0×02050000, Cache sB
[ 0.891189] bio: create slab at 0
[ 0.896073] print_constraints: VDDA: 2500 mV
[ 0.900747] print_constraints: VDDIO: 3300 mV
[ 0.906244] SCSI subsystem initialized
[ 0.910531] spi_imx imx6q-ecspi.0: probed
[ 0.914905] spi_imx imx6q-ecspi.1: probed
[ 0.921083] usbcore: registered new interface driver usbfs
[ 0.926918] usbcore: registered new interface driver hub
[ 0.932514] usbcore: registered new device driver usb
[ 0.937753] Freescale USB OTG Driver loaded, $Revision: 1.55 $
[ 0.959552] imx-ipuv3 imx-ipuv3.0: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F)
[ 0.967929] Advanced Linux Sound Architecture Driver Version 1.0.24.
[ 0.975414] Bluetooth: Core ver 2.16
[ 0.979212] NET: Registered protocol family 31
[ 0.983777] Bluetooth: HCI device and connection manager initialized
[ 0.990329] Bluetooth: HCI socket layer initialized
[ 0.995311] Bluetooth: L2CAP socket layer initialized
[ 1.000555] Bluetooth: SCO socket layer initialized
[ 1.006009] cfg80211: Calling CRDA to update world regulatory domain
[ 1.013552] Switching to clocksource mxc_timer1
[ 1.031297] NET: Registered protocol family 2
[ 1.035969] IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 1.044176] TCP established hash table entries: 131072 (order: 8, 1048576 by)
[ 1.054110] TCP bind hash table entries: 65536 (order: 7, 786432 bytes)
[ 1.061942] TCP: Hash tables configured (established 131072 bind 65536)
[ 1.068925] TCP reno registered
[ 1.072178] UDP hash table entries: 512 (order: 2, 16384 bytes)
[ 1.078354] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[ 1.085163] NET: Registered protocol family 1
[ 1.089892] Unpacking initramfs…
[ 1.104517] Freeing initrd memory: 164K
[ 1.108540] _regulator_get: etb supply vcore not found, using dummy regulator
[ 1.116394] _regulator_get: etm.0 supply vcore not found, using dummy regular
[ 1.124000] _regulator_get: etm.1 supply vcore not found, using dummy regular
[ 1.131799] Static Power Management for Freescale i.MX6
[ 1.137211] wait mode is disabled for i.MX6
[ 1.141702] cpaddr = c0820000 suspend_iram_base=c08ac000
[ 1.147282] PM driver module loaded
[ 1.151249] IMX usb wakeup probe
[ 1.154662] the wakeup pdata is 0xba10d980
[ 1.159272] add wake up source irq 75
[ 1.166674] IMX usb wakeup probe
[ 1.170101] the wakeup pdata is 0xba10d380
[ 1.174498] cpu regulator init ldo=0
[ 1.178494] i.MXC CPU frequency driver
[ 1.193907] ashmem: initialized
[ 1.206930] NTFS driver 2.1.30 [Flags: R/O].
[ 1.211784] fuse init (API version 7.16)
[ 1.216175] msgmni has been set to 1573
[ 1.220878] NET: Registered protocol family 38
[ 1.225640] cryptodev: driver loaded.
[ 1.229435] io scheduler noop registered
[ 1.233445] io scheduler deadline registered
[ 1.237941] io scheduler cfq registered (default)
[ 1.243863] mxc_sdc_fb mxc_sdc_fb.0: register mxc display driver hdmi
[ 1.250576] mxc_hdmi mxc_hdmi: Detected HDMI controller 0×13:0x1a:0xa0:0xc1
[ 1.257649] fbcvt: 1280×720@60: CVT Name – .921M9
[ 1.328272] imx-ipuv3 imx-ipuv3.0: IPU DMFC DP HIGH RESOLUTION: 1(0,1), 5B(2)
[ 1.339386] imx-sdma imx-sdma: loaded firmware 1.1
[ 1.348667] imx-sdma imx-sdma: initialized
[ 1.353209] Serial: IMX driver
[ 1.356501] imx-uart.0: ttymxc0 at MMIO 0×2020000 (irq = 58) is a IMX
[ 1.363098] console [ttymxc0] enabled, bootconsole disabled
[ 1.363098] console [ttymxc0] enabled, bootconsole disabled
[ 1.374893] imx-uart.2: ttymxc2 at MMIO 0x21ec000 (irq = 60) is a IMX
[ 1.382337] ion: failed to create debug files.
[ 1.390269] loop: module loaded
[ 1.393806] FEC Ethernet Driver
[ 1.399457] fec_enet_mii_bus: probed
[ 1.404138] ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
[ 1.410914] fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller
[ 1.417758] fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number1
[ 1.445550] fbcvt: 1280×720@60: CVT Name – .921M9
[ 1.458239] fsl-ehci fsl-ehci.0: irq 75, io base 0×02184000
[ 1.478225] fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00
[ 1.478840] hub 1-0:1.0: USB hub found
[ 1.478859] hub 1-0:1.0: 1 port detected
[ 1.479061] add wake up source irq 72
[ 1.479108] fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller
[ 1.479146] fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number2
[ 1.508239] fsl-ehci fsl-ehci.1: irq 72, io base 0×02184200
[ 1.568231] fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00
[ 1.568751] hub 2-0:1.0: USB hub found
[ 1.568769] hub 2-0:1.0: 1 port detected
[ 1.569014] Initializing USB Mass Storage driver…
[ 1.569191] usbcore: registered new interface driver usb-storage
[ 1.569200] USB Mass Storage support registered.
[ 1.569207] ARC USBOTG Device Controller driver (1 August 2005)
[ 1.571543] android_usb gadget: Mass Storage Function, version: 2009/09/11
[ 1.571554] android_usb gadget: Number of LUNs=1
[ 1.571563] lun0: LUN: removable file: (no medium)
[ 1.571976] Gadget Android: controller ‘fsl-usb2-udc’ not recognized
[ 1.571992] android_usb gadget: android_usb ready
[ 1.571998] Suspend udc for OTG auto detect
[ 1.572011] USB Host suspend begins
[ 1.572017] will suspend roothub and its children
[ 1.572034] ehci_fsl_bus_suspend begins, DR
[ 1.572055] ehci_fsl_bus_suspend ends, DR
[ 1.572069] host suspend ends
[ 1.572079] USB Gadget resume begins
[ 1.572085] fsl_udc_resume, Wait for wakeup thread finishes
[ 1.588243] dr_controller_run: udc enter low power mode
[ 1.588257] USB Gadget resume ends
[ 1.588264] fsl-usb2-udc: bind to driver android_usb
[ 1.588623] mousedev: PS/2 mouse device common for all mice
[ 1.589446] i2c /dev entries driver
[ 1.590367] imx2-wdt imx2-wdt.0: IMX2+ Watchdog Timer enabled. timeout=60s ()
[ 1.590500] Bluetooth: Virtual HCI driver ver 1.3
[ 1.590665] Bluetooth: HCI UART driver ver 2.2
[ 1.590674] Bluetooth: HCI H4 protocol initialized
[ 1.590682] Bluetooth: Generic Bluetooth USB driver ver 0.6
[ 1.590838] usbcore: registered new interface driver btusb
[ 1.591034] cpuidle: using governor ladder
[ 1.591042] cpuidle: using governor menu
[ 1.591155] sdhci: Secure Digital Host Controller Interface driver
[ 1.591163] sdhci: Copyright(c) Pierre Ossman
[ 1.591279] _regulator_get: sdhci-esdhc-imx.2 supply vmmc not found, using dr
[ 1.591529] mmc0: SDHCI controller on platform [sdhci-esdhc-imx.2] using ADMA
[ 1.592600] _regulator_get: sdhci-esdhc-imx.1 supply vmmc not found, using dr
[ 1.594892] mmc1: SDHCI controller on platform [sdhci-esdhc-imx.1] using ADMA
[ 1.594949] sdhci sdhci-esdhc-imx.0: no write-protect pin available!
[ 1.595985] _regulator_get: sdhci-esdhc-imx.0 supply vmmc not found, using dr
[ 1.598163] mmc2: SDHCI controller on platform [sdhci-esdhc-imx.0] using ADMA
[ 1.599163] VPU initialized
[ 1.600129] mxc_asrc registered
[ 1.613568] revserved_memory_account:viv_gpu registerd
[ 1.614174] Thermal calibration data is 0x59952b5f
[ 1.628463] Anatop Thermal registered as thermal_zone0
[ 1.628628] anatop_thermal_probe: default cooling device is cpufreq!
[ 1.651107] usbcore: registered new interface driver usbhid
[ 1.651115] usbhid: USB HID core driver
[ 1.653535] logger: created 256K log ‘log_main’
[ 1.655731] logger: created 256K log ‘log_events’
[ 1.655910] logger: created 256K log ‘log_radio’
[ 1.658127] logger: created 256K log ‘log_system’
[ 1.661501] zram: num_devices not specified. Using default: 1
[ 1.661510] zram: Creating 1 devices …
[ 1.662414] usbcore: registered new interface driver snd-usb-audio
[ 1.662976] mxc_hdmi_soc mxc_hdmi_soc.0: MXC HDMI Audio
[ 1.663145] mxc_spdif mxc_spdif.0: MXC SPDIF Audio
[ 1.665520] _regulator_get: 1-000a supply VDDD not found, using dummy regular
[ 1.665836] sgtl5000 1-000a: sgtl5000 revision 17
[ 1.666016] print_constraints: 1-000a: 850 1600 mV at 1200 mV normal
[ 1.732249] asoc: sgtl5000 imx-ssi.1 mapping ok
[ 1.745029] asoc: mxc-spdif imx-spdif-dai.0 mapping ok
[ 1.758656] asoc: mxc-hdmi-soc imx-hdmi-soc-dai.0 mapping ok
[ 1.763333] ALSA device list:
[ 1.763341] #0: sgtl5000-audio
[ 1.763347] #1: imx-spdif
[ 1.763352] #2: imx-hdmi-soc
[ 1.763489] GACT probability NOT on
[ 1.763502] Mirror/redirect action on
[ 1.763510] u32 classifier
[ 1.763514] Actions configured
[ 1.763522] Netfilter messages via NETLINK v0.30.
[ 1.763571] nf_conntrack version 0.5.0 (12588 buckets, 50352 max)
[ 1.764463] ctnetlink v0.93: registering with nfnetlink.
[ 1.764503] NF_TPROXY: Transparent proxy support initialized, version 4.1.0
[ 1.764511] NF_TPROXY: Copyright (c) 2006-2007 BalaBit IT Ltd.
[ 1.765241] xt_time: kernel timezone is -0000
[ 1.765954] IPv4 over IPv4 tunneling driver
[ 1.767126] GRE over IPv4 demultiplexor driver
[ 1.767807] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 1.767945] arp_tables: (C) 2002 David S. Miller
[ 1.767996] TCP cubic registered
[ 1.769282] NET: Registered protocol family 10
[ 1.773276] Mobile IPv6
[ 1.773312] ip6_tables: (C) 2000-2006 Netfilter Core Team
[ 1.773536] IPv6 over IPv4 tunneling driver
[ 1.778363] NET: Registered protocol family 17
[ 1.778408] NET: Registered protocol family 15
[ 1.796703] Bluetooth: RFCOMM TTY layer initialized
[ 1.796714] Bluetooth: RFCOMM socket layer initialized
[ 1.796722] Bluetooth: RFCOMM ver 1.11
[ 1.796730] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 1.796737] Bluetooth: BNEP filters: protocol multicast
[ 1.796746] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[ 1.796882] mmc0: new high speed SDHC card at address 59b4
[ 1.797072] L2TP core driver, V2.0
[ 1.797080] L2TP IP encapsulation support (L2TPv3)
[ 1.797510] mmcblk0: mmc0:59b4 SD 14.7 GiB
[ 1.797717] L2TP netlink interface
[ 1.797743] L2TP ethernet pseudowire support (L2TPv3)
[ 1.797751] lib80211: common routines for IEEE802.11 drivers
[ 1.797760] lib80211_crypt: registered algorithm ‘NULL’
[ 1.797767] VFP support v0.3: implementor 41 architecture 3 part 30 variant 4
[ 1.882447] ThumbEE CPU extension supported.
[ 1.887281] Bus freq driver module loaded
[ 1.887291] Bus freq driver Enabled
[ 1.887358] mxc_dvfs_core_probe
[ 1.887565] DVFS driver module loaded
[ 1.892653] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[ 1.913882] mmcblk0: p1 p2 p3 < p5 p6 p7 p8 p9 > p4
[ 2.188839] Freeing init memory: 192K
[ 4.311415] init: cannot find ‘/system/etc/install-recovery.sh’, disabling ”
[ 4.333127] android_usb: already disabled
[ 4.337524] mtp_bind_config
[ 4.340602] adb_bind_config
[ 4.345090] adb_open
root@android:/ #

and a Yocto based image with XFCE:

U-Boot 2013.04-rc2-00847-gdebad5d (Apr 11 2013 – 13:47:03)CPU: Freescale i.MX6DL rev1.1 at 792 MHz
Reset cause: POR
Board: Wandboard
DRAM: 1 GiB
MMC: FSL_SDHC: 0
*** Warning – bad CRC, using default environmentIn: serial
Out: serial
Err: serial
Net: FEC [PRIME]
Warning: FEC using MAC address from net deviceHit any key to stop autoboot: 0
mmc0 is current device
reading boot.scr
** Unable to read file boot.scr **
reading uImage
3938036 bytes read in 183 ms (20.5 MiB/s)
Booting from mmc …
reading imx6dl-wandboard.dtb
** Unable to read file imx6dl-wandboard.dtb **
## Booting kernel from Legacy Image at 12000000 …
Image Name: Linux-3.0.35-wandboard+yocto+g64
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3937972 Bytes = 3.8 MiB
Load Address: 10008000
Entry Point: 10008000
Verifying Checksum … OK
Loading Kernel Image … OK
OK

Starting kernel …

Linux version 3.0.35-wandboard+yocto+g64fee2d ([email protected]
CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: Wandboard
Memory policy: ECC disabled, Data cache writealloc
CPU identified as i.MX6DL/SOLO, silicon rev 1.1
PERCPU: Embedded 7 pages/cpu @8135d000 s5440 r8192 d15040 u32768
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 215040
Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait rw
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: 80MB 768MB = 848MB total
Memory: 847672k/847672k available, 200904k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 – 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 – 0xfffe0000 ( 896 kB)
DMA : 0xfbe00000 – 0xffe00000 ( 64 MB)
vmalloc : 0xc0800000 – 0xf2000000 ( 792 MB)
lowmem : 0×80000000 – 0xc0000000 (1024 MB)
pkmap : 0x7fe00000 – 0×80000000 ( 2 MB)
modules : 0x7f000000 – 0x7fe00000 ( 14 MB)
.init : 0×80008000 – 0×80038000 ( 192 kB)
.text : 0×80038000 – 0x80aaedc4 (10716 kB)
.data : 0x80ab0000 – 0x80b05860 ( 343 kB)
.bss : 0x80b05884 – 0x80b559a0 ( 321 kB)
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
Preemptible hierarchical RCU implementation.
NR_IRQS:496
MXC GPIO hardware
sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms
Set periph_clk’s parent to pll2_pfd_400M!
arm_max_freq=2
MXC_Early serial console at MMIO 0×2020000 (options ’115200′)
bootconsole [ttymxc0] enabled
Console: colour dummy device 80×30
Calibrating delay loop… 1581.05 BogoMIPS (lpj=7905280)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
CPU1: Booted secondary processor
Brought up 2 CPUs
SMP: Total of 2 processors activated (3162.11 BogoMIPS).
devtmpfs: initialized
print_constraints: dummy:
NET: Registered protocol family 16
print_constraints: vddpu: 725 1300 mV at 1150 mV fast normal
print_constraints: vddcore: 725 1300 mV at 1150 mV fast normal
print_constraints: vddsoc: 725 1300 mV at 1200 mV fast normal
print_constraints: vdd2p5: 2000 2775 mV at 2400 mV fast normal
print_constraints: vdd1p1: 800 1400 mV at 1100 mV fast normal
print_constraints: vdd3p0: 2625 3400 mV at 3000 mV fast normal
hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
hw-breakpoint: 1 breakpoint(s) reserved for watchpoint single-step.
hw-breakpoint: maximum watchpoint size is 4 bytes.
L310 cache controller enabled
l2x0: 16 ways, CACHE_ID 0x410000c8, AUX_CTRL 0×02050000, Cache size: 524288 B
bio: create slab at 0
mxs-dma mxs-dma-apbh: initialized
print_constraints: VDDA: 2500 mV
print_constraints: VDDIO: 3300 mV
vgaarb: loaded
SCSI subsystem initialized
spi_imx imx6q-ecspi.0: probed
spi_imx imx6q-ecspi.1: probed
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Freescale USB OTG Driver loaded, $Revision: 1.55 $
imx-ipuv3 imx-ipuv3.0: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
MIPI CSI2 driver module loaded
Advanced Linux Sound Architecture Driver Version 1.0.24.
Bluetooth: Core ver 2.16
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: L2CAP socket layer initialized
Bluetooth: SCO socket layer initialized
cfg80211: Calling CRDA to update world regulatory domain
i2c-core: driver [max17135] using legacy suspend method
i2c-core: driver [max17135] using legacy resume method
Switching to clocksource mxc_timer1
NET: Registered protocol family 2
IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
TCP bind hash table entries: 65536 (order: 7, 786432 bytes)
TCP: Hash tables configured (established 131072 bind 65536)
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
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
Static Power Management for Freescale i.MX6
wait mode is disabled for i.MX6
cpaddr = c0820000 suspend_iram_base=c0890000
PM driver module loaded
IMX PCIe port: link down with power supply 0!
IMX usb wakeup probe
IMX usb wakeup probe
cpu regulator init ldo=0
i.MXC CPU frequency driver
JFFS2 version 2.2. (NAND) �© 2001-2006 Red Hat, Inc.
msgmni has been set to 1655
alg: No test for stdrng (krng)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
MIPI DSI driver module loaded
mxc_sdc_fb mxc_sdc_fb.0: register mxc display driver hdmi
mxc_hdmi mxc_hdmi: Detected HDMI controller 0×13:0x1a:0xa0:0xc1
imx-ipuv3 imx-ipuv3.0: IPU DMFC DP HIGH RESOLUTION: 1(0,1), 5B(2~5), 5F(6,7)
Console: switching to colour frame buffer device 240×67
imx-sdma imx-sdma: loaded firmware 1.1
imx-sdma imx-sdma: initialized
Serial: IMX driver
imx-uart.0: ttymxc0 at MMIO 0×2020000 (irq = 58) is a IMX
console [ttymxc0] enabled, bootconsole disabled
console [ttymxc0] enabled, bootconsole disabled
imx-uart.2: ttymxc2 at MMIO 0x21ec000 (irq = 60) is a IMX
loop: module loaded
GPMI NAND driver registered. (IMX)
vcan: Virtual CAN interface driver
CAN device driver interface
FEC Ethernet Driver
fec_enet_mii_bus: probed
ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
add wake up source irq 72
fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number 1
fsl-ehci fsl-ehci.1: irq 72, io base 0×02184200
fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
add wake up source irq 75
fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 2
fsl-ehci fsl-ehci.0: irq 75, io base 0×02184000
fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
Initializing USB Mass Storage driver…
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
ARC USBOTG Device Controller driver (1 August 2005)
mousedev: PS/2 mouse device common for all mice
i2c-core: driver [isl29023] using legacy suspend method
i2c-core: driver [isl29023] using legacy resume method
i2c /dev entries driver
Linux video capture interface: v2.00
mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video16
mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video17
i2c-core: driver [mag3110] using legacy suspend method
i2c-core: driver [mag3110] using legacy resume method
Bluetooth: Virtual HCI driver ver 1.3
Bluetooth: HCI UART driver ver 2.2
Bluetooth: HCIATH3K protocol initialized
Bluetooth: Generic Bluetooth USB driver ver 0.6
usbcore: registered new interface driver btusb
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
mmc0: no vmmc regulator found
mmc0: SDHCI controller on platform [sdhci-esdhc-imx.2] using ADMA
mmc1: no vmmc regulator found
mmc1: SDHCI controller on platform [sdhci-esdhc-imx.1] using ADMA
sdhci sdhci-esdhc-imx.0: no write-protect pin available!
mmc2: no vmmc regulator found
mmc2: SDHCI controller on platform [sdhci-esdhc-imx.0] using ADMA
VPU initialized
mxc_asrc registered
Thermal calibration data is 0x59952b5f
Anatop Thermal registered as thermal_zone0
anatop_thermal_probe: default cooling device is cpufreq!
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
usbcore: registered new interface driver snd-usb-audio
mxc_hdmi_soc mxc_hdmi_soc.0: MXC HDMI Audio
mxc_spdif mxc_spdif.0: MXC SPDIF Audio
sgtl5000 1-000a: Failed to get supply ‘VDDD’: -19
print_constraints: 1-000a: 850 1600 mV at 1200 mV normal
sgtl5000 1-000a: sgtl5000 revision 17
usb 1-1: new full speed USB device number 2 using fsl-ehci
mmc0: new high speed SDHC card at address 1234
mmcblk0: mmc0:1234 SA04G 3.63 GiB
mmcblk0: p1 p2
asoc: sgtl5000 imx-ssi.1 mapping ok
asoc: mxc-spdif imx-spdif-dai.0 mapping ok
asoc: mxc-hdmi-soc imx-hdmi-soc-dai.0 mapping ok
ALSA device list:
#0: sgtl5000-audio
#1: imx-spdif
#2: imx-hdmi-soc
NET: Registered protocol family 26
TCP cubic registered
NET: Registered protocol family 17
can: controller area network core (rev 20090105 abi 8)
NET: Registered protocol family 29
can: raw protocol (rev 20090105)
can: broadcast manager protocol (rev 20090105 t)
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Bluetooth: BNEP filters: protocol multicast
Bluetooth: HIDP (Human Interface Emulation) ver 1.2
lib80211: common routines for IEEE802.11 drivers
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
Bus freq driver module loaded
Bus freq driver Enabled
mxc_dvfs_core_probe
DVFS driver module loaded
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
EXT3-fs: barriers not enabled
input: 2.4G Wireless Receiver as /devices/platform/fsl-ehci.1/usb1/1-1/1-1:1.0
generic-usb 0003:1915:AF11.0001: input,hidraw0: USB HID v1.11 Keyboard [2.4G W0
mmc1: queuing unknown CIS tuple 0x80 (50 bytes)
input: 2.4G Wireless Receiver as /devices/platform/fsl-ehci.1/usb1/1-1/1-1:1.1
generic-usb 0003:1915:AF11.0002: input,hidraw1: USB HID v1.11 Mouse [2.4G Wire1
mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
mmc1: queuing unknown CIS tuple 0x80 (4 bytes)
generic-usb 0003:1915:AF11.0003: hidraw2: USB HID v1.11 Device [2.4G Wireless 2
mmc1: queuing unknown CIS tuple 0x02 (1 bytes)
mmc1: new SDIO card at address 0001
kjournald starting. Commit interval 5 seconds
EXT3-fs (mmcblk0p2): using internal journal
EXT3-fs (mmcblk0p2): recovery complete
EXT3-fs (mmcblk0p2): mounted filesystem with writeback data mode
VFS: Mounted root (ext3 filesystem) on device 179:2.
devtmpfs: mounted
Freeing init memory: 192K
INIT: version 2.88 booting
Starting udev
udevd[82]: starting version 182
Starting Bootlog daemon: bootlogd.
ALSA: Restoring mixer settings…
No state is present for card sgtl5000audio
Found hardware: “sgtl5000-audio” “” “” “” “”
Hardware is initialized using a generic method
Configuring network interfaces… No state is present for card sgtl5000audio
No state is present for card imxspdif
Found hardware: “imx-spdif” “” “” “” “”
Hardware is initialized using a generic method
No state is present for card imxspdif
No state is present for card imxhdmisoc
Found hardware: “imx-hdmi-soc” “” “” “” “”
Hardware is initialized using a generic method
No state is present for card imxhdmisoc
eth0: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=1:01, irq=-1)
udhcpc (v1.20.2) started
Sending discover…
PHY: 1:01 – Link is Up – 100/Full
Sending discover…
Sending select for 192.168.0.109…
Lease of 192.168.0.109 obtained, lease time 7200
/etc/udhcpc.d/50default: Adding DNS 192.168.0.1
done.
Starting rpcbind daemon…rpcbind: cannot create socket for udp6
rpcbind: cannot create socket for tcp6
done.
hwclock: can’t open ‘/dev/misc/rtc’: No such file or directory
Fri Apr 12 13:14:00 UTC 2013
hwclock: can’t open ‘/dev/misc/rtc’: No such file or directory
INIT: Entering runlevel: 5
Starting Xserver
Starting system message bus: dbus.
Starting advanced power management daemon: apmd.
apmd[460]: apmd 3.2.1 interfacing with apm driver 1.13 and APM BIOS 1.2
hwclock: can’t open ‘/dev/misc/rtc’: No such file or directory
Starting syslogd/klogd: done
* Starting Avahi mDNS/DNS-SD Daemon: avahi-daemon
…fail!
Starting Telephony daemon
Starting Linux NFC daemon
imx-audio: setting default mixer settings.
amixer: Unable to find simple control ‘Playback’,0

Running local boot scripts (/etc/rc.local).
Stopping Bootlog daemon: bootlogd.

Poky 8.0 (Yocto Project 1.3 Reference Distro) 1.3+snapshot-20130412 wandboard-d0

wandboard-dual login:

Images, BSPs, and Source Code for Wandboard Solo/Dual/Quad

Software support, although not 100% perfect, appears to be now much better than before, both in terms of stability and features, and the number of available images.

As of writing, Wandboard provide 2 Android images on their download page:

  • Android 4.2.2 Preview – Android 4.2 will become the official image, but this currently very much work in progress with no Bluetooth, limited UVC camera support, and probably quite a few bugs. The image is available for both Wandboard Dual and Quad. Source is not available yet, but soon will be.
  • Android 4.1.2 – Current somewhat stable image for Wandboard Dual and Solo. Source is available for download as a tarball, and via their git repo.

Linux kernel source is available as a tarball or via Wandbaord’s git repository. Several Linux based distributions  and BSP are now available:

  • Ubuntu 11.10 – For Wandboard Solo/Dual and Quad with GPU hardware acceleration, and VPU video decoding.
  • Freescale Yocto BSP – Wandboard Solo and Dual are officially part of Freescale i.MX6 Yocto BSP. You can build it yourself, or download some prebuilt image such as the one with xfce desktop environment
  • Buildroot – Buildroot for Wandboard Dual can be built. Most features seem included, but gstreamer appears to be missing.
  • Ubuntu 13.04 / Debian 7 – There are instructions to retrieve minimal rootfs for those 2 distributions on Wandboard Wiki, but those probably do not support GPU / VPU.
  • Community Squeeze OS – You may have never heard of that one, I hadn’t. CSOS, based on Fedora 18, is used by the “Community Squeeze Player project”, a network music player, similar to Logitech Squeezebox The image is only available for Wandboard Dual for now. Visit slimdevices forums for details.

Wandboard is also part of mainline U-Boot, so you can just get the source from DENX, build it for Wandboard, and put it on your board.  There’s also some work to get Wandboard into Linux mainline, but I’m not really sure about the status.

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

Emcraft Systems STM32F4 SoM and Starter Kit Run uCLinux From On-Chip Flash

June 3rd, 2013 3 comments

Emcraft has recently announced a new system-on-module based on STMicro STM32F437 Cortex M4 micro-controller, as well as a starter kit based on the module that can run uCLinux directly from STM32F437′s 2MB on-chip flash, allowing a faster boot time, and AFAIK, this is the only Linux-ready STM32 platform available on the market.

STM32F437 SoM

Here are the specifications of Emcraft Systems SOM-STM32F4:

  • MCU – STMicro STM32F437 Cortex M4 @ 168 MHz with 256KB RAM and 2MB flash
  • External Memory – 16MB PSRAM
  • External Storage – 16MB NOR Flash
  • Ethernet PHY (Optional)
  • Connectors – 2x SoM Connectors with access to I/Os: USB, Ethernet, I2C, SPI, UART, LCD I/F, ADC, DAC, GPIO…
  • Dimensions – 30 mm x 46 mm
STM32F4-SOM-Block_Diagram

Emcraft SOM-STM32F4 Block Diagram

To speed-up development and for evaluation, the company also provides a starter kit composed of the STM32F4 SoM, and a baseboard (SOM-BSB-EXT) with the following main features:

  • USB interface using USB-UART bridge connected to UART of the STM32F4
  • 10/100 Ethernet interface and RJ-45 connector
  • USB OTG Interface and mini-USB connector
  • Standard 20-pin ARM JTAG interface
  • User LEDs and push-button
  • Unused STM32F4 signals available on a breadboard area.
  • Dimensions – 100 x 70 mm

A mini-USB cable is also provided for power and serial console access.

Emcraft_STM32F4_SOM_starter_kit

Emcraft provides a uClinux BSP for STMicro STM32F2/F4 MCUs, with full source code, and no royalty for both U-Boot and uClinux. All STM32F4 systems-on-module come pre-loaded with uClinux and U-Boot.

As I mentioned in the introduction, the kernel fits into the on-chip flash which allows very fast boot time. For instance, a Linux configuration with Ethernet and full TCP/IP stack enabled comes up in just 1 second, from power-on to a point where TCP/IP is fully configured and shell commands can run, that compares to about 2 seconds on Freescale K70. Boot times close to 500ms are also possible without the networking stack. You can watch the video below to see this fast boot, as well as networking capabilities (ping, ntp, telnet, http server, and nfs mount).

The company also explains that overall performance in better as the entire kernel runs from the fast zero wait-state on-chip Flash, including core kernel, TCP/IP stack, device drivers, etc…

Emcraft System STM32F4-SoM is available for as low as $41 per unit (no Ethernet PHY configuration) for 1K orders, and If you want to give Linux a try on STM32, you can get the starter kit for $159. Further information, including software and hardware documentation, is available on Emcraft Systems’ STM32F4 page.

Disclosure: This post has been sponsored by Emcraft Systems.

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

VIA Unveils VAB-600 Pico-ITX Board Powered by WM8950 Processor

May 2nd, 2013 1 comment

VIA Technologies has recently announced the VAB-600 Pico-ITX embedded board featuring WonderMedia WM8950 ARM Cortex A9 SoC clocked at 800MHz. VIA targets in-vehicle infotainment as well as mobile and healthcare applications for the board despite an operating temperature range between 0°C and 60°C.

VIA VAB-600 Pico-ITX Board (Click to Enlarge)

VIA VAB-600 Pico-ITX Board (Click to Enlarge)

Here are the key features of this embedded board:

  • SoC – Wondermedia WM8950 Cortex-A9 @ 800MHz  + Mali-400 GPU
  • System Memory – 1GB DDR3 SDRAM
  • Storage – 4GB eMMC Flash memory + 512KB SPI Flash for Boot Loader + microSD slot
  • Video Output – Mini HDMI, on-board DVO (Digital Video Output) for TTL or LVDS display
  • Video Codecs – MPEG2 MP@HL, MPEG4, H.264 BP/MP/[email protected], VC-1 SP/MP/AP, VP8 and JPEG/MJPEG.
  • USB -  2x mini USB 2.0 host ports
  • Connectivity – 10/100M Ethernet (VT6113), 3G (SIM card slot) and optional WiFi support (VIA VNT9271B6050 WiFi module shared with one USB port)
  • On-board Connectors:
    • 2x COM connectors
    • 1x RTC battery pin header
    • 1x USB 2.0 connector
    • 1x SPI connector for programming SPI Flash ROM
    • 1x Keypad connector
    • 1x CIR connector
    • 1x Front audio pin header for Line-in, Line-out and MIC-in
    • 1x Front panel pin header for system power-on, reset and power LED
    • 4-wire resistive touch screen FPC connector (through VT1603A)
    • 1x pin header for 1 I2C pair and 8 GPIO
    • Optional battery charger connector with Smart Battery function
  • Operating Temperature Range – 0°C to 60°C
  • Operating Humidity – 0% ~ 95% (relative humidity ; non-condensing)
  • Dimensions – 10cm x 7.2cm Pico-ITX form factor

VIA_VAB-600_Block_Diagram

The company provides board support packages (BSPs) for Android 4.0 and/or Embedded Linux (Kernel 3.0.8). Android 4.0 EVK is available for download here, but there’s nothing for Linux yet. Before downloading the file you’ll have to agree to a “Non-Disclosure and Recipient Acknowledgment for Short Term Sample Products Evaluation”, which I find a bit silly for a publicly available file…

VIA also offers a startker kit including VIA VAB-600 Pico-ITX board, VAB-600-A I/O card, VAB-600-C TTL Converter card, a 7” touch screen TTL panel, cables and a 18W AC adapter.

VIA VAB-600 Starter Kit (Click to Enlarge)

VIA VAB-600 Starter Kit (Click to Enlarge)

Sample units of the VIA VAB-600 Pico-ITX board are available now at an undisclosed price. Further information, including the board user’s manual and product brief, is available on VIA’s VAB-600 page.

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

Yocto Project 1.4 “Dylan” Release

April 27th, 2013 4 comments

The Yocto Project Release 1.4 has just been announced. This release codenamed “Dylan” and based on Poky 9.0.0 is the sixth release of the project. The Yocto Project is a framework that creates embedded Linux distributions, and has been getting more and more traction with silicon vendors such as Intel, Freescale and Texas Instruments.

Yocto Project 1.4 bring the following new features and updates:

  • Major performance improvements – The overall build time has been reduced by more than 10%. Kernel build time is reduced by about 25%. With rm_work enabled, 40% less storage will be used for the tmp directory.
  • Smart, a replacement for zypper
  • Support for read-only rootfs
  • Wayland support, an X replacement.
  • Systemd support, a replacement for the system V init daemon.
  • Usability improvements to HOB, bitbake, yocto-bsp and other tools, including UI improvements, new features and bug fixes.
  • Documentation improvement/update and a new kernel development manual and profiling manual.
  • A complete rewrite of the yocto-autobuilder to allow for easier configuration, faster build times, and easier to maintain code
  • Support for postinstall scripts to run at roofs creation time, which will reduce image boot time.
  • Support for both the Linux 3.8 kernel and LTSI (3.4) kernel
  • Over 400 bugs fixed

You can download The Yocto Project 1.4 to give it a try. Alternatively, you can also retrieve the code via git:

git clone -b dylan git://git.yoctoproject.org/poky.git

For further details, you can  visit Yocto Project 1.4 Features page.

The next version (The Yocto Project 1.5) will be released in October 2013, as the project follows a 6-month release schedule. Yocto Project 1.5 Features page is still work in progress, but the next release will focus on improving developer experience, validation automation, and further performance improvement. A list of bugs and enhancements is also available.

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

SILICA Pengwyn Low Cost Open Industrial Development Platform Powered by Sitara AM3354 Processor

February 20th, 2013 No comments

At the end of January, SILICA, an Avnet subsidiary, announced the Pengwyn, a single board computer based on Texas Instruments Sitara AM3354 Cortex A8 processor. The board targets industrial customers, and the company promotes it as “an open platform to develop applications under Linux or Windows Embedded operating systems”.

Pengwyn Board

Here are the specifications of the Pengwyn board:

  • Texas Instruments Sitara AM 3354 ARM Cortex-A8 MCU @ 720 MHz
  • System Memory – 256 MB DDR3
  • Storage – 1 GB Nand Flash, 32 MB SPI Flash Memory, and microSD slot (if not used with Wi-Fi/Bt modules)
  • Connectivity and expandability
    • USB Host and Device Ports
    • RJ-45 Ethernet Port
    • Connector for optional 1 GB Ethernet Port
    • 2x connectors for generic expansions modules
    • SDIO/MMC Port (can be used for optional WI-FI/bluetooth modules)
    • DVI Display Port
Pengwyn Board Block Diagram

Pengwyn Board Block Diagram

Silica will provide Linux (Arago Project, an OpenEmbedded based Distribution) and Windows Embedded Compact 7 BSP and images, as well as a TI Liunx Ez SDK in a Virtualbox VM. BoM and Schematics are also available for download in PDF format, but I assume they’ll also release the gerber files, and proper schematics (i.e. in original format), since they claim the board can be used as a reference design, and be freely copied.

The company will also manufacture “Plug n Play” expansion boards:

  • LSR Wifi5 WiFi Module – Wifi, Bt 2.1+EDR and Bt 4.0 (BLE)
  • 4.3″ TFT resistive display
  • Gigabit Ethernet expansion

Those boards are said to be plug n play because they can just be plugged into the board, and kernel modules will be loaded at startup, so there’s no setup needed.

Compared to the Beaglebone, the company explains Pengwyn targets industrial applications instead of the development community, there’s no issue with third party expansion boards conflicting with each others, Pengwyn uses cheaper DDR3 (vs DDR2 for Beaglebone), and power supply design is simpler since there is no need to handle deep sleep mode in industrial applications.

Pengwyn and modules will be available at SILICA and Avnet Express in Q1 2013. The board will be priced at 69 Euros. You can find more information on SILICA Pengwyn page.

Thanks to Guillaume!

[Update: On a separate, but related note, AVNET is now selling Texas Instruments AM335X development kits with a 25% discount]

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

U-boot, Linux Kernel, and Android Patches for Freescale i.MX6 HDMI TV Dongles

February 6th, 2013 32 comments

We can now get some quad core Android mini PCs (e.g. Hi802, GK802) featuring Freescale i.MX6Q processor, Freescale has released full documentation and source code its development platforms, Hi802 / GK802 HDMI TV dongles are easily hackable, and there’s even an Ubuntu image for the devices. So it looks pretty good ,right? Well almost.. there are some patches and config for GK802 that have not been released by Richtechie, so we can’t modify the  bootloader and Linux kernel. But this may change, as ARMTvTech forum user hste noticed some Freescale i.MX6 HDMI dongle patches om IMX Community website. Even though I’m not sure those are fully compatible with Hi802 / GK802, this could be a starting point. Today, I’ll provide the instructions to build u-boot, the linux kernel and Android ICS with those patches in a machine running Linux 12.04 64-bit.

Patch Sets Descriptions

There are two set of patches that can be applied to R13.4-GA release:

  • hdmidongle_REVB_R13.4_patch-20121115.tgz -  Adds HDMI dongle support in U-boot, the Linux kernel and customize Android 4.0.4 for mini PCs.
  • hdmidongle_REVB_R13.4_patch-20130201.tgz -   Adds support for ldo bypass , uboot fastboot, ntfs, Bluetooth A2DP, fakes an alway full battery, removed the screen locker, and check the video mode. There are also patches for bug fixes for WifiDirect, Wi-Fi performance, uboot mmu, and system stability

A script (revb_dongle_patch_install.sh) is provided to apply 20121115 patches.

Getting Freescale i.MX6 U-boot, Linux kernel and Android source code (R13.4-GA)

Since those patches need to be applied against R13.4-GA, so we need to get the code first. The instructions are explained in section 5 “Get Android Source Code (Android/Kernel/U-Boot)” of R13.4-GA.01_Android_User_Guide.pdf.

First download IMX6_R13.4_ANDROID_SOURCE_CODE (171 MB). After download, you should get a file named imx-android-r13.4-ga.01.tar.gz that includes the documentation, patches, and Mfgtool for Android 4.0.4.

Let’s extract it, extract the (default) patches:

mkdir -p ~/edev/Freescale
tar xzvf imx-android-r13.4-ga.01.tar.gz
cd imx-android-r13.4-ga/code
tar xzvf r13.4-ga.tar.gz

If you don’t have it the repo tool yet download it, and add it to your path:

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod 755 ~/bin/repo
export PATH=$PATH:~/bin

Now let’s create a working directory (myandroid) and get Android 4.0.4 r1.1 AOSP source code:

cd ~/edev/Freescale/imx-android-r13.4-ga
mkdir myandroid
cd myandroid

repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.4_r1.1
cp ../code/r13.4-ga/default.xml .repo/manifests/default.xml
repo sync

This will take a little while, after or while it’s progressing you can (also) get imx kernel and U-boot source code:

git clone git://git.freescale.com/imx/linux-2.6-imx.git kernel_imx
cd kernel_imx
git checkout imx-android-r13.4-ga
cd ../bootable/
mkdir bootloader
cd bootloader
git clone git://git.freescale.com/imx/uboot-imx.git uboot-imx
cd uboot-imx
git checkout imx-android-r13.4-ga
cd ../..

When checking out imx-android-r13.4 branch for the kernel and U-boot, you’ll get messages like:
HEAD is now at c9dfae3… ENGR00224938 HDMI audio: clear HDMI dma done bit before start
HEAD is now at 097643f… ENGR00224313:i.MX6 general:enable CONFIG_CMD_IMXOTP to fix the build error

It just shows the latest commit, so there’s no issue here.

After repo sync is complete, you’ll also need to get some more code:

cd external
git clone git://android.git.linaro.org/platform/external/alsa-lib.git
git clone git://android.git.linaro.org/platform/external/alsa-utils.git
cd ../hardware
git clone git://android.git.linaro.org/platform/hardware/alsa_sound.git
cd ..

Now patch all those with R13.4-GA patches:

source ../code/r13.4-ga/and_patch.sh
c_patch ../code/r13.4-ga imx_r13.4-ga

After a lot of debug output (and warnings), you should see the following message to indicate patching was successful:
**************************************************************
Success: Now you can build the Android code for FSL i.MX platform
**************************************************************

We’re done for this part we now have all source for R13.4-GA release.

Patching R13.4-GA with HDMI dongle patches

We can now patch the code to add HDMI dongle support. I’ll assume you’ve downloaded all 3 files describe at the top of this post to ~/edev/Freescale/imx-android-r13.4-ga directory:

chmod a+x revb_dongle_patch_install.sh
tar xzvf hdmidongle_REVB_R13.4_patch-20121115.tgz
cd hdmidongle_REVB_R13.4_patch
../revb_dongle_patch_install.sh ~/edev/Freescale/imx-android-r13.4-ga/myandroid
cd ..
tar xzvf hdmidongle_REVB_R13.4_patch-20130131.tgz
cd ../myandroid
git apply  ../hdmidongle_REVB_R13.4_patch-20130131/0001-uboot_fastboot.patch --verbose
git apply  ../hdmidongle_REVB_R13.4_patch-20130131/0002-LDOBYPASS.patch --verbose
git apply  ../hdmidongle_REVB_R13.4_patch-20130131/0003-WifiDirect.patch --verbose
git apply  ../hdmidongle_REVB_R13.4_patch-20130131/0004-ntfs_support.patch --verbose
git apply  ../hdmidongle_REVB_R13.4_patch-20130131/0005-BT_enable.patch --verbose
git apply  ../hdmidongle_REVB_R13.4_patch-20130131/0006-1G_boot_stable.patch --verbose
git apply  ../hdmidongle_REVB_R13.4_patch-20130131/0007-battery_always_full.patch --verbose
git apply  ../hdmidongle_REVB_R13.4_patch-20130131/0009-uboot-enable-mmu-fix.patch --verbose
git apply  ../hdmidongle_REVB_R13.4_patch-20130131/0010-boot_disable_screenlocker.patch --verbose
git apply  ../hdmidongle_REVB_R13.4_patch-20130131/0011-wm8326-DC_CONTROL_RATE.patch --verbose
git apply  ../hdmidongle_REVB_R13.4_patch-20130131/0012-Added-default-video-mode-check-make-sur.patch --verbose
rm -rf kernel_imx/drivers/net/wireless/rtl8192ce
tar xzvf ../hdmidongle_REVB_R13.4_patch-20130131/rtl8192ce_v4.0.0_6239.20121226_TPIOT1.tgz
tar xzvf ../hdmidongle_REVB_R13.4_patch-20130131/ntfs-3g.tar.gz -C external

For the second set of patches, you’ll noticed patches 0001 to 0012 have been applied, except 0008 since it’s not needed anymore.

One more step completed. Have a tea break, or drink a beer, since there’s still a bit more work to do.

Building U-Boot, the kernel and Android for Freescale i.MX6 HDMI TV Dongles

I’m probably missing some per-requisites in this part, and most required dependencies were already installed in my PC. You may want to have a look at the post “How to compile Android on Ubuntu 12.04“, and in particular the part about install Sun Java 6 JDK, where you need to download Sun Java 6 JDK, install it, and run update-alternatives:

chmod +x jdk-6u38-linux-x64.bin
sudo ./jdk-6u38-linux-x64.bin
sudo mv jdk1.6.0_38 /usr/lib/jvm/
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_38/bin/java 1
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_38/bin/javac 1
sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.6.0_38/bin/javaws 1
sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config javaws

Now we should be ready to build:

source build/envsetup.sh
lunch

Build Freescale imx6 hdmidongle lunch menu

We can select either hdmidongle_6dq-eng or hdmidongle_6dq-user for the build. The “eng(ineering)” build is a debug build, and the “user” build is a release version. I’ve gone with hdmidongle_6dq-user (15) to try it out.

In theory, we now just need to run make:

make -j8

However “in theory, there is no difference between theory and practice; In practice, there is”, and I’ve come across a few issues during the build, and if you build in Ubuntu 12.04 64-bit, you may want to perform the following steps before running make.

Some directories are duplicates in the source tree, and the build ends with error such as:

build/core/base_rules.mk:166: *** external/mtd-utils/mtd-utils/mkfs.ubifs: MODULE.HOST.EXECUTABLES.mkfs.ubifs already defined by external/mtd-utils/mkfs.ubifs.  Stop

I fixed it by deleting one of the duplicate in the source:

rm -rf bootable/bootloader/uboot-imx/mtd-utils
rm -rf external/mtd-utils/mtd-utils/
rm -rf bootable/bootloader/uboot-imx/wpa_supplicant_8_rtl/
rm -rf external/wpa_supplicant_8_rtl/wpa_supplicant_8_rtl/
rm bootable/bootloader/uboot-imx/realtek/wlan/ -rf
rm -rf  hardware/realtek/realtek/

I found some dependencies missing, so you may have to install:

sudo apt-get install uuid-dev liblzo2-dev lib32ncurses5-dev uuid:i386 liblzo2-2:i386

But the build still failed, so here’s an ugly hack:

pushd /usr/lib
sudo ln -s /lib/i386-linux-gnu/libuuid.so.1 libuuid.so
sudo ln -s /usr/lib/i386-linux-gnu/liblzo2.so.2 liblzo2.so
popd

Then I got several errors:

error: “_FORTIFY_SOURCE” redefined [-Werror]
make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1

The solution is to edit vi build/core/combo/HOST_linux-x86.mk and edit the corresponding line as follows:

HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

Source: http://code.google.com/p/android/issues/detail?id=20795

External/mesa3d/src/glsl/linker.cpp:1734:59: error: ‘offsetof’ was not declared in this scope make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libMesa_intermediates/src/glsl/linker.o] Error 1

Edit external/mesa3d/src/glsl/linker.cpp and add #include <stddef.h>
Source: http://code.google.com/p/android/issues/detail?id=23206

host C++: liboprofile_pp <= external/oprofile/libpp/arrange_profiles.cpp In file included from external/oprofile/libpp/arrange_profiles.cpp:24:0: external/oprofile/libpp/format_output.h:94:22: error: reference ‘counts’ cannot be declared ‘mutable’ [-fpermissive] make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/liboprofile_pp_intermediates/arrange_profiles.o] Error 1

Edit external/oprofile/libpp/format_output.h and Remove ‘mutable’ from ‘mutable counts_t & counts;’ on line 94 => counts_t & counts;
Source: https://groups.google.com/forum/?fromgroups=#!msg/android-building/2EwtWQTqjdI/eBl1bK-KNM8J

external/gtest/src/../include/gtest/internal/gtest-param-util.h:122:11: error: ‘ptrdiff_t’ does not name a type

Edit external/gtest/include/gtest/internal/gtest-param-util.h and add one line:

#include <vector>
+#include <cstddef>
#include <gtest/internal/gtest-port.h>

Source: http://code.google.com/p/android/issues/detail?id=22005

/home/jaufranc/edev/Freescale/imx-android-r13.4-ga/myandroid/external/llvm/lib/Support/Mutex.cpp:143: undefined reference to `pthread_mutex_trylock’
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/test-librsloader_intermediates/test-librsloader] Error 1

Edit vi frameworks/compile/linkloader/Android.mk and rename LOCAL_LDFLAGS to LOCAL_LDLIBS.
Source: https://bugs.launchpad.net/linaro-android/+bug/1018832/comments/6

frameworks/compile/slang/slang_rs_export_foreach.cpp:249:23: error: variable ‘ParamName’ set but not used [-Werror=unused-but-set-variable]
cc1plus: all warnings being treated as errors
make: *** [out/host/linux-x86/obj/EXECUTABLES/llvm-rs-cc_intermediates/slang_rs_export_foreach.o] Error 1

Edit frameworks/compile/slang/Android.mk and remove -Werror
Source: http://code.google.com/p/android/issues/detail?id=22006

After all those changes, I was finally able to complete the build with the output in out/target/product/hdmidongle_6dq including the following directories and files:

  • root/ – Root file system (including init, init.rc, etc). Mounted at /
  • system/ – Android system binary/libraries. Mounted at /system.
  • data/ – Android data area. Mounted at /data.
  • recovery/ – Root file system when booting in “recovery” mode.
  • boot.img – Image which includes the kernel zImage, ramdisk, and boot parameters.
  • ramdisk.img – Ramdisk image generated from “root/”.
  • system.img – EXT4 image generated from “system/”. It can be programmed to “SYSTEM” partition on SD/eMMC card with “dd”.
  • userdata.img – EXT4 image generated from “data/”.
  • recovery.img – EXT4 image generated from “recovery/”. It can be programmed to “RECOVERY” partition on SD/eMMC card with “dd”.
  • u-boot-6q.bin – U-Boot image with padding for i.MX 6Quad version of the HDMI dongle.
  • u-boot-6dl.bin – U-Boot image with padding for i.MX 6Dual version of the HDMI dongle.
  • uImage – Kernel image

If you just want to build U-boot and/or the Kernel follow section 5.3 and 5.4 in R13.4-GA.01_Android_User_Guide.pdf. For the kernel there are 5 configs which all seem quite different from GK802 config:

  • imx6_android_defconfig – Android kernel config
  • imx6_defconfig – Linux kernel config
  • imx6_nand_android_defconfig
  • imx6_nand_updater_defconfig
  • imx6_updater_defconfig

To build U-boot for Freescale HDMI dongles, there are over 12 config (6 for i.MX6 dual, 6 for i.MX6 Quad), but the most interesting appear to be mx6q_hdmidongle_android_config and mx6q_hdmidongle_nand_android_config.

That’s all for today, I’ll post more if I, or somebody else, make progress trying it or/and building it for GK802 / Hi802 mini PC.

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