我有一个正在运行的带有 FreeRTOS 的 ARM CortexA9 板,我需要添加一个用 ADA 编写的旧的大型库。我已经成功生成了该库并在代码中实现了它,但我正在努力解决一些问题;
首先,FreeRTOS 允许使用以下哪种 RTS 配置文件?
- zfp
- Ravenscar_sfp
- Ravenscar_full
最佳答案
您建议使用 GNAT CE 2019 arm-elf 编译器来编译 Ada 源代码(-mcpu=cortex-a9
可以)并将结果与您的非 ada 代码链接。
我认为您不能使用该编译器附带的 AdaCore Ravenscar 运行时,因为它们假设自己负责主板并运行自己的任务/中断处理代码,而不是 FreeRTOS。
我一直在维护FreeRTOS-based runtime for some lower-end Cortex-M boards ,它确实支持 Ravenscar 配置文件,与 AdaCore sfp
运行时非常相似。我认为根据您的用例进行调整并不需要大量工作。
另一方面,如果您的 Ada 代码(以及它所依赖的 Ada 代码)不涉及任务分配或依赖于终结或异常,那么您很可能不需要太多运行时支持; zfp
运行时将作为基础。
关于ada - FreeRTOS + GNAT Ada 编译库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59714074/