以文本方式查看主题
-
曙海教育集团论坛
(http://sun4.cn/bbs/index.asp)
--
MTK开发
(http://sun4.cn/bbs/list.asp?boardid=43)
----
MTK系统错误类型
(http://sun4.cn/bbs/dispbbs.asp?boardid=43&id=1906)
-- 作者:wangxinxin
-- 发布时间:2010-11-30 14:06:46
-- MTK系统错误类型
以下内容含脚本,或可能导致页面不正常的代码
<font face="宋体 "><strong>1.CPU触发(检测到)的系统错误</strong></font> <ul> <li><font face="宋体 ">Undefined Instruction Exception(没有定义的指令错误) 本来的意思是指:ARM解析不了当前指令如何执行,换句话说,当前指令不属于ARM指令集。但是大家看到这里会感到纳闷,这种错误怎么可能会发生?除非ADS和RVCT等编译器出现bug,否则这种错误不可能没有在编译阶段里揪出来。这些编译器吃白米饭的么,连是不是ARM的指令集里的指令还不知道吗?所以出现这种错误一定不是<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%E4%BB%A3%E7%A0%81">代码</span>的问题。出现这种错误很可能是程序跑飞,跑到data区域执行了。跑飞的原因有很多,如函数指针问题,或者局部变量溢出把堆栈中的函数返回地址写坏了,等等</font> <li><font face="宋体 ">Software Interrupt Exception 给大家先看看有趣的东东,<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=MTK">MTK</span>介绍SWI exception类型时写的:The software interrupt instruction (SWI) is used to enter Supervisor mode, usually to request a particular supervisor function. 借问各位大侠,从上面那段话能知道SWI是exception么?我实在是忍无可忍,甚至达到了抓狂的程度。看了上面的解释,完全搞不懂SWI与exception有丝毫关系。SWI其实可以解释为软件触发中断,但在MTK的系统中,不会用到这种软中断。所以假设软中断被触发了,一定是程序跑飞了。到此,大家终于明白SWI为什么也算是exception一种了。</font> <li><font face="宋体 ">Pre-fetch Abort Exception 预取指令错误是指CPU从RAM或者ROM中读取指令时,所提供的地址是个非法地址(RAM和ROM以外的地址)。一般是函数指针问题,或者局部变量溢出把堆栈中的函数返回地址写坏了,等等</font> <li><font face="宋体 ">Data Abort Exception 数据错误是指访问RAM或ROM中数据时,所提供的地址是个非法地址(RAM和ROM以外的地址)。一般是数据指针出现问题。</font><font face="宋体 "></font></li></ul><font face="宋体 "> <strong>2.</strong><strong>软件触发(检测到)的系统错误</strong></font> <ul><font face="宋体 "> <li>Assert Error 程序员在代码中埋的Assert语句,在MTK代码中有3种:ASSERT(),EXT_ASSERT(),EXT_ASSERT_DUMP() <li>Fatal Error 可以理解为写在KAL层中的Assert语句,这是MTK的System工程师在KAL层埋的一些Assert语句。KAL层是系统的适配层,因此在这层里面出现问题,一般都是与系统的异常相关。如:ctrl buffer不足,外部队列满了之类的错误</font> <li><font face="宋体 ">System Lockup</font></li></ul>
说明:
上面显示的是代码内容。您可以先检查过代码没问题,或修改之后再运行.