小编Eli*_*eth的帖子

访问Ada中的易失性寄存器

我想编写一个非常简单的驱动程序来初始化,写入/读取微控制器上的某些外设,就像我在C中完成的那样.我以GPIO外设为例进行初始化,写入和读取.

GPIOA : GPIO_Register with
   Volatile,
   Address => System'To_Address (GPIOA_Base);
   pragma Import (Ada, GPIOA);
Run Code Online (Sandbox Code Playgroud)

如果我声明一个列表来访问所有GPIO:

 type GPIO_Register_ptr is access all GPIO_Register with volatile;

 Gpio_List_Pointers : array (Integer range 1 .. 8) of aliased GPIO_Register_ptr;
Run Code Online (Sandbox Code Playgroud)

然后分配:

  Gpio_List_Pointers(1) := GPIOA'Access;
Run Code Online (Sandbox Code Playgroud)

我收到错误:

  142:29 prefix of "ACCESS" attribute must be aliased
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决?

ada gnat

5
推荐指数
1
解决办法
478
查看次数

评估GNAT 2012中裸机的内存使用情况

我已经安装了GNAT 2012 for Bare Boards并调整了为STM32F4XX(发现板)发布的sfp运行时(ravenscar配置文件),以将其用于STM32F2XX微控制器.修改后的SFP运行时工作,它已经与应用程序,库和一些驱动程序集成:UART,SPI和DMA也用Ada编写,它工作正常.

唯一的问题是编译器已开始抱怨SRAM.更具体地说,".bss"部分被"x"个字节溢出.

为了公平比较,我们有一个类似的项目(应用程序,库和驱动程序)用C语言在相同的微控制器上运行,我们可以看到(内存映射)内存使用率几乎是内存的一半(STM32F2XX:128 Kb RAM) .所以我想知道ADA是否需要比C运行更多的内存是否正常?

提前感谢您的意见!:)

memory ada bare-metal gnat

3
推荐指数
1
解决办法
212
查看次数

标签 统计

ada ×2

gnat ×2

bare-metal ×1

memory ×1