1、第12章 嵌入式控制系统设计1 1第12章 嵌入式控制系统设计12.1嵌入式系统简介12.2ARM内核介绍12.3ARM核的指令系统12.4嵌入式操作系统介绍12.5嵌入式处理器介绍12.6C/OS-在LPC2210上的移植12.7嵌入式控制系统设计实例 基于ARM的变频空调室内控制系统第12章 嵌入式控制系统设计2 2 12.1嵌入式系统简介嵌入式系统是嵌入到对象体系中的专用计算机系统。IEEE(国际电气和电子工程师协会)对嵌入式系统的定义为:嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置(Devices Used to Control,Monitor or Assist the
2、Operation of Equipment,Machinery or Plants)”。第12章 嵌入式控制系统设计3 312.2ARM内核介绍ARM体系结构目前被公认为是业界领先的32 位嵌入式RISC 微处理器结构,所有ARM处理器共享这一体系结构,因而确保了开发者转向更高性能的ARM处理器时在软件开发上可以得到最大的回报。第12章 嵌入式控制系统设计4 41.ARM7微处理器系列ARM7系列微处理器为低功耗的32位RISC处理器,最适用于对价位和功耗要求较高的消费类应用。ARM7微处理器系列具有如下特点:(1)具有嵌入式ICE-RT逻辑,调试开发方便。(2)极低的功耗,适合对功耗要求较
3、高的应用,如便携式产品。(3)能够提供0.9 MIPS/MHz的三级流水线结构。(4)代码密度高并兼容16位的Thumb指令集。第12章 嵌入式控制系统设计5 5(5)对操作系统的支持广泛,包括Windows CE、Linux、Palm OS等。(6)指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户的产品升级换代。(7)主频最高可达130 MIPS,高速的运算处理能力能胜任绝大多数的复杂应用。第12章 嵌入式控制系统设计6 62.ARM9微处理器系列ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能,具有以下特点:(1)5级整数流水线,指令执行效率更高。(2)提供
4、1.1 MIPS/MHz的哈佛结构。(3)支持32位ARM指令集和16位Thumb指令集。(4)支持32位的高速AMBA总线接口。(5)全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。第12章 嵌入式控制系统设计7 7(6)MPU支持实时操作系统。(7)支持数据Cache和指令Cache,具有更高的指令和数据处理能力。第12章 嵌入式控制系统设计8 83.ARM9E微处理器系列ARM9E系列微处理器的主要特点如下:(1)支持DSP指令集,适合于需要高速数字信号处理的场合。(2)5级整数流水线,指令执行效率更高。(3)支持32位ARM指令集和16位T
5、humb指令集。(4)支持32位的高速AMBA总线接口。(5)支持VFP9浮点处理协处理器。第12章 嵌入式控制系统设计9 9(6)全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。(7)MPU支持实时操作系统。(8)支持数据Cache和指令Cache,具有更高的指令和数据处理能力。(9)主频最高可达300 MIPS。第12章 嵌入式控制系统设计10 104.ARM10E微处理器系列ARM10E系列微处理器的主要特点如下:(1)支持DSP指令集,适合于需要高速数字信号处理的场合。(2)6级整数流水线,指令执行效率更高。(3)支持32位ARM指令集和1
6、6位Thumb指令集。(4)支持32位的高速AMBA总线接口。(5)支持VFP10浮点处理协处理器。(6)全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。第12章 嵌入式控制系统设计11 11(7)支持数据Cache和指令Cache,具有更高的指令和数据处理能力(8)主频最高可达400 MIPS。(9)内嵌并行读/写操作部件。第12章 嵌入式控制系统设计12 125.SecurCore微处理器系列SecurCore系列微处理器除了具有ARM体系结构各种主要特点外,还在系统安全方面具有如下的特点:(1)带有灵活的保护单元,以确保操作系统和应用数据的安
7、全。(2)采用软内核技术,防止外部对其进行扫描探测。(3)可集成用户自己的安全特性和其他协处理器。第12章 嵌入式控制系统设计13 136.StrongARM微处理器系列Intel StrongARM SA-1100处理器是采用ARM体系结构高度集成的32位RISC微处理器。它融合了Intel公司的设计和处理技术以及ARM体系结构的电源效率,采用在软件上兼容ARMv4体系结构、同时采用具有Intel技术优点的体系结构。第12章 嵌入式控制系统设计14 147.Xscale处理器Xscale 处理器是基于ARMv5 TE体系结构的解决方案,是一款全性能、高性价比、低功耗的处理器。它支持16位的T
8、humb指令和DSP指令集,已应用于数字移动电话、个人数字助理和网络产品等场合。第12章 嵌入式控制系统设计15 1512.3ARM核的指令系统12.3.1ARM指令的格式与条件码1.ARM指令的格式ARM指令的基本格式如下:opcode cond S Rd,Rn,operand2 第12章 嵌入式控制系统设计16 162.ARM指令的条件码在ARM指令的基本格式:opcode cond S Rd,Rn,operand2 中使用条件码“cond”可以实现高效的逻辑操作。所有的ARM指令都可以条件执行,而Thumb指令只有B(跳转)指令具有条件执行功能。如果指令不标明条件代码,将默认为无条件(A
9、L)执行。第12章 嵌入式控制系统设计17 17第12章 嵌入式控制系统设计18 1812.3.2单寄存器存取指令1.字数据加载指令LDRLDR指令的格式为第12章 嵌入式控制系统设计19 192.字节数据加载指令LDRBLDRB指令的格式为:LDR条件B 目的寄存器,存储器地址LDRcondBT Rd,地址;将指定地址上的字节数据读入Rd第12章 嵌入式控制系统设计20203.半字数据加载指令LDRHLDRH指令的格式为:LDR条件H 目的寄存器,存储器地址LDRcondH Rd,地址 ;将指定地址上的半字数据读入Rd第12章 嵌入式控制系统设计21 214.字数据存储指令STRSTR指令的
10、格式为:STR条件 源寄存器,存储器地址STRcondT Rd,地址;将Rd中的字数据存入指定地址第12章 嵌入式控制系统设计22225.字节数据存储指令STRBSTRB指令的格式为:STR条件B 源寄存器,存储器地址STRcondBT Rd,地址 ;将Rd中的字节数据存入指定地址第12章 嵌入式控制系统设计23236.半字数据存储指令STRHSTRH指令的格式为:STR条件H 源寄存器,存储器地址STRcondH Rd,地址 ;将Rd中的半字数据存入指定地址第12章 嵌入式控制系统设计242412.3.3多寄存器存取指令ARM微处理器的多寄存器存取指令,可以一次在一片连续的存储器单元和多个寄
11、存器之间传送数据。多寄存器存指令用于将一片连续的存储器中的数据传送到多个寄存器,多寄存器取指令则完成相反的操作。常用多寄存器存取指令如下:LDM 多寄存器加载指令STM 多寄存器存储指令LDM(或STM)指令的格式为:LDMcond模式 Rn!,reglist STMcond模式 Rn!,reglist第12章 嵌入式控制系统设计252512.3.4数据交换指令ARM微处理器所支持的数据交换指令能在存储器和寄存器之间交换数据。数据交换指令有如下两条:SWP 字数据交换指令SWPB 字节数据交换指令SWP/SWPB指令的格式为:SWPcondB Rd,Rm,Rn第12章 嵌入式控制系统设计262
12、612.3.5数据处理指令1.数据传送指令MOVMOV指令的格式为:MOVcondS Rd,operand22.数据取反传送指令MVN MVN指令的格式为:MVNcondS Rd,operand2第12章 嵌入式控制系统设计27273.比较指令CMP CMP指令的格式为:CMPcond Rn,operand2 4.反值比较指令CMN CMN指令的格式为:CMNcond Rn,operand2 第12章 嵌入式控制系统设计28285.位测试指令TSTTST指令的格式为:TSTcond Rn,operand2 6.相等测试指令TEQTEQ指令的格式为:TEQcond Rn,operand2 第12
13、章 嵌入式控制系统设计29297.加法指令ADDADD指令的格式为:ADDcondS Rd,Rn,operand2 8.带进位加法指令ADC ADC指令的格式为:ADCcondS Rd,Rn,operand2 第12章 嵌入式控制系统设计30309.减法指令SUB SUB指令的格式为:SUBcondS Rd,Rn,operand2 10.带借位减法指令SBCSBC指令的格式为:SBCcondS Rd,Rn,operand2 第12章 嵌入式控制系统设计31 3111.逆向减法指令RSBRSB指令的格式为:RSBcondS Rd,Rn,operand2 12.带借位的逆向减法指令RSCRSC指令
14、的格式为:RSCcondS Rd,Rn,operand2 第12章 嵌入式控制系统设计323213.逻辑与指令ANDAND指令的格式为:ANDcondS Rd,Rn,operand2 14.逻辑或指令ORRORR指令的格式为:ORRcondS Rd,Rn,operand2 第12章 嵌入式控制系统设计333315.逻辑异或指令EOREOR指令的格式为:EORcondS Rd,Rn,operand2 16.位清除指令BICBIC指令的格式为:BICcondS Rd,Rn,operand2 第12章 嵌入式控制系统设计343412.3.6乘法指令与乘加指令1.32位乘法指令MULMUL指令的格式为
15、:MULcondS Rd,Rm,Rs 2.32位乘加指令MLAMLA指令的格式为:MLAcondS Rd,Rm,Rs,Rn 3.64位有符号数乘法指令SMULLSMULL指令的格式为:SMULLcondS RdLo,RdHi,Rm,Rs 第12章 嵌入式控制系统设计35354.64位有符号数乘加指令SMLALSMLAL指令的格式为:SMLALcondS RdLo,RdHi,Rm,Rs 5.64位无符号数乘法指令UMULLUMULL指令的格式为:UMULLcondS RdLo,RdHi,Rm,Rs 6.64位无符号数乘加指令UMLALUMLAL指令的格式为:UMLALcondS RdLo,RdH
16、i,Rm,Rs 第12章 嵌入式控制系统设计363612.3.7ARM分支指令跳转指令用于实现程序流程的跳转。在ARM程序中有两种方法可以实现程序流程的跳转:(1)使用专门的跳转指令。(2)直接向程序计数器(PC)写入跳转地址值。通过向程序计数器(PC)写入跳转地址值,可以实现在4 GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令,可以保存将来的返回地址值,从而实现在4 GB连续的线性地址空间的子程序调用。第12章 嵌入式控制系统设计37371.跳转指令 BB指令的格式为:Bcond Label2.带返回的跳转指令BLBL指令的格式为:BLcond Label3.带状
17、态切换的跳转指令BXBX指令的格式为:BXcond Rm第12章 嵌入式控制系统设计383812.3.8软件中断指令ARM微处理器的软件中断指令为SWI。SWI指令的格式为:SWIcond immed_24第12章 嵌入式控制系统设计393912.3.9程序状态寄存器访问指令1.程序状态寄存器到通用寄存器的数据传送指令 MRS MRS指令的格式为:MRS条件 通用寄存器,程序状态寄存器(CPSR或SPSR)MRScond Rd,psr第12章 嵌入式控制系统设计40402.通用寄存器到程序状态寄存器的数据传送指令 MSRMSR指令格式1:MSRcond psr_fields,#immed_8r
18、MSR指令格式2:MSRcond psr_fields,RmMSR条件 程序状态寄存器(CPSR或SPSR)_,操作数第12章 嵌入式控制系统设计41 4112.3.10ARM伪指令1.大范围的地址读取指令LDRLDR伪指令格式:LDRcond register,=expr2.空操作伪指令NOPNOP伪指令在汇编时将会被代替成ARM中的空操作,比如可能是“MOV R0,R0”指令等。NOP可用于延时操作。NOP伪指令格式:NOP第12章 嵌入式控制系统设计424212.4嵌入式操作系统介绍12.4.1嵌入式操作系统的发展作为嵌入式系统(包括硬、软件系统)极为重要的组成部分的嵌入式操作系统,通常
19、包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。第12章 嵌入式控制系统设计434312.4.2使用实时操作系统的必要性嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得愈来愈重要。(1)嵌入式实时操作系统提高了系统的可靠性。(2)嵌入式实时操作系统提高了开发效率,缩短了开发周期。(3)嵌入式实时操作系统充分发挥了32位CPU的多任务潜力。第12章 嵌入式控制系统设计444412.4.3几种代表性嵌入式操作系统1.VxWorks2.Windows CE3.嵌入式Linux4.C/OS-第12章 嵌入式控制系统设计
20、454512.5嵌入式处理器介绍1.嵌入式微处理器(MicroProcessor Unit,MPU)2.嵌入式微控制器(MicroController Unit,MCU)3.嵌入式DSP处理器(Embedded Digital Signal Processor,EDSP)4.嵌入式片上系统(System on Chip,SoC)第12章 嵌入式控制系统设计464612.6C/OS-在LPC2210上的移植1.C/OS-在LPC2210上的移植Philips公司生产的LPC2210位控制器是一个基于支持实时仿真和跟踪的16/32位ARM7TDMI-STM CPU的微控制器。片内有128位宽度的存
21、储器接口和独特的加速结构,使32位代码能够在最大时钟频率下运行,对代码规模有严格控制的应用可以使用16位的Thumb模式将代码规模降低超过30%,而性能的损失却很小。第12章 嵌入式控制系统设计4747图12-1C/OS-文件结构 第12章 嵌入式控制系统设计48482.OS_CPU.H文件移植(1)C/OS-不使用C语言中short、int和long等数据类型定义,因为它们与处理器类型相关,隐含不可移植性,所以必须对其进行移植。H文件中主要包含与编译器相关的数据类型定义、堆栈类型定义、两个宏定义和几个函数说明。第12章 嵌入式控制系统设计4949数据类型定义代码如下:第12章 嵌入式控制系统
22、设计5050(2)编写SWI服务函数。为了使底层接口函数与处理器状态无关,同时在任务调用相应的函数时不需要知道函数的位置,本移植使用软中断指令SWI作为底层接口,使用不同的功能号区分不同的函数。第12章 嵌入式控制系统设计51 51SWI服务函数定义如下:第12章 嵌入式控制系统设计5252(3)开关中断的实现。在C/OS-中开关中断的实现是通过OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()两个宏来实现的。C/OS-与其他实时内核一样,在访问临界区代码之前必须关中断,访问之后开中断。而这两个宏保证了C/OS-的临界区代码不会被多个任务或中断服务程序同时访问,避免造
23、成C/OS-全局变量的不一致。第12章 嵌入式控制系统设计53533.OS_CPU_C.C文件移植每个任务要有自己的堆栈空间,以便进行任务切换时能将当时处理器现场保存到任务堆栈空间中,在下次执行时再恢复出来。因此必先确定任务堆栈结构,而任务堆栈结构与CPU体系结构、编译器密切关联。在ARM体系下,处理器现场通常指PC,LR,R0R12,CPSR,SPSR。本移植堆栈结构如图12-2所示,任务堆栈由高到低依次将保存在PC,LR,R12,R11,R10,R1,R0,CPSR等中。第12章 嵌入式控制系统设计5454图12-2LPC2210的任务堆栈结构图 第12章 嵌入式控制系统设计5555 OS
24、TaskStkInit()的代码如下:第12章 嵌入式控制系统设计5656第12章 嵌入式控制系统设计57574.OS_CPU_A.S文件移植此文件包括的4个函数都涉及对寄存器的处理,和处理器有关。由于不同处理器有不同寄存器,所以操作系统在这个文件里给用户留下4个函数接口,以便用户根据所选处理器编写相应的汇编程序以完成固定功能。这4个函数分别为:多任务启动函数中调用的OSStartHighRdy()、任务切换函数OSCtxsw()、中断任务切换函数OSIntCtxSw()和时钟节拍服务函数OSTickISR()。第12章 嵌入式控制系统设计5858 中断任务切换函数OSIntCtxSw()部分
25、代码如下:第12章 嵌入式控制系统设计595912.7嵌入式控制系统设计实例基于ARM的变频空调室内控制系统房间空调市场正在不断扩大,节能和舒适一直是产业界和用户共同关注的焦点。变频技术较传统控制方式能节能30%以上,并且保持恒定的室温。当前房间空调在企事业单位中得到了普遍应用,在绝大多数早期办公楼宇的智能化改造过程中,通常也会因难以安装中央空调而选择房间空调。第12章 嵌入式控制系统设计6060图12-3系统的应用框架 第12章 嵌入式控制系统设计61 611.系统的主要控制部件室内控制系统可以保证空调正确稳定运行,起着联系与控制空调中的各种单独的物理部件的作用。它管理着室内机的各种资源,控
26、制它们的正确运行。第12章 嵌入式控制系统设计62622.系统与室外机交互的功能设计空调室外机控制系统将自身运转状况汇报给室内机,同时也从室内机获取运行所需的参数指令;室内机获取室外机状况,结合从用户界面获取的运行参数和自身状况向室外机发送控制参数。通过分析,得到了室内、室外机分别所需发出的信息如下。第12章 嵌入式控制系统设计6363系统通过一组公共参数来进行通信。这样既保证了通信的有效性,也比采用传统的主程序调用方式或者操作系统的信号传递方式更为简洁、可靠。软件架构图如图12-4所示。第12章 嵌入式控制系统设计6464图12-4软件架构图 第12章 嵌入式控制系统设计65653.多任务系
27、统的设计系统的公共运行参数是一个具有全局属性的结构体变量,它记录了当前空调的运行状态信息,同时也记录用户设定的参数,如下所示:第12章 嵌入式控制系统设计6666第12章 嵌入式控制系统设计67674.A/D驱动程序的实现系统需要检测室内温度和室内盘管温度,因而使用了两路A/D转换器,采用8位转换,通过将电压与温度对应,调用驱动程序会直接返回温度值。驱动程序如下:第12章 嵌入式控制系统设计6868第12章 嵌入式控制系统设计6969第12章 嵌入式控制系统设计70705.RTC时钟驱动实时时钟RTC在当今电子设备中的应用非常普遍。在本系统中,RTC起着非常重要的作用,系统的运行时间、定时功能
28、、睡眠功能、向PC发送数据所带的时间戳等一系列功能都需要RTC来辅助实现。对RTC的控制主要是读写RTC控制器里的相关寄存器。第12章 嵌入式控制系统设计71 716.应用程序的设计与实现系统应用程序是由多个独立运行的部件或子系统控制程序组合而成的,在运行时它们表现为单个或者一组任务。这些子系统包括PG电机控制子系统、遥控接收控制子系统、风摆电机控制子系统、软件在线升级子系统、外机通信控制子系统、与PC通信控制子系统、温度采样控制子系统等。下面将给出部分子系统示例。第12章 嵌入式控制系统设计72721)PG电机控制子系统(1)程序设计与实现。PG电机控制共用到了三个中断:一个时间中断,两个外
29、部中断,被分成三个任务来运行。为了达到实时性要求,转速反馈信号检测在外中断EINT1服务程序完成,每次进入中断记录当前定时器TIMER1中计时器的值,并在一全局变量中记录,此时中断服务函数不可重入,即不可嵌套,所以把耗时较多的计算任务放在任务中进行,任务TaskPGpi每100 ms对存储的数据进行计算得到速度。第12章 嵌入式控制系统设计7373(2)函数定义如下:第12章 嵌入式控制系统设计7474第12章 嵌入式控制系统设计75752)遥控接收控制子系统用户通常通过遥控器实现对空调的使用,本系统在硬件上出于成本的考虑没有使用专用遥控解码芯片,因而为系统软件的实现带来了难度。遥控信号的采样
30、过程具有很高的实时性要求,既要保证接收的高可靠性,也必须保证不会干扰其他任务的正常运行。第12章 嵌入式控制系统设计7676考虑到采样的实时性和连贯性要求,红外采样部分被放到红外触发中断外中断EINT3的中断处理程序Eint3_Exception中进行,并且EINT3被定义成具有最高优先级的中断,防止在执行过程中嵌套其他中断,造成采样时间数据不准,最终无法通过校验的情况产生。Eint3_ Exception保存每次采样值,当达到15个字节后发送信号给红外接收任务TaskIrc,任务TaskIrc在获得由Eint3_Exception发送的信号后开始执行校验程序,如通过则继续进行解码和系统设置,不通过则让采样存储区归零。第12章 嵌入式控制系统设计7777遥控结构功能部分伪码如下:第12章 嵌入式控制系统设计78787.结束语通过将IT技术的发展成果引入家电领域解决了传统空调控制系统普遍用8位单片机作为硬件平台带来的不便。硬件上采用32位的ARM架构处理器取代了传统的单片机,为开发智能化、网络化的产品提供了可能,以在操作系统调度下多任务独立并行的形式对空调进行了抽象化处理,极大地简化了开发,方便了维护,使其具备了远程管理维护和软件在线更新等新功能,降低了产品的维护成本,提升了用户的舒适感,进一步提高了能源的利用效率。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。