的定位与升级方案)
CANN Runtime 错误码 EE1015 排查指南Driver 版本能力不足Incorrect Driver Version的定位与升级方案【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtimeEE1015Package_Error_Incorrect_Driver_Version是 CANN Runtime 在调用驱动Driver侧接口时发现当前已安装的 Driver 软件版本能力不足、无法提供所需驱动接口而报出的典型错误。本文以该错误码为核心结合本仓库源码逐层解析其报错格式、触发场景、底层产生机制与排查升级步骤帮助开发者快速定位Runtime 与 Driver 版本不配套这一类问题。错误码速览属性内容错误码EE1015错误分类RTS ErrorsRuntime 服务类错误错误码名称Package_Error_Incorrect_Driver_Version参数列表func报错阶段/功能、reason详细原因标准消息%s failed. Reason: The driver version capability is insufficient. %s推荐解决措施升级 Driver 软件版本该错误码的定义可在 error_code_meta.h 与错误码注册表 error_code.json 中确认错误码完整索引见 RTS-Errors.md。错误信息格式解析EE1015 的报错格式如下其中两个占位符%s的含义依次为func报错阶段或功能名指明是哪个 Runtime 操作失败了reason详细原因通常说明具体是哪个驱动接口缺失或哪个符号找不到。%s failed. Reason: The driver version capability is insufficient. %s典型的报错示例如下rtsIpcMemImportByKey failed. Reason: The driver version capability is insufficient. The driver interface halShmemInfoGet does not exist.在完整日志中该错误还会追加ErrorCodeEE1015后缀并记录为 ERROR 级别便于在 plog 日志中按关键字检索例如rtsIpcMemImportByKey failed. Reason: The driver version capability is insufficient. The driver interface halShmemInfoGet does not exist. ErrorCodeEE1015.典型触发场景IPC 内存跨进程导入上述示例中的rtsIpcMemImportByKey是 Runtime 提供的 IPC 内存导入接口声明于 runtime_api_stub_catalog.def用于按 key 打开其他进程导出的共享内存。其完整调用链如下对外接口层rtsIpcMemImportByKey(ptr, key, flags)位于 api_c_memory.cc内部转发到Api::Instance()-IpcOpenMemory(ptr, key, flags)实现层ApiImpl::IpcOpenMemory位于 api_impl_standard_soc.cc。当导入标志携带RT_IPC_MEM_IMPORT_FLAG_ENABLE_PEER_ACCESS启用对端访问时需要先获取共享内存所属对端设备的物理 Device ID再使能 P2P 通信驱动封装层NpuDriver::GetPhyDevIdByIpcMemName(name, peerPhyDeviceId)位于 npu_driver.cc此函数调用驱动侧接口halShmemInfoGet获取物理设备号。EE1015 正是在第 3 步被抛出当编译 Runtime 所链接的驱动头文件包含halShmemInfoGet但实际安装的 Driver 动态库中不存在该符号时代码走如下分支直接判定驱动版本能力不足COND_RETURN_AND_MSG_OUTER( halShmemInfoGet nullptr, RT_ERROR_DRV_NOT_SUPPORT, ErrorCode::EE1015, Obtaining the physical device ID, The driver interface halShmemInfoGet does not exist.);可以看到判定条件是函数指针halShmemInfoGet nullptr即通过 dlsym 等动态符号解析方式拿不到该驱动接口。返回值使用RT_ERROR_DRV_NOT_SUPPORT同时以 EE1015 向外上报错误码说明该问题的根因是驱动符号缺失属于软件版本配套问题而非芯片硬件能力问题。另一常见场景HCCP 进程启动时 TSD 符号缺失除 IPC 内存场景外EE1015 也会出现在 Runtime 启动阶段。在 runtime.cc 中启动 HCCP 相关能力时若libtsdclient.so中缺少TsdOpenNetService符号同样会以 EE1015 上报Starting the HCCP process failed. Reason: The driver version capability is insufficient. Symbol TsdOpenNetService not found in libtsdclient.so. ErrorCodeEE1015.对应代码为COND_RETURN_AND_MSG_OUTER(tsdOpenNetService_ nullptr, RT_ERROR_DRV_TSD_ERR, ErrorCode::EE1015, Starting the HCCP process, Symbol TsdOpenNetService not found in libtsdclient.so.);该案例表明凡是 Runtime 在运行时通过符号解析如dlsym加载驱动/TSD 库中不存在的接口或符号都可能以 EE1015 上报reason字段中的 does not exist 或 not found 字样即指向缺失的符号名。错误码的源码级定义EE1015 的消息模板定义于 error_code_meta.h/* EE1015 - Package_Error_Incorrect_Driver_Version */ X(EE1015, EE1015, (func, reason), %s failed. Reason: The driver version capability is insufficient. %s ErrorCodeEE1015.\n, DLOG_ERROR)该宏展开定义了错误码编号、参数字段func、reason、日志模板与日志级别DLOG_ERROR。在错误码注册表 error_code.json 中对应的建议suggestion为{ errClass: RTS Errors, errTitle: Package_Error_Incorrect_Driver_Version, ErrCode: EE1015, ErrMessage: %s failed. Reason: The driver version capability is insufficient. %s, Arglist: func, reason, suggestion: { Possible Cause: N/A, Solution: Upgrade the driver software version. } }单元测试 rt_error_code_test.cc 中同时覆盖了 EE1015 的日志输出与参数解析验证了rtsIpcMemImportByKeyhalShmemInfoGet does not exist这一标准组合以及func、reason两个参数的取值合法性std::vectorstd::string values1015 { rtsIpcMemImportByKey, The driver interface halShmemInfoGet does not exist.}; PrintErrMsgToLog(ErrorCode::EE1015, file, 1000, func, values1015);与不支持类错误码的辨析EE1015 属于不支持语义家族容易与 EE1005、EE1006、EE1016 混淆。本仓库的错误码编写指南 error-code-guide.md 给出了明确的决策树与优先级驱动版本不正确对应的驱动接口找不到通过升级驱动包可解决 ├─ 是 → EE1015 ├─ 否 → 完整功能当前芯片不支持 │ ├─ 是 → EE1005 │ └─ 否 → 非完整功能的某个配置参数不支持 │ ├─ 是 → EE1006 │ └─ 否 → EE1016错误码选择依据典型场景EE1015驱动版本不正确对应驱动接口找不到通过升级驱动包可解决驱动版本不支持halxxx接口EE1005完整功能当前芯片不支持aclrtMemMap在当前芯片不支持EE1006非完整功能的某个配置参数不支持ACL_FLOAT16数据类型在当前 SoC 不支持EE1016某种状态或场景下不支持做某类操作遇错即停模式从 stop 修改为 continue 不支持核心判断标准是根因是否可通过升级软件版本解决根因是驱动符号/接口缺失、升级驱动可解决就选择 EE1015根因在芯片硬件能力则应归属 EE1005。排查步骤与解决方法当遇到包含 driver version capability is insufficient 的报错时建议按以下步骤处理从日志确认缺失的驱动符号在报错文本的reason部分找到 does not exist 或 not found 所指的接口名如halShmemInfoGet、TsdOpenNetService这是判断问题归属的最直接证据核对 Runtime 与 Driver 的版本配套关系该错误本质上是 Runtime 编译期期望的驱动接口在当前 Driver 中不存在即 Runtime 与 Driver 版本不匹配属于软件版本配套问题。可参考 Runtime版本与CANN版本不匹配导致的问题 中描述的配套性检查思路升级 Driver 软件版本按照 CANN 官方安装流程仓库内提供有 install.sh 等安装脚本可参考升级到与当前 Runtime 版本匹配的 Driver 版本随后重启相关进程使新 Driver 生效验证修复重新执行触发报错的业务如 IPC 内存导入、进程启动确认不再出现 EE1015。小结EE1015Package_Error_Incorrect_Driver_Version是 CANN Runtime 对Driver 版本能力不足的标准化表达Runtime 在运行时加载不到驱动侧接口或符号时以func描述失败功能、以reason指出缺失符号统一归因为驱动版本不正确。开发者只需抓住reason中缺失的符号名对照 Runtime 与 Driver 的配套关系完成驱动升级即可解决此类问题。本文涉及的源码路径汇总如下供继续深入阅读错误码消息模板error_code_meta.h错误码注册与建议error_code.jsonIPC 内存导入实现api_impl_standard_soc.cc驱动接口封装与 EE1015 抛出点npu_driver.cc对外接口声明runtime_api_stub_catalog.def错误码单元测试rt_error_code_test.cc错误码选择指南error-code-guide.md【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考