This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] [参考译文] [常见问题解答] Sitara AM62x/AM62Ax/AM64x 器件的 BuildRoot 支持

Guru**** 1952840 points
Other Parts Discussed in Thread: SK-AM62B, AM625, PROCESSOR-SDK-AM62A, SK-AM62, AM6442, SK-AM64B
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1226815/faq-buildroot-support-for-sitara-am62x-am62ax-am64x-devices

器件型号:AM6442
主题中讨论的其他器件:SK-AM62、AM625、SK-AM62B SK-AM64、、 SK-AM64B

(也适用于其他已更改的 AM62x、AM62Ax、AM64x 器件)

简介

BuildRoot (https://buildroot.org/)是一款简单、高效且易于使用的工具、用于通过交叉编译为嵌入式 Linux 系统生成可启动映像。 因此、它是广泛使用的基于 Yocto 的构建系统的常见替代方案。 一些关键区别在于、可以轻松配置目标图像的大部分方面、包括但不限于添加、配置 和删除软件包、所有这些都使用基于菜单的系统、并且幕后的编译系统本身基于 Makefile、这将使许多开发人员立即熟悉(与 Yocto 使用的复杂脚本语言和分层方法相反)。 这一切使得 BuildRoot 非常平易近人、尤其适合从 MCU 转移到基于 Linux 的 MPU 世界的嵌入式系统工程师。

TI AM6x 器件的当前支持状态

TI 意识到需要为 AM6x 器件提供 BuildRoot 支持、并且已于2022年与 BuildRoot 社区合作、开始针对 AM64器件进行初始实施。 这项努力在2022年末左右稍稍稍停顿、但此后又再度回升。 2023年6月15日、已将一个更新的补丁集("补丁 v8")发布到社区邮件列表(https://lists.buildroot.org/pipermail/buildroot/2023-June/668947.html)、以继续先前的工作。 添加 AM64和 AM62器件支持、包括基于一些前期工作的图形、此前期工作是在过去几周内作为此 E2E 常见问题解答的一部分发布的。 最新的补丁程序集于2023年6月22日发布("补丁 v9")、可从 https://lore.kernel.org/buildroot/20230625193648.GA646621@scaer/T/获取。

下面的屏幕截图展示了当前的上游 BuildRoot、其中添加了实验性 AM64x 支持、显示了用于封装选择和总体图像配置的"menuconfig"屏幕。 本 E2E 常见问题解答的其余部分将讨论如何设置和使用 BuildRoot 为 AM64x 以及 AM62x 器件构建可引导的 SD 卡映像。

为 AM62x 和 AM64x 构建可引导 SD 卡映像(仅限实验支持!)

免责声明: 为在 Sitara AM6x 器件上使用生成可引导嵌入式 Linux 映像而正式建议和 TI 支持的方法是为不同的 AM6x 器件使用基于 Yocto 的 Linux SDK、 这些 SDK 可从 www.ti.com/.../PROCESSOR-SDK-AM62A 和 www.ti.com/.../PROCESSOR-SDK-AM64X 获取。 此处概述的在 BuildRoot 上尽早访问和启用 AM6x 的步骤均按原样提供、仅适用于实验。

由于这里讨论的 AM6x 支持的实验性质、所创建的图像存在一些限制、包括但不限于以下几点:

  • 虽然当前解决方案默认支持在 AM62x HS-FS 和 AM64x HS-FS 器件上启动、但尚不支持在 AM62x HS-SE 和 AM64x HS-SE 器件上启动。 支持 AM62x/AM64x HS-SE 器件以实现正确/完整身份验证的引导流程所需的证书/签名流程尚未完全实现。 如果需要支持 HS-SE、则需要在当前 AM62x/AM64x Linux SDK 建模后添加这些步骤。
  • 一些 SoC 特定的功能、例如远程内核固件加载/消息传递和低功耗模式支持尚未完全实现和/或测试

设置构建环境

与 BuildRoot 设置的大多数方面一样、构建环境非常简单、通常只涉及将正式的 BuildRoot Git 存储库克隆到 Linux 计算机。 由于官方 BuildRoot 存储库当前(截至2023年5月)仅包含不完整的 AM64x 支持、并且不支持 AM62x、因此需要手动应用一些附加补丁、才能为这些器件构建映像。

为了更轻松地重新创建针对 AM62x 和 AM64x 的 BuildRoot 支持、为了方便、这些补丁作为此 E2E 常见问题解答附带的 tarball 的一部分提供。 始终使用可 用于实验的最新/最新增补程序集、并参阅"变更日志"表列以了解更多详细信息。

此外、虽然 BuildRoot 本身支持广泛的主机系统、但是本节中列出的步骤是使用 Ubuntu 22.04进行专门测试的。 请注意、BuildRoot 期望主机系统上存在一些基本软件包、其中许多软件包应该已经预安装在典型的 Ubuntu 22.04系统上。 通常、安装"build-ess"和"libncurses-dev"(用于使用 menuconfig 接口)其他软件包应该是大多数需要的。 有关更多详细信息、请参阅官方 BuildRoot 文档: https://buildroot.org/downloads/manual/manual.html#requirement

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Clone the Buildroot Git repository from the official sources
a0797059@ula0797059:~/git
$ git clone git.buildroot.net/buildroot
Cloning into 'buildroot'...
remote: Enumerating objects: 3425, done.
remote: Counting objects: 100% (3425/3425), done.
remote: Compressing objects: 100% (3312/3312), done.
remote: Total 505068 (delta 1706), reused 240 (delta 111), pack-reused 501643
Receiving objects: 100% (505068/505068), 109.47 MiB | 2.84 MiB/s, done.
Resolving deltas: 100% (354798/354798), done.
Updating files: 100% (13204/13204), done.
# Change into the Buildroot folder
a0797059@ula0797059:~/git
$ cd buildroot/
# Optional/Recommended: Establish a new branch with a the same baseline commit
# that was used to create the patch set that needs to be applied. Skipping this
# step may cause issues over time, as 'master' advances further due to ongoing
# upstream development.
a0797059@ula0797059:~/git/buildroot (master)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

支持的电路板和构建配置

下表概述了如何为支持的不同电路板设置构建。 请注意、目前分发的 TI 入门套件(SK)板有多个版本因所使用的器件型号而异、其中包括要求构建环境的设置稍有不同。 为简单起见、本常见问题解答的大部分讨论中均省略了主板版本字母后缀(例如"B")。

TI 入门套件 SKU 器件型号 TI_SECURE_DEV_PKG
环境变量

HS-FS 支持补丁
"board/ti/am62x_sk|am64x_sk:
切换到 HS-FS 器件型号"

BuildRoot defconfig
SK-AM62的基础 AM625 GP 不需要 不适用 am62x_SK_defconfig
SK-AM62B AM625 HS-FS 应用 应用 am62x_SK_defconfig
SK-AM64 AM6442 GP 不需要 不适用 am64x_sk_defconfig
SK-AM64B AM6442 HS-FS 应用 应用 am64x_sk_defconfig

构建 SD 卡映像

设置基本构建环境后、对于目前使用 BuildRoot 和编译映像没有什么特别之处、因此 BuildRoot 快速入门指南(https://buildroot.org/downloads/manual/manual.html#_buildroot_quick_start)中概述的所有步骤均按原样应用。 下面的日志捕获显示了通过为 SK-AM64板构建 SD 卡映像的典型会话  am64x_sk_defconfig

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# NOTE: Skip this step if using patch set v9 or later
#
# Create a clone of the core-secdev-k3 repository which is needed to provide the
# signing scripts and keys for building for HS-FS silicon variants. Note when
# building for GP silicon variants, this step is not needed.
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ git clone git.ti.com/.../core-secdev-k3.git
Cloning into 'core-secdev-k3'...
remote: Enumerating objects: 63, done.
remote: Counting objects: 100% (63/63), done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 63 (delta 21), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (63/63), 58.88 KiB | 2.80 MiB/s, done.
Resolving deltas: 100% (21/21), done.
# NOTE: Skip this step if using patch set v9 or later
#
# Export the location of the core-secdev-k3 repository for use by the build process
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ export TI_SECURE_DEV_PKG=$PWD/core-secdev-k3
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

若要构建与 SK-AM62板配合使用的 SD 卡映像、只需使用不同的 defconfig 文件( am62x_SK_defconfig )以反映如下所示的不同目标平台。 所有其他设置和编译步骤都采用相同的方式。

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Establish the Buildroot baseline configuration for building for the SK-AM62 board
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ make am62x_sk_defconfig
mkdir -p /home/a0797059/git/buildroot/output/build/buildroot-config/lxdialog
PKG_CONFIG_PATH="" make CC="/usr/bin/gcc" HOSTCC="/usr/bin/gcc" \
obj=/home/a0797059/git/buildroot/output/build/buildroot-config -C support/kconfig -f Makefile.br conf
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\" -MM *.c > /home/a0797059/git/buildroot/output/build/buildroot-config/.depend 2>/dev/null || :
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\" -c conf.c -o /home/a0797059/git/buildroot/output/build/buildroot-config/conf.o
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\" -I. -c /home/a0797059/git/buildroot/output/build/buildroot-config/zconf.tab.c -o /home/a0797059/git/buildroot/output/build/buildroot-config/zconf.tab.o
/usr/bin/gcc -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE -I/home/a0797059/git/buildroot/output/build/buildroot-config -DCONFIG_=\"\" /home/a0797059/git/buildroot/output/build/buildroot-config/conf.o /home/a0797059/git/buildroot/output/build/buildroot-config/zconf.tab.o -o /home/a0797059/git/buildroot/output/build/buildroot-config/conf
rm /home/a0797059/git/buildroot/output/build/buildroot-config/zconf.tab.c
#
# configuration written to /home/a0797059/git/buildroot/.config
#
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

测试 AM62x 上的图形支持

同时、通过最新的补丁集、可以启用在 AM62x 上支持图形所需的驱动程序  TI-roge-km 和  ti-roge-um 软件包的情况下、它不会启用任何开包即用的框架或特定于应用程序的软件包。 如果您想要实验并体验图形支持、您可以通过应用下面显示的补丁或通过 make menuconfig 手动选择适当的选项来添加以下 BuildRoot config 选项

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Author: Andreas Dannenberg <dannenberg@ti.com>
AuthorDate: Wed May 31 10:50:31 2023 -0500
Commit: Andreas Dannenberg <dannenberg@ti.com>
CommitDate: Fri Jun 16 16:34:51 2023 -0500
WIP: configs/am62x_sk_defconfig: enable Weston and Chocolate Doom
This is a development/test commit to enable and allow experimenting
with the following features:
===Weston===
$ mkdir /tmp/weston-runtime-dir
$ export XDG_RUNTIME_DIR=/tmp/weston-runtime-dir
$ weston --tty=1
...or when no keyboard is connected...
$ weston --tty=1 --continue-without-input
===Chocolate Doom===
$ chocolate-doom
Note: sound not working yet
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

对 SD 卡映像进行编程

生成的 SD 卡映像已准备就绪、可用于引导 SK-AM64和 SK-AM62板、并可使用'd'命令写入 SD 卡、如下所示:

Fullscreen
1
2
3
4
5
6
7
8
9
# Copy image to SD card. Make sure you use the proper output device for your
# system, otherwise data loss may occur (use 'lsblk' to double-check)
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ sudo umount /dev/sdc?
a0797059@ula0797059:~/git/buildroot (am6x-dev)
$ sudo dd if=output/images/sdcard.img of=/dev/sdc bs=1M status=progress && sync
136+1 records in
136+1 records out
142606848 bytes (143 MB, 136 MiB) copied, 6.35363 s, 22.4 MB/s
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

在 SK-AM64板上测试 SD 卡映像

注: 实验图像仅与 AM64x HS-FS 器件兼容。 用于构建在 AM64x GP 器件上使用的映像、会恢复/撤消作为此解决方案一部分提供的"board/ti/am62x_sk|am64x_sk:切换到 HS-FS 器件变体"补丁所做的更改。

生成的引导日志应如下所示:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
U-Boot SPL 2021.01 (May 29 2023 - 13:14:31 -0500)
EEPROM not available at 80, trying to read at 81
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
SPL initial stack usage: 13424 bytes
Trying to boot from MMC2
Starting ATF on ARM64 core...
NOTICE: BL31: v2.8(release):2023.05-rc1-11-g7d17f891b2
NOTICE: BL31: Built : 13:14:11, May 29 2023
I/TC:
I/TC: OP-TEE version: 2023.05-rc1-11-g7d17f891b2 (gcc version 11.3.0 (Buildroot 2023.05-rc1-11-g7d17f891b2)) #1 Mon May 29 18:14:10 UTC 2023 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check optee.readthedocs.io/.../porting_guidelines.html
I/TC: Primary CPU initializing
I/TC: SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
I/TC: HUK Initialized
I/TC: Primary CPU switching to normal world boot
U-Boot SPL 2021.01 (May 29 2023 - 13:14:43 -0500)
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
Trying to boot from MMC2
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

在 SK-AM62电路板上测试 SD 卡映像

注: 实验图像仅与 AM62x HS-FS 器件兼容。 用于构建在 AM62x GP 器件上使用的映像、会恢复/撤消作为此解决方案一部分提供的"board/ti/am62x_sk|am64x_sk:切换到 HS-FS 器件变体"补丁所做的更改。

生成的引导日志 应 如下所示:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
U-Boot SPL 2021.01 (May 29 2023 - 13:37:28 -0500)
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
SPL initial stack usage: 13424 bytes
Trying to boot from MMC2
Loading Environment from MMC... *** Warning - No MMC card found, using default environment
Starting ATF on ARM64 core...
NOTICE: BL31: v2.8(release):2023.05-rc1-11-g7d17f891b2
NOTICE: BL31: Built : 13:37:08, May 29 2023
I/TC:
I/TC: OP-TEE version: 2023.05-rc1-11-g7d17f891b2 (gcc version 11.3.0 (Buildroot 2023.05-rc1-11-g7d17f891b2)) #1 Mon May 29 18:37:06 UTC 2023 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check optee.readthedocs.io/.../porting_guidelines.html
I/TC: Primary CPU initializing
I/TC: SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
I/TC: HUK Initialized
I/TC: Primary CPU switching to normal world boot
U-Boot SPL 2021.01 (May 29 2023 - 13:37:39 -0500)
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

修补 tarball

存档名称/链接 更改日志
buildroot-am64-sk-15-may-2023.tar.gz
  • 初始补丁集
  • 仅支持 SK-AM64 (带 GP 器件型号)
  • 使用上游 U-Boot/Kernel /ATF/OPTEE
buildroot-am64-sk-am62-sk-29-may-2023.tar.gz
  • 为 SK-AM62 (GP 器件型号)添加了支持
  • 使用  TI Processor SDK Linux v8.6 (通过可选补丁)中的 U-Boot/Kernel /ATF/OPTEE 和各种器件固件 、以实现 与官方 SDK 相似级别的基本平台功能完整性和质量
  • 各种修复和清理
buildroot-am64-sk-am62-sk-1-jun-2023.tar.gz
  • 默认情况下、支持具有 AM62 HS-FS 的 SK-AM62B 和具有 AM64 HS-FS 器件型号的 SK-AM64B。 请注意、这需要  TI_SECURE_DEV_PKG 环境变量在编译时定义、指向有效的 core-secdev-k3 文件夹 位置、否则编译将失败。
buildroot-am64-sk-am62-sk-patch-v8-15-jun-2023.tar.gz
buildroot-am64-sk-am62-sk-patch-v9-22-jun-2023.tar.gz
  • 添加了 ti-core-secdev-k3 封装、以 自动为 HS-FS 器件型号添加引导伪影。 因此、不再需要执行下载/克隆 TI core-secDEV-K3工具并通过 TI_secure_DEV_PKG 环境变量对其进行公开的设置步骤
x 出现错误。请重试或与管理员联系。