如何在汇编代码(ARM-v7,STMCubeIDE)中存储一些未初始化的地址space用于DTCM中的数据存储?

How to store some uninitialized address space for data storage in DTCM in assembly code (ARM-v7, STMCubeIDE)?

我在 .data 部分存储了一些初始化数据。然后我使用未初始化的地址 space 使用 .bss 部分。我启用了 DTCM,当 用 C 代码 编写时,我可以通过 __attribute__((section(".dtcm"))) 从那里存储和读取数据,这确认我的链接描述文件已正确设置。但是,我不知道在汇编代码中使用地址space 的等效表达式是什么。我不想将整个 .bss 部分存储在 DTCM 中,只是我希望更快访问的数据子集。这是怎么做到的?

有汇编编码ARM ASM的权威文档吗?到目前为止,我已经使用了 this,它非常有用,但它并没有涵盖我的一般情况,尤其是紧密耦合的内存。

FWIW,这是针对 STM32H745 的。

首先,请注意 .bss 部分是 zero-initialized,不是未初始化的。

在汇编中你可以写.section .dtcm。由于这不是标准的节名称,您可能应该设置标志,让链接器知道该节可以分配给什么类型的段,例如:.section .dtcm, "aw", %nobits

您需要阅读 GNU as manual 以了解 .section 指令的详细信息。

这个 ARM community blog post 也可能有帮助。