Archive

Posts Tagged ‘debugging’

Embedded Linux Conference & Open Source Summit Europe 2017 Schedule

August 27th, 2017 3 comments

The Embedded Linux Conference & IoT summit 2017 took place in the US earlier this year in February, but there will soon be a similar event with the Embedded Linux Conference *& Open Source Summit Europe 2017 to take up in Europe on October 23 – 25 in Prague, Czech Republic, and the Linux Foundation has just published the schedule. It’s always useful to find out what is being discussed during such events, even if you are not going to attend, so I went through the different sessions, and compose my own virtual schedule with some of the ones I find the most interesting.

Monday, October 23

  • 11:15 – 11:55 – An Introduction to SPI-NOR Subsystem – Vignesh Raghavendra, Texas Instruments India

Modern day embedded systems have dedicated SPI controllers to support NOR flashes. They have many hardware level features to increase the ease and efficiency of accessing SPI NOR flashes and also support different SPI bus widths and speeds.

In order to support such advanced SPI NOR controllers, SPI-NOR framework was introduced under Memory Technology Devices (MTD). This presentation aims at providing an overview of SPI-NOR framework, different types of NOR flashes supported (like SPI/QSPI/OSPI) and interaction with SPI framework. It also provides an overview of how to write a new controller driver or add support for a new flash device.

The presentation then covers generic improvements done and proposed while working on improving QSPI performance on a TI SoC, challenges associated when using DMA with these controllers and other limitations of the framework.

  • 12:05 – 12:45 – Free and Open Source Software Tools for Making Open Source Hardware – Leon Anavi, Konsulko Group

The open source hardware movement is becoming more and more popular. But is it worth making open source hardware if it has been designed with expensive proprietary software? In this presentation, Leon Anavi will share his experience how to use free and open source software for making high-quality entirely open source devices: from the designing the PCB with KiCAD through making a case with OpenSCAD or FreeCAD to slicing with Cura and 3D printing. The talk will also provide information about open source hardware licenses, getting started guidelines, tips for avoiding common pitfalls and mistakes. The challenges of prototyping and low-volume manufacturing with both SMT and THT will be also discussed.

  • 14:20 – 15:00 – Introduction to SoC+FPGA – Marek Vašut, DENX Software Engineering GmbH

In this talk, Marek introduces the increasingly popular single-chip SoC+FPGA solutions. At the beginning, the diverse chip offerings from multiple vendors are introduced, ranging from the smallest IoT-grade solutions all the way to large industrial-level chips with focus on their software support. Mainline U-Boot and Linux support for such chips is quite complete, and already deployed in production. Marek demonstrates how to load and operate the FPGA part in both U-Boot and Linux, which recently gained FPGA manager support. Yet to fully leverage the potential of the FPGA manager in combination with Device Tree (DT) Overlays, patches are still needed. Marek explains how the FPGA manager and the DT Overlays work, how they fit together and how to use them to obtain a great experience on SoC+FPGA, while pointing out various pitfalls.

  • 15:10 – 15:50 – Cheap Complex Cameras – Pavel Machek, DENX Software Engineering GmbH

Cameras in phones are different from webcams: their main purpose is to take high-resolution still pictures. Running preview in high resolution is not feasible, so resolution switch is needed just before taking final picture. There are currently no applications for still photography that work with mainline kernel. (Pavel is working on… two, but both have some limitations). libv4l2 is doing internal processing in 8-bit, which is not enough for digital photography. Cell phones have 10 to 12-bit sensors, some DSLRs do 14-bit depth.

Differences do not end here. Cell phone camera can produce reasonable picture, but it needs complex software support. Auto-exposure / auto-gain is a must for producing anything but completely black or completely white frames. Users expect auto-focus, and it is necessary for reasonable pictures in macro range, requiring real-time processing.

  • 16:20 – 17:00 – Bluetooth Mesh with Zephyr OS and Linux – Johan Hedberg, Open Source Technology Center, Intel

Bluetooth Mesh is a new standard that opens a whole new wave of low-power wireless use cases. It extends the range of communication from a single peer-to-peer connection to a true mesh topology covering large areas, such as an entire building. This paves the way for both home and industrial automation applications. Typical home scenarios include things like controlling the lights in your apartment or adjusting the thermostat. Although Bluetooth 5 was released end of last year, Bluetooth Mesh can be implemented on any device supporting Bluetooth 4.0 or later. This means that we’ll likely see very rapid market adoption of the feature.

The presentation will give an introduction to Bluetooth Mesh, covering how it works and what kind of features it provides. The talk will also give an overview of Bluetooth Mesh support in Zephyr OS and Linux and how to create wireless solutions with them.

  • 17:10 – 17:50 – printk() – The Most Useful Tool is Now Showing its Age – Steven Rostedt, VMware

printk() has been the tool for debugging the Linux kernel and for being the display mechanism for Linux as long as Linux has been around. It’s the first thing one sees as the life of the kernel begins, from the kernel banner and the last message at shutdown. It’s critical as people take pictures of a kernel oops to send to the kernel developers to fix a bug, or to display on social media when that oops happens on the monitor on the back of an airplane seat in front of you.

But printk() is not a trivial utility. It serves many functionalities and some of them can be conflicting. Today with Linux running on machines with hundreds of CPUs, printk() can actually be the cause of live locks. This talk will discuss all the issues that printk() has today, and some of the possible solutions that may be discussed at Kernel Summit.

  • 18:00 – 18:45 – BoF: Embedded Linux Size – Michael Opdenacker, Free Electrons

This “Birds of a Feather” session will start by a quick update on available resources and recent efforts to reduce the size of the Linux kernel and the filesystem it uses.

An ARM based system running the mainline kernel with about 3 MB of RAM will also be demonstrated. If you are interested in the size topic, please join this BoF and share your experience, the resources you have found and your ideas for further size reduction techniques!

Tuesday, October 24

  • 10:55 – 11:35 – Introducing the “Lab in a Box” Concept – Patrick Titiano & Kevin Hilman, BayLibre

Continuous Integration (CI) has been a hot topic for long time. With the growing number of architectures and boards, it becomes impossible for maintainers to validate a patch on all configurations, making it harder and harder to keep the same quality level without leveraging CI and test automation. Recent initiatives like LAVA, KernelCI.org, Fuego, (…) started providing a first answer, however the learning curve remains high, and the HW setup part is not covered.

Baylibre, already involved in KernelCI.org, decided, as part of the AGL project, to go one step further in CI automation and has developed a turnkey solution for developers and companies willing to instantiate a LAVA lab; called “Lab in a Box”, it aims at simplifying the configuration of a board farm (HW, SW).

Motivations, challenges, benefits and results will be discussed, with a demo of a first “Lab in a Box” instantiation.

  • 11:45 – 12:25 – Protecting Your System from the Scum of the Universe – Gilad Ben-Yossef, Arm Holdings

Linux based systems have a plethora of security related mechanisms: DM-Crypt, DM-Verity, Secure Boot, the new TEE sub-system, FScrypt and IMA are just a few examples. This talk will describe these the various systems and provide a practical walk through of how to mix and match these mechanisms and design them into a Linux based embedded system in order to strengthen the system resilience to various nefarious attacks, whether the system discussed is a mobile phone, a tablet, a network attached DVR, a router, or an IOT hub in a way that makes maximum use of the sometime limited hardware resources of such systems.

  • 14:05 – 14:45 – Open Source Neuroimaging: Developing a State-of-the-Art Brain Scanner with Linux and FPGAs – Danny Abukalam, Codethink

Neuroimaging is an established medical field which is helping us to learn more about how the human brain works, the most complex human organ. This talk aims to cover neuroimaging systems, from hobbyist to professional, and how open source has been used to build state-of-the-art systems. We’ll have a look the general problem area, why open source was a good fit, and some examples of solutions including a commercial effort that we have been involved in bringing to market. Typically these solutions consist of specialist hardware, a bespoke software solutions stack, and a suite to manage and process the vast amounts of data generated during the scan. Other points of interest include how we approached building a maintainable and upgradeable system from the outset. We’ll also talk about future plans for neuroimaging, future ideas for hardware & discuss areas lacking good open source solutions.

  • 14:55 – 15:35 – More Robust I2C Designs with a New Fault-Injection Driver – Wolfram Sang, Renesas

It has its challenges to write code for certain error paths for I2C bus drivers because these errors usually don’t happen on the bus. And special I2C bus testers are expensive. In this talk, a new GPIO based driver will be presented which acts on the same bus as the bus master driver under inspection. A live demonstration will be given as well as hints how to handle bugs which might have been found. The scope and limitations of this driver will be discussed. Since it will also be analyzed what actually happens on the wires, this talk also serves as a case study how to snoop busses with only Free Software and OpenHardware (i.e. sigrok).

  • 16:05 – 16:45 – GStreamer for Tiny Devices – Olivier Crête, Collabora

