linux PMBus总线驱动设计分析

PMBus协议规范介绍

PMBus是一套对电源进行配置、控制和监控的通讯协议标准。其最新版本为1.3,该规范还在不断演进中,比如新标准中新增的zone PMBus、AVSBus等特性。在其官网上有详细的规范文档,本节不尝试翻译规范文档,重点记录作者在了解PMBus过程中的疑问和解答。

PMBus与I2C、SMBus的区别?

PMBus在SMBus(System Management Bus)基础上增加了一套电源配置、控制和监控规范。SMBus最初是为电池智能管理而开发的一套标准,其基于I2C协议,并针对I2C协议的弱健壮性做了如下改进:

  • 支持SMBALERT#中断;
  • 支持错包检测(PEC);
  • 支持包超时;
  • 支持START/STOP保护;
  • 支持Host Notify Protocol协议;

PMBus监控哪些参数?告警分为几级?不同告警级别有什么样的应对措施?

PMBus支持电压、电流、功率、温度和风扇等参数的上下限监控,支持warning和fault 2级告警级别(如上图所示)。

  • warning告警:表示监控参数异常,系统需引起关注,但可以继续运行,系统无需任何响应措施;
  • fault告警:比warning告警级别高,系统会根据异常对设备的危害情况,进行设备控制电路重启(restart)或输出切断(shutdown)等处理;

告警产生时如何上报给主机?

告警上报一般有如下几种方式:

  • 主机轮询PMBus设备;
  • PMBus设备通过SMBALERT#中断通知主机;
  • Host Notify Protocol(PMBus设备临时切换成总线主机(bus master),并发送一组特定协议通知系统主机)。

什么情况下告警会取消或清除?重启是否会清除告警?

任何warning或fault告警一旦上报,只有通过如下几种方式可以取消清除:

  • PMBus设备接收到CLEAR_FAULTS命令;
  • PMBus设备RESET引脚生效;
  • PMBus设备通过CONTROL引脚或OPERATION命令关闭并重新打开;
  • 断电;
  • 如果异常一直存在,那么即使进行告警清除操作,告警会马上重新上报。

linux PMBus驱动设计分析

时间: 2024-07-30 06:42:49

linux PMBus总线驱动设计分析的相关文章

基于MCP2515的Linux CAN总线驱动程序设计

MCP2515简介 MCP2515是一种独立的CAN总线通信控制器,是Microchip公司首批独立CAN解决方案的升级器件,其传输能力较Microchip公司原有CAN控制器(MCP2510)高两倍,最高通信速率可达到1Mbps.MCP2515能够接收和发送标准数据帧和扩展数据帧以及远程帧,通过两个接收屏蔽寄存器和六个接收过滤寄存器滤除无关报文,从而减轻CPU负担. MCP2515主要功能参数及电气特性如下: (1)支持CAN技术规范2.0A/B, 最高传输速率达到1Mbps: (2)支持标准

Linux平台总线驱动设备模型

platform总线是一种虚拟的总线,相应的设备则为platform_device,而驱动则为platform_driver.Linux 2.6的设备驱动模型中,把I2C.RTC.LCD等都归纳为platform_device. 总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动:相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成. Linux2.6系统中定义了一个bus_type的实例platform_bus_type [cpp] view plai

Linux SDIO总线驱动(二)

驱动: 以SDIO为例其会采用mmc_attach_sdio来实现驱动和设备的匹配,其本质还是根据sdio_bus的匹配规则来实现匹配.在mmc_attach_sdio中首先是mmc匹配一个bus,即采用何种bus来进行mmc bus来处理host.在这里需要理解一点就是在SDIO中,对于SD卡存储器mmc为实体设备,而对于非SD卡存储器,如SDIO接口的设备,则mmc则表征为bus,这个比较重要.除了mmc bus外还存在SDIO_BUS. /* * Starting point for SD

Linux SDIO总线驱动(一)

SDIO卡 SDIO卡是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备,目前根据SDIO协议的SPEC,SDIO接口支持的设备总类有蓝牙,网卡,电视卡等. SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令.由于这个,SDIO和SD卡规范间的一个重要区别是增加了低速标准,低速卡的目标应用是以最小的硬件开始来支持低速I/O能力.低速卡支持类似调制解调

让天堂的归天堂,让尘土的归尘土——谈Linux的总线、设备、驱动模型

公元1951年5月15日的国会听证上,美国陆军五星上将麦克阿瑟建议把朝鲜战争扩大至中国,布莱德利随后发言:"如果我们把战争扩大到共产党中国,那么我们会被卷入到一场错误的时间,错误的地点同错误的对手打的一场错误的战争中." 写代码,适用于同样的原则,那就是把正确的代码放到正确的位置而不是相反.同样的一个代码,可以出现在多个可能的位置,它究竟应该出现在哪里,是软件架构设计的结果,说白了一切都是为了高内核和低耦合. 1.   陷入绝境 下面我们设想一个名字叫做ABC的简单的网卡,它需要接在一

Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化

我们知道,SPI数据传输可以有两种方式:同步方式和异步方式.所谓同步方式是指数据传输的发起者必须等待本次传输的结束,期间不能做其它事情,用代码来解释就是,调用传输的函数后,直到数据传输完成,函数才会返回.而异步方式则正好相反,数据传输的发起者无需等待传输的结束,数据传输期间还可以做其它事情,用代码来解释就是,调用传输的函数后,函数会立刻返回而不用等待数据传输完成,我们只需设置一个回调函数,传输完成后,该回调函数会被调用以通知发起者数据传送已经完成.同步方式简单易用,很适合处理那些少量数据的单次传

Linux SPI总线和设备驱动架构之三:SPI控制器驱动

通过第一篇文章,我们已经知道,整个SPI驱动架构可以分为协议驱动.通用接口层和控制器驱动三大部分.其中,控制器驱动负责最底层的数据收发工作,为了完成数据的收发工作,控制器驱动需要完成以下这些功能:1.    申请必要的硬件资源,例如中断,DMA通道,DMA内存缓冲区等等:2.    配置SPI控制器的工作模式和参数,使之可以和相应的设备进行正确的数据交换工作: 3.    向通用接口层提供接口,使得上层的协议驱动可以通过通用接口层访问控制器驱动: 4.    配合通用接口层,完成数据消息队列的排

linux驱动之i2c总线驱动调用分析【基于linux4.4】

平台:RK3399 使用设备树描述板级资源: 框架: linux i2c框架同样采用分层.分离的模式设计:从上到下分为  app调用层.i2c core层.驱动层:驱动层又分为 cpu平台 i2c控制器相关的驱动层以及 i2c总线上挂接的设备驱动程序:而分离的思想则体现在板级相关的信息放在设备树上实现,而通用的读写.初始化流程.操作流程等则放到驱动里面实现(类似platform总线驱动): 具体分析: 1. cpu i2c控制器驱动(adpter) static struct platform_

Linux下spi驱动开发

转载至:http://www.embedu.org/Column/Column367.htm 作者:刘洪涛,华清远见嵌入式学院讲师. 一.概述 基于子系统去开发驱动程序已经是linux内核中普遍的做法了.前面写过基于I2C子系 统的驱动开发.本文介绍另外一种常用总线SPI的开发方法.SPI子系统的开发和I2C有很多的相似性,大家可以对比学习.本主题分为两个部分叙述,第一 部分介绍基于SPI子系统开发的理论框架:第二部分以华清远见教学平台FS_S5PC100上的M25P10芯片为例(内核版本2.6