TI中文支持网
TI专业的中文技术问题搜集分享网站

[FAQ] TDA4VM: PSDK QNX 中的 NEON 支持

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支持论坛已经拥有数十万个已得到解答的话题。  这通常是解决问题的最快方法。

赞(0)
未经允许不得转载:TI中文支持网 » [FAQ] TDA4VM: PSDK QNX 中的 NEON 支持
分享到: 更多 (0)