Linux application dev
-
Think Horses, not Zebras
There is a popular quote in medical circles: When you hear hoofbeats, think of horses, not zebras. – Dr. Theodore Woodward “Zebra” is the American medical slang for arriving at a surprising, often exotic, medical diagnosis when a more com…
-
Go for IIoT Systems
As developers, we have many options for programming languages. On one hand, it is great to have choices. On the other hand, it can be a little overwhelming. Many times in life, we need to make decisions before we have the experience to know…
-
Setting up a Go development environment
Go has a pretty neat development environment, and its helpful to set up a standard GOPATH on your workstation up front. This is what I do: mkdir ~/go add the following to .bashrc (or some file that configures your env on login) export…
-
A Review of Graphical Application Solutions for Embedded Linux Systems
One of the decisions we face when building Embedded Linux systems is what components to use. With Open Source software, there is often more than one good option. Graphical libraries are no exception. In this article, we’ll examine GTK+, Qt,…
-
OpenEmbedded srctree and gitver
Recently an OpenEmbedded class name srctree became usable. The srctree.bbclass enables operation inside of an existing source tree for a project, rather than using the fetch/unpack/patch idiom. The srctree.bbclass in combination with the …
-
Qt Creator for C/C++ development
Recently, I’ve been evaluating Qt Creator for general C/C++ development. I’m currently involved in the development of a rather large C++ application that is approaching 200,000 lines of code and 1000 source modules. In the past, I’ve typi…
-
Best practices for building Gtk+ applications with OpenEmbedded
I recentlywrote an article about best practices building Qt applications with OpenEmbedded, and it occured to me that I should write an equivalent article for Gtk+ applications. The same points apply – put your application source in a SCM …
-
Best practices for building Qt applications with OpenEmbedded
This article describes how to cross compile a Qt application (named qt_tutorial) with OpenEmbedded, and several best practices you should consider. OpenEmbedded currently includes fairly good support for building Qt – both Qt Embedded and …
-
Embedded Linux versus Windows CE
Occasionally I am asked how Embedded Linux compares with Windows CE. I have spent the past 5 years doing mostly embedded Linux development, and the previous 5 years doing mostly WinCE development with a few exceptions, so my thoughts are n…
-
Dealing with large data structures efficiently in embedded systems
I’m currently dealing with a programming problem where I need access to several 64MB, file-backed data structures concurrently on an Embedded Linux system that only has 64MB of RAM. The data structures are fairly sparse (mostly zero data),…
-
GTK performance on PXA270 vs. OMAP3
Several of my customers have built applications using the GTK+ tookit. While GTK+ works fairly well for what we have done, I have been wondering how the performance compares on the new Omap3 processors from TI. As we are evaluating the OMA…
-
Using the Vala Programming Language in Embedded Systems
Recently I’ve been following the Vala programming language and using it some in embedded systems. Vala is a new programming language that aims to bring modern programming features to GNOME developers without imposing additional runtime req…
-
How to implement an interrupt driven GPIO input in Linux
With Linux, some of the things that seem like they should be easy are not – at least at first glance. For example, how do you read an interrupt driven GPIO input in a Linux application? With simpler microcontroller systems, this is straig…
-
Printing from Embedded Systems
How does one implement support for printing in embedded systems? I recently had the opportunity to add printing support to an embedded Linux system. The device is an industrial touch screen powered by a Compulab cm-x270 module (PXA270 CPU)…
-
Should you be using monotonic timers?
In a previous article, I covered some of the basics of Linux timers. Any time you are doing any type of fixed time delay in a program, you should really be using monotonic times, so the delay will not be affected by system time changes. I…
-
How to implement realtime periodic tasks in Linux applications
(see also should you be using monotonic timers?) Have you ever wondered what is the best way to implement periodic tasks in Linux applications – something better than usleep()? This article covers a number of issues related to this subject…