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