尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

OpenBMC:KCS 通信机制简介

OpenBMC:KCS 通信机制简介 OpenBMCKCS 通信机制简介1. KCS 是什么KCS 是 Keyboard Controller Style 的缩写是 IPMI 规范定义的一种主机与 BMC 之间的通信接口。KCS 通常基于主机 I/O 空间实现主机软件通过读写两个寄存器与 BMC 通信数据寄存器 状态/命令寄存器KCS 主要用于主机操作系统访问 BMCBIOS 访问 BMC传输 IPMI 请求和响应获取传感器信息执行电源控制读取系统事件日志2. KCS 硬件结构KCS 通信的基本结构如下主机 CPU ↓ I/O 读写 KCS 数据寄存器 KCS 状态寄存器 ↓ BMC KCS 控制器 ↓ BMC KCS 驱动 ↓ IPMI 核心服务KCS 通常包含Data Register Command / Status Register数据寄存器用于传输请求和响应字节状态寄存器用于表示当前状态和数据方向。不同硬件平台的寄存器基地址可能不同具体由设备树、ACPI 或平台配置提供。3. KCS 状态位KCS 状态寄存器通常包含以下重要状态位状态位含义IBFInput Buffer Full输入缓冲区有主机写入数据OBFOutput Buffer Full输出缓冲区有 BMC 返回数据CMD当前写入是否为命令状态字段KCS 当前协议状态其中IBF 1表示 BMC 需要处理主机写入的数据。OBF 1表示 BMC 已经准备好主机读取的数据。CMD用于区分写入的是普通数据还是控制命令。4. KCS 状态机KCS 不是简单的寄存器读写而是一个具有状态转换的协议。常见状态包括IDLE WRITE WRITE_END READ ERROR状态转换示意写入请求 IDLE ------------ WRITE ↓ 接收请求数据 ↓ WRITE_END ↓ BMC 处理 IPMI 请求 ↓ READ ↓ 主机读取响应 ↓ IDLE如果主机或 BMC 发送了错误的控制命令状态机可能进入ERROR此时需要执行错误恢复命令使 KCS 返回可用状态。5. KCS 请求流程主机通过 KCS 发送一条 IPMI 请求时流程通常如下主机检查 IBF 是否清零 ↓ 向数据寄存器写入请求字节 ↓ BMC 读取并缓存数据 ↓ 主机继续发送后续字节 ↓ 主机发送结束命令 ↓ BMC 收到完整请求 ↓ 交给 IPMI 核心处理 ↓ 准备响应数据 ↓ 通过 OBF 通知主机读取 ↓ 主机逐字节读取响应 ↓ 传输完成主机每写入一个字节都需要根据状态寄存器确认 BMC 已经处理完成。6. KCS 驱动的工作方式Linux 中的 KCS 驱动通常分为两部分KCS 硬件驱动 ↓ KCS 通信框架 ↓ IPMI 主机接口硬件驱动负责映射寄存器读取状态读写数据寄存器配置中断清除中断处理设备树或 ACPI 资源通信框架负责管理 KCS 状态机接收完整请求发送完整响应处理超时处理异常状态向 IPMI 核心注册接口BMC 侧还需要将 KCS 请求交给 IPMI 服务处理最终由具体的 IPMI 命令处理模块返回响应。7. 中断和轮询KCS 通信可以使用中断也可以采用轮询。中断方式主机写入数据 ↓ KCS 控制器产生中断 ↓ 驱动读取状态和数据 ↓ 状态机继续运行优点CPU 占用较低数据到达后及时处理适合正常系统运行轮询方式驱动周期读取状态寄存器 ↓ 发现 IBF 或 OBF 状态变化 ↓ 读取或发送数据轮询实现简单但会增加 CPU 访问次数和响应延迟。部分平台会根据硬件能力和系统设计在中断和轮询之间进行选择。8. KCS 的特点和限制KCS 的优点IPMI 标准支持广泛硬件结构简单软件生态成熟适合 BIOS 和操作系统访问 BMCKCS 的限制传输单位是字节单次传输速度较低主机和 BMC 需要频繁检查状态状态机处理较复杂异常恢复需要严格遵循协议KCS 适合传输普通 IPMI 命令但不适合大规模、高吞吐数据传输。9. KCS 与其他接口的区别接口传输方式特点KCS字节传输兼容性好实现普遍BT块传输缓冲区传输效率更高SMIC状态机通信传统 IPMI 接口SSIFSMBus / I2C适合通过 SMBus 访问 BMCLAN网络传输适合远程管理KCS 和 BT 都属于主机侧 IPMI 系统接口但通信方式不同KCS主机与 BMC 按字节握手 BT主机与 BMC 按数据块传输10. 总结KCS 的核心工作流程是主机写入数据 ↓ IBF 通知 BMC ↓ BMC 驱动读取数据 ↓ 状态机接收完整请求 ↓ IPMI 核心处理命令 ↓ BMC 填充响应数据 ↓ OBF 通知主机读取 ↓ 主机读取响应KCS 的重点不只是两个寄存器还包括IBF 和 OBF 状态处理命令和数据区分状态机转换中断或轮询机制超时和错误恢复与 IPMI 核心服务的连接
返回列表