资源描述:
《arm cortex m3 嵌入式 交大 PPT》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、嵌入式系统上海交通大学2010.6第8章嵌入式系统和Cortex‐M38.1嵌入式系统8.1.1定义嵌入式系统是用来实现一种或多种功能并且常常带有实时计算要求的计算机系统。它作为一个完整设备的嵌入部分。一般用途的计算机,比如个人电脑(PC),常常设计的很灵活并且能满足最终用户的广泛需求。8.1.2历史在20世纪30年代到40年代,计算机某些时候常常只致力于完成一个任务,但是它太大又太贵。阿波罗导航电脑属于第一批被承认的现代嵌入式系统,由麻省理工的CharlesStarkDraper发明。Intel4004是第一个微处理器,针对计算器和其他小型系统设计。到了20世
2、纪80年代中期,大部分以前共同的外部系统组件已经被集成到了同样的芯片上。微控制器的集成增加了传统计算机不会有的应用。8.1.3特征1.嵌入式系统被设计用来做一些特殊的任务。一些嵌入式系统有必须达到的实时性能要求;另一些嵌入式系统在实时性能方面的要求会低些或者没有要求。2.许多嵌入式系统由在一个大设备里提供通用功能的小电脑零件组成。3.为嵌入式系统所写的程序指令被称为固件,被存储在只读存储器或者Flash存储器芯片内。8.1.4应用嵌入式系统跨越现代生活的各个方面,其使用也有许多例子。电信系统在网络到移动电话最终使用者的电话交换机上应用了很多嵌入式系统。消费类电子
3、产品包括个人数字助理(PDAs),mp3播放器,移动电话,和视频游戏机。交通系统中从飞机到汽车越来越多地使用嵌入式系统。新飞机中包含的先进航空电子设备如惯性导航系统和GPS接收机也有相当高的安全要求。各种电动马达—无刷直流电动机,感应电机和直流电动机—正在使用电动/电子马达控制器。8.1.5嵌入式系统中的处理器嵌入式处理器可以分为两大类:普通的微处理器(μP)和微控制器(μC)。1.相当大数目的基本CPU架构被使用。冯•诺依曼和哈佛架构。RISC以及non-RISC和VLIW.2.字长从4位变化到64位及以后(主要是在DSP处理器中)。3.大多数架构从大量的不同
4、变种和样式中来。ARMARM,是一个以AdvancedRISCMachine为人所知的公司,和在此之前的theAcornRISCMachine。截至2007年,每年销量达十几亿的手机中有大约98%至少使用了一个ARM处理器。截至2009年,ARM处理器大约占所有嵌入式32位RISC处理器的大约90%。ARM处理器广泛用于消费类电子产品,包括掌上电脑,移动电话,数字媒体和音乐播放器。ARM公司的业务一直是出售IP核。最成功的ARM7TDMI已经有亿万售出。现在或先前ARM授权的公司包括:Alcatel-Lucent,AppleInc.,Atmel,Broadcom
5、,Freescale,Intel,Samsung,TI,ect.ARM控股的ARM处理器家庭的突出例子包括ARM7,ARM9,ARM11andCortex.8.2Cortex-M3概述Cortex-M3的简化视图1.32-bit微处理器:32-bit数据路径,32-bit寄存器组,32-bit存储器接口。2.哈佛架构:独立的指令总线和数据总线。这允许指令和数据在同一时间产生。3.存储空间:8GB。4.寄存器:寄存器(R0到R15)和特殊寄存器。5.运行模式:线程模式和处理模式;特权级和用户级。6.中断和异常:内置在嵌套向量中断控制器;支持11种系统异常外加240
6、种外部IRQ。7.总线接口:若干总线接口允许Cortex-M3同时取指令和取数据。8.MPU:一个可选的存储器保护单元允许对特权访问和用户程序访问制定访问规则。9.指令集:Thumb-2指令集;允许32-位指令和16-位指令被同时使用。10.固定的内部调试组件:提供调试操作支持和像断点调试这样的功能。8.3Cortex-M3基础8.3.1寄存器8.3.1.1通用寄存器1.R0~R7(低寄存器):可以被所有16-bitThumb指令和所有32-bitThumb-2指令访问。2.R8~R12(高寄存器):可以被所有Thumb-2指令但不能被所有16-bitThumb
7、指令访问。Cortex-M3中的寄存器8.3.1.2堆栈指针R13是堆栈指针。两个堆栈指针是库存的所以在同一时间只有一个可见。堆栈指针的最低两位总是0,这意味着他们总是字对齐。两个堆栈指针是:1.主堆栈指针(MSP):这是默认的堆栈指针。2.进程堆栈指针(PSP):被基本级别的应用程序代码所使用。堆栈指针用来进行堆栈存储器操作比如PUSH和POP。堆栈存储器的基本概念汇编语言的语法:PUSH{R0};R13R13-4,thenMemory[R13]R0POP{R0};R0Memory[R13],thenR13R13+4你可以在一条指令中PUSH或POP多个寄存器
8、:subroutine_