电子发烧友网 > 嵌入式技术 > 正文

关于Linux的特点析以及在嵌入式操作系统中的应用详解

2018年07月10日 15:05 次阅读

本文分析了Linux的特点,稳健性和局限性以及最重要的实时领域的应用。过去,因为非PC的嵌入式硬件平台价格昂贵,使得许多高性能要求的嵌入式系统不能实现。现在,因为廉价的PC硬件大力发展和广泛的应用,使得那些高性能要求的嵌入式系统有了实现的可能。

但是,嵌入式PC平台的系统软件却不那么具有吸引力。当然你可以选择DOS,不过它先天不足。你也可以选择WINDOWS,但是经过仔细的研究,你会发现它的实时性能很差。很多高级实时操作系统价格不菲,可移植性不好。从1991年以来,在网络下发展的Linux操作系统,在服务器和PC桌面机上,已经是Microsoft 的DOS和WINDOWS95/98的强劲对手。

关于Linux的特点析以及在嵌入式操作系统中的应用详解

而且它的性能比WINDOWS好得多。如果你有兴趣 ,你可以从网上自由下载,或掏比CD本身贵一点的价格买到。最近有人把实时性的部件加入Linux操作系统,使得它成为嵌入式系统设计师的一个极其有价值工具。尽管它的实时部件不如其他的RTOS那么复杂,使用的内存不能太小,但是它的其他优点足以超越和弥补它的不足。

在嵌入式系统中使用PC硬件的好处显而易见,生产量大,容易购买,价钱比较便宜。而且还很容易搞到数模转换板、网络接口板、图象采集和处理板等专用板。再加上采用PCI总线,系统性能将极大提高。在操作系统领域却没有相应的变化。

高级嵌入式系统不仅需要价格低廉的硬件,同时也需要很多复杂的功能,比如图形用户接口、网络传输。在操作系统方面,我们也需要价格便宜、性能成熟、同时又能够满足高级嵌入式系统的需求。

如今的Linux已经引起了计算机世界的高度重视。许多计算机使用者和厂商都被它的稳定性、易得性等特点吸引。它几乎完全兼容UNIX系统中的功能和开发工具、应用程序。它提供了TCP/IP通讯功能、Internet的Client & Server 功能,以及C、C++、JAVA等语言的编译工具,这些工具和功能都比MS WINDOWS成熟、完善、易用很多。当你在使用和编程中遇到问题时,通过Internet你会得到成千上万的专家和热心人的帮助。

我认为,在解决问题时,通过Internet的帮助会比单纯依靠RTOS厂商快捷有效。在厂商帮助下解 决问题,一次只会得到一种方案,如果不行,你必须重新开始;在Internet上,你会得到很多答案。今天的Linux已经得到了一些厂商的支持,你也可以从它们那得到技术支持。但是,最重要的是你拥有源代码,你可以对问题进行深入的研究,甚至可以扩展功能 。

Linux是MS WINDOWS 和DOS之外所绝佳的选择。很多嵌入式系统工程师也已经开发了Linux在嵌入式系统方面使用的价值,尤其在专用硬件环境和多处理器方面。现在的问题是如何使使Linux系统具有实时性。当前有两种方案来解决这个问题:一个是POSIX方法,另外一个是底层解决。

POSIX是类UNIX操作系统的标准化方案,目的是提高软件的可移植性,加速软件设计师的工作。POSIX.1b已有实时性扩展,包括信号、内存锁定、时钟和计数、消息队列以及抢先调度策略。不过这种办法比较适合工作站系统,对基于PC的嵌入式系统并不是很好。

其次是类UNIX的系统调用比较繁复,不如pSOS+等的明了。但是仍然有一批开发者在优化Linux,当然也取得了一些成功,譬如内存锁定方法和任务调度算法有了改进。这其中最主要的成果是POSIX线程(定义于POSIX.1c)。这个功能对嵌入式系统来说很好。

另一个方案从底层来提高Linux的实时性,即所谓的“硬”实时性。在这个方面做得最为成功的是New Mexico insTItute of Mining and Technology,他们在Linux系统下加入实时性的kernel(核心),让Linux本身运行在优先级较低的层面上。

