深入搞懂uboot的驱动模型(一)之 dm的使用

本文从uboot驱动模型的基础出发,详细介绍了如何使用DM框架开发LED驱动。通过分析LED驱动的硬件配置、uboot命令操作、驱动注册和硬件控制,揭示了DM模型的使用流程。适合uboot开发者和 BSP 开发人员了解DM模型的实践应用。

目录

前言

背景

uboot驱动模型简介

DM框架

DM使用前的相关配置

分析uboot LED驱动

硬件与配置信息

uboot命令操作led

分析led注册的cmd

分析led如何使用dm模型

led分析总结

使用dm流程的总结

附录


前言

        uboot驱动模型,对于uboot开发者或者开发系统的人来说,算是基础知识,对于芯片原厂bsp开发的人来更加是基础,虽然对于第三方sdk使用者,不用过多了解,但如果使用在uboot增加模块支持的相关需求,uboot驱动模型知识是必备的知识,尽管可以绕过uboot驱动模型在uboot开发想要的模块来支持需求,但堆积多了也不利于管理,这也是设计uboot驱动模型的一个初衷。

       笔者觉得做开发认识新的东西,如果能先知道它是如何使用的,能够亲手感受其开发现象结果就更加有利自己后期的理解,更容易入手。所以深入搞懂uboot的驱动模型之前,先来介绍下,uboot驱动模型的使用流程,通过一个uboot下的led控制,来掌握uboot驱动模型的使用。

背景

        该系列课程解析,均以赛灵思Zynq UltraScale+ MPSoC平台为示例讲解(刚好手里有赛灵思板子),其他平台都是一样的,有个平台示意比较容易理解而已。

        赛灵思所有平台介绍开源代码与技术参考:

Xilinx Wiki - Confluenceicon-default.png?t=N7T8https://xilinx-wiki.atlassian.net/wiki/spaces/A/overview?homepageId=18844350可以找到赛灵思移植好的u-boot开源代码,笔者是以该代码为例子分析的。

uboot驱动模型简介

        uboot驱动模型,uboot driver model,一般写成dm,下同。做嵌入式的人,不管应用层或者底层甚至系统,多多少少知道该框架。开发过Linux的人都知道Linux驱动,Linux驱动对硬件软件管理提出一套统一的管理开发框架;uboot驱动模型也是一样,它为驱动的定义和访问,提供了统一的接口,提高了驱动之间的兼容性和访问标准性。

官方对DM的介绍使用:

Driver Model — Das U-Boot unknown version documentationicon-default.png?t=N7T8https://u-boot.readthedocs.io/en/latest/develop/driver-model/index.html

DM框架

        dm主要有uclass、uclass_driver、udevice和driver,彼此之间的关系如下:

由uclass提供统一接口供上层调用,最终通过driver调到具体的硬件。

uclass是框架自动生成的,只有在uclass_driver存在且被udevice匹配到的情况下才会自动生成。

udevice定义了具体的硬件信息,有以下方式可以生成udevice:

(1)在设备树定义硬件系统,框架自动生成一个udevice

(2)使用接口U_BOOT_DEVICE定义声明来生成

(3)传参

driver是用户自己开发实现的,通过U_BOOT_DRIVER定义实现。

以上只是大概的框架,有个印象概念即可,详细的会在后面系列章节深入分析介绍。

DM使用前的相关配置

使用DM之前,需要在uboot使能DM的支持

CONFIG_DM=y

或者make menuconfig配置,之后将对应的依赖dm实现的驱动加进来即可,本文以led为例,加进来了led的配置:

CONFIG_LED=y
CONFIG_LED_GPIO=y

分析uboot LED驱动

        接下来分析uboot里利用uboot驱动模型实现的led驱动,来熟悉uboot驱动模型的开发。

led驱动涉及的文件路径汇总如下:

cmd\led.c  : 命令入口相关代码

drivers\led\led_gpio.c  : driver相关代码

drivers\led\led-uclass.c  : uclass相关代码

ar

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值