专家观点:你必须了解的嵌入式Linux特性

如今,Linux正广泛应用于各种 嵌入式设备 的开发中,如数字电视、视讯转换盒、DVR播放器、xDSL/有线/PON调制解调器、家用路由器和 网络 网关。它尤其适合具有先进网络功能、大量设备驱动程序的数字家庭和家庭网络。除了嵌入式设备,Linux还支持企业级设备,如服务器和路由器。

此外,Linux在行动设备中也获得了青睐。市调机构In-Stat的报告显示,到2012年,中国基于行动Linux的智能手机出货量将达到中国智能手机总出货量的25.4%。

相较其它典型的专有商用OS,Linux蓬勃发展的原因在于其是开原始码、成本低、使用快速安全。与其它OS相较,它能够更好地进行‘剪裁’,且只占用较小空间。利用Linux,再加上来自开放原始码社群的持续支持,工程师能够使用和控制原始程序代码。开放原始码社群是由熟悉Linux的工程师组成的大型社群。

不断改进的Linux核心

然 而,在面对特定嵌入式应用时,Linux仍存在许多挑战,如内存空间有限,或是需要实时确定性以及高安全性能的应用。而工具链的改善、新的除错工具和性 能、不断演变的标准化努力等,都继续提升Linux对于所有嵌入式应用的价值。在这其中,Linux核心的不断改进异常重要。

Linux 核心是应用软件采用的标准Linux API和处理器系统(应用软件执行其上)底层硬件结构之间的接口。该核心是内部组件和外部可加载模块的复杂组合,为应用程序的执行提供全面和稳定的处理环 境,提供安全消除软件缺陷、在某种程度上防止硬件故障的能力。在开机循环期间,核心必须及时发现,并正确初始化核心系统处理器、系统内存、硬件驱动、视频卡、USB端口、网络卡和音讯处理器,而且要在开机循环期间提供是否成功的足够指示。

维持如此复杂的程序代码收集很明显是一个 严峻的挑战。核心原始程序代码被划分为标准‘树’结构,这样子系统就能够更好地彼此隔离,有助于实现几个关键核心维护工作的分布。这种分工可大幅减少核心某 一部份产生重大变化对其他部份产生的影响。每个后续子系统的变更都将传达给主要维护者,最终到达Linux核心最上游的维护者。这些变更通常称为‘外挂程 式’,在标准格式下制作和应用。

供货商和开发人员将他们的知识反馈到开放原始码社群以改进核心。Linux开放、分散的本 质,再加上背后强大的社群支持,使基于Linux的OS成为培养创新的良好选择。由于供货商和开发人员不断分享他们所学到的知识,因此存在这样的可能:当开发人员需要实现某种功能时,可以在Linux社群生态系统中找到并予以采用。

商用Linux供货商做了很多工作使Linux成为嵌入式应用中更加可行和吸引人的操作系统。

商用vs.开放原代码

当选择Linux OS时,嵌入式Linux开发人员有两个主要选择:‘免费’版本,开发人员可以下载有开放原代码授权的对象/原始程序代码;商业发行版,由不同公司维护和支持的商用产品。

目前,大多数开发人员使用的都是免费发行版。市场研究公司VDC一份针对目前Linux使用者的2007年调查中有这样一个问题:请问您将在下一个项目中使用哪种Linux OS?结果高达71%的嵌入式系统工程师表示,愿意采用免费发行的Linux版本。


由 于众多嵌入式开发人员将在下一个设计项目中选择Linux,因此,让他们体认到免费发行版本固有的局限性非常重要。这些局限包括:缺乏丰富的Linux工 具;相较竞争的实时OS来说占用更多空间;为满足实时要求最佳化Linux所面临的挑战;支持以及开发工具有限。也就是说,‘免费’意味着不花钱使用,但 并非零成本。

‘免费’≠‘零’成本

除了决定使用商用或免费Linux版本,开发 人员还必须认识到其除错/开发工具的能力和局限。嵌入式SoC领域任何有意义的设计,都要求针对嵌入式领域的高度整合的软件开发工具。从编译器到应用各个 环节的开放原始码工具,都期望能创造良好的生产品质。开发人员期望这些工具能与更短的学习曲线无缝结合。

充分发挥嵌入式 Linux免费发行版的优势,已经成为消费产品领域被广泛接收的现实。在这些市场上,产品执行率非常高,对程序代码的增加非常频繁,而且产品的销售成本至关 重要,所有这些都使得开放原始码模式极具吸引力。但是,人们通常希望开放原始码工具能够与生产品质密切相关,‘免费’和‘商用’并不同义。必须对核心和 SoC组件互动有深刻的了解,才能整合开放原始码/免费软件,并为处理器核心提供无缝除错环境的工具。因此,需要专业知识才能使目前的开放原始码工具顺利 工作。

