根据 TDA4VM TRM,TDA4VM 使用的 ARM Corext-A72子系统支持 “高级单指令多数据(SIMD)和浮点扩展(Arm 氖光)”。
- 请参阅 本页 ,该页指向《ARM 架构参考手册》,该手册提供了完整的指令集详细信息。
- 关于将 GCC 与氖光 器配合使用的说明,位于 ARM NEON 内部-使用 GNU 编译器集(GCC)
- ARM ID_AA64PFR0_EL1寄存器将指定是否启用氖光灯功能,请参阅(Arm Armv8-A Architecture Registers)。
下图显示了 J721E EVM 上 PSDK QNX 7.3上的 CCS 视图,表示支持高级 SIMD (Neon)

启动期间,QNX BSP 将读取 ARM 寄存器 ID_AA64PFR0_EL1,以确定底层平台是否支持 NEON。 使用以下命令(记录在 - cpuinfo (qnx.com)中),依次可从 QNX 命令行读取 BSP 检查的状态,请参阅 arm_cpu_flag_neon (0x40)。
pidin syspage=cpuinfo
QNX HOS 视氖光灯为启用的示例

QNX HOS 视氖灯为禁用的示例

如果 QNX HOS 在 Jacinto7系列设备(TDA4x,J7x)上看到氖光被禁用,则这是不正确的,应该检查 BSP 中的以下文件以确保位掩码设置正确。
BSP 文件: ./src/hardware/startup/lib/AArch64/init_cpuinfo.c.
此文件中的以下宏定义应设置为以下值以检查氖光灯支持:
#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)。