问:如何修改与 TI SDK QNX 版本一起使用的 SPL/SBL 引导映像以控制 SCR_EL3 EA 位?
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.
答:
概述:
对于 SBL 引导流程,TI Processor SDK QNX(从 SDK 7.3 开始)已将 ARM SCR_EL3 EA 位设置为 0 值。 可以按照 TI SDK QNX 版本文档中的说明为 SBL 引导流程修改 ARM SCR_EL3 EA 位。
对于 SPL 引导流程,ARM SCR_EL3 EA 位默认设置为高电平。 在 QNX 上使用 SPL 引导流程时,为了调试目的或为了需要在 QNX 上生成 SIGBUS 的驱动程序,可以将 ARM SCRL_EL3 EA 位设置为低电平。
针对 SBL 引导流程控制 SCR_EL3 EA 位
有关修改 ARM SCR_EL3 EA 位的步骤,请参考 SDK 发布文档。 以下链接适用于 SDK 7.3。
8.3. 如何处理当前异常级别的异常 - Processor SDK QNX J721E
针对 SPL 引导流程控制 SCR_EL3 EA 位 (uboot)
发布文档将进行更新,以包含与下面的内容类似的内容。
对于 SPL 引导流程,需要使用更新的 Arm Trusted Firmware (ATF) 重新编译 Uboot tispl.bin 二进制文件。 编译 Uboot + ATF 二进制文件的步骤如下:
1) 下载并安装需要 Uboot 二进制文件的 Linux SDK。例如,SDK 7.3 版本的链接为 PROCESSOR-SDK-LINUX-J721E_07.03.00.05 | 德州仪器 TI.com.cn。
2) 在编译窗口中设置环境变量,这对以下步骤中的编译是必需的:
3) 修改 arm-trusted-firmware,以便在 SCR_EL3 EA 位设置为 0 时进行编译
按如下方式编辑该文件:${PSDKLA_PATH}/board-support/trusted-firmware-a-2.4/plat/ti/k3/common/plat_common.mk
4) 使用这些新设置重新编译 Arm Trusted Firmware,以生成更新的 bl31.bin
5) 备份旧的 bl31.bin 并使用新生成的映像进行覆盖。
6) 按以下方式重新编译 uboot,这将采用更新的 bl31.bin 并生成 tispl.bin
7) 将 ${PSDKLA_PATH}/ board-support/u-boot_build/a72/tispl.bin 复制到引导介质中。如果使用 SD 引导,这将是 SD 卡的根目录。
示例测试: 读取未启用的模块的地址,例如 0x28000000
在 EA 位设置为 0 的情况下使用 tispl.bin:
在 EA 位设置为 1 的情况下使用 tispl.bin: