0

我正在学习关于实时系统设计的入门课程(3 个月),但任何实施。

我想构建一些东西,让我更好地理解我将在理论上学到的东西,但由于我从未做过任何实时系统,我无法估计任何项目需要多长时间。考虑到我可用的时间和知识,这将是一个概念验证项目,或类似的项目。

拜托,你能给我一些想法吗?先感谢您。

我用 TSQL、Delphi 和 C# 编程,但学习另一种语言不会有任何问题。

4

4 回答 4

3

建议您考虑探索Java 的实时规范 (RTSJ)。虽然它不是构建实时软件的传统环境,但它是一种备受关注的新兴技术。更好的是,您可以见证一些关于实时系统中什么重要、什么不重要的持续辩论。

Sun 的JavaRTS可以免费下载,并且有一些有趣的演示可用于展示确定性行为,并展示他们的 RT 垃圾收集器。

对于一个具体的项目,我建议你从简单的开始:1)构建一个工作生成器,你可以调整它以消耗给定的 CPU 时间;2) 将其放入一个框架中,该框架可以生成工作生成器任务的分布(作为线程,或作为在线程中执行的工作块)和记录所产生工作的机制;3) 制作这些任务的执行时间、停留时间、截止日期、松弛/超限与其优先级的图表;4)证明在实时线程(副分时)上下文中运行的任务表现不同。

如果您可以通过确定提供的负载(工作生成器任务产生的总 CPU 时间除以挂钟时间)来衡量调度程序中的开销,那么您的任务开始错过最后期限,则可以加分。

于 2009-04-10T01:57:43.267 回答
2

尝试考虑时间紧迫的实时任务,例如视频播放,如果任务没有及时完成(例如计算下一帧),它就会失败。

您也可以考虑一些工业解决方案,但在您当地的环境中可能更难研究它们。

于 2009-04-01T18:12:01.533 回答
1

您绝对应该考虑使用配备小型处理器(ARM、PIC、AVR,任何人都可以)的硬件开发板来构建您的系统。当我开始开发时,这确实有助于消除我对低级的恐惧。不过,您必须使用 C 或 C++。

然后,您将有两种选择:要么使用裸机,要么使用实时操作系统。

使用裸机,您可以学习:

  • 如何从头开始初始化处理器,最重要的是如何使用中断,这是响应外部事件的最快方式
  • 如何实现具有快速上下文切换的轻量级线程,这是每个实时操作系统都实现的
  • 为了稍微简化这一点,请寻找带有大量文档和源代码的开发工具包。我使用了 Embedded Artists ARM 板,它们为您提供了很多材料。

与 RT 操作系统一起使用:

  • 您将快速跟踪您的项目,并能够学习如何微调 RT 操作系统
  • 您可以尝试使用开源操作系统,例如 Linux 或 BSD,并从源代码中学到很多东西

任何一个选择都是好的,你会得到一个非常酷的动手项目来炫耀,并希望能更好地理解你的课程材料。祝你好运!

于 2009-04-10T02:12:25.367 回答
0

由于大多数实时系统仍然使用 C 或 C++ 实现,因此复习这些编程语言的知识可能会很好。许多实时系统也是嵌入式系统,因此您可能想要使用像 BeagleBoard( http://beagleboard.org/ )这样的廉价开源系统。这也将使您有机会了解交叉编译等。

于 2009-04-04T00:16:15.693 回答