cpu异常处理机制

上传人:ji****72 文档编号:45654917 上传时间:2018-06-18 格式:PDF 页数:11 大小:385.85KB
返回 下载 相关 举报
cpu异常处理机制_第1页
第1页 / 共11页
cpu异常处理机制_第2页
第2页 / 共11页
cpu异常处理机制_第3页
第3页 / 共11页
cpu异常处理机制_第4页
第4页 / 共11页
cpu异常处理机制_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《cpu异常处理机制》由会员分享,可在线阅读,更多相关《cpu异常处理机制(11页珍藏版)》请在金锄头文库上搜索。

1、Application Report ZHCA072 November 2009TI C64x+ DSP内核异常处理机制的应用内核异常处理机制的应用 崔晶 TI通用数字信号处理系统技术支持 摘要摘要 很多 DSP 工程师都会遇到程序跑飞,系统死机等一系列复杂棘手的问题。特别是一些软件问 题很难复现,毫无规律,甚至需要系统运行几天或者在特定的场景下才会出现。而问题出来后要 么连不上仿真器,要么连上仿真器后 PC 指针早已跑飞,很难找到线索解决问题。德州仪器(TI) 的 C64x+ DSP 内核是 C64x DSP 内核的扩展升级版,其中显著的两个特点是增加了异常 (Exception)和内存保护

2、(Memory Protection)机制。这个两个机制可以配合使用,用来检 测、报告和处理一些错误。比如在运行过程中如果 CPU 读写了片内的程序段或者 ROM 空间就可 以产生一个异常中断,这个时候就可以查看系统的调用堆栈,分析错误原因。本文将介绍异常处 理和内存保护机制的原理和典型应用,旨在对 C64x+ DSP 工程师有所帮助,在实际工作中借助异 常处理和内存保护机制定位调试并最终解决问题。 内容内容 1 异常(异常(Exception)处理机制)处理机制.2 2 C64x+ DSP 异常中断的四种类型异常中断的四种类型.3 2.1 外部不可屏蔽异常中断和外部可屏蔽异常中断 .3 2.

3、2 内部不可屏蔽异常中断 .3 2.3 软件异常中断.3 3 异常处理机制是如何工作的异常处理机制是如何工作的.3 3.1 使能异常中断.4 3.2 异常中断产生和标志位置位.4 3.3 响应异常中断.4 3.4 异常中断服务程序.4 4 异常处理机制的典型应用异常处理机制的典型应用.5 4.1 C64x+的内存保护.5 4.2 内存保护触发异常中断的具体实现 .6 5 总结总结.10 参考文档参考文档.10 图图 图图 1. C64x+ DSP 中断控制器示意图中断控制器示意图.2 图图 2. 异常中断使能示意图异常中断使能示意图.4 图图 3. 内存保护页属性寄存器内存保护页属性寄存器 M

4、PPA.5 1 ZHCA072 1 异常(异常(Exception)处理机制)处理机制 在 DSP算法比较复杂的系统,比如包括多路音视频编解码、网络以及和主机通过 PCI通信的 DSP系统中,我 们常常会遇到系统稳定性的问题。例如系统运行一段时间以后发生死机问题,主机无法通过 PCI和 DSP通信,也 不知道具体是哪个线程出问题?而且问题很难复现,不是每次必现,甚至要跑一周才会出问题。或者说对特殊的码 流进行编码时系统会死机,但又不知道问题具体出在编码算法的什么地方?这个时候工程师最希望的是能捕捉到出 错时的状态,最好能有地方记录错误原因和检查出错前的函数调用堆栈。在发生死机之后,我们往往连不

5、上仿真器 不能通过 JTAG 查看 DSP的相关寄存器来分析出错的原因。如果连上了仿真器,又发现 DSP常常停在 ROM或一些 无效的地址空间,很难找到线索来判断到底是在哪个函数或环节出了问题。而有了异常处理机制,我们就可以在程 序中注册一个异常中断服务程序, 当 DSP运行出错或内存保护机制检测到错误时会跳转到该异常中断服务程序, 同时相关的寄存器会记录和报告错误的原因。C64x+ DSP异常处理机制可以捕捉到的异常包括 CPU 内部的异常 (如访问非法地址、执行非法指令)和 CPU 之外的异常等等。 在产品的开发和测试阶段,我们可以在异常中断服务程序里加上调试打印信息和死循环。通过调试打印

