ada.jpg

武装Ada

2014年3月20日
技术编辑Bill Wong使用AdaCore的GNAT编程工作室和Ada 2012针对德州仪器的BeagleBone Black。

> >网站资源
..> >图书馆:TechXchange
. . . .>> TechXchange:嵌入式软件
. . . . . .>>主题:Ada和SPARK

Ada编程语言多年来已经发生了变化(参见“区别在哪里:艾达过去和现在”).我最近有机会在一台基于arm的BeagleBone Black上试用了AdaCore最新的Ada开发系统GNAT编程工作室(GPS)(图1).BeagleBone Black的频率为1ghz德州仪器的基于AM3335x处理器手臂的Cortex-A8。

图1所示。BeagleBone Black有一台德州仪器(Texas Instruments)的AM335x,运行Linux和我的Ada程序。

我真的很喜欢BeagleBone Black。你可以在电子设计网站上查看我和Jadon Kridner做的一个网络研讨会(看”BeagleBone Black - BeagleBoard.org的价值45美元的1GHz Linux计算机”).也看看beagleboard.org为更多的细节。

BeagleBone Black可以运行任何语言编写的应用程序。BeagleBone的一些软件是用C、c++、Python和Javascript编写的。它还可以运行用包括Ada在内的任何编程语言编写的应用程序。它可以运行简单的代码,但它通常运行Linux。

我可以运行GPS,但对我来说在PC上运行要容易得多。我使用Fedora 20但推荐的Linux主机平台是Red Hat Enterprise Linux(RHEL)。如果你不想使用RHEL,那就试试CentOS.这是免费版本。

无论如何,第一步是在32位Fedora上安装GPS(图2)它运行在64位版本Fedora的虚拟机上。这包括IDE和工具套件,但缺少创建程序所需的目标特定文件。这实际上是有道理的,因为BeagleBone Black版本的Linux并不是唯一一个可能成为目标的版本。这个工具套件的目标是Cortex-A类平台。我将着眼于未来针对基于Cortex-M家族的基本平台的一款游戏。

图2。AdaCore的GPS可以在多种平台上运行,包括Linux

这意味着第二步是复制库并包含来自BeagleBone Black的文件。它有助于检出README文件。在那之后,创建典型的Hello World程序并在BeagleBone Black上运行它只是一个简单的练习。

我从针对Cortex-A的版本开始的一个原因是,在Ada支持上没有妥协。比如艾达合同(见“Ada 2012:契约的喜悦)和其他Ada安全功能在AdaCore的所有平台上都可用,但一些功能,比如多任务处理,可能会受到目标平台能力的限制。这适用于任何编程语言,不仅仅是Ada。我能够将一些简单的Ada应用程序从x86平台转移到BeagleBone Black,而无需做任何修改,只需重新编译即可。

我不会详细讨论构建和调试细节,因为它们与任何跨平台开发系统都是一样的。由于BeagleBone Black具有以太网连接并运行Linux,因此使用以太网设置远程调试会话非常简单。这与针对x86系统的唯一区别是主机处理器的运行速度。

我只简要介绍了GNATtest提供的单元测试支持和可用的代码覆盖支持。AdaCore为Eclipse提供了一个GNAT插件,如果您更愿意使用该IDE的话,但是我发现GPS具有我所习惯的所有功能,从自动完成到漂亮的打印。

一个很好的可移植特性是多任务支持。这是Ada标准的一部分,该实现利用了底层Linux多任务支持(参见“Ada提供了优于C和c++的优势”).我喜欢的另一个特性是可以定制的编码标准。这包括SPARK规则(图3).SPARK是一种更受限制的Ada形式,常用于安全关键应用程序。规则可以有选择地应用。

图3。GPS让你遵守规则,但你可以选择它们是什么。

所以我对艾达大脑皮质- a的研究结果是毫无意义的。它的安装很简单,可移植性很好。我还没机会去看看,但是青山软件的AdaMULTI和Atego的ObjectAda也支持Ada。AdaMulti支持Ada 95标准,而ObjectAda则支持包括面向对象支持的Ada 2005。Ada 2012增加了许多新功能,包括合同。

