Archive

Posts Tagged ‘yocto’

Embedian SMART MEN and SMART BEE SBCs Feature a TI Sitara SMARC CoM

April 19th, 2014 No comments

Embedian, an embedded company specialized in computers-on-module and single board computers, has recently unveiled SMART MEN and SMART BEE single board computers powered by their SMARC-T335X computer-on-module, compliant with the SMARC (Smart Mobility Architecture) standard, and based on Texas Instruments Sitara AM335x SoCs.

SMART MEN SBC

SBC_SMART_MEN

SMART MEN single board computer specifications:

  • SoC – Texas Instrument Sitara AM335X ARM Cortex-A8 at 600MHz, 800MHz or 1GHz
  • System Memory – 512MB DDR3 (303Mhz x 2)
  • Storage – 4GB eMMC Flash (eMMC 5.0), 4MB SPI NOR Flash, AT24C32 EEPROM, and SDHC/SDIO slot
  • Connectivity – 2 x 10/100 Mbps Ethernet (vertical RJ45)
  • Display – single channel LVDS 18-bit color depth, single channel LVDS 24-bit color depth. LCD LED backlight driver onboard
  • USB – 2 x USB 2.0 Host, 1 x USB 2.0 OTG, 1 x Serial-to-USB (Client)
  • Additional Interfaces:
    • 6 x RS232s (transceiver onboard, two with handshaking and one can be configured as RS422/RS485),  2 x SPIs, 2 x I2C
    • Audio – Microphone input and Headphones output
    • 1 x CAN Bus Header (Transceiver onboard)
    • RTC (Seiko S35390-A) backup battery onboard
    • 1 x Buzzer
    • 11 x GPIOs
    • 1 x 4-wire touch connector
  • Misc – Invisible reset jumper, external watchdog reset (reset from the power source)
  • Power Supply – 5V, typical consumption: ~2 Watts
  • Dimensions – 102 mm (L) x 145 mm (W) – (3.5″ board)
  • Temperature range – Normal Temperature: 0 ~ 60 C,  Industrial Temperature: -40 ~85 C
  • Humidity – 10% ~ 90% relative humidity, non-condensed

SMART BEE SBC

SBC-SMART-BEE

SMART BEE single board computer specifications are extremely similar to SMART MEN SBC:

  • SoC – Texas Instrument Sitara AM335X ARM Cortex-A8 at 600MHz, 800MHz or 1GHz
  • System Memory – 512MB DDR3 (303Mhz x 2)
  • Storage – 4GB eMMC Flash (eMMC 5.0), 4MB SPI NOR Flash, AT24C32 EEPROM, and SDHC/SDIO slot
  • Connectivity – 2 x 10/100 Mbps Ethernet
  • Display – Parallel LCD 18-bit color depth, single channel LVDS 24-bit color depth. LCD LED backlight driver onboard
  • USB – 1 x USB 2.0 Host, 1 x USB 2.0 OTG
  • Additional Interfaces:
    • 3 x RS232s (transceiver onboard, two with handshaking and one can be configured as RS422/RS485),  2 x SPI, 2 x I2C
    • Audio – Microphone input and Headphones output
    • 1 x CAN Bus Header (Transceiver onboard)
    • RTC (Seiko S35390-A) backup battery onboard
    • 1 x Buzzer
    • 12 x GPIOs
    • 1 x 4-wire touch connector
  • Misc – Invisible reset jumper, external watchdog reset (reset from the power source)
  • Power Supply – 5V, typical consumption: ~2 Watts
  • Dimensions – 102 mm (L) x 145 mm (W) – (3.5″ board)
  • Temperature range – Normal Temperature: 0 ~ 60 C,  Industrial Temperature: -40 ~85 C
  • Humidity – 10% ~ 90% relative humidity, non-condensed

The only differences are mostly mechanicals with for instance, the presence of USB connectors on SMART BEE which are missing on the SMART MEN, and different number of USB, GPIOs, RS232 ports, etc.. between the two boards.

Both boards support Linux 3.2 (TI EZSDK 6.0.0 Arago or Ubuntu 13.04) or Linux 3.12 (Device Tree Support, Arago or Ubuntu 13.04), Android ICS, and Windows Embedded Compact 7. The company uses Yocto/OpenEmbedded to build embedded distributions for the boards.

The company provides a user’s manual, PinMux file for TI PinMux Utility, and a toolchain.

SMARC-T335X Computer on Module

Embedian_SMARC-T335X

The two SBC features above as comprised of a baseboard, and SMARC-T335X module which comes with the following specs:

  • SoC – Texas Instrument Sitara AM335X ARM Cortex-A8 at 600MHz, 800MHz or 1GHz
  • System Memory – 512MB DDR3 (303Mhz x 2)
  • Storage – 4GB eMMC Flash (eMMC 5.0), 4MB SPI NOR Flash, and AT24C32 EEPROM
  • Connectivity – 2 x 10/100 Mbps Ethernet
  • Display – Parallel LCD 18-bit color depth, single channel LVDS 24-bit color depth.
  • USB – 1 x USB 2.0 Host, 1 x USB 2.0 OTG
  • Additional Interfaces:
    • 3 x UARTS,   2 x SPI, 3 x I2C
    • 1x I2S
    • 3 x PWMs
    • 1 x CAN Bus
    • RTC (Seiko S35390-A)
    • 12 x GPIOs
    • 4x ADC for resistive touch screens
  • Dimensions – 82 mm x 50 mm with 31-pin MXM connector (SMARC Specification)
  • Temperature range – Normal Temperature: 0 ~ 60 C,  Industrial Temperature: -40 ~85 C
  • Humidity – 10% ~ 90% relative humidity, non-condensed

The CoM gets the same development resources plus a Carrier Board Design Guide, and Carrier Board Reference Schematics (pdf and OrCAD format). You can find further development resources on Embedian Developer Center, and via their public git repo.

All three products are available now. SMARC-T335X CoM starts at $69 per unit ($49 / pcs for 3k+ orders), SBC-SMART-BEE at $119 per unit ($89 / pc for 3k+ orders), and SBC-SMART-MEN at $159 ($129 / pc for 3k+ orders). You can find more information through Embedian’s products page.

Via LinuxGizmos

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 2014 Schedule

April 19th, 2014 No comments

