linux驱动
文章平均质量分 74
码农小白
这个作者很懒,什么都没留下…
展开
-
linux驱动:(22)中断节点和中断函数
中断的存在可以极大的提高 CPU 的运行效率,但是中断会打断内核进程中的正常调度和运行,所以为保证系统实时性,中断服务程序必须足够简短,但实际应用中某些时候发生中断时必须处理大量的事物,这时候如果都在中断服务程序中完成,则会严重降低中断的实时性基于这个原因,linux 系统提出了一个概念:把中断服务程序分为两部分:中断上文和中断下。如果一个设备需要用到中断功能,开发人员就需要在设备树中配置好中断属性信息,因为设备树是用来描述硬件信息的,然后Linux内核通过设备树配置的中断属性来配置中断功能。原创 2024-10-06 13:34:02 · 580 阅读 · 0 评论 -
linux驱动:(21)ioctl接口(二)驱动与应用程序传递ioctl命令
将以前的beep杂项设备中的copy_from_user改为用ioctl接口,修改的代码是 linux驱动:(8)实战:用杂项设备完成蜂鸣器驱动 中的代码。原创 2024-10-04 17:57:28 · 483 阅读 · 0 评论 -
linux驱动:(20)ioctl接口(一)
【代码】linux驱动:(20)ioctl接口(一)原创 2024-09-24 23:26:13 · 376 阅读 · 0 评论 -
linux驱动:(19)pinctl和gpio子系统讲解+实战蜂鸣器
设置gpio输入还是输出。原创 2024-09-16 21:41:46 · 688 阅读 · 0 评论 -
linux驱动:(18)设备树下的platfrom总线
目录匹配节点name旧driver.c新driver.c (设备树)验证方式取资源旧方法新方法第一个方法第二个方法注意设备树of映射地址函数例子最后创建自己想要的设备,已经获取到了寄存器的值,可以回看前面章节在以前的platfrom总线是通过两个文件,driver和device两个文件进行匹配成功送到probe函数的现在有了设备树,通过设备树来替换device文件部分,那如何进行匹配呢,是通过设备树节点中的compatible属性来匹配相对应的name,但根节点中的compatible属性并不是,这个属性原创 2024-09-14 00:27:51 · 523 阅读 · 0 评论 -
linux驱动:(17)设备树中常用的of操作函数
在设备树中如何获取到寄存器的值呢,linux提供了几个函数,在 include/linux/of.h 中都是以 of 开头的。原创 2024-09-12 23:16:46 · 647 阅读 · 0 评论 -
linux驱动:(16)在设备树添加自定义节点
进入 源码根目录/proc/device-tree/ 查看到设备树里的属性通过cat就可以看到属性的值是多少,如果是节点,可以cd进入再通过cat看节点中的属性我们添加完后,通过cat就可以看到有没有添加成功。原创 2024-08-25 17:26:16 · 461 阅读 · 0 评论 -
linux驱动:(15)设备树
如果在根目录中又包含了一个dtsi文件,进去这个dtsi文件后,就又会看到一个根节点,这就是我上面说的,dtsi里面的根节点会于我们第一个找到的根节点合并成一个根节点。当我们找一个节点的时候,我们必须书写完整的节点路轻,如果我们的节点名很长,那么我们在引用的时候就十分不方便,所以,设备树允许我们用下面的形式为节点标注引用。一般往一个节点里面添加内容的时候,不会直接把添加的内容写到节点里面,而是通过节点的引用来添加。如果该设备树文件没有 /{ } 开头的节点,就去包含的头文件去找,先找到根节点。原创 2024-08-25 16:43:22 · 519 阅读 · 0 评论 -
linux驱动:(14)平台总线模型 (platform设备 二)
到了第二步注册,但在注册前我们要先登记,用到的函数定义在ioport.h里。我这就注册一个杂项设备,下面是完整driver.c代码。可以利用函数来将硬件资源单独复制出来一份。登记不成功就需要注销登记,也有函数。原创 2024-08-15 15:55:40 · 353 阅读 · 0 评论 -
linux驱动:(14)平台总线模型 (platform设备 一)
平台总线模型也叫platform总线模型,是linux内核虚拟出来的一条总线,不是真实的导线平台总线是以名字来匹配的,实际上就是字符串比较,主要就是把原来的驱动.c文件分为两个c文件,一个驱动,c,一个设备,cproberemove。原创 2024-08-15 15:00:26 · 654 阅读 · 0 评论 -
linux驱动:(13)杂项设备和字符设备总结
杂项设备是字符设备里面的一种 主设备号固定为10,只需要分配次设备号 步骤 构建文件操作集 其中write/read中应用与内核层传输需要用到两个函数 copy_from_user copy_to_user 构建杂项设备结构体 struct miscdevice misc = {} 注册杂项设备 misc_register(&misc); 卸载杂项设备 misc_deregister(&misc); 字符原创 2024-08-12 17:55:53 · 312 阅读 · 0 评论 -
linux驱动:(12)自动创建设备节点
udev 是一种工具,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev 目录下。使用 udev 后,在/dev 目录下就只包含系统中真正存在的设备。udev 一般用在 PC上的 linux中,相对 mdev 来说要复杂些。mdev是udev的简化版本是busybox中所带的程序,最适合用在linux系统。在linux中使用mdev来实现设备节点文件的自动创建和删除。用的是第11章的代码。原创 2024-08-11 22:06:22 · 868 阅读 · 0 评论 -
linux驱动:(11)注册字符类设备
描述字符设备的一个结构体。原创 2024-08-08 10:14:54 · 920 阅读 · 0 评论 -
linux驱动:(10)申请字符类设备号
如果加载内核的时候不将主次设备号参数传入,就动态分配,如果传入的话就静态分配。定义在types.h里的,用来保存设备号的,是一个32位数。高12位保存主设备号,低12位保存次设备号,在linux中宏定义来操作设备号。原创 2024-08-06 19:09:01 · 896 阅读 · 0 评论 -
linux驱动:(9)驱动传参
驱动传参就是传递参数给我们的驱动,例如。原创 2024-08-05 21:22:26 · 301 阅读 · 0 评论 -
linux驱动:(8)实战:用杂项设备完成蜂鸣器驱动
最终效果是使用杂项设备完成一个蜂鸣器驱动,然后在应用程序中传入参数1为打开蜂鸣器,0为关闭蜂鸣器。原创 2024-08-05 18:24:54 · 560 阅读 · 0 评论 -
linux驱动:(7)物理地址到虚拟地址映射
在单片机和裸机中操作硬件是通过指针来对寄存器赋值来进行操控但对于linux中不能这样,不能直接对物理地址直接修改,因为linux使能了mmu,所以不能直接菜操作物理地址如果要操作硬件,需要先把物理地址转换成虚拟地址。原创 2024-08-05 17:46:58 · 367 阅读 · 0 评论 -
linux驱动:(6)应用层和内核层数据传输
linux一切皆文件文件对应的操作有打开,关闭,读取设备节点对应的操作有打开,关闭,读取。原创 2024-08-04 20:20:47 · 166 阅读 · 0 评论 -
linux驱动:(5)杂项设备驱动
其中的次设备号不能相同,但不知道有什么可以选择,就需要一个宏定义MISC_DYNAMIC_MINOR,也在 miscdevice.h中,他会自动分配次设备号。里面有一个结构体成员都对应一个调用,后面会仔细讲,现在只用知道当对驱动进行读取read时,就会调用这个结构体中的read成员。可以在根目录下的include/linux/miscdevice.h中定义,这个结构体作用是描述这个设备。可以在根目录下的include/linux/fs.h中定义。可以在根目录下的include/linux/fs.h中定义。原创 2024-08-04 17:34:09 · 938 阅读 · 0 评论 -
linux驱动:(4)直接编译驱动进内核
接前面第一章的第二个编译驱动方法。原创 2024-07-31 17:57:36 · 664 阅读 · 0 评论 -
linux驱动:(3)图形化界面
当我们make menuconfig保存退出以后,linux会将所有的配置选项以宏定义的形式保存在include/generated/下面的autoconf.h里面。使用空格按键来配置三个不同状态。原创 2024-07-30 19:37:53 · 231 阅读 · 0 评论 -
linux驱动:(2)添加别的驱动
先去内核源码中搜索,看看有没有我们需要的驱动,有的话就可以直接使用了假如没有这个驱动,我们需要自己编译一个驱动,然后加载到内核中就可以了。原创 2024-07-30 16:50:22 · 151 阅读 · 0 评论 -
linux驱动:(1)helloworld
【代码】linux驱动:(1)helloworld。原创 2024-07-30 16:09:43 · 433 阅读 · 0 评论