![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux驱动
文章平均质量分 96
记录学习Linux驱动过程中的学习笔记
青椒炒鸡蛋.
你可以摸鱼,但不能真菜!
展开
-
【Linux驱动】设备树引入&内核对设备树的处理
如上图所示,是设备树的模型,之所以叫“树”,是因为所有的设备节点都挂载在系统总线上,形成一个树状结构。其中,所有的设备节点都是“根节点”的子节点,且子节点还可以继续挂载子节点,可以无限挂载下去,所以该模型有着较强的扩展能力。而驱动程序所需要的硬件信息,由内核读取设备树文件后,转化为platform_device结构体,提供给驱动程序。表示根节点,后面紧跟一对花括号,根节点的属性和根节点下挂载的子节点在花括号内定义。文件中定义了很多设备,但是在板子上某些设备是没有的,这时可以给这些设备添加一个。原创 2024-05-29 23:49:42 · 813 阅读 · 0 评论 -
【Linux驱动】驱动模型进化 && 总线设备驱动模型
这就带来了一个问题——如果我们此时更换了一个开发板,就需要修改驱动程序中要操作的寄存器,每更换一个开发板,就需要对寄存器操作进行修改,这样的代码维护起来非常的麻烦,也不利于扩展。如上图所示,可以看出,在platform_bus中维护了两条链表,一条是挂载在该总线下的设备链表,另一条是挂载在该总线下的驱动链表。在linux系统中,大量使用了的面向对象的思想,因此,针对驱动层的分层,也抽象出了不同的结构体对象。在上一篇文章中,基于最基础的驱动程序框架,实现了一个简单的LED驱动程序,但驱动程序中的。原创 2024-05-09 00:46:23 · 1015 阅读 · 1 评论 -
【Linux驱动】最简单的LED驱动
上面步骤1(申请设备编号。原创 2024-04-18 00:49:23 · 872 阅读 · 1 评论 -
【linux驱动】最基本的驱动框架
我们上面步骤4中注册。原创 2024-04-14 00:23:43 · 750 阅读 · 1 评论 -
【Linux驱动】pinctrl子系统主要数据结构
在前面的文章中学习了pinctrl子系统的相关概念和使用方法,对于驱动工程师来说已经够用了,但是如果作为BSP工程师,就需要了解pinctrl是怎么实现的。原创 2024-04-07 23:57:44 · 670 阅读 · 0 评论 -
【Linux驱动】pinctrl子系统的概念与使用
如果我们想让pinA和pinB用于SPI功能,需要设置IOMUX,配置这两个引脚连接到SPI模块。如果我们想让pinA和pinB用于GPIO功能,需要设置IOMUX,配置这两个引脚连接到GPIO模块。📌 此处的GPIO模块与SPIIICUART等为并列关系,它与pinctrl子系统的关系是,使用pinctrl子系统将pinApinB等复用至GPIO模块,然后才能将pinApinB用于GPIO功能。除了将引脚复用为某种功能外,有时候还需要配置引脚的电气属性,如上拉、下拉、开漏等等。原创 2024-03-19 01:18:41 · 1150 阅读 · 1 评论 -
【Linux驱动】Input子系统
输入子系统由驱动层(input_driver)、核心层(input_core)以及事件层(input_event_handle)组成,如下图所示:Note:Input子系统中所有输入设备的主设备号都是13,核心层通过次设备号来将输入设备分类,例如如0-31是游戏杆,32-63是鼠标(对应Mouse Handler)、64-95是事件设备(如触摸屏,对应Event Handler)。在使用input系统时,不需要去注册字符设备,只需要向系统申请一个input_device即可。在Linux内核中,使用inp原创 2024-03-07 00:12:29 · 1084 阅读 · 0 评论 -
【Linux驱动】Linux内核移植(基于百问网imx6ull_pro开发板)
是home目录下一个隐藏的shell文件,用于储存用户的个性化设置。在bash每次启动时都会加载.bashrc文件中的内容,并根据内容定制当前bash的配置和环境。原创 2024-04-08 00:02:24 · 882 阅读 · 1 评论 -
UBOOT移植(基于百问网IMX6ULL_PRO开发板)
在添加引脚数组和初始化函数时,引入了新的宏。原创 2023-03-24 18:00:57 · 289 阅读 · 0 评论 -
uboot启动流程
uboot启动过程分析原创 2023-03-14 14:58:49 · 1601 阅读 · 1 评论