The Tenth Embedded Linux Conference (ELC 2014) will take place on April 29 – May 1, 2014 at the San Jose Marriott in San Jose, California. The event will feature 90+ sessions on embedded Linux, Android and IoT with over 450 attendees expected to attend. It will also be co-located with Android Builders Summit and the AllSeen Alliance Hackfest. Even if you can’t attend it’s still interesting to see what will be discussed at the event to get a grasp of on-going developments, learn a few things about different optimization techniques, and so on. So I’ve gone through the sessions’ description, and I’ve designed my own virtual schedule with sessions that could be of interest.

Embedded_Linux_Conference_2014April 29

Linux has taken the embedded world by storm.  Billions (with a ‘B’) of devices have now shipped with a Linux kernel, and it seems unstoppable.  But will the next 10 billion devices ship with Linux or with something else?  How can Linux be specialized for deeply embedded projects, as characterized by the Internet of Things, while still maintaining the network effects of community cooperation and sharing?  Is this possible or even desirable?  The startling truth might be revealed at this keynote. Or, Tim might just rant a bit about device-tree… who knows?

The past year has seen a remarkable growth of interest in super-low-power and super-low-form-factor computing, in the form of ‘wearables’, the ‘Internet of Things’, and the release of exciting new hardware such as Intel’s Quark and Edison SoCs. Taking advantage of this super-small hardware also implies the need for super-small operating systems and applications to match. This talk will describe a super-small-footprint Linux distribution called ‘microYocto”. The main focus will be the kernel and how we achieved what we think is close to the minimal possible kernel footprint, both in terms of static text size and dynamic memory usage. We’ll talk about the tools and methodologies we used and developed to analyze the problem, such as tracing and machine simulation, and will describe the various technologies developed and applied to achieving this minimalistic system.

Many community resources exist about boot time reduction. However, few of them are up to date and share the exact time savings that can be achieved on recent systems. This talk will detail today’s most efficient techniques to reduce boot time. For each of them, figures will be shared, obtained from recent boot time reduction projects and from the preparation of Free Electrons new workshop on this topic. If you attend this talk, you will know which optimization techniques are worth using first, and will save time not exploring techniques that won’t make a significant difference in your project. Don’t tell your boss, and this will leave your more time to contribute to community projects!

In this talk, Chris will describe the internal workings of the Android graphics stack from the Application layer down through the stack to pixels on the screen. It is a fairly complex journey, taking in two different 2D rendering engines, applications calling OpenGL ES directory, passing buffers on to the system compositor, Surface Flinger, and then down to the display controller or frame buffer. All this requires careful synchronisation so that what appears on the screen is smooth, without jitter, and makes efficient use of memory, CPU, GPU and power resources.

Linux-based platforms such as the Beaglebone and Raspberry Pi are inexpensive powerhouses. But, beyond being cool on their own, what else can you do with them? This presentation will step you through the process of building a Wi-Fi enabled, Linux-based robot that you can build without breaking the bank and without special knowledge of robotics and robotic controls.

Since last year, we have 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, we would like to share the status of this effort: where we were a year ago, what solutions were in place, where we are currently, and what to expect from the future. We will also focus on the community around these SoCs, the work that is done there, etc.

April 30

GCC is an optimizing compiler, currently most common compiler to build software for Embedded Linux systems like Android, Yocto Project etc. This tutorial will introduce specific optimizations and features of GCC which are less known but could benefit optimizing software especially for embedded use while highlight the effect of common optimizations. While it will focus on squeezing most out of GCC, it will also cover some of “pessimizations” to avoid and will tip the developer to write code thats more conducive (compiler friendly) for general optimizations. They will also get some contrast with other compilers when needed.

Throughout the last two 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 we would like to 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 we have gone through, the mistakes we’ve made and how we solved them, and generally our experience on this project.

This BoFs is intended to bring together anybody that tests the Linux kernel to share best practices and brainstorm new ideas. Topics may range from .config testing, module/built-in drivers, test methods and tools for testing specific driver subsystems, VM/scheduler/interrupt stress testing, and beyond. The discussion is targeted at Linux kernel developers, test engineers, and embedded Linux product teams/consultants with the common task of testing Linux kernel integrity. Attendees should have a firm grasp of building and deploying the kernel as well as kernel/userspace kernel APIs.

Several vendors are getting ready to start enabling the upstream kernel for their upcoming 64-bit ARM platforms, and it opens up a few questions on things that are not quite sorted out yet, especially on the embedded and mobile platforms. This is an open discussion on the issues these maintainers are anticipating, and what we should do about it.

Communication between components is necessary for effective power management in mobile devices. The System Power Management Interface, also known as SPMI, is a standardized bus interface intended to provide power-management related connectivity between components. Josh Cartwright will provide a high-level architectural overview of SPMI and discuss how to leverage the Linux Kernel software interfaces (expected to land in 3.15) to communicate with devices on the bus.

May 1

While Android has been created for mobile devices — phones first and now tablets — it can, nonetheless, be used as the basis of any touch-screen system, whether it be mobile or not. Essentially, Android is a custom-built embedded Linux distribution with a very elaborate and rich set of user-space abstractions, APIs, services and virtual machine. This one-day workshop is aimed at embedded developers wanting to build embedded systems using Android. It will cover Android from the ground up, enabling developers to get a firm hold on the components that make up Android and how they need to be adapted to an embedded system. Specifically, we will start by introducing Android’s overall architecture and then proceed to peel Android’s layer one-by-one.

This half-day workshop is aimed at embedded developers that want to use Android in their embedded designs.

The MIPS processor cores are widely used in embedded platforms, including TVs and set-top-boxes. In most of those platforms dedicated graphics hardware exists but it may be specialized for its use in audio and video signal processing: rendering of web content has to be done in software. We implemented optimizations for the software-based QPainter renderer to improve the performance of Qt —including QtWebKit— in MIPS processors. The target platform was the modern 74kf cores, which include new SIMD instructions suitable for graphics operations (alpha blending, color space conversion and JPEG image decoding), and also for non-graphics operations: string functions were also improved. Our figures estimate that web pages are rendered up to 30% faster using hand-coded assembler fast-paths for those operations.

Software Freedom Conservancy announced last year a renewed effort for cross-project collaborative GPL compliance efforts, including copyright holders from BusyBox, Linux, and Samba. Conservancy uses an internal system of communication and collaboration to take input from stakeholders to discuss and engage in compliance activity to ensure compliance with the GPL throughout the technology industry and particularly in the embedded device market. Compliance with the GPL is the responsibility of copyright holders of the software, and Conservancy helps those copyright holders pursue the work, so those developers can focus on coding. In this talk, the President of Conservancy will discuss how Conservancy handles compliance matters, what matters it focuses on, and how the copyright holders that work with Conservancy engage in a collaborative effort to ensure compliance with the GPL.

