《stm32讲解》由会员分享,可在线阅读,更多相关《stm32讲解(50页珍藏版)》请在金锄头文库上搜索。
1、STM32开发与应用 一、ARM嵌入式系统 二、ARM指令系统,ARM嵌入式系统在日常的消费电子领域随处可见,以其优越的性能和完善的开发环境得到了广大电子工程师的青睐 。ARM微处理器由ARM公司提供IP授权,交付多个芯片设计厂商进行整合生产。随着ARM的发展,其内核版本和支持的生产厂商也越来越多,因此市场上所能找到的ARM芯片也是种类繁多的。下面主要介绍ARM嵌入式系统的基本结构和常见的ARM微处理器。 ARM嵌入式系统简介 近年来,ARM嵌入式系列产品,如智能手机、车载MP4、车载导航仪和平板电脑等,随着网络通信技术、计算机技术和微电子技术的迅速发展,嵌入式系统已经成为当前IT,行业的焦点
2、。同时在数字信息技术和网络技术高速发展的后PC时代,嵌入式系统因其体积小、可靠性高、功能强和灵活方便等许多优势,逐步渗透到工业、军事、医疗、汽车及日常生活的各个领域,在嵌入式相关行业技术改造、产品更新换代、加速自动化进程,以及提高产品效率等方面起到了极其重要的推动作用。 ARM嵌入式的发展历程及其应用 ARM的英文全称是Advanced RISC Machine,用户既可以认为ARM是一个IT行业公司的名称,也可以认为是一种“嵌入式微处理器核”技术的名称,甚至还可以认为是具有某种“嵌入式微处理器核”技术的一类芯片,以及嵌入式系统,的总称。ARM公司是微处理器行业的一家知名企业,1990年11月
3、成立于英国,是苹果电脑、Acorn电脑集团和VLSI Technology的合资企业。1991年,ARM公司推出了ARM6处理器家族,VLSI公司则是第一个将其成功应用在内部研发产品上的生产厂家。后来陆续将ARM处理器大面积地进行推广,使得ARM处理器在汽车电子、新能源汽车、车载网络、智能手机,以及其它消费电子中都得到广泛应用。 一般而言,ARM嵌入式系统有3部份组成,即嵌入式系统硬件平台、嵌入式操作系统和嵌入式系统应用。 嵌入式系统硬件平台主要是指各种嵌入式处理器和外围设备等,如基于ARM核的STM32XX处理器、51系列单片机等,嵌入式操作系统是指在嵌入式硬件平台上运行的代码和操作系统。目
4、前主流的嵌入式操作系统是基于C语言的嵌入式Linux、uCLinux和uC/OS-等。 一般而言,Linux操作系统具有比较完善的网络接口支持;uCLinux操作系统常被用在一些不需要“内存管理单元”的嵌入式平台中;而uC/OS-系统是典型的实时操作系统,可以满足对实时性要求比较高的场合,如汽车电子油门、车载高速CAN网络等,具有非常快的响应时间。除了上述介绍的几种嵌入式操作系统外,在当前主流的消费电子产品中,还广泛使用Android、Meego等系统。这些嵌入式系统主要用在智能手机及平板电脑上。在实际的工程应用中,,用户具体使用何种嵌入式操作系统应视具体的工程需求而定。 嵌入式系统应用 嵌入
5、式系统应用是以嵌入式系统硬件平台的搭建、嵌入式操作系统的成功移植和运行为前提的。这一部分内容运行在嵌入式操作系统的上层,完成特定的功能目标。通常情况下,不同的系统需要根据具体的项目需求设计不同的嵌入式应用程序。但是值得注意的是,在嵌入式系统中,系统应用并不是必需的。只有在一些复杂的工程设计中才会需要嵌入式系统应用,如对汽车整车通信协议的定义和控制等。在一些要求不高或者相对简单的工程应用场合,嵌,入式系统应用经常被合并到操作系统及其代码的实现过程中,即操作系统与应用代码由于相对简单而被糅合在一起。 ARM嵌入式的性能特性 1.极低的系统功耗 ARM嵌入式系统相比其他处理器而言具有极低的系统功耗,
6、这就使得它能广泛的被应用于手持式电子设备的设计场合。目前,ARM微处理器和内嵌ARM核的SOC芯片已经在手持终端,如智能手机、车载MP4中得到广泛应用。 2.较短的开发周期 ARM嵌入式系统的开发周期完全是由ARM的商业模式决定的。ARM公司将成熟的ARM技术直接授权给其它合作芯片,设计厂商,在很大程度上缩短了ARM嵌入式产品的开发周期。 3.支持双指令集 绝大部分ARM处理器都可以支持ARM和Thumb两种不同的工作模式,分别支持32位的ARM指令集和16位的Thumb指令集。这两种指令集都各有所长,32位的ARM指令集在命令功能上相对更为丰富,性能也更好。在运行代码的过程中,实现同样的功能
7、所需要的指令数更少;而16位Thumb 指令集是ARM指令集的一个子集,因此,在实现相同的功能操作时需要较多的指令数,但是使用Thumb指令集实现的程序代码所占据的程序空间相对较少,具有较高的代码,执行效率。除此之外,由于16位的Thumb指令代码在译码过程中相对比较简单,因此Thumb指令具有更低的系统功耗。 4.高效的系统总线 在ARM嵌入式系统中,处理器没有采用DSP架构中的多级流水线机制,而是采用了一组专门针对ARM内核的片上系统SOC开发的总线规范,即AMBA总线。 1.AHB 该类型的总线支持多种数据传输方式 ,以及多个总线主设备之间的数据传输。适用于高性能和高时钟频率的系统模块,
8、如CPU处理器、片上存储器、DMA设备、DSP,以及,其它协同处理器等。 2.ASB 该类型的总线同样也适用于高性能的系统模块。在不需要使用AHB的场合,用户也可以选择ASB作为系统总线。 3.APB 该类型的总线的主要特点是结构简单,低速,极低的功耗。该总线主要适用于低功耗,对实时性要求不高的外部设备,如对汽车门窗锁的控制等。 ARM嵌入式系统的开发要点 1.明确ARM嵌入式系统开发的过程 不同于通用计算机平台上应用软件的开发,在ARM嵌入式,系统程序的开发过程中具有很多特点和不确定性,其中最重要的一点就是嵌入式软件代码和系统硬件的独立性。软件设计人员必须建立在对底层硬件设计充分了解的基础上
9、,才能设计出符合ARM嵌入式系统要求的应用层代码。为了简化开发流程,提高开发效率,用户可以在应用与驱动接口上设计一些相对统一的接口函数,就可以在一定程度上规范应用层嵌入式软件设计的标准,同时方便应用程序在跨平台之间的复用和移植。 2.熟悉开发工具环境里的库函数 (1)考虑硬件对库函数的支持;(2)符合目标系统上的存储器资源分布;(3)应用程序运行环境的初始化。,3.熟悉ARM嵌入式系统的调试操作 嵌入式系统不可避免的会涉及对输入输出设备的操作,例如,文件操作函数需要访问磁盘IO,打印机函数需要访问字符输出设备等。在嵌入式调试环境下,所有的标准C库函数都是有效且有其默认行为的。一般情况下,部分目
10、标系统硬件所不能支持的操作用户可以通过相应的调试工具来完成。 常用车载ARM嵌入式芯片STM32F103XX STM32F103XX系列处理器是一个低功耗的ARM嵌入式芯片,具有逻辑门数少,终端延迟程度小,方便调试等特点。该ARM芯片主要是为需求较低,功耗和价格敏感的应用领域而,专门设计的,具有较高的系统性能和数据处理能力,应用范围涉及从低端微控制器到复杂的片上操作系统,被广泛使用在汽车电子、智能手机、娱乐网络消费终端等领域。为了降低器件的成本,STM32F103XX系列处理器采用了与系统部件紧耦合的实现方法,以缩小芯片的物理面积,特别是其内核面积比原有的ARM处理器芯片缩小了30%。针对嵌入
11、式系统的开发,STM32F103XX系列处理器相比其他芯片具有以下优势: 较小的处理器内核、系统和存储器,大幅降低了处理器芯片的成本; 提供高效的电源管理机制,具有极低的系统功耗;,较强的处理器性能,基本满足所有工业级产品的应用需求; 极低的中断处理时间,完全满足高速、临界控制的应用场合; 可供选择的存储器保护单元为嵌入式系统提供平台级的安全性; 对汇编代码基本不作任何要求,简化系统开发进程; 宽广的工程应用范围,适用于从超低成本的微控制器到高性能的片上系统。 由于系统具有极低的功耗,并且集成了丰富的片上系统资源,以及稳定的工作性能,绝大部分汽车生产厂商在生产,汽车电子设备的过程中都选择了ST
12、M32F103XX系列处理器。 ARM嵌入式处理器结构 一般而言,ARM嵌入式芯片主要由32位ALU、31个32位通用寄存器和六个状态寄存器、32x8位乘法器、32x32位桶形移位寄存器、指令译码及控制逻辑、指令流水线和数据/地址寄存器组成。在ARM处理器结构中,使用了流水线技术以提高处理器指令的运行速度。在流水线操作中,允许多个操作同时进行,以及处理和存储系统连续操作。以3级流水线为例,指令的执行分为以下3级。 (1)取指级 在取值级中,处理器主要完成程序存储器中指令的读取,,并放入指令流水线中等候处理。 (2)译码级 在译码级中,对指令进行译码,为下一个周期的操作运行准备数据路径所需要的控
13、制信号。在译码级操作中,处理器占用“译码逻辑”而不使用“数据路径”。 (3)执行级 在执行级指令中,处理器使用“数据路径”,寄存器堆栈被读取,操作数在桶形移位寄存器进行移位操作,ALU产生相应的运算结果并回写到目的寄存器中。ALU的计算结果根据指令要求更改状态寄存器的条件位。 ARM硬件配置,用户在进行ARM嵌入式系统开发之前,需要对ARM处理器的硬件配置有一定的了解,针对常用的车载ARM嵌入式芯片STM32F103XX,以Cort-M3内核为例,介绍ARM的硬件配置。 Cort-M3是一个32位ARM处理器内核,内部的数据宽度是32位的,寄存器也是32位的,存储器的接口同样也是32位的。为进
14、一步提高ARM处理器的处理能力,CM3的内部结构中包含了多条总线接口方式,每条总线都专门为特定的应用场合进行综合优化,并可以多条总线并行工作。 1.CM3中的寄存器组 R0R12为通用寄存器,都是32位的寄存器,主要用于ARM处理器内部的数据操作,但在ARM指令集中,并不是所,有的语句都可以访问R0R12寄存器。其中,绝大部分的16位Thumb指令只能访问R0R7寄存器,而32位的Thumb-2指令则可以访问所有的寄存器。 2.嵌套向量中断控制器 Cortex-M3在ARM内核上搭载了一个终端控制器,即嵌套向量终端控制器,它与ARM内核紧密耦合,并提供以下功能: 支持系统嵌套中断; 支持向量中
15、断; 支持动态调整中断优先级; 较短的中断延迟;,可屏蔽系统中断; 3.存储器映射 与其他ARM处理器不同的是,在Cortex-M3内核中,系统预先定义了存储器映射框架。通过将片上外设的寄存器映射到外设区,就可以实现以访问内存的方式来访问外部存储器,从而控制外设的工作。 4.存储器保护单元 在Cortex-M3中有一个可选的存储器保护单元,通过存储器保护单元可以对特权级访问和用户级访问分别实现不同的访问限制。在系统运行的过程中,当检测到权限犯规时 ,存储器会产生一个fault的异常。这个异常可以由fault异,常的服务例程来分析,同时也可以对其进行更正。 系统资源与性能参数 STM32处理器采
16、用ARM最先进的系统架构Cortex-M3,主要有以下优势: 系统采用哈佛结构,数据与程序相互独立; Thumb-2指令集以16位的代码密度具有32位指令的性能; 单周期乘法指令及硬件除法指令,提高浮点运算的处理能力; 内置快速中断控制器NVIC,提高系统实时性,中断间的延迟时间只需6个CPU周期; (1)ARM内核,采用ARM32位的Cortex-M3处理器,最高工作频率可达72MHz,1.25DMIPSMHz,支持单周期乘法和硬件除法。 (2)片上存储器 处理器集成32512KB的Flash存储器,648KB的SAM 存储器。 (3)时钟、复位和电源管理 芯片支持2.03.6V的电源供电,其中IO接口的驱动电压最高可达5V。在芯片内部,集成了POR、PDR及可编程的电压。外接416MHz的无源晶振,内嵌出厂前调校的8MHz的RC振荡电路,以及40KHz的RC振荡电路。除此之外,系统还支持带校准功能的用于实时时钟RTC的32.768KHz晶振。,(4)节电模式 芯片提供了三种支持低功耗的模式:休眠、停止及待机模式。在节电模式中