当前位置: 首页 > wzjs >正文

中国建设银行网站 党费云湖南企业竞价优化服务

中国建设银行网站 党费云,湖南企业竞价优化服务,建设银行个人网银网站,wordpress邮件发送类上一章我们详细的讲解了 Linux 下的驱动分离与分层,以及总线、设备和驱动这样的驱动框架。基于总线、设备和驱动这样的驱动框架, Linux 内核提出来 platform 这个虚拟总线,相应的也有 platform 设备和 platform 驱动。 上一章我们讲解了传统的…

上一章我们详细的讲解了 Linux 下的驱动分离与分层,以及总线、设备和驱动这样的驱动框架。基于总线、设备和驱动这样的驱动框架, Linux 内核提出来 platform 这个虚拟总线,相应的也有 platform 设备和 platform 驱动。
上一章我们讲解了传统的、未采用设备树的 platform 设备和驱动编写方法。最新的 Linux 内核已经支持了设备树,因此在设备树下如何编写 platform驱动就显得尤为重要,本章我们就来学习一下如何在设备树下编写 platform 驱动。

1、设备树下的 platform 驱动简介

platform 驱动框架分为总线、设备和驱动,其中总线不需要我们这些驱动程序员去管理,这个是 Linux 内核提供的,我们在编写驱动的时候只要关注于设备和驱动的具体实现即可。==在没有设备树的 Linux 内核下,我们需要分别编写并注册 platform_device 和 platform_driver,分别代表设备和驱动。==在使用设备树的时候,设备的描述被放到了设备树中,因此 platform_device 就不需要我们去编写了,我们只需要实现 platform_driver 即可。

1.1、修改 pinctrl-stm32.c 文件

在前面第 25 章的时候我们详细的讲解了 pinctrl,但是在后续的实验中却一直没有使用pinctrl也就是之前讲的pinctrl子系统知识,按道理来讲,在我们使用某个引脚的时候需要先配置其电气属性,比如复用、输入还是输入、默认上下拉等!但是在前面的实验中均没有配置引脚的电气属性,也就是引脚的 pinctrl配置。这是因为 ST 针对 STM32MP1 提供的 Linux 系统中,其 pinctrl 配置的电气属性只能在platform 平台下被引用,前面的实验都没用到 platform,所以 pinctrl 配置是不起作用的!
Linux 系统启动运行过程中会自动解析设备树下的 pinctrl 配置,然后初始化引脚的电气属性,不需要 platform 驱动框架。所以 pinctrl 什么时候有效,不同的芯片厂商有不同的处理方法,一切以实际所使用的芯片为准!
对于 STM32MP1 来说,在使用 pinctrl 的时候需要修改一下 pinctrl-stm32.c 这个文件,否则当某个引脚用作 GPIO 的时候会提示此引脚无法申请到!
Pasted image 20250405091637.png
Pasted image 20250405091652.png
Pasted image 20250405091704.png
Pasted image 20250405092644.png

1.2、创建设备的 pinctrl 节点

上面已经说了,在 platform 驱动框架下必须使用 pinctrl 来配置引脚复用功能。我们以本章实验需要用到的 LED0 为例,编写 LED0 引脚的 pinctrl 配置。打开 stm32mp15-pinctrl.dtsi 文件, STM32MP1 的所有引脚 pinctrl 配置都是在这个文件里面完成的,在 pinctrl 节点下添加如下所示内容:
Pasted image 20250405092821.png
Pasted image 20250405092834.png
Pasted image 20250405093105.png

1.3、在设备树中创建设备节点

接下来要在设备树中创建设备节点来描述设备信息,重点是要设置好 compatible 属性的值,因为 platform 总线需要通过设备节点的 compatible 属性值来匹配驱动!这点要切记。
Pasted image 20250405093252.png
Pasted image 20250405093304.png

1.4、编写 platform 驱动的时候要注意兼容属性

上一章已经详细的讲解过了,在使用设备树的时候 platform 驱动会通过 of_match_table 来保存兼容性值,也就是表明此驱动兼容哪些设备。所以, of_match_table 将会尤为重要,比如本例程的 platform 驱动中 platform_driver 就可以按照如下所示设置:
Pasted image 20250405095615.png
Pasted image 20250405095839.png
最后就是编写驱动程序,基于设备树的 platform 驱动和上一章无设备树的 platform 驱动基本一样,都是当驱动和设备匹配成功以后先根据设备树里的 pinctrl 属性设置 PIN 的电气特性再去执行 probe 函数。我们需要在 probe 函数里面执行字符设备驱动那一套,当注销驱动模块的时候 remove 函数就会执行,都是大同小异的。

2、检查引脚复用配置

2.1、检查引脚 pinctrl 配置

Pasted image 20250405100143.png
正点原子 STM32MP1 开发板上将 PI0 连接到了 LED0 上,也就是将其用作普通的 GPIO,对应的 pinctrl 配置就是示例代码 35.1.2.1。但是 stm32mp15-pinctrl.dtsi 是 ST 根据自己官方 EVK开发板编写的,因此 PI0 就可能被 ST 官方用作其他功能,大家在 stm32mp15-pinctrl.dtsi 里面找到如下所示代码:
Pasted image 20250405100306.png
从图 35.2.1.1 可以看出, ST 官方默认将 PI0 复用为 LCD_G5,前面说了,一个 IO 只能复用为一个功能,因此我们需要将图 35.2.1.1 中的“<STM32_PINMUX(‘I’, 0, AF14)>”屏蔽掉,因为我们现在要将 PI0 用作 GPIO。同样的,继续在 stm32mp15-pinctrl.dtsi 文件里面查找,会发现如图 35.2.1.2 所示的地方也将 PI0 复用为了 LCD_G5:
Pasted image 20250405100718.png
当然可能会有小伙伴会问,为什么之前实验不用屏蔽这些复用功能?
因为之前的实验并未用到pinctrl这个配置,也未用到platform。之前只是初步的讲了pinctrl子系统的知识!

2.2、检查 GPIO 占用

Pasted image 20250405101347.png

http://www.dtcms.com/wzjs/262658.html

相关文章:

  • 县城做网站的多么百度seo优化怎么做
  • 张家港网站哪家做的好网络推广方法技巧
  • 有好点的网站建设公司吗百度下载并安装
  • 香河做网站公司沐浴露营销软文
  • 建设银行网站查询金华百度seo
  • 白沟做网站今日的头条新闻
  • 免费香港网站空间佛山网站开发公司
  • 网站整体设计意图及其功能html网页制作用什么软件
  • wordpress empty整站seo
  • go生物网站做蛋白定位品牌宣传如何做
  • 做网站怎么拿框架的原代码生猪价格今日猪价
  • 网站服务名词解释系统优化大师
  • 笑话类网站 源代码小熊猫seo博客
  • 网站设计师英文怎么在网上做广告宣传
  • 河南企业做网站花关键词排名系统
  • 电商网站建设 网站定制开发全网络品牌推广
  • 苏州做网站设计的公司网站seo哪家好
  • 网站开发与设计的实训场地5188关键词平台
  • 东城响应式网站建设软文营销是什么
  • 江苏园博园建设开发有限公司网站百度自动点击器怎么用
  • 晋城网站制作公司怎么选关键词排名优化工具
  • 上海医院设计网站建设武汉新一轮疫情
  • 成华区微信网站建设推营销型网站设计制作
  • 建材商城网站建设seo优化网站推广
  • 浏览器兼容性测试网站衡水网站seo
  • 武汉知名网站开发公司游戏如何在网上推广
  • 合肥哪家公司做网站什么叫友情链接
  • 金平党建网站建设方案互动营销案例100
  • 郴州住房和城乡建设委员会网站全球搜索引擎排名
  • 如何个网站做二维码论坛推广软件