KCS学习笔记

1、系统默认分配给kcs的端口是 CA2h,使用I/O空间,对应AST2400的kcs通道3.
The default system base address for an I/O mapped KCS SMS Interface is CA2h.

2、kcs的寄存器是在BMC里实现的,一共4个寄存器,每个寄存器1个字节。系统侧通过I/O访问这四个寄存器来达到操作kcs的目的。
在这里插入图片描述
3、kcs状态寄存器的IBF和OBF是由硬件设置的,S1、S0是由软件设置的。
当系统侧向BMC发送kcs请求时,IBF会被置1,触发BMC的kcs中断,BMC在中断里读取状态寄存器,判断现在的状态然后设置S1和S0。

4、kcs的接收和发送全是通过中断完成的。系统端向BMC写数据称为 kcs写。BMC向系统端写数据称为kcs读。

### KCS 技术含义 KCS 是 Keyboard Controller Style 的缩写,它是一种用于系统管理总线 (SMBus) 和 IPMI(Intelligent Platform Management Interface)通信的技术协议之一。该技术主要用于主机系统与 BMC(Baseboard Management Controller)之间的低带宽、低成本通信。 在 KCS 协议中,所有的数据传输都依赖于中断机制来实现。具体来说,当系统端需要向 BMC 发送数据时,这一过程被称为 **KCS 写**;而当 BMC 需要向系统端发送数据时,则被定义为 **KCS 读**[^1]。这种基于中断的交互方式能够有效减少硬件资源占用并简化设计复杂度。 以下是关于 KCS 技术的一些重要特性描述: - 数据交换完全依靠中断驱动模型完成; - 主机到 BMC 方向的操作命名为 “KCS 写”,反之则叫做 “KCS 读”。 ```python # 示例代码展示如何模拟简单的 KCS 中断处理逻辑 class KCSSimulator: def __init__(self): self.data_buffer = [] def handle_interrupt(self, data_chunk): """ 处理来自系统的中断请求 """ if isinstance(data_chunk, list): self.data_buffer.extend(data_chunk) def read_from_bmc(self): """ 模拟从 BMC 进行的数据读取操作 """ return_data = self.data_buffer[:len(self.data_buffer)//2] del self.data_buffer[:len(return_data)] return return_data simulator_instance = KCSSimulator() simulator_instance.handle_interrupt([0x0A, 0x0B]) print(simulator_instance.read_from_bmc()) # 输出部分缓冲区内容作为响应给系统端 ``` 上述 Python 脚本片段提供了一个非常基础的概念化工具类 `KCSSimulator` 来帮助理解 KCS 工作原理中的某些方面——即通过中断传递消息以及相应的读/写行为。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jimbo_Zhang

有钱的捧个钱场

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值