Qt for MCUs

kjn

Member
There are a few users of Qt in this forum.

They have just released a toolchain for MCU's, of which the Teensy4 Beta (i.MX RT1050) is supported.

https://www.qt.io/blog/qt-for-mcus-1.0

I can imagine if this ever became an option on the Teensy4 platform, with the multitude of LCD's and drivers, it would open up some new and exciting projects.

I'm hoping to have a closer look over the break, but if anyone has any insight I'd be interested see everyone's thoughts.
 
Note the Teensy 4 as released uses the 1062 version of 1060. First beta unit before 1060 was public and in shipping mode was a the 1050 series 1052.

Not sure if that would be included in the Qt support package. Even if so getting PJRC's Arduino/Cpp&C level of support likely a decent amount of effort.
 
Any idea how much memory it uses?

If they used NXP's eval board, there's a good chance it depends on the large SDRAM chip NXP put on those boards.
 
I am a user of Qt with Arduino boards, now looking to "upgrade" to Teensy boards with their faster CPU speed and more I/O. Usually though I am running Qt on a PC or Raspberry Pi rather than the MC itself (I'm communicating with MC over serial port), so at the moment this toolchain would not be so useful to me. Anyway, while that is not really on topic, I thought I would say that out loud in case anyone wants to get in contact/chat.
 
I thought I would revive this thread as I just came across Qt for MCUs and now that we have the T4.1 with the option to expand both SDRAM and Flash - might allow one to utilize the Qt framework
But I suspect that Qt SDK for the 1060 requires breakout for the LCD control pins, which are not exposed on the T4/4.1

Anyways, if anyone has more info on this I would be really happy to learn more
 
I thought I would revive this thread as I just came across Qt for MCUs and now that we have the T4.1 with the option to expand both SDRAM and Flash - might allow one to utilize the Qt framework
But I suspect that Qt SDK for the 1060 requires breakout for the LCD control pins, which are not exposed on the T4/4.1
It all hinges on the framebuffer. I guess the questions are in this order:

  1. What displays can you use with a Teensy 4, which are good enough for your GUI use case? Can you drive them over SPI, or is that too slow? These chips have DMA, so you may have some other options.
  2. What kind of framebuffer does Qt for MCUs use? (I assume they supply it, or it's a customized fork of some open-source FB.)
  3. Can that framebuffer talk to your display; and if not, can you plug in some other framebuffer that can?

There is also the issue of touchscreens (assuming you want to use them), and whether and how you can plumb that into their API.

I didn't dig very deep, but from reading that page it seems like this is probably a paid product, and you may not get to look at the source.
 
It all hinges on the framebuffer. I guess the questions are in this order:

  1. What displays can you use with a Teensy 4, which are good enough for your GUI use case? Can you drive them over SPI, or is that too slow? These chips have DMA, so you may have some other options.
  2. What kind of framebuffer does Qt for MCUs use? (I assume they supply it, or it's a customized fork of some open-source FB.)
  3. Can that framebuffer talk to your display; and if not, can you plug in some other framebuffer that can?

There is also the issue of touchscreens (assuming you want to use them), and whether and how you can plumb that into their API.

I didn't dig very deep, but from reading that page it seems like this is probably a paid product, and you may not get to look at the source.

1. For my needs, ILI9488 or HX8357 both supporting 16bit (or 18 bit) color depth and a resolution of 480x320
2. I have no idea, I have not gotten into the working parts of Qt, this is why I responded to the thread :) The driver libraries available for these displays support large frame buffers on both the T4 and the T4.1 with the extra RAM.
3. As above

I've read the license modal briefly, they do have an open source package available. But I might just go with LVGL as the level of effort to implement it seems much lower.
 
ILI9488 uses SPI, and at that resolution I don't think you will have any trouble. There is already an Arduino library for talking to it, although you probably have to modify some stuff (GPIO pin numbers, possibly more) to get it to work on the Teensy. There is a thread on these forums about support for it.

There is also a thread here about the HX8357.

I don't know if either of these libraries work on the 4.x series, but I bet someone has figured it out. At that resolution, SPI is probably fine, depending on how many frames you want to push through. (I don't know whether either device is capable of accepting data faster than SPI, were you to use their other interfaces.)

They are bugging me to register without letting me download the content, and their GitHub doesn't seem to have any repos matching "mcu" or "microcontroller," so I don't have an easy way to look at the code. They do seem to have a whitepaper and webinar on their page that describes how to port apps to microcontrollers, so presumably there will be some info there on how to get the framebuffer working.
 
Im already using those libraries on the T4x, have been for the last 6 months. But they are simply an API to send commands to the display to draw lines circles strings etc.
Qt is the layer that handles the GUI, similar to LVGL.

I think you misunderstood my initial comment, im not looking for a driver, im looking for a GUI framework and Qt has some really impressive stuff to offer
 
I think LVGL is probably going to be less effort. Teensy users already have it working with a small LCD + touchscreen.

If you go with Qt for MCU, the question is whether it will compile in the Arduino toolchain, which uses a subset of C++. Qt may require a fully standards-compliant compiler, in which case you might be out of luck. Then, you would have to plug it into the driver somehow. One of the two (forget which... I think the ILI) has a framebuffer, and the other doesn't.
 
Back
Top