中断与设备驱动

中断与设备驱动

ID:39049775

大小:1.11 MB

页数:18页

时间:2019-06-24

中断与设备驱动_第1页
中断与设备驱动_第2页
中断与设备驱动_第3页
中断与设备驱动_第4页
中断与设备驱动_第5页
资源描述:

《中断与设备驱动》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、中断与设备驱动(Interrupt&Driver)罗海波robhappy@qq.com目录设备驱动简介中断与中断处理函数的可重入问题实例分析(自学)设备驱动、Bootloader与BSP典型的设备(控制器+驱动器)一般设备驱动的组成设备的缓冲区管理P183—图6-5示例UART的FIFO缓冲区P6-6环形缓冲区如何用C代码实现一个环形缓冲区?中断中断的分类硬件中断来自外部(针对CPU内核),如串口收到数据、击键等。软件中断通过在程序中执行的中断指令来实现,又称软陷。80X86:int68000:tra

2、pARM:SWI异常CPU在运行过程中引起的事件,如数据中止、未定义指令等中断的处理过程一般由硬件、软件两部分共同完成。调用栈帧和中断栈帧的区别最后一个参数入口参数……函数返回地址局部变量……局部变量保存的调用函数的寄存器值中断返回地址程序状态字局部变量保存的中断前所用到的寄存器调用栈帧结构中断栈帧结构Q:如何理解这两个栈帧结构?调用子函数时,子函数内部如何访问局部变量和入口参数?函数调用返回时,SP指针会发生什么?为何中断栈帧没有参数传递?C中的中断处理C中的中断处理处理器为何能异步响应中断?中断何

3、时可能会延迟或者丢失?CPU指令周期使然不支持中断嵌套(默认)临界资源访问时,为了保护,关中断。如何加快中断的响应?ISR分上下部分避免调用耗时的函数避免浮点运算避免不必要的函数调用用C编写中断服务程序应该注意的不能返回值不能向ISR传递参数ISR应该尽可能的短小精悍printf(char*ipFormatString,…)函数会带来重入和性能的问题,不能在ISR中使用。(在ARM平台上由于半主机机制,速度会更慢!)其他不可能重入的函数不可使用耗时的函数避免调用大量的运算尽量避免没有OS的中断服务队列

4、自己编写一个该队列的分配和释放函数函数的可重入问题都是“并发访问”惹得祸!函数如何可重入?局部变量的访问在重入时不会引起冲突全局数据的访问在重入时往往容易引起冲突临界资源的访问在重入时往往容易引起冲突不可重入函数的互斥保护关中断关调度(禁止做任务切换)利用信号量重入函数的伪问题有的函数虽然不可重入,但是根本不会重入,故,没必要保护。此函数是一个非递归函数,且:这个函数不会被ISR调用,且:这个函数只会在一个任务中被调用,其他任务不会调用此函数。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。