Ubuntu Touch is the new Ubuntu-based OS for phones and tablets. Announced at the beginning of 2013, it gives a new UI and design proposal, but also a new way of developing and supporting many different devices, using either the Android HAL or the traditional Linux stack to build the platform. This talk will go over the Ubuntu Touch internals, presenting the technical decisions and also the work that was done to bootstrap this new platform (camera, radio, video decode, GLES and etc) and the future challenges to support a single stack across mobile and the traditional desktop.

These are just a few sessions out of the 90+ sessions available at the Embedded Linux Conference and Android Builder Summit. You can check the full schedule to find out which sessions are most interesting to you.

If you’d like to attend the event, you’ll need to register online.

The attendance fees have significantly gone up compared to last year, at least for hobbyists, but include entrance for both ELC and Android Builder Summit:

  • Professional Registration Fee - US$600 (Was US$500 until March 29, 2014)
  • Hobbyist Fee – US$150
  • Student FeeUS$150

After the events, many videos are usually uploaded by the Linux Foundation, and you should be able to find the list of talks with links to presentation slides oneLinux.org.

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

Atmel SAMA5D3 Xplained Board Unboxing and Quick Start Guide

April 16th, 2014 No comments

Atmel SAMA5D3 Xplained is an evaluation board running Linux powered by SAMA5D36 ARM Cortex A5 micro-processor with 256 MB DDR2, 256 MB flash, two Ethernet ports, 3 USB connectors, and more. This embedded board targets industrial automation, networks, robotics, control panels and wearable applications. The only video output is an LCD connector so it is reserved for headless or flat panel based applications. You can check full specs on my Atmel SAMA5D3 Xplained announcement post. The company kindly sent me a sample, so that I can share my experience with the board. I’ll first post some unboxing pictures, show how to get started with the pre-installed image, and build my own Linux image.

The board can be purchased for $79 from Atmel e-Store, as well as several distributors (P/N: ATSAMA5D3-XPLD).

Atmel SAMA5D3 Xplained Unboxing

I’ve been sent the board via DHL in the following package, which gives  a short desscription of the board, and what it is used for. There’s also a QR core, but it just returns the board name of some production numbers and dates, no links.

Atmel_SAMA5D3_Xplained_PackageIn the package you’ve got the board, a micro USB to USB cable for power and programming, and a small card entitled “Overview and Compliance Information” which gives a list of key features, a link to get started http://www.atmel.com/sama5d3xplained, which I’ll use later, and some EU compliance informations regarding RoHS2 and EMC. The board is compliant with both CE and FCC standards.

Atmel SAMA5D3 Xplained Package Content (Click to Enlarge)

Atmel SAMA5D3 Xplained Package Content (Click to Enlarge)

Let’s check the board in details.

Top of Atmel SAMA5D3 Xplained Board (Click to Enlarge)

Top of Atmel SAMA5D3 Xplained Board (Click to Enlarge)

On the top of the board, we’ll find the 2 USB host connectors, and 2 Ethernet connectors (GMAC and EMAC) on the right, the micro USB port, as well as pads to solder an external power supply and a micro SD slot on the left, reset, wake up and user buttons, as well as JTAG, LCD, and debug (serial) connectors at the bottom, and around the MPU and memories, the Arduino UNO R3 compatible headers with the names of the different pins. Bear in mind these only support 3.3V, not 5V.

Bottom of Atmel SAMA5D3 Xplained (Click to Enlarge)

Bottom of Atmel SAMA5D3 Xplained (Click to Enlarge)

On the back we’ll find the SD card slot, and again, the markings for the Arduino compatible connectors.

I’ve also shot an unboxing video for those interested.

Atmel SAMA5D3 Xplained Quick Start Guide

From the link provided on the “Overview card”, you can download SAMA5D3 MPU datasheet,  the board brief, design and manufacturing files, and user’s guide, as well as a Getting Started Guide, which I’ll try out in this post.

The board comes pre-loaded with a Linux distribution (poky) built with the Yocto Project comprised of bootloaders (AT91Bootstrap and U-boot), the Linux kernel, and a custom lightweight rootfs. To get started simply connect the micro USB to USB cable to your computer to boot the system, you should see a blue LED lit up and blink. There’s no display, but there are three ways to access the board from Linux or Windows computers:

  • Using the USB connection your PC.  In Linux, run dmesg to check the latest kernel messages:
    [92045.134415] usb 1-1.4.4: new high-speed USB device number 23 using ehci-pci
    [92045.227589] usb 1-1.4.4: New USB device found, idVendor=0525, idProduct=a4a7
    [92045.227598] usb 1-1.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    [92045.227603] usb 1-1.4.4: Product: Gadget Serial v2.4
    [92045.227607] usb 1-1.4.4: Manufacturer: Linux 3.10.0-yocto-standard with atmel_usba_udc
    [92045.334096] cdc_acm 1-1.4.4:2.0: This device cannot do calls on its own. It is not a modem.
    [92045.334265] cdc_acm 1-1.4.4:2.0: ttyACM0: USB ACM device

    In my case the interface is /dev/ttyACM0. Run you favorite terminal emulator program, such as minicom, picocom, screen, PuTTY, etc… I’ve used minicom, and configured it to access /dev/TTYACM0 using 115200 8/N/1 configuration. Instructions for Windows can be found in the company’s Getting Started Guide.

  • Via a USB to Serial board connected via J23 header’s Tx, Rx and GND pins. I’ve also done this in minicom with /dev/ttyUSB0 and the same 115200 8/N/1 configuration.
  • Via SSH. The demo image in the board is running sshd, so provided you’ve connected one or two of the Ethernet ports on a LAN with a DHCP server, you should be able to connect with the IP of the board. In Linux: ssh root@ip_address

You can login with the board using the root account without password. The USB and SSH methods are the most convenience since you don’t need to connect extra hardware, but you won’t be able to access the bootloader that way, debugging the Linux kernel, if needed, will be difficult, and each time, the board is rebooted, the connection will be lost. So for development, you should really get a serial to USB debug board.

Here’s the complete boot log for reference:

AT91Bootstrap 3.6.1-00078-g5415d4e (Tue Feb  4 15:36:46 CET 2014)

NAND: ONFI flash detected
NAND: Manufacturer ID: 0x2c Chip ID: 0×32
NAND: Disable On-Die ECC
NAND: Initialize PMECC params, cap: 0×4, sector: 0×200
NAND: Image: Copy 0×80000 bytes from 0×40000 to 0x26f00000
NAND: Done to load image

