笔记 | 嵌入式系统概论

1 嵌入式系统简介

1.1 嵌入式系统的定义

根据美国电气与电子工程师学会(IEEE:Institute of Electrical and Electronics Engineers )的定义,嵌入式系统是用于控制、监视或辅助操作机器和设备的装置(原文: devices used to control, monitor, or assist the operation of equipment, machinery or plants)。需指出的是,本定义并不能充分体现嵌入式系统的精髓,嵌入式系统的概念根本上应该从应用的角度予以阐述。

在国内的纵多嵌入式网站和相关书籍中,一般认为嵌入式系统是以应用为中心,以计算机技术为基础,并且软/硬件可裁剪,可满足应用系统对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统

嵌入式系统就是嵌入到对象体中的专用计算机系统,三要素:==嵌入性、专用性、专用性

嵌入性专用性专用性
嵌入到对象体系中,有对象环境要求软、硬件按对象要求裁减实现对象的智能化功能

1.2 嵌入式系统的特征

与通用计算机系统相比,嵌入式系统具有以下几个重要特征:

  • 面向特定应用:具有功耗低、体积小、集成度高等特点。
  • 硬件和软件都必须高效率地设计,量体裁衣:力争在同样的硅片面积上实现更高的性能,这样才能完成功能、可靠性和功耗的苛刻要求。
  • 实时操作系统支持。尽管嵌入式系统的应用程序可以不需要操作系统的支持就能直接运行,但是为了合理地调度多任务,充分利用系统资源,用户可以自行选配实时操作系统开发平台。
  • 嵌入式系统与具体应用有机地结合在一起,升级换代也是同步地进行。因此嵌入式系统产品一旦进入市场,具有较长的生命周期。
  • 为了提高运行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片中
  • 专门开发工具的支持。嵌入式系统本身不具备自主开发能力,即使在设计完成以后,用户通常也不能对程序功能进行修改,必须有一套开发工具和环境才能进行嵌入式系统开发。

1.3 嵌入式系统的组成

[[嵌入式系统的组成]]

2 嵌入式微处理器

嵌入式微处理器是嵌入式系统的核心。嵌入式微处理器通常把通用PC机中许多由板卡完成的任务集成到芯片内部,这样可以大幅减小系统的体积和功耗,具有重量轻、成本低、可靠性高等优点。由于嵌入式系统通常应用于比较恶劣的工作环境中,因此嵌入式微处理器在工作温度、电磁兼容性(EMC: ElectroMagnetic Compatibility )及可靠性要求方面比通用的标准微处理器要高。嵌入式微处理器可按数据总线宽度划分为8位、16位、32位和64位等不同类型,目前比较流行的有Power PC、MC68000、MIPS、ARM等。

2.1 嵌入式微处理器的体系结构

嵌入式微处理器的体系结构可以采用冯·诺依曼体系结构哈佛体系结构指令系统可以选用精简指令集系统(Reduced Instruction Set Computer,RISC)或复杂指令集系统(Complex Instruction Set Computer, CISC)。

冯·诺依曼体系结构哈佛结构
冯·诺依曼结构的计算机由CPU存储器构成,其程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置;采用单一的地址及数据总线,程序指令和数据的宽度相同。哈佛(Harvard)结构的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。系统中具有程序的数据总线与地址总线,数据的数据总线与地址总线。这种分离的程序总线和数据总线可允许在一个机器周期内同时获取指令字(来自程序存储器)和操作数(来自数据存储器),从而提高执行速度,提高数据的吞吐率。

2.2 精简指令集计算机

早期的计算机采用复杂指令集计算机(CISC)体系,如Intel公司的80x86系列CPU,从8086到Pentium系列,采用的都是典型的CISC体系结构。采用CISC体系结构的计算机各种指令的使用频率相差悬殊,统计表明,大概有20%的比较简单的指令被反复使用,使用量约占整个程序的80%;而有80%左右的指令则很少使用,其使用量约占整个程序的20%,即指令的2/8规律。在CISC中,为了支持目标程序的优化,支持高级语言和编译程序,增加了许多复杂的指令,用一条指令来代替一串指令。通过增强指令系统的功能,简化软件,却增加了硬件的复杂程度。而这些复杂指令并不等于有利于缩短程序的执行时间。在VLSI制造工艺中要求CPU控制逻辑具有规整性,而CISC为了实现大量复杂的指令,控制逻辑极不规整,给VLSI工艺造成很大困难。

