The test bed used for this application note is composed of the same hardware/software platform delivered along with the [[DESK-MX6UL-L | DESK-MX6UL-L]]. About Buildroot, the version [https://buildroot.org/downloads/buildroot-2022.05.tar.gz buildroot-2022.05] was used.
==DonwloadingVirtual Machine requirements ==The building process may requires higher resources than the original [[DESK-MX6UL-L | DESK-MX6UL-L]] MVM settings: this depends on the package selected in the <code>.config</code> file and theirs build resources. For example: building the <code>qt-webkit</code> package will require a lot of resources so it is better to add more CPUs and more RAM to the VM like the following settings: [[File:DESK-MX6UL-MVM_buildroot.png|thumb|center|600px| MVM with 10 CPU cores and 16GB of RAM]] ==Downloading, configuring and building==
This process is straightforward. Once the file [https://buildroot.org/downloads/buildroot-2022.05.tar.gz <code>buildroot-2022.05.tar.gz</code>] is downloaded and decompressed on your Linux host machine, get into the Buildroot directory, and run <code>make menuconfig</code>.
That's it: after saving your configuration, and exiting <code>menuconfig</code>, you can start the build process by simply issuing the <code>make</code> command.
For your sake of convenience, the created <code>.config </code> file can be downloaded from [https://cloud.dave.eu/public/buildroot2022-config here](rename it as <code>.config</code>).
=== Linux kernel ===
Here below a list of most important selected packages:
* '''Qt5.15''' libraries including: <code>fontconfig</code>, <code>DBus</code>, <code>qt5declarative</code>, <code>qt5multimedia</code>, <code>qt5quickcontrols</code>, <code>qt5quickcontrols2</code>, <code>qt5sensors</code>, <code>qt5serialbus</code>, <code>qt5serialport</code>, <code>qtextserialport</code>, <code>Qt SQlite</code> and the very important <code>qt5webkit</code> (and <code>qt5webchannel</code>, <code>qt5websockets</code>)** <code>qt-webwebkit-kiosk</code> browser can be used for creating a GUI with an embedded browser as a Kiosk application has been included too
* framebuffer utilities like: <code>fbset</code>, <code>fbv</code>, <code>fbgrab</code> and the <code>fb-test</code> application
The Qt5 building has an error on producing the <code>qt-webkit-kiosk</code> artifacts. Following [https://patchwork.ozlabs.org/project/buildroot/patch/20220929181350.1026033-1-thomas.ballasi@savoirfairelinux.com/ this thread] you can find a patch for fixing the issuefor the file <code>package/qt5/qt5webkit/qt5webkit.mk</code>:
The created root file system can be extracted in a [[DESK-MX6UL-L/General/DVDK_Virtual_Machine | Virtual Machine]] local directory that can be used for starting the rfs via <code>nfs</code>:
<pre class="workstation-terminal">
dvdk@vagrant:~/buildroot$ mkdir rfs && cd rfs
dvdk@vagrant:~/buildroot/rfs$ sudo tar jxpf ../buildroot-2022.05/output/images/rootfs.tar.bz2
dvdk@vagrant:~/buildroot/rfs$
</pre>
Starting the root file system in the target will ''welcome'' you with the classic prompt:
Then, the main application will show their version<pre>......[ 3.412976] VFS:Mounted root (ext4 filesystem) on device 179:2.[ 3.421286] devtmpfs: mounted[ 3.426837] Freeing unused kernel image (initmem) memory: 1024K[ 3.433614] Run /sbin/init as init process[ 3.943521] systemd[1]: systemd 250 running in system mode (-PAM -AUDIT -SELINUX -APPARMOR -IMA -SMACK -SECCOMP -GCRYPT -GNUTLS +OPENSSL -ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP -LIBFDISK +PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ +ZLIB -ZSTD -BPF_FRAMEWORK -XKBCOMMON -UTMP -SYSVINIT default-hierarchy=unified)[ 3.976207] systemd[1]: Detected architecture arm. Welcome to Buildroot 2022.05!
[ 4.023816] systemd[1]: Hostname set to <buildroot>.[ 5.136734] systemd[1]: Queued start job for default target Multi-User System.[ 5.150596] systemd[1]: Created slice Slice /system/modprobe.[ OK ] Created slice Slice /system/modprobe.[ 5.193797] systemd[1]: Created slice Slice /system/serial-getty.[ OK ] Created slice Slice /system/serial-getty.......[ OK ] Started Serial Getty on ttymxc0.[ OK ] Reached target Login Prompts. Starting OpenSSH server daemon...[ OK ] Started Tiny HTTP Daemon.[ OK ] Started vsftpd FTP server.[ 18.251565] fec 2188000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off[ 18.259328] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready[ OK ] Started OpenSSH server daemon.[ OK ] Started Network Time Service.[ OK ] Started Lighttpd Daemon.[ OK ] Started Avahi mDNS/DNS-SD Stack.[ OK ] Reached target Multi-User System. Welcome to Buildrootbuildroot login:</pre> Then, the main applications will show theirs version: <pre class="workstation-terminal">
[[File:Qt-webkit-kiosk.png|thumb|center|600px| qt-webkit-kiosk (Google) on AXEL ULite EVK]]
==buildroot 2023.08==
In the same way, the latest <code>buildroot</code> version can be built: with this version, the Qt6 library is available and some packages are the latest version too.
[[File:AXEL-ULite-buildroot-gstreamer2.png | thumb | center| 1000px| gstreamer CPU load using <code>imxpxpvideosink</code>]]
[[File:Gstreamer-pxp.png | thumb | center| 1000px| Big Buck Bunny 640x360 MPEG-4: 53% CPU load]]
==Binary artifacts ==
buildroot binary artifacts (root file system, kernel+dtb and SDK) can be downloaded - for both versions - from DAVE Embedded Systems [https://cloud.dave.eu/public/buildroot-axel-ulite cloud server]
'''N.B.''' <code>config</code> file should be renamed as <code>.config</code> in the buildroot directory before starting the build process