ARM的三种中断调试方法简介.
ARM体系的7种工作模式

ARM体系的7种工作模式一、ARM体系的CPU有以下7种工作模式:1、用户模式(usr):正常的程序执行状态2、快速中断模式(fiq):3、中断模式(irq):4、管理模式(svc):操作系统使用的保护模式5、系统模式(sys):运行具有特权的操作系统任务6、数据访问终止模式(abt):数据或指令预取终止时进入该模式7、未定义指令终止模式(und):未定义的指令执行时进入该模式注解:可以通过软件来进行模式切换,或者发生各类中断、异常时CPU自动进入相应的模式;除用户模式外,其余6种工作模式都属于特权模式;特权模式中除了系统模式以外的其余5种模式称为异常模式;大多数程序运行于用户模式;进入特权模式是为了处理中断、异常、或者访问被保护的系统资源;二、ARM体系的CPU有两种工作状态1、ARM2、THumbCPU上电处于ARM状态三、寄存器ARM有31个通用的32位寄存器,6个程序状态寄存器,共分为7组,有些寄存器是所有工作模式共用的,还有一些寄存器专属于每一种工作模式;R13——栈指针寄存器,用于保存堆栈指针;R14——程序连接寄存器,当执行BL子程序调用指令时,R14中得到R15的备份,而当发生中断或异常时,R14保存R15的返回值;R15——程序计数器;快速中断模式有7个备份寄存器R8—R14,这使得进入快速中断模式执行很大部分程序时,甚至不需要保存任何寄存器;其它特权模式都含有两个独立的寄存器副本R13、R14,这样可以令每个模式都拥有自己的堆栈指针和连接寄存器;四、当前程序状态寄存器(CPSR)CPSR中各位意义如下:T位:1——CPU处于Thumb状态,0——CPU处于ARM状态;I、F(中断禁止位):1——禁止中断,0——中断使能;工作模式位:可以改变这些位,进行模式切换;五、程序状态保存寄存器(SPSR)当切换进入某一个特权模式时,SPSR保存前一个工作模式的CPSR值,这样,当返回前一个工作模式时,可以将SPSR的值恢复到CPSR中;六、模式切换当异常发生,CPU进入相应的异常模式时,以下工作是由CPU自动完成的:1、在异常模式的R14中保存前一工作模式的下一条即将执行的指令地址;2、将CPSR的值复制到异常模式的SPSR中;3、将CPSR的工作模式设为该异常模式对应的工作模式;4、令PC值等于这个异常模式在异常向量表中的地址,即跳转去执行异常向量表中的相应指令;从异常工作模式退回到之前的工作模式时,需要由软件来完成以下工作:1、将异常模式的R14减去一个适当的值(4或8)后赋给PC寄存器;2、将异常模式SPSR的值赋给CPSR;。
嵌入式系统8ARM程序的调试分析解析

I 指令集模拟器的调试方法
利用主机(一般是PC)的资源构建一个虚拟的目标机系统,该系统通过解释执行目标处理器的二进制代码来仿真运行目标程序VM为指令集综合模拟器ARM Armulator-模拟运行ARM指令系统Palm OS 的模拟器-模拟运行68K指令系统
6
II 操作系统模拟器的调试方法
西安电子科技大学计算机学院
32
断点的类型
硬件断点在ARM中直接设定watchpoint中的地址,当ARM运行到指定的地址时,就进入Debug状态数目受EmbeddedICE中的Watchpoint数目(2个)的限制;但是,可以在任何地方设置断点软件断点改变存储器中的ARM指令为一个特殊的数据X(ARM的未定义指令),同时,设置watchpoint中的断点数据也为X,当ARM把X数据作为指令读入的时候,ARM就进入Debug状态数目不受限制,但是,软件断点是通过替换系统的断点地址的指令实现的,所以,软件断点只能在可写的存储器的地址中设置(比如:RAM),而不能在ROM(比如:Flash)中设置
10
2.3 在目标机上驻留监控软件
1、原理(大使兼间谍)被调试的应用程序放在RAM中;监控程序(Monitor)放在ROM(flash)中;监控程序负责按主机的要求控制应用程序的执行节奏;并随时将目标机上的各种状态报告给主机。需要时可将控制权全部交给应用程序。
11
Q:单步调试怎么实现?
2、基于调试代理(Angel)的调试方法
驻留Angel是一段驻留在开发板ROM中的一段程序,系统Boot后,Angle接管整个系统并初始化系统和通信接口。通信Angel通过一定的通信协议与主机的Debugger通信。下载和移交Debugger通过特定的命令通知Angel将用户调试的程序下载到目标板的SDRAM中的特定地址,并可以按照Debugger的要求将控制权交给相应的代码地址。断点和数据上传的实现对于用户设置的断点,Angel会在断点的位置插入一条软陷指令,当用户的程序执行到断点时,系统会产生一个软陷异常。中断后可以由Angel接管系统,并将系统当前的寄存器和某些内存值传给主机Debugger。
ARM7(sc44b0)外部中断笔记

