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] [参考译文] [常见问题解答] TDA4VM:PSDK QNX:修改 ARM SCR_EL3 EA 位

Guru**** 2539500 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1026657/faq-tda4vm-psdk-qnx-modifying-arm-scr_el3-ea-bit

器件型号:TDA4VM

如何修改与 TI SDK QNX 版本配合使用的 SPL/SBL 引导映像以控制 SCR_EL3 EA 位?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    概述:

    对于 SBL 引导流程、TI 处理器 QNX SDK (从 SDK 7.3开始)已将 ARM SCR_EL3 EA 位设置为值  如  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) 1)下载并安装需要 Uboot 二进制文件的 Linux SDK。 例如、SDK 7.3 版本的链接为(PROCESSOR-SDK-LINUX-J721E_07.03.00.05 | TI.com)

     

    2) 2)在构建窗口中设置环境变量、在以下步骤中进行构建时需要这些变量:

    • 导出 PSDKLA_PATH=
    • 导出 cross_compile=${PSDKLA_path}/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/aarch64-none-linux-gnu-

    3) 3)修改要在 SCR_EL3、EA 位设置为0的情况下构建的 ARM 可信固件

    按如下方式编辑此文件:${PSDKLA_PATH}/board-support/trusted-firmware-a-2.4/plat/ti/k3/common/plat_common.mk

    • 修改:handle_EA_EL3_first:= 1.
    • 更改为:Handle_EA_EL3_FIRST :0

     4) 4)使用这些新设置重建 Arm Trusted Firmware、以生成更新的 bl31.bin

    • 导出 cross_compile=${PSDKRA_path}/gcc-arm-9.2-2019.12-x86_64-Aarch64-no-linux-gnu//bin/aarch64-none-linux-gnu-
      导出 gcc_linux_arm_root=${PSDKRA_path}/gcc-arm-9.2-2019.12-x86_64-Aarch64-no-linux-gnu/
    • CD ${PSDKLA_PATH}/board-support/trusted-firmware-a-2.4
    • 使-s -J32 PLAT=K3 TARGET_Board=generic SPD=opteed

     5) 5)备份旧 bl31.bin 并使用新生成的映像覆盖。

    • CD ${PSDKLA_PATH}、
    • cp ./board-support/prebuilt-images/bl31.bin /board-support/prebuilt-images/bl31.bin.prebuilt
    • cp ./board-support/trusted-firmware-a-2.4/build/k3/generic/release/bl31.bin /board-support/prebuilt-images/bl31.bin

     6)  6)按如下方式重新构建 uboot、这将引入更新的 bl31.bin 并生成 tispl.bin

    • CD ${PSDKLA_PATH}
    • 使 u-boot_clean;使 u-boot

     7) 7)将${PSDKLA_PATH}/ board-support/u-boot_build/a72/tispl.bin 复制到引导介质中。 如果使用 SD 引导、这将是 SD 卡的根目录。

     

    示例测试: 读取未启用的模块的地址、例如0x28000000

    在 EA 位设置为0的情况下使用 tispl.bin:

    在 EA 位设置为1的情况下使用 tispl.bin: