摘要:
1.概述 内核定时器是内核用来控制在未来某个时间点,调度执行某个函数的一种机制。 2.相关数据结构 struct timer_list 3.内核定时器函数 - DEFINE_TIMER:静态定义并初始化定时器 - TIMER_INITIALIZER(_function, _expires, _dat 阅读全文
2017年2月17日
摘要:
1.概述 Linux中的工作队列机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程,并可以根据当前系统cpu的个数创建线程的数量。工作队列是一中将工作推后执行的形式。把工作推后,交由一个内核线程执行。允许被重新调度,甚至是睡眠。共分为三种形式: - 共享工作队列:Lin 阅读全文
摘要:
1.简介 等待队列实现在事件上的条件等待:希望等待特定事件的进程把自己放进合适的等待队列,并放弃控制权。可用于: - 中断处理 - 进程同步 - 定时 2.等待队列头数据结构 3.进程状态 - TASK_TUNNING:可运行状态 - TASK_INTERRUPTIBLE:可中断睡眠状态 - TAS 阅读全文
摘要:
1.中断概念 中断时一种电信号,由硬件设备产生,然后再由中断控制器向处理器发送相应的信号。处理器一经检测到该信号,便中断自己当前正在处理的工作,转而去处理中断。此后,处理器会通知操作系统已经产生中断。不同的设备,对应的中断不同,而每个中断都通过一个唯一的数字标识,这些值通常被称为中断请求线。 2.L 阅读全文
2017年2月16日
摘要:
1.原子操作 - 概念:该操作绝不会在执行完毕前被任何任务或事件打断 - 使用注意:在原有的字符设备驱动的open函数中增加原子操作判断相关的代码,在关闭函数中释放原子操作。其余不变。也可以放在write中 - 相关api省略 2.信号量 - 概念:信号量在创建时初始化,表示同时有几个任务访问该信号 阅读全文
摘要:
1.硬件原理图 由图可知,led1,led2,led3,led4,分别对应GPB5,GPB6,GPB7,GPB8,由s3c2440芯片手册可得到如下图所示,分别配置GPBCON和GPBDAT即可 2.open接口 int first_chrdev_open(struct inode *inode, 阅读全文
摘要:
1.Linux设备驱动特点 在Linux系统中,一切硬件、软件设备都视为文件。 设备驱动程序功能: - 初始化和释放设备 - 把数据从内核传递到硬件和从硬件读取数据 - 读取应用程序传送给设备文件的数据和回送应用程序请求的数据 - 检测和处理设备出现的错误 2.Linux系统3大类设备特点 - 字符 阅读全文
摘要:
1.模块加载程序结构 - 模块加载函数: static int _init init_function(void); module_init(init_function); - 模块卸载函数: static void _exit exit_function(void); module_exit(ex 阅读全文