虽然我用C实现了很多项目,但我对操作系统完全陌生。我在 Discovery board (STM32) 上尝试了实时 Linux,并得到了闪烁 LED 的正确结果,但我并没有真正理解整个过程,因为我只是按照步骤操作,并且无法在互联网上找到每个步骤的完整描述。
我想在linux上实现实时调度。最好的开始方式是什么?有可用的网站、书籍、教程吗?
完整的 RTLinux 流程描述将不胜感激。
提前致谢。
从“裸机”到基于操作系统的编程的转变是我逆向经历的。我一开始是一个完整的软件人员,完全专注于操作系统方面的事情,随着时间的推移,我已经转向相反的方向(甚至用 VHDL 设计电路!)。我的建议是从简单的开始。 Linux 相当复杂,无论你看到哪里,都会有很多层的东西一起工作来交付最终产品。如果您对实时 Linux 扩展一心一意,我很乐意建议https://xenomai.org/ https://xenomai.org/这是Linux 的实时扩展。
然而,为了更具体地解决您关于在 Linux 中实现调度的问题,您可以,但这将是大量工作并且可能非常复杂。操作系统使用完全公平的调度过程(http://en.wikipedia.org/wiki/Completely_Fair_Scheduler http://en.wikipedia.org/wiki/Completely_Fair_Scheduler)并且每当您启动一个线程时,它都会被添加到要运行的列表中。如果您在内核空间中将代码实现为驱动程序、依赖于硬件中断等,这可能会略有不同,但总的来说,这就是 Linux 的工作方式。实时通常意味着它能够为线程分配几个不同优先级之一,并在任何给定时间充分利用线程抢占,这些概念实际上并不是普通 Linux 的一部分。它对此有一些概念,但它有一些限制,当您从 Linux 中寻找实时行为时,可能会导致问题。
RTOS 可能对您有帮助。如果您正在寻找完整的实时操作系统,请查看 FreeRTOShttp://www.freertos.org/ http://www.freertos.org/。它拥有庞大的社区,并支持许多不同的设备,并提供大量示例代码。他们甚至通过示例包支持您的特定板,因此您可以尝试一下,不会有任何损失!http://www.freertos.org/FreeRTOS-for-Cortex-M3-STM32-STM32F100-Discovery.html http://www.freertos.org/FreeRTOS-for-Cortex-M3-STM32-STM32F100-Discovery.html。它使您可以访问许多类似操作系统的结构,例如网络 API、内存管理和线程,而不会产生大型操作系统的开销和延迟。使用 RTOS,您可以创建任务并为其分配优先级,这样您就可以成为调度程序,而不再受操作系统的支配。你运行操作系统,而不是操作系统运行你(如果这有意义的话)。另外,RTOS 中提供的构造感觉很像裸机代码,因此更容易遵循、理解和充分学习。学习 Linux 或 Windows 等成熟操作系统的基本构建块是一个更简单的世界。如果这个选项听起来不错,我建议您在 FreeRTOS 网站上查看支持的设备,然后选择您想要尝试的设备,然后继续使用。我强烈推荐将此作为了解一般调度和操作系统构造的方法,因为它非常简单并且开源。一旦掌握了 RTOS 的基础知识,购买一本专门关于 Linux 的书也不失为一个好主意。尽管网络上有许多与学习 Linux 相关的免费资源,但它们通常是相互矛盾的,并且可能会产生误导。大量学习 Linux 特定知识以及一般操作系统知识,可能会让人感到不知所措。从更简单的开始将有助于防止你精疲力竭,并最大限度地减少你感到失落的时间。 Linux 绝对是一个学习过程,但与任何学习过程一样,从简单开始,牢记您的最终目标,制定计划,并沿着该计划采取小的、可管理的步骤,直到您查找并发现自己完全处于您想要的位置。然后去攻克下一座山!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)