




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈阳理工大学课程设计专用纸摘要随着移动设备的流行和发展,嵌入式系统已经成为一个热点。当前,嵌入式技术的应用越来越广泛,从航天科技到民用产品,嵌入式产品的身影无处不在,而这些嵌入式产品的核心处理器决定了产品的市场和性能。在32位嵌入式处理器市场中,ARM处理器占有很大的份额。而嵌入式系统的功能越来越强大,实现也越来越复杂,随之出现的就是可靠性大大降低。本文所要研究的就是基于ARM嵌入式系统的中断处理程序设计与实现。关键字嵌入式,ARM,中断沈阳理工大学课程设计专用纸目录第1章设计目的1第2章设计思路221ARM实验箱硬件资源概述222ARM的中断原理3第3章关键技术431ARM9处理器432嵌入式C语言开发技术533ADS开发环境634中断流程735数据结构8351中断优先级产生模块8352中断优先级836寄存器工作原理9361程序状态存储器PSR9362中断模式9363中断请求寄存器10364中断屏蔽寄存器1037实验详解10371源请求寄存器SRCPND10372中断模式寄存器INTMOD12373中断屏蔽寄存器INTMSK12374中断请求寄存器INTPND13375中断偏移寄存器INTOFFSET13376子中断源请求寄存器SUBSRCPND13377子中断屏蔽寄存器INTSUBMSK14第4章程序流程15第5章主要源代码1651主函数设计1652核心板的初始化1653定时器初始化程序17第6章运行结果及结论1861运行结果1862结论18参考文献19沈阳理工大学课程设计专用纸NO1第1章设计目的通过本次课程设计,能够熟悉基于ARM微处理器的嵌入式系统开发的过程,掌握嵌入式系统开发的知识。能够熟练掌握ARM9的中断原理,能够对S3C2410的中断资源及其相关中断寄存器进行合理配置,同时掌握S3C2410的中断编程方法。沈阳理工大学课程设计专用纸NO2第2章设计思路21ARM实验箱硬件资源概述ELARM830型教学实验系统属于一种综合的教学实验系统,该系统采用了目前在国内普遍认同的ARM920T核,32位微处理器,实现了多模块的应用实验。它是集学习、应用编程、开发研究于一体ARM实验教学系统。用户可根据自己的需求选用不同类型的CPU适配板,兼容ARM7与ARM9,而不需要改变任何配置,同时,实验系统上的TECH_V总线能够拓展较为丰富的实验接口板。用户在了解TECH_V标准后,更能研发出不同用途的实验接口板。除此之外,在实验板上有丰富的外围扩展资源(数字、模拟信号发生器,数字量IO输入输出,语音编解码、人机接口等单元),可以完成ARM的基础实验、算法实验和数据通信实验、以太网实验9。图21ELARM830实验教学系统的功能框图沈阳理工大学课程设计专用纸NO322ARM的中断原理在ARM中,有两类中断,一类是IRQ,一类是FIQ,IRQ是普通中断,FIQ是快速中断,在进行大批量的复制、数据转移等工作时,常使用此类中断。FIQ的优先级高于IRQ。同时,它们都属于ARM的异常模式,当一旦有中断发生,不管是外部中断,还是内部中断,正在执行的程序都会停下,PC指针进而跳入异常向量的地址处,若是IRQ中断,则PC指针跳到0X18处,若是FIQ中断,则跳到0X1C处。异常向量地址处,一般存有中断服务子程序的地址,所以,接下来PC指针跳入中断服务子程序中。当完成中断服务子程序后,PC指针会返回到被打断的程序的下一条地址处,继续执行程序。这就是ARM中断操作的基本原理8。但是,通常由于生产ARM处理器的各厂家都集成了很多中断请求源,比如,串口中断、AD中断、外部中断、定时器中断、DMA中断等等,所以,很多中断可能同时请求中断,因此,为区分它们,更准确的完成任务,这些中断都有相应的优先级别,以及当发生中断时,它们都有相应的中断标志位,通过在发生中断是判断中断优先级,和访问中断标志位的状态来识别到底哪一个中断发生了。沈阳理工大学课程设计专用纸NO4第3章关键技术31ARM9处理器新一代的ARM9处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。ARM9系列包括三种处理器ARM926EJS、ARM946ES和ARM968ES1。1、时钟频率的提高ARM7处理器采用3级流水线,而ARM9采用5级流水线。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时有5个指令在执行。2、指令周期的改进指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,性能的提高在30左右。ALOADS指令和STORES指令指令周期数的改进最明显的是LOADS指令和STORES指令。从ARM7到ARM9这两条指令的执行时间减少了30。指令周期的减少是由于ARM7和ARM9两种处理器内的两个基本的微处理结构不同所造成的。ARM9有独立的指令和数据存储器接口,允许处理器同时进行取指令和读写数据。这叫做改进型哈佛结构。而ARM7只有数据存储接口,它同时用来取指令和数据访问。5级流水线引入了独立的存储器和写回流水线,分别用来访问存储器和将结果写回寄存器。B互锁技术当指令需要的数据因为以前的指令没有执行完而没有准备好就会产生管道互锁。当管道互锁发生时,硬件会停止这个指令的执行,直到数据准备好为止。虽然这种技术会增加代码执行时间,但是为初期的设计者提供了巨大的方便。编译器以及汇编程序员可以通过重新设计代码的顺序或者其它方法来减少管道互锁的数量。沈阳理工大学课程设计专用纸NO5C分支指令ARM9和ARM7的分支指令周期是相同。而且ARM9TDMI和ARM8ES并没有对分支指令进行预测处理。3、ARM9特点7以ARM9ES为例介绍ARM9处理器的特点。其主要特点如下A32BIT定点RISC处理器,改进型ARM/THUMB代码交织,增强性乘法设计。支持实时REALTIME调试;B片内指令和数据SRAM,而且指令和数据的存储器容量可调;C片内指令和数据告诉缓冲器CACHE容量从4K字节到1M字节;D设置保护单元PROTCCTIONUNIT,非常适合嵌入式应用中队存储器进行分段和保护;E采用AMBAAHB总线接口,为外设提供统一的地址和数据总线;F支持外部协处理器,指令和数据总线有简单的握手信令支持;G支持标准基本逻辑单元扫描测试方法学,而且支持BIST;H支持嵌入式跟踪宏单元,支持实时跟踪指令和数据。32嵌入式C语言开发技术不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力。无疑,汇编语言具备这样的特质。但是,由于汇编语言开发的复杂性,它并不是嵌入式系统开发的一般选择。而与之相比,C语言一种“高级的低级”语言,则成为嵌入式系统开发的最佳选择3。在C语言中,宏是产生内嵌代码的唯一方法,对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法。嵌入式开发的核心就是利用最少的资源最高的效的实现所需功能。C语言在嵌入式中控制系统开发中的优势汇编语言有其执行效率高的优点,但其可移植性和可读性差,以及它本身就是一种编程效率低下的低级语言,这些都使他的编程和维护极不方便,从而导致整个系统的可靠性也较差,而使用C语言进行嵌入式控制系统的开发,有着汇编语言不可比拟的优势。1、编程调试灵活方便沈阳理工大学课程设计专用纸NO6C语言具有灵的编程方式,当前几乎看了所有的嵌入式控制系统都有相应的C语言级别的仿真调试系统,使得调试十分方便。2、生成的代码编译效率高。3、编写的程序完全模块化。4、可移植性好一种语言所编写的C语言程序,只需将部分与相关的地方进行适度的修改,就可方便的移植到另外一种系列上。5、便与项目维护管理用C语言发的代码便与开发小组计划项目,灵活管理,分工工作,以及后期维护,基本上可以杜绝因开发人员变化而给项目进度或后期维护或升级带来影响。33ADS开发环境ADSARMDEVELOPERSUITE,是在1993年由METROWERKS公司开发,是ARM处理器下最重要的开发工具。ADS是全套的实时开发软件工具,包编译器生成的代码密度和执行速度优异。可快速低价地创建ARM结构应用。ADS对汇编、C/C、JAVA支持的均很好,是目前最成熟的ARM开发工具。很多ARM开发软件也是借用的ADS的编译器2。1、ADS包括三种调试器AXDARMEXTENDEDDEBUGGERARM扩展调试器;ARMSDARMSYMBOLICDEBUGGERARM符号调试器;与老版本兼容的WINDOWS或UNIX下的ARM调试工具,ADW/ADUAPPLICATIONDEBUGGERWINDOWS/UNIX。其中AXD不仅拥有低版本ARM调试器的所有功能,还新添了图形用户界面,更方便的视窗管理数据显示,格式化和编辑以及全套的命令行界面。该产品还包括REALMONITORTM可以再前台调试的同时断点续存并且在不中断应用的情况下读写内存跟踪调试工具。2、组成介绍A编译器ADS提供多种编译器,以支持ARM和THUMB指令的变异。ARMCC是ARMC编译器TCC是THUMBC编译器沈阳理工大学课程设计专用纸NO7ARMCPP是ARMC编译器TCPP是THUMBC编译器ARMASM是ARM和THUMB的编译器B链接器ARMLINK是ARM链接器。该命令既可以将编译得到的一个或多个目标文件和相关的一个或多个库文件进行链接,生成一个可执行文件,也可以将多个目标文件部分链接成一个目标文件,以供进一步的链接。C符号调试器ARMSD是ARM和THUMB的符号调试器。它能够进行源码级的程序调试。用户可以再用C或汇编语言写的代码中进行单步调试、设置断点、查看变量值和内存单元的内容。DFROMELF将ELF格式的文件转换为各种格式的输出文件,包括BIN格式的映像文件、MOTOROLA32位S格式影像文件、INTEL32位格式映像文件和VERILOG十六进制文件。EARMARARMAR是ARM库函数生成器,它将一系列ELF格式的目标文件以库函数的形式集合在一起。用户可以把一个库传递给一个链接器以代替几个ELF文件。FCODEWARRIORCODEWARRIOR集成开发环境IDE为管理和开发项目提供了简单多样化的图形用户界面,用户可以使用ADS的CODEWARRIORIDE为ARM和THUMB处理器开发用C、C或者ARM汇编语言编写的程序代码。GC和C库ADS提供ANSIC库函数和C库函数,支持被编译的C和C大面。用户可以把C库中的与目标相关的函数作为自己应用程序中的一部分,重新进行代码的实现。34中断流程图31中断流程图沈阳理工大学课程设计专用纸NO835数据结构351中断优先级产生模块其中32个中断请求的优先级逻辑有一个ROTATIONBASED仲裁位组成6个一级仲裁位和一个二级位4,如图32所示图32优先级生成模块352中断优先级每个仲裁器可以处理6个中断请求,基于一位仲裁器模式ARB_MODE和两位选择信号ARB_SEL如果ARB_SEL位为00B,优先级顺序是REQ0,REQ1,REQ2,REQ3,REQ4,ANDREQ5。如果ARB_SEL位为01B,优先级顺序是沈阳理工大学课程设计专用纸NO9REQ0,REQ2,REQ3,REQ4,REQ1,ANDREQ5。如果ARB_SEL位为10B,优先级顺序是REQ0,REQ3,REQ4,REQ1,REQ2,ANDREQ5。如果ARB_SEL位为11B,优先级顺序是ISREQ0,REQ4,REQ1,REQ2,REQ3,ANDREQ5。注意REQ0总是具有最高优先级,REQ5总是具有最低优先级,改变ARB_SEL位只能改变REQ1REQ4的优先级。如果ARB_MODE位被置1,ARB_SEL不会自动改变,这会使仲裁器处于固定优先级模式(注意即使处于这种模式,还是可以通过手动改变ARB_SEL位来配置优先级)。如果ARB_MODE位被置1,ARB_SEL改变以变换优先级,例如,如果REQ1被服务,ARB_SEL自动变成01把REQ1变为最低优先级,ARB_SEL的详细规则如下如果REQ0或REQ5被服务,ARB_SEL位不会变如果REQ1被服务,ARB_SEL位置01B如果REQ2被服务,ARB_SEL位置10B如果REQ3被服务,ARB_SEL位置11B如果REQ4被服务,ARB_SEL位置00B36寄存器工作原理361程序状态存储器PSR如果PSR中的F位被置1,CPU不接收FIQ快速中断,同样如果I位PSR被置1,CPU不接收IRQ中断,因此中断控制器能够通过将PSR的F和I位和相应的INTMSK中的位清零来接收中断6。362中断模式ARM920T有两种中断模式FIQ和IRQ。在中断请求时所有的中断源决定使用哪个模式。沈阳理工大学课程设计专用纸NO10363中断请求寄存器S3C2410有两种中断请求寄存器源请求寄存器SRCPND和中断请求寄存器INTPND。这些请求寄存器揭示了一个中断是否正在请求。当中断源请求中断服务时SRCPND寄存器中的相应位肯定被置1,然而,中断仲裁之后则只有INTPND寄存器的某1位被自动置1。即使该中断被屏蔽,SRCPND寄存器中的相应位也会被置1,但是INTPND寄存器将不会改变。当INTPND寄存器的某位被置1,且I位或者F位清零时中断服务即开始。SRCPND和INTPND寄存器能够被读和写,因此服务函数必须通过向SRCPND和INTPND中相应位写入“1”来清除中断请求条件。364中断屏蔽寄存器通过中断屏蔽寄存器的哪个屏蔽位被置1可以知道哪个中断被禁止。如果INTMSK的某个屏蔽位为0,此中断将会被正常服务。如果中断源产生了一个请求,SRCPND中的源请求位被置位,即使相应屏蔽位为1。37实验详解中断控制器有5个控制寄存器源请求寄存器、中断模式寄存器、屏蔽寄存器、优先级寄存器和中断请求寄存器。所有中断请求首先寄存入SRCPND,它们基于中断模式寄存器分为两组FIQ请求和IRQ请求。多IRQ的仲裁过程基于优先级寄存器。371源请求寄存器SRCPNDSRCPND由32位组成,每一位与一个中断源相关。如果某个中断源产生中断请求并等待中断服务,某位将会被置1。相应地,寄存器也指出了哪个中断源在请求服务。注意SRCPND中的每个位是由中断源自动置位的,与INTMASK寄存器无关。此外,SRCPND寄存器不会被优先级逻辑影响。在中断服务函数中必须清零SRCPND的相应位,否则,中断控制器会认为同一个源的另一个中断,换句话说,如果SRCPND的某个位仍然为1,中断控沈阳理工大学课程设计专用纸NO11制器会认为又有一个有效的新的中断在请求服务。清零相应位的时机由用户需求决定。如果想要从同一个中断源接收另外一个有效的中断,应该在刚进入ISR的时候清零,然后使能中断。可以通过向SRCPND写入数据来清零某位,但是注意只有SRCPND中为1的位会被写成写入数据中的位,而SRCPND中为0的位不会改变如图33。图33源请求寄存器SRCPND沈阳理工大学课程设计专用纸NO12372中断模式寄存器INTMOD此寄存器由32个对应每个中断源的位组成。如果某位被置1,相应的中断被设置为FIQ模式,否则,设置为IRQ模式。注意只有1个中断源能够被设置为FIQ模式,因此INTMOD中只有1位能被置1。373中断屏蔽寄存器INTMSK每个中断源对应一个位,如果某位被置1,CPU不会响应相应的中断请求意即使这种情况下,SRCPND的位还是会置1,位置0,相应中断请求可以被响应。如图34。沈阳理工大学课程设计专用纸NO13图34中断屏蔽寄存器INTMSK374中断请求寄存器INTPND每个位显示了相应的中断请求没有被屏蔽并等待中断服务是否具有最高的优先级。由于INTPND寄存器处于优先级逻辑之后,只有1位能被置1,只有这个中断请求向CPU产生IRQ中断。在中断服务程序中,可以通过读此寄存器来知道哪个中断源正在被服务。同SRCPND寄存器一样,寄存器必须在中断服务程序中清零SRCPND清零之后。每个中断源对应一个位,如果某位被置1,CPU不会响应相应的中断请求,如果被置0,相应中断请求可以被响应。(见图35)图35中断请求寄存器INTPND注意1、如果FIQ模式中断发生,INTPND的相应位不会TURNON,因为INTPND寄存器仅在IRQ模式下有效。2、清除INTPND寄存器时的注意事项INTPND寄存器通过写1来清零某位。如果某位从1写成0,INTPND寄存器和INTOFFSET寄存器可能有非期望值出现。因此,请不要向INTPND寄存器中为1的位写入0,最方便的清除INTPND寄存器的方法就是向INTPND寄存器中写入当前INTPND寄存器的值如INTPNDINTPND。375中断偏移寄存器INTOFFSETINTOFFSET寄存器中的值表示哪个中断请求在INTPND寄存器之中。此位将会在清零SRCPND和INTPND之后自动清零。注意FIQ中断不影响此寄存器,因为它只在IRQ模式下有效。沈阳理工大学课程设计专用纸NO14376子中断源请求寄存器SUBSRCPND可以通过向SUBSRCPND写入数据来清零某位,但是注意只有SUBSRCPND中为1的位会被写成写入数据中的位,而SUBSRCPND中为0的位不会改变。图36显示了寄存器的相关位。图36子中断源请求寄存器SUBSRCPND377子中断屏蔽寄存器INTSUBMSK此寄存器有11位,每一位对应一个中断源,如果某位被置1,说明此位对应的中断请求不被CPU响应注意即使在这种情况下,SUBSRCPND寄存器还是被置1的,如果屏蔽位为0,则相应中断请求能被响应。如图37。沈阳理工大学课程设计专用纸NO15图37子中断屏蔽寄存器INTSUBMSK第4章程序流程该程序的流程是,按下程序启动后,初始化定时器1,设定定时器的中断时间,然后,等待定时器中断,当定时器中断到来时,就会进入定时器中断服务子程序,而中断服务子程序会把LED1和LED2灯熄灭或点亮,从现象中看到LED1和LED2灯忽闪一次,则说明定时器发生了一次中断。最后,关闭中断请求,等待下一次的中断的到来。为使CPU响应中断,在中断服务子程序执行之前,必须打开ARM920T的CPSR中的I位,以及相应的中断屏蔽寄存器中的位5。程序流程图如下沈阳理工大学课程设计专用纸NO16开始主函数初始化WHILE循环主程序定时器1初始化定时器1中断发生定时器1服务子程序LED1和LED2交替闪烁关闭定时器1的中断中断图41程序流程图第5章主要源代码51主函数设计主函数就是通过一个WHILE(1)死循环来等待中断的发生INCLUDEINCLUDE“INCCONFIGH“VOIDMAINVOIDTARGET_INIT/完成核心板的初始化WHILE1/WHILE函数死循环等待外部中断的发生沈阳理工大学课程设计专用纸NO1752核心板的初始化对ARM9核心板进行初始化,包括时钟频率初始化、使用的引脚功能初始化、异常处理的初始化、定时器的初始化和UART串口的初始化。VOIDTARGET_INITVOIDMMU_INIT/MMU的初始化CHANGECLOCKDIVIDER1,1/124CHANGEMPLLVALUE0XA1,0X3,0X1/FCLK2028MHZISR_INITPORT_INIT/端口初始化TIMER1_INIT/定时器初始化TIMER1INT_INITUART_INIT0,115200/UART串口的初始化UART_SELECT053定时器初始化程序通过定时器来计数,先对定时器进行初始化,通过时钟的周期设置定时器多长时间计满一次从而产生中断,执行中断处理。VOIDTIMER1_INITVOIDRGPGCONRGPGCON/配置GPG口为信号输出RGPGDATRGPGDAT|0X300RTCFG0255/PRESCALER0255RTCFG104RTCNTB148828/在PCLK50MHZ下,1秒钟的记数值RTCNTB150000000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 阿克苏市中石化2025秋招笔试模拟题含答案安全环保与HSE岗
- 葫芦岛市中石油2025秋招笔试模拟题含答案财务与审计岗
- 天水市中石化2025秋招笔试模拟题含答案油品分析质检岗
- 安庆市中石化2025秋招面试半结构化模拟题及答案油田勘探开发岗
- 六安市中储粮2025秋招战略研究博士岗高频笔试题库含答案
- 海南生物会考试题及答案
- 2025年西藏辅警考试真题及答案
- 2025年场景设计考试题及答案
- 国家能源大理白族自治州2025秋招面试专业追问及参考电气工程岗位
- 六盘水市中石化2025秋招面试半结构化模拟题及答案财务与审计岗
- 教科版五年级上册科学期中测试卷附答案(夺分金卷)
- 《环氧树脂应用》课件
- 中职第1课 社会主义在中国的确立和探索试题
- 2025年辽宁省交投集团招聘笔试参考题库含答案解析
- 2024年版高尔夫球场场地租赁及会员服务协议3篇
- 香港 信托合同范本
- 建筑物拆除场地清理垃圾外运施工方案
- 国家开放大学《Web开发基础》形考任务实验1-5参考答案
- 断亲协议书模板
- 中秋国庆假期安全教育
- GB/T 19808-2005塑料管材和管件公称外径大于或等于90mm的聚乙烯电熔组件的拉伸剥离试验
评论
0/150
提交评论