GStreamer is a complete Open Source multimedia framework, and it includes hundreds of plugins, including modern formats like DASH, HLS or the first ever RTSP 2.0 implementation. The whole framework is almost 150MB on my computer, but what if you only have 5 megs of flash available? Is it a viable choice? Yes it is, and I will show you how.

Starting with simple tricks like only including the necessary plugins, all the way to statically compiling only the functions that are actually used to produce the smaller possible footprint.

  • 16:55 – 17:35 – Maintaining a Linux Kernel for 13 Years? You Must be Kidding Me. We Need at Least 30? – Agustin Benito Bethencourt, Codethink Ltd

Industrial grade solutions have a life expectancy of 30+ years. Maintaining a Linux kernel for such a long time in the open has not been done. Many claim that is not sustainable, but corporations that build power plants, railway systems, etc. are willing to tackle this challenge. This talk will describe the work done so far on the kernel maintenance and testing front at the CIP initiative.

During the talk it will be explained how we decide which parts of the kernel to cover – reducing the amount of work to be done and the risk of being unable to maintain the claimed support. The process of reviewing and backporting fixes that might be needed on an older branch will be briefly described. CIP is taking a different approach from many other projects when it comes to testing the kernel. The talk will go over it as well as the coming steps. and the future steps.

Wednesday, October 24

  • 11:05 – 11:45 – HDMI 4k Video: Lessons Learned – Hans Verkuil, Cisco Systems Norway

So you want to support HDMI 4k (3840×2160) video output and/or video capture for your new product? Then this is the presentation for you! I will describe the challenges involved in 4k video from the hardware level, the HDMI protocol level and up to the kernel driver level. Special attention will be given to what to watch out for when buying 4k capable equipment and accessories such as cables and adapters since it is a Wild, Wild West out there.

  • 11:55 – 12:35 – Linux Powered Autonomous Arctic Buoys – Satish Chetty, Hera Systems 

In my talk/presentation, I cover the technical, and design challenges in developing an autonomous Linux powered Arctic buoy. This system is a low cost, COTS based, extreme/harsh environment, autonomous sensor data gathering platform. It measures albedo, weather, water temperature and other parameters. It runs on a custom embedded Linux and is optimized for efficient use of solar & battery power. It uses a variety of low cost, high accuracy/precision sensors and satellite/terrestrial wireless communications.

I talk about using Linux in this embedded environment, and how I address and solve various issues including building a custom kernel, Linux drivers, frame grabbing issues and results from cameras, limited power challenges, clock drifts due to low temperature, summer melt challenges, failure of sensors, intermittent communication issues and various other h/w & s/w challenges.

  • 14:15 – 14:55 – Linux Storage System Bottleneck for eMMC/UFS – Bean Huo & Zoltan Szubbocsev, Micron

The storage device is considered a bottleneck to the system I/O performance. This thinking drives the need for faster storage device interfaces. Commonly used flash based storage interfaces support high throughputs, eg. eMMC 400MB/s, UFS 1GB/s. Traditionally, advanced embedded systems were focusing on CPU and memory speeds and these outpaced advances in storage speed improvements. In this presentation, we explore the parameters that impact I/O performance. We describe at a high level how Linux manages I/O requests coming from user space. Specifically, we look into system performance limitations in the Linux eMMC/UFS subsystem and expose bottlenecks caused by the software through Ftrace. We show existing challenges in getting maximum performance of flash-based high-speed storage device. by this presentation, we want to motivate future optimization work on the existing storage stack.

  • 15:05 – 15:45 – New GPIO Interface for User Space – Bartosz Golaszewski

Since Linux 4.8 the GPIO sysfs interface is deprecated. Due to its many drawbacks and bad design decisions a new user space interface has been implemented in the form of the GPIO character device which is now the preferred method of interaction with GPIOs which can’t otherwise be serviced by a kernel driver. The character device brings in many new interesting features such as: polling for line events, finding GPIO chips and lines by name, changing & reading the values of multiple lines with a single ioctl (one context switch) and many more. In this presentation, Bartosz will showcase the new features of the GPIO UAPI, discuss the current state of libgpiod (user space tools for using the character device) and tell you why it’s beneficial to switch to the new interface.

  • 16:15 – 16:55 – Replace Your Exploit-Ridden Firmware with Linux – Ronald Minnich, Google

With the WikiLeaks release of the vault7 material, the security of the UEFI (Unified Extensible Firmware Interface) firmware used in most PCs and laptops is once again a concern. UEFI is a proprietary and closed-source operating system, with a codebase almost as large as the Linux kernel, that runs when the system is powered on and continues to run after it boots the OS (hence its designation as a “Ring -2 hypervisor”). It is a great place to hide exploits since it never stops running, and these exploits are undetectable by kernels and programs.

Our answer to this is NERF (Non-Extensible Reduced Firmware), an open source software system developed at Google to replace almost all of UEFI firmware with a tiny Linux kernel and initramfs. The initramfs file system contains an init and command line utilities from the u-root project, which are written in the Go language.

  • 17:05 – 17:45 – Unikernelized Real Time Linux & IoT – Tiejun Chen, Vmware

Unikernel is a novel software technology that links an application with OS in the form of a library and packages them into a specialized image that facilitates direct deployment on a hypervisor. But why these existing unikernels have yet to gain large popularity broadly? I’ll talk what challenges Unikernels are facing, and discuss exploration of if-how we could convert Linux as Unikernel, and IoT could be a valuable one of use cases because the feature of smaller size & footprint are good for those resource-strained IoT platforms. Those existing unikernels are not designed to address those IoT characters like power consumption and real time requirement, and they also doesn’t support versatile architectures. Most existing Unikernels just focus on X86/ARM. As a paravirtualized unikenelized Linux, especially Unikernelized Real Time Linux, really makes Unikernels to succeed.


If you’d like to attend the real thing, you’ll need to register and pay a registration fee:

  • Early Registration Fee: US$800 (through August 27, 2017)
  • Standard Registration Fee: US$950 (August 28, 2017 – September 17, 2017)
  • Late Registration Fee: US$1100 (September 18, 2017 – Event)
  • Academic Registration Fee: US$200 (Student/Faculty attendees will be required to show a valid student/faculty ID at registration.)
  • Hobbyist Registration Fee: US$200 (only if you are paying for yourself to attend this event and are currently active in the community)

There’s also another option with the Hall Pass Registration ($150) if you just want to network on visit with sponsors onsite, but do not plan to attend any sessions or keynotes.

Embedded Linux Conference & OpenIoT Summit 2017 Schedule

February 4th, 2017 1 comment

The Embedded Linux Conference 2017 and the OpenIoT Summit 2017 will take place earlier than last year, on February  20 – 23, 2017 in Portland, Oregon, USA. This will be the 12th year for ELC, where kernel & system developers, userspace developers, and product vendors meet and collaborate. The schedule has been posted on the Linux Foundation website, and whether you’re going to attend or not, it’s always informative to check out the topics.

So as usual, I’ll make a virtual schedule for all 5 days.

Monday, February 20

For the first day, the selection is easy, as choices are limited, and the official first day it actually on Tuesday. You can either attend a full-day paid training sessions entitled “Building A Low Powered Smart Appliance Workshop“, and the only session that day:

  • 14:30 – 15:20 – Over-the-air (OTA) Software Updates without Downtime or Service Disruption, by Alfred Bratterud, IncludeOS

Millions of consumers are at risk from security vulnerabilities caused by out-of-date software. In theory all devices should update automatically, but in practice, updating is often complicated, time-consuming and requires manual intervention from users. IncludeOS is a unikernel operating system that enables over-the-air (OTA) software updates of connected devices without downtime or service disruption.

The talk starts with a brief introduction to unikernels, their capabilities and how they can be very beneficial for IoT products from security, performance and operational perspectives. Then we give an overview of the IncludeOS Live Update functionality, which we use to demonstrate an atomic update of a device using Mender.io.

Tuesday, February 21

  • 10:30 – 11:20 – Bluetooth 5 is here, by Marcel Holtmann, Open Source Technology Center, Intel

The next version of Bluetooth has been released just a few month ago. This presentation gives an introduction to Bluetooth 5 and its impacts on the ecosystem. It shows new and exciting use cases for low energy devices and IoT with the focus on Linux and Zephyr operating systems.

With Bluetooth 5, the wireless technology continues to evolve to meet the needs of the industry as the global wireless standard for simple and secure connectivity. With 4x range, 2x speed and 8x broadcasting message capacity, the enhancements of Bluetooth 5 focus on increasing the functionality of Bluetooth for the IoT. These features, along with improved interoperability and coexistence with other wireless technologies, continue to advance the IoT experience by enabling simple and effortless interactions across the vast range of connected devices.

  • 11:30 – 12:20 – Embedded Linux Size Reduction Techniques, by Michael Opdenacker, Free Electrons

