GNAT支持ARM裸机开发板

3
作为一个业余项目,我想使用Ada学习“裸机”开发。听说GNAT编译器支持各种开发板并提供几个不同的运行时-zfp、ravenscar-sfp、ravenscar-full。
我不太确定哪个MCU有更好的支持并且更易于使用。我一直在关注以下两款开发板:
TI "TMS570LC43x Hercules Development Kit"。这里有一个Cortex-R5F CPU ,它看起来非常有趣,可以学习要求硬实时应用程序的硬件特性。但是这块板子比较贵,在如何使用GNAT与此板进行开发的教程方面也没有多少资料。
ST "STM32F7 discovery kit"。这有一个Cortex-M7 CPU 。这个板子便宜得多,并且有很多教程,介绍如何使用带GNAT的STM32F系列板。
这两个开发板都似乎受到GNAT bb-runtimes 的支持。有没有人使用过其中的任何一个,能够提供推荐?它们与GNAT运行时结合工作得如何?哪一个具有更好的调试支持或开发功能?

因为TI板块(a)昂贵(b)复杂,所以我没有使用过。请参考Ada Drivers Library,了解AdaCore对各种板块的支持情况:TI板块可能因为需求不足而未被收录。 - Simon Wright
从TI的安全芯片出现了问题......它就是安全方面的问题。如果你想要尝试一些不一样的东西,你就需要担心它会变砖或者需要在ti内部或外部使用好的工具。而ST的部件则比较容易被恢复。在这种情况下,我会选择Nucleo而不是Discovery,因为它更易于使用并且成本更低。如果你能让GNAT为cortex-m构建,则任何cortex-m都可以。你提供的链接支持luminary micro lm3s,你可以使用qemu免费完成这个任务。此外,还有许多其他的stm32芯片等,你可以以10美元的价格购买开发板... - old_timer
1
问题实际上是你所说的裸机是什么意思?你是指调用库还是直接触碰硬件,如果是触碰硬件,你需要提取引导程序等其他Ada到裸机层所需的内容,然后自己动手做,并支持任何板子/芯片。 - old_timer
当我说“裸机”时,我指的是在没有某些实时操作系统的支持下运行Ada程序。我想从一个小的Ada运行时环境(如Ravenscar)开始入手,并随着经验的增加,开始使用AdaCore驱动程序库或编写一些自己的驱动程序,以访问硬件的不同部分。 - user8996961
从专业角度来看,我已经在Unix上进行了多年的低级C编程,但不是裸机。它非常相似,只是接口不同,但我想专注于Ada,因为它是完全不同的体验。带有Ravenscar运行时的Ada有点像迷你RTOS,它具有本地支持任务和各种其他功能的特点[链接](https://blog.adacore.com/theres-a-mini-rtos-in-my-language)。 - user8996961
显示剩余3条评论
3个回答

0

我最近也开始使用Ada进行裸机编程。我的板子可能是STM32F4 discovery,比我所见到的F7板子要便宜得多。第二个原因是,在Rust主页上有非常好的教程,可以在我的F3 board上尝试用Rust进行裸机编程。

对于Ada,我目前只检查了AdaCore的工具链,交叉编译似乎非常顺利。不幸的是,Ada Drivers Library不支持F3...


0
根据对我的问题的评论,STMicroelectronics的MCU似乎更易于使用,并且在GNAT Ada编译器方面得到了更好的支持。他们的大多数MCU都基于ARM Cortex-M内核,这比Cortex-R内核更常见。还有更多关于如何使用Cortex-M内核的资源(书籍,教程)。基于Cortex-R内核的MCU可能更适合从事安全关键系统工作的人。

Cortex-R增加了一些问题,如果这是你第一次或者没有足够的时间、经验和意愿来砖掉一些内核或者建立自己的PCB以解锁一个砖掉的芯片,那么你不想陷入其中。在尝试未知领域时,先学会走路再跑步,选择一些不容易变砖的东西更为明智。 - old_timer
像在Cortex-R核心上使用的DCLS(双核锁步)等功能看起来非常有趣,但我同意您对其复杂性和潜在错误的看法。 - user8996961

-1
我在ST ARM板上使用GNAT Ada已经有6年了,大约使用了40个不同的板子。他们对于直接支持的板子提供了出色的支持,而我在这些年里还添加了许多其他板子到我的收藏中。我建议选择429、469或769探索板。我更喜欢小尺寸版本,并且很开心。我刚刚完成了一些在429探索板上运行的赌场游戏。我主要使用GNAT ARM 2017版,因为那是他们最后一年支持win32的版本,而我需要它来做其他事情,但是他们2020年8月的新免费下载版除了ST板之外,还为许多其他板提供了非常好的支持。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接