驱动开发
文章平均质量分 84
@随风()
这个作者很懒,什么都没留下…
展开
-
平台总线式驱动开发(id匹配和设备树匹配lv12-day3)
id匹配(可想象成八字匹配):一个驱动可以对应多个设备 ------在三种匹配方式中优先级次低。注意事项:2 ID 匹配编写步骤1 编写 xxx_device.c(设备)1 在 platform_device xxxxxx中添加id_entry成员2 编写 platform_device_id xxxxx2 编写 xxx_driver.c(驱动)1 在struct platform_driver xxxxx 中添加id_table成员2 编写struct platform_device_原创 2022-08-17 18:39:18 · 1173 阅读 · 5 评论 -
平台总线式驱动开发(lv12-day2)
一个驱动可以对应多个设备 ------优先级次低 device模块中,id的name成员必须与struct platform_device中的name成员内容一致 因此device模块中,struct platform_device中的name成员必须指定 driver模块中,struct platform_driver成员driver的name成员必须指定,但与device模块中name可以不相同。 带来的问题-------怎样将二者进行关联(匹配)?hello_device.c (设备).原创 2022-08-15 23:15:05 · 303 阅读 · 2 评论 -
设备模型(lv12-day1)
uevent机制:sysfs + uevent + udevd(上层app)1 包含头文件#include""一种用内存模拟的文件系统,系统启动时mount到/sys目录。sysfs用途:(类似于windows的设备管理器)4 调用 device_create(…4 ##### 代码中自动mknod步骤。3 调用 class_create(…5 ##### 参考代码。......原创 2022-08-15 11:37:31 · 227 阅读 · 1 评论 -
设备树(lv11-day9)
interrupt-controller 一个无值空属性用来声明这个node接收中断信号,表示该节点是一个中断控制器。一般来说,每一种设备的节点属性设置都会有一些套路,比如可以设置哪些属性?#interrupt-cells 这是中断控制器节点的属性,用来标识这个控制器需要几个单位做中断描述符。gpio-controller,无值空属性,用来说明该节点描述的是一个gpio控制器。数字形式的节点标识,在后续节点中属性值性质表示某节点时,可以引用对应节点。compatible = “字符串1”,“字符串2”,….原创 2022-08-11 21:53:00 · 236 阅读 · 0 评论 -
内核内存管理(lv11-day8)
由于vmalloc() 没有保证申请到的是连续的物理内存,因此对申请的内存大小没有限制,如果需要申请较大的内存空间就需要用此函数了。kmalloc() 申请的内存位于直接映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因为存在较简单的转换关系,所以对申请的内存大小有限制,不能超过128KB。一般情况下,内存只有在要被 DMA 访问的时候才需要物理上连续,但为了性能上的考虑,内核中一般使用 kmalloc(),而只有在需要获得大块内存时才使用 vmalloc()。......原创 2022-08-10 18:13:49 · 162 阅读 · 0 评论 -
内核定时器(lv11-day7)
初始化定时器 init_timer(struct timer_list *) 增加定时器 ------ 定时器开始计时 void。删除定时器 -------定时器停止工作 int。jiffies_64 是一个全局64位整型, jiffies全局变量为其低32位的全局变量,程序中一般用jiffies。硬件有一个时钟装置,该装置每隔一定时间发出一个时钟中断(称为一次时钟嘀嗒-tick),对应的中断处理程序就将全局变量。...原创 2022-08-09 22:56:48 · 206 阅读 · 0 评论 -
字符设备驱动基础下_并发控制(lv11-day6)
/成功获得自旋锁立即返回真,否则返回假,而不是像上一个那样"在原地打转”//成功获得自旋锁立即返回,否则自旋在那里直到该自旋锁的保持者释放。竞态:多任务并行执行时,如果在一个时刻同时操作同一个资源,会引起资源的错乱,这种错乱情形被称为竞态。为了解决竞态,需要提供一种控制机制,来避免在同一时刻使用共享资源,这种机制被称为并发控制机制。适用场合:任务上下文之间且临界区执行时间较长时的互斥或同步问题。适用场合:任务上下文之间且临界区执行时间较长时的互斥问题。e.操作并测试:运算后结果为0则返回真,否则返回假。..原创 2022-08-09 21:06:59 · 253 阅读 · 0 评论 -
向Linux内核增加新功能(LV11Day2)
ko #此处为内核模块文件名,将内核模块插入正在执>行的内核中运行 ----- 相当于安装插件。#,此处为插入内核后的模块名,此时将已被插入的内>核模块从内核中移除 ----- 相当于卸载插件。可以用 模块名-objs 变量来指定编译到ko中的所有.o文件名(每个同名的.c文件对应的.o目标文件)insmod ./?.ko #将内核模块插入正在执行的内核中运行 ----- 相当于安装插件。#将已被插入的内核模块从内核中移除 ----- 相当于卸载插件。...原创 2022-08-04 00:21:24 · 280 阅读 · 0 评论