Are you interested in running Linux in a system with very small RAM and storage resources? Or are you just trying to make the Linux kernel and its filesystem as small as possible, typically to boot faster?

This talk will detail approaches for reducing the size of the kernel, of individual applications and of the whole filesystem. Benchmarks will you show how much you can expect to save with each approach.

  • 14:00 – 14:50 – Moving from IoT to IIoT with Maker Boards, Linux, and Open-Source Software Tools, by Matt Newton, Opto 22

In this session, developers will learn how to use the open-source tools, maker boards, and technology they’re already familiar with to develop applications that have the potential to deliver a massive positive impact on society. There are billions of devices–sensors, I/O, control systems, motors, pumps, drives–siloed behind proprietary control and information systems, waiting to be tapped into. This workshop is geared towards teaching the developer community how to use the tools they’re already familiar with to access, monitor, and manage these assets to create a potentially huge positive impact on our way of life.

  • 15:00 – 15:50 – Debugging Usually Slightly Broken (USB) Devices and Drivers, by Krzysztof Opasiak, Samsung R&D Institute Poland

USB is definitely the most common external interface. Millions of people are using it every day and thousands of them have problems with it. Driver not found, incorrect driver bound, kernel oops are just examples of common problems which we are all facing. How to solve them or at least debug? If you’d like to find out, then this talk is exactly for you!

We will start with a gentle introduction to the USB protocol itself. Then standard Linux host side infrastructure will be discussed. How drivers are chosen? How can we modify matching rules of a particular driver? That’s only couple of questions which will be answered in this part. Final part will be an introduction to USB communication sniffing. Krzysztof will show how to monitor and analyze USB traffic without expensive USB analyzers.

  • 16:20 – 17:10 – SDK in the Browser for Zephyr Project, by Sakari Poussa, Intel

Starting a development for embedded IoT system can be a tedious task, starting with the tools and SDK installations. You also need to have proper operating system, cables and environment variables set up correctly in order to do anything. This can take hours if not days. In this tutorial, we present an alternative, fast and easy way to start IoT development. All you need is your Zephyr board, USB cable and Web Browser. The Zephyr will be running JavaScript Runtime for Zephyr including a “shell” developer mode and Web USB. The Browser has the IDE where you can edit and download code to your board. No compiling, flashing or rebooting is required. During the tutorial, we have few boards available and participants can start developing applications for zephyr in 5 minutes.

  • 17:20 – 18:10 – Fun with Zephyr Project and BBC micro:bit, by Marcel Holtmann, Open Source Technology Center, Intel

This presentation shows how Zephyr empowers the BBC micro:bit devices and its Bluetooth chip to do fun things.

  • 18:15 – 19:00 – Yocto Project & OpenEmbedded BoF, by Sean Hudson, Mentor

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

Wednesday, February 22

  • 10:40 – 11:30 – Journey to an Intelligent Industrial IOT Network, by Giuseppe (Pino) de Candia, Midokura

There are 66 million networked cameras capturing terabytes of data. How did factories in Japan improve physical security at the facilities and improve employee productivity? With the use of open systems, open networking, open IOT platforms of course!

Edge Computing reduces possible kilobytes of data collected per second to only a few kilobytes of data transmitted to the public cloud every day. Data is aggregated and analyzed close to sensors so only intelligent results need to be transmitted to the cloud while non-essential data is recycled. The system captures all flow information, current and historical.

Pino will draw from real IIOT use cases and discuss the variety of operations and maintenance tool to support proactive policy-based flow analysis for edge computing or fog nodes enabling IT and OT end to end visibility from a network perspective.

  • 11:40 – 12:30 – SecurityPI: IronClad your Raspberry Pi, by Rabimba Karanjai

Raspberry Pi has garnered huge interest in last few years and is now one of the most popular Linux boards out there sparking all kinds of DIY projects. But most of these function with the default settings and connect to the Internet. How secure is your Pi? How easy is it for someone to take over and make it part of a botnet or sneak peek on your privacy?

In this talk Rabimba Karanjai will show how to harden the security of a Raspberry Pi 3. He will showcase different techniques with code examples along with a toolkit made specifically to do that. This cookbook will harden the device and also provide a way to audit and analyze the behavior of the device constantly. After all, protecting the device finally protects us all, by preventing another dyndns DDOS attack.

  • 14:00 – 14:50 – IoTivity-Constrained: IoT for Tiny Devices, by Kishen Maloor, Intel Corporation

The IoT will be connected by tiny edge devices with resource constraints. The IoTivity-Constrained project is a small-footprint implementation of the Open Connectivity Foundation’s (OCF) IoT standards with a design that caters to resource-constrained environments. It is lightweight, maintainable and quickly customizable to run on any hardware-software deployment.

This talk will present IoTivity-Constrained’s architecture, features, APIs, and its current integration with a few popular real-time operating systems. It will end with a discussion of IoTivity-Constrained’s adaptation for the Zephyr RTOS.

  • 15:00 – 15:50 – RIOT: The Friendly Operating System for the IoT (If Linux Won’t Work, Try RIOT), by Thomas Eichinger, RIOT-OS

This presentation will start with RIOT’s perspective on the IoT, focusing on CPU- and memory-constrained hardware communicating with low-power radios. In this context, similarly to the rest of the Internet, a community-driven, free and open source operating system such as RIOT is key to software evolution, scalability and robustness. After giving an overview to RIOT’s overall architecture and its modular building blocks, the speaker will describe in more detail selected design decisions concerning RIOT’s kernel, hardware abstraction and network stack. Furthermore, the talk will overview the development and organizational processes put in place to help streamline the efforts of RIOT’s heterogeneous community. The presentation will end with an outlook on upcoming features in RIOT’s next releases and longer-term vision.

  • 16:20 – 17:10 – Graphs + Sensors = The Internet of Connected Things, by William Lyon, Neo4j

There is no question that the proliferation of connected devices has increased the volume, velocity, and variety of data available. Deriving value and business insight from this data is an ever evolving challenge for the enterprise. Moving beyond analyzing just discrete data points is when the real value of streaming sensor data begins to emerge. Graph databases allow for working with data in the context of the overall network, not just a stream of values from a sensor. This talk with cover an architecture for working with streaming data and graph databases, use-cases that make sense for graphs and IoT data, and how graphs can enable better real-time decisions from sensor data. Use cases covered will include data from oil and gas pipelines and the transportation industry.

Thursday, February 23

  • 9:00 – 9:50 – Android Things: High Level Introduction, by Anisha Dattatraya & Geeta Krishna, Intel Corporation

An overview of the basic concepts behind Android things and its structure and components is presented. Upon completion of this session, you should have a good overview of how Android Things brings simplicity to IoT software and hardware development by providing a simple and secure deployment and update model. This presentation provides the context needed for the Android Things Tutorial and other deep dive sessions for Android Things.

  • 10:00 – 10:50 – 2017 is the Year of the Linux Video Codec Drivers, by Laurent Pinchart, Ideas on Board

Codecs have long been the poor relation of embedded video devices in the Linux kernel. With the embedded world moving from stateful to stateless codecs, Linux developers were left without any standard solution, forcing vendors and users to resort to proprietary APIs such as OpenMAX.

Despair no more! Very recent additions to V4L2 make it possible to support video codecs with standard Linux kernel APIs. The ChromeOS team has proved that viable solutions exist for codecs without resorting to the proprietary options. This presentation will explain why video codecs took so long to properly support, and how the can be implemented and used with free software and open APIs.

  • 11:10 – 12:00 – Embedded Linux – Then and Now at iRobot, by Patrick Doyle, iRobot

Mr. Doyle will review the history of the use of embedded Linux at a commercial company (iRobot) and discuss the challenges faced (and overcome) then and now. While home routers and WiFi Access Point developers have enjoyed the benefits (and risks) of deploying Linux based products, that has not always been the case for other products. With the advent of low cost cell phone processors and vendor support for Linux, it is now possible to embed a Linux based solution in a consumer retail product such as a vacuum cleaner, minimizing risk and development time in the process.

  • 12:10 – 13:00 – Mainline Linux on AmLogic SoCs, by Neil Armstrong, BayLibre

Inexpensive set-top boxes are everywhere and many of them are powered by AmLogic SoCs. These chips provide 4K H.265/VP9 video decoding and have fully open source Linux kernel and U-boot releases. Unfortunately most of the products based on these devices are running an ancient 3.10 Android kernel. Thankfully AmLogic has put a priority on supporting their chips in the mainline Linux kernel.

