Michael Karlesky

A cabinet of wonders. Minus the cabinet. And possibly the wonders.


Embedded GUI Simulation Framework

Can’t We Develop This Software a Whole Lot Faster?


For a complex embedded software project, I led the development of the custom graphical user interface (GUI). Loading firmware onto a development device required several minutes. It quickly became clear how expensive GUI development would be due to the iterations necessary to perform experiments; correctly position widgets and other elements; and develop event handling routines and on-screen interactions.

I proposed a system to allow GUI development for the device to occur on the desktop. I also suggested a financial assessment of the situation. Upon performing that analysis, my development team collectively decided the potential savings afforded by my plan were worth the gamble of the up-front investment.


After initial experimentation, I built the system with the Ruby programming language, Rake (Ruby-based Make), Shoes (a windowing toolkit for Ruby), SWIG (a tool used to generate interfaces between compiled C/ C++ code and scripting languages), the C/PEG graphics library, Visual C++, and CMock to create the simulation framework. The work took two weeks.

The simulation framework allowed the actual graphics and GUI event handling to be compiled, linked, and run on the desktop. Simulated system events drove GUI behaviors. The actual embedded GUI code was exercised on the desktop any number of times before being loaded on the target device.


The development team saved an estimated two developer months because I successfully eliminated the wait time of countless firmware loading sessions. Ultimately, I was responsible for coding a significant portion of the custom GUI for the device. See the gallery of screenshots of the custom interface [scroll to bottom].