Part Number:TDA4VM
根据 TDA4VM TRM,TDA4VM 使用的 ARM Corext-A72 子系统支持“高级单指令多数据 (SIMD) 和浮点扩展 (Arm Neon)”。
- 请参阅此页面,该页面指向提供完整指令集详细信息的 ARM 架构参考手册。
- 有关将 GCC 与 Neon 结合使用的注意事项,请参阅ARM NEON 固有函数 – 使用 GNU Compiler Collection (GCC)
- ARM ID_AA64PFR0_EL1 寄存器将指定是否启用 NEON 功能,请参阅(ARM Armv8-A 架构寄存器)。
下图显示了 J721E EVM 上 PSDK QNX 7.3 的 CCS 视图,其中表明支持高级 SIMD (Neon)
在启动期间,QNX BSP 将读取 ARM 寄存器 ID_AA64PFR0_EL1,以确定底层平台是否支持 NEON。 BSP 检查的这种状态又可以从 QNX 命令行读取,该操作可使用记录在 – cpuinfo (qnx.com) 处的如下命令执行,具体请参阅 ARM_CPU_flag_neon (0x40)。
pidin syspage=cpuinfo
QNX HLOS 将 NEON 视为已启用的示例
QNX HLOS 将 NEON 视为已禁用的示例
如果 QNX HLOS 在 Jacinto7 系列器件(TDA4x、J7x)上将 NEON 视为禁用状态,那么这是不正确的,应检查 BSP 中的以下文件以确保正确设置位掩码。
BSP 文件: ./src/hardware/startup/lib/aarch64/init_cpuinfo.c
此文件中的以下宏定义应按如下所示进行设置,以检查 NEON 支持情况:
#define AA64PFR0_SIMD(x) ((((x) >> 20) & 0xfUL) != 0xfUL)
#define AA64PFR0_FP(x) ((((x) >> 16) & 0xfUL) != 0xfUL)
如果位掩码使用 0xFF,可能会错误地将 NEON 视为不受支持。
要解决这个问题,可以下载一个更新的 BSP,或者按照上面提到的方法更改代码,重新编译 BSP,并通过 QNX 命令行进行检查,以确保 ARM_CPU_FLAG_NEON (0x40) 设置正确。
Cherry Zhou:
我们建议您在发布新问题之前先搜索 E2E支持论坛,E2E支持论坛已经拥有数十万个已得到解答的话题。 这通常是解决问题的最快方法。