U-Boot 2013.07 (Feb 04 2014 – 15:36:32)

CPU: SAMA5D36
Crystal frequency:       12 MHz
CPU clock        :      528 MHz
Master clock     :      132 MHz
DRAM:  256 MiB
NAND:  256 MiB
MMC:   mci: 0, mci: 1
*** Warning – bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   gmac0
Warning: failed to set MAC address
, macb0
Warning: failed to set MAC address

Hit any key to stop autoboot:  0

NAND read: device 0 offset 0×180000, size 0×80000
524288 bytes read: OK

NAND read: device 0 offset 0×200000, size 0×600000
6291456 bytes read: OK
Kernel image @ 0×22000000 [ 0x000000 - 0x33be28 ]
## Flattened Device Tree blob at 21000000
Booting using the fdt blob at 0×21000000
Loading Device Tree to 2bb12000, end 2bb1a046 … OK

Starting kernel …

Uncompressing Linux… done, booting the kernel.
Booting Linux on physical CPU 0×0
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Initializing cgroup subsys cpuacct
Linux version 3.10.0-yocto-standard (nferre@tenerife) (gcc version 4.8.1 (GCC) 4
CPU: ARMv7 Processor [410fc051] revision 1 (ARMv7), cr=50c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: Atmel SAMA5 (Device Tree), model: SAMA5D3 Xplained
bootconsole [earlycon0] enabled
Memory policy: ECC disabled, Data cache writeback
AT91: Detected soc type: sama5d3
AT91: Detected soc subtype: sama5d36
AT91: sram at 0×300000 of 0×20000 mapped at 0xfef58000
CPU: All CPU(s) started in SVC mode.
Clocks: CPU 528 MHz, master 132 MHz, main 12.000 MHz
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024
Kernel command line: console=ttyS0,115200 earlyprintk mtdparts=atmel_nand:256k(s
PID hash table entries: 1024 (order: 0, 4096 bytes)
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
allocated 524288 bytes of page_cgroup
please try ‘cgroup_disable=memory’ option if you don’t want memory cgroups
Memory: 256MB = 256MB total
Memory: 252736k/252736k available, 9408k reserved, 0K highmem
Virtual kernel memory layout:
vector  : 0xffff0000 – 0xffff1000   (   4 kB)
fixmap  : 0xfff00000 – 0xfffe0000   ( 896 kB)
vmalloc : 0xd0800000 – 0xff000000   ( 744 MB)
lowmem  : 0xc0000000 – 0xd0000000   ( 256 MB)
modules : 0xbf800000 – 0xc0000000   (   8 MB)
.text : 0xc0008000 – 0xc05b4fc8   (5812 kB)
.init : 0xc05b5000 – 0xc05d2d60   ( 120 kB)
.data : 0xc05d4000 – 0xc063a9f8   ( 411 kB)
.bss : 0xc063a9f8 – 0xc0663820   ( 164 kB)
NR_IRQS:16 nr_irqs:16 16
sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 4294967286ms
Console: colour dummy device 80×30
Calibrating delay loop… 351.43 BogoMIPS (lpj=1757184)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
Initializing cgroup subsys memory
Initializing cgroup subsys devices
Initializing cgroup subsys freezer
Initializing cgroup subsys blkio
CPU: Testing write buffer coherency: ok
Setting up static identity map for 0xc0350648 – 0xc0350694
devtmpfs: initialized
pinctrl core: initialized pinctrl subsystem
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
AT91: Power Management
gpio-at91 fffff200.gpio: at address fefff200
gpio-at91 fffff400.gpio: at address fefff400
gpio-at91 fffff600.gpio: at address fefff600
gpio-at91 fffff800.gpio: at address fefff800
gpio-at91 fffffa00.gpio: at address fefffa00
pinctrl-at91 pinctrl.2: initialized AT91 pinctrl driver
bio: create slab <bio-0> at 0
at_hdmac ffffe600.dma-controller: Atmel AHB DMA Controller ( cpy slave ), 8 chas
at_hdmac ffffe800.dma-controller: Atmel AHB DMA Controller ( cpy slave ), 8 chas
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
of_dma_request_slave_channel: dma-names property missing or empty
at91_i2c f0014000.i2c: can’t get a DMA channel for tx
at91_i2c f0014000.i2c: can’t use DMA
at91_i2c f0014000.i2c: AT91 i2c bus driver.
at91_i2c f0018000.i2c: using dma0chan0 (tx) and dma0chan1 (rx) for DMA transfers
at91_i2c f0018000.i2c: AT91 i2c bus driver.
at91_i2c f801c000.i2c: can’t get a DMA channel for tx
at91_i2c f801c000.i2c: can’t use DMA
at91_i2c f801c000.i2c: AT91 i2c bus driver.
media: Linux media interface: v0.10
Linux video capture interface: v2.00
Advanced Linux Sound Architecture Driver Initialized.
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
Switching to clocksource tcb_clksrc
NET: Registered protocol family 2
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP: reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 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.
jffs2: version 2.2. (NAND) �© 2001-2006 Red Hat, Inc.
msgmni has been set to 493
io scheduler noop registered (default)
f001c000.serial: ttyS1 at MMIO 0xf001c000 (irq = 23) is a ATMEL_SERIAL
f0020000.serial: ttyS2 at MMIO 0xf0020000 (irq = 24) is a ATMEL_SERIAL
f0024000.serial: ttyS5 at MMIO 0xf0024000 (irq = 25) is a ATMEL_SERIAL
ffffee00.serial: ttyS0 at MMIO 0xffffee00 (irq = 39) is a ATMEL_SERIAL
console [ttyS0] enabled, bootconsole disabled
console [ttyS0] enabled, bootconsole disabled
brd: module loaded
loop: module loaded
atmel_nand_nfc 70000000.nfc: NFC is probed.
atmel_nand: Use On Flash BBT
atmel_nand 60000000.nand: Using dma0chan2 for DMA transfers.
ONFI param page 0 valid
ONFI flash detected
NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron MT29F2G08ABAEAWP), 254
atmel_nand 60000000.nand: ONFI params, minimum required ECC: 4 bits in 512 bytes
atmel_nand 60000000.nand: Initialize PMECC params, cap: 4, sector: 512
atmel_nand 60000000.nand: Using NFC Sram read and write
Bad block table found at page 131008, version 0×01
Bad block table found at page 130944, version 0×01
nand_read_bbt: bad block at 0x000000c80000
nand_read_bbt: bad block at 0x000000ca0000
8 cmdlinepart partitions found on MTD device atmel_nand
Creating 8 MTD partitions on “atmel_nand”:
0×000000000000-0×000000040000 : “bootstrap”
0×000000040000-0x0000000c0000 : “uboot”
0x0000000c0000-0×000000100000 : “env”
0×000000100000-0×000000140000 : “evn_redundent”
0×000000140000-0×000000180000 : “spare”
0×000000180000-0×000000200000 : “dtb”
0×000000200000-0×000000800000 : “kernel”
0×000000800000-0×000010000000 : “rootfs”
atmel_spi f0004000.spi: version: 0×213
atmel_spi f0004000.spi: Using dma0chan3 (tx) and dma0chan4 (rx) for DMA transfes
atmel_spi f0004000.spi: Atmel SPI Controller at 0xf0004000 (irq 18)
atmel_spi f0004000.spi: master is unqueued, this is deprecated
atmel_spi f8008000.spi: version: 0×213
atmel_spi f8008000.spi: Using dma1chan0 (tx) and dma1chan1 (rx) for DMA transfes
atmel_spi f8008000.spi: Atmel SPI Controller at 0xf8008000 (irq 28)
atmel_spi f8008000.spi: master is unqueued, this is deprecated
CAN device driver interface
at91_can f000c000.can: device registered (reg_base=d08ea000, irq=19)
at91_can f8010000.can: device registered (reg_base=d08ec000, irq=29)
macb f0028000.ethernet (unregistered net_device): invalid hw address, using ranm
libphy: MACB_mii_bus: probed
macb f0028000.ethernet eth0: Cadence GEM at 0xf0028000 irq 26 (4e:68:35:cc:0c:8)
macb f0028000.ethernet eth0: attached PHY driver [Micrel KSZ9031 Gigabit PHY] ()
macb f802c000.ethernet (unregistered net_device): invalid hw address, using ranm
libphy: MACB_mii_bus: probed
macb f802c000.ethernet eth1: Cadence MACB at 0xf802c000 irq 33 (ca:99:58:69:7f:)
macb f802c000.ethernet eth1: attached PHY driver [Micrel KSZ8081 or KSZ8091] (m)
ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
ehci-atmel: EHCI Atmel driver
atmel-ehci 700000.ehci: EHCI Host Controller
atmel-ehci 700000.ehci: new USB bus registered, assigned bus number 1
atmel-ehci 700000.ehci: irq 47, io mem 0×00700000
atmel-ehci 700000.ehci: USB 2.0 started, EHCI 1.00
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: EHCI Host Controller
usb usb1: Manufacturer: Linux 3.10.0-yocto-standard ehci_hcd
usb usb1: SerialNumber: 700000.ehci
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 3 ports detected
ohci_hcd: USB 1.1 ‘Open’ Host Controller (OHCI) Driver
at91_ohci 600000.ohci: AT91 OHCI
at91_ohci 600000.ohci: new USB bus registered, assigned bus number 2
at91_ohci 600000.ohci: irq 47, io mem 0×00600000
usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: AT91 OHCI
usb usb2: Manufacturer: Linux 3.10.0-yocto-standard ohci_hcd
usb usb2: SerialNumber: at91
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 3 ports detected
usbcore: registered new interface driver usb-storage
usbcore: registered new interface driver usbserial
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial support registered for generic
at91_rtc fffffeb0.rtc: rtc core: registered fffffeb0.rtc as rtc0
at91_rtc fffffeb0.rtc: AT91 Real Time Clock driver.
i2c /dev entries driver
Driver for 1-wire Dallas network protocol.
cpuidle: using governor ladder
leds-gpio leds.4: pins are not configured from the driver
atmel_aes f8038000.aes: version: 0×135
atmel_aes f8038000.aes: Atmel AES – Using dma1chan2, dma1chan3 for DMA transfers
atmel_tdes f803c000.tdes: version: 0×701
atmel_tdes f803c000.tdes: using dma1chan4, dma1chan5 for DMA transfers
atmel_tdes f803c000.tdes: Atmel DES/TDES
atmel_sha f8034000.sha: version: 0×410
atmel_sha f8034000.sha: using dma1chan6 for DMA transfers
atmel_sha f8034000.sha: Atmel SHA1/SHA256/SHA224/SHA384/SHA512
hidraw: raw HID events driver (C) Jiri Kosina
iio iio:device0: Resolution used: 12 bits
iio iio:device0: ADC Touch screen is disabled.
TCP: cubic registered
NET: Registered protocol family 10
sit: IPv6 over IPv4 tunneling driver
NET: Registered protocol family 17
can: controller area network core (rev 20120528 abi 9)
NET: Registered protocol family 29
can: raw protocol (rev 20120528)
can: broadcast manager protocol (rev 20120528 t)
can: netlink gateway (rev 20130117) max_hops=1
VFP support v0.3: implementor 41 architecture 2 part 30 variant 5 rev 1
ThumbEE CPU extension supported.
Registering SWP/SWPB emulation handler
UBI: attaching mtd7 to ubi0
atmel_nand 60000000.nand: Bit flip in data area, byte_pos: 1552, bit_pos: 7, 0xf
atmel_nand 60000000.nand: Bit flip in data area, byte_pos: 315, bit_pos: 0, 0xff
UBI: scanning is finished
UBI: attached mtd7 (name “rootfs”, size 248 MiB) to ubi0
UBI: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
UBI: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
UBI: VID header offset: 2048 (aligned 2048), data offset: 4096
UBI: good PEBs: 1978, bad PEBs: 6, corrupted PEBs: 0
UBI: user volume: 1, internal volumes: 1, max. volumes count: 128
UBI: max/mean erase counter: 2/0, WL threshold: 4096, image sequence number: 321
UBI: available PEBs: 0, total reserved PEBs: 1978, PEBs reserved for bad PEB ha4
UBI: background thread “ubi_bgt0d” started, PID 681
input: gpio_keys.3 as /devices/gpio_keys.3/input/input0
at91_rtc fffffeb0.rtc: setting system clock to 2014-02-05 09:22:13 UTC (1391592)
atmel_mci f0000000.mmc: version: 0×505
atmel_mci f0000000.mmc: using dma0chan5 for DMA transfers
atmel_mci f0000000.mmc: Atmel MCI controller at 0xf0000000 irq 17, 1 slots
atmel_mci f8000000.mmc: version: 0×505
atmel_mci f8000000.mmc: using dma1chan7 for DMA transfers
atmel_mci f8000000.mmc: Atmel MCI controller at 0xf8000000 irq 27, 1 slots
ALSA device list:
No soundcards found.
UBIFS: mounted UBI device 0, volume 0, name “rootfs”, R/O mode
UBIFS: LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2s
UBIFS: FS size: 244936704 bytes (233 MiB, 1929 LEBs), journal size 9023488 byte)
UBIFS: reserved for root: 0 bytes (0 KiB)
UBIFS: media format: w4/r0 (latest is w4/r0), UUID 5CA0915B-7DF9-4652-92C0-71B9l
VFS: Mounted root (ubifs filesystem) readonly on device 0:12.
devtmpfs: mounted
Freeing unused kernel memory: 116K (c05b5000 – c05d2000)
atmel_nand 60000000.nand: Bit flip in data area, byte_pos: 1933, bit_pos: 5, 0xb
INIT: version 2.88 booting
Starting udev
udevd[717]: starting version 182
UBI error: ubi_open_volume: cannot open device 0, volume 0, error -16
atmel_usba_udc 500000.gadget: MMIO registers at 0xf8030000 mapped at d09a8000
atmel_usba_udc 500000.gadget: FIFO at 0×00500000 mapped at d2400000
g_serial gadget: Gadget Serial v2.4
g_serial gadget: g_serial ready
UBIFS: background thread “ubifs_bgt0_0″ started, PID 782
Starting Bootlog daemon: bootlogd.
g_serial gadget: high-speed config #2: CDC ACM config
Configuring network interfaces… IPv6: ADDRCONF(NETDEV_UP): eth0: link is not y
udhcpc (v1.21.1) started
Sending discover…
macb f0028000.ethernet eth0: link up (100/Full)
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Sending discover…
Sending select for 192.168.0.108…
Lease of 192.168.0.108 obtained, lease time 7200
/etc/udhcpc.d/50default: Adding DNS 192.168.0.1
done.
Starting rpcbind daemon…done.
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
Starting atd: OK
INIT: Entering runlevel: 5
Starting system message bus: dbus.
Starting OpenBSD Secure Shell server: sshd
done.
creating NFS state directory: done
NFS daemon support not enabled in kernel
Starting system log daemon…0
Starting kernel log daemon…0
Starting Telephony daemon
Starting Lighttpd Web Server: lighttpd.
Starting crond: OK
Stopping Bootlog daemon: bootlogd.