这种设计方法对Linux 系统的修改减少到最低,同时增加必需的实时功能。这样使得在Linux本身的升级后,可以进行很少的修改就可以把RT-linux引进新版的Linux核心。RT-Linux和Linux的结合提供所有的实时功能,包括底层任务的创建、中断任务的安装、底层任务队列管理、中断任务的运行等。这种设计使得在系统中有两种域:实时域和非实时域。实时域的函数满足实时性要求;不过,任务必须简单,因为分批给它们的资源比较少。

非实时域的函数可以享用系统全部资源,但是它们的实时性比较差。两个域之间的通讯方法也提供了。在所有RT-Linux时,必须保证需要的函数在各自的运行域是合适的,不要以为先前的非实时函数在安装安装了RT-Linux后就具有了实时性,对实时性要求有关的函数必须放到实时域中去运行。

RT-Linux中任务处理也比较简单,所有rt-task-init()创建和启动实时任务。实时域和非实时域的函数通讯方法是通过FIFO进行。所有FIFO的明显好处是方便数据的传输,如果设定其长度为零,又可以当成信号所有。目前的不足是没有提供优先级继承机制(为了防治优先级的逆转)和任务的安全删除,但是在设计过程中却可以依靠仔细设计来避免这种错误发生。当然使用零长的FIFO来挂起程序的运行的方法有一点麻烦,不过它总算是一种办法。新设计的方法是设定超时功能。

RT-Linux作为简单、开放的软件,使用者可以可以根据你们的需要来更新这些功能,设计出更好的方案,并公布给大家。

RT- Linux中最为引人注意的特色是它使得Linux的核心能够被抢先。Linux以及其他类UN IX操作系统的核心都不能被长期打断。正是因为这一点,使得Linux不能是一个完全合格的实时操作系统。不过,使用上面介绍的两种方法都可以提高 Linux的实时性。

第一种方法重新设计核心,当然能够达到要求。然而Linux的核心大且复杂,还经常修正;它的设计者并不关心其实时性能。因此强加入实时的功能于现成代码并不合适。即使这样,当Linux的核心升级,就不免要重新设计程序。

RT-Linux采用的另外的方法使得Linux的核心可以被中断;它把中断分为两类:Linux控制的中断和RT-Linux控制下的中断。RT-Linux严格限制任务和中断的内容;它们不能调用Linux的核心,所以它们可以中断核心的工作。如果它们不改变核心的东西,那么它们将不会干扰核心的运行。其次,Linux的中断也不能够打断核心的运行。

于是RT- Linux采用了虚拟的中断结构,使得Linux的核心不能禁止中断。在标准的Linux系统中,使用了“sTI”和“cli”宏,然后运行X86的相应指令。RT-Linux修改了这两条指令的运行方式;执行“cli”,它不禁止中断,而是重新指向RT-Linux的代码,进行判断;如果是RT- Linux的则让中断继续执行,如果是标准Li nux的中断,则设置标志。运行“sTI”时,挂起的任何中断继续执行。如此这般,Linux不能中断它自身,RT-Linux就可以了。 

技术专区

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

Linux Kernel 4.16系列停止维护,...

知名 Linux 内核维护人员兼开发人员 Greg Kroah-Hartman 近日在发布 4.16...

发表于 2018-07-10 14:39 25次阅读
Linux Kernel 4.16系列停止维护,...

如何在Linux中驱动Generic Timer

在单核时代,各个SOC vendor厂商购买ARM core的IP,然后自己设计SOC上的perip...

发表于 2018-07-10 11:42 132次阅读
如何在Linux中驱动Generic Timer

单片机和嵌入式的概念

发表于 2018-07-10 11:21 27次阅读
单片机和嵌入式的概念

嵌入式技术真的就这么难懂吗?

很多求职者都想着找一份工资高并且轻松的工作,所以换工作也就成了求职者必经之路。很多求职网站也就成了各...