Neil will present the challenges and benefits to pushing support for these SoCs upstream, as well as the overall hardware architecture in order to understand the Linux upstreaming decisions and constraints. He will also detail the future development plans aiming to offer a complete experience running an Upstream Linux kernel.

  • 14:30 – 15:20 – OpenWrt/LEDE: When Two become One, by Florian Fainelli, Broadcom Ltd

OpenWrt is a popular Linux distribution and build system primarily targeting the Wi-Fi router/gateway space. The project has been around for more than 12 years, but has recently experienced a schism amongst the developers over various issues.  This resulted in the formation of the LEDE project.  This split has caused confusion among the community and users. This presentation will cover what OpenWrt/LEDE projects are, what problems they are solving in the embedded Linux space, and how they do it differently than the competition. We will specifically focus on key features and strengths: build system, package management, ubus/ubox based user space and web interface (LuCI). We will demonstrate a few typical use cases for the audience. Finally, the conclusion will focus on the anticipated reunification of the two projects into one and what this means for the community and the user base.

  • 15:30 – 16:20 – Unifying Android and Mainline Kernel Graphics Stack, by Gustavo Padovan, Collabora Ltd.

The Android ecosystem has tons of out-of-tree patches and a good part of them are to support Graphics drivers. This happened because the Upstream Kernel didn’t support everything that is needed by Android. However the Mainline Graphics Stack has evolved in the last few years and features like Atomic Modesetting and Explicit Fencing support are making the dream of running Android on top of it possible. In other words, we will have Android and Mainline Kernels sharing the same Graphics stack!

This talk will cover what has been happening both on Android and Mainline Graphics Stacks in order to get Android to use the Upstream Kernel by default, going from what Android have developed to workaround the lack of upstream support to the latest improvements on the Mainline Graphics Stack and how they will fit together.

  • 16:30 – 17:20 – Developing Audio Products with Cortex-M3/NuttX/C++11, by Masayuki Ishikawa, Sony

Sony released audio products with Cortex-M3 in late 2015. Considering development efficiency, code reusability, feature enhancements and training costs, we decided to port POSIX-based open source RTOS named NuttX to ON Semiconductor’s LC823450 by ourselves, modified the NuttX for fast ELF loading, implemented minimum adb (Android debug bridge) protocols for testing purpose, DVFS in autonomous mode with a simple CPU idle calculation, wake_lock and stack trace which are popular in Linux/Android worlds. Middleware and Applications were developed in C++11 with LLVM’s libc++ which are also popular for large software systems. To debug the software, we implemented NuttX support for OpenOCD so that we can debug multi threaded applications with gdb. In addition, we used QEMU with the NuttX to port bluetooth stack and in-house GUI toolkit and finally got them work before we received LC823450 FPGA.


That’s all. I had to make choice, and did not include some sessions I found interested due to scheduling conflicts such as “Comparing Messaging Techniques for the IoT” by Michael E Anderson, The PTR Group, inc, and “Improving the Bootup Speed of AOSP” by Bernhard Rosenkränzer, Linaro.

You’ll need to register and pay an entry fee if you want to attend the Embedded Linux Conference & OpenIoT Summit:

  • Early Registration Fee: US$550 (through January 15, 2017)
  • Standard Registration Fee: US$700 (January 16, 2017 – February 5, 2017)
  • Late Registration Fee: US$850 (February 6, 2017 – Event)
  • Academic Registration Fee: US$175 (Student/Faculty attendees will be required to show a valid student/faculty ID at registration.)
  • Hobbyist Registration Fee: US$175 (only if you are paying for yourself to attend this event and are currently active in the community)

Getting Started with Pine64 PADI IoT Stamp – Part 2: Serial Console, GCC SDK, Flashing & Debugging Code

November 28th, 2016 6 comments

PADI IoT Stamp module powered by Realtek RTL8710AF ARM Cortex M3 WiFi SoC is a potential competitor to Espressif ESP8266 modules.  Pine64, the manufacturer of the module, sent me their kit with a $2 IoT stamp, a breakout board, a USB to TTL debug board and a J-Link debug board. In the first part of the review I’ve shown the hardware and how to assemble PADI IoT stamp kit. In the second part I’m going to write a tutorial / getting start guide showing how to control the board with AT commands, build the firmware with GCC SDK, and finally demonstrate how to flash and debug the firmware with the J-Link debugger.

The Quick Start Guide indicates you need to connect the USB to TTL debug board to UART2 instead of UART1 as I did on the very similar B&T RTL-00 RTL8710AF module, and set connection settings to 38400 8N1. This did not work for me, and I had indeed to connect the USB to TTL board to UART0 instead (GB0 & GB1 pins).

Click to Enlarge

Click to Enlarge

I’ll be using a Ubuntu 16.04 (Linux) computer for this quick start guide, but you can work with Windows and Mac OS X too, as tools as available for all three operating systems. So in my case I configure minicom to 38400 8N1 using /dev/ttyUSB0 device, and the boot log is almost the same as B&T RTL-00 with the same ROM version and toolchain:

There are however some changes, and for example the firmware used on PADI IoT Stamp has slightly more heap available. The guide also mentions ATS? should show all command available, but it’s not working for me:

Typing “help” as I did with RTL-00 module does not work either, and that does not look since documentation appears to be wrong again, but that’s not a big deal since we have all AT commands listed in that document. I could configure it as “IoTSTAMP” access point:

and enable the HTTP server with ATSW AT command:

It rebooted the IoT stamp with the same WiFi setting, and I could connect to its demo web page for configuration.

Click to Enlarge

Click to Enlarge

Since everything is so similar to B&T RTL-00 I’ll just point out to the post “Getting Started with B&T RTL-00 RTL8710 Module – Serial Console, AT Commands, and ESP8266 Pin-to-Pin Compatibility” for more tests with different AT commands. I still tried to turn on and off the a GPIO pin using the ATSG command since it’s something I did not do with RTL-00:

The first line pull GC0 pin to high level (3.3V), while the second command brings it down to low level (0V). Details about ATSG command:

I did not connect an LED, but instead measured the value with multimeter and could confirm the voltage level was right in both cases.

B&T provided an SDK which required a an unlicensed / pirated version of IAR ARM Workbench, but Pine64/Realtek have released a GCC SDK that do you require you to use pirated software. You can download sdk-ameba-rtl8710af-v3.5a_without_NDA_GCC_V1.0.0 (198 MB) directly from Pine64 website. After unzipped the SDK you can enter sdk-ameba-rtl8710af-v3.5a_without_NDA_GCC_V1.0.0 directory, and open readme.txt to have a look at RTL8710 GCC SDK structure:

Since I only aim to write a getting started guide I won’t go through all of it, but we can see the low level source code & binary, some documentation, an example project, and some tools include Android and iOS apps, OTA download server and more.

Nevertheless the readme.txt tells us to first read “UM0096 Realtek Ameba-1 build environment setup – gcc.pdf” in order to setup our development environment. The instructions are available with Windows and Linux, but again I’m only test them using Ubuntu 16.04. They’ll be very similar since you’ll rely on cygwin in Windows, and if you run the latest Windows 10 you should be able to install Windows subsystem for Linux, and use the Linux instructions.

First you have to make sure some tools and libraries are installed:

then we can build the sample project:

If everything goes well the log should end showing “Image manipulating” as follows:

We can find the application in application/Debug/bin directory:

There’s also an ota.bin image which might be usable using OTA firmware update documentation, but for this guide I want to use the J-Link debugger that the company sent me instead. The GCC SDK is not for PADI IoT stamp, but instead for Realtek Ameba Arduino board, and you’ll be asked to connect the board through one of the micro USB port. That won’t work with IoT stamp since there’s no USB port at all, and instead you’ll need to go and back forth between multiple documentation, and connect the board as per the JTAG/SWD connections diagram shown below.

padi-iot-stamp-jlink-swd-connectionThat document also mentions that:

Required external power VCC 3.3V, JTAG/SWD didn’t supply power to the PADI IoT Stamp, VCC connection from PADI IoT Stamp is used by JTAG/SWD as voltage reference only.

At first, I did not see that, and used it without external power supply, but since I was not successful with the J-Link debugger (for another reason), so I ended up inserting PADI IoT stamp into a breadboard and added Ywrobot power board to provide an external 3.3V power source.

Click to Enlarge

Click to Enlarge

I also soldered a 22uF capacitor, since I’ve read it’s not optional, as it may affect WiFi connection due to power issue. Once I complete the wiring, I connected the debugger to my computer:

There are two sets of instructions in UM96 document to download and flash the code: OpenOCD/CMSIS-DAP and JLink, so since I had a J-Link debugger, I went with that latter. First you have to download J-Link Software and Documentation pack and for my system I selected ” Linux, DEB Installer, 64-bit V6.12″. After accepting the EULA, I got JLink_Linux_V612_x86_64.deb file which I installed as follows:

