Running Neural Networks on Microcontrollers

3D face recognition, voice control and image recognition of faulty or fake parts were all the rage at Embedded World 2019. The trend towards performing these applications offline – without access to powerful compute servers in the cloud – was obvious. However, these applications require powerful CPUs with equally powerful GPUs to run predictions on deep neural networks.

I was interested in solutions that run (deep) neural networks (NNs) on microcontrollers (MCUs). And, Embedded World didn’t disappoint! Renesas showed how to predict motor failure by monitoring current and vibration. STMicroelectronics had a demo counting the cars driving by using the characteristic sound of the Doppler effect. That’s what I would call the “edge”!

Continue reading

Using Docker Containers for Yocto Builds

We want to build a custom Linux image with Yocto for the Raspberry Pi 3 model B (BCM2837). The Linux image contains a very simple Internet radio application using Qt 5.11 and the eglfs graphics backend. Our colleagues shall be able to repeat the build easily – now, in three years and even in ten years.

I’ll explain why Docker is an excellent choice to build custom Linux images and give you a step-by-step guide how to do it. At the end of the post, you will be able to run a simple Internet radio on a custom Linux image on a Raspberry Pi 3.

Continue reading

Book Review: “It Doesn’t Have to Be Crazy at Work” by Jason Fried and David Heinemeier Hansson

My favourite business book of 2018 is It Doesn’t Have to Be Crazy at Work by Jason Fried and David Heinemeier Hansson. The reason why people work crazy hours is not that there is

[…] more work to be done all of a sudden. The problem is that there’s hardly any uninterrupted, dedicated time to do it. People are working more but getting less done. It doesn’t add up – until you account for the majority of time being wasted on things that don’t matter.

The authors call out working crazy hours for not being “a badge of honor” but “a mark of stupidity”. Yes, it’s good to hear this from people who know what they are talking about. Jason is the CEO and David the CTO of Basecamp, which they have been running very successfully since 2003. They describe in the book how – at Basecamp – they replaced crazy at work with calm at work.

Continue reading

Third-Party Certification of FOSS Compliance

In my post Seminar “Open-Source Management in Software Supply Chains” five weeks ago, I wrote that the “TÜV is working on […] an external certification but it is not ready yet.” TÜV Süd was busy and became the first third-party authority to certify OpenChain compliance. TÜV Süd certified Hitachi that they have a process in place to ensure that their products comply with FOSS licenses.

So far, companies could only certify themselves according to the OpenChain Specification. Now, companies are certified by a third-party authority.

Linux Foundation Launches Automated Compliance Tooling (ACT) Project

LinuxGizmos reports that the Linux Foundation has launched a project Automated Compliance Tooling (ACT). ACT is an umbrella project for FOSS compliance tools like Fossology, Quartermaster and SPDX.

Fossology is a copyright and license scanner that works on the source code (see my recent post Seminar “Open-Source Management in Software Supply Chains” for a very brief overview). It creates FOSS compliance reports that licensees must pass along with the source code of FOSS packages to customers.

Quartermaster also yields FOSS compliance reports, but it digs deeper than Fossology. Quartermaster hooks into the build process. It finds exactly the packages an executable or library depends on: no extra efforts by checking irrelevant packages. It also finds packages, for which the source code is downloaded during the build. Fossology cannot detect these packages.

SPDX is a file format for exchanging licensing and copyright information. It also standardises the names of FOSS licenses.

High-Speed-Data (HSD) Connectors in Heavy-Duty Vehicles

In a recent blog post, I suggested to replace multiple display computers in a driver cabin by one computer in a silver box with multiple displays. I didn’t specify which connectors and cables to use between computer and displays. I found the answer at Electronica 2018 last week: High-Speed-Data or HSD connectors. You can use HSD connectors for LVDS (including Display Port), APIX, CAN, USB 2.0, USB 3.0, Ethernet and Firewire.
Continue reading

Seminar “Open-Source Management in Software Supply Chains”

