嵌入式系统复习资料

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1页共18页第1章嵌入式系统导论1.嵌入式系统的概念:是以现代计算机技术为基础,以应用为中心,可以根据系统或用户需求(功能、可靠性、成本、体积、功耗、环境等),灵活裁剪软硬件模块的专用计算机系统。2.嵌入式系统的分类及分类依据:嵌入式系统由硬件和软件两大部分组成,用于实现对其他设备的控制、监视或管理等功能。前者是整个系统的物理基础,它提供软件运行平台和通信接口;后者实际控制系统的运行。硬件:嵌入式微处理器、外围电路、外围硬件设备。软件:BootLoader、嵌入式操作系统、用户的应用程序等。3.几种典型嵌入式操作系统:(1)uC/OSII(2)uCLinux(3)WindowsCE(4)嵌入式Linux等4.任务调度:任务的调度有三种方式:可抢占式、不可抢占式和时间片轮转。【不可抢占式调度是指一个任务一旦获得CPU就独占其运行,除非由于某种原因使它决定放弃CPU的使用权;可抢占式调度是基于任务优先级的,当前正在运行的任务可以随时让位给优先级更高的处于就绪态的其他任务;当两个或两个以上任务有同样的优先级时,不同任务轮转使用CPU,直到系统分配的CPU时间片用完,这就是时间片轮转调度。】目前,大多数嵌入式操作系统对不同优先级的任务采用基于优先级的可抢占式调度法,对相同优先级的任务则采用时间片轮转调度法。5.针对有内存管理单元(MMU,MemoryManagementUnit)的处理器而设计的一些桌面操作系统,如Windows、Linux,使用了虚拟存储器的概念。6.计算机的发展:冯诺依曼架构:将指令和数据存放在同一存储空间中,统一编址,指令和数据通过同一总线访问。哈佛结构(冯诺依曼架构的扩展):主要特点是程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编制、独立访问。CortexM3第2页共18页7.Cortex系列按嵌入式系统的典型应用分类:①Cortex-A:高性能(HighPerformance),【针对日益增长的运行Linux、WinCE、Symbian等操作系统在内的消费者娱乐和无线产品设计与实现。】②Cortex-M:微控制器类(Microcontroller),【针对应用系统对功耗、成本敏感,同时对微处理器性能要求较高的工业领域(汽车、家电、医疗器械等)。】③Cortex-R:【实时类(RealTime),针对实时性要求较高的领域,可以运行RTOS。】④Cortex-W:【Wireless】Cortex指令完全采用Thumb-2体系架构。第3页共18页第2章Cortex-M3内核原理1.Cortex-M3是ARM公司推出的新一代32位低成本、高性能通用微控制器内核。2.Cortex-M3体系结构:Cortex-M3处理器主要由两大部分组成:①Cortex-M3内核:中央处理器核心(Cortex-M3Core嵌套向量中断控制器(NVIC)系统时钟(SYSTICK)存储器保护单元(MPU)总线②调试系统3.AMBA总线:(l)AHB:AdvancedHighPerformanceBus,用于高性能系统模块的连接,支持突发模式数据传输和事务(ACID:原子性、一致性、隔离性和持久性)分割;(2)ASB:AdvancedSystemBus,也用于高性能系统模块的连接,支持突发模式数据传输,这是较老的系统总线格式,后来由AHB总线替代;(3)APB:AdvancedPeriPheralBus,用于较低性能外设的简单连接,一般是接在AHB或ASB系统总线上的第二级总线。(4)4.Cortex-M3内核是典型的32位处理器内核:①内部数据路径宽度为32位,②寄存器宽度为32位,③存储器接口宽度也是32位,•Cortex-M3内核拥有独立的指令总线和数据总线,其寻址能力均为4G,且共享同一个存储器空间,取指与数据访问可同时进行。5.Cortex-M3寄存器:(1).低组寄存器(R0~R7)【所有指令均能访问,字长为32位,复位后的初始值是随机的。绝大多数16位Thumb指令只能访问R0~R7。】(2).高组寄存器(R8~R12)【只有很少的16位Thumb指令能访问,32位指令则不受限制,复位后的初始值是随机的。】(3).堆栈寄存器(R13)又称“堆栈指针SP”【Cortex-M3处理器内核有两个堆栈,但这两个寄存器不会同时生效,根据系统运行状态进行堆栈切换,以保证程序运行的快速性、安全性等要求。】①主堆栈指针(MSP),或写作SP_main。【缺省堆栈指针,它由OS内核、异常服务例程以及所有需要特权访问的应用程序代码来使用。】②进程堆栈指针(PSP),或写作SP_process。【用于常规的应用程序代码(不处于异常服务例程中时)。】第4页共18页6.在系统连接结构中,通常借助AHB-APB桥实现内核内部高速总线到外部低速总线的数据缓冲和转换。7.Cortex-M3是一个32位处理器,支持4GB存储空间,与ARM架构相比,有很多优点:(1)预定义存储器映射和总线配置;(2)支持“位带(bit‐band)”操作;(3)支持非对齐访问和互斥访问;(4)支持小端和大端两种存储格8.位带操作:(1)概念:位带操作,只适用于数据访问,不适用于取指。通过位带的功能,可以把多个布尔型数据打包在单一的字中,却依然可以从位带别名区中,像访问普通内存一样地使用它们。位带别名区中的访问操作是原子的,消灭了传统的“读-改-写”三步曲以及由此产生的被中断的可能。(2)为什么采用位带操作?可以显著提高位操作的效率和安全性,对许多底层软件开发特别是操作系统和驱动程序具有重要意义。(3)片内外设区(Peripheral,0x40000000~0x5FFFFFFF,512MB)外部RAM区(ExternalRam,0x60000000~0x9FFFFFFF,256KB)外部设备区(ExternalDevice,0xA0000000~0xDFFFFFFF,768KB)(4)映射公式:bit_word_addr=bit_band_alias_base+(byte_offset×32)+(bit_number×4)–bit_word_addr是别名存储器区中字的地址,它映射到某个目标位。–bit_band_alias_base是别名区的基址,即起始地址。–byte_offset是包含目标位的字节在位带区里的序号。–bit_number是位带区目标位所在字节中的位置(0-7)。(5)例题:例1:位带区SRAM地址为0x20000300的字节中的位2,其位带别名区的映射地?第5页共18页【答案】?=0x22000000+(0x300*32)+(2*4).0x22006008=0x22000000+(0x300*32)+(2*4).•对0x22006008地址的写操作和对SRAM中地址0x20000300字节的位2执行“读--改--写”操作有着相同的效果。例2:(1)地址?的别名字映射为0x200FFFFF的bit-band字节的位0:(2)地址?的别名字映射为0x200FFFFF的bit-band字节的位7:(3)地址?的别名字映射为0x20000000的bit-band字节的位0:(4)地址?的别名字映射为0x20000000的bit-band字节的位7:【答案】(1)地址0x23FFFFE0的别名字映射为0x200FFFFF的bit-band字节的位0:0x23FFFFE0=0x22000000+(0xFFFFF*32)+0*4(2)地址0x23FFFFEC的别名字映射为0x200FFFFF的bit-band字节的位7:0x23FFFFEC=0x22000000+(0xFFFFF*32)+7*4(3)地址0x22000000的别名字映射为0x20000000的bit-band字节的位0:0x22000000=0x22000000+(0*32)+0*4(4)地址0x220001C的别名字映射为0x20000000的bit-band字节的位7:0x2200001C=0x22000000+(0*32)+7*4例2图示:第6页共18页•怎样利用“位带操作”进行位带区的“读—改—写”呢?例3:欲设置地址0x20000000中的比特2。【答案】WithoutBit-BandWithBit-BandLDRR0,=0x20000000;SetupaddressLDRR0,=0x22000008;SetupaddressLDRR1,[R0];ReadMOVR1,#1;SetupdataORR.WR1,#0x4;ModifybitSTRR1,[R0];WriteSTRR1,[R0];Writebackresult例4:假如在(位带区)地址0x20000000处的字为0x3355AACC,要求对bit2清零。【答案】•无位带LDRR0,=0x20000000;建立地址LDRR1,[R0];ReadAND.WR1,#0xFFFFFFFB;bit2清零STRR1,[R0];writebackresult•有位带LDRR0,=0x22000008;建立地址MoveR1,0;SetupDataSTRR1,[R0];writebackresult【解答】①读取地址0x22000008。本次读访问将读取0x20000000,并提取比特2,值为1。②往地址0x22000008处写0。本次操作将被映射成对地址0x20000000的“读-改-写”操作(原子操作),把比特2清0。③现在再读取0x20000000,将返回0x3355AAC8(bit[2]已清零)。第7页共18页9.工作模式•Cortex-M3支持两种模式和两个特权等级。特权级用户级处理模式(handlermode)用法错误线程模式(threadmode)线程模式(threadmode)RESETCortex-M3处理器的工作模式和特权等级共有三种配合。①线程模式+用户级②线程模式+特权级③Handler模式+特权级10.中断:(1)中断的概念:所谓中断,是指CPU对系统内、外发生的某个事件的一种响应过程,或者说“一种机制”,即CPU暂时停止现行程序的执行,自动转去执行预先安排好的处理该事件的服务子程序;当处理结束后,再返回到被暂停的程序的断点处,继续执行原来的程序。(2)什么是中断向量表?Cortex-M3拥有一张向量表,用于在发生中断并作出响应时,从表中查询与中断对应的处理例程的入口地址向量。(3)Cortex‐M3内核集成了中断控制器——嵌套向量中断控制器NVIC(NestedVectoredInterruptController)。(4)中断优先级:Cortex-M3除配置优先级外,还通过把256级优先级分为抢占优先级和亚优先级支持最多128个抢占级。优先级分组规定:亚优先级至少是1位,因此抢占优先级最多是7位,128级抢占优先级。异常handler代码主应用程序代码第8页共18页第3章STM32固件库介绍1.CMSIS-外设访问层的文件(1)独立于编译器的文件:•Cortex-M3内核及其设备文件(core_cm3.h+core_cm3.c)-访问Cortex-M3内核及其设备:NVIC,SysTick等-访问Cortex-M3的CPU寄存器和内核外设的函数•微控制器专用头文件(device.h)-指定中断号码(与启动文件一致)-外设寄存器定义(寄存器的基地址和布局)-控制微控制器其他特有的功能的函数(可选)•微控制器专用系统文件(system_device.c)-函数SystemInit,用来初始化微控制器-函数Sysem_ExtMemCtl,用来配置外部存储器控制器。它位于文件startup_stm32f10x_xx.s/.c,在跳转到main前调用-SystemFrequncy,该值代表系统时钟频率-微控制器的其他功能(可选)(2)编译器供应商+微控制器专用启动文件-编译器启动代码(汇编或者C)(startup_device.s)-微控制器专用的中断处理程序列表(与头

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功