博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MTK系统错误类型
阅读量:2221 次
发布时间:2019-05-08

本文共 1401 字,大约阅读时间需要 4 分钟。

mastervon 发表于 2010-8-14 9:55:00系统错误中有两种典型的分类,一种是CPU触发的系统错误,另外一种是软件触发的系统错误。(其实我觉得这两种错误没什么区别。靠!什么叫CPU触发?什么叫软件触发?这两种分类有意义吗?对我们调试有帮助吗?答案是一点帮助都没有!我debug了这么多年,不觉得分类有什么用。其实“触发”不如换成用“检测”,一种是CPU检测到的,另外一种是软件中检测到的。管它是CPU触发还是软件触发,魔挡杀魔,佛挡杀佛!)

 

1.CPU触发(检测到)的系统错误

Undefined Instruction Exception(没有定义的指令错误)

本来的意思是指:ARM解析不了当前指令如何执行,换句话说,当前指令不属于ARM指令集。但是大家看到这里会感到纳闷,这种错误怎么可能会发生?除非ADS和RVCT等编译器出现bug,否则这种错误不可能没有在编译阶段里揪出来。这些编译器吃白米饭的么,连是不是ARM的指令集里的指令还不知道吗?所以出现这种错误一定不是代码的问题。出现这种错误很可能是程序跑飞,跑到data区域执行了。跑飞的原因有很多,如函数指针问题,或者局部变量溢出把堆栈中的函数返回地址写坏了,等等
Software Interrupt Exception
给大家先看看有趣的东东,MTK介绍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一种了。
Pre-fetch Abort Exception
预取指令错误是指CPU从RAM或者ROM中读取指令时,所提供的地址是个非法地址(RAM和ROM以外的地址)。一般是函数指针问题,或者局部变量溢出把堆栈中的函数返回地址写坏了,等等
Data Abort Exception
数据错误是指访问RAM或ROM中数据时,所提供的地址是个非法地址(RAM和ROM以外的地址)。一般是数据指针出现问题。
2.软件触发(检测到)的系统错误

Assert Error

程序员在代码中埋的Assert语句,在MTK代码中有3种:ASSERT(),EXT_ASSERT(),EXT_ASSERT_DUMP()
Fatal Error
可以理解为写在KAL层中的Assert语句,这是MTK的System工程师在KAL层埋的一些Assert语句。KAL层是系统的适配层,因此在这层里面出现问题,一般都是与系统的异常相关。如:ctrl buffer不足,外部队列满了之类的错误
System Lockup
文档中是写系统挂起。小弟不才,debug这么多年都未能与这种异常邂逅。

本文来自:我爱研发网(52RD.com) - R&D大本营

详细出处:

转载地址:http://vyifb.baihongyu.com/

你可能感兴趣的文章
夯实Java基础系列1:Java面向对象三大特性(基础篇)
查看>>
夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!
查看>>
夯实Java基础系列4:一文了解final关键字的特性、使用方法,以及实现原理
查看>>
Java 未来行情到底如何,来看看各界人士是怎么说的
查看>>
IntelliJ 平台 2020 年路线图
查看>>
走进JavaWeb技术世界8:浅析Tomcat9请求处理流程与启动部署过程
查看>>
微软宣布加入 OpenJDK,打不过就改变 Java 未来!
查看>>
MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
查看>>
为什么强烈推荐 Java 程序员使用 Google Guava 编程!
查看>>
先搞清楚这些问题,简历上再写你熟悉Java!
查看>>
【数据库】关系数据库和非关系数据库的优缺点
查看>>
【数据结构】动态顺序表
查看>>
Markdown的基础使用
查看>>
Linux基础命令
查看>>
【C语言】交换两个数值的三种方法
查看>>
【数据结构】栈的简单理解以及对栈的基本操作
查看>>
【数据结构】简单不带环迷宫的实现(用栈实现)
查看>>
【C语言】简单的了解递归(求斐波那契,n的阶乘,字符串长度,把一个整型(无符号),转化为字符型并打印出来)
查看>>
【数据结构】动态栈的实现
查看>>
【数据结构】简单的迷宫(用递归实现)
查看>>