Now we can start JLink GBD server for a Cortex-M3 as explained in the document:

So the JLink debugger is detected, but failed to connect to the target. Apart from the last error, everything looks exactly as in the documentation. That’s when I started to add an external power boar, solder the capacitor, and double check my connection. But finally after many trials and errors, I realized that I had to use a SWD connection (SWCLK/SWDIO signals) instead of JTAG…

Now keep the GDB server running, open a new terminal windows in the same directory (where you’ve built the code), and run make flash to download and flash the code to the board:

There will be a lot of message as above, and the GDB Server windows will show its own set of messages:

Now if you want to debug your code, you can run make debug to start the gdb console:

At this point, you’ll just need to use gdb command out of the scope of this post, but you can find tutorials online, for example this. You can also run make ramdebug in order to write ram_all.bin to RAM then enter gdb debug.

So that’s only the debug part, but if you want to create your own application, you’ll need to study the source code, and there are plenty of examples to help you in project/realtek_ameba1_va0_example/example_sources folder:

Note that this is only useful is you want to use PADI IoT stamp as a standalone module, and if you connect it to another board (e.g. Arduino) you can control it through the AT command set.

So while PADI IoT stamp is a usable platform with its GCC SDK, currently documentation is not always correct, and development should be reserved to experienced developers, as it’s not exactly as straightforward as Arduino, Lua or other firmware often used in ESP8266. Arduino will most likely never supported on IoT stamp due to memory constraints, but mbed support should come to the module in the first part of next year, which will make everything much easier.

If you want to go further, you can read the documentation on PADI IoT stamp resource page and the GCC SDK, checkout rebane’s openocd example, and/or read a forum post about controlling IoT stamp through Pine A64 board using Python.

If you want to play with your own, you can get PADI IoT stamp for $1.99, the breakout board kit for $0.5, the USB to serial debug board for $1.99, and the JLink (SWD) debugger is $7.99 on Pine64 online store. Please note that the two debug boards are standard components, so you may use your own, if you already have such hardware.

Tizen Studio 1.0 Replaces Tizen SDK for Smartphones, Wearables and TVs

September 5th, 2016 No comments

Tizen has converged all Tizen SDK for mobile, wearables, and TV to Tizen Studio since the beginning of the month, and released Tizen Studio 1.0 for developers interested in developing app for Tizen smartphones, TVs and/or smartwatches such as the latest Samsung Gear S3.

Tizen_Studio_1.0So instead, you’ll now be able to select the targets platform and profiles within Tizen Studio. Some of the key changes made to the development environment in Tizen Studio 1.0 include:

  1. Launching tools: Installer, Uninstaller, and Package Manager
  2. Developing tools: IDE perspective theme, Project Wizard, Certificate Manager, and Menu and tool icons
  3. UI tools: UI Builder, Component Designer, and EDC Editor
  4. Testing tools: Emulator
  5. Testing tools: Dynamic Analyzer for memory and CPU profiling
  6. Other improvements in Tizen application development environment
Dynamic Analyzer in Tizen Studio 1.0

Dynamic Analyzer in Tizen Studio 1.0

Tizen Studio is available for the 32-bit and 64-bit version of Windows,  and Ubuntu, as well as for Mac OS with one version with the graphics IDE, and a smaller command line interface only version.

You can find a few more details about Tizen Studio on a Samsung newsroom post.

How Fix Apps Crashing at Launch in Android 6.0 (in Mediatek Phones) ?

September 3rd, 2016 8 comments

I’ve recently received a new Android 6.0 Marshmallow smartphone powered by Mediatek Helio X20 processor, namely Vernee Apollo Lite, and one of the issues I encountered is that some applications such as Firefox and MAPS.ME would crash when I tried to launch them. The problem was reproducible 100% of the time, and occurred from the very first time I tried to start the app. I’d get a message like “Unfortunately MAPS.ME has stopped” with two buttons: REPORT or OK.

Android_Unfortunately_App_Has_Stopped

So I asked on Vernee forums to report the issue, and see if other people had the same problem. One replied had the same problem, but a simple reboot would fix the issue, while the other proposed to clear the cache. I had not considered that option since the crash occurred from the very first time, but I tried anyway. Go to the App list, drag and drop the problematic app to App Info.

Click to Enlarge

Click to Enlarge

Then tap on Storage to access the options to clear cache or data. MAPS.ME used 12KB data, and 12KB cache. I tapped on Clear Data, and tried to launch the app. Same issue. But then I also noticed the app was installed in the SD card, which I used a “device storage” also referred as “Adoptable storage” in Android 6.0. So I tapped on Change, and selected Internal storage instead.

ANdroid_6.0_Clear_Cache_Internal_storage_SD_cardIt still failed, but I decided to reboot the phone to check whether it would work, and I could see the message “Optimizing 1 of 1 app” during boot, and tried launched MAPS.NE again and success!

MAPS.ME_App

I successfully repeated the same procedure, i.e. moving the app from SD card to Internal Storage and rebooting the phone, with Firefox. It’s possible that it might be a Mediatek Android 6.0 SDK bug, rather than a bug specific to my device, so hopefully it may help others too.

Linux 4.7 Release – Main Changes, ARM and MIPS Architectures

July 25th, 2016 7 comments

Linux 4.7 is out:

So, after a slight delay due to my travels, I’m back, and 4.7 is out.

Despite it being two weeks since rc7, the final patch wasn’t all that big, and much of it is trivial one- and few-liners. There’s a couple of network drivers that got a bit more loving. Appended is the shortlog since rc7 for people who care: it’s fairly spread out, with networking and some intel Kabylake GPU fixes being the most noticeable ones. But there’s random small noise spread all over.

And obviously, this means that the merge window for 4.8 is open.Judging by the linux-next contents, that’s going to be a bigger release than the current one (4.7 really was fairly calm, I blame at least partly summer in the northern hemisphere).

Linus

Linux 4.6 brought USB 3.1 superspeed, OrangeFS distributed file system, 802.1AE MAC-level encryption (MACsec), and BATMAN V protocol support, improved the reliability of OOM task killer, and more.

Linux_4.7_Changelog

Linux 4.7 most noticeable changes include:

  • Support for Radeon RX480 GPUs
  • Parallel directory lookups –  The directory cache caches information about path names to make them quickly available for pathname lookup. This cache uses a mutex to serialize lookup of names in the same directory.  The serializing mutex has been switched to a read-write semaphore in Linux 4.7, allowing for parallel pathname lookups in the same directory. Most filesystems have been converted to allow this feature.
  • New “schedutil” frequency governor –  There are two main differences between it and the existing governors. First, it uses information provided by the scheduler directly for making its decisions. Second, it can invoke cpufreq drivers and change the frequency to adjust CPU performance right away, without having to spawn work items to be executed in process context or similar, leading to lower latency to make frequency changes.
  • Histograms of events in ftrace –  . This release adds the “hist” command, which provides the ability to build “histograms” of events by aggregating event hits. As an example, let’s say a user needs to get a list of bytes read from files from each process. You can get this information using hist triggers, with the following command command:

    other data can also be retrieve by using fields found in /sys/kernel/debug/tracing/events/syscalls/sys_enter_read/format. The output will look like:

    More more details check ftrace documentation and related LWN article.
  • EFI ‘Capsule’ firmware updates –  The EFI Capsule mechanism allows to pass data blobs to the EFI firmware. The firmware then parses them and makes some decision based upon their contents. The most common use case is to bundle a flashable firmware image into a capsule that the firmware can use to upgrade in the next boot the existing version in the flash. Users can upload capsule by writing the firmware to the /dev/efi_capsule_loader device
  • Support for creating virtual USB Device Controllers in USB/IP – USB/IP allows to share real USB devices over the network. Linux 4.7 brings the ability to create virtual USB Device Controllers without needing any physical USB device, using the USB gadget subsystem. For what purpose? For example, for improving phone emulation in development environments, for testing USB and for educational purposes.

