Archive 2018

Enabling ECC on PC Engines platforms

Published at October 16, 2018 · Krystian Hebel ·  14 min read

In this post I want to share some findings about ECC on PC Engines apu platforms. I’ll try to shortly describe what ECC is, why is it so desired, what problems with enabling this feature were encountered and how to test whether ECC works or not using MemTest86. Introduction Sometimes a bit in RAM changes its value spontaneously due to electrical or magnetic interference. It can be caused by background radiation, cosmic rays or recently attacks using row hammering....

Categories: firmware


debos image for HummingBoard Edge

Published at October 10, 2018 · Maciej Pijanowski ·  8 min read

Intro In my previous posts I have shared my first experience with debos and how to run debos in a container. In today’s post, I’d like to present how can we use all of that to generate base Debian image for an ARM board. My board of choice for this particular example will be the HummingBoard Edge. The post is inspired by the feedback from the new users (such as this one) that there are no end-to-end examples how to quickly start using this tool....

Categories: os-dev


RTE for automated kernel deployment and everyday use

Published at October 3, 2018 · Piotr Król ·  9 min read

We continue our effort to enable IOMMU and as side effect I have to play with various technologies to exercise reliable development environment which base on RTE. In this blog post I would like to present semi-automated technique to debug firmware, Xen and Linux kernel. The goal is to have set of tools that help in enabling various features in Debian-based dom0. We would like: update Linux kernel which is exposed over HTTP server update rootfs provided through NFS I will use following components:...

Categories: firmware os-dev


Optimize performance in Docker containers used by Embedded Systems Consulting business

Published at September 27, 2018 · Piotr Król ·  11 min read

In 3mdeb we use Docker heavily. Main tasks that we perform using it are: firmware and embedded software building - each software in Embedded System requires little bit different building environment, configuring those development environments on your host may quickly make a mess in your system for daily use, because of that we created various containers which I enumerate below trainings/workshops - when we perform trainings we don’t want to waste time for users to reconfigure the environment....

Categories: firmware miscellaneous


PC Engines APU2 platform validation with RTE

Published at September 13, 2018 · Artur Raglis ·  6 min read

Introduction Remote work is trending nowadays. The best example is the IT industry - purely software tasks with handheld devices allow you to work practically from anywhere. This approach saves a big amount of time and makes a job easier. Unfortunately, as an embedded / firmware developer, there are often situations when interaction with hardware such as a power cycle is required. This leads to a barrier for successful remote work....

Categories: firmware


debos in docker - the second attempt

Published at August 23, 2018 · Maciej Pijanowski ·  5 min read

Intro In the previous post, I have shared my first experience with the Debian images builder - debos. I have posted my current results on the issue but since there was no response, I’ve decided to try to move forward by myself. Just to remind - I was stuck at the following error (when building for arm64): 1 2 3 4 5 6 7 8 9 10 11 12 2018/07/26 18:36:39 Debootstrap (stage 2) | chroot: failed to run command '/debootstrap/debootstrap': Exec format error 2018/07/26 18:36:39 debootstrap....

Categories: os-dev


Xen HVM guests on PC Engines apu2

Published at August 16, 2018 · Piotr Król ·  15 min read

Continuing blog post series around Xen and IOMMU enabling in coreboot we are reaching a point in which some features seem to work correctly on top of recent patch series in firmware. What we can do at this point is PCI passthrough to guest VMs. Previously trying that on Xen caused problems: random hangs firmware cause Linux kernel booting issues (hang during boot) IOMMU disabled - unable to use PCI passthrough Now we can see something like that in dom0:...

Categories: firmware os-dev


Our first look at debos - new Debian images generator

Published at July 27, 2018 · Maciej Pijanowski ·  8 min read

What is debos debos is quite a new tool allowing easier Debian images generation. It seems to be following current trends - it is written in Go, using YAML as an input format. The idea of taking away debootstrap shell scripts and replacing it with a single, simple YAML file looks tempting enough to give it a try. Full feature description can be found in this introductory post on Collabora’s blog....

Categories: os-dev


How to boot Xen over PXE and NFS on PC Engines apu2

Published at July 18, 2018 · Piotr Król ·  9 min read

