加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux pwm子系统分析之一 PWM系统框架说明

发布时间:2022-11-17 16:31:13 所属栏目:Linux 来源:转载
导读: 最近分析的几个的系统驱动,均通过sysfs下的目录及文件与子系统进行交互,今天我们顺带将pwm子系统也分析一下吧。在上一章中我们借助led子系统及gpio子系统,在led子系统下实现了针对led-g

最近分析的几个的系统驱动,均通过sysfs下的目录及文件与子系统进行交互,今天我们顺带将pwm子系统也分析一下吧。在上一章中我们借助led子系统及gpio子系统,在led子系统下实现了针对led-gpio的gpio-pwm-trigger,因此本章我们稍微分析下pwm子系统。本章内容如下:

一、 pwm子系统框架说明

二、pwm相关数据结构说明

三、pwm chip 驱动开发流程说明

一、pwm子系统框架

如下即为pwm子系统的系统框架,大致可以分为如下几个方面:

pwm子系统接口层,提供pwm的request、free(类似于gpio_request、gpio_free);pwm的

使能与去使能;pwm 配置(配置pwm的占空比等)等接口

上面pwm子系统接口层通过pwm号在pwm_tree基数树中找到对应的pwm_device(所有注册的pwm device均会添加至pwm_tree中,另外一个pwm_chip可包含多个pwm_device,因此pwm_chip与pwm_device之间也存在关联),并借助pwm_chip提供的方法配置pwm控制器,实现pwm配置等操作;pwm_chip层主要对应一个pwm控制器,一个pwm控制器可包含多个pwm_device,针对一个pwm_chip,提供了访问pwm 控制器的方法,通过pwm_chip提供的方法,实现对pwm 控制器的配置;pwm器件即是对应的pwm控制器。

以上即为pwm子系统的框架,另外pwm子系统也借鉴了gpio子系统的实现流程

(export、unexport)。针对pwm_chip,也借助device子系统以及sysfs子系统接口,为注册的pwm_chip对应struct device类型成员实现export、unexport属性(即sys下文件,如/sys/class/pwm/pwmchipX/export文件)linux系统框图,而应用程序通过将该pwm chip对应的pwm号设置到export中,则export对应的store函数即会为该pwm device创建对应struct device类型变量,并为该device变量创建duty、period_ns、enable等属性参数,从而应用程序即可实现pwm的控制(这个和操作gpio是一样的)。

iic嵌入式linux驱动框图_ofdm系统基本模型框图_linux系统框图

二、pwm相关数据结构说明

上面说明了pwm 子系统的框架,本小节主要从数据结构、接口说明pwm子系统是如何实现上述一中所说的框架的。如下图,pwm子系统对外提供系统接口,供内核其他子系统调用。下面我们分析说明:

pwm子系统接口提供了pwm的使能、去使能、pwm配置(占空比、频率等属性);上述1中的接口一般传递pwm device或者pwm号,获取到pwm device,而pwm device中则包含指向其pwm_chip的指针,从而找到pwm chip,并通过pwm chip的ops接口,实现与pwm控制器的通信;pwm chip中主要包括该pwm chip的pwm base index、pwm num、pwm 操作接口(enable、disable、pwm config、pwm request、pwm free),这基本上和gpio子系统中gpio_chip的成员类似;pwm_ops主要包括enable、disable、pwm config、pwm request、pwm free这几个接口。

如下即为这几个数据结构的关联,此处不对数据结构中每一个成员做详细说明,该子系统相对来说还是和gpio 子系统很像的。

iic嵌入式linux驱动框图_linux系统框图_ofdm系统基本模型框图

三、pwm chip 驱动开发流程说明

Pwm chip驱动的开发流程相对也比较简单,下面简要说明:

创建platform device,用于存储该pwm chip相关的配置参数,如pwm base index、pwm num、pwm操作相关的寄存器参数等等;创建platform driver,在该driver的probe接口中完成pwm chip的注册,主要包括:申请struct pwm_chip类型的内存空间;实现struct pwm_ops中各成员接口,主要实现与pwm 控制器的通信;调用pwmchip_add,完成pwm chip的添加。

实现以上几步,即可完成pwm chip的注册。

本章主要介绍pwm chip的框架,包括数据结构关联、pwm chip的驱动开发流程,下一章我们讲实现一个基于gpio操作的pwm chip驱动,该驱动可在ubuntu16.04上运行验证,可适合无开发版学习pwm chip驱动开发(借助以前实现的virt gpio chip,即可实现该功能)。

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!