随笔分类 -  Linux驱动

摘要:概念 Linux内核定时器使用基于时间点的计时方式:以当前时刻为启动时间点,以未来的某一时刻为终止点。 内核定时器精度不高 内核定时器不是周期性运行的,超时后会自动关闭。可以在定时器处理函数中重新开启定时器。 结构体和函数 include/linux/timer.h timer_list结构体 st 阅读全文
posted @ 2021-11-06 00:11 WuYunTaXue 阅读(350) 评论(0) 推荐(0) 编辑
摘要:两种常用的中断下文方法:tasklet和工作队列 设计方式: 中断发生 中断上文,处理紧急、不占太多时间的事情 调用下文 中断下文,做不太紧急、耗时间的任务 tasklet tasklet是中断处理下文常用的一种方法,是一种特殊的软中断。 调用tasklet后,tasklet绑定的函数不会立即执行。 阅读全文
posted @ 2021-10-31 11:51 WuYunTaXue 阅读(211) 评论(0) 推荐(0) 编辑
摘要:Linux中断基础概念 中断上下文 Linux内核的中断回调可以有两部分,即上下文。当中断比较简单时,可以只有上文。 一般中断上文是指由中断产生的回调函数直接执行的部分;中断下文在上文中启用调度,再由内核调度。 中断上文:处理尽可能少的任务,特点是响应速度快 中断下文:处理耗时任务,可以被新的中断打 阅读全文
posted @ 2021-10-24 19:18 WuYunTaXue 阅读(7440) 评论(0) 推荐(1) 编辑
摘要:测试平台是讯为的itop-4412开发板 驱动led步骤 步骤: 修改设备树,添加led相关的节点,编译后烧录进板卡 编写driver驱动代码,初始化platform_driver结构体,使of_match_table属性的compatible与设备树中的一致 在驱动入口函数中,向平台注册drive 阅读全文
posted @ 2021-10-11 23:48 WuYunTaXue 阅读(876) 评论(0) 推荐(0) 编辑
摘要:设备树设备和平台设备的关系 平台总线会将name相同的device和driver进行匹配,执行driver中的probe 设备树描述的节点会生成对应的设备树device,我这里理解为设备树也向平台总线注册了device,可以在/sys/devices/platform/目录下看到 driver也可以 阅读全文
posted @ 2021-10-11 21:47 WuYunTaXue 阅读(333) 评论(0) 推荐(0) 编辑
摘要:安装dtc编译工具 sudo apt install device-tree-compiler 将dts编译成dtb dtc -I dts -O dtb -o xxx.dtb xxx.dts 将dtb编译成dts dtc -I dtb -O dts -o xxx.dts xxx.dtb 阅读全文
posted @ 2021-10-10 17:54 WuYunTaXue 阅读(250) 评论(0) 推荐(0) 编辑
摘要:驱动获取设备树内描述属性的一般步骤 查找想要的节点 获取节点中的属性值 常用of操作函数 include/linux/of.h 在内核中以of开头的函数,一般是来操作设备树的 查找结点的函数 static inline struct device_node *of_find_node_by_path 阅读全文
posted @ 2021-10-10 17:09 WuYunTaXue 阅读(1137) 评论(0) 推荐(0) 编辑
摘要:概念 设备树是一种描述硬件资源的数据结构,在bootloader传递给内核。可以去除内核中不必要的板级代码。 设备树是Linux内核3.x之后才出现的,在内核源码的arch/架构/boot/dts目录下。 常用的名词: DT: Device Tree 设备树 FDT: Flattened Devic 阅读全文
posted @ 2021-09-25 13:21 WuYunTaXue 阅读(553) 评论(0) 推荐(0) 编辑
摘要:ioctl简介 kernel3.0之前,叫ioctl,之后改名为unlocked_ioctl。功能和接口基本相同,名字发生了变化 ioctl既可以往内核读也可以写,read/write在执行大数据量读/写时比较有优势。 在应用层调用ioctl函数时,内核会调用对应驱动中的ublocked_ioctl 阅读全文
posted @ 2021-09-20 22:51 WuYunTaXue 阅读(4352) 评论(1) 推荐(0) 编辑
摘要:概念 平台(platform)总线是一种虚拟的总线。 Linux内核要求每出现一个device就要向总线汇报(注册),出现一个driver,也要向总线汇报(注册)。 注册device/driver时,总线会寻找与之匹配的driver/device。如果对应的name相同则发生匹配。 匹配发生时,会调 阅读全文
posted @ 2021-09-10 00:11 WuYunTaXue 阅读(403) 评论(0) 推荐(0) 编辑
摘要:加载驱动传参 在加载驱动的时候传递给驱动的参数 例如:insmod beep.ko a=1 常见的用途: 设置驱动的相关参数,比如设置缓冲区的大小 设置安全校验,防止我们写的驱动被人盗用 传参方式 //普通类型的参数,char,int module_param(name, type, perm); 阅读全文
posted @ 2021-09-05 11:34 WuYunTaXue 阅读(165) 评论(0) 推荐(0) 编辑
摘要:杂项设备和字符设备的区别 杂项设备是字符设备的一种 杂项设备自动生成设备节点;字符设备需要程序生成设备节点 杂项设备的主设备号是固定的,固定为10;字符设备需要分配主设备号 ##字符设备驱动框架 ##杂项设备驱动框架 查看设备名称的一些位置 /dev目录下的文件叫设备节点 cat /proc/dev 阅读全文
posted @ 2021-09-04 20:54 WuYunTaXue 阅读(118) 评论(0) 推荐(0) 编辑
摘要:字符设备和杂项设备的区别 杂项设备的主设备号是固定的,字符设备需要分配主设备号 杂项设备自动生成设备节点,字符设备需要程序生成设备节点 所以创建字符设备会比杂项设备多两步:申请设备号、创建设备节点 申请设备号 #include <linux/fs.h> 静态分配设备号 即手动指定设备号 int re 阅读全文
posted @ 2021-09-04 18:52 WuYunTaXue 阅读(86) 评论(0) 推荐(0) 编辑
摘要:简介 杂项设备是字符设备的一种 杂项设备自动生成设备节点(/dev/目录下的文件叫设备节点) 系统中的杂项设备可以通过cat /proc/misc来查看 杂项设备的主设备号是相同的,均为10,次设备号不同。主设备号相同就可以节省内核的资源。 设备号简介 设备号包括主设备号和次设备号。 cat /pr 阅读全文
posted @ 2021-08-30 23:47 WuYunTaXue 阅读(266) 评论(0) 推荐(0) 编辑
摘要:代码 mini_module.c #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); //遵循BSD和GPL开源许可 MODULE_AUTHOR("TAXUE"); //模块作者 stat 阅读全文
posted @ 2021-08-20 21:38 WuYunTaXue 阅读(39) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示