Setting up a Go development environment

Posted by Cliff Brake on 2016-04-15 | Comments are off for this article

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 GOPATH=~/go export PATH=$GOPATH/bin:$PATH Now, after you log in, you can do things […]

A Review of Graphical Application Solutions for Embedded Linux Systems

Posted by Cliff Brake on 2012-08-07 | Comments are off for this article

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, EFL, Android, and HTML/Javascript. There are many factors that go into a choice like this, […]

OpenEmbedded srctree and gitver

Posted by Cliff Brake on 2010-10-11 | 5 Comments to Read

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 OpenEmbedded gitver.bbclass and git submodules provides a very interesting way to build custom software with OpenEmbedded. One of the classic problems with […]

Qt Creator for C/C++ development

Posted by Cliff Brake on 2010-08-07 | Comments are off for this article

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 typically used Vim for editing, and Eclipse as a gdb front-end when needed.  Qt Creator is a rather […]

Best practices for building Gtk+ applications with OpenEmbedded

Posted by Cliff Brake on 2009-09-08 | 6 Comments to Read

I recently wrote 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 system, and put the install logic in the application source (read the above article).  The […]

Best practices for building Qt applications with OpenEmbedded

Posted by Cliff Brake on 2009-08-06 | 16 Comments to Read

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 Qt X11.   OE also includes a number of qt classes that make building Qt applications easy.  One of the main […]

Embedded Linux versus Windows CE

Posted by Cliff Brake on 2009-06-20 | Read the First Comment

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 no doubt a little biased toward what I understand best.  So take this with a […]

Dealing with large data structures efficiently in embedded systems

Posted by Cliff Brake on 2009-05-26 | Comments are off for this article

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), and I typically only need to access small portions of them at any particular time.  There is […]

GTK performance on PXA270 vs. OMAP3

Posted by Cliff Brake on 2009-01-21 | 6 Comments to Read

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 OMAP3 for several projects, I did a simple comparison with an existing application.  Below […]

How to implement an interrupt driven GPIO input in Linux

Posted by Cliff Brake on 2009-01-10 | 8 Comments to Read

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 straightforward, but with a system like Linux, you have to navigate through several […]

Using the Vala Programming Language in Embedded Systems

Posted by Cliff Brake on | Comments are off for this article

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 requirements and without using a different ABI compared to applications and libraries written in C.  A few notes and observations […]

Printing from Embedded Systems

Posted by Cliff Brake on 2009-01-09 | 5 Comments to Read

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), and runs a GTK+ application.  The customer is implementing a device calibration system where customers bring […]

Should you be using monotonic timers?

Posted by Cliff Brake on | Comments are off for this article

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.  In an effort to save cost, some embedded […]

How to implement realtime periodic tasks in Linux applications

Posted by Cliff Brake on | Comments are off for this article

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 including real-time tasks, the different timers available, timer resolution, and how to implement periodic tasks accurately so that error is not accumulated.  The […]