Development IDE Desktop for Colibri MX8 using Native Embedded Linux Distro (non-container based)

I have a Colibri evaluation board with an i.MX8 SOM.

I am exploring the creation of a “native” development platform of this SOM to support application written in C++ and Python using some of the Qt modules. By “native”, I mean the platform itself can be used for building up applications (typically embedded Linux daemons that operate in near real-time). The opposite to “native” development would be cross compilation on a host computer.

The motivation for this ambition is to support software developers that are more familiar with IDEs available from the Raspberry Pi ecosystem, such as UbuntuMATE or Raspian, and do not want to learn the nuances and technologies necessary for Portaner/Docker developments.

They simply want to build a binary on the platform and execute it at runtime likely as a root user daemon at boot.

For the native development ambition, I would be using something QtCreator as the IDE. But I want some form of desktop IDE, even if primitive.

To get closer to that goal, I was seeking a pre-approved Toradex embedded Linux distribution, and I selected the following official distribution in EZInstaller after realizing that an embedded Linux binary with desktop release created a desktop with no content.

TDX Wayland with XWayland 5.7.0+build.20 (dunfell) colibri-imx8x-06900091 ttyLP3
Colibri-iMX8X_Reference-Multimedia-Image

This build provides a multimedia desktop user interface, that I want to be something
similar to LXDE/Gnome/XFCE.

It is possible to achieve a usable desktop using one of the embedded Linux distros?

Hi @bob2oneil , native development on board is not recommended due to CPU, ram, and flash storage constrained resources. It will take a long time to build a big application if RAM was sufficient. Colibri iMX8X only features 2GB RAM. We suggest cross-compile on the host PC where the IDE can be easily installed. Yocto Project builds an SDK of Colibri-iMX8X_Reference-Multimedia-Image for a X86 PC.

1 Like

Thanks for the quick response. In our use, 2 GB of RAM is sufficient, and a native C++ application built on the platform using gcc/g++ or a Python3 based application are anticipated to work fine. We do not need an elaborate IDE, anything the supports the basics and the use of an IDE such as QtCreator is sufficient. Remote desktop access for the user interface is a viable option that we will need to support for board configurations without keyboard-video-mouse.

So then the question becomes, can it be done, and what path would you recommend we take? Is there a particular embedded Linux Yocto build that gets us close without us having to become Yocto experts?

Since APT is not present, what is the recommended path to get the basics of a C++ development platform on place including gcc, g++, valgrind, gdb, etc? This would be equivalent to installing development resources (e.g. “sudo apt install build-essential”).

The resources on the iMX8 are certainly on par or greater than a comparable Pi4-2GB, and all we are trying to achieve is a similar C++/Python development path, wherein we would develop under some lightweight form of a Debian distribution, with some lightweight desktop, using and IDE that allows for native debug and development on the platform, and a package management system that is extendable so we could load up some familiar embedded Linux daemons (e.g. ptpd, snmpd, ntp, remote desktop server xrdp, etc.).

So then the question becomes, can it be done, and what path would you recommend we take? Is there a particular embedded Linux Yocto build that gets us close without us having to become Yocto experts?

No, we don’t have such a Yocto-based image. I even don’t find any recipe to provide QtCreator.

Since APT is not present, what is the recommended path to get the basics of a C++ development platform on place including gcc, g++, valgrind, gdb, etc?

One has to add required packages e.g. gcc, valgrind to the Yocto environment and rebuild the image. Besides the tools, header files are also required when building application source code.

The resources on the iMX8 are certainly on par or greater than a comparable Pi4-2GB

Pi4B featuring quad A72 cores is way powerful than iMX8X which has quad A35 cores.

If you prefer debian dostro, I will suggest our Toriozn. We provide debian based containers where you can install packages by apt command. VS/VS code plugins are also capable to build and debug Qt projects or C++/Python applications.

1 Like

Thanks for the timely response.

If I wanted a desktop IDE of some form, while I have tried 2 different embedded Linux distributions (one provide a simple background image only, and the multimedia release had a fixed movie rating system), is there any embedded Linux or even TorizonCore distribution that might lend itself towards a more typical embedded Linux IDE with application icons, etc? (such as LXDE, XFCE).

Sorry, we has not planed any distro with embedded Linux IDE/Desktop. We release our image as MVP(minimum viable product) and make it production ready. The embedded Linux distributions are our reference images and one can always custom it according project requirement. With TorizonCore, the compile task is still implemented on host PC meanwhile customers are benefit from Debian ecosystem on both device and host sides.

Thanks again for the quick reply.

Can you summarize without providing more detail than you need the differences between TorizonCore and the embedded Linux distributions in terms of what solution space either was intended to target?

For example, and this may be inaccurate, TorizonCore is for development using the Portainer/Docker implementation while providing support for OTA updates and fleet management, while the Embedded Linux is targeted for non-Docker based implementations and a lighter footprint excluding OTA updates and fleet management.

I am simply making things up here as an example.

you are right. On Torizon, application will be packaged into a container. On the development PC, Torizon IDE plugin helps compile, package, debug and deploy application. You don’t have to manually install SDK, e.g. GCC toolchain. OTA, fleet management, device monitoring, and remote access are cloud-based features for TorizonCore. With Embedded Linux BSP, you basically have a traditional development. It is very similar to Pi4 but it is cross-compile on the host PC. As our Embedded Linux BSP and its SDK are built by Yocto Project, you can’t install additional packages by apt command.

Thanks Benjamin for your quick response.

We are wrestling with the 2 approaches, with some resistence for other developers to the perhaps newness of a Docker container based approach and more tradtional embedded Linux. It would seem that your flagship Torizon, based on containers, is your preferred method of development, and that traditional embedded Linux might be a bit more of an uphill climb?

Could you quickly summarize the benefits of Torizon based on Portainers/Docker relative to embedded tradional Linux, perhaps what you see as pros vs cons.