Some of ARM specific improvements and new features include:

  • Allwinner:
    • Allwinner A13/R8 – Display Engine support
    • Allwinner A10/A20 – S/PDIF Support
    • Allwinner A31/A23/H3 – DMAengine improvements for H3 audio support
    • Allwinner H3 – USB support (multi-reset line support delayed til 4.8)
    • New hardware supported
      • Tablets – Dserve DSRV9703C, Polaroid MID2809PXE4, Colorfly e708 q1, Difrence DIT4350
      • Boards – Olimex A20 OLinuXino LIME2, Xunlong Orange Pi 2, Orange Pi One, and Orange Pi PC
  • Rockchip:
    • Thermal management – Rockchip driver support for RK3399, RK3366
    • Added Rockchip RK3399 clock and reset controller
    • Pinctrl – Support the .get_direction() callback in the GPIO portions
    • New RK3399 device tree support
    • Added Rockchip DisplayPort PHY support
    • Added Geekbuying GeekBox, RK3399 Evaluation Board, mqmaker MiQi SBC
  • Amlogic
    • Added Meson GXBB (S905) pinctrl support
    • Fixed memory nodes on Vega S95 DTS
    • Added Hardkernel ODROID-C2, Amlogic Meson GXBB P200 and P201 development systems
  • Samsung
    • Added Samsung ARTIK5 evaluation board
    • Added generic exynos bus frequency driver
    • Added pinctrl driver for Samsung EXYNOS5440 SoC
    • DTS updates & fixes:
      • Fix s5p-mfc driver probe on Exynos542x Peach boards (need to provide MFC memory banks). On these boards this was broken for long time but apparently no one enabled this driver till now.
      • Fix creation of debugfs entries for one regulator on Exynos4210 Trats board.
      • Fix probing of max8997 MFD driver (and its children) because of missing interrupt. Actually the current version of the driver probes (just without interrupts) but after switching to regmap and regmap-irq, the interrupt will be mandatory.
      • Cleanup regulator bindings on Exynos5420 boards.
      • Support MIC bypass in display path for Exynos5420.
      • Enable PRNG and SSS for all Exynos4 devices.
      • Add PL330 DMA controller and Thermal Management Unit to Exynos 7
      • Enable accelerated AES (Security SubSystem) on Exynos4412-based boards
      • Enable HDMI CEC on Exynos4412-based Odroid.
      • Add regulator supplies for eMMC/SD on Odroid XU3/XU4.
      • Fix DTC unit name warnings.
  • Qualcomm
    • Qualcomm IPQ4019 support in pinctrl
    • Change SMD callback parameters
    • 96Boards HiKey based on the Hisilicon Hi6220 (Kirin 620) gets an overhaul with a lot of devices enabled in the DT.
    • Added Qualcomm IPQ4019 “Internet processor”,  Arrow DragonBoard 600c (96boards) with APQ8064 Snapdragon 600
    • Device tree changes:
      • Add additional nodes for APQ8064
      • Fix APQ8064 pinctrls for i2c/spi
      • Add MSM8974 nodes for smp2p and smd
      • Modify MSM8974 memory reserve for rfsa and rmtfs
      • Add support for BQ27541 on Nexus7
  • Mediatek
    • Added  CPU power cooling model to Mediatek thermal driver
    • Added Mediatek MT8173 display driver, DRM driver, and thermal controller
    • Added MIPI DSI sub driver
    • 4GB mode support for Mediatek IOMMU driver
    • DTS updates:
      • add pinctrl node for mt2701
      • add mt2701 pmic wrapper binding
      • add auxadc binding document
  • Other new ARM hardware or SoCs – LG1312 TV SoC, Hisilicon Hip06/D03, Google Pixel C, NXP Layerscape 1043A QDS development board, Aspeed AST2400/AST2500, Oxnas 810SE (WD My Book World Edition), ARM MPS2 (AN385 Cortex-M3 & AN399 Cortex-M7), Ka-Ro electronics industrial SoM modules, Embest MarS Board, Boundary Devices i.MX6 Quad Plus Nitrogen6_MAX and SoloX Nitrogen6sx embedded boards, Technexion Pico i.MX6UL compute module, ZII VF610 Development Board, Linksys Viper (E4200v2 / EA4500) WiFi router, Buffalo Kurobox Pro NAS, samtec VIN|ING 1000 vehicle communication interface, Amazon Kindle Fire first generation tablet and ebook reader,  OnRISC Baltos iR 2110 and 3220 embedded industrial PCs, TI AM5728 IDK, TI AM3359 ICE-V2, and TI DRA722 Rev C EVM development systems.

MIPS architecture changelog:

  • Add support for relocatable kernel so it can be loaded someplace besides the default 1MB.
  • Add KASLR support using relocatable support
  • Add perf counter feature
  • Add support for extending builtin cmdline
  • seccomp: Support compat with both O32 and N32
  • ath79: Add support for DTB passed using the UHI boot protocol, remove the builtin DTB support, add zboot debug serial support, add initial support for DPT-Module, Dragino MS14 (Dragino 2), and Onion Omega
  • BMIPS: Add BCM6358 support, add Whirlwind (BMIPS5200) initialization code, add support for BCM63268
  • Lantiq: Add support for device tree file from boot loader
  • Add basic Loongson 3A support
  • Add support for CN73xx, CN75xx and CN78xx
  • Octeon: Add DTS for D-Link DSR-1000N
  • Detect DSP v3 support
  • Detect MIPSr6 Virtual Processor support
  • Enable ptrace hw watchpoints on MIPS R6
  • Probe the M6250 CPUand the P6600 core
  • Support sending SIG_SYS to 32bit userspace from 64bit kernel
  • qca: introduce AR9331 devicetree
  • ralink: add MT7628 EPHY LEDs pinmux support
  • smp-cps: Add nothreads kernel parameter
  • smp-cps: Support MIPSr6 Virtual Processors
  • MIPS64: Support a maximum at least 48 bits of application virtual

For even much more details, you can check out Linux 4.7 changelog with comments only generated using git log v4.6..v4.7 --stat. Alternatively, and much easier to read, you can head to kernelnewbies.org to learn more about Linux 4.7 changes.

Embedded Systems Conference 2016 Schedule – April 13-14

January 29th, 2016 No comments

The Embedded Systems Conference 2016 will take place in Boston on April 13-14, and the organizers have now released the schedule, minus some keynotes, which features four main tracks: Embedded Hardware, Embedded Software, Connected Devices and the Internet of Things (IoT), and the ESC Engineering Theatre.

Embedded_Systems_Conference_2016

As usual, I’ve gone through the list of talks and composed my own little virtual schedule which ended up with sessions focusing on power management, IoT, and security, as well some optimization and drivers development talks among others, such as patents, and the origin of Gerber files.

Wednesday 13

  • 8:00 – 9:00 – Power Management in Embedded Systems by Colin Walls, Embedded Software Technologist, Mentor Graphics

The importance of power management in today’s embedded designs has been steadily growing as an increasing number of battery powered devices are developed. In this session, we will discuss design considerations that should be made when starting a new power sensitive embedded design, which include:

  • Choosing the hardware with desired capabilities
  • Defining a hardware architecture that will allow software to dynamically control power consumption
  • Defining appropriate power usage profiles
  • Making the appropriate choice of an operating system and drivers
  • Choosing measurable power goals and providing these goals to the software development team to track throughout the development process.
  • 9:00 – 9:45 – Creating an IoT Device in Only 45 Minutes by Jacob Beningo,  Consultant, Beningo Engineering

Developing an IoT system seems extremely complex. Security, remote updating, sensor interfacing and battery life are just a few issues facing developers of connected systems. This session will reorient the embedded system engineer and expose them to an IoT platform known as the Electric Imp. We’ll walk through the design and implementation of an IoT device in 45 minutes. Attendees will gain a paradigm shift in thinking about how to design systems and be introduced to how embedded systems will be designed in the coming decade.

  • 10:00 – 10:45 – Embedded Software Optimization: Architecture, Design, & Implementation by Rob Oshana, Director of SW, Freescale

This session discusses a set of techniques used in practice to optimize embedded applications for performance, memory, and power. A set of performance optimization techniques will be examined, starting with the proper mapping of software algorithm to hardware architecture, along with algorithmic transformation, C-level optimization techniques such partial summation and multi-sampling, loop unrolling and software pipelining. Practical memory optimization techniques such as data structure use and alignment, as well as power optimization techniques such as dynamic voltage frequency scaling, cache optimization and a “top ten” list of other techniques, will be discussed. This session will also cover common “optimization blockers” and how to eliminate them.

  • 11:00 – 11:45 – Considerations for Security in Embedded Systems by Ahmed Refaey Hussein, Sr. Systems Architect, Mircom Group of Companies, and Khaled Loukhaoukha, Sr. Research Officer, Centre de Recherche Développement, Bouchaoui

Security has become a crucial consideration and is one of the most important design goals for an embedded system. In this session, we will introduce security in embedded systems, and provide two current approaches to security countermeasure for memory corruption and attacks. The two techniques are dynamic information flow tracking (DIFT) and same technique with secure page allocation (PIFT).

  • 14:00 – 14:45 – Code Analysis Made Easy by Rafael Taubinger,  Senior Field Applications Engineer, IAR Systems

