Free state machine tool for embedded systems

share on: 
Share on reddit
Share on linkedin
Share on twitter
Originally published on:  
Last updated on: 
Table of Contents

I realize that I stalled a little my series about RTOSes, event-driven programming, state machines and frameworks for embedded systems. I certainly will come back to this subject, but today I wanted to let you know about a new, free, graphical tool for drawing state machines and generating production-quality embedded code.

Traditionally, such tools haven’t particularly caught on in the embedded space, mainly because too often such tools fail to pull their own weight. Developers find themselves fighting the tool at every step of the way: from drawing the diagrams to trying to live in a straight jacket of the code structure it generates.

The new, free QM tool from Quantum Leaps (my company) is different, because it was designed from the ground up around the code-centric approach. Unlike other graphical tools, QM gives you complete control over the generated code structure, directory names, file names, and elements that go into every file. You can mix your own code with the synthesized code and use QM to generate as much or as little of the overall code as you see fit. At the low level, QM respects your graphical layout as much as possible and will not re-attach or re-route connectors, resize nodes, or adjust text annotations. You will find that you don’t need to fight the tool.

Even though a lot of effort went into making QM as UML-compliant, the tool is innovative and might work differently than other graphical state machine tools on the market. For example, QM does not use “pseudostates”, such as the initial pseudostate or choice point. Instead QM uses higher-level primitives of initial-transition and choice-segment, respectively. This simplifies state diagramming immensely, because you don’t need to separately position pseudostates and then connect them. Also, QM introduces a new notation for internal transitions, which allows actual drawing of internal transitions (in standard UML notation internal transitions are just text in the state body). This notation enables showing internal transitions with regular state transitions in a choice point–something that comes up very often in practice and was never addressed well in the standard UML.

The QM tool is available now for a free download and free, unrestricted use from I’d appreciate any comments about the tool, comparisons to other similar tools, code generation, UML, state machines, etc.


8 Responses

  1. I know the vast majority of developers utilize Microsoft Windows as their primary development platform, but I am afraid I no longer have any Windows machines available to me to test this out. That is kind of sad because I would love to put this tool through it’s paces.

  2. The QM tool is based on the cross-platform Qt framework. Therefore, it should be relatively easy to deploy QM on all platforms supported by Qt, such as Linux and Mac OS X. I’d like to gauge the demand for different platforms. So what is it exactly that you are using? Linux? Which distribution?

    1. We’re using Linux, and assuming that you deliver a Qt library to match your app, then the distro probably doesn’t matter. For example, Qt Creator includes its own Qt libs (for the app itself) and my installation of on Ubuntus from 8.10 to 10.04 has always worked without a hitch.

  3. I’d like to see this for other platforms too.

    I use Mac OS X for most of my design work (specs, paperwork, coding, etc), and I only use my Windows machine for debugging or programming my designs. So I would love to see a Mac version that I could fit into my design flow.

Leave a Reply