// 此模板仅供参考,如果不适用可以修改
问题描述
因为当前芯片开发还是FPGA阶段,内置CPU运行速度比较慢、在收到MCTPD的发送的“Set EID”控制命令后,还没来得及处理,就又收到MCTPD发送的读Response时序,造成交互错乱了。
请问如何修改MCTPD中发送Request和读取Response的间隔时间?
或者有什么其他调试命令能手动触发这个过程?
当前只有“Chip_SmbusChip_0103_dev”和“Transport/0103_50/2”上树,估计因为上面的问题,Endpoint还没上树。
环境信息
-
操作系统:Ubuntu 24.04
-
软件版本:OpenUBMC2512,参考《南向适配网迅网卡经验分享》进行自己网卡的适配
-
硬件配置:米尔3093开发板,使用I2C-8
重现步骤
- OpenUBMC启动过程中观察网卡内置CPU的SMBus LOG
期望结果
在内置CPU处理完MCTPD的命令后,OpenUBMC的MCTPD才发送读Response总线命令。
实际结果
内置CPU尚未处理完Request,OpenUBMC的MCTPD已发送读Response的总线命令,造成应答混乱了。
尝试过的解决方案
- 尝试在component_drivers中查找可修改的配置,未找到相关的内容。
- 尝试conan download mctpd/1.100.9@openubmc/stable -r openubmc_sdk,下载的不是源码。
2026/03/11 追加解决问题的描述
除了专家指导的在网卡CSR里“Chip_SmbusChip”中添加“DrvWriteDelay”。如果基于的是25.12版本、CSR是5.0版本,还没打某个补丁(具体什么补丁、怎么应用暂时还不会),component_drivers里默认是不解析这个字段的。需要参考《5.00版本sr适配Drvwritedelay配置》按照1月15日、16日@net_swift_tianwen的修改,和1月16日@huangzhiyu的提示修改。
最终Chip配置是:
“Chip_SmbusChip”: {
“Address”: 100,
“AddrWidth”: 1,
“OffsetWidth”: 1,
“WriteTmout”: 1000, —u32
“ReadTmout”: 1000, —u32
“HealthStatus”: 0,
“ReadRetryTimes”: 3,
“DrvWriteDelay”: 255, —u8
“WriteInterval”:255, —u8
“ReadInterval”:255 —u8
},
直接暴力地默认255(uint8_t的最大值)了:
修改后写Request和读Response就很清爽了:



