9

QtCreator has a plugin named "Bare Metal". Bare Metal means a computer without an operating system. I have not seen much about Qt Bare Metal development. Is it a way to develop Qt for a bare metal system? Does Qt run on a system with no OS? If yes, what are the advantages of this approach for embedded system development?

László Papp
  • 51,870
  • 39
  • 111
  • 135
Nejat
  • 31,784
  • 12
  • 106
  • 138

3 Answers3

6

Is it a way to develop Qt for a bare metal system?

No.

Does Qt run on a system with no OS?

No.

Bare Metal means you usually have a few KB of RAM and ROM.

I think you are confusing Qt (framework) with QtCreator (IDE). Tim Sander explains it clearly here at the Qt Developer Days in 2013.

This plugin is used for developing small software for such platforms, but without using the Qt framework itself.

In other words, you can still utilize the generic functionality of the Integrated Development Environment.

So, it is not a runtime aid, but development and build time helper. You can still use qmake for building binaries for such very small embedded environments.

Here you can find more information in the official documentation.

László Papp
  • 51,870
  • 39
  • 111
  • 135
  • 7
    "Does Qt run on a system with no OS?" I beg to disagree. Sure it does run on systems with no OS, quite admirably in fact. Bare metal doesn't imply a memory size, it only means that there's no full-blown operating system. I have a bare metal ZNEO system with 16MB of RAM, running at 20MHz, and I am running Qt core on it, in fact (very much a proof of concept at this point, but it can be done). – Kuba hasn't forgotten Monica Mar 16 '14 at 14:56
  • Please show public proof that it runs on bare metal systems. I am not aware of any public happening. Let us just admit, it would be a _lot_ of work. Even for stable and robust systems, it is a lot of work to get it running, and no, I do not mean you can use QByteArray and a few macros, but full codec stacks, IO, proper mkspecs support, windowing operation, etc, basically the "Qt Essentials". – László Papp Mar 16 '14 at 15:04
  • 4
    It runs on a stand-alone implementation of C++: there's no file IO, no processes, no native events (what a relief), it's single core so atomics are simple, QT_NO_SYSTEMLOCALE is set, and so on. I don't know what codecs you speak of - text codecs are simple C++ code that can be compiled in isolation even on an Arduino (BTDT). I'd say that tweaking the mkspec is about the simplest part of it. Once I get the green light to publish the compiler, it'll make sense to show Qt running on it. – Kuba hasn't forgotten Monica Mar 16 '14 at 15:23
  • 3
    Right, so this is not Qt running, but a very minor truncated subset of it. In fact, Qt's internals desperately depend on the existence of a running kernel. Perhaps a very minor part of it "can be built on top of C and C++ std". Anyway, we still have no proof. After all, Qt is meant to be a userspace framework rather than kernel. If any of the Qt essentials does not run on it, I do not consider "Qt running on this stuff". You can say that "minor parts of qtbase and qtcore are running", but "Qt as a whole"? I would not. – László Papp Mar 16 '14 at 15:29
  • Qt for MCUs was released and can run on minimal hardware with no OS. – Kevin Muhuri Apr 17 '20 at 07:43
3

A lot has changed since you posted this question in 2014. Qt has since released a full suite (bundled with a runtime) called Qt for Microcontrollers that supports app development on minimal hardware with no OS. It can still be deployed on boards with an RTOS. It's not under any FOSS license but you can ask for an evaluation copy.

Kevin Muhuri
  • 236
  • 2
  • 5
2

You can see a presentation about it from Qt Dev Days 2013 here: https://www.youtube.com/watch?v=hrKz63Q_Rf0

It is a plugin to allow you to develop and debug programs for bare-metal embedded targets in the QtCreator IDE.

It doesn't support the Qt framework on those embedded targets.

Michael Burr
  • 333,147
  • 50
  • 533
  • 760