App Dev

Case study - debugging race condition in golang

Published at August 19, 2020 · Igor Bagnucki ·  5 min read

In this article, we analyze different approaches to debugging race conditions based on the case study. The most intuitive approach can work, but in reality, there may be better ways to find and fix the problem....

Categories: app-dev

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

How to use Ansible via Python

Published at June 14, 2017 · Maciej Ruciński ·  5 min read

Ansible is designed around the way people work and the way people work together What is Ansible Ansible is simple IT engine for automation, it is designed for manage many systems, rather than just one at a time. Ansible automates cloud provisioning, configuration management, application deployment, intra-service orchestration, and many other IT operations. It is easy to deploy due to using no agents and no additional custom security infrastructure. We can define own configuration management in simple YAML language, which is named ansible-playbook....

Categories: app-dev

SWUpdate for feature-rich IoT applications

Published at May 21, 2017 · Maciej Pijanowski ·  11 min read

When you work with embedded systems long enough, sooner or later you realize that some sort of update mechanism is required. This is especially true when more complex systems, running with an operating system, are taken into account. Nowadays Linux is being picked increasingly as operating system for embedded IoT devices. In following post we will focus on those in particular. In fact, from my experience update mechanism is vital part of many embedded applications....

Categories: app-dev

Chromium GStreamer backed for i.MX6 research

Published at November 1, 2016 · Piotr Król ·  3 min read

Recently I work on i.MX6 based project that requires video hardware decoding in web browser (best case in QtWebEngine, which is entire Chromium platform in Qt). Chromium After some research it appears that Chromium is not interested in providing external support for GStreamer-backed video hardware decoding. Truly going through all discussion related to this topic was very disappointing. Typically Chromium developers just close thread when discussion started to be noisy and there mass of complaining people raised....

Categories: app-dev

PXE server with Raspberry Pi 1

Published at March 12, 2016 · Piotr Król ·  4 min read

Recent days we get the announcement about releasing Raspberry Pi 3. Those of you who play with embedded systems or just try to make things probably still got good old Raspberry Pi (1). Because during time old platforms loose value as potential candidate for new projects I decided to sacrifice my old RPi and make test server from it. One of my customer required testing his software against PXE server with various configurations....

Categories: app-dev

Netcat - how to transfer files without scp or ftp

Published at March 12, 2016 · Piotr Król ·  2 min read

One of my recent customers provided me hardware with custom Linux system. Distribution used on this hardware was very limited there was no developers tools, file transfer applications (like scp, ftp or even tftp) or communication clients like ssh. I had to deploy some firmware files to the system without modifying it. This was i386 machine. Of course I could compile something and add this software using usb stick or other stoarge, but what if I would not have direct access to hardware ?...

Categories: app-dev

Emulate Rapberry Pi 2 in QEMU

Published at December 30, 2015 · Piotr Król ·  4 min read

In the process of planning system testing for one of my clients I found that someone from Microsoft published patches with BCM2836 support to QEMU mailing list. I thought it is very interesting, because if it is possible to setup emulated Raspberry Pi many use cases can be tested faster and in more automatic way. For example checking how application behave when running on more then one device at once, testing massive deployment process, stress testing and finally speed up debug-fix-test process....

Categories: app-dev os-dev

virtualbox-dkms: fix alloc_netdev problems when compiling with 3.17.0-rcX headers

Published at September 20, 2014 · Piotr Król ·  4 min read

Intro Because of my bug hunting approach of using latest kernel I experienced problem with compiling VirtualBox modules with 3.17.0-rc5 version on my Debian Jessie. Issue is well known and described for examples here. Problem manifest itself with: 1 2 3 4 5 6 7 8 9 10 11 12 ------------------------------ Deleting module version: 4.3.14 completely from the DKMS tree. ------------------------------ Done. Loading new virtualbox-4.3.14 DKMS files... Building only for 3....

Categories: app-dev

0x5: Qemu network configuration and tftp for Virtual Development Board

Published at June 7, 2013 · Piotr Król ·  7 min read

Introduction This was not trivial task to me. As usual google is your friend and RTFM works. First we will set tftp which we use to download modified kernel for U-Boot. Second I will show how to setup bridged network for QEMU needs and finally we will perform some basic test of our setup. Let’s go. Setup tftpd First install: 1 sudo apt-get install tftpd tftp Make sure that /srv/tftp is writable for your user....

