NXP MCU 技术论坛
直播中

最强海贼王

9年用户 1456经验值
擅长:MEMS/传感技术
私信 关注
[问答]

LS1046A:u-boot在将控制权转移到Linux时挂起,如何禁用安全性?

大家好,
我正在尝试让 u-boot 使用 LS1046a 在我们的自定义 PCB 上启动 Linux。(U-boot v. 2018.03 - 与 lsdk 中使用的相同)问题是在发出 booti 指令后一切都简单地“挂起”。我已将问题追溯到从 transition.S 调用的“armv8_switch_to_el2_m”(macro.h)。U-boot 正确地将 Linux 二进制文件的地址加载到 ELR_EL3,然后调用 eret,这应该会导致处理器切换到 EL2 并将控制权转移到 Linux。
不幸的是,执行永远不会到达 Linux 二进制文件的第一条指令。(在 DDR RAM 中的地址 0x8108_0000)所以可能的情况是 u-boot 发生异常,但我看不到发生任何异常陷阱。我有一个数据点,上面的 u-boot 宏在 eret 之前将 SCR_EL3 设置为以下值:
SCR_EL3_RW_AARCH64 | SCR_EL3_HCE_EN | SCR_EL3_RES1 | SCR_EL3_NS_EN
但是,如果我删除 SCR_EL3_NS_EN 并保留其他 3 个标志,那么一旦发出 eret,我就会立即得到“同步中止”。这让我相信这个问题可能与安全经理有关。
现在,我不需要这个项目的安全性,所以我没有配置 TZC400,也没有加载任何安全固件。我不确定默认情况下 u-boot 对此做了什么,但我没有更改它的任何默认行为。
我有两个问题:
1. 我需要怎么做才能保证安全管理器完全失效,不对上述问题负责?
2. 有没有人知道可能导致我所看到的行为的任何其他问题?

更多回帖

发帖
×
20
完善资料,
赚取积分