您可以免费下载Adacore工具自由泳尽管Arm工具还不是其中的一部分,因为它们是全新的。免费的x86工具已经有一段时间了。它们对学习艾达很有帮助。检查AdaCore网上大学开始(参见“在网络大学学习艾达”).这也是免费的。内容有限,但在增长。

许多人可能会问,为什么我写了很多关于Ada的文章,而不只是关于C或c++,而是关于目前许多开发人员所做的嵌入式工作,这些工作碰到了Ada擅长的安全关键和高可靠性领域。我需要找到参考资料,但是仅仅使用Ada可以通过减少错误数量和减少项目持续时间来改进项目。Ada 2012支持最新的编程方法,包括面向对象编程和对泛型函数等特性的支持。它的模块系统是最好的之一,这也是c语言令人头疼的地方。语言本身的标准多任务支持使得可移植性更好。

新闻充斥着计算机相关的重大问题,从安全漏洞到汽车异常。丰田将为从程序问题开始的问题支付10亿美元的罚款,尽管罚款更多的是为了掩盖。通用汽车的钥匙锁召回实际上是一个机械问题,艾达不会在这方面有所帮助。

不过,大规模召回和软件问题并不仅限于大公司。当产品价格昂贵或至关重要时,公司可能会对少数客户产生重大成本。

无论如何,这里的信息是,Ada在Arm微控制器上是可用的,并且AdaCore的东西在这些平台上运行得很好。它可以利用C api,这样就可以直接利用现有的平台支持,尽管出于可移植性的原因,我倾向于坚持使用标准的Ada运行时。

> >网站资源
..> >图书馆:TechXchange
. . . .>> TechXchange:嵌入式软件
. . . . . .>>主题:Ada和SPARK

从我们的合作伙伴

网络研讨会:像读书一样阅读s参数

现在可按需提供。描述互连的第二个重要方法是使用s参数。在本次网络研讨会中,我们将打开S-p的黑盒…

理解和使用e - stop

问:什么是电子档?如何使用?答:e停止,或紧急停止开关,用于确保机器和人员的安全。他们正在使用……

如何使用ESP32微控制器及其ESP-IDF进行OTA升级

2021年8月10日,
物联网(IoT)产品的设计者需要不断地评估平台和组件的选择,以降低成本和提高产品质量。

机柜式电气外壳,简化严酷的环境保护

机柜式电气外壳简化苛刻的环境保护这些外壳提高可达性,仍然保护免受mois…

通用DIN外壳,几乎任何应用

通用DIN外壳几乎任何应用Barry Manz DIN rail是基于一个如此优雅的概念,其增长正在扩大超过一个岑…

欢迎来到边缘

照片/图像学分(按显示顺序)。pinkeyes - stock.adobe.com, Monopoly919 - stock.adobe.com, proindustrial2 - stock.adobe.com。加入我们吧…

声音你的意见!

本网站要求您注册或登录后发表评论。
目前还没有任何评论。想开始对话吗?

从我们的合作伙伴

网络研讨会:像读书一样阅读s参数

现在可按需提供。描述互连的第二个重要方法是使用s参数。在本次网络研讨会中,我们将打开S-p的黑盒…

理解和使用e - stop

问:什么是电子档?如何使用?答:e停止,或紧急停止开关,用于确保机器和人员的安全。他们正在使用……

如何使用ESP32微控制器及其ESP-IDF进行OTA升级

物联网(IoT)产品的设计者需要不断地评估平台和组件的选择,以降低成本和提高产品质量。

机柜式电气外壳,简化严酷的环境保护

机柜式电气外壳简化苛刻的环境保护这些外壳提高可达性,仍然保护免受mois…

通用DIN外壳,几乎任何应用

通用DIN外壳几乎任何应用Barry Manz DIN rail是基于一个如此优雅的概念,其增长正在扩大超过一个岑…
Baidu