中断与设备驱动.ppt_第1页
中断与设备驱动.ppt_第2页
中断与设备驱动.ppt_第3页
中断与设备驱动.ppt_第4页
中断与设备驱动.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中断与设备驱动 (Interrupt & Driver) 罗海波 嵌入精彩生活 目录 n设备驱动简介 n中断与中断处理 n函数的可重入问题 n实例分析(自学) 嵌入精彩生活 设备驱动、Bootloader与BSP 嵌入精彩生活 典型的设备(控制器+驱动器) 嵌入精彩生活 一般设备驱动的组成 嵌入精彩生活 设备的缓冲区管理 nP183图6-5示例UART的FIFO缓冲区 nP6-6 环形缓冲区 q如何用C代码实现一个环形缓冲区? 嵌入精彩生活 中断 嵌入精彩生活 中断的分类 n硬件中断 q来自外部(针对CPU内核),如串口收到数据、击键等。 n软件中断 q通过在程序中执行的中断指令来实现,又称软陷。 q80X86:int q68000:trap qARM:SWI n异常 qCPU在运行过程中引起的事件,如数据中止、未定义指令等 嵌入精彩生活 中断的处理过程 n一般由硬件、软件两部分共同完成。 嵌入精彩生活 调用栈帧和中断栈帧的区别 最后一个参数 入口参数 函数返回地址 局部变量 局部变量 保存的调用函数 的寄存器值 中断返回地址 程序状态字 局部变量 保存的中断前所 用到的寄存器 调用栈帧结构 中断栈帧结构 Q: 1. 如何理解这两个栈帧结构? 2. 调用子函数时,子函数内部如何访问局部变 量和入口参数? 3. 函数调用返回时,SP指针会发生什么? 4. 为何中断栈帧没有参数传递? 嵌入精彩生活 C中的中断处理 嵌入精彩生活 C中的中断处理 n处理器为何能异步响应中断? n中断何时可能会延迟或者丢失? qCPU指令周期使然 q不支持中断嵌套(默认) q临界资源访问时,为了保护,关中断。 n如何加快中断的响应? qISR分上下部分 q避免调用耗时的函数 q避免浮点运算 q避免不必要的函数调用 嵌入精彩生活 用C编写中断服务程序应该注意的 n不能返回值 n不能向ISR传递参数 nISR应该尽可能的短小精悍 nprintf(char *ipFormatString,)函数会带来重 入和性能的问题,不能在ISR中使用。(在 ARM平台上由于半主机机制,速度会更慢! ) q其他不可能重入的函数不可使用 q耗时的函数避免调用 q大量的运算尽量避免 嵌入精彩生活 没有OS的中断服务队列 自己编写一个该队列的 分配和释放函数 嵌入精彩生活 函数的可重入问题 n都是“并发访问”惹得祸! 嵌入精彩生活 函数如何可重入? 局部变量的访问在重入时 不会引起冲突 全局数据的访问在重入时 往往容易引起冲突 临界资源的访问在重入时 往往容易引起冲突 嵌入精彩生活 不可重入函数的互斥保护 n关中断 n关调度(禁止做任务切换) n利用信号量 嵌入精彩生活 重入函数的伪问题 n有的函数虽然不可重入,但是根本不会重入, 故,没必要保护。 q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论