Categories: app-dev os-dev

0x2: Toolchain for Virtual Development Board

Published at June 7, 2013 · Piotr Król ·  4 min read

Introduction This is probably the most complicated topic of all related to embedded development but we need to deal with it at the beginning. I read a lot about toolchains but still don’t know enough to explain details. I think that best answers are in crosstool-ng documentation. What is toolchain ? Toolchain as the name said is a set of tools chained together, so output of one tool is the input for different tool....

Categories: app-dev os-dev

0x1: Qemu as an environment for embedded board emulation

Published at June 7, 2013 · Piotr Król ·  2 min read

Table of contents Introduction Compilation Kudos Introduction QEMU is a CPU emulator using dynamic binary translation to convert guest CPU instructions into host CPU instructions[1]. It supports many architectures from x86, through ARM and MIPS, to MicroBlaze. According to compilation configuration target list QEMU targets 26 different softmmu types. Only for ARM it supports 33 machines (like ARM Versatile/PB (ARM926EJ-S) or Samsung NURI board (Exynos4210)) and 28 CPUs (with cortex-a9 and pxa270)....

Categories: app-dev os-dev

Yet another quick build of arm-unknown-linux-gnueabi

Published at April 3, 2013 · Piotr Król ·  3 min read

So I decide to check what is going on with crosstool-ng and refresh my old post about building arm-unknown-linux-gnueabi toolchain. Last post was pretty popular, so definitely this is direction I should follow :). I will not repeat myself, so if you encounter any problems please check last post, section with known problems in crosstool-ng doc/ directory or RTFM. Let’s begin: Get the latest crosstool-ng As usual I’m trying to use latest version possible....

Categories: app-dev os-dev

Sqlite3 gem not supported on Heroku

Published at November 18, 2012 · Piotr Król ·  1 min read

When I tried to deploy second part of RoR tutorial to Heroku I get this error: 1 2 3 4 5 6 7 8 9 10 11 12 An error occurred while installing sqlite3 (1.3.5), and Bundler cannot continue. Make sure that `gem install sqlite3 -v '1.3.5'` succeeds before bundling. ! ! Failed to install gems via Bundler. ! ! Detected sqlite3 gem which is not supported on Heroku. !...

Categories: app-dev

Prepare for Ruby on Rails on Debian wheezy

Published at November 18, 2012 · Piotr Król ·  3 min read

I start to learn Ruby on Rails. As always when you learn new programming language toolchain is required. In this tutorial I will try to go through toolchain preparation for my Debian wheezy. Of course I based on Vim as my editor of choice. Second requirement will be using some parts of toolchain in latest greatest version. As a beginner point for learning Ruby on Rails I choose this tutorial. I will try to use their methods of setting environment adding my comments where it is needed....

Categories: app-dev

Building ARM toolchain? part 2: gcc and eglibc

Published at April 12, 2012 · Piotr Król ·  4 min read

Unfortunately after few tries of cross compiling eglibc using different source for instructions I always end with hard to solve issues. Luckily, in the sources of eglibc I noticed instructions for cross-compiling written long time ago by Jim Blandy(I know i should start here). Lot of thanks to him for it. Below I describe my experience which I gained during eglibc cross compilation for arm-unknown-linux-gnueabi and procedure that I used. Commands below contain some constants that I used in previous works....

Categories: app-dev os-dev

Building ARM toolchain - part 1: libs and binutils

Published at March 20, 2012 · Piotr Król ·  3 min read

Searching the Internet for information on how to build arm toolchain from scratch I realize that it is very hard to find information about this matter (and recent one even harder). I will try to fill this lack of information and try to build toolchain. My main goal is to use a component based on the GNU public license, and using them in as the newest version as it is possible....

Categories: app-dev os-dev

Quick build of arm-unknown-linux-gnueabi with crosstool-ng

Published at March 14, 2012 · Piotr Król ·  2 min read

You might be surprised at how much you have to make to correctly build arm-unknown-linux-gnueabi config based toolchain with crosstool-ng. As you can see examples of many open source projects, the man’s work is a rare resource. The result of this economic fact is that the attempt to build configuration arm-unknown-linux-gnueabi is not a simple task and during an operation you can come across many problems. Although I am not afraid of problems and effectively try to fight them and of course sharing the results of my work....

Categories: app-dev os-dev