On 20 November 2018, the law firm Bird & Bird hosted a seminar about “Open-Source Management in Software Supply Chains – Effective and Consistent License Compliance” in their Frankfurt office. The seminar was organised by Miriam Ballhausen, who is Bird & Bird’s specialist in open-source Licensing.

The seminar offered the opportunity to meet two of Germany’s top lawyers for FOSS license compliance: Miriam Ballhausen and Catharina Maracke. If you have any questions about how to comply with FOSS licenses, Miriam and Catharina will give you invaluable counsel.

The roughly 25 attendees hailed from very different industries: automotive, agricultural, financial, medical, manufacturing and IT services. In late 2018, you cannot escape FOSS: Free open-source software has arrived in the mainstream.

Now, let me give you a summary of the four talks.
Continue reading

Tremendous Speed-Up with SQL Transactions

The function CustomerDatabase::importCustomers reads 500 customers from the list c_customers, creates an SQL query cmd for each customer and inserts each customer into the Customers table of the SQL database db.

void CustomerDatabase::importCustomers() {
    auto db = QSqlDatabase::database("CustomerDB");
    for (auto row : c_customers) {
        auto cmd = QString{"INSERT INTO Customers "
                   "(fullName, street, postalCode, city, phone, email) "
                   "VALUES (\'%1\')"}.arg(row.join("\', \'"));
        auto query = QSqlQuery{cmd, db};

On an NXP i.MX6 SoC with four Cortex-A9 cores, this function takes 17.5 seconds! Your user would have to wait more than 17.5 seconds for the import of a CSV file with 500 customers to finish. This is unacceptable. How can you speed up the import to 0.2 seconds?
Continue reading

What’s Wrong with Multiple Display Computers in Driver Cabins?

Three cabins with 2-4 display computers each.

Figure 1. Top left: Claas cabin with three terminals. Top right: Agco cabin with two terminals. Bottom: Continental concept cabin with four terminals.

The top row shows the status quo. Two or three display computers (a.k.a. terminals) are normal. Even four display computers are not unusual. The bottom row shows the cabin of the future with four display computers. The display computers at the left and right beam show the videos from the wing mirror cameras. The display computer in the middle is the instrument cluster. The small display computer on the right-hand side shows additional information. It would be bigger in a harvester.

Let us assume for simplicity that the cabin is equipped with two display computers, which have identical hardware and nearly identical software – except for the main application. When sourced from low-volume, high-customisation electronics manufacturing services (LVHC-EMS), the two display computers, the telematics unit and a switch will cost roughly 2750 Euros for 200 machines.

We will bring down the costs to 2350 Euros, if we replace the two display computers by one computer with two displays. The computer doesn’t have a display and the displays don’t have a computer inside. The telematics unit is folded into an M.2 or PCIe card, which is plugged into a slot of the computer.

We will reduce the costs by another 200 Euros to 2150 Euros, if we source the components from a value-added reseller (VAR) instead of an LVHC-EMS. VARs buy standard components from high-volume low-customisation EMSs (HVLC-EMS). They charge lower prices because of the higher volumes, but they allow only minimal customisations.

For 200 machines, the solution with one computer and two displays saves us 80,000 Euros and 120,000 Euros per year, respectively, when sourced from an LVHC-EMS and from a VAR. We save even more, if we replace more display computers by one computer with displays and if the display computers are more expensive like ISOBUS terminals. We do not only save costs on hardware but also on software, because we consolidate multiple diverse systems into one system.

A clever change of the system architecture leads to sizeable cost savings. It also leads to a system that can easily be extended in many directions – a competitive advantage.

Continue reading

Building Yocto Packages Manually with devshell

We must figure out why a Yocto package doesn’t work as expected. So, we must tweak the source code a bit here and there, cross-build the package for our ARM-based embedded Linux system and install some shared libraries from the package on the embedded Linux system. Of course, we want short turnaround times to try out our changes quickly. The bitbake task devshell will save our day.
Continue reading