问题背景
有一张走MCTP over SMBus协议带外通信的PCIe标卡,通信时需要做主从切换。
参考社区文档,我配置了CSR,希望通过mctpd组件建立通信链路。
"Chip_Mctp": {
"Address": 58,
"AddrWidth": 1,
"OffsetWidth": 0,
"WriteTmout": 100,
"ReadTmout": 100,
"HealthStatus": 0,
"DrvWriteDelay": 200
},
"Endpoint_1": {
"TargetEid": 99,
"TargetPhyAddr": 29,
"MessageType": 4,
"MediumType": 2,
"RefChip": "#/Chip_Mctp"
},
"MctpBinding_1": {
"BmcSMBusEid": 8,
"BmcSMBusPhyAddr": 16
},
但从app.log发现如下报错:
2025-10-27 09:18:22.638755 unknown_service ERROR: smbus_write_read_service.lua(88): process smbus request failed. chip name: Chip_Mctp_010101, err: ./opt/bmc/apps/hwproxy/lualib/chip.lua:414: ./opt/bmc/apps/hwproxy/lualib/stream/i2c.lua:117: response error, i2c read fail, ret: false, input:{"is_trace":false,"addrWidth":1,"name":"Chip_Mctp_010101","requestor":"bmc.kepler.hwproxy","protocol_flag":2,"mask":4294967295,"offset":0,"bus_type":0,"type":1,"len":259,"buffer":"3A 0F 0A 21 01 00 08 C9 00 80 01 00 63 F6 ","rw_type":1,"has_error":false,"addr":58,"offsetWidth":0}
从framework.log发现如下报错:
2025-11-07 01:36:21.403857 hwproxy DEBUG: i2c.lua(206): Chip Chip_Mctp_010101 fails to read data through the SMBUS protocol. ret: response error, ioctl(I2C_CMD_SLAVE_CACHE_RD) failed: Unknown error 1008, drv_id:7
个人分析
3A 0F 0A 21 01 00 08 C9 00 80 01 00 63 F6 对应的就是MCTP over SMBus的set endpoint ID命令,但是读取响应失败
设备拓扑
设备拓扑为:i2c7–>device(0x1d)
初步定位
从逻辑分析仪抓取数据如下
往BMC地址0x10寻址失败,接收到NACK,所以卡没有继续发送数据