精简指令集计算机(Reduced Instruction Set Computer,RISC)体系结构于20世纪80年代提出,RISC是在CISC的基础上产生并发展起来的。RISC的着眼点不是简单地放在简化指令系统上,而是通过简化指令系统使计算机的结构更加简单合理,从而提高运算效率。在RISC中,优先选取使用频率最高的、很有用但不复杂的指令,避免使用复杂指令;固定指令长度,减少指令格式和寻址方式种类; 指令之间各字段的划分比较一致,各字段的功能也比较规整;采用Load/Store指令访问存储器,其余指令的操作都在寄存器之间进行;增加CPU中通用寄存器数量,算术逻辑运算指令的操作数都在通用寄存器中存取;大部分指令控制在一个或小于一个机器周期内完成;以硬布线控制逻辑为主,不用或少用微码控制;采用高级语言编程,重视编译优化工作,以减少程序执行时间。

2.3 设计制造微处理器的典型技术

复杂指令集计算机(CISC)和精简指令集计算机(RISC)是目前设计制造微处理器的两种典型技术,为了达到相应的技术性能,所采用的方法有所不同。

RISCCISC
指令系统RISC设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来实现。而CISC的指令系统比较丰富,有专用指令来完成特定的功能。
存储器操作RISC对存储器操作有限制,使控制简单化CISC机器的存储器操作指令多,操作直接
程序RISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计(理解:硬件友好CISC汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高(理解:用户友好
中断RISC微处理器在一条指令执行的适当地方可以响应中断CISC微处理器是在一条指令执行结束后响应中断。
CPURISC CPU包含较少的单元电路,因而面积小、功耗低CISC CPU包含丰富的电路单元,因而功能强、面积大、功耗大
设计周期RISC微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术CISC微处理器结构复杂,设计周期长。
易用性RISC微处理器结构简单,指令规整,性能容易把握,易学易用CISC微处理器结构复杂,功能强大,实现特殊功能容易。
应用范围RISC更适用于嵌入式系统CISC则更适合于通用计算机。

2.4 嵌入式微处理器的特点

嵌入式微处理器是嵌入式系统的核心。嵌入式微处理器一般具备4个特点

对实时和多任务有很强的支持能力具有功能很强的存储区保护功能具有可扩展的处理器结构功耗低
有较短的中断响应时间,从而使实时操作系统的执行时间减少到最低限度。嵌入式系统的软件结构已模块化,为了避免在软件模块之间出现错误的交叉作用,就需要设计强大的存储区保护功能,同时,这样也有利于软件诊断。
能迅速地扩展出满足应用的高性能的嵌入式微处理器。
尤其是便携式无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,其功耗达到mW甚至μW级

2.5 嵌入式微处理器分类

微处理器可以分成几种不同的等级,一般按字符宽度来区分:8位微处理器大部分都是用在低端应用领域中,也包括用在外围设备或内存控制器中;16位微处理器通常用在比较精密的应用领域中,需要比较长的字符宽度来处理;32位微处理器,大多是RISC的微处理器,则提供了更高的性能。

应用的角度来划分,嵌入式处理器可分为四种类型

嵌入式微处理器(Embedded Microprocessor Unit, EMPU)嵌入式微控制器(MicroController Unit, MCU)
嵌入式DSP处理器(Digital Signal Processor, DSP)嵌入式片上系统(System on Chip,SoC)
嵌入式微处理器是由通用微处理器演变而来的。与通用微处理器主要不同的是在实际嵌入式应用中,仅保留与嵌入式应用紧密相关的功能部件,去除其他冗余功能部件,配备必要的外围扩展电路,如存储器扩展电路、I/O扩展电路及其他一些专用的接口电路等,这样就能以很低的功耗和资源满足嵌入式应用的特殊需求。(去冗余,低功耗嵌入式微控制器又称单片机,它将整个计算机系统集成到一块芯片中。嵌入式微控制器一般以某种微处理器内核为核心,根据某些典型的应用,在芯片内部集成了ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串行口、脉宽调制输出、A/D、D/A、Flash ROM、EEPROM等各种必要功能部件和外设。DSP处理器对系统结构和指令进行了特殊设计,因此它更适合于实时地进行数字信号处理。
嵌入式DSP处理器有两类:一是DSP处理器经过单片化、EMC改造、增加片上外设成为嵌入式DSP,TI的TMS320 C2000/C5000/C6000等属于此范畴;二是在通用单片机或片上系统中增加DSP协处理器。嵌入式DSP处理器的设计者通常把重点放在处理连续的数据流上。如果嵌入式应用中强调对连续的数据流的处理及高精度复杂运算,则应该优先考虑选用DSP器件。
随着VLSI设计的普及和半导体工艺的迅速发展,可以在一块硅片上实现一个更为复杂的系统,这就是片上系统(SoC)。
优点:由于嵌入式系统通常应用于比较恶劣的环境中,因此嵌入式微处理器在工作温度、电磁兼容性以及可靠性方面的要求较通用的标准微处理器高。与工业控制计算机相比,嵌入式微处理器组成的系统具有体积小、重量轻、成本低、可靠性高的优点。为适应不同的应用需求,可对功能的设置和外设的配置进行必要的修改和裁减定制,使得一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都相同,只是存储器和外设的配置及功能的设置不同。这样可以使单片机最大限度地和应用需求相匹配,从而减少整个系统的功耗和成本。和嵌入式微处理器相比,微控制器的单片化使应用系统的体积大大减小,从而使功耗和成本大幅度下降,可靠性提高在有关智能方面的应用中,也需要嵌入式DSP处理器,例如各种带有智能逻辑的消费类产品,生物信息识别终端,带有加/解密算法的键盘,ADSL接入,实时语音压缩解压系统,虚拟现实显示等。这类智能化算法一般运算量都较大,特别是向量运算、指针线性寻址等较多,而这些正是DSP处理器的优势所在各种通用处理器内核和其他外围设备都将成为SoC设计公司的标准库中的器件,用标准的VHDL等硬件描述语言描述,用户只需定义出整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作芯片样品。这样,整个嵌入式系统大部分都可以集成到一块芯片中去,应用系统的电路板将变得很简洁,这将有利于减小体积和功耗,提高系统的可靠性。

[[嵌入式系统的分类.excalidraw | 四种分类的关系]]

image.png

2.6 ARM嵌入式微处理器

  1. 历史:ARM架构是面向低预算市场设计的第一款RISC微处理器。ARM 即Advanced RISC Machines的缩写,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州San Jose VLSI技术公司制造。20世纪80年代后期,ARM很快开发出Acorn的台式机产品,形成英国的计算机教育基础。1990年成立了Advanced RISC Machines Limited(后来简称为ARM Limited,ARM公司)。20世纪90年代,ARM 32位嵌入式RISC处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。ARM公司既不生产芯片也不销售芯片,它只出售芯片技术授权。

  2. ARM嵌入式微处理器的应用
    目前,采用ARM技术知识产权(IP: Intellectual Property)核的微处理器,即通常所说的ARM嵌入式微处理器,已广泛应用于如下领域:
    工业控制:作为32位的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。
    无线通讯:目前已有超过85%的无线通讯设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。
    网络系统:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上进行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。
    消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。
    成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SIM智能卡也采用了ARM技术。

  3. ARM嵌入式微处理器的特点
    采用RISC架构的ARM微处理器主要特点如下:
    ●体积小,低功耗,低成本,高性能;
    ●支持Thumb(16位)/ARM(32位)双指令集,兼容8位/16位器件;
    ●使用单周期指令,指令简洁、规整;
    ●大量使用寄存器,大多数数据操作都在寄存器中完成,只有加载/存储指令可以访问存储器,以提高指令的执行效率;
    ●寻址方式简单灵活,执行效率高;
    ●固定长度的指令格式。

  4. ARM嵌入式微处理器系列
    目前ARM嵌入式微处理器主要有ARM7、ARM9、ARM9E、ARM10、ARM11等系列。

ARM7系列ARM9系列
ARM9E系列
ARM7优化了用于对价位和功耗敏感的消费应用的低功耗32位核,带有嵌入式ICE-RT(In Circuit Emulation-Real Time,实时在线仿真)逻辑,[[【笔记】流水线结构#1 三级流水线结构 | 三级流水线]]和冯·诺依曼体系结构,提供0.9MIPS/MHzARM9系列提供了高性能和低功耗领先的硬宏单元,带有:(1)5级流水线(2)哈佛体系结构提供1.1MIPS/MHz。 (3)ARM920T和ARM922T内置全性能的MMU(Management Memory Unit
)、指令和数据cache和高速总线接口。ARM940T内置指令和数据cache、保护单元和高速AMBA( Advanced Microcontroller Bus Architecture,先进的微控制器总线体系结构)总线接口。
1.ARM9E系列是一种可综合处理器,带有DSP扩充和紧耦合存储器/紧致内存([[【笔记】概念补充#1 ARM紧耦合存储器TCM的理解 | TCM]])接口,使存储器以完全的处理器速度运行,可直接连接到内核上。
2.ARM966E-S用于硅片尺寸重要而对cache没有要求的实时嵌入式应用领域,可配置TCM大小(0,4KB,8KB,16KB,……,64MB)。ARM946E-S内置集成保护单元,提供实时嵌入式操作系统的cache核方案。ARM926ET-S带Jazelle扩充、分开的指令和数据高速AHB(Advanced High-performance Bus ,先进的高性能总线)接口及全性能MMU。 VFP9 向量浮点可综合协处理器进一步提高ARM9E处理器性能,提供浮点操作的硬件支持。
ARM10系列(更高性能)ARM11系列(更低功耗)SecurCore系列
ARM10系列带有:
● 64位AHB指令和数据接口;
● 6级流水线;
● 1.25MIPS/MHz;
●与同等的ARM9器件相比,其性能提高50%。
ARM11系列嵌入式微处理器提供了两种新型节能方式,功耗更小。目前主要有四种ARM11系列微处理器内核(ARM1156T2-S内核、ARM1156T2F-S内核、ARM1176JZ-S内核和ARM11JZF-S内核)。
SecurCore系列专门为安全较高的应用领域设计,带特定的抗窜改和反工程特性以及灵活的保护单元以确保操作系统和应用数据的安全。

2.7 嵌入式微处理器选型

● ARM微处理器内核的选择
如前所述,ARM微处理器包含一系列的内核结构,以适应不同的应用领域。如果用户希望使用WinCE或标准Linux等操作系统以减少软件开发时间,需选择ARM720T以上带有MMU(Memory Management Unit)功能的ARM芯片。
● 系统的工作频率
系统的工作频率在很大程度上决定了ARM微处理器的处理能力。
● 芯片内存储器的容量
大多数的ARM微处理器片内存储器的容量都不大,需要用户在设计系统时外扩存储器,但也有部分芯片具有相对较大的片内存储空间。
● 片内外围电路的选择
除ARM微处理器核以外,几乎所有的ARM芯片均根据各自不同的应用领域,扩展了相关功能模块,并集成在芯片之中,我们称之为片内外围电路(电路仍然在芯片内),如USB接口、IIS接口、LCD控制器、键盘接口、RTC、ADC和DAC、DSP协处理器等。

3 外围硬件设备

嵌入式硬件系统通常是一个以嵌入式微处理器为中心,包含有电源电路、时钟电路和存储器电路的电路模块,其中操作系统和应用程序都固化在模块的ROM/Flash中。外围硬件设备是指在嵌入式硬件系统中,除嵌入式微处理器以外的完成存储、显示、通信、调试等功能的部件。根据外围硬件设备的功能可分为存储器(ROM、SRAM、DRAM、Flash等)和接口(并行口、RS-232串口、IrDA红外接口、IIC、IIS、USB、CAN、Ethernet网、LCD、键盘、触摸屏、A/D、D/A等)两大类。

补充知识:

[!INFO]- 可视光通信的可行性
日本可见光通信联盟(VLCC:Visible Light Communications Consortium)”宣布,将与红外线数据协会( IrDA :Infrared Data Association)及光无线通信系统推进协会(ICSA)合作,共同制订“可视光通信”标准。可视光通信是通过发光二极管(LED)等光源的闪烁来实现数据收发的技术。此次制订工作的启动,将使利用LED等的双向通信成为可能。 具体原理是:在用于照明的LED上追加可视光通信功能,进行双向通信。接收设备方面,正在考虑手机等终端。目前部分手机中已经嵌入了红外线通信(IrDA)功能,通过与IrDA共同开发,就可以将可视光通信嵌入到IrDA功能之中。VLCC介绍说,将LED和手机作为发送方和接收方准备好之后,在地下通道、大厦、医院以及电车内等无法使用GPS功能之处,就可以使用GPS和紧急通报功能。另外,还在考虑通过使用双向通信功能来传递位置信息、用于机器人控制等。

VLCC于2008年9月与IrDA鉴定了共同开发协定,以便推进双方的技术研发。另外,VLCC还与ICSA建立了合作关系。上述三团体的合作目的为:(1)确立光无线环境的整合性,(2)强化日本在光技术领域的影响力,(3)扩大可视光通信的利用领域和早日达到实用水平。

4 嵌入式操作系统

嵌入式操作系统(Embedded Operating System,EOS)是一种用途广泛的系统软件,它负责嵌入式系统的全部软、硬件资源的分配、调度、控制和协调。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。

嵌入式操作系统除了具备一般操作系统的最基本特点外,还具有以下特点:

强稳定性,弱交互性较强的实时性可伸缩性外围硬件接口的统一性
嵌入式系统一旦开始运行就不需要用户过多的干预,这就要求负责系统管理的嵌入式操作系统具有很强的稳定性嵌入式系统实时性一般较强,可用于各种设备的控制中。
嵌入式系统具有开放、可伸缩性的体系结构嵌入式操作系统提供了许多外围硬件设备驱动接口

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

国际上常用的嵌入式操作系统有40种左右。目前,使用最多的嵌入式操作系统有:Linux、Windows CE、μC/OS-Ⅱ、Palm OS和Vx Works等。开源的Linux操作系统非常适用于信息家电产品中的嵌入式开发。

4.1 嵌入式操作系统(EOS)的分类

  1. 根据响应时间的不同,嵌入式操作系统可分为如下三类
强实时嵌入式操作系统一般实时嵌入式操作系统弱实时嵌入式操作系统
系统响应时间在微秒或毫秒级系统响应时间在毫秒至几秒数量级,其实时性要求没有比强实时系统要求高系统响应时间在数十秒或更长

4.2 Windows CE简介

Windows CE是微软公司开发的一款开放、可升级的32位嵌入式操作系统,它是基于掌上型电脑类的电子设备操作系统。其中,CE中的C代表袖珍(Compact)、消费(Consumer)、通信能力(Connectivity)和伴侣(Companion);E代表电子产品(Electronics)。Windows CE是所有源代码全部由微软自行开发的嵌入式新型操作系统,其操作界面虽来源于Windows 98,具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点。Windows CE不仅继承了传统的Windows图形界面,并且在Windows CE平台上可以使用Windows 98上的软件编程工具,在PC 机Microsoft Visual Studio软件编程环境下开发的大多数应用软件只需简单地修改和移植就可以在Windows CE平台上继续使用。

Windows CE的主要特点归纳如下:

●具有灵活的电源管理功能,包括睡眠/唤醒摸式。
●使用了对象存储(object store)技术,包括文件系统、注册表及数据库。具有很多高性能,包括按需换页、共享存储、交叉处理同步、支持大容量堆(heap)等。 
●拥有良好的通信能力。广泛支持各种通信硬件,亦支持直接的局域网连接以及拨号连接,并提供与PC、内部网以及Internet的连接等。 
●支持嵌套中断。允许更高优先级别的中断首先得到响应,而不是等待低级别的ISR完成。这使得该操作系统具有嵌入式操作系统所要求的实时性。
●更好的线程响应能力。对高级别IST(中断服务线程)的响应时间上限的要求更加严格,在线程响应能力方面的改进,帮助开发人员掌握线程转换的具体时间,并通过增强的监控能力和对硬件的控制能力帮助他们创建新的嵌入式应用程序。
256个优先级别。可以使开发人员在控制嵌入式系统的时序安排方面有更大的灵活性。
● Windows CE的API是Win32 API的一个子集,支持近1500个Win32 API,这些API足以编写极高复杂度的应用程序。当然,在拥有Windows CE的嵌入式系统中,所提供的API是随具体的应用需求而定的。
在掌上型电脑中,Windows CE还扩充了如下一些重要组件:Pocket Outlook及其组件、语音录音机、移动频道、远程拨号访问、世界时钟、计算器、多种输入法、GBK字符集、中文TTF字库、英汉双向词典、袖珍浏览器、电子邮件、Pocket Office、系统设置、Windows CE Services软件等。

4.3 嵌入式Linux简介

Linux是一个类似于Unix的操作系统,它起源于芬兰一个名为Linu Torvalds的业余爱好者,但是现在已经是很流行的一种开放源代码的操作系统。Linux从1991年问世至今,经过十几年的不断改进已成为一种功能强大、设计完善的操作系统,伴随网络技术进步而发展起来的Linux操作系统也成为Windows操作系统的强劲对手。Linux系统不仅能够运行于PC平台,而且在嵌入式系统方面也大放光芒,嵌入式Linux逐渐形成了可与Windows CE等嵌入式操作系统抗衡的局面。目前,我国在开发嵌入式系统产品方面,近50%的项目选择了嵌入式Linux操作系统。

4.4 μC/OS-Ⅱ简介

μC/OS-II (Micro Controller Operating System)是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。它的前身是μC/OS,最早出自于1992 年美国嵌入式系统专家Jean J.Labrosse 在《Embedded System Programming》杂志上刊登的文章,μC/OS 的源代码也发布在该杂志的网站上。
  μC/OS-II 是专门为计算机的嵌入式应用设计的, 绝大部分代码采用C语言编写。CPU 硬件相关部分采用汇编语言编写,程序总量约200行的汇编语言部分被压缩到最低限度,以便移植到任何一种型号的CPU 上。用户只要有标准的ANSI C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到所开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至 2KB 。

μC/OS-II 已经移植到了几乎所有知名的CPU 上。μC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量、邮箱、消息队列、内存管理、中断管理等。
严格地说,μC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度、任务管理、时间管理、内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理、文件系统、网络等额外服务。但由于μC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。

4.4.1 任务管理

uC/OS-II 中最多可以支持64 个任务,分别对应优先级0~63,其中0 为最高优先级。63为最低级,系统保留了4个最高优先级的任务和4个最低优先级的任务,所有用户可以使用的任务数有56个。
  μC/OS-II提供了任务管理的各种函数调用,包括创建任务,删除任务,改变任务的优先级,任务挂起和恢复等。
  系统初始化时会自动产生两个任务:一个是空闲任务,它的优先级最低,该任务仅给一个整形变量做累加运算;另一个是系统任务,它的优先级为次低,该任务负责统计当前CPU的利用率。

4.4.2 时间管理

μC/OS-II的时间管理是通过定时中断来实现的,该定时中断一般为10毫秒或100毫秒发生一次,时钟频率取决于用户对硬件系统的定时器编程来实现。中断发生的时间间隔是固定不变的,该中断也被看作一个时钟节拍。
μC/OS-II要求用户在定时中断的服务程序中,调用系统提供的与时钟节拍相关的系统函数,例如中断级的任务切换函数,系统时间函数。

4.4.3 内存管理

在ANSI C中是使用malloc和free两个函数来动态分配和释放内存。但在嵌入式实时系统中,多次这样的错误操作会导致内存碎片,且由于内存管理算法的原因,malloc和free的执行时间也是不确定的。
  μC/OS-II中把连续的大块内存按分区管理。每个分区中包含整数个大小相同的内存块,但不同分区之间的内存块大小可以不同。用户需要动态分配内存时,系统选择一个适当的分区,按块来分配内存。释放内存时将该块放回它以前所属的分区,这样能有效解决碎片问题,同时执行时间也是固定的

4.4.4 任务间通信与同步

对一个多任务的操作系统来说,任务间的通信和同步是必不可少的。μC/OS-II中提供了4种同步对象,分别是信号量、邮箱、消息队列和事件。所有这些同步对象都有创建、等待、发送、查询的接口用于实现进程间的通信和同步。

4.4.5 任务调度

μC/OS-II 采用的是可剥夺型实时多任务内核。可剥夺型实时内核在任何时候都运行就绪了的最高优先级的任务。
μC/OS-II的任务调度是完全基于任务优先级的抢占式(Preemptive)调度,也就是最高优先级的任务一旦处于就绪状态,则立即抢占正在运行的低优先级任务的处理器资源。为了简化系统设计,μC/OS-II规定所有任务的优先级不同,因为任务的优先级也同时唯一标识了该任务本身

任务调度将在以下情况下发生:

  1. 高优先级的任务因为需要某种临界资源,主动请求挂起,让出处理器,此时将调度就绪状态的低优先级任务并获得执行,这种调度也称为任务级的上下文切换
  2. 高优先级的任务因为时钟节拍(有点像时钟片)到来,在时钟中断的处理程序中,内核发现高优先级任务获得了执行条件(如休眠的时钟到时),则在中断状态直接切换到高优先级任务执行。这种调度也称为中断级的上下文切换
    上面两种调度方式在μC/OS-II的执行过程中非常普遍,一般来说前者发生在系统服务中,后者发生在时钟中断的服务程序中。
4.4.6 μC/OS-Ⅱ的组成部分

μC/OS-II可以分成核心、任务处理、时间处理、任务同步与通信、CPU的移植5个部分

核心部分(OSCore.c)
任务处理部分(OSTask.c)
时钟部分(OSTime.c)
任务同步和通信部分与CPU的接口部分
是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等部分。能够维持系统基本工作的部分都在这里。任务处理部分中的内容都是与任务的操作密切相关的。包括任务的建立、删除、挂起、恢复等等。因为μC/OS-II是以任务为基本单位调度的,所以这部分内容也相当重要μC/OS-II中的最小时钟单位是timetick(时钟节拍)。任务延时等操作是在这里完成的。
为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;主要用于任务间的互相联系和对临界资源的访问。
是指μC/OS-II针对所使用的CPU的移植部分。由于μC/OS-II是一个通用性的操作系统,所以对于关键问题上的实现,还是需要根据具体CPU的具体内容和要求作相应的移植。这部分内容由于牵涉到SP等系统指针,所以通常用汇编语言编写。主要包括中断级任务切换的底层实现、任务级任务切换的底层实现、时钟节拍的产生和处理、中断的相关处理等。

5 应用软件

嵌入式系统的应用软件是设计人员针对专门的应用领域而设计的应用程序。通常设计人员把嵌入式操作系统和应用软件组合在一起,作为一个有机的整体存在

嵌入式系统软件的要求与PC机有所不同,其主要特点有:
●软件要求固态化存储;
●软件代码要求高效率、高可靠性;
●系统软件(嵌入式操作系统)有较高的实时性要求。

6 嵌入式系统的应用与发展

嵌入式系统的应用已逐步渗透到金融、航天、电信、网络、信息家电、医疗、工业控制、军事等各个领域,以至于一些学者断言嵌入式系统将成为后PC时代的主宰。形式多样的嵌入式系统与移动通信、传感器网络等技术一道,改变了现有的计算环境。

嵌入式系统的应用按照市场领域划分,可以分为以下几类:
1.信息家电
2.汽车电子
3.工业控制
4.机器人
5.军事国防领域
6.医疗仪器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/2733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WiFi、Ethenet、4G优先级切换

1、多网卡情况下如何调整优先级方案 按照目前公司前辈给出的方案&#xff0c;调整优先级的手段有两种&#xff1a; <1>.删除默认路由--route del 的方法 <2>.ifmetric源码提供的修改路由表的mteric的值来设置路由的优先级&#xff0c;metric越小优先级越高。 应…

ANSYS Help 的使用

ANSYS 帮助文档是相当实用且重要的第一手资料&#xff0c;90% 以上的纯操作问题都可以在帮助文档找到相关的解释。 点击开始菜单的 ANSYS Help即可打开帮助文档 帮助文档有两种打开方式&#xff1a; 基于帮助文档的安装包安装于本地后&#xff0c;可直接启动帮助程序没有安装…

Spring-IOC之组件扫描

版本 Spring Framework 6.0.9​ 1. 前言 通过自动扫描&#xff0c;Spring 会自动从扫描指定的包及其子包下的所有类&#xff0c;并根据类上的特定注解将该类装配到容器中&#xff0c;而无需在 XML 配置文件或 Java 配置类中逐一声明每一个 Bean。 支持的注解 Spring 支持一系…

书生·浦语大模型实战营之Llama 3 高效部署实践(LMDeploy 版)

书生浦语大模型实战营之Llama 3 高效部署实践&#xff08;LMDeploy 版&#xff09; 环境&#xff0c;模型准备LMDeploy chatTurmind和Transformer的速度对比LMDeploy模型量化(lite)LMDeploy服务(serve) 环境&#xff0c;模型准备 InternStudio 可以直接使用 studio-conda -t …

机器学习运用-民宿价格

项目简介 随着旅游业的蓬勃发展&#xff0c;民宿市场迎来了前所未有的增长机遇。正好最近在参加拓尔思数据挖掘公益实习活动&#xff0c;我的项目将应用机器学习技术开发一个价格预测模型。可以达到更好地理解和预测民宿价格的目的&#xff0c;该模型综合考虑了从容纳人数、便…

【Python】Python函数的黑魔法:递归,嵌套函数与装饰器

欢迎来到CILMY23的博客 本篇主题为&#xff1a; Python函数的黑魔法&#xff1a;递归&#xff0c;嵌套函数与装饰器 个人主页&#xff1a;CILMY23-CSDN博客 系列专栏&#xff1a;Python | C | C语言 | 数据结构与算法 感谢观看&#xff0c;支持的可以给个一键三连&#xff…

基于51单片机的矩阵按键扫描的proteus仿真

文章目录 一、按键按键按键消抖 二、独立按键仿真图仿真程序 三、矩阵按键仿真图仿真程序 四、总结 一、按键 按键 按键通常指的是电子设备上的一种输入装置&#xff0c;用于在按下时发送信号&#xff0c;以便设备执行相应的操作。按键可以分为独立按键和矩阵按键两种类型。 …

TRIZ理论下攀爬机器人的创新设计与研究

随着科技的飞速发展&#xff0c;机器人技术已广泛应用于各个领域。特别是在复杂环境下的作业&#xff0c;如灾难救援、太空探测等&#xff0c;对机器人的移动能力和适应性提出了更高要求。在这样的背景下&#xff0c;基于TRIZ理论的攀爬机器人设计与研究应运而生&#xff0c;它…

简单的图像处理算法

本笔记参考crazy_Bingo 基础&#xff1a; 图像处理都是用卷积矩阵对图像卷积计算&#xff0c;如3X3 的矩阵对640 X 480分辨率的图像卷积&#xff0c;最终会得到638 X 478 的图像。卷积过程是这样的&#xff1a; 一、中值滤波 &#xff1a; 找出矩阵中的最中间值作为像素点 中…

Flink的安装、项目创建、任务打包和部署完整实现,任务实现使用JAVA语言

Flink资源下载地址 Flink安装包下载地址 一、本地模式安装Flink 1、在Linux服务上&#xff0c;创建flink文件夹 mkdir flink 2、上传文件并解压 tar -zxvf flink-1.14.6-bin-scala_2.11.tgz 解压完成后&#xff0c;如图&#xff1a; 3、启动Flink 进入到解压目录下&#x…

YOLOv9训练损失、精度、mAP绘图功能 | 支持多结果对比,多结果绘在一个图片(消融实验、科研必备)

一、本文介绍 本文给大家带来的是YOLOv9系列的绘图功能&#xff0c;我将向大家介绍YOLO系列的绘图功能。我们在进行实验时&#xff0c;经常需要比较多个结果&#xff0c;针对这一问题&#xff0c;我写了点代码来解决这个问题&#xff0c;它可以根据训练结果绘制损失(loss)和mA…

Java的八大基本数据类型和 println 的介绍

前言 如果你有C语言的基础&#xff0c;这部分内容就会很简单&#xff0c;但是会有所不同~~ 这是我将要提到的八大基本数据类型&#xff1a; 注意&#xff0c;Java的数据类型是有符号的&#xff01;&#xff01;&#xff01;和C语言不同&#xff0c;Java不存在无符号的数据。 整…

Day:动态规划 LeedCode 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV

123. 买卖股票的最佳时机 III 给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意&#xff1a;你不能同时参与多笔交易&#xff08;你必须在再次购买前出售掉之前的股票&a…

安全开发实战(2)---域名反查IP

目录 安全开发专栏 前言 域名与ip的关系 域名反查ip的作用 1.2.1 One 1.2.2 Two 1.2.3 批量监测 ​总结 安全开发专栏 安全开发实战http://t.csdnimg.cn/25N7H 这步是比较关键的一步,一般进行cdn监测后,获取到真实ip地址后,或是域名时,然后进行域名反查IP地址,进行进…

基于Springboot的职称评审管理系统

基于SpringbootVue的职称评审管理系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 评审条件 论坛信息 系统公告 后台登录页面 用户管理 评审员管理 省份…

再谈C语言——理解指针(四)

assert断⾔ assert.h 头⽂件定义了宏 assert() &#xff0c;⽤于在运⾏时确保程序符合指定条件&#xff0c;如果不符合&#xff0c;就报错终⽌运⾏。这个宏常常被称为“断⾔”。 assert(p ! NULL); 上⾯代码在程序运⾏到这⼀⾏语句时&#xff0c;验证变量 p 是否等于 NULL 。…

​LeetCode解法汇总2385. 感染二叉树需要的总时间

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一棵二叉树的根节点 root &#xff0…

创建型设计模式

七大原则 1. 开闭原则&#xff08;Open-Closed Principle, OCP&#xff09; 详解&#xff1a;软件实体&#xff08;类、模块、函数等&#xff09;应该易于扩展&#xff0c;但是不易于修改。换句话说&#xff0c;当软件需求变化时&#xff0c;应该通过添加新代码来实现变化&am…

销冠必备:高效跟进客户的四个技巧

作为一名销售&#xff0c;高效而精准地跟进客户是取得成功的关键。今天&#xff0c;我将分享四个技巧&#xff0c;让你也能够高效的跟进客户。 1、善于发问 通过多询问客户&#xff0c;你可以更好地了解客户的需求和痛点。在与客户交流时&#xff0c;不要只是简单地回答问题&…

业务复习知识点Oracle查询

业务数据查询-1 单表查询 数据准备 自来水收费系统建表语句.sql 简单条件查询 精确查询 需求 &#xff1a;查询水表编号为 30408 的业主记录 查询语句 &#xff1a; select * from t_owners where watermeter 30408; 查询结果 &#xff1a; 模糊查询 需求 &#xff1a;查询业…