我正在学习关于实时系统设计的入门课程(3 个月),但任何实施。
我想构建一些东西,让我更好地理解我将在理论上学到的东西,但由于我从未做过任何实时系统,我无法估计任何项目需要多长时间。考虑到我可用的时间和知识,这将是一个概念验证项目,或类似的项目。
拜托,你能给我一些想法吗?先感谢您。
我用 TSQL、Delphi 和 C# 编程,但学习另一种语言不会有任何问题。
我正在学习关于实时系统设计的入门课程(3 个月),但任何实施。
我想构建一些东西,让我更好地理解我将在理论上学到的东西,但由于我从未做过任何实时系统,我无法估计任何项目需要多长时间。考虑到我可用的时间和知识,这将是一个概念验证项目,或类似的项目。
拜托,你能给我一些想法吗?先感谢您。
我用 TSQL、Delphi 和 C# 编程,但学习另一种语言不会有任何问题。
建议您考虑探索Java 的实时规范 (RTSJ)。虽然它不是构建实时软件的传统环境,但它是一种备受关注的新兴技术。更好的是,您可以见证一些关于实时系统中什么重要、什么不重要的持续辩论。
Sun 的JavaRTS可以免费下载,并且有一些有趣的演示可用于展示确定性行为,并展示他们的 RT 垃圾收集器。
对于一个具体的项目,我建议你从简单的开始:1)构建一个工作生成器,你可以调整它以消耗给定的 CPU 时间;2) 将其放入一个框架中,该框架可以生成工作生成器任务的分布(作为线程,或作为在线程中执行的工作块)和记录所产生工作的机制;3) 制作这些任务的执行时间、停留时间、截止日期、松弛/超限与其优先级的图表;4)证明在实时线程(副分时)上下文中运行的任务表现不同。
如果您可以通过确定提供的负载(工作生成器任务产生的总 CPU 时间除以挂钟时间)来衡量调度程序中的开销,那么您的任务开始错过最后期限,则可以加分。
尝试考虑时间紧迫的实时任务,例如视频播放,如果任务没有及时完成(例如计算下一帧),它就会失败。
您也可以考虑一些工业解决方案,但在您当地的环境中可能更难研究它们。
您绝对应该考虑使用配备小型处理器(ARM、PIC、AVR,任何人都可以)的硬件开发板来构建您的系统。当我开始开发时,这确实有助于消除我对低级的恐惧。不过,您必须使用 C 或 C++。
然后,您将有两种选择:要么使用裸机,要么使用实时操作系统。
使用裸机,您可以学习:
与 RT 操作系统一起使用:
任何一个选择都是好的,你会得到一个非常酷的动手项目来炫耀,并希望能更好地理解你的课程材料。祝你好运!
由于大多数实时系统仍然使用 C 或 C++ 实现,因此复习这些编程语言的知识可能会很好。许多实时系统也是嵌入式系统,因此您可能想要使用像 BeagleBoard( http://beagleboard.org/ )这样的廉价开源系统。这也将使您有机会了解交叉编译等。