问题描述
我在适配一种新的RAID卡,使用 i2c 通信,在调试的时候,系统日志显示 i2c_write 失败:
2026-04-13 11:08:22.112137 framework NOTICE: l_callbacks.cpp(159): reply_write_read: reply_write_read ret -1
2026-04-13 11:08:22.112289 framework NOTICE: l_callbacks.cpp(150): block_write_read: block_write_read ret -1
使用 hisportdetect 工具扫不到卡的 i2c 地址:
Scanning hisport-18 (port number: 18)…
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: – – – – – – – – – – – – – – – –
10: – – – – – – – – – – – – – – – –
20: – – – – – – – – – – – – – – – –
30: – – – – – – – – – – – – – – – –
40: – – – – – – – – – – – – – – – –
50: – – – – – – – 57 – – – – – – – 5f
60: – – – – – – – – – – – – – – – –
70: – 71 – – – – – – – – – – – – – –
系统 topo 结构如下:
Hisport_18
├─Pca9545_PCA9545_01010103
│ ├─Channel_1
│ │ └─Chip_TempChip_0101010302
│ ├─Channel_2
│ │ └─Chip_RaidChip_0101010303
│ └─Channel_3
│ ├─Pca9555_IO_01010103
│ ├─Chip_MCU1_01010103
│ │ └─Channel_0
│ │ └─Eeprom_IEU_01010103
│ └─Lm75_LM75_01010103
└─Eeprom_3_3_010101
请问 hisport不通可以如何调试?
环境信息
-
软件版本:OpenUBMC2512
-
硬件配置:Kunpeng 920 7282C
直接调用器件的读写方法呢?比如Eeprom_3_3_010101的
~ /tmp # busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_3_3_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0 1
Call failed: {“format”:“./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:317: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ./opt/bmc/apps/hwproxy/lualib/hw_utils/hw_wait_access.lua:101: chip: Eeprom_3_3_010101, bus: Hisport_18, read failed: hisport.lua:62: response error, ioctl(HISPORT_CMD_READ) failed: Unknown error 290”,“name”:“BMC.Error.Unknow”}
同样的错误,我打开调试在日志中也看到了:
2026-04-13 19:20:55.865857 hwproxy DEBUG: init.lua(48): [Storage]Failed to write through i2c, err:./opt/bmc/apps/hwproxy/lualib/chip.lua:656: ./opt/bmc/apps/hwproxy/lualib/stream/hisport.lua:94: response error, ioctl(HISPORT_CMD_WRITE) failed: Unknown error 290
这种是硬件问题,参考下面这个文档。定位的话估计得排查下硬件链路问题,用逻辑分析仪看看数据是否正确之类的。
Hisport_12
├─Pca9545_PCA9545_01010109
│ └─Channel_3
│ ├─Pca9555_IO_01010109
│ ├─Chip_MCU1_01010109
│ │ └─Channel_0
│ │ └─Eeprom_IEU_01010109
│ └─Lm75_LM75_01010109
└─Eeprom_3_9_010101
Hisport_13
└─Eeprom_3_10_010101
Hisport_14
└─Eeprom_3_8_010101
Hisport_15
└─Eeprom_3_7_010101
Hisport_16
└─Eeprom_3_1_010101
Hisport_17
└─Eeprom_3_2_010101
Hisport_18
├─Eeprom_3_3_010101
└─Pca9545_PCA9545_01010103
├─Channel_1
│ └─Chip_TempChip_0101010302
├─Channel_2
│ └─Chip_RaidChip_0101010303
└─Channel_3
├─Pca9555_IO_01010103
├─Chip_MCU1_01010103
│ └─Channel_0
│ └─Eeprom_IEU_01010103
└─Lm75_LM75_01010103
~ ~ # busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_3_9_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0 1
Call failed: {"format":"./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:317: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ./opt/bmc/apps/hwproxy/lualib/hw_utils/hw_wait_access.lua:101: chip: Eeprom_3_9_010101, bus: Hisport_12, read failed: hisport.lua:62: response error, ioctl(HISPORT_CMD_READ) failed: Unknown error 290","name":"BMC.Error.Unknow"}
~ ~ # busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_3_10_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0 1
Call failed: {"format":"./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:317: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ./opt/bmc/apps/hwproxy/lualib/hw_utils/hw_wait_access.lua:101: chip: Eeprom_3_10_010101, bus: Hisport_13, read failed: hisport.lua:62: response error, ioctl(HISPORT_CMD_READ) failed: Unknown error 338","name":"BMC.Error.Unknow"}
~ ~ # busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_3_8_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0 1
Call failed: {"format":"./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:317: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ./opt/bmc/apps/hwproxy/lualib/hw_utils/hw_wait_access.lua:101: chip: Eeprom_3_8_010101, bus: Hisport_14, read failed: hisport.lua:62: response error, ioctl(HISPORT_CMD_READ) failed: Unknown error 290","name":"BMC.Error.Unknow"}
~ ~ # busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_3_7_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0 1
Call failed: {"format":"./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:317: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ./opt/bmc/apps/hwproxy/lualib/hw_utils/hw_wait_access.lua:101: chip: Eeprom_3_7_010101, bus: Hisport_15, read failed: hisport.lua:62: response error, ioctl(HISPORT_CMD_READ) failed: Unknown error 290","name":"BMC.Error.Unknow"}
~ ~ # busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_3_1_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0 1
Call failed: {"format":"./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:317: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ./opt/bmc/apps/hwproxy/lualib/hw_utils/hw_wait_access.lua:101: chip: Eeprom_3_1_010101, bus: Hisport_16, read failed: hisport.lua:62: response error, ioctl(HISPORT_CMD_READ) failed: Unknown error 290","name":"BMC.Error.Unknow"}
~ ~ # busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_3_2_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0 1
Call failed: {"format":"./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:317: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ./opt/bmc/apps/hwproxy/lualib/hw_utils/hw_wait_access.lua:101: chip: Eeprom_3_2_010101, bus: Hisport_17, read failed: hisport.lua:62: response error, ioctl(HISPORT_CMD_READ) failed: Unknown error 290","name":"BMC.Error.Unknow"}
~ ~ # busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_3_3_010101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0 1
Call failed: {"format":"./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:317: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: ./opt/bmc/apps/hwproxy/lualib/hw_utils/hw_wait_access.lua:101: chip: Eeprom_3_3_010101, bus: Hisport_18, read failed: hisport.lua:62: response error, ioctl(HISPORT_CMD_READ) failed: Unknown error 290","name":"BMC.Error.Unknow"}
感觉所有 hisport 都不通,可能是什么原因?
说明Hisport通道下没有器件或者硬件链路异常。没有器件是最常见的。
另外问下 hisport 是只要支持 i2c 通信的卡就支持吧,不需要有专门支持 hisport 协议是吗?