发表于 2018-07-10 11:00 15次阅读
嵌入式技术真的就这么难懂吗?

嵌入式应用已经潜移默化的进入到你的生活

发表于 2018-07-10 11:00 13次阅读
嵌入式应用已经潜移默化的进入到你的生活

人工智能的到来再次带火了嵌入式

发表于 2018-07-10 11:00 16次阅读
人工智能的到来再次带火了嵌入式

智慧人生,首选Python

发表于 2018-07-10 10:57 13次阅读
智慧人生,首选Python

Python将是人工智能时代的最佳编程语言

发表于 2018-07-10 10:57 9次阅读
Python将是人工智能时代的最佳编程语言

学习嵌入式有前途吗?

发表于 2018-07-10 10:56 9次阅读
学习嵌入式有前途吗?

嵌入式工程师的职业发展方向学习规划

发表于 2018-07-10 10:56 7次阅读
嵌入式工程师的职业发展方向学习规划

嵌入式的两大方向您了解吗?

嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,它是各种电子产品的核心技术,也是工业4.0...

发表于 2018-07-10 10:56 15次阅读
嵌入式的两大方向您了解吗?

嵌入式系统发展前景好么?

发表于 2018-07-10 10:56 9次阅读
嵌入式系统发展前景好么?

为什么要学嵌入式?学好嵌入式真的有发展前途吗?

发表于 2018-07-10 10:56 7次阅读
为什么要学嵌入式?学好嵌入式真的有发展前途吗?

嵌入式linux学习步骤

发表于 2018-07-10 10:56 7次阅读
嵌入式linux学习步骤

新手学习嵌入式的十大“不要”

发表于 2018-07-10 10:56 7次阅读
新手学习嵌入式的十大“不要”

嵌入式开发与单片机开发有什么区别

发表于 2018-07-10 10:56 12次阅读
嵌入式开发与单片机开发有什么区别

浅谈实时频谱技术在干扰诊断中的应用

本应用文章从EMI测试挑战出发,介绍了一种瞬态干扰的测试技术,作为 罗德与施瓦茨公司(R&S)全面E...

发表于 2018-07-10 08:50 154次阅读
浅谈实时频谱技术在干扰诊断中的应用

嵌入式集成开发工具该如何让其更好地服务于设计?

能够深入研究嵌入式开发工具背后的机制并将之熟练运用,标志着开发人员的技术水平达到了较高的程度。

发表于 2018-07-09 17:42 528次阅读
嵌入式集成开发工具该如何让其更好地服务于设计?

嵌入式硬件设计过程中的一些问题浅析

嵌入式开发项目中,首先需要做需求分析,然后根据需求分析进行综合考虑,这里给出几个特别要注意的问题

发表于 2018-07-09 14:59 65次阅读
嵌入式硬件设计过程中的一些问题浅析

嵌入式时代已经来临,嵌入式学习的方法你知道多少呢...

现在很多同学也意识到了学校培养模式和社会需求脱节问题,有一部分同学也先行行动起来,开始注重培养自己...

发表于 2018-07-09 14:25 76次阅读
嵌入式时代已经来临,嵌入式学习的方法你知道多少呢...

关于嵌入式系统中的处理器技术以及四大特点详解

嵌入式系统是将应用程序和操作系统与计算机硬件集成在一起的系统,它以应用为中心、以计算机技术为基础、...

发表于 2018-07-09 14:11 47次阅读
关于嵌入式系统中的处理器技术以及四大特点详解

MY-8188EUS Linux-3.14.52 Test manual

发表于 2018-07-09 14:03 74次阅读
MY-8188EUS Linux-3.14.52 Test manual

学习嵌入式有前途吗?

发表于 2018-07-09 12:00 9次阅读
学习嵌入式有前途吗?

嵌入式工程师的职业发展方向学习规划

发表于 2018-07-09 12:00 6次阅读
嵌入式工程师的职业发展方向学习规划

嵌入式的两大方向您了解吗?

发表于 2018-07-09 12:00 9次阅读
嵌入式的两大方向您了解吗?

