Emb*_*iac 3 real-time rtos embedded-linux
尽管我已经用C实现了许多项目,但是我对操作系统完全陌生。我在发现板(STM32)上尝试了实时linux,并获得了正确的LED闪烁结果,但是由于我只是按照步骤进行操作,并且无法在Internet上找到每个步骤的完整说明,因此我并没有真正理解整个过程。
我想在实时Linux上实现调度。最好的开始方法是什么?有可用的网站,书籍,教程吗?
完整的RTLinux流程描述将不胜感激。
感谢在广告中。
小智 6
从“裸机”到基于OS的编程的过渡是我反向经历的。我最初是一个完整的软件专家,完全涉足OS方面,随着时间的流逝,我转向了相反的方向(甚至在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,内存管理和线程,而没有庞大OS的开销和延迟。使用RTOS,您可以创建任务并为其分配优先级,因此您可以成为调度程序,而不再受操作系统的支配。您运行的是操作系统,而不是操作系统运行的(如果这样)。另外,RTOS内提供的构造就像是裸机代码,因此更容易理解,理解和充分学习。学习诸如Linux或Windows之类的功能强大的OS的基础构建块,这是一个更为简单的世界。如果这个选项听起来不错,我建议您浏览一下FreeRTOS网站上受支持的设备,然后选择您想尝试的设备然后再去尝试。我强烈建议您将其作为一种总体上了解调度和OS结构的方法,因为它尽可能地简单和开源。一旦掌握了RTOS的基础知识,购买一本有关Linux的书就不是一个坏主意了。尽管Web上有许多与学习Linux有关的免费资源,但它们通常是矛盾的,并且可能会产生误导。通常,除了学习OS之外,还要大量学习Linux方面的知识,这会使您感到不知所措。从简单开始,可以帮助您避免筋疲力尽,并最大程度地减少您失去感觉的时间。Linux绝对是一个学习过程,但是与任何学习过程一样,从简单开始,牢记最终目标,制定计划,并花小钱,遵循该计划的可管理步骤,直到您抬起头来并找到自己想要的位置。然后去解决下一座山!
| 归档时间: |
|
| 查看次数: |
3692 次 |
| 最近记录: |