-
Notifications
You must be signed in to change notification settings - Fork 0
Build, Deploy, & Run a Qt‐Enabled Image on RzBoard V2L
Building a Qt-enabled yocto image and deploying it to the RzBoard V2L; finally, running QT demo apps!
Difficulty: Intermediate
- Hands-on Estimate: 1 hour
- Hands-off Estimate 5 hours (Lengthy Linux Build)
- Build, Deploy, & Run a Qt-Enabled Image on RzBoard V2L
Before you begin, make sure you have the following hardware and software in place:
- RzBoard V2L
-
Build Host
- 64-bit Ubuntu 20.04 LTS
- 100+ GB drive space
- 1x MicroHDMI - HDMI Cable and HDMI Display or MIPI-DSI Display
- USB Mouse
- USB Keyboard
- USB-Serial adapter cable (I'm using PL2303TA)
We are going to download the packages that correspond to a release called Verified Linux Package 3.0.2. These packages will contain Yocto layers, documentation, and more. We will be working out of a directory called ~/rz_qt5/
moving forward.
The following packages should be downloaded to a working directory, ~/rz_qt5/
:
Package Name | Version | Download File |
---|---|---|
RZ/V Verified Linux Package | V3.0.2 | RTK0EF0045Z0024AZJ-v3.0.2.zip |
RZ MPU Graphics Library | Evaluation Version V1.4 | RTK0EF0045Z13001ZJ-v1.4_EN.zip |
RZ MPU Codec Library | Evaluation Version V1.0.1 | RTK0EF0045Z15001ZJ-v1.0.1_EN.zip |
RZ/V2L DRP-AI Support Package | V7.30 | r11an0549ej0730-rzv2l-drpai-sp.zip |
RZ/V2L Multi-OS Package | V1.10 | r01an6238ej0110-rzv2l-cm33-multi-os-pkg.zip |
Package Notes:
- The Renesas website provides two version packages, "Evaluation Version" and "Unrestricted Version", for each of the RZ MPU Graphics Library and the RZ MPU Codec Library.
- The "Evaluation Version" can be downloaded immediately, but has a 2 hour timeout after every board boot.
- The "Unrestricted Versions" is not available for download until the request for permission on the Renesas website is complete.
We will be cloning the following repositories later in the blog
The RZ/V2L is an exciting AI on the edge device, but it also has strong HMI Capabilities! Grouping an AI accelerator, HDMI/MIPI output, and MIPI CSI input together is powerful. Integrating responsive GUIs, even touch screens, along with fast real-time AI is one of the primary goals of the RZ/V2L.
One of the industry leading GUI frameworks is Qt; known for its cross platform, performance oriented, and feature rich framework. Building with Qt requires both license understanding and Qt device support.
Qt has two available license formats: commercial and open source. Additionally, different versions of Qt have different license availabilities and restrictions.
In terms of Qt device support, the RZ/V2L can simply build Qt support into its Linux build. Building a custom Linux BSP for the RZ/V2L is pretty easy, as the process is documented and open source. This project will cover adding QT enablement to the existing build process, building an RZ/V2L Image, deploying, and lastly running Qt applications on the RZ/V2L.
Moving forward, it is assumed the reader has a basic/moderate understanding of python (pip installing), subnet/ip management, and linux commands.
Install the following required packages on your Ubuntu build host:
$ sudo apt update
$ sudo apt install -y gawk wget git-core diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping libsdl1.2-dev xterm p7zip-full libyaml-dev \
rsync curl locales bash-completion
If Git is not already configured, set Git configuration:
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
Verify the correct files are present in your working directory rz_qt5
.
$ cd ~/rz_qt5
$ ls -gnGh
total 2.5G
-rw-rw-r-- 1 2.0M Sep 22 12:49 r01an6238ej0110-rzv2l-cm33-multi-os-pkg.zip
-rw-rw-r-- 1 2.4G Sep 22 12:49 r11an0549ej0730-rzv2l-drpai-sp.zip
-rw-rw-r-- 1 36M Sep 22 12:49 RTK0EF0045Z0024AZJ-v3.0.2.zip
-rw-rw-r-- 1 79M Sep 22 12:49 RTK0EF0045Z13001ZJ-v1.4_EN.zip
-rw-rw-r-- 1 1.7M Sep 22 12:49 RTK0EF0045Z15001ZJ-v1.0.1_EN.zip
Download and run a script used to establish our build environment, a directory yocto_rzboard/
$ wget https://raw.githubusercontent.com/Avnet/meta-rzboard/rzboard_dunfell_5.10_v2/tools/create_yocto_rz_src.sh
$ chmod a+x create_yocto_rz_src.sh
$ ./create_yocto_rz_src.sh
$ ls -gnGh yocto_rzboard/
total 32K
drwxr-xr-x 10 4.0K Sep 22 2022 meta-gplv2
drwxrwxr-x 10 4.0K Dec 27 2022 meta-multi-os
drwxr-xr-x 13 4.0K Sep 22 2022 meta-openembedded
drwxr-xr-x 9 4.0K Sep 22 2022 meta-qt5
drwxr-xr-x 12 4.0K Dec 15 2022 meta-renesas
drwxrwxr-x 7 4.0K Dec 19 2022 meta-rz-features
drwxr-xr-x 15 4.0K Sep 22 2022 meta-virtualization
drwxr-xr-x 11 4.0K Sep 22 2022 poky
Download meta-rzboard
$ cd yocto_rzboard
$ git clone https://github.com/Avnet/meta-rzboard.git -b rzboard_dunfell_5.10_v2
So far, all the yocto related sources are in place.
ls ~/rz_qt5/yocto_rzboard
meta-gplv2 meta-multi-os meta-openembedded meta-qt5 meta-renesas meta-rzboard meta-rz-features meta-virtualization poky
$ cd ~/rz_qt5/yocto_rzboard/
$ mkdir -p ./build/conf
$ cp meta-rzboard/conf/rzboard/* build/conf/
$ ls build/conf/
bblayers.conf local.conf
Enable built-in QT demos by editing ~/rz_qt5/yocto_rzboard/build/conf/local.conf
to include the QT_DEMO = "1"
line
...
CONF_VERSION = "1"
# NEW ADDITION BELOW
QT_DEMO = "1"
DISTRO_FEATURES_append = " systemd"
...
Finally, we are ready to build the qt image! The bitbake command will take several hours without caching.
$ cd ~/rz_qt5/yocto_rzboard/
$ source poky/oe-init-build-env build/
$ bitbake avnet-core-image
WARNING: Layer qt5-layer should set LAYERSERIES_COMPAT_qt5-layer in its conf/layer.conf file to list the core layer names it is compatible with.
WARNING: Layer multi-os should set LAYERSERIES_COMPAT_multi-os in its conf/layer.conf file to list the core layer names it is compatible with.
WARNING: Layer qt5-layer should set LAYERSERIES_COMPAT_qt5-layer in its conf/layer.conf file to list the core layer names it is compatible with.
WARNING: Layer multi-os should set LAYERSERIES_COMPAT_multi-os in its conf/layer.conf file to list the core layer names it is compatible with.
WARNING: You have included the meta-virtualization layer, but 'virtualization' has not been enabled in your DISTRO_FEATURES. Some bbappend files may not take effect. See the meta-virtualization README for details on enabling virtualization support.
Loading cache: 100% |##############################################################################################################################################################| Time: 0:00:01
Loaded 6062 entries from dependency cache.
NOTE: Resolving any missing task queue dependencies
Build Configuration:
BB_VERSION = "1.46.0"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "universal"
TARGET_SYS = "aarch64-poky-linux"
MACHINE = "rzboard"
DISTRO = "poky"
DISTRO_VERSION = "3.1.17"
TUNE_FEATURES = "aarch64 cortexa55"
TARGET_FPU = ""
SOC_FAMILY = "rzv2l:r9a07g054l"
meta-gplv2
meta
meta-poky
meta-yocto-bsp
meta-renesas = "<unknown>:<unknown>"
meta-rzboard = "rzboard_dunfell_5.10_v2:0bc3ea871f6246025fc6b02ffa233be86fcdd763"
meta-oe
meta-python
meta-multimedia
meta-qt5
meta-rz-features
meta-multi-os
meta-filesystems
meta-networking
meta-virtualization = "<unknown>:<unknown>"
Initialising tasks: 100% |#########################################################################################################################################################| Time: 0:00:11
Sstate summary: Wanted 1 Found 0 Missed 1 Current 3829 (0% match, 99% complete)
NOTE: Executing Tasks
NOTE: Tasks Summary: Attempted 9322 tasks of which 9322 didn't need to be rerun and all succeeded.
Summary: There were 5 WARNING messages shown.
As you can see, you can expect a whole lot of command output, and a few benign warnings. Above is an shortened example of the stdout results of a successful build. The particular build above used caching from a previous build.
After the build is successfully completed, the output files will be located in build/tmp/deploy/images/rzboard/ directory.
Firstly, the RZBoard hardware must be in a SCIF flash configuration.
- Power off the RZBoard
- Place the RZBoard into "SCIF download boot-mode" by setting:
- BOOT2=1 by strapping J19-pin1 J1-pin2
- BOOT1=0 by strapping SW1.1 = ON
- BOOT0=1 by removing the SD card from MicroSD slot
- Connect RZBoard & build host such that they can be on the same subnet. For this demonstration, I connected RZBoard directly to build host via ethernet.
- Connect the RZBoard with the build host via the USB-Serial cable. The fly leads will connect with the 4-pin debug UART header.
Additionally, you will need a flash-writer tool to send the data over the USB-serial cable. To download the flash writer and its related dependencies, run the following:
$ cd ~/rz_qt5
$ git clone https://github.com/Avnet/rzboard_flash_util.git
$ cd rzboard_flash_util
$ pip3 install -r requirements.txt
The flash-writer tool makes a few assumptions (README):
- The images to be flashed are located in the directory of the flash writer
rzboard_flash-util
(with the original names output by bitbake) - /dev/ttyUSB0 is used (check out the flash writer docs for overriding the default serial port)
Before running the flash-writer, you can verify your USB-Serial device is protected. I'm using a Prolific PL2303TA which shows up in lsusb
like:
$ lsusb
...
Bus 001 Device 007: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
...
To deploy your qt build, you will need the following files
Image | File Name | Description |
---|---|---|
Flash Image Writer | Flash_Writer_SCIF_rzboard.mot | Application loaded in to received bootloader images over serial and write to eMMC |
BL2 Image | bl2_bp-rzboard.srec | Bootloader |
FIP Image | fip-rzboard.srec | Bootloader, ARM TFA (Trusted Firmware-A) BL31, and u-boot in a combined image |
System Image | avnet-core-image-rzboard.wic | Contains the linux kernel, device tree (dtb), and root filesystem (rootfs) in a minimized format. |
Copy the files over to the target directory ~/rz_qt5/rzboard_flash_util
$ cd ~/rz_qt5/yocto_rzboard/build/
$ cp tmp/deploy/images/rzboard/avnet-core-image-rzboard.wic ~/rz_qt5/rzboard_flash_util/
$ cp tmp/deploy/images/rzboard/bl2_bp-rzboard.srec ~/rz_qt5/rzboard_flash_util/
$ cp tmp/deploy/images/rzboard/fip-rzboard.srec ~/rz_qt5/rzboard_flash_util/
$ cp tmp/deploy/images/rzboard/Flash_Writer_SCIF_rzboard.mot ~/rz_qt5/rzboard_flash_util/
Lastly, flash the bootloaders and system image using the --full
flash writer parameter. For --full
or --rootfs
, flash_util.py
will try to automatically find the RZBoard IP address, unless you specify a static IP. For this demonstration, I preferred to use a static IP.
The next steps require power cycling, here is a reminder of where the power button is:
When performing a --full
flash, follow the flash writer output. The general order of operations will be:
- Power down RZBoard, configure for SCIF download boot mode
- Give build host 192.168.1.X IP so it can share same subnet with RZBoard. Personally, I ran
$ ifconfig eno1 192.168.1.88
, as eno1 was the ethernet port connected directly to the RzBoard. - On build host, run
$ python flash_util.py --full --static_ip 192.168.1.99
from~/rz_qt5/rzboard_flash_util
- Power up RZBoard (Still in SCIF download boot mode)
- Let the
flash_util.py
script flash the flash writer, bl2, and FIP image. - Wait for the
Power on Board. Make sure boot2 strap is NOT on
flash log - Power down the RZBoard, removing the BOOT2 flywire strapping J19-pin1 J1-pin2
- Power on the RZBoard
- Wait for the
Finished. Total time: X.Ys
log before rebooting the RZBoard
NOTE: Use your prefered parameters/method, but know the RZBoard & build host must be on the same subnet. More information on the flashing utility can be found in the README
$ cd ~/rz_qt5/rzboard_flash_util/
$ python flash_util.py --full --static_ip 192.168.1.99
Please power on board. Make sure boot2 is strapped.
Writing Flash Writer application.
Writing bl2 image.
Writing FIP image.
Power on board. Make sure boot2 strap is NOT on.
Waiting for device...
Setting static IP: 192.168.1.99
Putting device into fastboot mode
Device in fastboot mode
error: no response from target
< waiting for udp:192.168.1.99>
fastboot: verbose: Do flash rawimg /home/ljkeller/code/rzv2l/rzboard_flash_util/avnet-core-image-rzboard.wic
fastboot: verbose: target reported max-download-size of 117440512 bytes
Sending sparse 'rawimg' 1/27 (102256 KB) OKAY [ 11.173s]
Writing 'rawimg' OKAY [ 20.617s]
Sending sparse 'rawimg' 2/27 (114684 KB) OKAY [ 12.525s]
Writing 'rawimg' (bootloader) writing
OKAY [ 9.997s]
Sending sparse 'rawimg' 3/27 (114684 KB) OKAY [ 12.511s]
Writing 'rawimg' (bootloader) writing
OKAY [ 9.965s]
Sending sparse 'rawimg' 4/27 (114684 KB) OKAY [ 12.522s]
Writing 'rawimg' OKAY [ 10.126s]
Sending sparse 'rawimg' 5/27 (114684 KB) OKAY [ 12.532s]
Writing 'rawimg' (bootloader) writing
OKAY [ 9.935s]
Sending sparse 'rawimg' 6/27 (114684 KB) OKAY [ 13.524s]
Writing 'rawimg' (bootloader) writing
OKAY [ 10.106s]
Sending sparse 'rawimg' 7/27 (114684 KB) OKAY [ 12.520s]
Writing 'rawimg' OKAY [ 9.933s]
Sending sparse 'rawimg' 8/27 (114684 KB) OKAY [ 12.543s]
Writing 'rawimg' (bootloader) writing
OKAY [ 10.112s]
Sending sparse 'rawimg' 9/27 (114684 KB) OKAY [ 13.457s]
Writing 'rawimg' (bootloader) writing
OKAY [ 9.931s]
Sending sparse 'rawimg' 10/27 (114684 KB) OKAY [ 12.519s]
Writing 'rawimg' OKAY [ 9.924s]
Sending sparse 'rawimg' 11/27 (114684 KB) OKAY [ 12.536s]
Writing 'rawimg' (bootloader) writing
OKAY [ 10.106s]
Sending sparse 'rawimg' 12/27 (114684 KB) OKAY [ 13.537s]
Writing 'rawimg' (bootloader) writing
OKAY [ 9.940s]
Sending sparse 'rawimg' 13/27 (114684 KB) OKAY [ 12.527s]
Writing 'rawimg' OKAY [ 9.937s]
Sending sparse 'rawimg' 14/27 (114684 KB) OKAY [ 12.523s]
Writing 'rawimg' (bootloader) writing
OKAY [ 9.925s]
Sending sparse 'rawimg' 15/27 (114684 KB) OKAY [ 12.609s]
Writing 'rawimg' (bootloader) writing
OKAY [ 9.942s]
Sending sparse 'rawimg' 16/27 (114684 KB) OKAY [ 12.524s]
Writing 'rawimg' OKAY [ 15.702s]
Sending sparse 'rawimg' 17/27 (114684 KB) OKAY [ 12.527s]
Writing 'rawimg' (bootloader) writing
OKAY [ 9.972s]
Sending sparse 'rawimg' 18/27 (113788 KB) OKAY [ 12.409s]
Writing 'rawimg' (bootloader) writing
OKAY [ 15.134s]
Sending sparse 'rawimg' 19/27 (114684 KB) OKAY [ 12.531s]
Writing 'rawimg' OKAY [ 9.985s]
Sending sparse 'rawimg' 20/27 (114684 KB) OKAY [ 12.529s]
Writing 'rawimg' (bootloader) writing
OKAY [ 9.960s]
Sending sparse 'rawimg' 21/27 (113976 KB) OKAY [ 12.466s]
Writing 'rawimg' (bootloader) writing
OKAY [ 9.885s]
Sending sparse 'rawimg' 22/27 (114684 KB) OKAY [ 12.532s]
Writing 'rawimg' OKAY [ 9.975s]
Sending sparse 'rawimg' 23/27 (114684 KB) OKAY [ 12.525s]
Writing 'rawimg' (bootloader) writing
OKAY [ 9.932s]
Sending sparse 'rawimg' 24/27 (114684 KB) OKAY [ 12.515s]
Writing 'rawimg' (bootloader) writing
OKAY [ 9.948s]
Sending sparse 'rawimg' 25/27 (114684 KB) OKAY [ 12.514s]
Writing 'rawimg' OKAY [ 9.932s]
Sending sparse 'rawimg' 26/27 (114684 KB) OKAY [ 12.172s]
Writing 'rawimg' (bootloader) writing
OKAY [ 9.925s]
Sending sparse 'rawimg' 27/27 (104524 KB) OKAY [ 11.985s]
Writing 'rawimg' (bootloader) writing
(bootloader) writing
(bootloader) writing
OKAY [ 73.463s]
Finished. Total time: 693.934s
Now that your image is deployed, you can start running Qt applications on the RzBoard V2L. Connect an HDMI display (or optionally use the MIPI-DSI display), keyboard, and mouse to begin running a QT demo!
Here is a reminder image of the RZBoard IO.
MIPI Configuration Details
-
If you choose MIPI-DSI display and it’s model# is PH720128T003, you should edit uEnv.txt as follows:
#enable_overlay_disp=mipi
fdt_extra_overlays=rzboard-mipi-ph720128t003.dtbo
-
If you choose MIPI-DSI display and it’s model# is PH720128T005, you should edit uEnv.txt as follows:
enable_overlay_disp=mipi
#fdt_extra_overlays=...
MIPI-DSI supports adjustment of the LCD backlight brightness. The backlight brightness has a range from 0 to 9, where 9 is highest brightness, 0 is the lowest. Execute the following instructions on the serial terminal to implement the backlight test
$ echo 7 > /sys/class/backlight/backlight/brightness
Once the wayland desktop has launched, there are several available Qt demos to launch. These demos are marked by icons in the top-left corner of the desktop.
Demo | Description |
---|---|
QtCinematicExperience | Movie-launching application with graphical effects |
QtSmartHome | Controlling temperature, event triggers, and monitoring sensors |
QtEverywhere | All-in-one demo of games, videos, internet radio, etc... |
Qt-launch-demo | Animated demo of technical progress QT has made |
Qmlvideofx | Open a camera, image, or video and add after-affects |
Help | Launch a web broswer offering documentation on the RzBoard family |
Here is a collab of some of the same demos, for example:
If you are interested in interacting more with the Qt demo internals, you can open the .ui files with the QtDesigner at the /usr/bin/qt5
path by running /usr/bin/qt5/designer
. However, if you plan to do deeper application development, it would be easier to develop Qt applcations on the build host & deploy them to the RzV2L.
Finally, lets launch the smart-home demo! Do so by clicking this icon:
You should expect the smart-home demo to pop up on your screen. Feel free to click through the UI!
Interested in what qt applications are available on this system image? Check out /usr/bin/qt5
![usr_bin_qt5](https://private-user-images.githubusercontent.com/44109284/271663305-66e6f8de-597c-46a1-aaa0-6b26b3b24efb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0ODkzNDQsIm5iZiI6MTczOTQ4OTA0NCwicGF0aCI6Ii80NDEwOTI4NC8yNzE2NjMzMDUtNjZlNmY4ZGUtNTk3Yy00NmExLWFhYTAtNmIyNmIzYjI0ZWZiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDIzMjQwNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU4ZTQ0MGNmNGZiNTU0YWU2NmJhODYwZmIwZGY2NDM1ZDUyMDk0Nzg4YzdiZjcwODNjMjI3MjQxODhkMTYwZjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.ePxRi7sjAA2xX1L1x-MxYzsSx6DJpymJ6BMCicFjMBQ)
Ready to write your own qt applications on the RZ/V2L? Hackster.io blog coming soon!
We welcome feedback, bug reports, and contributions. If you encounter any issues or have suggestions for improvements, please feel free to open an issue or submit a pull request. Our support will be focused on the meta-rzboard repository.