
Linux驱动开发
文章平均质量分 87
嵌入式Linux设备驱动基础知识
PanGC2015
程序员
展开
-
Linux设备驱动基础04之异步通知
一、基础简介使用阻塞/非阻塞方式读写设备驱动时,都需要应用程序主动发起,对于非阻塞方式来说还需通过poll函数不断轮询。这种情况下更好的解决方案是,设备驱动主动向应用程序发出通知,报告自己可以访问,然后应用程序再读写设备驱动。Linux中这种机制叫做异步通知,异步通知的核心是信号,类似硬件中断,信号是软件层次上的软中断。设备驱动可以主动向应用程序发送信号,通知应用程序可以访问,应用程序中需要注册信号的处理函数,并将本进程号告诉内核。在arch/xtensa/include/uapi/asm/signa原创 2021-06-30 08:57:12 · 247 阅读 · 0 评论 -
Linux设备驱动基础03之阻塞与非阻塞IO
一、基础简介在应用程序中读/写(read/write)设备节点时,比如dev/xxx,需要用到阻塞和非阻塞IO两种设备访问模式,在编写驱动时一定要考虑到阻塞和非阻塞。默认情况下,应用程序对设备驱动的读取方式时阻塞式的。IO是指Input/Output,即应用程序对驱动设备的输入/输出操作。当应用程序对设备驱动进行操作的时候,如果不能立即获取到设备资源,阻塞式IO会将应用程序对应的线程挂起,直至设备资源可以获取为止;非阻塞式IO对应的线程不会挂起,而是要么一直轮询等待,直至设备资源可以使用,要么直接放弃返原创 2021-06-27 16:46:22 · 459 阅读 · 0 评论 -
Linux设备驱动基础02之中断处理
一、中断处理基础中断系统是一个处理器的重要且基本的组成部分,可以极大提高CPU的执行效率,一般中断系统框架组成如下图:原创 2021-06-20 16:03:32 · 815 阅读 · 0 评论 -
Linux设备驱动基础01之并发与竞态
一、基础概念Linux是个多任务操作系统,存在多个任务同时访问同一片内存区域的情况,可能会相互覆盖这段内存中的数据,最终造成内存数据混乱,严重的话会导致系统崩溃。驱动开发中要注意对共享资源的保护,需要管理对共享资源的并发访问。Linux系统产生并发访问的几个主要原因: (1)、多线程并发访问, Linux 是多任务系统,在应用程序中多线程访问是最基本的原因。 (2)、抢占式并发访问,从2.6版本开始, Linux内核支持抢占,也就是说调度程序可以在任意时刻调度正在运行的线程,从而运行其他的线程。 (3)原创 2021-06-18 21:38:14 · 209 阅读 · 0 评论