求助,在鲲鹏服务器下调试网卡mctp等协议,鲲鹏的bmc是否可以开启调试模式,打印和部件之间的通信报文,便于协议对接调试,当前正在调试mctp over pcie/smbus。还请了解的同学不吝赐教。
MCTP报文捕获注入步骤
1. 创建注入文件
在 /data/ 目录下新建待注入的文件 test_mctp_capture.lua,内容如下:
local c_mctp_engine = require 'mctp_engine'
local mctp_engine = c_mctp_engine.new()
mctp_engine:enable_pcie_capture()
2. 查找硬件子系统进程
使用以下命令查询各个skynet进程的console端口,找到hardware子系统进程:
netstat -anp | grep 0.0.0.0:400
3. 连接进程并注入代码
使用telnet连接进程:
telnet ip 40030
连接成功后:
- 使用
list命令找到mctp主服务 - 执行如下代码注入命令,即可实现报文打印:
inject :0000000e /data/test_mctp_capture.lua
4. 查看日志
日志存放到 /var/log/app.log 中:
- SEND 代表从mctp发出的报文
- RECV 表示mctp收到的报文
2 个赞
local c_mctp_mdb_mgmt = require ‘mctp_mdb_mgmt’
local mctp_mdb_mgmt = c_mctp_mdb_mgmt.new()
mctp_mdb_mgmt:reinit_all_smbus_ep()
把注入内容换成上面的内容
你好,执行这个c_mctp_mdb_mgmt 的inject报了截图中的错误,想问下报错的原因是什么?这个报错对get_endpoint_and_transport会有什么影响吗?

你Endpoint对象的MediumType是怎么配置的
配的128
不可能,这里是根据MediumType查cmdcode,2和128都有对应的,这里封装数据失败肯定是没匹配上,请再确认下是否改过CSR
还是你注入的skynet服务不对
代码注入命令写的有问题(可能某个字符不对),手动敲一下,不要使用复制粘贴的方式
好的,谢谢。找到报错原因了,sr文件里之前添加了多个endpoint对象,只有一个匹配了mctpbinding对象,删除多余endpoint后,inject成功了。
注入后获取的报文都是PCIe capture ,想问一下MCTP over SMBus的报文打印如何开启
mctpd打印MCTP over SMBus通信报文 - Hardware SIG - openUBMC 论坛