2011-10-25 36 views
8

哪些RTOS可以做Ada有开源/免费的交叉编译器可用,支持多任务/多线程?Ada多任务实时操作系统支持开源交叉编译器

我有一个Atmel AT90USB162芯片,我想用Ada编程。我的第一个选择是使用AVR-Ada进行编程,但由于它没有任务支持,所以没有选择(现在我对如何支持它的任务没有任何线索)。所以我需要一个更强大的方法。我想过使用QNX,但它比我的芯片架要复杂得多。

我得到了AVR芯片支持uC/OS-II和FreeRTOS的信息。 FreeRTOS或uC/OS-II有免费的Ada交叉编译器吗?

谢谢。

回答

6

RTEMS至少支持某些体系结构的GNAT。但是,自从您提到Atmel AVR架构以来,由于架构限制(主要是可用内存),可能不支持这种架构。 RTEMS非常成熟(它在Linux发明之前就是开源的),并且在许多项目中被证明是非常有用的。

另一个选项是MarteOS,它支持Ada。但是,架构的支持一直非常有限(最初只有x86)。

所以,这取决于你的项目的限制,你最有可能有三种选择:

  1. 陪着AVR,写你自己的运行时支持任务的阿达;
  2. 重新考虑您是否真的需要运行时支持任务;或
  3. 将您的架构升级到支持Ada的RTOS支持的架构。

(我第一次使用GNAT Ada的RTEMS基于ARM9TDMI核心在2004 - 2005年左右的专利项目。)

+1

Hi Schedler。我检查了RTEMS的README.configure文档,也支持AVR。所以我现在要更详细地阅读文档,但我想这对我的项目使用非常有利。谢谢。 – Rego

+0

开发RTEMS,OAR公司的公司所在的办公套件与我现在正在工作的建筑物相邻。我每天午餐时在公园散步,并穿过大OAR标志。 –

+0

@MarcC - 你不想在没有它们的情况下成为小溪! ;-) –

6

那么,我知道唯一的Ada编译器就是Free Software就是Gnat。这样可以将您的问题简化为“Gnat支持分配任务的RTOS”?

ACT保留一列supported platforms here。右侧的列大部分看起来像RTOSes或伪RTOSes。 FreeRTOS和uC/OS-II似乎不在名单上。

我注意到他们的名单底部的“裸板”下的一个条目阅读“AVR微控制器ELF格式(托管在Windows)”下。这可能是你正在寻找的。不过,我认为他们的裸板端口不支持任务也很有可能。实际上,考虑一下,这可能是ACT对AVR-Ada的名称。你必须检查ACT。

此外,应该指出的是,很难找到许多更深奥的海湾合作委员会目标的“免费”二进制文件。这意味着你可能会被迫从源代码中自己构建编译器(甚至不愿意为心中暗藏),或者实际上从ACT购买支持包来获得它。

5

我原来RTEMS开发商之一,一直是RTEMS项目引自它从陆军研究项目过渡到传统的自由软件项目。 我们非常努力地将RTEMS作为一个高质量的产品与一个伟大的社区保持一致。

AVR是一个非常小的目标,RTEMS端口不完整。即使RTEMS端口已经完成,我也不认为有足够的地址空间支持GNAT/RTEMS的AVR。 GNAT将每个Ada任务映射到POSIX线程,就像在GNU/Linux上一样,“真正的Ada”环境的运行时间占用空间很大。我记得PowerPC上400K代码范围内的最小可执行文件。相比之下,RTEMS最小的C可执行文件可能在同一个目标上的32-40k范围内。

我对AVR-Ada并不熟悉,但我会同意,它不太可能为您提供完整的Ada环境。

该RTEMS项目有我们用来构建GNU工具和测试它们的脚本。如果你有兴趣为自己奇怪的目标构建工具,他们可以成为一个很好的指导。对于嵌入式目标,这个过程并没有太多变化。

马克C ..因为你在亨茨维尔,我们将不得不聚在一起午餐有时。我们的办公室与桥街大致相对。我真的不会遇到很多RTEMS用户。 :(

+0

非常明确您的回应,@,谢谢。当@Schedler谈论它时(我之前并不知道RTEMS),我曾浏览过RTEMS文档。尽管没有完整的端口,但我发现使用AVR非常有趣,即使有所有限制。至少出于学习的目的。如果您将它们与某些Power PC或SPARC架构进行比较,则大多数AVR芯片非常有限。我在VxWorks上的Power PC上开发了一些应用程序,并且他们的编程范例完全不同。 – Rego

+0

但AVR用户通常习惯于这些限制,而使用它的应用程序通常不需要深入的实时约束。在RTEMS文档“RTEMS CPU体系结构补充”中,我发现可用于AVR的功能非常有趣,因此我建议一些MSc学生使用RTEMS作为一项挑战来研究在AVR中实现某些功能的可能性。 – Rego

+0

AVR-Ada是一个梦幻般的开源项目,但现在它并不完整。如果可以的话,我会选择使用它,因为它是以非常直观的方式实现的。其目的是为某些微控制器实现一个8位窗口交叉编译器,但它缺少几个很好的Ada功能,这些功能都是使用Ada的良好口味。例如,它不支持任务,既不例外。它看起来今年还会有新的发布,但不幸的是,目前的技术水平不可能用于抢先式应用。我希望下一个版本解决这个问题 – Rego

3

我们很乐意看到的AVR口变得更加完整!鼓励您的学生加入我们的开发邮件列表,并提出问题。

RTEMS是同一类RTOS作为VxWorks的。这给了它一个这些特性集必须进行修剪,以适应较小的8位和(某些)16位CPU。我们面临的挑战是确定一个“Tiny/RTEMS”功能配置文件,RTEMS具有非常高的可扩展性,但是当您知道哪些功能集对该类CPU有意义,它没有具体的目标。请帮助定义用户需求和目标。

另外,我们真的很想拥有一个运行在免费模拟器上的BSP,每个目标架构。 SimulAVR是我在港口积极工作时所使用的。 AdaCore使用了一种叫做avrtest的东西,但它更受限制 - 有用但有限。

+0

谢谢。我会建议他们加入清单。我想这是他们学习的好机会。 – Rego