Express Logic has launched a software stack intended to bring graphical user interfaces to memory- and performance-constrained 32bit microcontrollers running the company’s ThreadX real-time operating system (RTOS). As well as Pebble-style smartwatches, the main targets are products such as consumer white goods, medical and industrial control panels that are moving to more sophisticated color graphics and resistive or capacitive touch for user input.
The company has written the stack primarily for Cortex-M series processors. Ken Maxwell, director of engineering at Express Logic, said the majority of licenses the company sells now are for ARM-based systems. Devices in the M-class generally do not have the advanced animation-oriented GPU support that a stack such as the recently launched Digia Qt Embedded Enterprise targets.
However, the GUIX stack will make use of 2D accelerators such as bit-block transfer (BitBLT) engines on MCUs with specific drivers and also takes advantage of pre-rendering techniques in software to speed up transitions and animations.
“We do it using multiple canvasses with API calls to let you move them around and bring them into view by changing alpha values. We try to do it so that everything is possible in software alone,” said Maxwell.
“If someone has the resources to run something like Android on the target then it’s not such a good fit,” Maxwell said, noting that the code footprint is on the order of 50Kbyte assuming a fairly complete set of standard widgets.
“We do a lot of front-end processing. There is a companion program that runs on the desktop – GUIX Studio – that preprocesses your resources, such as fonts and graphics files like PNGs, and produces a compressed set of datafiles. The compression is much simpler than JPEG so that it executes faster on the target.”
A further desktop tool is a screen designer, “so you don’t have to code the pixel positions and prompts”, said Maxwell, adding: “Today it produces a C data structure file that you compile and link. Our roadmap is to export that as a runtime parseable schema, maybe based on XML, so it will let you alter the GUI without recompiling.”
The structure of the GUIX programming interface should be reasonably familiar to Windows programmers as it employs a similar windows, brushes and widgets model to that of the Microsoft environment. Maxwell added: “It’s tightly integrated with ThreadX and, in general, looks like a lot of the other ThreadX APIs.”
The GUI engine supports multiple windows and multiple threads are able to draw into the display buffer. “We made all our primitive support anti-aliasing,” said Maxwell. “We run in a color format that allows pixel math.”