您好,
我正在研究如何在 IMX95 19x19 EVK 板上启用安全启动。我已经使用 SPSDK 成功对我的镜像进行了签名。现在,在写入熔丝之前,我想使用 `nxpele` 读取它们,但我遇到了以下错误。
```
$ nxpele -f mimx9596 -d uboot_serial -p /dev/ttyUSB2 read-common-熔丝 --index 136
SPSDK解析错误:SPSDK:响应中的消息大小无效:0x4
请查看调试日志文件:/home/user/.local/state/spsdk/3.11.0/log/debug.log 获取更多信息
```
日志中显示以下内容:
```
$ tail -60 /home/user/.local/state/spsdk/3.11.0/log/debug.log
raise SPSDKParsingError(f"响应中的消息 SIZE 无效:{hex(size)}")
spsdk.exceptions.SPSDKParsingError: SPSDK: 响应中的消息大小无效: 0x4
调试:spsdk:***************************************************(自启动以来已耗时 206 毫秒,spsdk_logger.py:212)
DEBUG:spsdk:* SPSDK 调试日志记录已启动 2026-09-03 15:58:44 * (自启动以来耗时 207 毫秒,spsdk_logger.py:213)
调试信息:spsdk:* SPSDK 版本:3.11.0* (自启动以来耗时 207 毫秒,spsdk_logger.py:215)
调试信息:spsdk:* Python 版本:3.14.4* (自启动以来耗时 207 毫秒,spsdk_logger.py:216)
调试:spsdk:* 操作系统版本:Linux-6.12.95+deb13-amd64-x86_64-with-glibc2.43 * (自启动以来耗时 208 毫秒,spsdk_logger.py:217)
DEBUG:spsdk:* 最后一条命令:['/usr/bin/../lib/spsdk/bin/nxpele', '-f', 'mimx9596', '-d', 'uboot_serial', '-p', '/dev/ttyUSB2', 'read-common-熔丝', '--index', '136'] * (自启动以来已过去 208 毫秒,spsdk_logger.py:218)
调试:spsdk:***************************************************(自启动以来已运行 208 毫秒,spsdk_logger.py:219)
跟踪:spsdk.uboot.uboot:Uboot写入 -> 无效(自开始以来已耗时 210 毫秒, __init__ .py:50)
调试:spsdk.uboot.uboot:Uboot读取直到 <- => (自启动以来已过去 210 毫秒,uboot.py:271)
调试:spsdk.uboot.uboot:正在检查如果串口控制台因发送无效命令而打开:“无效\r\n未知命令‘无效’ - 请尝试‘帮助’\r\nu-boot=>”(自启动以来 224 毫秒,uboot.py:209)
调试:spsdk.utils.database:当前数据库指纹哈希值:f0f0598d4e6ae6c755d693693f232e30537cfb3b(自启动以来耗时 226 毫秒,database.py:1967)
调试信息:spsdk.utils.database:已加载从缓存读取数据库:/tmp/spsdk-cache-1001/spsdk/3.11.0/db_data_25a661a55aac_3.11.0.cache(自启动以来耗时 226 毫秒,database.py:1976)
调试:spsdk.utils.misc:正在加载从 /usr/lib/spsdk/lib/python3.14/site-packages/spsdk/data/devices/mimx9596/database.yaml 读取文本文件(自启动以来耗时 226 毫秒,misc.py:312)
信息:spsdk.ele.ele_comm:ELE通信器在 mimx9596 中使用 92800000 地址处的 196608 B 大小的缓冲区,版本:最新目标。
调试:spsdk.ele.ele_comm:ELE消息 0x92800000 0x30000 0602971788000000 (自启动以来已过去 245 毫秒,ele_comm.py:502)
跟踪:spsdk.uboot.uboot:Uboot写入 -> ele_message 0x92800000 0x30000 0602971788000000 (自开始以来耗时 246 毫秒, __init__ .py:50)
调试:spsdk.uboot.uboot:Uboot读取直到 <- => (自启动以来 246 毫秒,uboot.py:271)
调试:spsdk.ele.ele_comm:原始ELE消息输出:
ele_message 0x92800000 0x30000 0602971788000000
060497e1d60000000000000000000200u-boot=> (自启动以来 256 毫秒,ele_comm.py:422)
调试:spsdk.ele.ele_comm:已剥离输出:060497e1d600000000000000(自启动以来耗时 256 毫秒,ele_comm.py:460)
调试:spsdk.apps.utils.utils:SPSDK:响应中的消息大小无效:0x4(自启动以来耗时 257 毫秒,utils.py:182)
回溯(最近一次调用):
文件“/usr/lib/spsdk/lib/python3.14/site-packages/spsdk/apps/utils/utils.py”,第 172 行,包装纸
retval = function(*args, **kwargs)
文件“/usr/lib/spsdk/lib/python3.14/site-packages/spsdk/apps/nxpele.py”,在 safe_main 函数的第 2189 行
sys.exit(main()) # pylint: disable=no-value-for-parameter
~~~~^^
文件“/usr/lib/spsdk/lib/python3.14/site-packages/click/core.py”,第 1631 行,在__call__
返回 self.main(*args,**kwargs)
~~~~~~~~~^^^^^^^^^^^^^^^^^
文件“/usr/lib/spsdk/lib/python3.14/site-packages/click/core.py”,第 1552 行,主线
rv = self.invoke(ctx)
文件“/usr/lib/spsdk/lib/python3.14/site-packages/click/core.py”,第 2032 行,在 invoke 中
返回 _process_result(sub_ctx.command.invoke(sub_ctx))
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
文件“/usr/lib/spsdk/lib/python3.14/site-packages/click/core.py”,第 1415 行,在 invoke 中
返回 ctx.invoke(self.callback,**ctx.params)
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
文件“/usr/lib/spsdk/lib/python3.14/site-packages/click/core.py”,第 910 行,在 invoke 中
返回回调函数(*args, **kwargs)
文件“/usr/lib/spsdk/lib/python3.14/site-packages/click/decorators.py”,第 46 行,在 new_func 中
返回 f(get_current_context().obj, *args, **kwargs)
文件“/usr/lib/spsdk/lib/python3.14/site-packages/spsdk/apps/nxpele.py”,第 575 行,在 cmd_read_common_fuse 中
ele_read_common_fuse(handler, index)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
文件“/usr/lib/spsdk/lib/python3.14/site-packages/spsdk/apps/nxpele.py”,第 588 行,在 ele_read_common_fuse 中
ele_handler.send_message(read_common_fuse_msg)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
文件“/usr/lib/spsdk/lib/python3.14/site-packages/spsdk/ele/ele_comm.py”,第 519 行,在 send_message 函数中
msg.decode_response(response)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
文件“/usr/lib/spsdk/lib/python3.14/site-packages/spsdk/ele/ele_message.py”,第 1235 行,在 decode_response 中
super().decode_response(response)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
文件“/usr/lib/spsdk/lib/python3.14/site-packages/spsdk/ele/ele_message.py”,第 346 行,在 decode_response 中
raise SPSDKParsingError(f"响应中的消息 SIZE 无效:{hex(size)}")
spsdk.exceptions.SPSDKParsingError: SPSDK: 响应中的消息大小无效: 0x4
```
注:我使用的是 `SPSDK 3.11.0`
我已在 SPSDK 的 GitHub 页面上创建了一个 issue: https://github.com/nxp-mcuxpresso/spsdk/issues/116#issue-5346231614
非常感谢您的帮助。
谢谢!
BR,
我使用的是 Linux 电路板支持包 版本 LF6.18.20_2.0.0 (yocto wrynose)
以下是 nxpele get-info 的输出结果
$ nxpele -f mimx9596 -d uboot_serial -p /dev/ttyUSB2 get-info
ELE get info ends successfully:
Command: 0xda
Version: 4
Length: 256
SoC ID: SocId:Unknown_0x9590 - 0x9590
SoC version: B000
Life Cycle: OEM_OPEN - 0x0010
SSSM state: 4
Attest API version: 0
UUID: bc193865d65e45f193b55cc234303a0f
SHA256 ROM PATCH: d5d2cdc98cb54b64bffb00687edcd994ebfdd762275a66a858d928ae2fcff494
SHA256 FW: 525f972dbb772acd9f461bfc148d29beb5dc2f2e9693ff1b9ace182a8ffd8131
Advanced information:
OEM SRKH: 0000000000000000000000000000000000000000000000000000000000000000
CSAL state: EdgeLock secure enclave random context initialization succeed - 0x02
TRNG state: TRNG entropy is valid and ready to be read - 0x03
OEM PQC SRKH: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000请问您执行此命令时使用的是哪个 EL 固件版本?让我再确认一下。
我重现了这个问题,并检查了内部数据库,确认这是一个已存在的问题,将在 spsdk 3.12.0 中修复。