openbmc中对oem代码的分析

1 篇文章 0 订阅

主要分析oem中如何将ipmb报文通过I2C进行发送至别的智能板卡。在本次代码分析中,需要下载两个模块,phosphor-ipmi-ipmb 和 intel-ipmi-oem。

phosphor-ipmi-ipmb

该模块会生成一个服务:

名称:xyz.openbmc_project.Ipmi.Channel.Ipmb
路径:/xyz/openbmc_project/Ipmi/Channel/Ipmb
接口:org.openbmc.Ipmb
方法:sendRequest

可以通过以下脚本进行调用。通过该脚本,我们可以利用示波器在对应的I2C总线上看到生成的波形:

#!/bin/bash
IPMB_OBJ="xyz.openbmc_project.Ipmi.Channel.Ipmb"
IPMB_PATH="/xyz/openbmc_project/Ipmi/Channel/Ipmb"
IPMB_INTF="org.openbmc.Ipmb"
ME_CMD_RECOVER="1 0x2e 0 0xdf 4 0x57 0x01 0x00 0x01"
IPMB_CALL="sendRequest yyyyay"

busctl call $IPMB_OBJ $IPMB_PATH $IPMB_INTF $IPMB_CALL $ME_CMD_RECOVER

报文中第一字节数据是用来选择使用哪一条ipmb数据通道,由json文件中的type 和 devIndex共同决定。
在IPMB协议中,BMC芯片与各智能板卡之间采用I2C多主协议进行通讯。目前在我的项目中,他们之间是通过I2C的。phhsphor-ipmi-ipmb生成服务的主要作用就是将传入的报文信息通过物理线路进行发送。该模块的初始化过程中,我们需要在内核中将对应的I2C进行配置为ipmb-dev驱动,将phosphor-ipmi-ipmb对应的json文件进行填写(依据硬件信息),将ipmb模块进行添加到openbmc工程中。

Intel-ipmi-oem

在这个oem模块中,工作就是组织报文,并通过phhsphor-ipmi-ipmb提供的服务进行发送。

附:对于在内核中初始化ipmb驱动,我是采用的比较暴力的方式直接进行修改,未找到正规方式。希望了解该部分内容的朋友多交流啊!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值