问题描述
鲲鹏服务器和网迅1Ge网卡联调smbus over i2c通信过程中,block_write后的实际延时时长与sr中DrvWriteDelay的配置值相差很大,误差在10-30ms之间,起伏波动很大。
环境信息
鲲鹏920服务器搭配网迅1Ge网卡,继承pca9545。
使用的hpm包含以下修改:
-
修改过component_drivers/drivers/internal/bus/bus_hisport/hisport.cpp中write_info.drv_write_delay赋值操作。
-
手动合入[WIP]新增ensure_channel_open方法避免重复切通道-component_drivers-AtomGit | GitCode的提交,但注释掉ensure_channel_open()中关于bus_id的判断操作,直接open channel(但是在block_write前修改m_drv_write_delay为0):

实际结果
smbus通信过程中ubmc发出req cmd(block_write)后的延时时间和配置的DrvWriteDelay相差很大。
下图中DrvWriteDelay配置10ms,实际延时26ms,在req_pkt(block_write)和rsp_pkt(block_read)之间还抓到了一个切通道的packet,这个切通道和rsp pkt之间118us(不定,但都小于1ms)。(block_write前的切通道和延时可以忽略)。







