kernel
Hansomewang
精益求精
展开
-
创建sysfs节点之device_create_file、sysfs_create_group
sysfs属性节点可以实现用户空间与硬件交互,如设置管教电平,设置寄存器值等,控制驱动的具体功能。下面是如何在驱动中创建设备属性节点:一、device_create_filedevice_create_file用于在sys下创建设备的属性节点sysfs_create_group原创 2017-12-04 22:15:30 · 12065 阅读 · 3 评论 -
创建proc节点之create_proc_entry
proc虚拟文件系统也可以创建节点,实现用户空间与内核空间的交互。在驱动中创建节点,可以实现对硬件的控制。struct proc_dir_entry *create_proc_entry (const char *name, mode_t mode, struct proc_dir_entry *parent);参数:name:/proc/下节点的文件名,也原创 2017-12-05 11:13:34 · 6748 阅读 · 0 评论 -
字符设备驱动
1.字符设备驱动框架先来一张网上盗来的图,整个框架一目了然 2.驱动初始化2.1分配cdev cdev结构体,其中的module和file_operations都是在在cdev_init中初始化struct cdev { struct kobject kobj; struct module *owner; /*通常为THIS_MODULE*/ ...原创 2017-12-01 15:36:59 · 381 阅读 · 0 评论 -
makefile语法总结
-obj1.obj-m 和 obj-y obj-m : 表示编译成模块 obj-y : 表示直接编译进内核2.一个或多个源文件 1). 一个源文件 例: #drivers/hello/Makefile obj-$(CONFIG_HELLO) += hello.o$(CONFIG_HELLO)一般在arch/arm/configs/xxx.h中定义 (CONFIGHEL...原创 2018-04-09 11:09:37 · 851 阅读 · 0 评论 -
工作队列——workqueue 与 tasklet
workqueue与tasklet功能相似,都是让某个函数在将来被调用。但是两者件也有一些区别:tasklet在软件中断上下文中运行,tasklet代码必须是原子的。工作队列在一个特殊的内核线程的上下文中运行,工作队列允许休眠;tasklet始终运行在被初始提交的同一处理器上,工作队列不是一定的;tasklet函数通常立即得到执行,但始终不会晚于下一个定时器滴答;工作队列函数延迟执行的时...原创 2018-07-30 15:50:42 · 1085 阅读 · 0 评论 -
延时执行与定时器
1. jiffies头文件 <linux/jiffies.h> 通常是 unsigned long 格式 64位,也可能是32位(在32位机器上),表示系统最近一次启动到当前的时间间隔。2. HZHZ表示每秒产生的时钟滴答数; HZ 是一个体系依赖的值,在<linux/param.h> 中定义或该文件包含的某个子平台相关文件中。 它与内核源码目录的”....原创 2018-07-27 21:08:16 · 789 阅读 · 0 评论