LPC2106 实现fiq中断控制灯闪烁,基础
上传时间: 2016-06-05
上传用户:yiyifei
随着国内工业化、数字化的迅速发展,嵌入式开发在IT行业中的重要性越来越显著。嵌入式开发领域对产品的功能性、稳定性、实时性等方面的要求也越来越高。 采用嵌入式实时操作系统作为开发平台,以高性能的嵌入式处理器为工业控制等领域的主控制器可以有效地提高系统的可靠性、实时性、和软件编程的灵活性。在嵌入式处理器方面,ARM构架已经在高性能、低功耗、低成本的嵌入式领域里占领先地位。而在嵌入式操作系统方面,适合国内发展方向的解决方案以及系统基础结构方面并不理想。首先,国外成熟的嵌入式实时操作系统大都成本高、结构复杂,不适合强实时应用;其次,因大部分实时操作系统不公开源码,使开发的产品存在安全隐患。而类似μC/OS-II的小型强实时嵌入式操作系统内核虽然具有低成本、易控制、小规模、高性能等特性,但这类系统的基础较为薄弱,面临产品化和商业化还有一定的距离。 本文针对这种情况,结合现有的操作系统内核理论及嵌入式强实时系统的特殊需求,特别是对μC/OS-Ⅱ的研究分析基础上,面向强实时应用,设计、构造了一种适合在32位ARM处理器环境下使用的内核。这样做的目的是为了提供一个基础牢固、值得信赖的基本平台。 本文研究工作主要集中在以下几个方面: 针对嵌入式环境中高效、简洁、易扩展、易剪裁的要求,对内核体系结构框架进行了设计。内核整体上采用分层结构,在各层中采用功能相对独立的模块:在最底层借鉴微核的原理,只提供最基本的功能模块。 针对系统快速和稳定的实时响应能力需求,为IRQ中断建立了统一的中断入口,采用合理的半嵌套工作方式;保留fiq为不可屏蔽中断,在快速反应场合使用;引入中断分段处理机制解决中断和任务的ITC机制共享,需要硬保护机制相互协调所引起的硬保护机制被隐性地泛滥使用问题。 针对应用提出的系统行为的可预测性需求,在调度算法方面采用基于优先级位图的抢占阈值调度算法,提高了处理器的利用率和任务集合的可调度性,减少了内核存储开销;在共享资源访问控制方面,以优先级天花板协议为依据,使用互斥事件解决优先级反转和死锁问题的发生。 为了保障系统的强实时性能,本文还对内核的时钟管理、内存管理等方面进行了设计。最后,通过实时性能测试,结果表明该实时内核有很好的强实时特性。
上传时间: 2013-04-24
上传用户:alia
ARM处理器的工作模式 ARM处理器状态 ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令;第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。但ARM微处理器在开始执行代码时,应该处于ARM状态。 ARM处理器状态 进入Thumb状态:当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。此外,当处理器处于Thumb状态时发生异常(如IRQ、fiq、Undef、Abort、SWI等),则异常处理返回时,自动切换到Thumb状态。 进入ARM状态:当操作数寄存器的状态位为0时,执行BX指令时可以使微处理器从Thumb状态切换到ARM状态。此外,在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。ARM处理器模式 ARM微处理器支持7种运行模式,分别为:用户模式(usr):ARM处理器正常的程序执行状态。快速中断模式(fiq):用于高速数据传输或通道处理。外部中断模式(irq):用于通用的中断处理。管理模式(svc):操作系统使用的保护模式。数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。系统模式(sys):运行具有特权的操作系统任务。定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。ARM处理器模式 ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。 除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式;其中除去用户模式和系统模式以外的5种又称为异常模式,常用于处理中断或异常,以及需要访问受保护的系统资源等情况。ARM寄存器 ARM处理器共有37个寄存器。其中包括:31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。以及6个32位状态寄存器。 关于寄存器这里就不详细介绍了,有兴趣的人可以上网找找,很多这方面的资料。异常处理 当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。当一个异常出现以后,ARM微处理器会执行以下几步操作:进入异常处理的基本步骤:将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。将CPSR复制到相应的SPSR中。根据异常类型,强制设置CPSR的运行模式位。强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。 ARM微处理器对异常的响应过程用伪码可以描述为: R14_ = Return LinkSPSR_= CPSRCPSR[4:0] = Exception Mode NumberCPSR[5] = 0 ;当运行于 ARM 工作状态时If == Reset or fiq then;当响应 fiq 异常时,禁止新的 fiq 异常CPSR[6] = 1PSR[7] = 1PC = Exception Vector Address异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:将连接寄存器LR的值减去相应的偏移量后送到PC中。将SPSR复制回CPSR中。若在进入异常处理时设置了中断禁止位,要在此清除。
上传时间: 2013-11-15
上传用户:hanbeidang
一、开发环境 1、开发板: AT91SAM7X256-EK 2、仿真器: SAM-ICE(ATMEL) 3、开发软件: ADS1.2 (ARM调试模式) 二、程序功能 1、程序目的:AT91SAM7X256的AIC功能验证与使用指导。 2、功能说明: 1).PIO 中断测试程序 --改变LED1的状态 2).IRQ0 中断测试程序 --改变LED1的状态 3).fiq 中断测试程序 --改变LED2的状态 4).software 中断测试程序 --改变LED3的状态 ---必须设为 内部 边沿触发方式 5).TC中断测试程序 --改变LED4的状态 ---2种模式都可以 6).其他中断见相应功能测试程序
上传时间: 2015-09-25
上传用户:exxxds
ARMask.The ARM has six operating modes: • User (unprivileged mode under which most tasks run) • fiq (entered when a high priority (fast) interrupt is raised) • IRQ (entered when a low priority (normal) interrupt is raised) • Supervisor (entered on reset and when a Software Interrupt instruction is executed) • Abort (used to handle memory access violations) • Undef (used to handle undefined instructions) * ARM Architecture Version 4 adds a seventh mode: • System (privileged mode using the same registers as user mode)
标签: unprivileged operating ARMask modes
上传时间: 2013-12-24
上传用户:bcjtao
VIP专区-嵌入式/单片机编程源码精选合集系列(48)资源包含以下内容:1. 51单片机上移植UCOSII,通过调试.2. dspgetway源代码.3. 针对三星ARM处理器的flash烧写程序.4. 优龙S3C2410平台的用ADS1.2进行编译的程序.5. 红外解码程序.6. at91sam7s64的一个应用.使用ads1.2编译器,实现usb口的通讯功能..7. at91sam7s63,ads1.2编译器 本程序为为一个简单的跑马灯演示: 1.8. 本程序为完成各种中断的演示.at91sam7s64芯片,ads1.2编译器.代码说明: 1)完成基本的初始化 2)初始化PIO,IRQ,fiq,software_interrupt等 3).9. 是介绍ISE的非常好的教程.10. ucGUI上的汉字子模提取工具.11. ucGUI的一些使用例子.12. 基于EasyArm2200和ucOS2的SD卡文件系统的实现.13. 芯片.14. 芯片.15. 包含vxWorks的许多底层API源码.16. 用汇编写的一个键盘 程序 纯属练习 没价值 用的是矩阵扫瞄法.17. 参加今年的比赛肯定要用的。谢谢支持。祝大家好运!.18. 文件包括了S3C2410基础试验源代码中的DA转换.19. 文件中包括了S3C2410基础试验源代码的触摸屏源代码.20. ucos 移植实验成功把ucos移植到2410上建立十个任务.21. s3c2410ucos 移植实验成功把ucos移植到2410上建立十个任务.22. 文档中包括S3C2410基础试验中VGA显示(ADS)中调试通过的源代码.23. PIC网卡控制器ENC28J60的PIC单片机程序源代码(c).24. 操作系统为wince,开发环境为EVC,有关窗口的应用程序.25. 在keil平台下用c语言开发的基于89c2051的小程序.26. 操作系统为wince,开发环境为EVC,有关串口的应用程序.27. 操作系统为wince,开发环境为EVC,有关网络的应用程序.28. 操作系统为wince,开发环境为EVC,有关数据库的应用程序.29. 操作系统为wince,开发环境为EVC,有关PING的应用程序.30. uC/OS移植到x86上的范例1.31. pdf文件,是用来控制液晶屏输入输出的的器件.32. ATMEL AT91SAM USB Mass Storage Module.33. 自己修改的U-boot1.1.4For AT91RM9200DK. 请用armgcc3.3.2编译。.34. ZLG的Smartarm2200上uClinux boot代码.35. AT91RM9200的USB host测试代码.36. AT91RM9200的网口测试代码.37. AT91RM9200的DS1307 RTC 测试代码.38. 利用该源代码可以实现在DE2的板子上进行USB画笔的实验.39. Pic18F458的Can通信模块代码.40. 51单片机模拟2272解码,采用中断方法.
上传时间: 2013-04-15
上传用户:eeworm