Linux是什么?

发表于 2018-07-09 12:00 8次阅读
Linux是什么?

嵌入式系统发展前景好么?

发表于 2018-07-09 12:00 7次阅读
嵌入式系统发展前景好么?

为什么要学嵌入式?学好嵌入式真的有发展前途吗?

发表于 2018-07-09 12:00 8次阅读
为什么要学嵌入式?学好嵌入式真的有发展前途吗?

嵌入式linux学习步骤

发表于 2018-07-09 12:00 9次阅读
嵌入式linux学习步骤

新手学习嵌入式的十大“不要”

发表于 2018-07-09 12:00 7次阅读
新手学习嵌入式的十大“不要”

嵌入式开发与单片机开发有什么区别

发表于 2018-07-09 12:00 9次阅读
嵌入式开发与单片机开发有什么区别

人生苦短,我选Python.

发表于 2018-07-09 12:00 9次阅读
人生苦短,我选Python.

学习嵌入式有前途吗?

发表于 2018-07-09 12:00 9次阅读
学习嵌入式有前途吗?

嵌入式工程师的职业发展方向学习规划

发表于 2018-07-09 12:00 8次阅读
嵌入式工程师的职业发展方向学习规划

嵌入式的两大方向您了解吗?

发表于 2018-07-09 12:00 7次阅读
嵌入式的两大方向您了解吗?

嵌入式的两大方向您了解吗?

发表于 2018-07-09 12:00 13次阅读
嵌入式的两大方向您了解吗?

Linux是什么?

发表于 2018-07-09 12:00 7次阅读
Linux是什么?

嵌入式系统发展前景好么?

发表于 2018-07-09 12:00 9次阅读
嵌入式系统发展前景好么?

为什么要学嵌入式?学好嵌入式真的有发展前途吗?

发表于 2018-07-09 12:00 11次阅读
为什么要学嵌入式?学好嵌入式真的有发展前途吗?

嵌入式linux学习步骤

发表于 2018-07-09 12:00 9次阅读
嵌入式linux学习步骤

嵌入式linux学习步骤

发表于 2018-07-09 12:00 7次阅读
嵌入式linux学习步骤

新手学习嵌入式的十大“不要”

发表于 2018-07-09 11:57 9次阅读
新手学习嵌入式的十大“不要”

嵌入式开发与单片机开发有什么区别

发表于 2018-07-09 11:57 7次阅读
嵌入式开发与单片机开发有什么区别

人生苦短,我选Python.

发表于 2018-07-09 11:57 12次阅读
人生苦短,我选Python.

智慧人生,首选Python

发表于 2018-07-09 11:57 9次阅读
智慧人生,首选Python

Python将是人工智能时代的最佳编程语言

发表于 2018-07-09 11:57 15次阅读
Python将是人工智能时代的最佳编程语言

学习嵌入式有前途吗?

发表于 2018-07-09 11:57 9次阅读
学习嵌入式有前途吗?

嵌入式工程师的职业发展方向学习规划

发表于 2018-07-09 11:57 11次阅读
嵌入式工程师的职业发展方向学习规划

嵌入式的两大方向您了解吗?

发表于 2018-07-09 11:57 9次阅读
嵌入式的两大方向您了解吗?

Linux是什么?

发表于 2018-07-09 11:57 12次阅读
Linux是什么?

嵌入式系统发展前景好么?

发表于 2018-07-09 11:57 17次阅读
嵌入式系统发展前景好么?

为什么要学嵌入式?学好嵌入式真的有发展前途吗?

发表于 2018-07-09 11:57 19次阅读
为什么要学嵌入式?学好嵌入式真的有发展前途吗?

嵌入式linux学习步骤

发表于 2018-07-09 11:57 11次阅读
嵌入式linux学习步骤

新手学习嵌入式的十大“不要”

发表于 2018-07-09 11:57 15次阅读
新手学习嵌入式的十大“不要”

嵌入式开发与单片机开发有什么区别

发表于 2018-07-09 11:57 9次阅读
嵌入式开发与单片机开发有什么区别

