首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用实时Linux开始编程的最好方法是什么?

用实时Linux开始编程的最好方法是什么?
EN

Stack Overflow用户
提问于 2015-03-30 23:41:20
回答 3查看 4.9K关注 0票数 3

虽然我用C语言实现了许多项目,但我对操作系统完全陌生。我尝试了实时(STM32),并得到了正确的闪烁发光二极管的结果,但我没有真正理解整个过程,因为我只是遵循步骤,无法在互联网上找到每个步骤的完整描述。

我想在实时linux上实现调度。什么是最好的开始方式?有网站,书籍,教程吗?

请提供完整的RTLinux流程描述。

非常感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-08 20:26:11

从“裸金属”到基于操作系统的编程的转变是我经历过的相反的事情。我开始是一个完整的软件家伙,完全进入操作系统方面的事情,随着时间的推移,我已经转移到了相反的(甚至设计电路的VHDL!)。我的建议是从简单开始。Linux是相当复杂的,到处都有很多层的东西,所有这些都是为了交付最终产品而工作的。如果您是实时linux扩展的死对头,我很乐意建议https://xenomai.org/,它是linux的实时扩展。

但是,为了更具体地解决在Linux中实现调度的问题,您可以这样做,但这将是一项很大的工作,而且可能非常复杂。操作系统使用一个完全公平的调度过程( 调度器 ),每当您旋转一个线程时,它就会被添加到列表中运行。如果您将代码作为驱动程序在内核空间中实现,依赖于硬件中断等,这可能会略有不同,但一般来说,Linux就是这样工作的。通常,实时意味着它能够为线程分配几个不同的优先级之一,并在任何给定的时间充分利用线程的抢占性,这些概念实际上并不是普通Linux的一部分。它对此有一些概念,但它有一些局限性,当您从Linux寻找实时行为时,可能会出现问题。

可能对你有帮助的是一个实时操作系统。如果您正在寻找一个完整的实时操作系统,请查看FreeRTOS http://www.freertos.org/。它有一个庞大的社区,并支持许多不同的设备开箱即用大量的示例代码。他们甚至用一个示例包支持你的特定董事会,这样你就可以在没有损失的情况下给它一次机会!http://www.freertos.org/FreeRTOS-for-Cortex-M3-STM32-STM32F100-Discovery.html。它允许您访问许多OS结构,如网络API、内存管理和线程处理,而不需要庞大操作系统的开销和延迟。使用RTOS,您可以创建任务并分配它们的优先级,这样您就可以成为调度器,不再受操作系统的支配。您运行操作系统,而不是操作系统运行您(如果这是合理的话)。此外,RTOS中提供的结构将感觉很像裸金属代码,因此更容易理解、理解和完全学习。学习一个完整的操作系统(如Linux或Windows )的基本构建块是一个更简单的世界。如果这个选项听起来不错的话,我建议在FreeRTOS网站上查看支持的设备,然后选择一个你想要尝试的,然后再去做。我强烈推荐这样做,作为了解调度和OS构造的一种方法,因为它尽可能简单,而且是开源的。一旦你有了RTOS的基本知识,买一本关于Linux的书就不是个坏主意了。尽管在网络上有许多免费的资源与学习Linux有关,但它们通常是相互矛盾的,而且可能会产生误导。与操作系统一起学习Linux的具体知识,它可以感到压倒性的。从更简单的开始可以帮助你避免筋疲力尽,并尽量减少你感到迷失的时间。Linux绝对是一个学习过程,但是和任何学习过程一样,从简单开始,记住你的最终目标,制定一个计划,并沿着这个计划采取一些小的、可管理的步骤,直到你抬起头来,找到你想要的地方。那就去解决下一座山吧!

票数 8
EN

Stack Overflow用户

发布于 2015-04-05 23:01:44

实时Linux的前景是相当混乱的。99.99%的信息只是简单的过时。

首先,有许多作为一个任务运行Linux的“微内核”。(如已失效的RTLinux)。问题是,您必须将实时任务写入不同的API,并且不能依赖Linux中的任何内容,因为在任务运行时,Linux将被冻结在后台。因此,除非你的任务非常简单(“当我按下这个按钮时停止马达”),否则这种方法会带来更多的痛苦而不是收获。

接下来是实时Linux修补程序集。这件事一直不太好。,因为下一项:

最后,当前的Linux内核有摆脱这些问题,这使得人们在过去需要实时。您甚至可以将一个处理器上的Linux关闭为完全控制CPU。另见本论文

要回答你的问题:我看到了两条不同的道路:

1)从一个正常的3.xx Linux内核开始,研究各种API和实时技术(即实时优先级、内存钉扎等)。这可以让你“接近”到99%的人想要的“实时”。如果它对高频交易来说足够好的话,它可能对你来说就足够了。

2)如果您有严格的实时要求,并且担心Linux不会对其进行剪切,那么(正如上面Nick所提到的),只需购买一个处理器并编写没有操作系统的实时代码即可。通过将您的“实时”和“非实时”代码拆分到不同的CPU中,您将使整个系统变得更简单,并使更加健壮。

票数 4
EN

Stack Overflow用户

发布于 2015-04-05 20:57:01

如果您想学习实时操作系统,那么我建议您获得一个FPGA,例如Altera DE2,并在您自己的操作系统和ucos上进行实验。您可以阅读一篇关于嵌入式实时操作系统这里的好文章。

您还可以获得一个Linux Raspberry并为此编写自己的操作系统。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29358214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档