real-time - 使用 Real Time Linux 开始编程的最佳方式是什么?

标签 real-time embedded-linux rtos

虽然我用 C 实现了很多项目,但我对操作系统完全陌生。我在探索板 (STM32) 上尝试了实时 linux,并得到了 LED 闪烁的正确结果,但我并没有真正理解整个过程,因为我只是按照步骤操作,无法在互联网上找到每个步骤的完整描述。

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

完整的 RTLinux 过程描述将不胜感激。

感谢广告。

最佳答案

从“裸机”到基于操作系统的编程的过渡是我经历的相反的事情。我开始做一个完整的软件人员,完全进入操作系统方面,随着时间的推移,我转向了相反的方向(甚至用 VHDL 设计电路!)。我的建议是从简单的开始。 Linux 非常复杂,无论你在哪里看到,都有很多层共同工作以交付最终产品。如果您对实时 linux 扩展一无所知,我很乐意建议 https://xenomai.org/这是 linux 的实时扩展。

但是,要更具体地解决您关于在 Linux 中实现调度的问题,您可以,但这将是大量工作并且可能非常复杂。操作系统使用完全公平的调度过程( http://en.wikipedia.org/wiki/Completely_Fair_Scheduler ),每当您启动线程时,它都会被添加到列表中以运行。如果您在内核空间中将代码实现为驱动程序,依赖硬件中断等,这可能会略有不同,但总的来说,这就是 Linux 的工作方式。实时通常意味着它能够为线程分配几个不同的优先级之一,并在任何给定时间完全利用线程抢占,这些概念并不是 vanilla Linux 的真正组成部分。它对此有一些概念,但它有一些局限性,当您从 Linux 中寻找实时行为时,这些局限性可能会导致问题。

可能对您有帮助的是 RTOS。如果您正在寻找完整的实时操作系统,请查看 FreeRTOS http://www.freertos.org/ .它拥有庞大的社区,并通过大量示例代码支持许多开箱即用的不同设备。他们甚至通过示例包支持您的特定电路板,因此您可以毫无损失地试一试! http://www.freertos.org/FreeRTOS-for-Cortex-M3-STM32-STM32F100-Discovery.html .它使您可以访问许多 OS ish 构造,如网络 API、内存管理和线程,而无需大型操作系统的开销和延迟。使用 RTOS,您可以创建任务并为其分配优先级,这样您就可以成为调度程序,而不再受操作系统的支配。您运行操作系统,而不是操作系统运行您(如果有道理的话)。此外,RTOS 中提供的构造感觉很像裸机代码,因此更容易遵循、理解和充分学习。学习 Linux 或 Windows 等成熟操作系统的基本构建块是一个更简单的世界。如果此选项听起来不错,我建议您浏览 FreeRTOS 网站上支持的设备,然后选择您想尝试的设备,然后继续使用。我强烈推荐这是一种了解调度和操作系统构造的方法,因为它非常简单,而且开源。一旦您掌握了 RTOS 的基础知识,购买一本专门关于 Linux 的书就不是一个坏主意。尽管网络上有许多与学习 Linux 相关的免费资源,但它们通常是相互矛盾的,并且可能会产生误导。大量学习 Linux 特定知识和操作系统,可能会让人不知所措。开始更简单将有助于防止您筋疲力尽,并最大限度地减少您感到迷茫的时间。 Linux 绝对是一个学习过程,但与任何学习过程一样,从简单开始,牢记您的最终目标,制定计划,然后沿着该计划采取小的、可管理的步骤,直到您抬头并找到自己想要成为的确切位置.然后去挑战下一座山!

关于real-time - 使用 Real Time Linux 开始编程的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29358214/

相关文章:

rss - 实时或几乎实时获取 RSS 的最佳方式是什么

linux - 嵌入式 Linux 中的看门狗定时器 > 60 秒

linux - 完全消除现代 Linux >=5.0 中的计时器滴答

node.js - 如何使用 Node.js 和 PHP 向单个用户发送实时通知

bluetooth - 如何使用像 hcitool lescan 这样的 bluetoothctl 来报告重复的邻近信标

usb - 构建嵌入式系统

c - 当前在任何任务或另一个 ISR 中的 RTOS 中发生中断时会发生什么情况?

c++ - 从 QNX 移植到开源 RTOS 所需的步骤

java - 在 java 中录制音频并实时确定是否播放了 x 频率的音调(如果播放)

linux - 如何分析lpt测试用例的测试结果