<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>嵌入式系统</title>
	<atom:link href="https://www.aitaocui.cn/tag/225472/feed" rel="self" type="application/rss+xml" />
	<link>https://www.aitaocui.cn</link>
	<description>翡翠玉石爱好者聚集地</description>
	<lastBuildDate>Sat, 26 Nov 2022 17:14:19 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.1</generator>

<image>
	<url>https://www.aitaocui.cn/wp-content/uploads/2022/11/taocui.png</url>
	<title>嵌入式系统</title>
	<link>https://www.aitaocui.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>嵌入式系统(计算机系统)</title>
		<link>https://www.aitaocui.cn/article/337178.html</link>
					<comments>https://www.aitaocui.cn/article/337178.html#respond</comments>
		
		<dc:creator><![CDATA[不知北山向阳]]></dc:creator>
		<pubDate>Sat, 26 Nov 2022 17:14:19 +0000</pubDate>
				<category><![CDATA[知识]]></category>
		<category><![CDATA[嵌入式系统]]></category>
		<guid isPermaLink="false">https://www.aitaocui.cn/?p=337178</guid>

					<description><![CDATA[嵌入式系统（Embedded system），是一种“完全嵌入受控器件内部，为特定应用而设计的专用计算机系统”，根据英国电气工程师协会（ U.K. Institution of E...]]></description>
										<content:encoded><![CDATA[</p>
<article>
<p>嵌入式系统（Embedded system），是一种“完全嵌入受控器件内部，为特定应用而设计的专用计算机系统”，根据英国电气工程师协会（ U.K. Institution of Electrical Engineer）的定义，嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。嵌入式系统是用来控制或者监视机器、装置、工厂等大规模设备的系统。国内普遍认同的嵌入式系统定义为：以应用为中心，以计算机技术为基础，软硬件可裁剪，适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。通常，嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。嵌入式系统的核心是由一个或几个预先编程好以用来执行少数几项任务的微处理器或者单片机组成。与通用计算机能够运行用户选择的软件不同，嵌入式系统上的软件通常是暂时不变的；所以经常称为“固件”。</p>
</article>
<p><img decoding="async" src="https://www.aitaocui.cn/wp-content/uploads/2022/08/20220828_630b8eae8027a.jpg" /></p>
<article>
<h1>物联网</h1>
<p>随着医疗电子、智能家居、物流管理和电力控制等方面的不断风靡，嵌入式系统利用自身积累的底蕴经验，重视和把握这个机会，想办法在已经成熟的平台和产品基础上与应用传感单元的结合，扩展物联和感知的支持能力，发掘某种领域物联网应用。作为物联网重要技术组成的嵌入式系统，嵌入式系统的视角有助于深刻地、全面地理解物联网的本质。</p>
<p>这有两层意思：第一，物联网的核心仍然是互联网，是在互联网基础上的延伸和扩展的网络;第二，其用户端延伸和扩展到了任何物品与物品之间，进行信息交换和通信，必须具备嵌入式系统构建的智能终端。因此，物联网系统是通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备，按约定的协议，把任何物品与互联网相连接，进行信息交换和通信的系统架构。</p>
<p>物联网不仅仅提供了传感器的连接，其本身也具有智能处理的能力，能够对物体实施智能控制，这就是我们嵌入式系统所能做到的。诚然，物联网将传感器和智能处理相结合，利用云计算、模式识别等各种智能技术，扩充其应用领域。从传感器获得的海量信息中分析、加工和处理出有意义的数据，以适应不同用户的不同需求，发现新的应用领域和应用模式。</p>
<h1>组成</h1>
<h2 id="a-e63f9713">硬件层</h2>
<p>硬件层中包含嵌入式微处理器、存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路，就构成了一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在ROM中。</p>
<p>1、嵌入式微处理器</p>
<p>嵌入式系统硬件层的核心是嵌入式微处理器，嵌入式微处理器与通用CPU最大的不同在于嵌入式微处理器大多工作在为特定用户群所专用设计的系统中，它将通用CPU许多由板卡完成的任务集成在芯片内部，从而有利于嵌入式系统在设计时趋于小型化，同时还具有很高的效率和可靠性。</p>
<div></div>
<p>嵌入式微处理器的体系结构可以采用冯·诺依曼体系或哈佛体系结构;指令系统可以选用精简指令系统(Reduced Instruction Set Computer，RISC)和复杂指令系统CISC(Complex Instruction Set Computer，CISC)。RISC计算机在通道中只包含最有用的指令，确保数据通道快速执行每一条指令，从而提高了执行效率并使CPU硬件结构设计变得更为简单。</p>
<p>嵌入式微处理器有各种不同的体系，即使在同一体系中也可能具有不同的时钟频率和数据总线宽度，或集成了不同的外设和接口。据不完全统计，目前全世界嵌入式微处理器已经超过1000多种，体系结构有30多个系列，其中主流的体系有ARM、MIPS、PowerPC、X86和SH等。但与全球PC市场不同的是，没有一种嵌入式微处理器可以主导市场，仅以32位的产品而言，就有100种以上的嵌入式微处理器。嵌入式微处理器的选择是根据具体的应用而决定的。</p>
<p>2、存储器</p>
<p>嵌入式系统需要存储器来存放和执行代码。嵌入式系统的存储器包含Cache、主存和辅助存储器。</p>
<p>1&gt;Cache</p>
<p>Cache是一种容量小、速度快的存储器阵列它位于主存和嵌入式微处理器内核之间，存放的是最近一段时间微处理器使用最多的程序代码和数据。在需要进行数据读取操作时，微处理器尽可能的从Cache中读取数据，而不是从主存中读取，这样就大大改善了系统的性能，提高了微处理器和主存之间的数据传输速率。Cache的主要目标就是：减小存储器(如主存和辅助存储器)给微处理器内核造成的存储器访问瓶颈，使处理速度更快，实时性更强。</p>
<p>在嵌入式系统中Cache全部集成在嵌入式微处理器内，可分为数据Cache、指令Cache或混合Cache，Cache的大小依不同处理器而定。一般中高档的嵌入式微处理器才会把Cache集成进去。</p>
<p>2&gt;主存</p>
<p>主存是嵌入式微处理器能直接访问的寄存器，用来存放系统和用户的程序及数据。它可以位于微处理器的内部或外部，其容量为256KB~1GB，根据具体的应用而定，一般片内存储器容量小，速度快，片外存储器容量大。</p>
<p>常用作主存的存储器有：</p>
<p>ROM类 NOR Flash、EPROM和PROM等。</p>
<p>RAM类 SRAM、DRAM和SDRAM等。</p>
<p>其中NOR Flash 凭借其可擦写次数多、存储速度快、存储容量大、价格便宜等优点，在嵌入式领域内得到了广泛应用。</p>
<p>3&gt;辅助存储器</p>
<p>辅助存储器用来存放大数据量的程序代码或信息，它的容量大、但读取速度与主存相比就慢的很多，用来长期保存用户的信息。</p>
<p>嵌入式系统中常用的外存有：硬盘、NAND Flash、CF卡、MMC和SD卡等。</p>
<p>3、通用设备接口和I/O接口</p>
<p>嵌入式系统和外界交互需要一定形式的通用设备接口，如A/D、D/A、I/O等，外设通过和片外其他设备的或传感器的连接来实现微处理器的输入/输出功能。每个外设通常都只有单一的功能，它可以在芯片外也可以内置芯片中。外设的种类很多，可从一个简单的串行通信设备到非常复杂的802.11无线设备。</p>
<p>目前嵌入式系统中常用的通用设备接口有A/D(模/数转换接口)、D/A(数/模转换接口)，I/O接口有RS-232接口(串行通信接口)、Ethernet(以太网接口)、USB(通用串行总线接口)、音频接口、VGA视频输出接口、I2C(现场总线)、SPI(串行外围设备接口)和IrDA(红外线接口)等。</p>
<h2 id="a-d3b2afbc">中间层</h2>
<p>硬件层与软件层之间为中间层，也称为硬件抽象层(Hardware Abstract Layer，HAL)或板级支持包(Board Support Package，BSP)，它将系统上层软件与底层硬件分离开来，使系统的底层驱动程序与硬件无关，上层软件开发人员无需关心底层硬件的具体情况，根据BSP层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。BSP具有以下两个特点。</p>
<p>硬件相关性：因为嵌入式实时系统的硬件环境具有应用相关性，而作为上层软件与硬件平台之间的接口，BSP需要为操作系统提供操作和控制具体硬件的方法。</p>
<p>操作系统相关性：不同的操作系统具有各自的软件层次结构，因此，不同的操作系统具有特定的硬件接口形式。</p>
<p>实际上，BSP是一个介于操作系统和底层硬件之间的软件层次，包括了系统中大部分与硬件联系紧密的软件模块。设计一个完整的BSP需要完成两部分工作：嵌入式系统的硬件初始化以及BSP功能，设计硬件相关的设备驱动。</p>
<p>1、嵌入式系统硬件初始化</p>
<p>系统初始化过程可以分为3个主要环节，按照自底向上、从硬件到软件的次序依次为：片级初始化、板级初始化和系统级初始化。</p>
<p>片级初始化</p>
<p>完成嵌入式微处理器的初始化，包括设置嵌入式微处理器的核心寄存器和控制寄存器、嵌入式微处理器核心工作模式和嵌入式微处理器的局部总线模式等。片级初始化把嵌入式微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个纯硬件的初始化过程。</p>
<p>板级初始化</p>
<p>完成嵌入式微处理器以外的其他硬件设备的初始化。另外，还需设置某些软件的数据结构和参数，为随后的系统级初始化和应用程序的运行建立硬件和软件环境。这是一个同时包含软硬件两部分在内的初始化过程。</p>
<p>系统初始化</p>
<p>该初始化过程以软件初始化为主，主要进行操作系统的初始化。BSP将对嵌入式微处理器的控制权转交给嵌入式操作系统，由操作系统完成余下的初始化操作，包含加载和初始化与硬件无关的设备驱动程序，建立系统内存区，加载并初始化其他系统软件模块，如网络系统、文件系统等。最后，操作系统创建应用程序环境，并将控制权交给应用程序的入口。</p>
<p>2、硬件相关的设备驱动程序</p>
<p>BSP的另一个主要功能是硬件相关的设备驱动。硬件相关的设备驱动程序的初始化通常是一个从高到低的过程。尽管BSP中包含硬件相关的设备驱动程序，但是这些设备驱动程序通常不直接由BSP使用，而是在系统初始化过程中由BSP将他们与操作系统中通用的设备驱动程序关联起来，并在随后的应用中由通用的设备驱动程序调用，实现对硬件设备的操作。与硬件相关的驱动程序是BSP设计与开发中另一个非常关键的环节。</p>
<h2 id="a-6719e0dd">系统软件层</h2>
<p>系统软件层由实时多任务操作系统(Real-time Operation System，RTOS)、文件系统、图形用户接口(Graphic User Interface，GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。</p>
<p>嵌入式操作系统</p>
<p>嵌入式操作系统(Embedded Operation System，EOS)是一种用途广泛的系统软件，过去它主要应用与工业控制和国防系统领域。EOS负责嵌入系统的全部软、硬件资源的分配、任务调度，控制、协调并发活动。它必须体现其所在系统的特征，能够通过装卸某些模块来达到系统所要求的功能。目前，已推出一些应用比较成功的EOS产品系列。随着Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化，EOS开始从单一的弱功能向高专业化的强功能方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。EOS是相对于一般操作系统而言的，它除具备了一般操作系统最基本的功能，如任务调度、同步机制、中断处理、文件功能等外，还有以下特点：</p>
<p>(1)可装卸性。开放性、可伸缩性的体系结构。</p>
<p>(2)强实时性。EOS实时性一般较强，可用于各种设备控制当中。</p>
<p>(3)统一的接口。提供各种设备驱动接口。</p>
<p>(4)操作方便、简单、提供友好的图形GUI，图形界面，追求易学易用。</p>
<p>(5)提供强大的网络功能，支持TCP/IP协议及其它协议，提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口，为各种移动计算设备预留接口。</p>
<p>(6)强稳定性，弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预，这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令，它通过系统调用命令向用户程序提供服务。</p>
<p>(7)固化代码。在嵌入系统中，嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。辅助存储器在嵌入式系统中很少使用，因此，嵌入式操作系统的文件管理功能应该能够很容易地拆卸，而用各种内存文件系统。</p>
<p>(8)更好的硬件适应性，也就是良好的移植性。</p>
<h1>应用领域</h1>
<p>嵌入式系统技术具有非常广阔的应用前景，其应用领域可以包括：</p>
<h2 id="a-182b52ea">工业控制</h2>
<p>基于嵌入式芯片的工业自动化设备将获得长足的发展，目前已经有大量的8、16、32位嵌入式微控制器在应用中，网络化是提高生产效率和产品质量、减少人力资源主要途径，如工业过程控制、数字机床、电力系统、电网安全、电网设备监测、石油化工系统。就传统的工业控制产品而言，低端型采用的往往是8位单片机。但是随着技术的发展，32位、64位的处理器逐渐成为工业控制设备的核心，在未来几年内必将获得长足的发展。</p>
<h2 id="a-1eb687ea">交通管理</h2>
<p>在车辆导航、流量控制、信息监测与汽车服务方面，嵌入式系统技术已经获得了广泛的应用，内嵌GPS模块，GSM模块的移动定位终端已经在各种运输行业获得了成功的使用。目前GPS设备已经从尖端产品进入了普通百姓的家庭，只需要几千元，就可以随时随地找到你的位置。</p>
<h2 id="a-f8fff461">信息家电</h2>
<p>这将称为嵌入式系统最大的应用领域，冰箱、空调等的网络化、智能化将引领人们的生活步入一个崭新的空间。即使你不在家里，也可以通过电话线、网络进行远程控制。在这些设备中，嵌入式系统将大有用武之地。</p>
<h2 id="a-6cd81bf0">家庭智能管理</h2>
<p>水、电、煤气表的远程自动抄表，安全防火、防盗系统，其中嵌有的专用控制芯片将代替传统的人工检查，并实现更高，更准确和更安全的性能。目前在服务领域，如远程点菜器等已经体现了嵌入式系统的优势。</p>
<h2 id="a-0662bcbb">POS网络</h2>
<p>公共交通无接触智能卡(Contactless Smartcard, CSC)发行系统，公共电话卡发行系统，自动售货机，各种智能ATM终端将全面走入人们的生活，到时手持一卡就可以行遍天下。</p>
<h2 id="a-a4537497">环境工程</h2>
<p>水文资料实时监测，防洪体系及水土质量监测、堤坝安全，地震监测网，实时气象信息网，水源和空气污染监测。在很多环境恶劣，地况复杂的地区，嵌入式系统将实现无人监测。</p>
<h1>国防与航天</h1>
<p>嵌入式芯片的发展将使机器人在微型化，高智能方面优势更加明显，同时会大幅度降低机器人的价格，使其在工业领域和服务领域获得更广泛的应用。</p>
<p>这些应用中，可以着重于在控制方面的应用。就远程家电控制而言，除了开发出支持TCP/IP的嵌入式系统之外，家电产品控制协议也需要制订和统一，这需要家电生产厂家来做。同样的道理，所有基于网络的远程控制器件都需要与嵌入式系统之间实现接口，然后再由嵌入式系统来控制并通过网络实现控制。所以，开发和探讨嵌入式系统有着十分重要的意义。</p>
<h1>方案</h1>
<p>基于嵌入式系统在电网远程监控中的应用方案</p>
<p>基于嵌入式系统在电网远程监控中的应用方案可实现对电网参数的主动测量、分析、自动存储等功能，通过Internet光纤环网将电网监测数据传送到调度室的监控主机，工作人员可以对远程设备的运行状况进行及时、准确的监控，对其故障先兆做出判断和预测，采取有效措施解决问题，保证大型机组安全运行，防止恶性事故的发生，避免了定期检修引起的生产停顿，起到预防和消除故障的作用，提高设备运行的可靠性、安全性和有效性。</p>
<p>基于嵌入式系统的RFID手持机系统方案</p>
<p>基于嵌入式系统的RFID手持机系统设计，以微处理器LPC2142 为主控制器，根据系统的需求外扩了SRAM、Flash、SD 卡、键盘、LCD 显示、声响提示进行数据处理、数据存储、人机交互以及出错报警提示，通过USB 接口可以与主机进行数据通信，背光模块可以为LCD 和键盘提供背光，电压检测模块通过核心处理器的A/D 转换器进行电池电压的检测，从而间接检测出电池的剩余电量，RF 模块能够进行读写器与标签之间射频信号的收发，通过JTAG 接口可以进行程序的调试与下载。电源部分可以为系统中需要电源的各个模块提供电源。</p>
<h1>学习方法</h1>
<p>随着现代社会信息化进程的加快，嵌入式系统被广泛的地应用于军事、家用、工业、商业、办公、医疗等社会各个方面，表现出很强的投资价值。从国际范围来看，作为数字化电子信息产品核心的嵌入式系统目前其硬件和软件开发工具市场已经突破2000亿美元，嵌入式系统带来的全球工业年产值更是达到了一万亿美元，随着全球经济的持续增长以及信息化的加速发展，嵌入式系统市场必将进一步增长。</p>
<p>根据中国物联网校企联盟的建议，学习嵌入式系统的必备知识与学习方法如下：</p>
<p>1、C开发经验</p>
<p>条件：Linux</p>
<p>方法：主要是掌握ANSIC编程（不包括gtk,qt等图形可视化开发）</p>
<p>2、网络、操作系统、体系结构</p>
<p>条件：Linux，各种书，算法、例程。</p>
<p>方法：通过C编程实现简单的网络等知识的算法和过程。</p>
<p>3、嵌入式系统概念</p>
<p>条件：各个嵌入式网站，讨论组，书籍</p>
<p>方法：少提问，多留给自己思考的空间。</p>
<p>4、嵌入式开发实践</p>
<p>条件：各种嵌入式系统开发工具的demo版，包括编译器，仿真器。</p>
<p>方法：一个是基于MCU/MDSP的嵌入式系统开发，另一个是像Palm OS，WinCE，uC/OS II等RTOS下的应用软件开发。第一个是针对硬件开发而言的，而第二个则是针对软件开发而言的。</p>
<p>5、硬件开发</p>
<p>条件：各种嵌入式芯片、存储器等电路器件，protel99等电路设计软件，电路板制作。</p>
<p>方法：这时候该有开发条件了，最起码是51系列，这个比较方便。电路的设计内容较多，不过看起来吓人，实际上比软件要简单的多。只要下功夫，实践会告诉你一切。</p>
<h1>调试</h1>
<p>调试通常使用内部电路仿真器或者其他一些能够在单片机微码(microcode)内部产生中断的调试器。微码中断让调试器能够在只有CPU工作的硬件中进行操作，基于CPU的调试器能够从CPU的角度来测试和调试计算机的电路。PDP-11开创了这种特性的先河。</p>
<p>开发人员能够仍然使用断点、单步执行以及高级语言进行调试，在许多的调试工具上都有这种能力。另外开发人员在调试实时事件顺序的时候需要记录、使用简单的记录工具。</p>
<div></div>
<p>首先遇到这种问题的个人电脑和大型机程序员经常在设计优先级和可行方法的时候感到困惑。指导、代码审查和非个人风格(egoless)的编程是值得推荐的。</p>
<p>随着嵌入式系统变得越来越复杂，更高层次的工具和操作系统逐渐移植到可行的设备上。例如，蜂窝电话、个人数字助理和其他的消费用计算机需要一些从个人或者这些电子设备制造商之外的公司购买或者提供的一些重要软件。在这些系统中，需要如Linux、OSGi或者Java这样的开放编程环境，这样第三方软件提供上才能够在大规模的市场上销售软件。</p>
<p>大多数这样的开发环境都有一个运行在个人电脑上的参考设计，这种软件的绝大部分都可以在传统的个人电脑上开发。然而，从开放环境移植到专用的电子设备和电子设备的驱动程序开发通常仍然是传统的嵌入式系统软件工程师的工作。在有些情况下，the engineer works for the integrated circuit manufacturer, but there is still such a person somewhere.</p>
<h1>Windows</h1>
<p>微软嵌入式产品MSEmbed，尤其是微软嵌入式系统，和普通OS并没有本质上的区别。从某种程度上说，微软嵌入式系统，就是根据环境的需求，将普通的OS进行定制和精简，从而形成符合应用环境需求的、特定的系统。</p>
<p>微软嵌入式系统，经过定制以及二次开发，能够最大程度的满足客户需求，同时在安全性、可靠性、可维护性以及整体性能方面，得到了良好体现。随着windows 7 OS进入嵌入式领域，其对于各种硬件的兼容性，以及在各个硬件平台上的可移植性，再一次得到极大完善。</p>
<p>1996 年11 月，Microsoft 发布了 Windows Embedded CE 1.0，从此正式进入了嵌入式产品市场。此后，Microsoft 逐渐扩展出全系列的嵌入式操作系统，使开发人员能够通过一系列产品来构建下一代的 32 位设备，这些产品为空间占用量大小不等的设备提供了工具集和开发平台。 微软发布Win CE 1.0之后的十年间，继续推出了2.0到6.0的Win CE产品。</p>
<p>2010年6月1日，微软发布了新的嵌入式Windows，并命名为Windows Embedded Compact 7，不再采用之前一贯沿用的名称Windows Embedded CE（简称Windows CE）。新版的全国人民Winddows做出了一系列的改进，例如将所有系统元件都由EXE改为DLL，并移到 kernel space，并采用全新设计的虚拟内存架构、全新的设备驱动程序架构，支持更多的平台像x86、ARM、SH4、MIPS 等。</p>
<h1>Linux</h1>
<p>嵌入式Linux 是将日益流行的Linux操作系统进行裁剪修改，使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上无限的开放源代码资源，又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费，而且性能优异，软件移植容易，代码开放，有许多应用软件支持，应用产品开发周期短，新产品上市迅速，因为有许多公开的代码可以参考和移植，实时性能RT_Linux Hardhat Linux 等嵌入式Linux支持，实时性能稳定性好安全性好。</p>
<p>有巨大的市场前景和商业机会，出现了大量的专业公司和产品，如Montavista Lineo Emi等，有行业协会如Embedded Linux Consortum等，得到世界著名计算机公司和OEM板级厂商的支持，例如IBM、Motorola、Intel，目前Google的基于Linux开发的Android操作系统也已经广泛应用于嵌入式领域。传统的嵌入式系统厂商也采用了Linux策略，如Lynxworks Windriver QNX等，还有Internet上的大量嵌入式Linux爱好者的支持。嵌入式Linux支持几乎所有的嵌入式CPU和被移植到几乎所有的嵌入式OEM板。</p>
<p>嵌入式Linux领域非常广泛，主要的应用领域有信息家电、PDA、机顶盒、数字电话、应答机、大屏幕功能手机、数据网络、交换器、路由器、网桥、接线串口、遥控器访问服务、ATM机、设备固件、远程通信、医疗电子、交通运输计算机外设、工业控制、航空航天领域等。</p>
<h1>相关</h1>
<p>嵌入式系统中有许多非常重要的概念：</p>
<p>1、嵌入式处理器</p>
<p>嵌入式系统的核心，是控制、辅助系统运行的硬件单元。范围极其广阔，从最初的4位处理器，目前仍在大规模应用的8位单片机，到最新的受到广泛青睐的32位，64位嵌入式CPU。</p>
<p>2、实时操作系统</p>
<p>◆实时操作系统(RTOS-Real Time Operating System)：</p>
<div></div>
<p>嵌入式系统目前最主要的组成部分。根据操作系统的工作特性，实时是指物理进程的真实时间。实时操作系统具有实时性，能从硬件方面支持实时控制系统工作的操作系统。其中实时性是第一要求，需要调度一切可利用的资源完成实时控制任务，其次才着眼于提高计算机系统的使用效率，重要特点是要满足对时间的限制和要求。</p>
<p>3、分时操作系统</p>
<p>对于分时操作系统，软件的执行在时间上的要求，并不严格，时间上的错误，一般不会造成灾难性的后果。目前分时系统的强项在于多任务的管理，而实时操作系统的重要特点是具有系统的可确定性，即系统能对运行情况的最好和最坏等的情况能做出精确的估计。</p>
<p>4、多任务操作系统</p>
<p>系统支持多任务管理和任务间的同步和通信，传统的单片机系统和DOS系统等对多任务支持的功能很弱，而目前的Windows是典型的多任务操作系统。在嵌入式应用领域中，多任务是一个普遍的要求。</p>
<p>5、实时操作系统中的重要概念</p>
<p>系统响应时间(System response time)：系统发出处理要求到系统给出应答信号的时间。</p>
<p>任务换道时间(Context-switching time)：任务之间切换而使用的时间。</p>
<p>中断延迟(Interrupt latency)：计算机接收到中断信号到操作系统作出响应，并完成换道转入中断服务程序的时间。</p>
<p>6、实时操作系统的工作状态</p>
<p>实时系统中的任务有四种状态：运行(Executing)，就绪(Ready)，挂起(Suspended)，冬眠(Dormant)。</p>
<p>运行：获得CPU控制权。</p>
<p>就绪：进入任务等待队列，通过调度转为运行状态。</p>
<p>挂起：任务发生阻塞，移出任务等待队列，等待系统实时事件的发生而唤醒，从而转为就绪或运行。</p>
<p>冬眠：任务完成或错误等原因被清除的任务，也可以认为是系统中不存在的任务。</p>
<p>任何时刻系统中只能有一个任务在运行状态，各任务按级别通过时间片分别获得对CPU的访问权。</p>
<h1>实例</h1>
<p>1.自动柜员机（ATM）</p>
<p>2.航空电子，例如惯性导航系统、飞行控制硬件和软件以及其他飞机和导弹中的集成系统</p>
<p>3.移动电话和电信交换机</p>
<p>4.计算机网络设备，包括路由器、时间服务器和防火墙</p>
<p>5.办公设备，包括打印机、复印机、传真机、多功能打印机（MFPs）</p>
<p>6.磁盘驱动器（软盘驱动器和硬盘驱动器）</p>
<p>7.汽车发动机控制器和防锁死刹车系统</p>
<p>8.家庭自动化产品，如恒温器、冷气机、洒水装置和安全监视系统</p>
<p>9.手持计算器</p>
<p>10.家用电器，包括微波炉、洗衣机、电视机、DVD播放器和录制器</p>
<p>11.医疗设备，如X光机、核磁共振成像仪</p>
<p>12.测试设备，如数字存储示波器、逻辑分析仪、频谱分析仪</p>
<p>13.多功能手表</p>
<p>14.多媒体电器：因特网无线接收机、电视机顶盒、数字卫星接收器</p>
<p>15.个人数码助理（PDA），也就是带有个人信息管理和其他应用程序的小型手持计算机</p>
<p>16.带有其他能力移动电话，如带有蜂窝电话、个人数码助理（PDA）和Java的移动数字助理（MIDP）</p>
<p>17.用于工业自动化和监测的可编程逻辑控制器（PLCs）</p>
<p>18.固定游戏机和便携式游戏机</p>
<p>19.可穿戴计算机</p>
<h1>类型</h1>
<p>常用的嵌入式软件架构有几种不同的基本类型。</p>
<p>控制循环</p>
<p>在这种设计中，软件有一个简单的循环，这个循环调用各个子程序，每个子程序管理硬件或者软件的某一部分。中断通常用来设置标记或者更新软件其他部分能够读取的暂存器。</p>
<p>系统使用简单的API来完成允许和禁止中断设置。如果处理得当的话，它能够在嵌套子程序中处理嵌套调用，在最外面的中断允许嵌套中恢复前面的中断状态。这种方法是实现Exokernel的一个最简单的方法。</p>
<p>通常在循环中有一些子程序使用周期性的实时中断控制一组软件定时器，当一个定时器时间到的时候就会运行相应的子程序或者设置相应的标志。</p>
<p>任何可能发生的硬件事件都应该有软件定时器的支持，硬件事件大概每万亿次出现一次错误，对于现代的硬件来说大概是一年发生一次，对于以百万计大规模生产的设备来说，遗漏一个软件软件定时器在商业上可能是灾难性的。</p>
<p>有时测试软件运行一组基于软件的安全定时器，它们周期性地复位硬件中的软件看门狗。如果软件错过一个事件，安全定时器软件将会捕捉到它。如果安全定时器出错，看门狗硬件将会复位系统。</p>
<p>可以使用指向每个状态机函数的指针实现状态机，函数可以用C++、C或者汇编语言等实现。变化的状态将不同的函数放到指针中，每次循环运行时都会运行函数指针。</p>
<p>许多设计人员建议每个循环读一次输入输出设备、并且保存得到的结果，这样可以保证逻辑过程的在一致的参数上运行。</p>
<p>许多设计人员喜欢将状态机设计成每个状态仅仅检查一到两项内容，通常是检查硬件事件和软件定时器。</p>
<p>设计人员建议多级状态机应该让低层状态机早于高层状态机运行，这样高层就能够根据正确的信息运行。</p>
<p>如内部燃烧控制这样的复杂功能通常根据多维表格进行处理，代码通常进行查表处理而不进行复杂的计算，为了减小表格的大小以及成本软件可以在条目之间进行差值运算。</p>
<p>在最小的单片机中，尤其是只有128位组堆栈的8051中，控制环允许好的连接器使用静态分配的数据复盖本地变量。在这种机制中，离子程序调用树末端越近的变量得到的存储器地址越高。当开始一个新的分支的时候，它的变量可以在以前分支遗弃的空间中进行重新分配。</p>
<p>简单控制循环的一个主要缺点是它无法保证响应特定硬件事件的时间。</p>
<p>细心的设计可以很容易地保证中断不会被长时间禁止，这样中断代码就可以在非常精确的时间运行。</p>
<p>控制环的另外一个主要缺陷是增加新的特性的时候会变得复杂。需要花费很长时间的算法必须小心地进行分解以使得每次只有一小部分在主循环中运行。</p>
<p>这种系统的优势是它的简单性，并且在很小的软件上，循环运行地很快几乎没有人关心它是不可预测的。</p>
<p>它的另外一个优势是这种系统保证运行软件的质量，无法将不好的运行结果归咎为其他的操作系统。</p>
<p>非抢先式任务</p>
<p>非抢先式任务系统非常类似于上面的系统，只是这个循环是隐藏在API中的。我们定义一系列的任务，每个任务获得自己的子程序栈;然后，当一个任务空闲的时候，它调用一个空闲子程序(通常调用“暂停”、“等候”、“交出(yield)”等等)。</p>
<div></div>
<p>带有类似属性的架构都带有一个事件队列，有一个循环根据队列列表中的一个域确定删除时间和调用子程序。</p>
<p>这种架构的优点和缺点都非常类似于控制环，只是这种方法添加新的软件更加简单，只需要简单地编写新的任务或者将它添加到队列解释器中。</p>
<p>抢先式定时器</p>
<p>使用上面的任何一种系统，但是添加一个按照定时器中断运行子程序的定时器系统，这样就给系统添加了崭新的能力，这样定时器子程序第一次能在一个有保证的时间内运行。</p>
<p>另外，代码第一次能够在非预期的时间访问自己的数据结构。定时器子程序必须要象中断子程序一样进行处理。</p>
<p>抢先式任务</p>
<p>使用上面的非抢先式任务系统，从一个抢先式定时器或者其他中断运行。</p>
<p>这样系统就突然变得很不一样了。任何一个任务的代码都有可能损害其他任务的数据 &amp;emdash; 所以它们必须进行切缺的切分。对于共享数据的访问必须使用一些同步策略进行控制，如消息队列、信号灯或者非阻塞同步机制。</p>
<p>经常在这一步开发组织就会购买一套实时操作系统。如果一个组织缺少能够编写操作系统的人才或者操作系统将要在几个产品之上，这可能是一个明智的选择。这通常要将开发计划增加六到八周，and forever after programmers can blame delays on it.</p>
<p>微内核与外内核</p>
<p>这种方法试图将系统组织得比宏内核更易于配置，而同时提供类似的特点。</p>
<p>微内核是实时操作系统的一个逻辑发展，通常的组织方式是操作系统内核分配内存并且将CPU在不同的线程之间进行切换。用户模式的进程实现如文件系统、用户接口等主要的功能。</p>
<p>微内核在二十世纪五十年代开始首次尝试，但是由于计算机在任务间切换以及在任务间交换数据速度非常缓慢，所以人们放弃了微内核而钟情于MULTICS和UNIX风格的大内核。总体上来说，微内核在任务切换以及任务间通信速度快的时候是比较成功的，在速度慢的时候是失败的。</p>
<p>外内核通过使用普通的子程序调用获得的通信效率很高，硬件以及系统中的软件都是程序员能用也能扩展的。资源内核(可能是库的一部分)分配CPU时间、内存以及其他资源。如多任务、网络以及文件系统这样的大内核特性通过代码库来提供。库可以进行动态的连接、扩展或者共享。不同的应用甚至可以使用的不同的库，但是所有的资源都来自于资源内核。</p>
<p>虚拟机</p>
<p>一些航空电子系统使用几个商用计算机。这样更进一步，每个计算机都在模拟它们自身的几个副本，重要的程序同时在几个计算机上运行并且进行投票控制(vote)。</p>
<p>模拟环境的优点就是即使一个计算机出现故障，软件的不同例程能够迁移到正常工作的软件分区，表决的票数并不受影响。</p>
<p>通常虚拟软件运行在计算机的用户模式下，它捕捉、模拟硬件访问和不在用户模式下运行的指令。</p>
<p>检查点计算</p>
<p>另外一种常用的机制是两个计算机计算 for a bit，然后将它们的计算结果报到那个点上。如果一个计算机的计算是 nut，它就会被关闭。</p>
<p>办公用(宏内核)操作系统</p>
<p>这种系统通常在没有系统经费的嵌入式项目中流行，但是从这篇文章的多个作者来看，这通常是不正确的，它们的逻辑是：</p>
<p>操作系统是经过特殊封装的重用代码库。如果这些代码有用，设计人员就会节省时间和金钱，否则它们就是无用的。</p>
<p>商务系统的操作系统没有嵌入式硬件的接口。例如，如果要用Linux写一个马达控制器或者电话交换机，绝大部分的实际控制操作都是IOCTL调用，同时，正常的读、写和查询界面都是无用的。所以操作系统对于实际的开发妨碍很大。</p>
<p>大多数的嵌入式系统不处理办公事务，所以办公操作系统的大部分代码都被浪费了。例如，绝大多数的嵌入式系统从来都不使用文件系统或者屏幕，所以文件系统和图形用户界面部分就是浪费的，这些不用的代码只会影响系统的可靠性。</p>
<p>办公用操作系统保护硬件不让用户程序操作，这就严重地妨碍了嵌入式开发工作。</p>
<p>操作系统必须移植到嵌入式系统上，也就是说，硬件驱动程序无论如何都必须重写，这也是操作系统最难的部分，所以使用这样的操作系统几乎没有功效。</p>
<p>操作系统真正有用、可移植的特性是小段代码。例如，一个基本的TCP/IP接口大约有3000行代码，另外的一个例子是大约同样大小的简单文件系统。如果设计需要这些代码，能够使用少于嵌入式系统开发10%的经费就能完成，不需要支付版权费用，只需要简单地重写就可以了。如果系统这些代码有足够的通用性，嵌入式系统杂志封面的后面通常有公司销售没有版权费的C语言实现代码。</p>
<p>然而许多任务程师并不认同这一点，嵌入式Linux越来越受到人们的欢迎，尤其是在无线路由器和全球定位系统这样的功能强大的嵌入式系统中。其中有下面一些原因：</p>
<p>有现成的移植到普通嵌入式芯片的实现代码。</p>
<p>它们允许重用公开获得的设备驱动程序、网页服务器、防火墙或者其他代码。</p>
<p>开发系统能够从许多特性组合开始，在发布的时候可以剔除不需要的功能，从而节约所消耗的内存。</p>
<p>许多任务程师认为在用户模式运行应用程序更为可靠、更容易调试，所以开发过程更容易、代码更易于移植。</p>
<p>许多嵌入式系统没有控制系统那样对于实时性的严格要求，对于许多应用来说如嵌入式Linux这样的系统的响应速度就已经足够了。</p>
<p>要求更快的响应速度，而不是可靠性的特性，通常放到了硬件上。</p>
<p>许多实时操作系统都针对每件产品收取费用，当产品是消费品时，这项费用是巨大的。</p>
<p>Exotic custom 操作系统</p>
<p>一些系统需要安全、及时、可靠或者高效的特性，上面的架构却无法达到，构建这样的系统有一些广为人知的技巧：</p>
<p>1.雇佣一个真正的系统程序员。他们的花费很小，但是能够节约数年的调试以及相关的收入损失。</p>
<p>2.RMA (rate monotonic analysis)，可以用来评估一组任务能否在特定的硬件系统下运行，在最简单的形式下，设计人员保证最快完成的任务有最高的优先级，平均来说 CPU 至少有 30% 的空闲时间。</p>
<p>3.和谐的任务能够高效地优化CPU。基本上来说，设计人员保证每件工作都是从heartbeat timer开始工作的。在实时操作系统上很难这样做，因为它们在等候输入输出设备的时候通常就会切换任务。</p>
<p>4.刚好有两个优先级(通常是运行和禁止中断)的系统不能出现高优先级任务等候低优先级任务释放信号灯或者其他资源的优先级倒置问题，</p>
<p>5.有监视器(monitor)的系统不能出现死锁。监视器锁住一段代码禁止中断和其他抢先任务。如果这个监视器只用于一小段快速运行的代码，系统可能工作正常。如果能够证明监视器 API 在所有情况下都能够完整运行，例如仅仅禁止中断，那么就不会产生系统挂起的情况。</p>
<p>这就意味着使用两个优先级和监视器的系统是安全、可靠的，因为它们没有死锁和优先级倒置的问题。如果监视器能够执行到结束，那么就永远不会挂起。如果使用和谐的任务，可能还会相当高效。然而，RMA 无法描述这些系统，优先级最好也不要到处都有，其中包括操作系统和硬件。</p>
</article>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aitaocui.cn/article/337178.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
