插件中新增WriteRead接口读写会偶现失败

问题描述

升级switch固件需要传输数据并且读取switch响应,固件包一共1M大小,每次输出64个字节,需要在插件中实现WriteRead的接口

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:[如 OpenUBMC2509]

  • 硬件配置:[如 CPU、内存等]

重现步骤

  1. [第一步]
    在插件中实现writeRead接口:

  2. [第二步]
    进行pcieswitch固件升级

  3. [第三步]
    查看升级包数据每帧是否写读成功

期望结果

能够正常写读:
image

实际结果

switch只收到一个包:


并且这个包switch收到checksum不对:

尝试过的解决方案


该接口可以正常读写,但是会偶现出现报错:
./opt/bmc/apps/hwproxy/lualib/chip.lua:697: ./opt/bmc/apps/hwproxy/lualib/stream/i2c.lua:120: response error, i2c read fail, ret: 62, input:{“offset”:4294967295,“bus_type”:0,“len”:7,“has_error”:false,“name”:“Chip_PCIeSwitch_01010C”,“type”:1,“mask”:4294967295,“rw_type”:1,“offsetWidth”:4,“is_trace”:false,“buffer”:“F0 03 00 10 00 00 40 40 00 10 A0 E3 36 6E A0 E1 \n96 E5 8C E0 06 00 80 E0 0E 20 52 E0 96 C4 2E E0 \n0E 30 C3 E0 04 00 53 E1 05 00 52 01 70 80 BD 38 \n01 00 80 E2 05 20 52 E0 04 30 C3 E0 70 80 BD E8 \n0C 00 2D E9 00 10 A0 E3 E3 7F 22”,“requestor”:“bmc.kepler.hwproxy”,“addrWidth”:1,“addr”:178}
内核日志:

求助

新提供的接口无法满足升级要求,该接口哪里有问题或者提供一个可靠的接口


这里的errorcode是什么含义,字节序不对吗?


你把这里的offset:32/big 改成 offset:32试试


小端模式也是失败了
errorcode 84表示switch收到的数据checksum不对

为什么checksum不对,发过去的数据和之前比有什么区别