人生苦短,我选Python.

发表于 2018-07-09 11:57 16次阅读
人生苦短,我选Python.

人生苦短,我选Python.

发表于 2018-07-09 11:57 20次阅读
人生苦短,我选Python.

智慧人生,首选Python

发表于 2018-07-09 11:57 16次阅读
智慧人生,首选Python

Python将是人工智能时代的最佳编程语言

发表于 2018-07-09 11:57 10次阅读
Python将是人工智能时代的最佳编程语言

学习嵌入式有前途吗?

发表于 2018-07-09 11:57 14次阅读
学习嵌入式有前途吗?

嵌入式工程师的职业发展方向学习规划

发表于 2018-07-09 11:57 14次阅读
嵌入式工程师的职业发展方向学习规划

嵌入式的两大方向您了解吗?

发表于 2018-07-09 11:57 16次阅读
嵌入式的两大方向您了解吗?

Linux是什么

发表于 2018-07-09 11:57 15次阅读
Linux是什么

嵌入式系统发展前景好么?

发表于 2018-07-09 11:57 11次阅读
嵌入式系统发展前景好么?

为什么要学嵌入式?学好嵌入式真的有发展前途吗?

发表于 2018-07-09 11:57 23次阅读
为什么要学嵌入式?学好嵌入式真的有发展前途吗?

嵌入式linux学习步骤

发表于 2018-07-09 11:57 13次阅读
嵌入式linux学习步骤

新手学习嵌入式的十大“不要”

发表于 2018-07-09 11:57 21次阅读
新手学习嵌入式的十大“不要”

嵌入式开发与单片机开发有什么区别

发表于 2018-07-09 11:57 17次阅读
嵌入式开发与单片机开发有什么区别

人生苦短,我选Python.

发表于 2018-07-09 11:57 13次阅读
人生苦短,我选Python.

智慧人生,首选Python

发表于 2018-07-09 11:57 15次阅读
智慧人生,首选Python

Python将是人工智能时代的最佳编程语言

发表于 2018-07-09 11:57 19次阅读
Python将是人工智能时代的最佳编程语言

如何快速的提高嵌入式的水平呢?

发表于 2018-07-09 11:53 21次阅读
如何快速的提高嵌入式的水平呢?

你知道CAN-FD协议有多少?

发表于 2018-07-09 11:53 21次阅读
你知道CAN-FD协议有多少?

嵌入式系统的特点

发表于 2018-07-09 11:53 25次阅读
嵌入式系统的特点

嵌入式视觉技术

发表于 2018-07-09 11:53 19次阅读
嵌入式视觉技术

物联网的发展离不开嵌入式

发表于 2018-07-09 11:53 17次阅读
物联网的发展离不开嵌入式

Linux系统开机和启动过程

提起操作系统这个词,想必大家并不陌生,有电脑端操作系统和手机端操作系统。电脑端操作系统较为熟悉的就是...

发表于 2018-07-09 11:53 60次阅读
Linux系统开机和启动过程

嵌入式Linux工程师的学习发展步骤,如何测试工...

从嵌入式研发行业十年,认为学习就是要不断的吸纳知识,在研发过程中,经常会遇到一些问题,这种发现问题并...

发表于 2018-07-09 11:37 85次阅读
嵌入式Linux工程师的学习发展步骤,如何测试工...

怎么样在Linux和Windows之间共享文件?...

用一些来自 Linux 社区的工具,在 Linux 和 Windows 之间共享文件是超容易的。让我...

发表于 2018-07-09 10:57 197次阅读
怎么样在Linux和Windows之间共享文件?...

为什么要学习运维?来看美国运维的大数据报告了解运...

这是第一份运维薪水调查报告,发现了一些有趣方面。比如说,运维专业人员不光对现状普遍感到满意,对于工作...

发表于 2018-07-09 10:52 87次阅读
为什么要学习运维?来看美国运维的大数据报告了解运...

linux目录结构

发表于 2018-07-09 09:33 26次阅读
linux目录结构

LINUX Fredora 下yum的使用