Poky (Yocto Project Reference Distro) 1.5.1 sama5d3_xplained /dev/ttyS0

sama5d3_xplained login: root
root@sama5d3_xplained:~#

For some reasons the Gigabit Ethernet port failed to get a link from my 10/100M switch. I had no problem with the 10/100M Ethernet port.

Let’s have a quick look at the kernel version and memory usage:

# uname -a
Linux sama5d3_xplained 3.10.0-yocto-standard #1 Wed Feb 5 10:03:20 CET 2014 armv7l GNU/Linux
# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          216M   80M  136M  37% /
ubi0:rootfs     216M   80M  136M  37% /
devtmpfs        124M     0  124M   0% /dev
tmpfs           124M  112K  124M   1% /run
tmpfs           124M  112K  124M   1% /var/volatile
# free -m
             total       used       free     shared    buffers     cached
Mem:           246         21        225          0          0          8
-/+ buffers/cache:         12        234
Swap:            0          0          0

So the board runs Linux 3.10 built with Yocto, has 136M free on the rootfs, and 21MB used out of 246 MB RAM.

Building the demo image for Atmel SAMA5D3 Xplained

Atmel Getting Started document mentions the software components in the NAND Flash have been compiled following instructions found on the Linux4SAM website, but instead I’ve followed the build procedure found in github.