From time to time we face requests to correctly enable support for various Xen features on PC Engines apu2 platform. Doing that requires firmware modification, which 3mdeb is responsible for. Xen have very interesting requirements from firmware development perspective. Modern x86 have a bunch of features that support virtualization in hardware. Those features were described in Xen FAQ. It happens that most requesting were IOMMU and SR-IOV. First, give the ability to dedicate PCI device to given VM and second enables so-called Virtual Functions, what means on a physical device (e....

Categories: firmware os-dev


Basics of x86 assembly (AT&T syntax)

Published at May 17, 2018 · Bartek Pastudzki ·  12 min read

Nowadays, application of programming in assembly language is very small. Writing production code in assembly may be found in the most demanding tasks in embedded. Even in modern firmware (coreboot, EDK2) most of the code is written in C. Honesly, that’s quite undestandable, assembly code isn’t easy to read nor write and some state that it’s no longer needed to be known. In my opinion, that’s far from the truth....

Categories: programming


The art of disassembly

Published at April 27, 2018 · Bartek Pastudzki ·  12 min read

Probably there was never a programming language that would fascinate me as much as assembly. In fact, it was my second “real language” (after Pascal/Delphi and DOS batch) and the first one I would really understand. Of course, the internals of protected mode initialization was too much for 15-year-old and I finally moved to C and *nix shell. Anyway, I always liked the feeling that I know what I’m really doing but more complex languages are needed nowadays....

Categories: programming


Building EDK2 based firmware for MinnowBoard

Published at April 3, 2018 · Bartek Lew ·  2 min read

Building EDK2 based firmware for MinnowBoard There are some options to build firmware for MinnowBoard, a Bay Trail based SBC (Single Board Computer) from Intel. We prefer usually coreboot as simplest and fastest, open source solution, but sometimes we want to have UEFI interface. UEFI itself doesn’t cover whole boot procedure, so its open source reference implementation, EDK2 is not enough to build firmware for hardware plafrorm, we need to provide PI (Platform Initialization) phase implementation....

Categories: firmware


Building UEFI based firmware on MinnowBoard

Published at March 28, 2018 · Bartek Pastudzki ·  8 min read

Building coreboot on well supported platform such as Bay Trail is quite straightforward task, however we need to remember about some things in order to have coreboot working. First of all we need to provide up-to-date microcode and FSP (Firmware Support Package), which are not included in coreboot source tree and coreboot build system won’t complain about it. Second thing is that Bay Trail has TXE firmware on the same ROM as boot firmware so we have to make sure that we won’t corrupt it because it would brick the platform....

Categories: firmware


Minnowboard Turbot remote firmware flashing with RTE (Remote Testing Environment)

Published at March 23, 2018 · Arkadiusz Cichocki ·  7 min read

Minnowboard Turbot remote firmware flashing with RTE (Remote Testing Environment) Introduction Work related to a hardware carries some restrictions which don’t occur when working only with a software. One of them is a limited number of devices. This one may cause a problem with a accessibility to the platform. The limited number of users could slow development and testing. What is more work with a hardware requires a minimal knowledge of the theory of circuits and signals to eliminate platform damage by a user....

Categories: firmware


Flashing eMMC on Hummingboard Edge using fastboot? part 1

Published at March 20, 2018 · Maciej Pijanowski ·  9 min read

Introduction Flashing an eMMC of produced board is one of the crucial manufacturing procedures. This post series presents how one can take advantage of i.MX6 features and open source tools to prepare themselves with quite robust and easy to use process. Target reference platform is Hummingboard Edge. General concept The general concept is inspired by this great bootlin (former FreeElectrons) post: I’ve run into some issues while trying to do something similar on Hummingbard Edge, so decided to share my experience....

Categories: app-dev firmware


Robot Framework? using Request library for control RPI GPIO's

Published at January 18, 2018 · Daniel Konopski ·  5 min read

Requests library is one of the most popular libraries implemented for Robot Framework. It is very important for testing distributed applications, so this is the first library I got to know in the Robot Framework. To test Request library we can install Pi-GPIO-Server on Raspberry Pi. The server is able to control the state of input and output of GPIOs using REST API. The project is available on the link: Project weekend - GPIO Server...

Categories: