赞
踩
Linux嵌入式系统整合了嵌入式硬件平台和Linux操作系统,多应用于处理复杂度较高、任务数较多的系统中。Linux嵌入式系统兼顾了硬件平台的差异性和软件系统良好的可移植性,在一些高端应用领域,如路由器、POS机、工业主机等嵌入式行业中,有着其他嵌入式系统无可比拟的优势。
嵌入式系统自计算机诞生以来,逐渐渗透到人们生活的衣、食、住、行、用等各个方面,从当下流行的智能穿戴产品,如智能手环、谷歌眼镜等,到购买饮料的自助售货机,再到越来越火的智能家居系统、自驾游的车载终端以及自动驾驶系统……不难发现,在人们日常生活中越来越离不开嵌入式系统。人们熟知的单片机系统多应用在智能小家电、电机驱动、自动化控制以及自然资源勘测等领域,这种系统功能单一、任务少,不需要复杂的时间调度。而像手机、路由器、POS机、多功能自助售货机以及智能机器人里面的嵌入式系统,由于系统复杂、架构分层明确,普通的裸机程序已经不能满足用户的需求,因此嵌入式操作系统渐渐发展壮大起来。
那么未来嵌入式系统发展趋势如何?下面从以下4个方面进行说明
嵌入式系统包含硬件系统和软件系统,硬件系统平台化、软件系统模块化,采用整体封装的思想,将嵌入式系统看成一个生态系统,就是要求系统供应商在提供硬件系统的同时,也要提供与之配套的软件、工具链等。
嵌入式系统在某个领域长时间积累经验后,会将技术经验封装在芯片里,或将程序固化在芯片里,比如现在的WiFi模块、蓝牙模块、电量芯片等专用化程度非常高的芯片,降低了嵌入式系统的复杂度。
目前的嵌入式系统伴随着处理器向片上系统(SOC)的发展,指令集也越来越精简。硬件模组化也是目前芯片厂商的一个重要发展方向,而且硬件的模块化设计,使得接口逐渐统一,嵌入式系统的开发也变得越来越简单。加上程序运行调试工具越来越精细化,未来的嵌入式系统势必要将软硬件精简化,从而提高产品的开发速度。
人性化要求嵌入式系统在设计之初就要深入调查市场需求,设计友好的人机交互界面,重视用户的体验感。这就要求嵌入式系统的开源化。开源的嵌入式系统,更有利于工程师之间的交流,也有利于问题的检查。国家新基建的方向着重向着人工智能、大数据以及5G基站方向发展,这些技术背后不是单独一个芯片裸机就能支持的,而是需要强大芯片以外的另一个强大的操作系统。因此,学习嵌入式Linux系统开发就是我们“后浪”乐此不疲、迎难而上的表现。嵌入式系统市场巨大的需求量,导致大部分IT公司(无论大小)都要组建自己的嵌入式系统开发团队,因此我们应该深刻领悟嵌入式系统于个人、家庭、国家的意义。
嵌入式系统是指嵌入到一个设备或产品中的专用计算机系统。这些系统通常执行特定的任务,并且优化以满足特定的功能需求、功耗、性能或成本等要求。嵌入式系统通常包括微控制器或微处理器、存储器、输入输出设备等组件,广泛应用于汽车、家用电器、医疗设备、工业控制系统等领域。
嵌入式系统是区别于通用计算机系统的,它是内嵌在设备或者机器内部、对用户无感交互的计算机系统。嵌入式系统的硬件和软件都必须高效率地进行设计,量体裁衣、去除冗余。由于嵌入式系统的相关产品通常需要进行大批量生产,所以单个产品的成本能否节省,会随着产量的增加形成千百倍放大的效果。因此,嵌入式系统开发的专用性和灵活度都很高。
你看这两组图用户都看不到电路板、芯片以及软件系统,这部分内容都被整机设备内嵌在内部。其次,用户对两组产品的侧重点不同,
第一张图用户只关注使用的效果和稳定性;
第二张图用户更多关注的是系统的交互性,要方便用户操作使用。
我们可以简单给嵌入式系统做个总结:嵌入式系统是一种内嵌在机器(设备)内部、能够独自运行的计算机系统单元。嵌入式系统就是计算机系统在各个领域对系统剪裁使之适用于某个领域或者行业的计算机处理单元。
嵌入式操作系统(Embedded Operating System)是专门为嵌入式系统设计的操作系统。这类操作系统优化以满足嵌入式系统的资源限制(如内存、处理能力等),通常具有实时性、确定性和可靠性等特性。常见的嵌入式操作系统包括FreeRTOS、VxWorks、嵌入式Linux、ThreadX等。
需要注意的是嵌入式系统要内嵌在专用的应用设备中,从而实现对设备的智能化控制,所以它在技术上和普通计算机系统发展方向是不尽相同的。普通的计算机系统更注重娱乐功能和快速的数据处理能力,嵌入式系统的技术发展方向总是提高计算机处理能力和速度,因此迭代速度比较快。嵌入式系统技术发展方向是应用领域细分化、功能专用化、智能化以及高可靠性。
这里要提到剪裁的概念,它指的是硬件以及软件上的剪裁。硬件检查主要根据应用领域对嵌入式系统板卡的硬件功能需求,比如温湿度记录仪,用户只关心对温、湿度环境参数的感知,没有过多延伸的需求,这在设计电路板卡时,只需要处理单元、显示单元以及传感器,其他系统单元比如存储单元、网络处理单元就可以剪裁掉。软件剪裁是指根据设备的使用场景,定制软件功能,比如POS主要定制联网刷卡购物的功能,可以忽略它的娱乐功能。嵌入式系统灵活自由的剪裁功能,能够降低劳动成本,提高工作效率。
嵌入式系统大致可以从处理器、系统性能、系统软件复杂度以及嵌入式系统的行业应用领域四大维度看
处理器:
系统性能:
系统软件复杂度:
简单嵌入式系统:通常使用简单的操作系统或没有操作系统,如电子玩具、简单传感器。
复杂嵌入式系统:使用复杂的操作系统(如嵌入式Linux)和更多的软件层次,如智能电视、智能家居设备。
行业应用领域:
操作咱家系统的傻瓜们永远都想不到,他随便一个点击打开文件夹就直接牵扯到系统精心设计的五层结构
常用的操作系统体系结构包括层次结构和微内核结构两种。这里将对层次结构做展开 。
操作系统整个体系结构设计是指选择合适的结构,通过分层、分模块或分资源等方式对操作系统功能进行划分,
** 假设我们要在一台计算机上运行一个文本编辑器(如Notepad),来编辑并保存一个文本文件**
用户层 用户打开文本编辑器(如Notepad),在界面中输入文字,并点击“保存”按钮来保存文件。用户层包括所有用户交互的应用程序和界面,文本编辑器应用程序通过系统调用接口与操作系统交互,完成文件的读取和保存操作。
系统调用接口层:文本编辑器通过系统调用接口请求操作系统打开一个文件(如调用open()系统调用),读取文件内容(如调用read()系统调用),以及保存编辑后的内容(如调用write()系统调用)。系统调用接口层提供了一组API,允许应用程序请求操作系统执行底层操作。
内核层: 操作系统内核管理进程的调度,如文本编辑器进程的创建与运行;内存管理,确保文本编辑器有足够的内存使用;文件系统管理,确保硬盘上的文件可以正确读写。 内核负责系统资源的管理和分配,确保各个进程能有效运行并且能访问硬件资源。
硬件抽象层(HAL):键盘输入被键盘驱动程序通过HAL处理,屏幕显示通过显示驱动程序通过HAL处理,硬盘读写操作也通过硬盘驱动程序通过HAL处理。HAL提供了统一的接口,允许操作系统与这些硬件设备进行交互,而无需考虑具体的硬件实现细节。
硬件层: 用户将通过键盘输入文字,屏幕显示输入的内容,硬盘用于存储文件。键盘、显示器和硬盘是直接参与操作的物理设备。
通过这种方式,我们可以看到每一层级是如何协同工作,共同完成用户操作的。
所以层次结构通常包括以下几个层次: 硬件层、硬件抽象层(HAL)、内核层、系统调用接口层、用户层。
对于硬件层这是实际的物理设备所在层,如CPU、内存、硬盘、显示器、网卡。这一层直接涉及物理硬件设备的操作和管理,处理硬件信号和低级指令。
硬件抽象层(HAL)是操作系统中的硬件抽象模块,如Android中的HAL模块,或Windows中的WDDM(Windows Display Driver Model)。
HAL通过提供统一的接口,让操作系统和应用程序可以独立于具体的硬件设备工作。比如,在Android系统中,HAL模块使得不同的硬件能够通过相同的API被系统调用。
内核层就是 Linux内核、Windows内核(NT内核)。 是操作系统的核心部分,负责管理系统资源,包括进程调度、内存管理、设备驱动、文件系统等。
系统调用接口层有个标准叫POSIX标准其规定了的系统调用的接口,如fork()
, read()
, write()
, open()
。 这一层提供了一组系统调用API,供用户态程序调用,以便执行诸如文件操作、进程控制和通信等任务。
用户层是用户运行的应用程序,如Microsoft Word、Google Chrome、手机上的微信APP。 用户层包括所有用户运行的应用程序和用户接口,应用程序通过系统调用接口层来请求操作系统服务。
Linux系统版本主要指的是Linux发行版,这些发行版由不同的个人、团队、商业机构和志愿者组织编写,通常包括了系统软件、应用软件,以及用于简化初始安装的工具和软件安装升级的包管理器。以下是一些典型的Linux发行版及其特点:
一般来说发行版包括以下几个主要组成:
换句话说是 这五个组件凑起来了一个功能齐全的操作系统,至于其发行版我们都是根据其应用场景结合发行版本的特点来做选择使用
Ubuntu以其易于使用和良好的硬件兼容性著称,特别适合初学者和桌面用户。它有定期的LTS(长期支持)版本,提供五年的安全更新。
:Fedora常被用作新技术的试验平台,提供最前沿的软件和功能。它的快速发布周期(约每六个月)意味着用户可以快速获取最新的软件。
Debian以其稳定性和严格的开源政策闻名,适合服务器和需要高度可靠性的环境。Debian的软件仓库非常庞大,包含超过50,000个软件包。
Arch Linux采用滚动更新模式,用户可以随时获得最新的软件和功能。它强调简洁性和用户控制,安装和配置需要较高的技术水平。
RHEL是商业发行版,提供企业级的技术支持和服务,适合企业和关键任务环境。Red Hat的支持和认证使其在企业中广受欢迎。
:CentOS是Red Hat Enterprise Linux的社区版,提供企业级的稳定性和长生命周期支持,适合服务器和企业环境。
不同的发行版可能会有不同的目标用户群体和使用场景,例如Ubuntu适合桌面用户,RHEL适合企业环境,而Arch Linux则面向高级用户和开发者。
[ 产品市场定位 ] -> [ 产品需求分析 ] -> [ 产品规范说明 ] -> [ 产品整体设计 ] -> [ 产品详细设计 ] -> [ 产品调试与验证 ] -> [ 产品检测 ] -> [ 产品定型 ]
嵌入式系统的一般开发流程有点复杂,原因在于嵌入式系统一般在设计时要分为硬件设计和软件设计,所以涉及的知识面较广。并且嵌入式系统的测试也比较复杂,除了常规的单元测试项目以外,还需要软硬件综合测试,在这个阶段测试工程师也需要比较高的技术水平。
嵌入式产品系统开发需要遵循一定的开发流程,一般从需求分析到总体设计再到最终的嵌入式产品,大致经历8个阶段。
在产品市场定位阶段主要是考虑产品的消费群体和产品最终的技术状态。这有别于产品需求分析,这个阶段主要是从产品整体的定位上制定产品目标。
此阶段是在产品有了初步的市场定位、大致的产品功能以后进行的工作,主要是对人和物的分析。人指的是消费者群体,分析他们的喜好、习惯、经济接受能力等;物则是指产品,分析产品的功能类型、技术特点以及产品可行性等。
产品有了需求分析,就能确定产品的功能、外观、技术特点、可行性分析报告,这些都应以文档的形式规范下来,有利于研发工程师在产品开发过程中不偏离研发路线,或者忽略某些关键功能。这些规范和标准在产品开发过程中起着非常重要的作用,甚至是产品成败的关键。
产品整体设计阶段主要参与者就是产品经理和研发人员了,产品经理需要将产品整体功能和研发人员交流讨论,将产品的系统架构、平台选择、功能体系、功能框图等体系架构制定下来。根据研发的分工,硬件工程师负责硬件整体设计、软件工程师负责软件整体设计、产品经理统筹协调工作。
产品的详细设计阶段,根据产品上一阶段制定的总体方案,研发工程师负责细化体系架构,将整体功能分散细化,硬件工程师负责硬件功能的实现、软件工程师负责软件功能的实现。
产品形成工程样机后,需要将样机交给测试人员测试,测试人员首先要制定测试计划和测试用例,在样机测试的过程中遇到测试问题要记录,在最终测试报告中要突出体现,防止类似问题再次发生。产品测试阶段,研发工程师需要配合测试人员对样机不断优化,如果需要,研发人员应该配合测试。
到这个阶段,已经是产品定型了,需要对产品做一些认证、性能试验、功能可靠性试验。这个阶段是产品品质和可靠性检测最后一关,因此研发人员在做需求分析的时候,这个阶段的工作要提前考虑。
产品定型阶段属于产品生产阶段的一部分工作,研发测试人员将相应的技术文件、测试文件、装配文件移交生产部门,生产部门先小批量试生产,最后量产。我们可以通过图1-31的流程图,来了解一下嵌入式系统的开发流程。嵌入式产品开发流程大体就是按照以上八个阶段开发。开发流程不是一成不变的,需要根据嵌入式产品的特点进行适当调整,但是总体开发流程不会差别太大。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。