Archive

Posts Tagged ‘debugging’

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.

How to Use an ESP8266 Board as a WiFi to Serial Debug Board

October 21st, 2015 7 comments

Telnet and SSH are great to access a Linux device, machine and computer remotely when they are already running, but when you are working on the bootloader and/or kernel themselves, you’ll have to use a serial port to access the terminal / serial console. Boards used to get an RS232 port which you connected to your computer with a NULL modem cable, but these days, most boards and devices expose TTL signals and require a USB to TTL debug board to access the console via a USB cable. If you only have one device close to you computer that’s fine, but if your testbed is a little further. or you need to access the serial console on multiple boards you could consider using ESP8266 module to export the terminal over WiFi.

ESP8266_Wifi_to_Serial_Debug_BoardThis is exactly what Zoobab did above with a GL.inet router running OpenWRT and NodeMCU board with ESP-12(E) module based on Espressif ESP8266 WiSoC. The wireless module is powered by a mico USB cable, and its GND, TX, and RX pins are connected to the corresponding router’s pins. Both works at 3.3V so no voltage conversion is needed, but with some other hardware it may be necessary to convert 5V to 3.3V.

The next step is to flash NodeMCU with ESP-LINK firmware, which connects an attached MCU to the Internet using an ESP8266 Wifi module. Now you can access the router terminal via ESP8266 board web interface.

Click to Enlarge

Click to Enlarge

That’s great with a little, or maybe not so little, caveat: it’s read-only. So if you want to input text in the serial console, you’ll currently have to telnet to your ESP8266 board to access the router’s serial console.

esp8266_telnet_serial_consoleThe implementation is still work in progress, as more complete documentation must be written, more features are planned (web console input, https console, etc…), and a few bugs still persist such as Ctrl+C not working with telnet. To work around the latter you can use Putty or socat, which can also allows to upload files over the serial link using Serio Python script.