笔记 | 嵌入式系统概论

news2024/9/19 11:09:12

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.coloradmin.cn/o/1612303.html

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

相关文章

【Java基础】23.接口

文章目录 一、接口的概念1.接口介绍2.接口与类相似点3.接口与类的区别4.接口特性5.抽象类和接口的区别 二、接口的声明三、接口的实现四、接口的继承五、接口的多继承六、标记接口 一、接口的概念 1.接口介绍 接口(英文:Interface)&#xf…

Virtualenv:Python项目管理的救星

在Python的世界里,依赖包冲突是开发者的噩梦,但也是成长的催化剂。最近在写Python项目中就碰到了这样的问题,明明代码在自己的电脑上表现都是正常的,在另外一台电脑上却始终有些小问题,两台电脑安装的Python版本都是一…

云原生Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境

前言 构建可移植的计算机视觉环境 文章目录 前言引言简介:目的和重要性: 深入理解Docker和OpenCVDocker的基本概念和优势:OpenCV简介和应用领域: 构建Docker镜像部署分享Docker容器1. 打包Docker镜像:2. 上传到Docker镜像仓库:3. …

【python】Paste Mask

学习来自【OpenCv】利用roi 掩模 将一张图片添加到另一张上 任务描述:提取图片A的 mask 区域,并粘贴到图片B上 文章目录 1 代码实现2 结果展示3 涉及到的库cv2.bitwise_notcv2.bitwise_andcv2.add 附录——获取 mask 的边界框 1 代码实现 A 图 A 图的 …

Pytest精通指南(23)钩子函数-执行顺序(pytest-ordering)

文章目录 前言应用场景插件安装参数分析装饰方法装饰类装饰模块 前言 pytest-ordering 是一个pytest插件,它允许用户自定义测试用例的执行顺序。 默认情况下,pytest会按照模块、类、函数定义的顺序以及它们的名称的字母顺序来执行测试用例。 但通过使用 …

Kafka集群搭建可视化指南

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Kafka集群搭建可视化指南 前言准备工作硬件要求环境准备 kafka集群的部署与配置3.1 单节点部署与多节点集群搭建单节点部署:多节点集群搭建: 3.2 Broker配置与优化3.3 Topic的创…

竞赛 基于LSTM的天气预测 - 时间序列预测

0 前言 🔥 优质竞赛项目系列,今天要分享的是 机器学习大数据分析项目 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/po…

C++:面向对象大坑:菱形继承

菱形继承 1.单继承1.概念 2.多继承2.1概念2.2菱形继承1.概念2.问题3.样例理解二义性数据冗余对于内存模型抽象化 2.3菱形虚拟继承(解决菱形继承的问题)1.概念2.样例理解对于内存模型抽象化 2.4总结 3.问题总结1.C有多继承,为什么?…

react中useState的值没有改变,而是旧的数值

问题背景 想实现点击按钮就改变数据的效果,但是在控制台的打印结果,总是上一次的修改情况,并不是最新的修改后的数据 代码: import { useState, useRef } from "react";// 实现sonA的数据传递给sonB const SonA () …

史上最全的四分之一、半车再到全车7自由度常规悬架建模与仿真之一

一、悬架建模的简化过程 汽车是一个复杂的振动系统,针对不同的需求进行不同的简化。在对悬架振动分析中,把汽车车身看做一个刚体,把驾驶员座椅和驾驶员拿掉;车身以下至车轮之间的橡胶垫,连接杆,弹簧等具有…

智慧化转型赋能园区创新:科技创新引领产业智慧化,打造高效发展新格局

在全球化和信息化浪潮的推动下,园区作为区域经济发展的重要引擎,正面临着前所未有的机遇与挑战。为应对这些挑战并把握机遇,园区需积极拥抱智慧化转型,通过科技创新引领产业智慧化,打造高效发展的新格局。本文将深入探…

Unity面向切面编程

一直说面向AOP(切面)编程,好久直接专门扒出理论、代码学习过。最近因为某些原因😭还得再学学造火箭的技术。 废话不多说,啥是AOP呢?这里我就不班门弄斧了,网上资料一大堆,解释的肯定…

HTML的学习-通过创建相册WEB学习HTML-第一部分

文章目录 一、设置中文1.1、添加中文插件1.2、配置显示中文语言 二、学习开始2.1、创建项目文件夹2.2、h1标签示例:生成HTML框架示例:添加h1标签 2.3、h2标签示例:在h1标签下添加h2标签 2.4、h1标签到h6标签层次解析2.5、p标签示例&#xff1…

LORA被碾压了?多任务学习新突破,MTLoRA实现3.6倍参数高效适配

引言:多任务学习的挑战与机遇 在深度学习领域,将大规模数据集上预训练的模型适配到各种下游任务是一种常见的策略。随之而来的是参数高效微调方法的兴起,这些方法旨在将预训练模型适配到不同任务,同时只训练最少量的参数。然而&am…

力扣HOT100 - 148. 排序链表

解题思路: 归并排序 class Solution {public ListNode sortList(ListNode head) {if (head null || head.next null) return head;ListNode fast head.next, slow head;while (fast ! null && fast.next ! null) {slow slow.next;fast fast.next.nex…

基于瞬时频率的语言信号清/浊音判决和高音检测(MATLAB R2021)

语音是由气流激励声道从嘴唇或鼻孔辐射出来而产生的。根据声带是否振动,发音可分为浊音和清音。浊音和清音有明显的区别,浊音具有周期信号的特征,而清音则具有随机噪声的特征;浊音在频域上具有共振峰结构,其能量主要集…

幻方量化开源国内首个MoE大模型,全新架构、免费商用

幻方量化开源国内首个MoE大模型,全新架构、免费商用 OSC OSC开源社区 2024-01-12 19:01 广东 幻方量化旗下组织深度求索发布了国内首个开源 MoE 大模型 —— DeepSeekMoE,全新架构,免费商用。 今年 4 月,幻方量化发布公告称&…

PTA 编程题(C语言)-- 统计字符

题目标题:统计字符 题目作者:颜晖 浙大城市学院 本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。 输入格式: 输入为…

使用YOLOv8训练自己的目标检测数据集(VOC格式/COCO格式)

yolov8训练自己的数据集 1. 下载项目2. 搭建环境3. 数据集格式转换3.1 VOC格式转YOLO格式3.2 COCO格式转YOLO格式 4. 训练数据5. 推理预测6. 模型导出 1. 下载项目 git clone https://github.com/ultralytics/ultralytics.git2. 搭建环境 conda create --name ultralytics py…

js微博发布案例

思路: 需求1:检测用户输入的字数 注册input事件 将输入文本长度赋值给对应的数值 需求2:输入不能为空 点击按钮之后判断 如果输入为空,则提示不能输入为空,并直接return 为了防止无意义的一些输入,利用字符…