11.5 中断编程 前面所讲述的驱动程序中都没有涉及中断处理,而实际上,有很多 Linux的驱动 都是通过中断的方式来进行内核和硬件的交互。中断机制提供了硬件和软件之间异步 传递信息的方式。硬件设备在发生某个事件时通过中断通知软件进行处理。中断实现 了硬件设备按需获得处理器关注的机制,与查询方式相比可以大大节省 CPU 资源的 开销。 在此将介绍在驱动程序中用于申请中断的 request_irq()调用,和用于释放中断的 free_irq()调用。request_irq()函数调用的格式如下所示: int request_irq(unsigned int irq, void (*handler)(int irq, void *dev_id, struct pt_regs *regs), unsigned long irqflags, const char * devname, oid *dev_id); 其中 irq是要申请的硬件中断号。在 Intel平台,范围是 0~15。 参数 handler 为将要向系统注册的中断处理函数。这是一个回调函数,中断发生 时,系统调用这个函数,传入的参数包括硬件中断号、设备 id以及寄存器值。设备 id 就是在调用 request_irq()时传递给系统的参数 dev_id。 参数 irqflags是中断处理的一些属性,其中比较重要的有 SA_INTERRUPT。这个 参数用于标明中断处理程序是快速处理程序(设置 SA_INTERRUPT)还是慢速处理 程序(不设置 SA_INTERRUPT)。快速处理程序被调用时屏蔽所有中断。慢速处理程 序只屏蔽正在处理的中断。还有一个 SA_SHIRQ属性,设置了以后运行多个设备共享 中断,在中断处理程序中根据 dev_id区分不同设备产生的中断。 参数 devname为设备名,会在/dev/interrupts中显示。 参数 dev_id 在中断共享时会用到。一般设置为这个设备的 device 结构本身或者 NULL。中断处理程序可以用 dev_id 找到相应的控制这个中断的设备,或者用 irq2dev_map()找到中断对应的设备。 释放中断的 free_irq()函数调用的格式如下所示。该函数的参数与 request_irq()相 同。
2023-09-19 23:04:18 10.86MB 嵌入式 Linux
1
这个一般人用不到,但是做嵌入式的人可能会用到,用到时这个东西一时半会很难弄出来,放在这儿希望能帮到一些人
2023-06-19 18:26:31 1KB excel VBA 16进制与浮点数相互转换
1
编译环境:keil c51 代码功能:51单片机通过串口向电脑端Python发送一个16进制数 注:代码内包含工程和代码文件
1
该转换器能完成浮点数和16进制数的转换,对于数据处理和数据分析很有帮助
2023-02-21 16:39:39 24KB 数据类型转换
1
2017-7-6 V1.3 修改内部存储地址范围,可以生成FFFFFFFF以内数据(原来只能生成FFFF以内数据) 改进了按位补"0"功能,根据起始数的位数(例如"0000"),生成的数据自动补齐4位 2011-5-26 V1增加了终止号选择(个数) 2011-5-11 初版V0 1. 十六进制序列.exe 为本人自行编写,如有其它需求请联系! 2. 输入十六进制起始号、终止号,自动列出之间序列号弹出Excel表显示; 3. 可在序列号前、后增加其它文本;
2022-09-06 21:09:15 38KB 16进制数 自动生成
1
二、打包成安装包
2022-04-12 19:36:24 750KB xx
1
因为本人从事软件测试岗位,经常会碰到软件软件版本号通过CAN报文.的形式发出来,所以就需要ASCII和16进制之间进行转换来确认软件版本是否有问题,有需要的拿去用吧 PS:做了界面美化和布局美化
2022-02-07 19:02:15 24.21MB c# ascii码表 16进制
1
C语言浮点数转换四字节16进制数工具,将浮点数转化为四字节。
2022-01-20 13:30:49 7KB 转换工具
1
Labview将4字节16进制数转换成10进制数小程序
2021-12-23 09:46:43 750KB xx
1
编译环境:Keil C51 注:压缩包包含整个代码及工程文件 配套性:与同具有“配套1”的Python代码配套使用
1