发表于 2018-07-09 08:29 50次阅读
LINUX Fredora 下yum的使用

6410ARM嵌入式教学实验教程

发表于 2018-07-09 07:45 26次阅读
6410ARM嵌入式教学实验教程

Linux命令格式解析

发表于 2018-07-09 05:50 23次阅读
Linux命令格式解析

与嵌入式新手分享Linux内核编码风格

发表于 2018-07-09 04:13 27次阅读
与嵌入式新手分享Linux内核编码风格

与嵌入式新手分享Linux内核编码风格

发表于 2018-07-09 04:13 27次阅读
与嵌入式新手分享Linux内核编码风格

深入探究Linux的设备树

发表于 2018-07-09 00:15 26次阅读
深入探究Linux的设备树

Linux运维工作至少需要知道哪5点知识你知道吗...

知乎上有这样一个问题:一个新手面试 Linux 运维工作至少需要知道哪些知识?其中有一个答案对这一话...

发表于 2018-07-06 14:57 274次阅读
Linux运维工作至少需要知道哪5点知识你知道吗...

97条Linux常用命令总结你了解多少啊看懂了你...

1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文...

发表于 2018-07-06 14:53 228次阅读
97条Linux常用命令总结你了解多少啊看懂了你...

grep常用用法,grep与正规表达式

但是第 18 行明明有 google 的 goo 啊~别忘记了,因为该行后面出现了 tool 的 t...

发表于 2018-07-06 11:14 174次阅读
grep常用用法,grep与正规表达式

基于AM57x平台的PCIe通信案例(三)

发表于 2018-07-06 10:40 280次阅读
基于AM57x平台的PCIe通信案例(三)

基于AM57x平台的PCIe通信案例(二)

发表于 2018-07-06 10:32 177次阅读
基于AM57x平台的PCIe通信案例(二)

嵌入式C语言的三道关键性试题和答案你知道吗?

简述ARM Linux内核启动三个阶段的功能。 在嵌入式系统中对GUI的基本要求是什么? ARM...

发表于 2018-07-06 10:09 175次阅读
嵌入式C语言的三道关键性试题和答案你知道吗?

嵌入式C语言中Const关键字的基础知识和作用的...

const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。

发表于 2018-07-06 10:02 134次阅读
嵌入式C语言中Const关键字的基础知识和作用的...

嵌入式Linux内核字符设备的详细资料概述

学内核不是为了吓唬人的,是为了掌握其原理,学习其技巧与方法,知其然而知其所以然,另外内核代码是具有一...

发表于 2018-07-06 09:57 222次阅读
嵌入式Linux内核字符设备的详细资料概述

如何在Linux 中安装和使用 PacVim?

PacVim 的灵感来源于经典游戏 PacMan,它以一种好玩有趣的方式为你提供了大量的 Vim 命...

发表于 2018-07-06 09:50 163次阅读
如何在Linux 中安装和使用 PacVim?

来聊聊函数是怎么传入参数的

从图例中可以看出,当A函数没有调用B函数时,A函数的栈帧只保存着局部变量,而EBP(栈底指针)指向的...

发表于 2018-07-05 15:57 189次阅读
来聊聊函数是怎么传入参数的

一种新型的仪表设计方案

Ameya360 汽车仪表盘解决方案针对传统仪表和现有仪表存在的不足,提出了一种新型的仪表设计方案,...

发表于 2018-07-05 11:45 269次阅读
一种新型的仪表设计方案

嵌入式C语言必须要用的4个关键字和它的详细资料概...

1.static关键字 这个关键字前面也有提到,它的作用是强大的。 要对static关键字深入了...

发表于 2018-07-05 10:20 153次阅读
嵌入式C语言必须要用的4个关键字和它的详细资料概...

如何使用环境变量进行Linux提权的方法详细资料...

在这篇文章中,我将会为大家介绍一些使用环境变量进行Linux提权的方法,包括在CTF challen...

发表于 2018-07-05 09:50 624次阅读
如何使用环境变量进行Linux提权的方法详细资料...