1、驱动是谁写的:
(1)驱动开发工程师
(2)内核维护者
2、驱动编程写作要求:
(1)接口标准化
(2)尽量降低驱动开发者难度
3、到底什么是驱动框架:
(1)内核中驱动部分维护者针对每个种类的驱动设计一套成熟的、标准的、典型的驱动实现,然后把不同厂家的同类硬件驱动中相同的部分抽出来自己实现好,再把不同部分留出接口给具体的驱动开发工程师来实现,这就叫驱动框架。
(2)内核维护者在内核中设计了一些统一管控系统资源的体系,这些体系让内核能够对资源在各个驱动之间的使用统一协调和分配,保证整个内核的稳定健康运行。譬如系统中所有的GPIO就属于系统资源,每个驱动模块如果要使用某个GPIO就要先调用特殊的接口先申请,申请到后使用,使用完后要释放。又譬如中断号也是一种资源,驱动在使用前也必须去申请。这也是驱动框架的组成部分。
(3)一些特定的接口函数、一些特定的数据结构,这些是驱动框架的直接表现。




以下是Linux内核的段链接文件:










以上是朱有鹏老师“驱动框架入门之LED-linux驱动开发第4部分”视频的笔记截图
stm32mp157a芯片、盘古开发板、Linux kernel版本: 4.19.43+
在其盘古wiki上看到LED相关的操作:

这就是linux kernel的led子系统,我在设备树里面添加了几个led设备(设备树这里不做过多描述,上面朱老师的视频是2.6的内核,里面还没有设备树这个功能或者模式),设备树文件如下:
leds {
compatible = "gpio-leds";
cpu {
label = "cpu";
gpios = <&gpioi 11 GPIO_ACTIVE_LOW>;
linux,default-trigger = "heartbeat";
default-state = "on";
};
led2g {
label = "led2g";
gpios = <&gpiod 13 GPIO_ACTIVE_LOW>;
linux,default-trigger = "heartbeat";
default-state = "on";
};
led2r {
label = "led2r";
gpios = <&gpiod 12 GPIO_ACTIVE_HIGH>;
default-state &

本文介绍了Linux内核驱动框架的概念,重点分析了LED子系统,包括驱动编写者、编程要求以及LED子系统的设备树配置。通过驱动框架,内核能统一管理资源。文中探讨了如何通过sysfs接口控制LED,并分析了4.19内核的led-class.c文件,以及leds-gpio.c中的驱动程序实现。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