git clone git://git.yoctoproject.org/poky
cd poky
git checkout dora-10.0.1 -b my_branch
git clone git://git.openembedded.org/meta-openembedded
cd meta-openembedded
git checkout 6572316557e742c2dc93848e4d560242bf0c3995 -b my_branch
cd ..
git clone http://github.com/linux4sam/meta-atmel
  • Initialize the build directory
source oe-init-build-env build-atmel
  • Add meta-atmel layers conf/bblayer configuration file (Lines in bold):
BBLAYERS ?= " \
  /home/jaufranc/edev/Atmel/SAMA5D3/poky/meta \
  /home/jaufranc/edev/Atmel/SAMA5D3/poky/meta-yocto \
  /home/jaufranc/edev/Atmel/SAMA5D3/poky/meta-yocto-bsp \
  /home/jaufranc/edev/Atmel/SAMA5D3/poky/meta-atmel \
  /home/jaufranc/edev/Atmel/SAMA5D3/poky/meta-openembedded/meta-oe \
  /home/jaufranc/edev/Atmel/SAMA5D3/poky/meta-openembedded/meta-networking \
  "
  • Edit conf/local.conf to specify the SAMA5D3 Xplained board, and change the package type to ipk:
[...]
MACHINE ??= "sama5d3_xplained"
[...]
PACKAGE_CLASSES ?= "package_ipk"
  • Build the demo image
bitbake atmel-xplained-demo-image

This step will take a while, and you’ll find the binary images in tmp/deploy/images/sama5d3_xplained/ including the bootloaders, the kernel, modules, device tree files, and rootfs.

  • You can also optionally build the bootloaders separately with:
bitbake at91bootstrap
bitbake u-boot

Flashing the Image

After you’ve built the image you may want to install them. You can also download the pre-built Yocto/Poky demo. I’ll use the files I’ve built, but the scripts from the pre-built demo zip file (linux4sam-poky-sama5d3_xplained-4.3.zip), since I could not find it anywhere else.

First you’ll need to install SAM-BA tool to flash the images. In Ubuntu 64-bit:

sudo apt-get install linux-image-generic linux-headers-generic ia32-libs

Download SAM-BA 2.12 for Linux and SAM-BA 2.12 Patch 6 for Linux using your web browser (registration or form filling required), and install it as follows

unzip sam-ba_2.12.zip
cp patch6.gz sam-ba_cdc_cdc_linux/
cd sam-ba_cdc_cdc_linux/
gzip -d patch6.gz
patch -p1 --binary < patch6
chmod +x sam-ba

Add sam-ba to your PATH, e.g.:

export PATH=$PATH:~/edev/Atmel/SAMA5D3/sam-ba_cdc_cdc_linux/

You’ll then need to add yourself into the dialout group inside /etc/group:

dialout:x:20:myusername

Logout and login.

Now copy demo_linux_nandflash.sh, demo_linux_nandflash.tcl and demo_script_linux_nandflash.tcl scripts from the zip file to tmp/deploy/images/sama5d3_xplained/ directory, and if needed, edit demo_linux_nandflash.tcl to match your newly built filenames:

set bootstrapFile      "sama5d3_xplained-nandflashboot-uboot-3.6.2.bin"
set ubootFile          "u-boot-sama5d3_xplained-v2013.07-at91-r2.bin"
set kernelFile         "zImage-sama5d3_xplained.bin"
set rootfsFile         "atmel-xplained-demo-image-sama5d3_xplained.ubi"

We’ve now ready for the flash procedure itself:

  1. Make sure your board is running connected to your computer via the micro USB port
  2. Remove JP5 (NAND CS, upper left of Atmel MPU) jumper to disable NAND Flash memory access
  3. Press BP2 reset button (bottom left) to boot from on-chip Boot ROM
  4. Close JP5 to enable NAND Flash memory access
  5. Change the name of copy the device tree blob file as follows:
    cp zImage-at91-sama5d3_xplained.dtb at91-sama5d3_xplained.dtb
  6. Run the flash script:
    chmod +x demo_linux_nandflash.sh
    ./demo_linux_nandflash.sh
  7. It will take a little while, and once completed you can login to the baord and verify you’ve got a brand new kernel and rootfs:
    root@sama5d3_xplained:~# uname -a                                               
    Linux sama5d3_xplained 3.10.0-custom #1 Wed Apr 16 09:31:12 ICT 2014 armv7l GNUx
    root@sama5d3_xplained:~# cat /etc/version                                       
    201404160759

You can check the flashing log in logfile.log in case something went wrong. You can find some more info on Linux4Sam SAMA5D3 Xplained page.

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

$99 MinnowBoard MAX Development Board Powered by Intel Bay Trail-I SoC

April 1st, 2014 8 comments

When Intel released the original MinnowBoard which was a step in the right direction, but there were some complains, as the company had chosen to use an older Intel processor, and the price was much higher than most high performance low cost ARM development boards. MinnowBoard MAX (aka Minnow2 Board) fixes all that, as it features the latest Intel Bay Trail-I (E3800 series) processor, and costs as low as $99 for the single core version, and $129 for the dual core version.

MinnowBoard MAX (Click to Enlarge)

MinnowBoard MAX (Click to Enlarge)

Let’s jump directly to the specifications:

  • SoC – 64-bit Intel Atom E3815 (single-core, 1.46 GHz) or Atom E3825 (dual-core, 1.33 GHz) both with integrated Intel HD Graphics coming with Open Source hardware-accelerated drivers for Linux OS
  • System Memory – 1GB ($99 model) or 2GB ($129 model) DDR3 RAM
  • Storage – 1x Micro SD card slot, 1x SATA2 3Gb/sec, 8 MB SPI Flash for firmware (UEFI)
  • Video Output – micro HDMI connector
  • Audio Output
    • HDMI (digital)
    • Analog audio to become available via a separate Lure, the name for MinnowBoard expansion boards, which will be sold separately –
  • Connectivity – 10/100/1000M Ethernet RJ-45 connector
  • USB – 1x USB 3.0 host, 1x USB 2.0 host
  • Debugging & Programming – Serial debug via FTDI cable (sold separately), programming header compatible with Dedi-Prog programmer, and JTAG via high-speed expansion port.
  • Expansion headers
    • Low-speed expansion port – 2×13 (26-pin) male 0.1″ pin header with access to SPI, I2C, I2S Audio, 2x UARTs (TTL-level), 8x GPIO (including 2x supporting PWM), +5V, and GND
    • High-speed expansion port -  60-pin, high-density connector with access to 1x PCIe Gen 2.0 Lane, 1x SATA2 3Gb/sec, 1x USB 2.0 host, I2C, GPIO, JTAG, +5V, and GND
  • Dimensions – 99 x 74mm
  • Temperature Range -  0 – 70 deg C. Industrial temperature range may also be also available, but price will be higher, and has not been disclosed.
  • Power – 5V DC (Sold separately)

The board will run Debian GNU/Linux, Android 4.4 Kitkat, and be supported by the Yocto Project. It will boot with UEFI firmware stored in the 8MB SPI flash. The specifications also mention Intel HD graphics will be supported in Linux with open source graphics drivers, something that’s almost impossible to find for ARM development boards, although there has been some progress recently with the Raspberry Pi and Nvidia Tegra K1.  It will be an open source hardware board, and design files will be made available under Creative Commons licensing within weeks of production boards being available at distributors.

MinnowBoard MAX competes directly with quad core ARM Cortex A9 development board such as HardKernel ODROID, Wandboard, and so on, that sells for about the same price. We’ll need to check benchmarks to get a better idea of the performance.

The boards are scheduled to be manufactured by CircuitCo by the end of June 2014. You can’t pre-order them just yet, and they will be available through various distributors.  if you happen to be in EE Live! in San Jose, you can see a working demo with MinnowBoard MAX on booth #916.

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 Connect Asia 2014 Opening Keynote – Status and Future of ARMv8 Linux & Android [Video]

March 3rd, 2014 No comments

Linaro Connect Asia 2014 has just started in Macau today and will take place until Friday. You can follow the sessions live and/or their recordings via Linaro OnAir YouTube Channel. I’ve watched the opening keynote, and embedded the video at the bottom of this post. The keynote focuses on ARMv8 for Linux and Android on servers, mobile devices, digital home, and more, and involves two main speakers: George Grey, Linaro CEO , and Jon Masters, Chief ARM Architecture at Red Hat.

Linaro_Connected_Asia_2014

The speaker beginning of the video provides some practical information and the schedule for Linaro Connect. The keynote itself really starts around 15:50 with George Grey who spends the first 10 minutes introducing the latest Linaro members: Qualcomm, Mediatek, ZTE, AllWinner and Comcast. He then talks about the new Mobile sub-committee (MOBSCOM) that will focus on big.LITTLE, Android optimization and Android on ARMv8, as well as the soon-to-be-announced Linaro Digital Home Group composed of AllWinner, ARM, Comcast, Fujitsu, HiSilicon, and STMicro, that will work on STB / IPTV software implementation such as secure media playback. A large part of the talk is about boot architecture (ACPI, UEFI, ARM Trusted firmware…), and the debates ACPI vs FDT (Device Tree), U-boot vs UEFI, and so on. Other subjects discussed are ARM security with the recently formed Security Working Group, Virtualization, Middleware working on Aarch64 (LAMP and OpenJDK) and Android on 64-bit. The latter will require a lot more work, and actual hardware for validation of the work done on ARMv8 fast models, and to speed up code development. Finally he quickly mentions Linaro is still working on ARMv7 architecture, and preliminary work is done for Cortex-M with Yocto/OpenEmbedded support.

