基于ARM Cortex-M3的STM32微控制器实战教程(第2版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-21 09:36:43

点击下载

作者:杨余柳,张叶茂,等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

基于ARM Cortex-M3的STM32微控制器实战教程(第2版)

基于ARM Cortex-M3的STM32微控制器实战教程(第2版)试读:

前言

本书第一版自2014年8月出版后,深受广大嵌入式爱好者和高校师生的喜爱和推崇,已多次重印且销售一空。同时,大家也对本书第一版中存在的不足提出了一些宝贵的意见与建议。另外,深圳信盈达电子有限公司的教研工程师们在教学和实践过程中也发现本书第一版中也有部分内容编排的不太合理。因此,决定对本书第一版进行修订,以满足广大嵌入式爱好者和高校电子相关专业师生的学习需要。

这次修订不仅修改了第一版中发现的各种差错,而且还对描述不够准确、不够严谨的地方进行了修正,特别对CM3核心的部分内容进行了修改与补充,使其更加准确,同时还增加了μC/OS-Ⅱ实时操作系统在STM32上应用的详尽描述。通过修改,力争使本书更加实用,更加有利于读者的动手操作与实践。

在嵌入式产品开发过程中,实时操作系统的应用越来越广泛,而嵌入式实时操作种类又比较繁杂。现在出现的一个局面,就是一些读者想学嵌入式实时操作系统,但是不知道选择哪一种操作系统进行学习。编著者认为,不管哪种嵌入式操作系统,其核心的思想都是互通的,学好一种嵌入式实时操作系统,即使以后工作中用的是另一种,你也会很快掌握的。本书的实时操作系统选择的是μC/OS-Ⅱ,此实时操作系统可谓经典中的经典。在本书中,对μC/OS-Ⅱ的讲解,强调的是应用,跳过了一些烦琐的内部实现方面的内容。

本书由杨余柳 (深圳信盈达电子有限公司)、张叶茂 (南宁职业技术学院机电工程学院)和伦砚波 (深圳信盈达电子有限公司)编写。本书的修订得到了深圳信盈达电子有限公司同仁的鼎力支持,在此特别感谢李令伟先生、牛乐乐先生和陈志发先生,还有唐继奎、秦培良两位工程师;也感谢电子工业出版社李树林编辑;更感谢那些在阅读本书的过程中发现问题并及时反馈给我们的读者,正是有了你们的支持,我们才有更大的动力和热情去完善本书。

金无足赤,人无完人。本书也难免有待提高的地方,希望广大读者对本书中的不足给予指正,支持我们把本书修改得更加完善与适用。同时,读者可到信盈达网站(www.edu118.com)进行意见反馈与咨询,也可直接发邮件 (yangyuliu@edu118.com)给我们。编著者第1章ARM 和嵌入式系统介绍1.1 ARM微处理器概述1.1.1 ARM简介

ARM是Advanced RISCMachines的缩写,它既可以看作一个公司的名字,也可以看作对一类微处理器的通称,还可以认为是一种技术的名字。

1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。ARM公司只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。目前,采用ARM技术知识产权 (IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场。基于ARM技术的微处理器应用占据了32位RISC微处理器约75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。

半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。目前,全世界有几十家大型半导体公司都使用ARM公司的授权,因此,既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。

ARM采用 RISC体系结构 (Reduced Instruction Set Computer,精简指令集计算机),RISC结构优先选取使用频率最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻址方式种类减少;以控制逻辑为主,不用或少用微码控制等。1.1.2 ARM微处理器的应用领域及特点

1.ARM微处理器的应用领域

到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域。(1)工业控制领域:基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。(2)无线通信领域:目前,已有超过85%的无线通信设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。(3)网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上进行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战 (实际上还不如DSP,就像单片机中内部集成了AD/DA一样,毕竟不是单独的AD/DA芯片)。(4)消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。(5)成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SIM智能卡也采用了ARM技术。

除此以外,ARM微处理器及技术还应用到了许多领域,将来还会得到更加广泛的应用。

2.ARM微处理器的特点

采用RISC架构的ARM微处理器一般具有以下特点:(1)体积小、低功耗、低成本、高性能;(2)支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;(3)大量使用寄存器,指令执行速度更快;(4)大多数数据操作都在寄存器中完成;(5)寻址方式灵活简单,执行效率高;(6)指令长度固定 (32位或16位)。1.1.3 ARM微处理器系列

ARM微处理器目前包括下面几个系列,以及其他厂商基于ARM体系结构的处理器,除了具有ARM体系结构的共同特点以外,每个系列的ARM微处理器都有各自的特点和应用领域。

·ARM7系列;

·ARM9系列;

·ARM9E系列;

·ARM10E系列;

·SecurCore系列;

·Inter的Xscale;

·Inter的StrongARM;

·Cortex-R系列针对实时系统设计,支持ARM、Thumb和Thumb-2指令集;

·Cortex-M系列 (2008年推出);

·Cortex-A(2008年推出,Cortex-A8第一款基于ARMv7构架的应用处理器)。

其中,ARM7、ARM9、ARM9E和ARM10为4个通用处理器系列,每个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。

以下我们来详细了解一下各种处理器的特点及应用领域。

1.ARM 7微处理器系列

ARM7微处理器系列为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。ARM7微处理器系列具有以下特点:(1)具有嵌入式ICE-RT逻辑,调试开发方便;(2)极低的功耗,适合对功耗要求较高的应用,如便携式产品;(3)能够提供0.9MIPS/MHz的三级流水线结构 (MIPS含义:百万条指令每秒);(4)代码密度高并兼容16位的Thumb指令集;(5)支持不需要MMU的实时操作系统,如μC/OS、μclinux;(6)指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户的产品升级换代。(7)主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂应用。

ARM7系列微处理器的主要应用领域为:工业控制、Internet设备、网络和调制解调器设备、移动电话等。

2.ARM 9微处理器系列

ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能,具有以下特点:(1)5级整数流水线,指令执行效率更高;(2)提供1.1MIPS/MHz的哈佛结构;(3)支持32位ARM指令集和16位Thumb指令集;(4)支持32位的高速AMBA总线接口;(5)全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统;(6)MPU支持实时操作系统;(7)支持数据Cache和指令Cache,具有更高的指令和数据处理能力。

ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。ARM9系列微处理器包含 ARM920T、ARM922T和ARM940T三种类型,以适用于不同的应用场合。

3.ARM Cortex-A8处理器的介绍

Cortex-A8是第一款基于ARMv7构架的应用处理器。Cortex-A8也是ARM公司有史以来性能最强劲的一款处理器,主频为600MHz~1GHz。A8可以满足各种移动设备的需求,其功耗低于300毫瓦,而性能却高达2000MIPS。

Cortex-A8是ARM公司第一款超级标量处理器。在该处理器的设计当中,采用了新的技术以提高代码效率和性能。Cortex-A8采用了专门针对多媒体和信号处理的NEON技术,同时,还采用了Jazelle RCT技术,能够支持JAVA程序的预编译与实时编译。

针对Cortex-A8,ARM公司专门提供了新的函数库 (Artisan Advantage-CE)。新的库函数可以有效提高异常处理的速度并降低功耗。同时,新的库函数还提供了高级内存泄漏控制机制。

在结构特性方面Cortex-A8采用了复杂的流水线构架。(1)顺序执行,同步执行的超标量处理器内核:

13级主流水线;

10级NEON多媒体流水线;

专用的L2缓存;

基于执行记录的跳转预判。(2)针对强调功耗的应用,Cortex-A8采用了一个优化的装载/存储流水线,可以提供2 DMIPS/MHz功能。(3)采用ARMv7构架:

支持THUMB-2,提供了更高的性能,改善了功耗和代码效率;

支持NEON信号处理,增强了多媒体处理能力;

采用了新的Jazelle RCT技术,增强了对JAVA的支持;

采用了TrustZone技术,增强了安全性能。(4)集成了L2缓存:

编译时,可以把缓存当作标准的RAM进行处理;

缓存大小可以灵活配置;

缓存的访问延迟可以编程控制。(5)优化的L1缓存,可以提高访问存储速度,并降低功耗。(6)动态跳转预判:

基于跳转目的和执行记录的预判;

提供高达95%的准确性;

提供重放机制,有效降低了预判错误带来的性能损失。

4.Cortex-M 3

Cortex-M3是一个32位的内核,在传统的单片机领域中,它有一些不同于通用32位CPU应用的要求。例如,在工控领域,用户要求具有更快的中断速度,Cortex-M3采用了Tail-Chaining中断技术,完全基于硬件进行中断处理,最多可减少12个时钟周期数,在实际应用中可减少70%的中断 (这里不是中断响应时间)。

单片机的另一个特点是调试工具非常便宜,不像ARM的仿真器动辄几千上万元。针对这个特点,Cortex-M3采用了新型的单线调试 (Single Wire)技术,专门拿出一个引脚来做调试,从而节约了大笔的调试工具费用。同时,Cortex-M3中还集成了大部分控制器,这样工程师可以直接在MCU外连接Flash,从而降低了设计难度和应用障碍。ARM Cortex-M3处理器结合了多种突破性技术,令芯片供应商提供超低费用的芯片,仅33000门的内核性能可达1.2DMIPS/MHz。该处理器还集成了许多紧耦合系统外设,令系统能满足下一代产品的控制需求。

Cortex的优势在于低功耗、低成本、高性能三者 (或两者)的结合。关于编程模式Cortex-M3处理器采用ARMv7-M架构,它包括所有的16位Thumb指令集和基本的32位Thumb-2指令集架构,Cortex-M3处理器不能执行ARM指令集。Thumb-2在Thumb指令集架构 (ISA)上进行了大量的改进,它与Thumb相比,具有更高的代码密度并提供16/32位指令的更高性能。1.1.4 ARM微处理器结构

1.RISC体系结构

传统的CISC(Complex Instruction Set Computer,复杂指令集计算机)结构有其固有的缺点,即随着计算机技术的发展而不断引入新的复杂的指令集,为支持这些新增的指令,计算机的体系结构会越来越复杂,然而,在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%,显然,这种结构是不合理的。

基于以上的不合理性,1979年美国加州大学伯克利分校提出了RISC(Reduced Instruction Set Computer,精简指令集计算机)的概念,RISC并非只是简单地减少指令,而是把着眼点放在了如何使计算机的结构更加简单合理地提高运算速度上。RISC结构优先选取使用频率最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻址方式种类减少;以控制逻辑为主,不用或少用微码控制等措施来达到上述目的。到目前为止,RISC体系结构还没有严格的定义,一般认为,RISC体系结构应具有以下特点:(1)采用固定长度的指令格式,指令归整、简单,基本寻址方式有2~3种。(2)使用单周期指令,便于流水线操作执行。(3)大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率。除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗:所有的指令都可以根据前面的执行结果,来决定是否被执行 (条件执行),从而提高指令的执行效率。(4)可用加载/存储指令批量传输数据,以提高数据的传输效率。(5)可在一条数据处理指令中,同时完成逻辑处理和移位处理。(6)在循环处理中使用地址的自动增减来提高运行效率。

当然,和CISC架构相比较,尽管RISC架构有上述优点,但决不能认为RISC架构就可以取代CISC架构,事实上,RISC和CISC各有优势,而且界限并不那么明显。现代的CPU往往采用CISC的外围,内部加入了RISC的特性,如超长指令集CPU就融合了RISC和CISC的优势,成为未来CPU的发展方向之一。

2.ARM微处理器的寄存器结构

ARM处理器共有37个寄存器,被分为若干个组 (BANK),这些寄存器包括:(1)31个通用寄存器,包括程序计数器 (PC指针),均为32位的寄存器;(2)6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。

同时,ARM处理器又有7种不同的处理器模式,在每一种处理器模式下均有一组相应的寄存器与之对应,即在任意一种处理器模式下,可访问的寄存器包括15个通用寄存器(R0~R14)(快中断模式除外)、1~2个状态寄存器 (CPSR SPSR用户模式和系统模式没有)和程序计数器。在所有的寄存器中,有些是在7种处理器模式下共用的同一个物理寄存器,而有些寄存器则是在不同的处理器模式下有不同的物理寄存器。关于ARM处理器的寄存器结构,在后面的相关章节将会详细描述。

3.ARM微处理器的指令结构

在较新的体系结构中,ARM微处理器支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位,Thumb指令为16位。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。

关于ARM处理器的指令结构,在后面的相关章节将会详细描述。

1.1.5 ARM微处理器的应用选型

鉴于ARM微处理器的众多优点,随着国内外嵌入式应用领域的逐步发展,ARM微处理器必然会获得广泛的重视和应用。但是,由于ARM微处理器有多达十几种的内核结构、几十家芯片生产厂,以及千变万化的内部功能配置组合,给开发人员在选择方案时带来一定的困难,所以,对ARM芯片做一些对比研究是十分必要的。

从应用的角度出发,在选择ARM微处理器时,应主要考虑以下几个方面的问题。

1.ARM微处理器内核的选择

ARM微处理器包含一系列的内核结构,以适应不同的应用领域。如果用户希望使用WinCE或标准Linux等操作系统以减少软件开发时间,就需要选择ARM720T以上带有MMU (Memory Management Unit)功能的 ARM芯片,如 ARM720T、ARM920T、ARM922T、ARM946T、Strong-ARM都带有MMU功能。

2.系统的工作频率

系统的工作频率在很大程度上决定了ARM微处理器的处理能力。ARM7系列微处理器的典型处理速度为0.9MIPS,常见的ARM7芯片系统主时钟为20~133MHz,ARM9系列微处理器的典型处理速度为1.1MIPS/MHz,常见的 ARM9的系统主时钟频率为100~233MHz,ARM10最高可以达到700MHz。

3.芯片内存储器的容量

大多数的ARM微处理器片内存储器的容量都不大,需要用户在设计系统时外扩存储器,但也有部分芯片具有相对较大的片内存储空间。

4.片内外围电路的选择

除ARM微处理器核以外,几乎所有的ARM芯片均根据各自不同的应用领域,扩展了相关功能模块,并集成在芯片之中,我们称之为片内外围电路,如USB接口、IIS接口、LCD控制器、键盘接口、RTC、ADC、DAC和DSP协处理器等。1.2 嵌入式系统的概念1.2.1 嵌入式系统定义

目前,对嵌入式系统的定义多种多样,但没有一种定义是全面的。下面给出两种比较合理的定义。

从技术的角度定义:以应用为中心,以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

从系统的角度定义:嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。这个定义说明,一些嵌入式系统通常是更大系统中的一个完整部分,称为嵌入的系统。嵌入的系统中可以共存多个嵌入式系统。汽车控制系统如图1.1所示。图1.1 汽车控制系统1.2.2 嵌入式发展过程

1.嵌入式微处理器 (单板计算机)

嵌入式微处理器的基础是通用计算机中的CPU。在应用中,将微处理器装配在专门设计的电路板上,只保留与嵌入式应用有关的母板功能,这样可以大幅度减小系统体积和功耗。

为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上与标准微处理器基本一样,但在工作温度、抗电磁干扰、可靠性等方面一般都有各种增强。

和工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。嵌入式微处理器及其存储器、总线、外设等安装在一块电路板上,称为单板计算机(图1.2),如STD-BUS、PC104等。图1.2 单板计算机

但是,在电路板上必须包括ROM、RAM、总线接口、各种外设等器件,从而降低了系统的可靠性,技术保密性也较差。现在已经较少使用了。

目前,嵌入式处理器主要有Am186/88、386EX、SC-400、Power PC、68000、MIPS、ARM系列等。嵌入式微处理器又可分为CISC和RISC两类。大家熟悉的大多数台式PC都使用CISC微处理器,如Intel的x86。RISC结构体系有两大主流:Silicon Graphics公司 (硅谷图形公司)的MIPS技术;ARM公司的Advanced RISCMachines技术,此外,Hitachi(日立公司)也有自己的一套RISC技术SuperH。

嵌入式微处理器的选型原则:(1)调查市场上已有的CPU供应商;(2)CPU的处理速度;(3)技术指标;(4)处理器的低功耗;(5)处理器的软件支持工具;(6)处理器是否内置调试工具;(7)处理器供应商是否提供评估板。

选择一个嵌入式系统运行所需要的微处理器,在很多时候运算速度并不是最重要的考虑内容,有时也必须考虑微处理器制造厂商对于该微处理器的支持态度,有些嵌入式系统产品一用就是几十年,如果过了五六年之后需要维修,却已经找不到该种微处理器的话,势必全部产品都要被淘汰,所以许多专门生产嵌入式系统微处理器的厂商,都会为嵌入式系统的微处理器留下足够的库存或生产线。也就是说,即使过了好多年,都能够找到相同型号的微处理器或者完全兼容的替代品。

2.嵌入式微控制器 (单片机)MCU

嵌入式微控制器又称单片机,它是将整个计算机系统集成到一块芯片中,图1.3和图1.4为嵌入式微控制器及其芯片内部图。图1.3 嵌入式微控制器图1.4 嵌入式微控制器芯片内部图

嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成ROM/EPROM、 RAM、总线、总线逻辑、定时/计数器、WatchDog、I/O、串行口、脉宽调制输出、A/D、D/A、Flash RAM、EEPROM等各种必要功能和外设。为适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置及封装。这样可以使单片机最大限度和应用需求相匹配,功能不多不少,从而减少功耗和成本。

和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系统工业的主流。微控制器的片上外设资源一般比较丰富,适合控制,因此称微控制器。目前,嵌入式微控制器的品种和数量较多,比较有代表性的通用系列有 8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300,以及数目众多的ARM芯片等。目前MCU约占嵌入式系统70%的市场份额。

3.嵌入式处理器——DSP处理器

DSP处理器对系统结构和指令进行了特殊设计,使其适合执行DSP算法,编译效率较高,指令执行速度也较高。在数字滤波、FFT、频谱分析等方面DSP算法正在大量进入嵌入式领域,DSP应用正从在通用单片机中以普通指令实现DSP功能,过渡到采用嵌入式DSP处理器。

4.嵌入式处理器——嵌入式片上系统 (SoC)(ARM也属于SoC系统)

随着EDA的推广和VLSI设计的普及化及半导体工艺的迅速发展,在一个硅片上实现一个更为复杂的系统的时代已来临,这就是System On Chip(SoC)。各种通用处理器内核将作为SoC设计公司的标准库,和许多其他嵌入式系统外设一样,成为VLSI设计中一种标准的器件,用标准的VHDL等语言描述,存储在器件库中。用户只需定义出其整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作样品。这样除个别无法集成的器件以外,整个嵌入式系统大部分均可集成到一块或几块芯片中去,应用系统电路板将变得很简洁,对于减小体积和功耗、提高可靠性非常有利。

SoC可以分为通用和专用两类。通用系列包括Infineon的TriCore、Motorola的M-Core、某些ARM系列器件、Echelon和Motorola联合研制的Neuron芯片等。专用SoC一般用于某个或某类系统中,不为一般用户所知。一个有代表性的产品是Philips的Smart XA,它将XA单片机内核和支持超过2048位复杂RSA算法的CCU单元制作在一块硅片上,形成一个可加载JAVA或C语言的专用的SoC,可用于公众互联网的安全方面。1.3 嵌入式操作系统1.3.1 概述

计算机系统由硬件和软件组成,在发展初期没有操作系统这个概念,用户使用监控程序来使用计算机。随着计算机技术的发展,计算机系统的硬件、软件资源也越来越丰富,监控程序已不能适应计算机应用的要求。于是在20世纪中期,监控程序又进一步发展形成了操作系统 (Operating System)。发展到现在,广泛应用的有三种操作系统,即多道批处理操作系统、分时操作系统,以及实时操作系统,如图1.5所示。图1.5 操作系统类别

提到桌面型计算机的操作系统,全世界超过九成的PC使用的是微软 (Microsoft)公司的Windows操作系统,其他也有一些颇具知名度的操作系统,如苹果 (Apple)公司的MacOS,工作站级计算机常用的Sun公司的Solaris,还有Linux或FreeBSD等免费的操作系统,但是提到嵌入式系统中所使用的操作系统,一般用户就很少了解了。由于大型嵌入式系统需要完成复杂的功能,所以需要操作系统来完成各项任务之间的调度。由于桌面型操作系统的体积,以及实时性等特性不能满足嵌入式系统的要求,从而促进了嵌入式操作系统的发展。1.3.2 操作系统

操作系统 (Operating System,OS)的基本思想是隐藏底层不同硬件的差异,向在其上运行的应用程序提供一个统一的调用接口。应用程序通过这一接口实现对硬件的使用和控制,不必考虑不同硬件操作方式的差异。操作系统示意图如图1.6所示。图1.6 操作系统示意图

很多产品厂商选择购买操作系统,在此基础上开发自己的应用程序,形成产品。事实上,因为嵌入式系统是将所有程序,包括操作系统、驱动程序、应用程序的程序代码全部烧写进ROM里执行,所以操作系统在这里的角色更像一套函数库 (Library)。

操作系统主要完成三项任务:内存管理、多任务管理和外围设备管理。

操作系统是计算机中最基本的程序。操作系统负责计算机系统中全部软、硬件资源的分配与回收、控制与协调等并发的活动;操作系统提供用户接口,使用户获得良好的工作环境;操作系统为用户扩展新的系统功能提供软件平台。

嵌入式操作系统 (Embedded Operating System):负责嵌入式系统的全部软、硬件资源的分配、调度、控制、协调;它必须体现其所在系统的特征,能够通过加载/卸载某些模块来达到系统所要求的功能。

嵌入式系统的操作系统核心通常要求体积要很小,因为硬件ROM的容量有限,除了应用程序之外,不希望操作系统占用太大的存储空间。事实上,嵌入式操作系统可以很小,只提供基本的管理功能和调度功能,缩小到10~20KB的嵌入式操作系统比比皆是,相信习惯微软的Windows系统的用户,可能会觉得不可思议。

不同的应用场合会产生不同特点的嵌入式操作系统,但都会有一个核心 (Kernel)和一些系统服务 (System Service)。操作系统必须提供一些系统服务供应用程序调用,包括文件系统、内存分配、I/O存取服务、中断服务、任务 (Task)服务、时间 (Timer)服务等,设备驱动程序 (Device Driver)则是要建立在I/O存取和中断服务上的。有些嵌入式操作系统也会提供多种通信协议,以及用户接口函数库等。嵌入式操作系统的性能通常取决于核心程序,而核心的工作主要在任务管理 (Task Management)、任务调度 (Task Scheduling)、进程间的通信 (IPC)、内存管理 (Memory Management)等方面。1.3.3 实时操作系统 (RTOS)

实时操作系统是一段在嵌入式系统启动后首先执行的背景程序,用户的应用程序是运行于RTOS之上的各个任务,RTOS根据各个任务的要求,进行资源 (包括存储器、外设等)管理、消息管理、任务调度、异常处理等工作。在RTOS支持的系统中,每个任务均有一个优先级,RTOS根据各个任务的优先级,动态地切换各个任务,保证对实时性的要求。

实时操作系统 (Real-Time Operating System,RTOS)是指操作系统本身能够在一个固定时限内对程序调用 (或外部事件)做出正确的反应,这对时序与稳定性的要求十分严格。目前国际较为知名的实时操作系统有WindRiver的“VxWorks”、QNX的“NeutrinoRTOS”、Accelerated Technology的“Nucleus Plus”、Radisys的“OS/9”、Mentor Graphic的“VRTX”、LynuxWorks的“LynuxOS”,以及Embedded Linux厂商所提供的Embedded Linux版本,如Lynux Works的“BlueCat RT”等。其产品主要应用于航空航天、国防、医疗、工业控制等领域,这些领域的设备需要高度精确的实时操作系统,以确保系统任务的执行不会发生难以弥补的意外。

1.实时操作系统的特点

IEEE的实时UNIX分委会认为实时操作系统应具备以下几点:

·异步的事件响应;

·切换时间和中断延迟时间确定;

·优先级中断和调度;

·抢占式调度;

·内存锁定;

·连续文件;

·同步。

总地来说,实时操作系统是事件驱动的,能对来自外界的作用和信号在限定的时间范围内做出响应。它强调的是实时性、可靠性和灵活性,与实时应用软件相结合而成为有机的整体,它起着核心作用并管理和协调各项工作,为应用软件提供良好的运行软件环境及开发环境。从实时系统的应用特点来看,实时操作系统可以分为两种:一般实时操作系统和嵌入式实时操作系统。一般实时操作系统应用于实时处理系统的上位机和实时查询系统等实时性较弱的系统,并且提供了开发、调试、运用相匹配的环境。

嵌入式实时操作系统应用于实时性要求高的控制系统,而且应用程序的开发过程是通过交叉开发来完成的,即开发环境与运行环境不一致。嵌入式实时操作系统具有规模小 (一般在几至几十K)、可固化使用实时性强 (在毫秒或微秒数量级上)的特点。

2.使用实时操作系统的必要性

嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得越来越重要。在嵌入式应用中,只有把CPU嵌入到系统中,同时又把操作系统嵌入进去,才是真正的计算机嵌入式应用。使用实时操作系统主要原因有:

·嵌入式实时操作系统提高了系统的可靠性;

·提高了开发效率,缩短了开发周期;

·嵌入式实时操作系统充分发挥了32位CPU的多任务潜力。

3.实时操作系统的优缺点

优点:在嵌入式实时操作系统环境下,开发实时应用程序使程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;而且对实时性要求苛刻的事件都得到了快速、可靠的处理。通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。

缺点:使用嵌入式实时操作系统还需要额外的ROM/RAM开销,2%~5%的CPU额外负荷,以及内核的费用。1.3.4 通用型操作系统

通用型操作系统的执行性能与反应速度比起实时操作系统,相对没有那么严格。目前较知名的有 Microsoft的“Windows CE”、Palm source的“Palm OS”、Symbian的“Symbian OS”,以及Embedded Linux厂商所提供的各式Embedded Linux版本,如Metrowerks的“Embedix”、TimeSys的“TimeSys Linux/GPL”、LynuxWorks的“BlueCat Linux”、PalmPalm的“Tynux”等,其产品主要应用于手持式设备、各式联网家电、网络设备等领域。1.3.5 嵌入式常见的几个概念

1.前、后台系统

对基于芯片的开发来说,应用程序一般是一个无限的循环,可称为前、后台系统或超循环系统。很多基于微处理器的产品采用前后台系统设计,如微波炉、电话、玩具等。在另外一些基于微处理器应用中,从省电的角度出发,平时微处理器处在停机状态,所有程序都靠中断服务来完成。

2.代码的临界区

代码的临界区简称为临界区,指处理时不可分割的代码,运行这些代码不允许被打断。一旦这部分代码开始执行,则不允许任何中断打入 (这不是绝对的,如果中断不调用任何包含临界区的代码,也不访问任何临界区使用的共享资源,这个中断可能可以执行)。为确保临界区代码的执行,在进入临界区之前要关中断,而临界区代码执行完成以后要立即开中断。图1.7所示为前、后台系统。图1.7 前、后台系统

3.资源

程序运行时可使用的软、硬件环境统称为资源。资源可以是输入、输出设备,如打印机、键盘、显示器;资源也可以是一个变量、一个结构或一个数组等。

4.共享资源

可以被一个以上任务使用的资源叫作共享资源。为了防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源,这叫作互斥。共享资源如图1.8所示。图1.8 共享资源

5.任务

一个任务 (又称作一个线程)是一个简单的程序,可以认为CPU完全属于该程序自身。实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,都被赋予一定的优先级,有自己的一套CPU寄存器和自己的栈空间。

6.任务切换

当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态,即CPU寄存器中的全部内容。这些内容保存在任务的当前状态保存区,也就是任务自己的栈区之中。入栈工作完成以后,就把下一个将要运行的任务的当前状态从任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行。这个过程就称为任务切换。

任务切换增加了应用程序的额外负荷。CPU的内部寄存器越多,额外负荷就越重。做任务切换所需要的时间取决于CPU有多少寄存器要入栈。

7.内核

多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通信。内核提供的基本服务是任务切换。使用实时内核可以大大简化应用系统的设计,因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。内核需要消耗一定的系统资源,比如2%~5%的CPU运行时间、RAM和ROM等。

内核提供必不可少的系统服务,如信号量、消息队列、延时等。

8.调度

调度是内核的主要职责之一,就是决定该轮到哪个任务运行了。多数实时内核是基于优先级调度法的。每个任务根据其重要程序的不同而被赋予一定的优先级。基于优先级的调度法是指CPU总是让处在就绪态的优先级最高的任务先运行。然而,究竟何时让高优先级任务掌握CPU的使用权?这有两种不同的情况,主要看用的是什么类型的内核,是非占先式的还是占先式的内核。

9.非占先式内核

非占先式内核要求每个任务自我放弃CPU的所有权。非占先式调度法也称为合作型多任务,各个任务彼此合作共享一个CPU。异步事件由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后,控制权将回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,其他高优先级的任务才能获得CPU的使用权。

10.占先式内核

当系统响应任务很重要时,要使用占先式内核。因此绝大多数商业上销售的实时内核都是占先式内核。最高优先级的任务一旦就绪,总能得到CPU的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪状态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。如果中断服务子程序使一个高优先级的任务进入就绪态,那么中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行了。

11.任务优先级

任务的优先级是表示任务被调度的优先程度。每个任务都具有优先级。任务越重要,赋予的优先级应越高,越容易被调度而进入运行态。

12.中断

不同系统的中断过程如图1.9所示。

中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被识别,CPU保存部分 (或全部)上下文即部分或全部寄存器的值,然后跳转到专门的子程序,即中断服务子程序 (ISR)。中断服务子程序进行事件处理,处理完成后,程序进行:图1.9 不同系统的中断过程(1)在前、后台系统中,程序回到后台程序;(2)对非占先式内核而言,程序回到被中断了的任务;(3)对占先式内核而言,让进入就绪态的优先级最高的任务开始运行。

13.时钟节拍

时钟节拍是指特定的周期性中断。这个中断可以看作系统心脏的脉动。中断之间的时间间隔取决于不同应用,一般在10~200ms之间。时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。如果时钟节拍率越快,系统的额外开销就越大。1.3.6 常见的嵌入式操作系统

1.嵌入式Linux

Linux操作系统是UNIX操作系统的一种克隆系统。它诞生于1991年的10月5日 (这是第一次正式向外公布的时间)。此后借助于互联网,经过全世界各地计算机爱好者的共同努力,已成为当今世界上使用最多的一种UNIX类操作系统,并且使用人数还在迅猛增长。

Linux是目前最为流行的一款开放源代码的操作系统,从1991年问世到现在,不仅在PC平台,还在嵌入式应用中大放光彩,逐渐形成了与其他商业EOS抗衡的局面。目前正在开发的嵌入式系统中,70%以上的项目选择Linux作为嵌入式操作系统。

经过改造后的嵌入式Linux具有适合嵌入式系统的特点。(1)内核精简,高性能、稳定;(2)良好的多任务支持;(3)适用于不同的CPU体系架构,即支持多种体系架构,如X86、ARM、MIPS、ALPHA、SPARC等;(4)可伸缩的结构,使Linux适合从简单到复杂的各种嵌入式应用;(5)外设接口统一,以设备驱动程序的方式为应用提供统一的外设接口;(6)开放源码,软件资源丰富,广泛的软件开发者的支持,价格低廉、结构灵活、适用面广;(7)完整的技术文档,便于用户的二次开发。

uClinux是一个完全符合GNU/GPL公约的操作系统,完全开放代码。uClinux从Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性。它是专门针对没有MMU的CPU,并且为嵌入式系统做了许多小型化的工作。适用于没有虚拟内存或内存管理单元(MMU)的处理器,例如ARM7TDMI。它通常用于具有很少内存或Flash的嵌入式系统。它保留了Linux的大部分优点:稳定、良好的移植性,优秀的网络功能,完备地支持各种文件系统,以及标准丰富的API等。注意:LINUX2.6版本已经能够在没有MMU的处理器上运行了。

2.W indows CE

Windows CE是微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作,它是精简的Windows 95。Windows CE的图形用户界面相当出色。Windows CE具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点。Linux操作系统界面和Windows CE分别如图1.10和图1.11所示。Windows CE不仅继承了传统的Windows图形界面,并且在Windows CE平台上可以使用Windows 95/98上的编程工具 (如Visual Basic、Visual C++等),使绝大多数的应用软件只须简单的修改和移植就可以在Windows CE平台上继续使用。图1.10 Linux操作系统界面图1.11 Windows CE

从多年前发表Windows CE开始,微软就开始涉足嵌入式操作系统领域,目前已历经了Windows CE 1.0到7.0,共7个不同的版本,新一代的Windows CE呼应微软.NET的意愿,定名为“Windows CE.NET”。Windows CE主要应用于PDA,以及智能电话 (smart phone)等多媒体网络产品。微软于2004年推出了代号为“Macallan”的新版Windows CE系列的操作系统。

Windows CE.NET的目的,是让不同语言所写的程序可以在不同的硬件上执行,也就是所谓的.NET Compact Framework,在这个Framework下的应用程序与硬件互相独立无关,而内核本身是一个支持多线程以及多CPU的操作系统。在工作调度方面,为了提高系统的实时性,主要设置了256级的工作优先级,以及可嵌入式中断处理。

如同在PC Desktop环境,Windows CE系列在通信和网络的能力,以及多媒体方面极具优势。其提供的协议软件非常完整,如基本的PPP、TCP/IP、IrDA、ARP、ICMP、Wireless Tunable TCP/IP、PPTP、SNMP、HTTP等几乎应有尽有,甚至还提供了有保密与验证的加密通信,如PCT/SSL。在多媒体方面,目前在PC上执行的Windows Media和DirectX都已经应用到Windows CE 3.0以上的平台。这些包括Windows Media Technologies4.1、Windows Media Player 6.4 Control、DirectDraw API、DirectSound API和DirectShow API,其主要功能就是对图形、影音进行编码和译码,以及对多媒体信号进行处理。

3.μC/OS-Ⅱ

μC/OS-Ⅱ是Jean J.Labrosse在1990年前后编写的一个实时操作系统内核。其名称μC/OS-Ⅱ来源于术语Micro-Controller Operating System(微控制器操作系统)。它通常也被称为MUCOS或UCOS。严格地说,μC/OS-Ⅱ只是一个实时操作系统内核,它仅仅包含了任务调度、任务管理、时间管理、内存管理和任务间通信和同步等基本功能,没有提供输入/输出管理、文件管理、网络等额外的服务。但由于μC/OS-Ⅱ良好的可扩展性和源码开放,这些功能完全可以由用户根据需要自己实现。μC/OS-Ⅱ的目标是实现一个基于优先级调度的抢占式实时内核,并在这个内核之上提供最基本的系统服务,如信号量、邮箱、消息队列、内存管理、中断管理等。虽然μC/OS-Ⅱ并不是一个商业实时操作系统,但μC/OS-Ⅱ的稳定性和实用性却被数百个商业级的应用所验证,其应用领域包括便携式电话、运动控制卡、自动支付终端、交换机等。μC/OS-Ⅱ是一个源码公开、可移植、可固化、可裁剪、占先式的实时多任务操作系统,其绝大部分源码是用ANSIC写的,只有与处理器的硬件相关的一部分代码用汇编语言编写。使其可以方便地移植并支持大多数类型的处理器。可以说,μC/OS-Ⅱ在最初设计时就考虑到了系统的可移植性,这一点和同样源码开放的Linux很不一样,后者在开始的时候只是用于x86体系结构,后来才将和硬件相关的代码单独提取出来。

目前,μC/OS-Ⅱ支持ARM、PowerPC、MIPS、68k/ColdFire和x86等多种体系结构。

μC/OS-Ⅱ通过了美国联邦航空局 (FAA)商用航行器认证。自1992年问世以来,μC/OS-Ⅱ已经被应用到数以百计的产品中。μC/OS-Ⅱ占用很少的系统资源,并且在高校教学使用时不需申请许可证。

4.VxW orks

VxWorks操作系统是美国WIND RIVER公司于1983年设计开发的一种嵌入式实时操作系统 (RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核,以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空航天等高精尖技术及实时性要求极高的领域中,如卫星通信、军事演习、弹道制导、飞机导航等,甚至在1997年4月登陆火星表面的火星探测器上也使用到了VxWorks。

5.eCos

eCos是RedHat公司开发的源代码开放的嵌入式RTOS产品,是一个可配置、可移植的嵌入式实时操作系统,设计的运行环境为RedHat的GNUPro和GNU开发环境。eCos的所有部分都开放源代码,可以按照需要自由修改和添加。eCos最为显著的特点是它的可配置性。它的主要技术创新是其功能强大的组件管理和系统配置,可以源码级实现对系统的配置和裁剪。此外,eCos可以通过安装第三方组件包来扩展系统功能。

6.u ITRON

TRON是指“实时操作系统内核 (The Real-time Operating system Nucleux)”,在1984年由东京大学的Sakamura博士提出,目的是为了建立一个理想的计算机体系结构。通过工业界和大学院校的合作,TRON方案正被逐步用到全新概念的计算机体系结构中。

uITRON是TRON的一个子方案,它具有标准的实时内核,适用于任何小规模的嵌入式系统,日本国内现有很多基于该内核的产品,其中消费电器较多。目前已成为日本事实上的工业标准。

TRON明确的设计目标使其甚至比Linux更适合做嵌入式应用,内核小,启动速度快,即时性能好,也很适合汉字系统的开发。另外,TRON的成功还来源于以下两个重要的条件:(1)它是免费的;(2)它已经建立了开放的标准,形成了较完善的软、硬件配套开发环境,较好地形成了产业化。第2章ARM 体系结构

Cortex-M3系列处理器,其中包含了Thumb指令集。使用Thumb指令集可以以16位的系统开销得到32位的系统性能。

我们使用的开发板STM32F103RBT6芯片内核属于Cortex-M3的版本。指令集版本属于V7版本。2.1 ARM体系结构的特点

ARM处理器为RISC芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低,它具有以下经典RISC的特点:(1)大的、统一的寄存器文件;(2)装载/保存结构,数据处理操作只针对寄存器的内容,而不直接对存储器进行操作;(3)简单的寻址模式;(4)统一和固定长度的指令域,简化了指令的译码;(5)执行每条数据处理指令都会对算术逻辑单元和移位器进行控制,以实现对算术逻辑单元和移位器最大利用;(6)地址自动增加和减少寻址模式,优化程序循环;(7)多寄存器装载和存储指令实现最大数据吞吐量;(8)所有指令的条件执行实现最快速的代码执行。2.2 各ARM体系结构版本

ARM体系结构从最初开发到现在有了巨大的改进,并仍在完善和发展。为了清楚地表达每个ARM应用实例所使用的指令集,ARM公司定义了7种主要的ARM指令集体系结构版本,以版本号V1~V7表示。

1.ARM体系结构版本——V1

该版本的ARM体系结构,只有26位的寻址空间,没有商业化,其特点为:(1)基本的数据处理指令 (不包括乘法);(2)字节、字和半字加载/存储指令;(3)具有分支指令,包括在子程序调用中使用的分支和链接指令;(4)在操作系统调用中使用的软件中断指令。

2.ARM体系结构版本——V2

同样为26位寻址空间,现在已经废弃不再使用,它相对V1版本有以下改进:(1)具有乘法和乘加指令;(2)支持协处理器;(3)快速中断模式中的两个以上的分组寄存器;(4)具有原子性加载/存储指令SWP和SWPB。

3.ARM体系结构版本——V3

寻址范围扩展到32位 (事实上也基本废弃了),具有以下独立的程序:(1)具有乘法和乘加指令;(2)支持协处理器;(3)快速中断模式中具有两个以上的分组寄存器;(4)具有原子性加载/存储指令SWP和SWPB。

4.ARM体系结构版本——V4

不再为了与以前的版本兼容而支持26位体系结构,并明确了哪些指令会引起未定义指令异常的发生,它相对V3版本做了以下的改进:(1)半字加载/存储指令;(2)字节和半字的加载和符号扩展指令;(3)具有可以转换到Thumb状态的指令;(4)用户模式寄存器新的特权处理器模式。

5.ARM体系结构版本——V5

在V4版本的基础上,对现在指令的定义进行了必要的修正,对V4版本的体系结构进行了扩展并增加了指令,具体如下:(1)改进了ARM/Thumb状态之间的切换效率;(2)允许非T变量和T变量一样,使用相同的代码生成技术;(3)增加计数前导零指令和软件断点指令;(4)对乘法指令如何设置标志作了严格的定义。

6.ARM体系结构版本——V6

ARM体系架构V6是2001年发布的,有以下基本特点:(1)完全与以前的体系相容;(2)SIMD媒体扩展,使媒体处理速度快1.75倍;(3)改进了的存储器管理,使系统性能提高30%;(4)改进了的混合端 (Endian)与不对齐资料支援,使得小端系统支援大端资料 (如TCP/IP),许多RTOS是小端的;(5)为实时系统改进了中断响应时间,将最坏情况下的35周期改进到了11个周期。

ARM体系版本V6是2001年发布的,其主要特点是增加了SIMD功能扩展。它适合电池供电的高性能的便携式设备。这些设备一方面需要处理器提供高性能,另一方面又需要功耗很低。SIMD功能扩展为包括音频/视频处理在内的应用系统提供优化功能。它可以使音频/视频处理性能提高4倍。ARM体系版本V6首先在2002年春季发布的ARM11处理器中使用。

7.ARM体系结构版本——V7

ARMV7架构是在ARMV6架构的基础上诞生的。该架构采用了Thumb-2技术,它是在ARM的Thumb代码压缩技术的基础上发展起来的,并且保持了对现存ARM解决方案的完整的代码兼容性。Thumb-2技术比纯32位代码少使用31%的内存,减小了系统开销,同时能够提供比已有的基于Thumb技术的解决方案高出38%的性能。ARMV7架构还采用了NEON技术,将DSP和媒体处理能力提高了近4倍,并支持改良的浮点运算,满足下一代3D图形、游戏物理应用以及传统嵌入式控制应用的需求。此外,ARMV7还支持改良的运行环境,以迎合不断增加的JIT(Just In Time)和DAC(Dynamic Adaptive Compilation)技术的使用。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载