1、中断检测:
arm 架构下,中断监测部分的代码是需要用户自己开发的,可以参考ambaIntrCtl.c,需要实现函数xxxIntLvlVecChk、 xxxIntLvlVecAck、xxxIntLvlChg、xxxIntLvlEnable、xxxIntLvlDisable和 xxxIntDevInit,在函数xxxIntDevInit中...
最近花了一个月的时间终于把PXA270的板子Bootloader 部分整出来了,颇费周折;其中的很长一段时间,一直被arm可执行程序的执行机理迷惑:搞不懂arm的映象文件组成、代码重定位、地址重映射remap等,网上查了N多资料看了N多技术帖子总算整清楚。如今写出来整理一下思路,也为其它初始进入arm系统设计的兄弟们提供点资料借鉴,少走些弯路是好。 arm学习过程中,初学者最难突破的应当是arm映象文件形态和arm启动代码分析了...
一、arm中断的相关硬件知识: 正常的程序执行流程发生暂时的停止时,称之为异常。例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。arm体系结构中的异常,与8位/16位体系结构的中断有很大的相似之处,但异常与中断的概念并不完全等同。 arm的异常有七种 复位异常、SWI异常、未定义指令异常、数...
我用的arm是atmel公司的9200,arm920T内核,开发环境是ADS1.2 以前写好了程序中断接收正常,前段时间再试发现收不到中断或者提示收到伪中断,搞了两天没结果后我把伪中断向量也指向了需要的中断服务程序,这样倒是可以进入中断服务程序了,不过新的问题又出现了,连续接收几个中断后(有时候一两个,有时候可以接收几十个)程序就死掉了。这是什么原因导致的啊?有没有什么解决的好办法?多谢各位大侠指点,感激不尽! (同样的程...
arm体系结构中,把复位、中断、快速中断等都看作‘异常’,当这些‘异常’发生时,CPU会到固定地址处去找指令,他们对应的地址如下: 地址 异常类型 进入时的工作模式 0x00000000 Reset Supervisor 0x00000004 Und Undefined 0x...
当一个程序正常执行过程中,CPU可能检测到有某个中断源发出中断请求,这时arm硬件实现了程序强制跳转,在这之前保存了相关信息,以便程序正常返回。如果是发生了Reset中断,程序实现系统初始化设置。 开始比较难以理解的是中断产生后,程序都进行了哪些操作。我就从跟踪PC作为分析的主线。以发生FIQ中断为例。(只以ROM起始地址为0为例,不为0的情况参照存储地址映射) 最简单的是中断发生后,PC=0x08,在此地址处存放...