- 博客(9)
- 收藏
- 关注
原创 linux系统驱动中断
与设备树和platform总线类似,负责管理芯片引脚的和。:硬件引脚的"路由器"和"属性设置器":决定一个物理引脚做什么用、用什么电学参数:多功能插座的模式切换开关比如:同一个插座可以是USB充电口、也可以是HDMI接口Pinctrl就是决定这个插座当前是什么功能的开关,负责对进行统一的软件控制。:数字信号线的"标准化操作员":读取/设置高低电平、管理中断、资源分配:电灯的开关操作员无论墙上的开关是什么品牌、什么型号操作员都按照标准方式按开关、看指示灯。
2026-03-31 14:57:01
153
原创 Linux设备树操作API与Platform总线API详解
一次性创建平台设备并绑定驱动(主要用于早期设备或测试):通过phandle(设备树中的节点引用句柄)查找节点。:获取并映射平台设备的I/O内存资源(带自动资源管理):这是获取中断的推荐方式,会自动处理中断资源的解析。:获取平台设备的特定类型资源(内存、中断等):可选参数,用于返回属性值的长度(字节数):通过名称获取中断号(当设备有多个中断时):获取设备的平台特定数据(非设备树方式):获取设备地址(解析reg属性):检查设备是否与指定的匹配表匹配。:要获取父节点的设备树节点指针。
2026-03-05 20:06:50
382
1
原创 杂项设备驱动
一点题外话,linux脱胎于单内核的uinx,其精髓就在于内核的模块化,保证低开销的同时又实现了功能的多样化,所以对于一般的驱动,我们都采用模块的加载方式。也是位于include/linux/miscdevice.h,在杂项设备结构体的下面。对于编译进内核,可以查看我上一期Hello_world的讲解,这里给出基本的框架。可以看出日志文件中已经打印出注册成功,设备目录下也已经出现了对应的设备文件。存在于include/linux/miscdevice.h。不知道的话可以先查找工具链。
2025-11-21 10:37:23
375
原创 内核驱动修改详解
如果你明确知道内核源码的路径,那再好不过,如果你下载的是SDK包,那么内核源码一般放在kernel文件夹下,无论如何,请先确定内核源码所在位置,并且已经成功编译。
2025-11-19 14:13:07
1333
原创 linux第一个驱动helloworld
由于我们是为本机编译,因此无需考虑编译的架构,编译工具链一般也由默认指定,因此我们只需要在makefile所在目录下编译即可,如果出现编译链不同的错误提示,下载并指定编译工具链即可。把驱动直接编译到内核,运行内核则会直接加载驱动。由于我囊中羞涩(还没有开发板),并且也没有学会,下次再写哈。首先我们要明确你的驱动想要在哪里执行,我们以在本地linux系统执行为例。把驱动编译城模块,然后加载到内核里面。:linux内核模块的必要声明。:真正实现驱动的实体代码。:linux驱动框架。
2025-11-09 21:31:37
328
1
原创 linux自启动设置
如今我想再喊一次,身边的人肯定不理解,我也没有了当时的心气,以前好像大家都是种子,肆无忌惮,万事皆同,如今已经各有特色了。我的乐观好像变成伪装了,和大家打成一片,却又总是据人之外,不喜欢我自己,却喜欢自己的成长。读研出差,难得老师不在,忙里偷闲想去天台看看超级月亮,上不去,去楼下找妈妈打电话,突然意识到,想妈妈是真,需要人吐槽也是真,原来是自己积攒了好多的话需要找人说,妈妈并没有文凭,对于我说的也一知半懂,但我们还是聊了将近两个小时,也许是真的发泄完了,看到同门下来看月亮,一起走去了湖边。
2025-11-05 22:10:17
511
原创 应用程序在linux内核中的执行流程
由此我们可以看出,内核的重要性远远大于应用程序,因此内核在运行时独立于应用程序,我们一般称之为系统态(内核态),拥有受保护的内存空间以及访问硬件设备的所有权限。内核会保存当前应用程序(即“进程”)的所有状态信息(比如是谁发起的调用、它的数据在哪等),这个环境就是“进程上下文”,这确保了内核处理完事情后,能把结果准确地返回给。应用程序几乎所有有意义的、需要与外部世界(硬件、网络、文件)交互的工作,最终都必须通过“系统调用”这个唯一的、安全的门户来请求内核完成。操作系统的核心,管理硬件设备,分配系统资源。
2025-10-24 10:52:53
730
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