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 中的 NEON 支持

Part Number: TDA4VM

根据 TDA4VM TRM,TDA4VM 使用的 ARM Corext-A72 子系统支持“高级单指令多数据 (SIMD) 和浮点扩展 (Arm Neon”。  

下图显示了 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) 设置正确。