At the 50 minutes mark, Jon Masters takes over to talk about 64-bit ARM servers. He stresses several key points for ARM to be successful in the server market:

  1. Upstream first (to kernel.org), as Red Hat will only use code from mainline for servers
  2. Single binary required
  3. Must follow standards (SBSA, ACPI, UEFI…)
  4. Default to open (source and communication)

He explains that compared to last year hardware is now available, talks about hyperscale computing, and mention the “up to 25% market share for ARM servers in 2019″ quote from AMD. He explains there are challenges however, and the server market is much different from the embedded world, so CENH (Cute Embedded Nonsense Hacks) are not allowed for ARM servers. Long term (10+ years) support for toolchain and kernel are needed, with backports if necessary, and Fedora/Red Hat will never ever release an OS with a device tree file and/or U-Boot.

Finally he announces a Red Hat ARM Server Developer Preview will be released later this year, compliant with SBSA, and using UEFI and ACPI, and show demo running on Applied Micro X-gene Mustang board running an early version of the developer preview which boots with UEFI, and supports ACPI.

Watch the full keynote below for details (1h30).

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

Mentor Embedded ARM Hypervisor Automotive Demo on Freescale i.MX6 Board

December 19th, 2013 No comments

Virtual machines are usually run on server or desktop PC to run several operating systems simultaneous. About 2 years ago, I wrote about an embedded hypervisor running Linux and Android on the Pandaboard develompent board, with the goal of separating home and enterprise operating systems in mobile devices so that enterprise data is safe. Since then, virtualization extensions are now part of ARM Cortex A15 / A7, and as well as the new Cortex A53 / A57 ARMv8 64-bit cores, but in my mind at least, those where mostly designed to address the server market. It turns out hypervisors are also useful in the automotive field, where for example, the dashboard and In-vehicle infotainment (IVI) systems runs in two separate virtual machines controlling two different displays from one processor.

Mentor Embedded showcased such automotive system at ARM Techcon 2013, where they showed a Freescale i.MX6 quad core board, which looks like Freescale SABRE Lite development board, running their embedded hypervisor with two virtual machines controlling the two displays (dashboard and IVI), and they showed how they could reboot the virtual machine controlling the IVI system without affecting the dashboard display.


So I had a look into Mentor Embedded hypervisor to find out a few details.
According to Wikipedia, there are two types of hypervisors:

  • Type 1 (aka native, or bare metal) – Such hypervisor run directly on the host’s hardware, and have lower footprint, and better performance. Citrix XenServer and VMware ESX/ESXi are example of type 1 hypervisors.
  • Type 2 (hosted) – Hypervisors that run on top of an operating-system environment such as Virtualbox or VMWare Workstation.

Kernel-based Virtual Machine (KVM) is somewhat between the two types, as it requires an OS (Linux or FreeBSD), but gives direct access to the hardware via kernel modules.

Mentor Embedded hypervisor is a small footprint Type 1 (bare metal) hypervisor, supports ARM TrustZone, and several operating systems including a Yocto based embedded Linux distribution, Android, the company’s  GENIVI compliant Automotive Technology Platform, and Nucleus RTOS.

Mentor_Embedded_HypervisorAccording to the company, the key benefits of their hypervisor for developers are as follows:

  • Reduce test and debug times by consolidating multiple functions on a single multi-core compute platform
  • Take advantage of symmetric and asymmetric multiprocessing, or combinations of both (AMP/SMP)
  • Build secure, high-performance embedded systems at the highest privilege level in a system
  • Use the ARM TrustZone secure system architecture and deliver both normal and secure operations, such as secure boot and secure PIN access, within a single embedded application
  • Partition devices and memory to prevent unauthorized access to sensitive resources

I was hoping to get some numbers about data and code footprint, some estimation of the performance hit due the hypervisor, and currently supported ARM platforms, but I could not find any of that. Mentor Embedded hypervisor seems to be mainly focused on automotive applications.

If you want to find out more about applications currently using ARM hypervisors such as servers, automotive applications, and Android, you can check Xen ARM hypervisor page with links to some relevant presentations from Xen Project Developer Summit 2013.

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

XBMC on ARM News: Updated XBMC Image for i.MX6 Boards, Geniatech Releases XBMC for Android Source Code

November 14th, 2013 17 comments

Stephan Rafin has recently released a new XBMC image for Freescale i.MX6 based Wandboard development boards (dual and quad only) and Utilite computers. The images have been built with Yocto 1.5 (Dora) released last month, and are based on XBMC Gotham Alpha 9, the latest alpha before feature freezes. That means this is not a stable image just yet, but features won’t change, and this version of XBMC is now going though bug fixes.

Stephan’s XBMC image includes the following:

  • iMX6 hw accelerated decoding (VPU) for most standard formats
  • iMX CEC support (for utilite only as wandboards are not properly wired)
  • WIFI configuration thanks to network manager addon
  • Support for HDMI/SPDIF/Analog sound outputs (including pass-through for HDMI and SPDIF)
  • SMB/NFS/uPNP network shares and other standard XBMC features
  • Bug fixes against previous version – No more transient black screens, trick modes (ffwd, frwd, ..) are now working, and smoother video playback.

This version also provides better support for developers with improvement for native compilation (gcc and standard dev libraries already installed), and cross compilation (Full SDK provided for x68_64 Linux host), as well as an easier way to completely rebuild the Yocto distro (See original blog post for details).

If you want to give it a try, you can download the images corresponding to your board or device:

To install the image simply uncompress the image, and use dd (Linux) or Win32DiskImager (Windows) to copy the binary to a microSD card. Insert the microSD card into your device, and power it up to start XBMC automatically.

If you’ve got another i.MX6 Quad device such as GK802, you may want to try to use the rootfs with your own bootloader and kernel, or easier use mkxbmc.sh script written by HSTE that will generate an XBMC image automatically for GK802.

Another news for XBMC on ARM platform, for this time for XBMC for Android, is that Geniatech has released the source code for the XBMC app used on its AMLogic AML8726-M? based Android media players.

The zip file contains the modified source for XBMC Frodo 12.2, and it has been checked by dual_HD who reported the following changes against PIVOS release on XBMC forums:

  • Save settings after exit, as the earlier version can not save setting after exit sometimes.
  • Easier to exit than earlier version
  • RMVB format support
  • Long time playing 1080p smoothly

That’s not too many changes, but this is still a step in the right direction, as AFAIK, it is the first time Geniatech releases modified source code for XBMC.

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