The widely used C/C++ languages are known for their flexibility and proximity to hardware. However, these languages also feature a huge number of undefined behaviors and their flexibility lets you write code that may not work the way you intended; your code could be syntactically correct but nuances of the language may force the code to operate in unexpected ways. In the best case, these mistakes are detected during the development cycle, but they could easily escape into the field and necessitate a product recall. Fortunately, static- and runtime-code analysis can be integrated seamlessly into your workflow. This session will demonstrate how they can be used to detect potential errors in your application so errors can be eliminated as early and cheaply as possible.

  • 15:00 – 15:45 – Real-Time Software Using Micro Python by Jacob Beningo, Consultant, Beningo Engineering

Python has become a very popular scripting language and has been deployed on many production systems in addition across multiple application domains. Micro Python is a lean and efficient Python 3 port designed to run on an ARM Cortex-M microcontroller. This session will explore real-time embedded software concepts as they relate to Micro Python.

Attendees can expect to learn key concepts in areas, such as: Python, Python vs C, Real-time Programming, Object Oriented Design, Rapid Prototyping, Controlling MCU Peripherals from Micro Python, Exception and Error Handling, and Real-Time Scheduler Concepts and Design.

  • 16:00 – 16:45 – Marketing Malarkey and the Truth About Ultra-Low Power Design by Jack Ganssle,  Consultant, TGG

Vendors are waging battles about their low-power microprocessors that can run on a coin cell for years. Some of what they claim is somewhat disingenuous; other claims are irrelevant. This session covers real-world data on what sort of battery life can be expected (based on millions of data points the author has gathered experimentally), what mitigation strategies are appropriate, what low sleep currents really mean, and other sources of leakages that will drain the cells long before the MCU does. The session specifically focuses on coin cell applications.

Thursday 14

  • 8:00 – 8:45 – All About Patents by Bob Zeidman, President, Zeidman Technologies

This course explains all about patents including how they are written, what they protect, why you need them, and how to utilize them. It begins with a description of different kinds of intellectual property. It then explains how hardware and software companies, startup companies, and individuals can use patents to their advantage to protect their intellectual property. Finally, the course relates actual legal cases where patents have been asserted or defended, including personal experiences of the instructor as an expert witness on some of the largest cases of the last and current millennium.

  • 9:00 – 9:45 – Understanding the IoT Platform Wars: Technical Trade Offs by Michael Anderson, Chief Scientist, The PTR Group, Inc.

As the Internet of Things (IoT) starts to gather momentum, a number of competing IoT platforms are jockeying for dominance. Offerings from the Thread Group (Google/Nest), Allseen Alliance (Qualcomm), Apple’s Homekit, the Open Interconnect Consortium (Intel) and many others are joining the fray. But, in this confusing array of platforms, what are the main features of each and why should you care? This session will provide an overview of these platforms, their capabilities, and barriers to entry as the industry prepares for a fight to determine the future of the 50 billion devices planned for the IoT.

  • 10:00 – 10:45 – HAL Design for MCUs by Jacob Beningo, Consultant, Beningo Engineering

The speed at which a developer is expected to write software often results in device drivers that are difficult to understand, hard to maintain, and difficult to port. This session describes methods and techniques that can be used to develop a re-usable hardware abstraction layer (HAL) that is easy to maintain and use across multiple projects and platforms. It will also examine key properties of a HAL and provide examples for common MCU peripherals.

  • 11:00 – 11:45 – Cryptography Basics for Embedded Developers by Eystein Stenberg, Product Manager, Mender.io

Many vulnerabilities and breaches happen due to incorrect use of cryptographic mechanisms like encryption. This session will cover the basic mechanisms of cryptography, like encryption, signatures, and key storage, looking at how these are used to create important security properties like authentication, confidentiality, and integrity.

Performance is particularly important for embedded development, and this session will cover which cryptographic operations are computationally expensive and why. It will highlight implementations of cryptographic mechanisms that help meet the performance needs of embedded devices, including Elliptic Curve Cryptography. Common pitfalls, libraries, and tools relevant for secure use of cryptography for embedded devices will also be addressed.

  • 14:00 – 14:45 – The Incredible Story Behind the Gerber PCB File Format by David Gerber,  Writer & Editor, Independent

The story behind the “Gerber PCB File Format” begins with H. Joseph Gerber, after whom the format was named. Gerber was a refugee who would receive the U.S. National Medal of Technology, in 1994, for his “technical leadership in the invention, development, and commercialization of manufacturing automation systems for a wide variety of industries.”

Born Heinz Joseph Gerber in Vienna, Austria, he used his inventiveness as a boy to help his family survive Nazi rule. Arriving penniless in America in 1940 with his mother, he completed a high school curriculum in just two years and college in another two, graduating with a Bachelor of Science degree in aeronautical engineering. After turning his pajamas into his first product — a “revolutionary” engineering device (now in the Smithsonian National Museum of American History) — he began his career by driving around the country to visit customer sites, selling his products by day and inventing new ones by night. Finding problems that customers did not realized they had, as opposed to simply improving existing processes, his method was to invent completely new systems of design and manufacture.

Gerber and his company refined this method in industry after industry, not only inventing new products, but also creating the supporting industrial infrastructure, often from scratch, without existing standards, compatibilities, and modularization. It is this dynamic, growing from the state of technology, the requirements of industry transformation, and the method of a remarkable inventor, that underlies the evolution of the so-called “Gerber language” in the fabrication of circuit boards.

  • 15:00 – 15:45 – Applying Lessons Learned in Space FPGA Development Here on the Earth by Adam Taylor, Eur Ing, E2V

Taking the hard learned lessons from space FPGA and VHDL development and demonstrating how these can be used on the terrestrial applications to obtain a better resultant and quality for your system. This session looks at the engineering life cycle, architectures, coding structures, pitfalls around clocks and reset and mitigation techniques. While focusing upon the FPGA and VHDL structures there is also information presented on the impacts of the environment, training and development and the entire supporting facility needed for the developing a great FPGA solution on time, quality and cost.

There are two types of pass to attend the event: the conference pass and the expo pass. The latter includes access to all expo floors, four of them, and vendor sponsored training sessions, while the former adds tutorials, conference sessions, and lunch.

CONFERENCE PASS EXPO PASS
SUPER EARLY BIRD
(Ends Tuesday, December 22, 2015)
$799 FREE
EARLY BIRD
(Ends Friday, February 5, 2016)
$949 FREE
ADVANCED
(Ends Friday, April 8, 2016)
$1,149 FREE
REGULAR/ONSITE $1,299 $75

The expo pass is free as long as you book in advance, and the conference pass costs between $949 to $1,299 depending on how early you book your pass. Students, teachers and government officials save up to 25%, and if your company sends several people, the price drops up to 30%.

DragonBoard 410c Development Board Quick Start Guide and Android Benchmarks

November 21st, 2015 6 comments

Linaro’s 96Boards initiative was announced in February with the introduction of Hikey board, and while progress has been rather slow, there are now two boards available for sale: Lemaker Hikey and Qualcomm Dragonboard 410c. The main advantage of these board is that 96Boards is not only an hardware specification, but also a software specifications that mandate most code to be open source, with recent versions of Linux and U-boot, and in the case of Dragonboard 410c work is being done with Freedreno open source GPU drivers.

Now that I’ve got a board I’ll explain my experience with the purchasing process, take a few pictures, and show how to get started with Android, and install the latest version, before running a few benchmarks.

Ordering DragonBoard 410c Development Board

I normally don’t like purchasing from North American and European distributors, because of the potential documentation involved to comply with silly laws, high shipping fees, which are themselves compounded by import taxes at home and the courier’s handling fees, meaning a $75 board could easily ending costing $150… So I did not intend to buy the board at first, and just went to the Arrow’s Dragonboard 410c page to find out how much shipping would be…

The board ships from the United Stated, but to my surprise shipping was free via Fedex Economy.

DragonBoard_410c_ShippingSo I just went ahead, the checkout process was rather straightforward, and paid by Paypal on Wednesday, November 12, with an estimated delivery date of November 18. Not too bad.

Two days later, I received an email asked me to complete an FCC Purchaser’s Certification form, because while the board had passed the company’s internal EMC tests, it had not passed FCC certification yet, so I could only use it as an evaluation platform. EMC certifications is expected by the end of the month. So I filled it up and simply sent it back by email.

The following Wednesday my order was confirmed, and I received the board yesterday (November 20). So it took about a week between my order and shipping, so I’m pretty satisfied how it all went considering the board is sent for free.

I did not pay any import duties, but Fedex did request for 7% VAT, amounting to about $6.

DragonBoard 410c Pictures

I got the board in a box warning about static electricity.

Dragonboard_410c_PackageI’ve seen pictures of the board before with Green and Red PCB, but mine ended up being Cyan, although the overall design did not really change since the first prototypes.