ARM7(sc44b0)外部中断笔记对于sc44b0它也是一种单片机,一种比较高级的单片机而已,所以他也跟51单片机一样有外部中断,不同51单片机的是,他有8个外部中断源,对应的是8个管脚,(51只有两个,int0和int1,P3.3和P3.4),分别是Port G八个管脚。
而对于外部中断4 \5\6\7很多都是共用寄存器,他们是通过或逻辑公用一个中断请求线。
下面就具体来说说使用外部中断的一些必要的配置。
一,对管脚的配置,因为Port G有三种功能用法,要通过对rPCONG(端口G配置寄存器)的配置来选用Port G的外部中断的功能。
其配置表如下所以应该将其配置为11(设置为中断功能状态);二,中断模式的选择,中断模式有两种,FIQ(快速中断模式)和 IRQ(中断模式)两种,一般没有特殊要求都用IRQ模式即可。
可以通过对中断模式寄存器rINTMOD配置获得。
如表下三,是否允许中断,即中断使能位。
通过对中断控制寄存器INTCON的配置即可,如表下通过对中断控制寄存器的配置即可,可以看出只要让intcon的【1】位置零即可使中断使能。
四,外部中断方式的选择,低电平或上升沿触发呢,还是别的,这就要对外部中断方式寄存器(EXTINT)的配置,其表如下由上表可知,如果要用下降沿触发,就可将EXTINT 的值给0x22222222;将所有的外部中断都设置为下降沿触发。
五,当中断捕抓到以后,要引起什么变化呢?或者说用什么来捕抓呢?在sc44b0中用了两个寄存器来捕抓,一个中断挂起寄存器(INTPND),和外部中断挂起寄存器(EXINTPND),一开始不明白挂起是什么意思,后来才懂,差不多就相当与51单片机的标志位一样,当中断发生后,就将挂起寄存器的对应的某一位置一或置零,外部中断挂起寄存器如表下中断挂起寄存器:当中断产生后,是将INTPND的【21】位置一的;所以,判断有无外部中断,就可以通过读取挂起寄存器对应的为,即可知道是否有无中断。
IAR串口Simulator仿真中断的调试实现

图1
4. 设置中断仿真 指定一个中断,使它循环 2000 次后模拟一次中断。选择 Simulator-Interrupts 菜单项,弹出如图 2 所示 对话框, 在其中单击 New 按钮,弹出图 3 对话框。按以下内容对其中断进行设置。 Interrup : 填入 IRQ 用于指定所采用的中断。 Description:这里 IAR 软件会自动填好相应的内容使仿真器能够正确模拟中断,用户在使用时请不要修 改。
C-SPY 提供了 2 个系统宏函数__setSimBreak 和__orderInterrupt,可在设置宏函数 execUserSetup()中 调用, 用于自动设置断点和中断定义, 避免用户进行手动配置。 为此可以采用宏文件 SetupAdvanced.mac 取代前面的 SetupSimple.mac.这样在 C-SPY 启动时将自动设置断点,完成中断定义,用户还不必手动 在 Interrupts 和 Breakpoints 对话框中进行输入。注意,在加载 SetupAdvanced.mac 宏文件之前,应该 先去除以前定义的断点和中断。 SetupAdvanced.mac 宏文件源程序见后。
图2
图3 First activation:填入 4000,其是指定首次激活中断的时间,当周期计数器达到指定值时中断被激活。 Repeat interval:填入 2000,其是中断的重复间隔,以时钟周期为单位。 Hold time:选择 Infinite,功能是保持时间。 Probability%:填入 100,功能是指定产生中断的可能性,100%表示将按指定的频率产生中断,采用其他 百分数将按随机频率产生中断。在运行过程中,C-SPY 处于等待状态,直到循环计数器超过激活时间而 产生依次中断,每循环 2000 次重复产生中断。
ARM简介及编程

ARM简介及编程ARM公司网址介绍ARM的相关文章ARM's Way Processor Core OverviewThe Palm Device of the Future: ARM Processing1.ARM简介(摘录)ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。
技术具有性能高、成本低和能耗省的特点。
适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。
ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。
利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者。
目前,总共有30家半导体公司与ARM签订了硬件技术使用许可协议,其中包括Intel、IBM、LG半导体、NEC、SONY、菲利浦和国民半导体这样的大公司。
至于软件系统的合伙人,则包括微软、升阳和MRI等一系列知名公司。
ARM架构是面向低预算市场设计的第一款RISC微处理器。
2.产品介绍ARM提供一系列内核、体系扩展、微处理器和系统芯片方案。
由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行(理论上如此)。
典型的产品如下。
①CPU内核--ARM7:小型、快速、低能耗、集成式RISC内核,用于移动通信。
-- ARM7TDMI(Thumb):这是公司授权用户最多的一项产品,将ARM7指令集同Thumb扩展组合在一起,以减少内存容量和系统成本。
同时,它还利用嵌入式ICE调试技术来简化系统设计,并用一个DSP增强扩展来改进性能。
该产品的典型用途是数字蜂窝电话和硬盘驱动器。
--ARM9TDMI:采用5阶段管道化ARM9内核,同时配备Thumb扩展、调试和Harvard总线。
在生产工艺相同的情况下,性能可达ARM7TDMI的两倍之多。
ADS实验调试方法

图 9 : Execute 下拉列表命令 下面我们分别执行各个命令: Go :让系统运行,执行结果如图 10 所示:
图 10:运行 Go
Stop:停止系统的运行,如图 11 所示。
图 11:运行 Stop 当运行 Stop 命令后,光标就会停在运行到的地方。 Step In:进入函数体内执行。如图 12 所示,表示还没有进入之前,图 13 表示进入后的 运行情况。
图 3 :ARM Link 的 Options 设置 Options 中的 Image entry point 表示映像的入口点 (地址) , boot.o(boot) 表示系统从目标
文件 boot.o 中 booLayout 设置 在 Layout 中, Place at beginning of image 下的 Object/symbol 表示目标文件,Section 表 示目标文件中的代码段。这与 Options 中的 Place at beginning of image 相同。 2、执行 ProjectMake ,也可以直接用快捷键 F7 进行编译、连接生成映像文件。如图 5 所示,执行后,会出现编译、连接后的结果,如图 6 所示。
图 30 :中断调试 2、执行 Go,让系统运行起来,之后再停止下来,我们可以看到程序进入等待中断 的状态。如图 31 所示:
图 31 :进入等待中断状态 3、在中断服务子程序里面设置断点,如图 32 所示:
图 32 :设置断点 4 、再执行 Go,让系统运行起来,当通过按键产生中断后,系统就会跳到中断服务子程 序里面执行,并停止在断点处。如图 33 所示:
Toggle Breakpiont:设置断点,如图 20 所示,设置了断点,图 21 表示运行 Go 后的运 行情况。
ARM中断程序的原理和实现