6、信息我 们可以知道有异常发生。死循环可以保证程序不跑飞,并可以成功连上仿真器。连上仿真器后,我们就可以通过检 查函数调用堆栈和具体的异常相关寄存器很快的找到问题产生的原因。在最终的产品软件中,我们也可以通过异常 处理机制做一些系统的自恢复处理,比如在异常中断服务程序里复位 DSP,或者发信号给主机报告 DSP异常请求 主机做整个系统复位等等。 传统的 C64x DSP的中断控制器可以输出三种中断信号给 CPU:复位中断、不可屏蔽中断(NMI)和可屏蔽中 断(INT4INT15)(注:不是所有的 C6000 DSP 都支持 NMI)。如图 1 所示 C64x+ DSP的中断控制器增加了一个 可屏

7、蔽异常中断信号(EXCEP)的输出。如果使能了异常处理机制,不可屏蔽中断 NMI就被当做是一个不可屏蔽 异常信号(EXCEP);如果没使能 EXCEP,不可屏蔽中断 NMI就和 C64x DSP的 NMI一样被当做一个中断信号直 接输出给 CPU。EXCEP和 NMI中断(不使能异常时)共享一个中断矢量,也就是说它们在中断矢量表的位置是相 同的。 异常处理机制用来支持错误检测,并可以产生异常中断(EXCEP),这样就可以用相应的中断服务程序处理具 体的异常错误。 图图 1. C64x+ DSP 中断控制器示意图中断控制器示意图 2 TI C64x+ DSP内核异常处理机制的应用 ZHCA072

8、 2 C64x+ DSP 异常中断的四种类型异常中断的四种类型 C64x+ DSP 内核的异常包括以下四种类型: ? 外部(内核之外)产生的可屏蔽异常中断(EXF)。例如系统外设事件和内存保护触发的中断。 ? 外部(内核之外)产生的不可屏蔽异常中断(NXF)。就是 DSP的 NMI 引脚中断。 ? 内核产生的内部不可屏蔽异常中断(IXF)。 ? 软件(SWE和 SWENR指令)产生的软件异常中断(SXF)。 当异常产生时,我们可以通过读异常标志寄存器(EFR)来知道产生的异常中断的具体类型,并执行相应的中 断服务程序。关于异常标志寄存器的具体信息,请参考 spru732.pdf。 2.1 外部

9、不可屏蔽异常中断和外部可屏蔽异常中断外部不可屏蔽异常中断和外部可屏蔽异常中断 图 1 中所示的就是传统 C64x DSP的外部不可屏蔽中断 NMI,是由 DSP的 NMI 引脚触发。我们前面提到在 C64x+ DSP 中如果使能了异常处理机制,NMI 就被当做是异常中断,就是我们这里所说的外部不可屏蔽异常中断 (NXF)。 如图 1所示,通常我们可以把 DSP的 4号到 127 号中断事件通过中断选择器路由到 CPU 4至 15 号中断。同时 我们也可以根据自己的实际系统应用把 4号到 127 号中断事件通过异常组合器(Exception Combiner)路由到 CPU 的异常中断。在这种情况下,EVT127:4产生的中断就是 C64x+ DSP的外部可屏蔽异常中断(EXF)。比如实际的 系统中根本没有用到 DSP外设 McBSP,我们就可以在中断初始化的时候把 McBSP的接收或发送中断路由到异常 中断,如果系统运行过程中有 McBSP的接收或发送中断产生,这个中断就会被当做异常中断处理。图 1 的就是 这种应用的示例。通常我们会使能 L1P/L1D/L2 CPU 内存保护事件来触发异常中断,具体将在典型应用中介绍。 2.2 内部不可屏蔽异常中断内部不可屏蔽异常中断 内部不可屏蔽异常中断(IXF)是 C64x+ DS

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号