Click to Enlarge

Click to Enlarge

Click to Enlarge

Click to Enlarge

DragonBoard_410c_Angle

The main difference with the previous photos is that they added shields on top of the power circuitry, as well as on Qualcomm Snapdragon 410c and memory chips.

Click to Enlarge

Click to Enlarge

I’ve also take a picture with a few “friends” including Raspberry Pi 2, Orange Pi 2 mini, and Roseapple Pi boards. with DragonBoard 410c being slightly smaller.

Getting Started with DragonBoard 410c Development Board (in Android)

Linaro released the first Reference Software Platform for 96Boards a couple of weeks ago, and while Hikey supported both Android and Debian 8.2, ony the latter was released for DragonBoard 410c, so I was expecting the board to come pre-loaded with Debian Linux distribution, but instead it came with Android 5.1. That’s why I’m going to focus on Android in this first post, before checking out Linux in more details.

Since the board comes pre-loaded with an operating systems it should be easy to start with the platform, right? Sort of, but there are still some mini challenges to overcome.

First, the board takes 6.5 to 18V power supply as per 96Boards specifications, and the power barrel has a 1.7mm diameter instead of the more usual 2.1mm. That means all these 5V power supply I’ve accumulated can’t be used, so I had to find a 12V power supply, as well as some adapters to be able to connect it to the board. Luckily, I have a few 12V/1A power adapter from some TV boxes, and I have a 28 power jack adapters set to handle this case. If you don’t have any of those, you could also check out 96Boards power supply page with some recommendations.

12V/1A Power Adapter, and 2.1 to 1.7mm Adapter (Click to Enlarge)

12V/1A Power Adapter, and 2.1 to 1.7mm Adapter (Click to Enlarge)

Once I got this sorted out, I also connected a USB keyboard, and RF dongle for my air mouse, an HDMI cable to my TV, and an Ethernet… wait.. There’s no Ethernet port on 96Boards, so that’s it. As I connected the power, and LED quickly blink once, and then nothing for several (long) seconds, until I saw the Qualcomm boot animation, and later the lock screen.

Click for Original Size

Click for Original Size

These are the few apps pre-installed in the Android image.

Click for Original Size

Click for Original Size

And a look at “About phone” section shows MSM8916 for arm64 is running Android 5.1.1 on top of Linux 3.10.49. So I don’t think that image fully complies with 96Boards software specifications, and hopefully the Android release part of the Reference Software Platform will fix that.

Click for Original Size

Click for Original Size

I could connect to WiFi with issues, and transfer the screenshots via Bluetooth, since Android would not recognize my USB flash drive. Later on I found out micro SD cards work fine.

If you intend to modify the bootloader or kernel, you’ll most probably want to connect a USB to TLL board to the development platform. Unfortunately, while most development boards on the market are perfectly happy with a 3.3V or 5V power debug board, DragonBoard 410c board requires a 1.8V USB to TTL board which needs to inconveniently be connected to pins 1, 11 and 13 on the 40-pin low speed (LS) header.  I could remember that Hardkernel USB-UART board supports both 1.8 and 3.3V, and I got one thanks to the several ODROID board I was given to play with.

Click to Enlarge

Click to Enlarge

I fired up minicom in my Ubuntu computer, made sure it was set to 115200 8N1, but whatever I did I could not get any debug message on the serial console, even after switching Tx and Rx a few times… I tried to download Snapdragon 410 GPIO Pin Assignment from the Wiki, but the file in question had a “redirect loop”… So I gave up on that part for now.

Installing the latest Android Image

Eventually Linaro is going to update the firmware images and release the source regularly, so you’ll probably want to install the latest the latest build of the Android image, and I followed the instructions on 96Boards github wiki in an Ubuntu computer, which uses fastboot, and there’s also another method using a micro SD card.

Fastboot update

You’ll need fastboot utility to flash the firmware over USB. This command and all other below are typed from your Linux computer (Ubuntu/Debian):

Now download and extract the latest bootloader

Dragonboard_410c_fastboot_switchNow make sure S6 switch on the board is set to 0-0-0-0 as shown in the right photo, and that there’s no micro SD card inserted in the board.

Now keep pressing S4 button (Volume -), while inserting the power jack into the board, and after a few releas the button. You should be in fastboot mode. Let’s check it:

All good. Now flash all files with a single command

The output will start with:

It should take a few seconds to complete. If you forget to add sudo, the following message will show forever:

Now you’ll want to download the latest Android firmware files in your computer:

Once this is done, unzip and flash the files to the board:

Now unplug the power, and the micro USB cable, and put the power jack back into the board. Android should boot, but in my case it did not, and my power meter was stuck at 1 to 1.5 Watts instead of 2.0 to 3.0 Watts during a normal boot.

SD Card Update

So I fell back to the second update method, using a micro SD card. I’ve used a terminal windows in Ubuntu in the instructions below, but you could also use a Windows computer, and Win32DiskImager utility to perform the same tasks over a graphical user interface.

First download and extract the SD card image:

Now insert your SD card into your computer, and check your device with lsblk:

In my case, the micro SD card is 32GB, so my device is sdb. You need to replace <sd_device> with your own device in the command to dump the data to the SD card.

DragonBoard_410c_SD_Card_BootYou can now remove the micro SD card from your computer and insert it into the board.

Set the S6 switch to 0110 (boot from SD-card ,USB Host mode) as shown on the right.

Now power on the board, LED 1 will blink regularly, and after a while NOOBS should show up on your monitor or TV, asking you to choose the operating system to install.

DragonBoard_410c_NOOBS_AndroidAbout_Phone_Android_Qualcomm_Snapdragon_410Click install, and complete the process. Once it asks your to remove the SD card. Disconnect the power, remove the micro SD card, set S6 back to 0000, re-connect the power, and be very patient for the first boot. I propose you make some tea and coffee, drink it, go to relieve yourself, and come back later where Android will have hopefully booted.

My Linux kernel is now a little newer, but still dated in August. So they have not released any Android firmware for a few months. This should change for the December Software Reference Platform release.

If you want to go further with Android on the board, I recommend you read the Android User Guide (PDF),  and visit DragonBoard 410C documentation page on 96Boards.org.

DragonBoard 410c Android Benchmarks

I’ve also side-loaded a few benchmarks to find out more about the board performance. But first let’s see what CPU-Z reports.

Click to Enlarge

Click to Enlarge

Qualcomm Snapdragon 400/410 is properly recognized with a quad core Cortex A53 processor clocked between 200 and 1.21 GHz and an Adreno 306 GPU @ up to 400 MHz. The governor is set to interactive, so it may slightly negatively impact the benchmarks below. The system has indeed 1GB RAM, with 4.84GB internal storage available to the user out of the 8GB eMMC flash.

Click to Enlarge

Click to Enlarge

After installing Antutu 5.7.1, it asked me whether I wanted to update to the 64-bit version for better performance. It’s the first time it happened in all my testing despite reviewing and benchmarking other 64-bit ARM systems before. The board scores 18,211 points in Antutu, quite lower as I expected compared to Amlogic S905 (quad core @ 2.0 Ghz -> ~28,000 points) and Rockchip RK3368 (octa-core @ 1.2 GHz -> ~34,000 points) processors also Cortex A53 cores.

Several smartphones have launched with Snapdragon 410 processors, so in theory it should be easy to find benchmark for comparison, but most of these phones come with a lower resolution 1280×720 display, and run Android 4.4. I still found Elephone Trunk with Snaprdragon 410, Android 5.1, and a 1280×780 scoring 21,500 points, so the score in DragonBoard 410c  appears more or less as expected.

Qualcomm_Snapdragon_410_VellamoVellamo 3.x should not run with Firefox at all, and only partially with Webview, so ignore the Browser scores. The board got 1,114 points in the multicore benchmark, or 786 points in the metal benchmark, which compares to respectively 1,572 and 763 with Amlogic S905 benchmark results.

DragonBoard_410c_3DMark_Ice_Storm_Extreme

Qualcomm DragonBoard 410c achieved 2,304 points in 3DMark Ice Storm Extreme compared to around 4,200 to 4,300 points in both Rockchip RK3368 and Amlogic S905 devices at the same 1920×1080 resolution.

Conclusion

As you can see from this initial review, 96Boards project is still very much work in progress on the software side, and I had wished some more common decision were made with regards to the specs (e.g. power supply, serial voltage, Ethernet…),  but at least the DragonBoard 410c platform should be interesting over time for people who want recent versions of U-boot, Linux and Android / Debian firmware, and source code, as well as an open source GPU drivers (Freedreno).

The next step should be to run Debian 8.2, but since the firmware is at the alpha stage with some issues like no HDMI audio, I may decide to take my time, and wait for the December release.