
linux系统驱动开发
文章平均质量分 90
隨意的風
从事10+年的技术开发,结交天下软件研发朋友,共同探讨技术、共同进步。
展开
-
【genius_platform软件平台开发】第七十三讲:linux系统驱动开发之-中断处理之DSB指令
指令名 |功能描述-------- | -----DMB | 数据存储器隔离。DMB 指令保证: 仅当所有在它前面的存储器访问操作都执行完毕后,才提交(commit)在它后面的存储器访问操作。DSB|数据同步隔离。比 DMB 严格: 仅当所有在它前面的存储器访问操作都执行完毕后,才执行在它后面的指令(亦即任何指令都要等待存储器访 问操作——译者注)ISB|指令同步隔离。最严格:它会清洗流水线,以保证所有它前面的指令都执行完毕之后,才执行它后面的指令。......原创 2022-07-09 23:05:29 · 601 阅读 · 0 评论 -
【genius_platform软件平台开发】第七十一讲:linux系统驱动开发之-中断处理之工作队列(workqueue)
在刚开始介绍中断处理的时候,曾经贴出下面这张图图中描述了中断处理中的下半部分都有哪些机制,以及如何根据实际的业务场景、限制条件来进行选择。可以看出:这些不同的实现之间,有些是重复的,或者是相互取代的关系。也正因为此,它们之间的使用方式几乎是大同小异,至少是在API接口函数的使用方式上,从使用这的角度来看,都是非常类似的。这篇文章,我们就通过实际的代码操作,来演示一下工作队列(workqueue)的使用方式。在内核中中的所有工作项,是通过串在一起的,并且等待着操作系统中的挨个取出来处理。这些线程,可以是原创 2022-06-20 10:58:10 · 232 阅读 · 0 评论 -
【genius_platform软件平台开发】第七十二讲:linux系统驱动开发之-patchelf修改动态库链接器的方法
1.2 运行运行 patchelf -h 能够得到如下信息:从上面的功能描述中可以看到,patchelf 的主要功能与动态库解析器、rpath、动态库本身相关,可能在解决一些动态库链接程序执行的问题时能够用到。1.3 应用-使用自定义的动态库目录 修改 以使用中的动态库, 的翻译 这篇文章中翻译了 ld.so 动态库链接器执行的过程,其中查找动态库的步骤如下:2. 同名动态库修改应用在应用的开发过程中,在进行多部门合作开发是,大家都会使用第三方库,经常会出现同一个库,不同的版本产原创 2022-06-19 17:09:37 · 4363 阅读 · 0 评论 -
【genius_platform软件平台开发】第七十讲:linux系统驱动开发之-中断号、中断向量和中断处理函数
- 假如存在这样一个需求:应用程序需要监控某个硬件GPIO口的电平状态,当发生变化时,应用程序就做出相应的动作。利用之前已经介绍的知识,是可以完成这个需求的。比如:在驱动程序中不停的读取GPIO口的状态,一旦发生变化,就把新的电平状态通过信号发送到应用层。这样的方式称作:`轮询`- 轮询方式的缺点显而易见:轮询的时间间隔应该是多少毫秒(or 微秒),才比较合适呢?轮询太慢:可能会丢失信号;轮询太快:消耗 CPU 资源!因此,在实际的产品中,用中断触发的方式才是更切合实际的选择!本文所有的描述和测试,原创 2022-05-19 16:23:19 · 1106 阅读 · 0 评论 -
【genius_platform软件平台开发】第六十九讲:linux系统驱动开发之-系统和驱动之间的中断处理函数
在中断处理函数中,发送信号给应用层,以此来通知应用层处理响应的中断业务1. 驱动程序创建相应目录和文件$ cd /linux-4.15/drivers$ mkdir my_driver_interrupt_signal$ touch my_driver_interrupt_signal.c1.1 my_driver_interrupt_signal.c文件内容如下#include <linux/module.h>#include <linux/kernel.h&原创 2022-05-17 10:40:20 · 351 阅读 · 0 评论 -
【genius_platform软件平台开发】第六十八讲:linux系统驱动开发之-驱动程序发送信号给应用程序
大家好,我是峰哥,今天给大家解说一下:驱动层发送信号给应用程序。在上一篇文章中,我讲过:应用层发送指令来控制驱动层的GPIO状态,【genius_platform软件平台开发】第六十七讲:linux系统驱动开发之-GPIO设备驱动编写,控制的方向是从应用层到驱动层。1. kill 命令和信号简单讲下kill命令和信号,是Linux 操作系统的信号,来“杀死”一个进程的命令:$ kill -9 <进程的 PID>指令功能是:向指定的某个进程发送一个信号 9,这个信号的默认功能.原创 2022-05-13 13:22:55 · 990 阅读 · 1 评论 -
【genius_platform软件平台开发】第六十七讲:linux系统驱动开发之-应用程序发送信号给驱动程序
写一个有实际应用功能的驱动程序:在驱动程序中,初始化 GPIO 设备,自动创建设备节点;在应用程序中,打开 GPIO 设备,并发送控制指令设置 GPIO 口的状态;1. 简述目的我们目标是编写一个驱动程序模块:mygpio.ko。当这个驱动模块被加载的时候,在系统中创建一个 mygpio 类设备,并且在 /dev 目录下,创建 N个设备节点:(N取决于程序中设置的数值)。应用程序中,可以打开某个GPIO设备,通过发送控制指令,来设置 GPIO的状态$ ls /dev/my*/dev/my.原创 2022-05-11 17:31:40 · 761 阅读 · 0 评论