ARM中断程序的原理和实现引言:中断是计算机系统中一种特殊的事件,它可以打断当前正在执行的程序,并执行一段特定的代码。
在ARM架构中,中断主要由两部分组成:中断处理程序和中断控制器。
本文将介绍ARM中断程序的原理和实现,包括中断的基本概念、中断的分类、中断的处理过程以及中断控制器的实现方式。
一、中断的基本概念中断可以看作是外部设备向CPU发送一个请求的一种方法。
当外部设备发生一些特定的事件时(如按键、时钟周期等),它会产生一个中断请求信号,通知CPU去处理相应的事件。
CPU收到中断请求信号后,会暂停当前的任务,保存现场并跳转到中断处理程序来处理中断。
二、中断的分类1.外部中断:外部中断是由外设产生的中断信号,如GPIO、串口等。
当外设产生中断请求信号时,中断控制器会将信号传递给CPU,触发相应的中断处理程序。
2.软件中断:软件中断是由软件主动触发的中断,通过软件指令可以触发中断控制器发送中断请求信号给CPU。
软件中断可以用于实现系统调用、任务切换等功能。
三、中断的处理过程1.中断请求:外部设备发生特定事件,产生中断请求信号。
中断请求信号会被中断控制器接收并传递给CPU。
2.中断响应:CPU收到中断请求信号后,会立即响应中断,并执行中断处理程序。
在响应中断之前,CPU需要保存当前的现场(包括程序计数器PC、寄存器等)。
3.中断处理:CPU跳转到中断处理程序的入口地址,开始执行中断处理程序。
中断处理程序通常用来处理中断事件,并根据需要进行中断服务例程的调用。
4.中断返回:中断处理程序执行完毕后,CPU会根据中断处理程序的返回指令返回到原来的程序中,并恢复之前保存的现场。
同时,中断控制器会清除中断请求信号,使其能够接受新的中断请求。
四、中断控制器的实现方式ARM架构中,中断控制器常用的实现方式包括级联式中断控制器和向量式中断控制器。
1.级联式中断控制器:级联式中断控制器是一种层级结构的中断控制器。
它包含多个级别的中断控制器,每个级别对应一组中断请求。
ARM7内核的中断屏蔽方法

