嵌入式Linux设计

嵌入式Linux设计,第1张

术语“嵌入式 Linux”属于嵌入式系统中使用的发行版类别,即专门的电子设备,它们是要控制的更大系统的一部分,为特定应用程序设计,并由定制的硬件平台支持。这些系统的主要特性在闪存、主存储器和引导时间方面对 *** 作系统施加了限制。在第一篇文章中,我们将通过对商业发行版的概述来分解一般特性;在接下来的文章中,我们将专注于设计和测试的技术方面,最终目标是创建一个真正的嵌入式发行版。

嵌入式系统

嵌入式系统代表集成到更复杂系统中的信息处理子系统;其中一些包括 *** 作系统,而另一些则高度专业化,可以作为单个程序实现,并且可能包括实时软件。一个典型的嵌入式系统如图 1 所示。

嵌入式Linux设计,第2张

图 1:典型的嵌入式系统

嵌入式Linux设计,pYYBAGLeDRqAMXLVAACMcsgrHOs305.jpg,第3张

图 2:嵌入式系统中的传感器和执行器

嵌入式系统提供多种功能(图 2),包括:

从输入传感器读取数据

生成命令并将其传输到执行器

通过执行数据压缩或解压缩将收集到的数据转换为特定格式

此外,嵌入式系统可以概括为三个层次:

软件应用层(包含所有用户程序)

软件系统级别(包含 *** 作系统和所有应用程序,以便能够与外围设备进行查询和通信)

硬件级别(代表系统的物理部分)

嵌入式 Linux 发行版的特点

Linux 是一种兼容 Unix 的开源 *** 作系统,在嵌入式系统市场上非常流行。它具有多任务处理能力和先进的编程接口。基本上,嵌入式 Linux 由三个主要模块组成:引导加载程序、内核和根文件系统。

Linux 简洁优雅的设计提供了耐用性和良好的性能,而其开源许可证允许您根据需要修改源代码。Linux 带来了一些有用的优势:

免费源代码和开发工具的可用性

POSIX 标准支持以提高不同系统之间的可移植性

广泛的 *** 作系统服务,包括网络支持

构成嵌入式 Linux 系统的组件如下:

引导加载程序,将内核从非易失性存储器加载到 RAM 中并运行它

内核,控制硬件和进程的软件

根文件系统,包含内核执行的程序的文件夹,存在于所有 Linux 发行版中

由用户创建并由系统运行的应用程序;所有这些组件相互作用以执行系统运行所需的任务

Linux中的系统内存可以分为两个区域:用户空间和内核。用户空间是用户可以运行应用程序的地方(由不属于内核的进程组成,例如文字处理器、游戏等),并按照时分机制进行组织。每个活动都分配给与要执行的任务的优先级相关的时间量。另一方面,内核空间是内核( *** 作系统的核心)运行并提供服务的地方。

除了时分机制之外,Linux 还附带了两种用于实时应用程序的额外调度算法:FIFO 和循环。循环是进程和网络调度程序使用的算法之一。另一方面,FIFO 方法按顺序安排任务,其中请求在内核中执行。如果在执行过程中发生中断,内核将被迫停止 FIFO 执行并启动中断服务程序。

嵌入式设备一直用于工业应用,随着时间的推移,开发工具不断演变,从汇编编程转向 C 编程。

在嵌入式系统中使用 Linux 既有优点也有缺点。显然,这取决于您要开发的应用程序的类型,最重要的是,取决于所需的功能。我们来分析几点:

标准系统:Linux 设计师的经验可以很容易地导出到嵌入式环境中。

多任务系统:这允许您在一台机器上运行多个程序,确保更高的代码清洁度和易于维护。

开发工具:在进入嵌入式环境之前可以进行许多测试和检查,调试的可能性更大。

驱动程序:有许多可访问的驱动程序可显着节省软件开发时间。

硬件资源: *** 作系统需要的资源比为其量身定制的系统所需的资源要多得多,但随着市场趋势,这些资源可以轻松且经济地获取。

实时:应用程序需要管理实时事件。Linux 系统需要更改,我们将在下一段中分析。

在为嵌入式系统创建 Linux 发行版时,一个反复出现的问题是您正在使用的 CPU 系列,与普通个人计算机不同,这些 CPU 通常不是 x86。为了克服这个问题,使用了所谓的交叉编译;即用交叉编译器编译程序,在与编译所在机器不同架构的计算机上获得可执行文件。

Linux 和实时

实时系统旨在满足时间限制,以避免严重的 *** 作后果。可以定义两种类型的实时系统:

软实时系统:不太严格的时间限制(网络上计算机时间的调节)

硬实时系统:非常严格的时间限制;如果不尊重,控制系统可能会变得危险(干预医院的患者管理系统)

Linux 标准的当前开发版本可用于软实时应用程序。

硬实时应用需要严格的确定性和快速的时序。适用于此类应用程序的 Linux 实时变体自 1997 年以来就出现了,新墨西哥理工大学、米兰理工大学和堪萨斯大学的研究小组已经制作了广泛分布的开源版本,并已成功实施。

有两种基本方法可以修改标准内核以提供实时响应。这些中的每一个都作为标准内核的补丁分发:

微内核:这种方法需要在硬件和标准内核之间插入一个新的、高效的代码层。额外的代码层,即微内核,负责所有实时功能,包括中断和调度。这个微内核将标准内核作为后台任务处理。另一个代码层纳米内核 (ADEOS) 仅处理中断。

IEEE 1003.1d 内核:第二种方法是在标准 Linux 内核框架内实现对 POSIX 的实时扩展。这些扩展将计时器、编程和抢占式逻辑直接添加到单个单片内核中。

最新开发版本中的标准内核显示延迟(输入到达系统与其输出可用时刻之间的时间)和抖动(信号的噪声变化)约为 1 ms。Linux 的实时版本在数百兆赫的处理器上运行时具有大约几微秒的延迟和抖动。

凭借这些性能水平,以及开放源代码分发带来的可维护性和可扩展性优势,Linux 的实时版本越来越受到政府和行业以及大学的欢迎。

  审核编辑:汤梓红

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2711541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存