摘要: 在前面驱动LED的所有案例中,都是在驱动程序中去设置每个引脚的复用功能,这会导致所编写的驱动程序移植困难,可重用性差,缺乏对引脚的统一管理,容易出现引脚的重复定义等等弊病。为此,Linux内核引入了pinctrl子系统和GPIO子系统的概念。pinctrl子系统主要用于芯片引脚功能的管理,它基本上是 阅读全文
posted @ 2024-08-02 22:44 fxzq 阅读(39) 评论(0) 推荐(0) 编辑
摘要: “嵌入式Linux中的LED驱动控制(设备树方式)”一文通过设备树方式实现了在野火STM32MP157开发板上对三个LED灯的控制,这里来讨论一下设备树的原理。 设备树用于描述一个硬件平台的硬件资源,它经由bootloader传递到内核,内核就可从设备树中获取到硬件信息。设备树描述硬件资源时有两个特 阅读全文
posted @ 2024-07-10 23:56 fxzq 阅读(28) 评论(0) 推荐(0) 编辑
摘要: Linux3.1之后的内核版本,引入了设备树的概念。同时,设备树还需要Bootloader的支持,如果使用Uboot,在1.1.3版本之后就可以支持设备树了。 设备树概念的提出其实有两方面的原因。其一当然是代码冗余,导致Linux内核臃肿不堪。在Linux内核源码中,只要是通过了基金会的认可,就可以 阅读全文
posted @ 2024-07-02 23:35 fxzq 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 在前面讨论的所有LED驱动程序中,把全部设备信息和驱动代码都写在了一个文件中,从本质上看,这种开发方式与单片机的开发并没有太大的区别,一旦硬件信息发生变化,就必须要修改驱动程序的源码。然而,Linux作为一个发展成熟、功能齐全、结构复杂的操作系统,它对于代码的可维护性、复用性非常看重。为了解决驱动代 阅读全文
posted @ 2024-06-20 21:54 fxzq 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 在前面的LED驱动控制中,都只使用了一个设备节点(一个次设备号)来进行操作,本例来讨论一下如何把三个基色的LED分别当成三个次设备,即产生出三个设备节点文件,但共用一个设备驱动(同一个主设备号),应用程序各自控制各自的LED 。 下面先给出完整的驱动程序代码,文件名仍为led.c。 #include 阅读全文
posted @ 2024-06-16 21:29 fxzq 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 在开发驱动程序的时候,有时希望快速地实现其业务功能,以把精力放在文件接口功能的测试上来。这样,对于常见的一些繁琐而又不能省略的步骤(如设备号的申请、字符设备的注册、设备节点文件的创建等),就希望能尽量地简化。这时,就可以借用Linux内核提供的misc(杂项)来实现。 这里仍然使用“嵌入式Linux 阅读全文
posted @ 2024-06-14 23:42 fxzq 阅读(48) 评论(0) 推荐(0) 编辑
摘要: “嵌入式Linux中的LED驱动控制”一文实现了在野火STM32MP157开发板上对三个LED灯的控制,这里来讨论一下该驱动程序具体实现的原理。由于实例使用的是STM32MP157这款芯片,所以先来看一下与该芯片端口操作相关的寄存器。 先看端口模式寄存器MODER,该类型的寄存器在STM32MP15 阅读全文
posted @ 2024-06-11 21:09 fxzq 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 在“嵌入式Linux中内核模块的基本框架”一文中,已经构建好了内核模块的基本框架结构,现在在该框架的基础上进一步扩展,就可以形成Linux下的字符型设备驱动基本框架,下面就详细进行讨论。 在Linux系统中,设备驱动共分为三种类型,即字符型、块型和网络型。字符型设备以字节为最小操作单位,最为常见,其 阅读全文
posted @ 2024-06-09 16:24 fxzq 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 在Linux系统中,驱动程序属于内核态程序,可以认为它是介于操作系统和硬件实体之间的一层,对上负责与操作系统交流,对下负责控制硬件设备。 即,驱动程序对操作系统通过软件接口进行沟通,对芯片硬件通过读写寄存器进行控制。Linux系统的驱动由内核模块(Loadable Kernel Module,简称L 阅读全文
posted @ 2024-06-03 16:58 fxzq 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 在前面“嵌入式Linux中字符型驱动程序的基本框架”一文中,讨论了一个字符型驱动的基本框架,但没有实现具体的驱动任务。这里就以野火STM32MP157开发板为例,通过编写一个实际的驱动程序去控制开发板上三个LED的亮灭。 先来看一下LED部分的电路原理图,如下所示。 从上图中可以看到,三个RGB颜色 阅读全文
posted @ 2024-05-19 19:12 fxzq 阅读(137) 评论(0) 推荐(0) 编辑