ARM7内核的中断屏蔽方法ARM7内核的中断屏蔽方法是通过设置与中断相关的寄存器来实现的。
ARM7内核提供了多个中断屏蔽寄存器,可以分别对不同的中断进行屏蔽设置。
下面将对常见的中断屏蔽方法进行详细介绍,包括通过CPSR寄存器和INTCON寄存器进行中断屏蔽。
1.CPSR寄存器屏蔽中断ARM7内核的CPSR寄存器(Current Program Status Register)是一个32位寄存器,其中的第7位(I-bit)用于控制中断的屏蔽。
当I位为1时,中断被屏蔽,当I位为0时,中断不被屏蔽。
通过修改CPSR寄存器的I位,可以实现对中断的屏蔽和开启。
中断屏蔽可以通过以下方式进行设置:(1)通过修改CPSR寄存器的I位:在特权级别下,可以直接修改CPSR寄存器的I位,来控制中断的屏蔽。
(2)通过使用屏蔽和解屏函数:ARM提供了两个专门的汇编指令用于修改CPSR寄存器的I位,分别是CPSID和CPSIE。
CPSID指令用于屏蔽中断,CPSIE指令用于解除中断的屏蔽。
2.INTCON寄存器屏蔽中断ARM7内核还提供了INTCON寄存器(Interrupt Control Register)用于屏蔽和控制外部中断的响应。
INTCON寄存器是一个32位的寄存器,每个位对应一个外部中断的屏蔽位。
当一些屏蔽位为1时,对应的中断将被屏蔽,当屏蔽位为0时,对应的中断不被屏蔽。
通过修改INTCON寄存器的屏蔽位,可以实现对外部中断的屏蔽和开启。
中断屏蔽可以通过以下方式进行设置:(1)直接修改INTCON寄存器的屏蔽位:在特权级别下,可以通过直接写入INTCON寄存器来修改外部中断的屏蔽位。
(2)使用特殊函数来修改INTCON寄存器的屏蔽位:ARM提供了特殊的函数用于修改INTCON寄存器的屏蔽位。
需要注意的是,中断屏蔽方法只能屏蔽外部中断,对于内部中断(如软中断、异常中断)无法进行屏蔽。
同时,ARM7内核的中断屏蔽方法也存在优先级的问题,当多个中断同时发生时,只会响应优先级最高的中断请求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ARM的三种中断调试方法简介
1嵌入式软件开发流程参照嵌入式软件的开发流程。
第一步:工程建立和配置。
第二步:编辑源文件。
第三步:工程编译和链接。
第四步:软件的调试。
第五步:执行文件的固化。
在整个流程中,用户首先需要建立工程并对工程做初步的配置,包括配置处理器和配置调试设备。
编辑工程文件,包括自己编写的汇编和C语言源程序,还有工程编译时需要编写的链接脚本文件,调试过程中需要编写存储区映像文件和命令脚本文件,以及上电复位时的程序运行
1 嵌入式软件开发流程
参照嵌入式软件的开发流程。
第一步:工程建立和配置。
第二步:编辑源文件。
第三步:工程编译和链接。
第四步:软件的调试。
第五步:执行文件的固化。
在整个流程中,用户首先需要建立工程并对工程做初步的配置,包括配置处理器和配置调试设备。
编辑工程文件,包括自己编写的汇编和C语言源程序,还有工程编译时需要编写的链接脚本文件,调试过程中需要编写存储区映像文件和命令脚本文件,以及上电复位时的程序运行入口的启动程序文件。
对后四种文件的理解很重要,其作用解释如下。
(1) 链接脚本文件:在程序编译时起作用。
该文件描述代码链接定位的有关信息,包括代码段,数据段,地址段等,链接器必须使用该文件对整个系统的代码做正确的定位。
在SDRAM中调试程序、在FLASH中调试或固化后运行的链接脚本文件应加以区分。
(在IDE开发环境中使用扩展名*.ld)
(2)命令脚本文件:在SDRAM中调试程序时起作用。
在集成环境与目标连接时、软件调试过程中以及目标板复位后,有时需要集成环境自动完成一些特定的操作,比如复位目标板、清除看门狗、屏蔽中断寄存器、存储区映射等。
这些操作可以通过执行一组命令序列来完成,保存一组命令序列的文本文件称为命令脚本文件(在 IDE开发环境中使用扩展名*.cs)。
(3)存储区映像文件:在SDRAM中调试程序时起作用。
在软件调试过程中访问非法存储区在部分处理器和目标板上会产生异常,如果异常没有处理,则会导致软件调试过程无法继续,为了防止以上问题并调整仿真器访问速度以达到最合适的水平,提供这样一种用于描述各个存储区性质的文件叫存储区映像文件(在IDE开发环境中使用扩展名*.map)。
在程序的调试过程中可以选择使用存储区映像文件*.map和命令脚本文件*. cs 配合程序的调试。
(4) 启动文件:它主要是完成一些和硬件相关的初始化的工作,为应用程序做准备。
一般,启动代码的第一步是设置中断和异常向量;第二步是完成系统启动所必须的寄存器配置;第三步设置看门狗及用户设计的部分外围电路;第四步是配置系统所使用的存储区分配地址空间;第五步是变量初始化;第六步是为处理器的每个工作模式设置栈指针;最后一步是进入高级语言入口函数(Main函数)。
2 中断程序设计
中断调试方面可以采用类似矢量中断动态处理方式,让中断对应的确定地址代码调转到RAM的固定地址处,定义一个函数指针指向该固定地址,就可以随时通过替换RAM固定地址处的代码,实现动态改变中断处理函数。
具体方法是:
(1)将中断源函数指针定义在RAM中相对的固定地址,建立中断矢量表;
void SetInterrupt (U32vector, void (*handler)())
{
InterruptHandlers[vector] = handler;
}
(2)在程序中,调用具体某中断源的中断处理函数;
如: SetInterrupt(IIC_INT,IICWriteIsr);
/* 声明IIC中断处理函数,其中IIC_INT为 IIC中断源序号,IICWriteIsr为IIC的写中断处理函数 */
(3)在0x18处的IRQ或0x1C处的FIQ中断入口函数中,获取中断源、清除中断挂起标志、通过已定义的中断源函数指针进入用户具体某中断处理程序。
void ISR_IrqHandler(void)
{
IntOffSet = (unsigned int)INTOFFSET;
Clear_PendingBit(IntOffSet>>2) ;
(*InterruptHandlers[IntOffSet>>2])();
// 调用具体某中断处理程序
}
采用动态的中断处理方法,在中断源较多的情况下,中断响应时间和程序性能得到优化。
另外,在调试方面,此处理方法具有便于跟踪调试的优点,并且根据需要,可以方便变换中断处理函数。
3 中断调试
软件调试可以在SDRAM中或FLASH中进行。
在SDRAM中,读写方便,访问速度快。
一般软件调试应在RAM中完成,但当RAM空间小于FLASH程序空间,程序只能在FLASH运行和调试时,或者用户希望了解程序在FLASH中实际运行情况时,就可以在FLASH中进行程序调试。