现在有若干种‘免费软件’除错解决方案,设计人员必须全面了解其局限性。例如,针对Linux核心最受欢迎的免费软件除错器是KGDB,但主要缺点是KGDB会要求重新编译核心。这对产品已经部署到现场的应用来说并不可行。修补核心还可能导入影响系统性能的程序代码变化。

GDBServer 是另一个针对应用除错的颇受欢迎的免费软件除错器,但它也受到了严格限制。主要问题是缺乏对同时除错大量执行绪/进程的支持。随着除错的执行绪/进程数不 断增加,GDBServer性能迅速恶化,导致响应时间太慢,进而使目标系统出现故障。其它问题还涉及到:不能在相同的目标连接上除错驱动程序和应用;除 错设备驱动程序和除错共享库。了解特定应用的除错需求非常重要,应据此选择相应工具。

Linux核心的维护

在决定将选择哪种OS时,开发人员的重点是选择一个完全支持其特定处理器的操作系统,并能降低总成本和缩短上市时间。这意味着大部份核心维护已经完成,因此 若他们遇到什么问题或挑战,处理器供货商及其生态系统支持业者就能帮助解决这些问题。此外,利用供货商已正式测试的核心版本,客户在设计过程中即使不能完 全消除,也可以不断降低风险。特定处理器Linux生态系统可以利用一套标准配置和测试平台,快速而准确地隔离客户应用中的差异。

从处理器供货商的角度来看,积极参与与其核心相关的Linux核心的维护非常重要。这些供货商最有能力实现额外的新功能,以及增加原有核心功能的稳定性,因为他们了解这些核心设计中的所有‘秘密’细节。

以 MIPS为例,作为处理器IP公司,MIPS必须确保其新的处理器核心完全整合在Linux原始程序代码树,且所有的变更都透过对旧核心和平台的回归测试进 行正确验证。MIPS的核心维护人员必须‘签署’(核准)每个建议的‘外挂程序’。这些外挂程序由MIPS及其客户提交,可强化核心功能,并改善对现有核 心的支持和偶尔的错误修复。

对于像MIPS这样的IP核心供货商和Linux社群来说,最有益的方式是确保其核心的所有性能 和电源管理特性能够在Linux核心中完全实现,以便为采用Linux作为设计核心OS的使用者最佳化使用者体验,并让数以百计的Linux核心编程人员 进行核心增强的同行审查。

为了实现最佳单位面积运算能力(MIPS/每平方毫米)和最佳单位功耗运算能力(MIPS /mW),许多处理器都利用了多核心技术,在几个以较低时脉频率执行的核心间分配处理负载。这些应用能够以对称多处理(SMP)的方式进行分配,其中一项 任务是核心间的基本平分;或者采用非对称多处理(AMP),在这里特定任务被分配给一个特定核心。不论是哪种方式,Linux核心中必须有适当的支持允许 实现这些编程模型,同时对应用开发者尽可能的透明。

另一个重要的Linux核心最佳化例子是电源管理。在今天的绿色运算环境 中,电源管理日渐重要,不仅展现在要求大幅延长电池寿命的可携式设备方面,而且展现在需要尽量减少能源浪费和热量的AC供电系统中。目前一个典型的手机必 须管理20多个不同的电源层,还不包括应用处理器SoC内和核心本身的电压岛。

目前Linux核心电源管理支持主要集中在通过ACPI的标准PC。但是ACPI接口并不适合先进的多核心SoC,因为后者必须将一致性电源管理方案扩展至多个核心、内部SoC外围设备以及最后的外部系统外围设备(如RF功率放大器)。

在 MIPS,我们执行了一个先进的电源管理IP模块,称为丛集电源控制器(CPC),在具体的1004K执行中,它允许对每个核心的单独控制,使核心可以进 入或离开一致性作业,并在需要的情况下彻底关掉电源。这样的电源管理模式能够进一步扩展,使核心电压和频率调变处于操作系统本身的控制之下。这个CPC模 组的功能还必须扩展至Linux核心。


图2:丛集电源控制器允许在特定的多核心架构中对每个核心进行单独控制。

Linux开发工具

当考虑处理器对OS的支持时,开发工具很重要。最新一代Linux开发工具利用了芯片级仪器(On-Chip Instrumentation)对除错器进行‘硬件协助’。这些工具都是特定架构的,并非所有处理器都支持这种独特的除错方法。例如,目前有的 Linux工具可以剖析Linux核心及加载模块。这些工具依赖于:处理器能够以极高的速度对PC缓存器进行透明采样,并将这些信息传送到除错器。加上来 自加载模块的符号信息(Linux设备驱动程序的典型形式),开发者能够迅速剖析Linux核心,并确定设备驱动程序可能会将什么要求放在核心上。最佳化 Linux核心性能可能对系统的性能产生巨大的影响。

备受称赞的核心评测工具是Linux事件分析器,能够剖析整个系统。通常这些工具可撷取目标内产生的使用者选择的Linux事件,然后根据时间透过图形显示这些事件。这些撷取有时能够收集高达20秒的Linux系统活动。

不管应用如何,开发者都应该确保他们选择的处理器架构包含一个无缝的开发环境,包括编译器、除错器、性能和剖析工具。这种性质的工具必须满足上市时间要求, 并从一个嵌入式系统设计中获取最大的性能。投资在完全整合和经过测试的厂商提供的工具和环境,包括完整的文件、支持论坛、呼叫中心、无证见解、整合、标 准,以及整个生态系统的连接,都可以缩短目前和未来设计上市时间。

Linux社群

经 过多年的发展,Linux核心已经成为可扩展性最强、最可靠的操作系统之一,能够支持从低阶、单核到高阶、多核的嵌入式设备。随着稳定、极为轻便的 Linux核心、数百个支持无版税中介软件组件、数以千计的Linux开发者,以及越来越多的商用Linux软件和服务供货商的出现,Linux俨然已经 是一个有效的操作系统,不论是上市时间还是开发成本都是如此。

我们鼓励所有的开发者在其下一个RTOS中考虑Linux,并 寻找一个提供专用Linux支持、庞大的生态系统和除错/开发工具的处理器厂商,确保能迅速为市场提供高品质的产品。当开发者决定采用Linux时,我们 鼓励他们──不论他们是采用‘免费’还是商用版本,一定要对社群有所回馈。只要我们持续维护、关注和关心核心,Linux就可以继续成长和发展,成为下一 代嵌入式设备RTOS的选择。

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

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

相关文章

【转】小谈PNG转SVG的方法 在线转换网站与illustrator

转自:https://www.aspirantzhang.com/network/png_to_svg.html 本文主要探讨JPG/PNG转SVG矢量格式并支持FILL的方法,介绍在线转换网站和通过illustator转换的经验。 应该说,国内网站很少用到SVG格式,在此之前我只是听过&#xf…

【转】最为详尽的WPF类继承关系*!

转自:最为详尽的WPF类继承关系 - 挑战 - 博客园

【转】Ubuntu16.04安装 Matlab2018a详细教程

转自:【Ubuntu】安装 Matlab2018a详细教程_My Blogs-CSDN博客_matlab2018a安装教程 Matlab2018a安装包下载: 链接: 百度网盘 请输入提取码 提取码: 3c75 一. 安装前的准备工作 1. 将下载好的文件R2018a_glnxa64_dvd1.iso, R2018a_glnxa64_dvd2.iso, …

【转】matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件

转自:matlab与C/C混合编程——在Windows/Linux上调用Matlab编译的动态库文件_sinat_18131557的博客-CSDN博客 dateversioncomments2019/9/9V0.1Init2019/9/27V0.2添加报错信息写入log的实现文章目录 MATLAB生成Dll文件调用 生成dll文件调用dll文件MATLAB生成.so文件…

WinCE中的RAM-Based Registry与HIVE-Based Registry

WinCE支持两种类型注册表:RAM-BasedHIVE-Based,默认使RAM-Based注册表。 1.RAM-Based注册表 RAM-Based注册表所有注册表数据存储象存储(object store),就存放RAM里面。般有电池备份RAM系统面,就说,当系统掉电以&#…

【转】Linux下c++调用自己编写的matlab函数:通过mcc动态链接库.so实现

转自:Linux下c调用自己编写的matlab函数:通过mcc动态链接库.so实现_Jaster_wisdom的专栏-CSDN博客 之前在这里和这里调用了matlab自带的一些函数,是通过matlab引擎来实现的。那里调用的是matlab自带的函数,那么如果想调用自己写的…

【转】gcc/g++ 链接库的编译与链接

转自:gcc/g 链接库的编译与链接_Surge-CSDN博客_g 链接 gcc/g 链接库的编译与链接 surgewonggmail.com Surge_surgewong_CSDN博客 程序编译一般需要经预处理、编译、汇编和链接几个步骤。在实际应用中,有些公共代码需要反复使用,就把这些代…

常用WebServices返回数据的4种方法比较

以前经常在群里听到朋友们说WebServices的性能特别的慢,说的如何如何。说实话,WebServices的确比调用本地数据要慢一些,可是究竟有多慢,真的如朋友们说的那么难以忍受吗?我个人感觉,多半原因在处理的方式上…

【转】vscode下编译告警“undefined reference”?三步教你如何解决

转自:vscode下编译告警“undefined reference”?三步教你如何解决_squall0984的博客-CSDN博客 近些年来,由于VS Studio体积庞大、价格昂贵等原因,越来越多的C/C开发者转投VSCode的怀抱。VSCode有着免费1、开源2、多平台支持、占…

【转】vscode配置C/C++环境

转自:vscode配置C/C环境 - 知乎 VS Code配置作者:谭九鼎 链接:Visual Studio Code 如何编写运行 C、C 程序? - 知乎 有改动。个人按照步骤后,做到复制上三个json那一步,就可以运行了。 我将settings.json…

【转】dicom网络通讯入门(1)

转自:dicom网络通讯入门(1) - assassinx - 博客园 如果只看标准就会越看越糊涂,根本原因就是因为dicom抽象得太严重,是“专家”弄的。没办法。 那么到底服务类是什么?sop 又是什么?&#xff0…

用WebORB实现flex + .net后台的Remoting

实现flex与后台通信最简单的方式是采用httpServic的方式,或webservice。但这两种方式都是基于文本的传输,传输效率低,采用RemoteObject的方式,传输的内容采用AMF3格式的二进制编码,效率较高,并且能实现远程…

【转】dicom网络通讯入门(2)

转自:dicom网络通讯入门(2) - assassinx - 博客园 首先我们现一个echo响应测试工具,也就是echo 的scu,不是实现打印作业管理么。同学我告诉你还早着呢。本来标题取的就是《dicomviewer 第二弹 之 实现打印管理》名字多…

基于WINCE6.0下载multiple XIP镜像文件

备注:基于usb下载的方式,MLC nand flash为K9G8G08U 1. Multiple XIP模式的文件说明 Multiple XIP模式下生成的文件有chain.bin、chain.lst、NK.bin、xip.bin和xipkernel.bin,如下图所示: 图1 2. Eboot下载Multiple XI…

Final Michael Scofield

转载于:https://www.cnblogs.com/andrewx/archive/2009/08/16/1547738.html

【转】dicom网络通讯入门(3)

转自: dicom网络通讯入门(3) - assassinx - 博客园 接下来可以进行消息传递了 ,也就是dimse ,再来复习下 什么是dimse 。n-set n-create c-echo 这些都是dimse 他们都是属于一种结构的pdu 那就是tf-pdu(传…

【转】ubuntu 下 VNCview 远程桌面无法传输文件问题

转自:ubuntu18.04VNCview文件传输问题_gsls200808的专栏-CSDN博客_vnc传输文件按钮不可用 很多文章说VNCview不能传输文件,实际上这是一个误区。 以ubuntu为例,默认使用 sudo apt-get vnc4server 这个命令安装上的vncserver实际是tigerVNC…

在何时该用什么方式编译WinCE

这是一篇很好的文章,很多开发者其实并没有搞清楚这个问题:在何时该用什么方式编译WinCE 导致走了很多弯路,也包括我自己 感谢作者写了这篇文章 这么好的文章,我想应该翻译过来给大家 在何时该用什么方式编译WinCE 在新闻组里&…

【转】Ubuntu 16.04 安装 CUDA10.1 (解决循环登陆的问题)

转自:Ubuntu 16.04 安装 CUDA10.1 (解决循环登陆的问题) - Hongkai_Ding - 博客园 0. 前言 这里直接用 cuda安装文件同时安装 NVIDIA 驱动和 CUDA,没有单独安装更高版本的 NVIDIA 驱动;此安装是在 Intel 集显下的图形…

【转】Ubuntu 16.04 Nvidia驱动安装(run方式)

转自:Ubuntu 16.04 Nvidia驱动安装(run方式)_lihe的博客-CSDN博客 1.下载驱动程序 Nvidia驱动下载 https://www.geforce.cn/drivers/beta-legacy http://www.nvidia.cn/Download/index.aspx 根据显卡选择适用的驱动版本,下载完之后是一个名称为 NVIDIA…