はじめに
この記事は Qt Advent Calendar 2024 3日目の記事です。
昨日は @maakun_eng さんによる Qt Creator のビルドにトライする でした。
Qt Creator はとても便利ですが、たまにもっと便利にならないかなとパッチを送ることがあります。自分が毎日使う仕事道具を自分でビルドができるといろんなことが試せていいですよね。
先月後半に 合同会社シグナルスロット としてはじめて EdgeTech+ 2024 に参加するにあたり、Toradex Japan 株式会社 から展示用のボードをお借りすることができました。今回はそのうちの1つで Qt6 のデモを動かした際の作業を記事にしました。
ハードウェア構成
-
Toradex Verdin AM62 Solo 512MB
- GPU なし
- ディスプレイは LVDS のみサポート
- Mallow Carrier Board
- Capacitive Touch Display 10.1” LVDS
デバイスの準備
Toradex Development Center の Quickstart Guide のデバイスを設定していきます。
配線
Verdin AM62 を Mallow にセットする
Unboxing and Setup Cables - Mallow Carrier Board に手順が書いてあります。
ディスプレイを Mallow に接続する
First Steps with Capacitive Touch Display 10.1 Inch LVDS に手順が書いてあります。
イメージのフラッシュの手順
Toradex Easy Installer
Download Toradex Easy Installer から Version 6 の Verdin AM62 のものをダウンロードし、展開します。
ホストPCに dfu-util が必要です。
// Gentoo Linux の場合
$ sudo emerge -avt dfu-util
リカバリーモードにする
NXP i.MX and TI AM62x Recovery Mode に手順が書いてあります。
以下のピンをショートさせて、電源を入れます。
USB-C でホスト PC と接続する
以下のように認識されました。
[2280653.562256] usb 7-2.3: new high-speed USB device number 15 using xhci_hcd
[2280653.654786] usb 7-2.3: New USB device found, idVendor=0451, idProduct=6165, bcdDevice= 2.00
[2280653.654799] usb 7-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[2280653.654804] usb 7-2.3: Product: AM62x DFU
[2280653.654808] usb 7-2.3: Manufacturer: Texas Instruments, Inc.
[2280653.654813] usb 7-2.3: SerialNumber: 01.00.00.00
リカバリー
$ ./recovery-linux.sh
Bus 007 Device 121: ID 0451:6165 Texas Instruments, Inc. AM62x DFU
dfu-util 0.11
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
Opening DFU capable USB device...
Device ID 0451:6165
Device DFU version 0110
Claiming USB DFU Interface...
Setting Alternate Interface #1 ...
Determining device status...
DFU state(2) = dfuIDLE, status(0) = No error condition is present
DFU mode device DFU version 0110
Device returned transfer size 512
Copying data from DFU device to PC
Upload [=========================] 100% 200 bytes
Upload done.
Received a total of 200 bytes
dfu-util: can't detach
Resetting USB to switch back to Run-Time mode
Bus 007 Device 121: ID 0451:6165 Texas Instruments, Inc. AM62x DFU
dfu-util 0.11
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
dfu-util: Warning: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release
Waiting for device, exit with ctrl-C
Opening DFU capable USB device...
Device ID 0451:6165
Device DFU version 0110
Claiming USB DFU Interface...
Setting Alternate Interface #0 ...
Determining device status...
DFU state(2) = dfuIDLE, status(0) = No error condition is present
DFU mode device DFU version 0110
Device returned transfer size 512
Copying data from PC to DFU device
Download [=========================] 100% 321922 bytes
Download done.
DFU state(6) = dfuMANIFEST-SYNC, status(0) = No error condition is present
dfu-util: unable to read DFU status after completion (LIBUSB_ERROR_IO)
Bus 007 Device 122: ID 1b67:4000 Toradex USB download gadget
dfu-util 0.11
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
dfu-util: Warning: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release
Waiting for device, exit with ctrl-C
Opening DFU capable USB device...
Device ID 1b67:4000
Device DFU version 0110
Claiming USB DFU Interface...
Setting Alternate Interface #0 ...
Determining device status...
DFU state(2) = dfuIDLE, status(0) = No error condition is present
DFU mode device DFU version 0110
Device returned transfer size 4096
Copying data from PC to DFU device
Download [=========================] 100% 1036059 bytes
Download done.
DFU state(7) = dfuMANIFEST, status(0) = No error condition is present
DFU state(2) = dfuIDLE, status(0) = No error condition is present
Done!
Resetting USB to switch back to Run-Time mode
Bus 007 Device 123: ID 1b67:4000 Toradex USB download gadget
dfu-util 0.11
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
dfu-util: Warning: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release
Waiting for device, exit with ctrl-C
Opening DFU capable USB device...
Device ID 1b67:4000
Device DFU version 0110
Claiming USB DFU Interface...
Setting Alternate Interface #1 ...
Determining device status...
DFU state(2) = dfuIDLE, status(0) = No error condition is present
DFU mode device DFU version 0110
Device returned transfer size 4096
Copying data from PC to DFU device
Download [=========================] 100% 985963 bytes
Download done.
DFU state(7) = dfuMANIFEST, status(0) = No error condition is present
DFU state(2) = dfuIDLE, status(0) = No error condition is present
Done!
Resetting USB to switch back to Run-Time mode
Downloading Toradex Easy Installer...
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.5.165-0-g7347a80
Success 1 Failure 0
7:21 8/ 8 [Done ] FB: done
USB デバイスの認識
リカバリー後はNICとして認識されます。
[2280984.055215] usb 7-2.3: new high-speed USB device number 23 using xhci_hcd
[2280984.148231] usb 7-2.3: New USB device found, idVendor=1b67, idProduct=4049, bcdDevice= 0.01
[2280984.148243] usb 7-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[2280984.148248] usb 7-2.3: Product: 0073 Verdin AM62 Dual 1GB ET
[2280984.148253] usb 7-2.3: Manufacturer: Toradex
[2280984.148257] usb 7-2.3: SerialNumber: 15479088
[2280984.226483] cdc_ncm 7-2.3:1.0: MAC-Address: 32:ab:2b:da:f6:d3
[2280984.226829] cdc_ncm 7-2.3:1.0 eth1: register 'cdc_ncm' at usb-0000:22:00.3-2.3, CDC NCM (NO ZLP), 32:ab:2b:da:f6:d3
[2280984.254033] cdc_ncm 7-2.3:1.0 enp34s0f3u2u3: renamed from eth1
VNC 接続をする
今回の SoM はデフォルトでは LVDS 接続のディスプレイには対応しておらず、HDMI には非対応のため、ネットワーク経由で GUI を表示する必要があります。
Tezi の詳細ドキュメント などを読むと、RDNIS は 192.168.11.1
が初期状態で割り当てられているようなので、対応する enp34s0f3u2u3
を 192.168.11.2
などに設定し、VNC で実機にアクセスします。
実機の有線LANを接続すると、インストール可能なイメージの一覧をインターネット経由で取得します。
イメージを格納した USB メモリを差し込むと、それが表示されるようになります。
では、次にこのイメージを自分で作成していきましょう。
OS のイメージの作成
なるべく最低限の環境からはじめたいので、Yocto を自分でビルドすることにします。
初期設定
Docker で Ubuntu 24.04 を起動し、初期設定を行います。
$ docker run -it ubuntu:24.04 /bin/bash
root@fee456f40266:/# apt-get update
root@fee456f40266:/# DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential chrpath cpio curl debianutils diffstat file gawk gcc-multilib git-core iproute2 iputils-ping language-pack-en liblz4-tool openssh-server pigz python3 python3-git python3-jinja2 python3-pexpect python3-pip rsync socat sudo texinfo tmux unzip vim wget xz-utils zstd
root@fee456f40266:/# update-locale LANG=en_US.UTF-8
24.04 の docker イメージには既に ubuntu
ユーザーが存在するので、以降の作業はそのユーザーで行います。
root@fee456f40266:/# su - ubuntu
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
git のユーザーの設定
ubuntu@fee456f40266:~$ git config --global user.email "[メールアドレス]"
ubuntu@fee456f40266:~$ git config --global user.name "[名前]"
repo の取得
ubuntu@fee456f40266:~$ curl https://storage.googleapis.com/git-repo-downloads/repo > repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 47141 100 47141 0 0 520k 0 --:--:-- --:--:-- --:--:-- 523k
ubuntu@fee456f40266:~$ chmod +x repo
Toradex の kirkstone を取得
ubuntu@fee456f40266:~$ ~/repo init -u git://git.toradex.com/toradex-manifest.git -b kirkstone-6.x.y -m tdxref/default.xml
Downloading Repo source from https://gerrit.googlesource.com/git-repo
repo: Updating release signing keys to keyset ver 2.3
Your identity is: Tasuku Suzuki <tasuku.suzuki@signal-slot.co.jp>
If you want to change this, please re-run 'repo init' with --config-name
Testing colorized output (for 'repo diff', 'repo status'):
black red green yellow blue magenta cyan white
bold dim ul reverse
Enable color display in this user account (y/N)? y
repo has been initialized in /home/ubuntu
ubuntu@fee456f40266:~$ ~/repo sync
Fetching: 100% (16/16), done in 3m20.524s
Checking out: 93% (15/16), done in 0.398s
Checking out: 6% (1/16), done in 0.062s
repo sync has finished successfully.
ubuntu@fee456f40266:~$ ls layers/
meta-arm meta-freescale-3rdparty meta-openembedded meta-security meta-toradex-bsp-common meta-toradex-distro meta-toradex-ti openembedded-core
meta-freescale meta-freescale-distro meta-qt5 meta-ti meta-toradex-demos meta-toradex-nxp meta-yocto
meta-qt5 がありますね
meta-qt6 を追加
ubuntu@fee456f40266:~$ git clone git://code.qt.io/yocto/meta-qt6.git --branch v6.8.0 layers/meta-qt6
Cloning into 'layers/meta-qt6'...
remote: Enumerating objects: 14044, done.
remote: Counting objects: 100% (14044/14044), done.
remote: Compressing objects: 100% (3544/3544), done.
remote: Total 14044 (delta 10814), reused 13465 (delta 10357), pack-reused 0
Receiving objects: 100% (14044/14044), 2.93 MiB | 922.00 KiB/s, done.
Resolving deltas: 100% (10814/10814), done.
Note: switching to 'd6e576a7d75d0371602e93124c4e2f1c539be8f3'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
am62 ディレクトリ以下にビルドの設定をする
ubuntu@fee456f40266:~$ . layers/openembedded-core/oe-init-build-env am62
You had no conf/local.conf file. This configuration file has therefore been
created for you from /home/ubuntu/layers/openembedded-core/meta/conf/local.conf.sample
You may wish to edit it to, for example, select a different MACHINE (target
hardware). See conf/local.conf for more information as common configuration
options are commented.
You had no conf/bblayers.conf file. This configuration file has therefore been
created for you from /home/ubuntu/layers/openembedded-core/meta/conf/bblayers.conf.sample
To add additional metadata layers into your configuration please add entries
to conf/bblayers.conf.
The Yocto Project has extensive documentation about OE including a reference
manual which can be found at:
https://docs.yoctoproject.org
For more information about OpenEmbedded see the website:
https://www.openembedded.org/
### Shell environment set up for builds. ###
You can now run 'bitbake <target>'
Common targets are:
core-image-minimal
core-image-full-cmdline
core-image-sato
core-image-weston
meta-toolchain
meta-ide-support
You can also run generated qemu images with a command like 'runqemu qemux86-64'.
Other commonly useful commands are:
- 'devtool' and 'recipetool' handle common recipe tasks
- 'bitbake-layers' handles common layer tasks
- 'oe-pkgdata-util' handles common target package tasks
マシンの設定
ubuntu@fee456f40266:~/am62$ vi conf/local.conf
MACHINE = "verdin-am62"
ubuntu@fee456f40266:~/am62$ bitbake-layers add-layer ../layers/meta-arm/meta-arm-toolchain/
NOTE: Starting bitbake server...
ubuntu@fee456f40266:~/am62$ bitbake-layers add-layer ../layers/meta-arm/meta-arm/
NOTE: Starting bitbake server...
ubuntu@fee456f40266:~/am62$ bitbake-layers add-layer ../layers/meta-ti/meta-ti-bsp/
NOTE: Starting bitbake server...
ubuntu@fee456f40266:~/am62$ bitbake-layers add-layer ../layers/meta-toradex-bsp-common/
NOTE: Starting bitbake server...
ubuntu@fee456f40266:~/am62$ bitbake-layers add-layer ../layers/meta-toradex-ti/
NOTE: Starting bitbake server...
ubuntu@fee456f40266:~/am62$ bitbake-layers add-layer ../layers/meta-openembedded/meta-oe
NOTE: Starting bitbake server...
ubuntu@fee456f40266:~/am62$ bitbake-layers add-layer ../layers/meta-qt6
NOTE: Starting bitbake server...
ERROR: Layer 'qt6-layer' depends on layer 'meta-python', but this layer is not enabled in your configuration
ERROR: Parse failure with the specified layer added, exiting.
怒られました。python はいらないことにしましょう。
ubuntu@fee456f40266:~/am62$ vi conf/local.conf
LAYERDEPENDS_qt6-layer:remove = " meta-python"
ubuntu@fee456f40266:~/am62$ bitbake-layers add-layer ../layers/meta-qt6
NOTE: Starting bitbake server...
Qt のビルドの設定をします。フルのものはいらないので essentials のモジュールのみイメージに追加します。
X11 は利用せず、KMS に直接描くことにします。
また、Verdin-AM62 Solo は GPU が搭載されていないため、GLESv2 の機能も削除しています。
それから、Qt から利用するフォントを1つ追加しておきます。
ubuntu@fee456f40266:~/am62$ vi conf/local.conf
IMAGE_INSTALL:append = " packagegroup-qt6-essentials"
PACKAGECONFIG:append_pn-qtbase = " kms"
DISTRO_FEATURES:remove = "x11"
PACKAGECONFIG:remove = " glesv2"
IMAGE_INSTALL:append = " source-han-sans-jp-fonts"
LVDS ディスプレイを利用するための Device Tree の設定をします。
ubuntu@fee456f40266:~/am62$ vi conf/local.conf
TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT:remove = " verdin-am62_dsi-to-hdmi_overlay.dtbo"
TEZI_EXTERNAL_KERNEL_DEVICETREE_BOOT:append = " verdin-am62_panel-cap-touch-10inch-lvds_overlay.dtbo"
Device Tree Overlays on Toradex System on Modules を参考にしました。
ついでに ssh もできるようにしておきます。
ubuntu@fee456f40266:~/am62$ vi conf/local.conf
IMAGE_FEATURES:append = " ssh-server-openssh"
IMAGE_INSTALL:append = " openssh openssh-sftp-server"
ビルド
ubuntu@fee456f40266:~/am62$ bitbake core-image-base
成果物は以下の通りです。
ubuntu@fee456f40266:~/am62$ find deploy-ti/
deploy-ti/
deploy-ti/images
deploy-ti/images/verdin-am62
deploy-ti/images/verdin-am62/u-boot-spl.bin-sd
deploy-ti/images/verdin-am62/core-image-base.env
deploy-ti/images/verdin-am62/tiboot3-am62x-hs-fs-verdin.bin-sd-r5
deploy-ti/images/verdin-am62/k3-am625-verdin-wifi-yavia--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246.dtb
deploy-ti/images/verdin-am62/k3-am625-verdin-wifi-dahlia-verdin-am62.dtb
deploy-ti/images/verdin-am62/firmware-verdin-am62-hs-fs.bin
deploy-ti/images/verdin-am62/core-image-base-verdin-am62-20241202182246.rootfs.tar.xz
deploy-ti/images/verdin-am62/k3-am625-verdin-nonwifi-dev-verdin-am62.dtb
deploy-ti/images/verdin-am62/k3-am625-verdin-nonwifi-dev--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246.dtb
deploy-ti/images/verdin-am62/u-boot-r5spl.bin
deploy-ti/images/verdin-am62/k3-am625-verdin-nonwifi-dahlia--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246.dtb
deploy-ti/images/verdin-am62/boot.scr-verdin-am62
deploy-ti/images/verdin-am62/core-image-base-verdin-am62-20241202182246.testdata.json
deploy-ti/images/verdin-am62/core-image-base-verdin-am62.testdata.json
deploy-ti/images/verdin-am62/prepare.sh
deploy-ti/images/verdin-am62/u-boot.img-sd
deploy-ti/images/verdin-am62/k3-am625-verdin-nonwifi-dahlia.dtb
deploy-ti/images/verdin-am62/tiboot3.bin-sd-r5
deploy-ti/images/verdin-am62/k3-am625-verdin-nonwifi-dahlia-verdin-am62.dtb
deploy-ti/images/verdin-am62/k3-am625-verdin-wifi-dev-verdin-am62.dtb
deploy-ti/images/verdin-am62/firmware-verdin-am62-hs.bin
deploy-ti/images/verdin-am62/core-image-base-verdin-am62.manifest
deploy-ti/images/verdin-am62/u-boot-r5spl-sd-r5-2023.04+gitAUTOINC+40a1d7b913-r0.bin
deploy-ti/images/verdin-am62/k3-am625-verdin-nonwifi-mallow-verdin-am62.dtb
deploy-ti/images/verdin-am62/u-boot-spl.bin-verdin-am62-sd
deploy-ti/images/verdin-am62/Image.gz-verdin-am62.bin
deploy-ti/images/verdin-am62/tispl.bin
deploy-ti/images/verdin-am62/bl31.elf
deploy-ti/images/verdin-am62/ti-sysfw
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-stub-firmware-am62px-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721s2-gp.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j7200_sr2-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-sci-firmware-am65x_sr2-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-sci-firmware-am65x_sr2-gp.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721e_sr1_1-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-sci-firmware-am64x-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-am62ax-hs-fs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-sci-firmware-am65x-gp.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j742s2-hs-fs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-sci-firmware-am64x_sr2-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721e_sr2-hs-fs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j722s-hs-fs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-am62px-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721e-hs-fs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-am62px-hs-fs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j7200-hs-fs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j7200-gp.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j7200-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j7200_sr2-hs-fs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721e_sr2-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-am62ax-hs-fs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-am62ax-gp.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-stub-firmware-am62ax-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721e-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721s2-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-sci-firmware-am64x_sr2-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721s2-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j742s2-hs-fs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721s2-hs-fs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-stub-firmware-am62px-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-sci-firmware-am64x_sr2-hs-fs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-am62x-gp.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-am62x-hs-fs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j7200-hs-fs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721s2-hs-fs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-sci-firmware-am64x-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721e_sr1_1-hs-fs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-am62px-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j784s4-hs-fs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-stub-firmware-am62x-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721e_sr1_1-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j784s4-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721e-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-am62ax-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721e_sr1_1-hs-fs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-am62x-hs-fs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-sci-firmware-am65x_sr2-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-am62ax-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-stub-firmware-am62ax-gp.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j784s4-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-am62x-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j722s-hs-fs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j7200_sr2-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-stub-firmware-am62x-gp.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j7200_sr2-hs-fs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j722s-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j784s4-gp.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-am62px-hs-fs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721e_sr2-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-stub-firmware-am62ax-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-stub-firmware-am62x-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721e-hs-fs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721e_sr2-hs-fs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j7200-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-sci-firmware-am65x-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j784s4-hs-fs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-sci-firmware-am65x-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-am62x-hs-cert.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-sci-firmware-am64x_sr2-hs-fs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j721e-gp.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-fs-firmware-j722s-hs-enc.bin
deploy-ti/images/verdin-am62/ti-sysfw/ti-sci-firmware-am64x-gp.bin
deploy-ti/images/verdin-am62/tispl.bin-verdin-am62
deploy-ti/images/verdin-am62/core-image-base-verdin-am62.tar.xz
deploy-ti/images/verdin-am62/u-boot-verdin-am62.dtb
deploy-ti/images/verdin-am62/modules--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246.tgz
deploy-ti/images/verdin-am62/bl31.bin
deploy-ti/images/verdin-am62/core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0.tar
deploy-ti/images/verdin-am62/Image--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246.bin
deploy-ti/images/verdin-am62/k3-am625-verdin-nonwifi-yavia.dtb
deploy-ti/images/verdin-am62/ti-dm
deploy-ti/images/verdin-am62/ti-dm/am62xx
deploy-ti/images/verdin-am62/ti-dm/am62xx/ipc_echo_testb_mcu1_0_release_strip.xer5f.signed
deploy-ti/images/verdin-am62/ti-dm/am62xx/ipc_echo_testb_mcu1_0_release_strip.xer5f
deploy-ti/images/verdin-am62/u-boot-nodtb-verdin-am62.bin
deploy-ti/images/verdin-am62/marketing.tar
deploy-ti/images/verdin-am62/k3-am625-verdin-nonwifi-yavia--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246.dtb
deploy-ti/images/verdin-am62/optee
deploy-ti/images/verdin-am62/optee/tee-header_v2.bin
deploy-ti/images/verdin-am62/optee/tee.bin
deploy-ti/images/verdin-am62/optee/tee-raw.bin
deploy-ti/images/verdin-am62/optee/tee-pageable_v2.bin
deploy-ti/images/verdin-am62/optee/bl32.elf
deploy-ti/images/verdin-am62/optee/tee.elf
deploy-ti/images/verdin-am62/optee/tee-pager_v2.bin
deploy-ti/images/verdin-am62/optee/bl32.bin
deploy-ti/images/verdin-am62/Image-verdin-am62.bin
deploy-ti/images/verdin-am62/image-core-image-base.json
deploy-ti/images/verdin-am62/u-boot-spl.bin
deploy-ti/images/verdin-am62/toradexlinux.png
deploy-ti/images/verdin-am62/k3-am625-verdin-wifi-yavia.dtb
deploy-ti/images/verdin-am62/u-boot-verdin-am62-2023.04+gitAUTOINC+40a1d7b913-r0.img
deploy-ti/images/verdin-am62/u-boot-verdin-am62.img
deploy-ti/images/verdin-am62/tiboot3-am62x-hs-fs-verdin-sd-r5-2023.04+gitAUTOINC+40a1d7b913-r0.bin
deploy-ti/images/verdin-am62/tispl.bin-sd
deploy-ti/images/verdin-am62/k3-am625-verdin-nonwifi-mallow.dtb
deploy-ti/images/verdin-am62/u-boot-verdin-am62-2023.04+gitAUTOINC+40a1d7b913-r0.dtb
deploy-ti/images/verdin-am62/wrapup.sh
deploy-ti/images/verdin-am62/tispl.bin-verdin-am62-sd
deploy-ti/images/verdin-am62/core-image-base-verdin-am62-20241202182246-Tezi.tar
deploy-ti/images/verdin-am62/core-image-base-verdin-am62.wic.bmap
deploy-ti/images/verdin-am62/core-image-base-verdin-am62-20241202182246.rootfs.manifest
deploy-ti/images/verdin-am62/k3-am625-verdin-wifi-dev.dtb
deploy-ti/images/verdin-am62/fitImage
deploy-ti/images/verdin-am62/tiboot3.bin
deploy-ti/images/verdin-am62/Image
deploy-ti/images/verdin-am62/fitImage-verdin-am62.bin
deploy-ti/images/verdin-am62/u-boot-initial-env-verdin-am62-sd
deploy-ti/images/verdin-am62/bl31-k3.bin
deploy-ti/images/verdin-am62/ti_logo_414x97_32bpp.bmp.gz
deploy-ti/images/verdin-am62/kernel-config--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246
deploy-ti/images/verdin-am62/u-boot-verdin-am62.img-sd
deploy-ti/images/verdin-am62/core-image-base-verdin-am62-20241202182246.rootfs.wic.bmap
deploy-ti/images/verdin-am62/k3-am625-verdin-wifi-dahlia--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246.dtb
deploy-ti/images/verdin-am62/k3-am625-verdin-wifi-mallow-verdin-am62.dtb
deploy-ti/images/verdin-am62/k3-am625-verdin-nonwifi-mallow--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246.dtb
deploy-ti/images/verdin-am62/core-image-base-verdin-am62.bootfs.tar.xz
deploy-ti/images/verdin-am62/fitImage-its--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246.its
deploy-ti/images/verdin-am62/k3-am625-verdin-wifi-mallow--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246.dtb
deploy-ti/images/verdin-am62/u-boot.img
deploy-ti/images/verdin-am62/core-image-base-verdin-am62-20241202182246.rootfs.bootfs.tar.xz
deploy-ti/images/verdin-am62/k3-am625-verdin-wifi-dahlia.dtb
deploy-ti/images/verdin-am62/devicetree
deploy-ti/images/verdin-am62/devicetree/verdin-am62_mezzanine_panel-cap-touch-10inch-lvds_overlay.dtbo
deploy-ti/images/verdin-am62/devicetree/verdin-am62_nau8822-btl_overlay.dtbo
deploy-ti/images/verdin-am62/devicetree/verdin-am62_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dtbo
deploy-ti/images/verdin-am62/devicetree/verdin-am62_ov5640_overlay.dtbo
deploy-ti/images/verdin-am62/devicetree/verdin-am62_hmp_overlay.dtbo
deploy-ti/images/verdin-am62/devicetree/verdin-am62_mezzanine_panel-lvds-dual-channel-1080p_overlay.dtbo
deploy-ti/images/verdin-am62/devicetree/verdin-am62_spidev_overlay.dtbo
deploy-ti/images/verdin-am62/devicetree/verdin-am62_panel-cap-touch-10inch-lvds_overlay.dtbo
deploy-ti/images/verdin-am62/devicetree/verdin-am62_panel-cap-touch-10inch-dsi_overlay.dtbo
deploy-ti/images/verdin-am62/devicetree/verdin-am62_dsi-to-hdmi_overlay.dtbo
deploy-ti/images/verdin-am62/u-boot-spl.bin-verdin-am62-2023.04+gitAUTOINC+40a1d7b913-r0-sd
deploy-ti/images/verdin-am62/bl32.elf
deploy-ti/images/verdin-am62/core-image-base-verdin-am62.wic.xz
deploy-ti/images/verdin-am62/u-boot-spl.bin-verdin-am62
deploy-ti/images/verdin-am62/fitImage-its-verdin-am62
deploy-ti/images/verdin-am62/k3-am625-verdin-wifi-dev--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246.dtb
deploy-ti/images/verdin-am62/k3-am625-verdin-nonwifi-yavia-verdin-am62.dtb
deploy-ti/images/verdin-am62/u-boot-initial-env-sd
deploy-ti/images/verdin-am62/overlays
deploy-ti/images/verdin-am62/overlays/verdin-am62_mezzanine_panel-cap-touch-10inch-lvds_overlay.dtbo
deploy-ti/images/verdin-am62/overlays/verdin-am62_nau8822-btl_overlay.dtbo
deploy-ti/images/verdin-am62/overlays/verdin-am62_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dtbo
deploy-ti/images/verdin-am62/overlays/verdin-am62_ov5640_overlay.dtbo
deploy-ti/images/verdin-am62/overlays/verdin-am62_hmp_overlay.dtbo
deploy-ti/images/verdin-am62/overlays/verdin-am62_mezzanine_panel-lvds-dual-channel-1080p_overlay.dtbo
deploy-ti/images/verdin-am62/overlays/verdin-am62_spidev_overlay.dtbo
deploy-ti/images/verdin-am62/overlays/verdin-am62_panel-cap-touch-10inch-lvds_overlay.dtbo
deploy-ti/images/verdin-am62/overlays/verdin-am62_panel-cap-touch-10inch-dsi_overlay.dtbo
deploy-ti/images/verdin-am62/overlays/verdin-am62_dsi-to-hdmi_overlay.dtbo
deploy-ti/images/verdin-am62/fitImage-linux.bin-verdin-am62
deploy-ti/images/verdin-am62/k3-am625-verdin-wifi-mallow.dtb
deploy-ti/images/verdin-am62/tiboot3-am62x-hs-fs-verdin.bin
deploy-ti/images/verdin-am62/u-boot-r5spl-verdin-am62.bin-sd-r5
deploy-ti/images/verdin-am62/firmware-verdin-am62-gp.bin
deploy-ti/images/verdin-am62/fitImage-linux.bin--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246.bin
deploy-ti/images/verdin-am62/core-image-base-verdin-am62-20241202182246.rootfs.wic.xz
deploy-ti/images/verdin-am62/u-boot-initial-env-verdin-am62-sd-2023.04+gitAUTOINC+40a1d7b913-r0
deploy-ti/images/verdin-am62/overlays.txt
deploy-ti/images/verdin-am62/k3-am625-verdin-nonwifi-dev.dtb
deploy-ti/images/verdin-am62/u-boot-r5spl.bin-sd-r5
deploy-ti/images/verdin-am62/bl31-k3.elf
deploy-ti/images/verdin-am62/fitImage--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246.bin
deploy-ti/images/verdin-am62/kernel-config
deploy-ti/images/verdin-am62/u-boot-nodtb.bin
deploy-ti/images/verdin-am62/u-boot-r5spl-verdin-am62.bin
deploy-ti/images/verdin-am62/u-boot-sd-2023.04+gitAUTOINC+40a1d7b913-r0.img
deploy-ti/images/verdin-am62/modules-verdin-am62.tgz
deploy-ti/images/verdin-am62/tiboot3-am62x-gp-verdin.bin
deploy-ti/images/verdin-am62/bl32.bin
deploy-ti/images/verdin-am62/u-boot.dtb
deploy-ti/images/verdin-am62/k3-am625-verdin-wifi-yavia-verdin-am62.dtb
deploy-ti/images/verdin-am62/Image.gz
deploy-ti/images/verdin-am62/Image.gz--6.1.83+git0+dd30c7ec04-r0-verdin-am62-20241202182246.bin
deploy-ti/images/verdin-am62/u-boot-nodtb-verdin-am62-2023.04+gitAUTOINC+40a1d7b913-r0.bin
deploy-ti/images/verdin-am62/TI-TFL.txt
deploy-ti/images/verdin-am62/tiboot3-am62x-hs-verdin.bin
deploy-ti/images/verdin-am62/tispl.bin-sd-2023.04+gitAUTOINC+40a1d7b913-r0
Tezi で利用するのは、core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0.tar
になります。
ubuntu@fee456f40266:~/am62$ cd deploy-ti/images/verdin-am62/
ubuntu@fee456f40266:~/am62/deploy-ti/images/verdin-am62$ file core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0.tar
core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0.tar: POSIX tar archive (GNU)
ubuntu@fee456f40266:~/am62/deploy-ti/images/verdin-am62$ tar tf core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0.tar
core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0/toradexlinux.png
core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0/marketing.tar
core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0/prepare.sh
core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0/wrapup.sh
core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0/TI-TFL.txt
core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0/image.json
core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0/core-image-base-verdin-am62.tar.xz
core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0/core-image-base-verdin-am62.bootfs.tar.xz
core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0/u-boot-initial-env-sd
core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0/u-boot.img
core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0/tiboot3-am62x-gp-verdin.bin
core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0/tiboot3-am62x-hs-fs-verdin.bin
core-image-base-verdin-am62-20241202182246-Tezi_nodistro.0/tispl.bin
ホストにコピー
ubuntu@fee456f40266:~/am62/deploy-ti/images/verdin-am62$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
411: eth0@if412: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
ubuntu@fee456f40266:~/am62/deploy-ti/images/verdin-am62$ scp core-image-base-verdin-am62-20241202182246-Tezi.tar tasuku@172.17.0.1:/home/tasuku/Downloads/
The authenticity of host '172.17.0.1 (172.17.0.1)' can't be established.
ED25519 key fingerprint is SHA256:RCAms6wluq20EsE+8d5PenmueHksO9GtDHcbE/S0cuo.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.17.0.1' (ED25519) to the list of known hosts.
(tasuku@172.17.0.1) Password:
core-image-base-verdin-am62-20241202182246-Tezi.tar 100% 65MB 650.5MB/s 00:00
Tezi
ホスト側にコピーした core-image-base-verdin-am62-20241202182246-Tezi.tar を USB メモリに展開し、実機に差すと以下のようにイメージが認識されます。
ダブルクリックすると、以下の確認ダイアログが表示されます。
Yes をクリックするとインストールがはじまります。
インストールが終わると次のアクションを選択するダイアログが表示されます。
「Reboot」をクリックしましょう。
この時、リカバリーモードに入るために差したショートピンを外してください。
実機の起動
LVDS 接続したディスプレイに起動画面が表示されます。
ホスト名は「verdin-am62」となっています。
今回ビルドした Yocto では RDNIS の機能は有効になっていないので、別途有線LANケーブルを差して、ホスト名でアクセスしましょう。
host $ ssh root@verdin-am62.local
root@verdin-am62:~# vi main.qml
import QtQuick
Window {
visible: true
color: '#2CDE85'
Text {
anchors.centerIn: parent
text: "Hello World!"
color: '#00414A'
font.pointSize: 48
}
}
root@verdin-am62:~# qml main.qml
Detected locale "C" with character encoding "ANSI_X3.4-1968", which is not UTF-8.
Qt depends on a UTF-8 locale, and has switched to "C.UTF-8" instead.
If this causes problems, reconfigure your locale. See the locale(1) manual
for more information.
無事 Qt Quick の画面が出せました。
作業をした docker の保存
toradex_verdin_am62_solo:0.0.1
という名前でまた利用できるようにしておきましょう。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fee456f40266 ubuntu:24.04 "/bin/bash" 33 hours ago Up 33 hours goofy_shannon
$ docker commit fee456f40266 toradex_verdin_am62_solo:0.0.1
終わりに
今回は Toradex Japan さんにお借りした AM62 のボードで meta-qt6 をビルドし、簡単な Qt Quick の UI を表示してみました。この記事はここまでで完了で、次回はこの先を書こうと思っているので首を長くしてお待ちください。
明日は @hermit4 さんによる Pyside6でアナログ時計を作ってみる です。
Slint Advent Calendar 2024 の方にも Pyside6(QML) vs Slint-Python(Slint) という記事を書かれるようで気になりますね!