美好的一天。我是微控制器编程的新手。我使用 ARM Cortex-M4 内核 MK12DN512VLK5。该程序包含 IAR Embedded Workbench 中的汇编代码和 C 代码。汇编代码定义了许多服务变量并将它们写入从0x1fff8000开始的地址。该数字是 RAM 存储器的起始编号。在 C 代码中,有一个静态数组,从地址 0x1fff8000 开始写入。所有这些都会导致区域重叠和进一步的错误。
帮助划分区域,建议告诉编译器从某个地址开始放置静态数组,例如0x1fff8000+(汇编器使用的最大内存)。预先感谢。
汇编代码示例: my_variable 等于 0x1fff8000
C代码示例: 静态浮点 my_array[100];
感谢@user694733的评论,可以使用.icf文件中的附加代码解决问题:
define block ASSEMBLER_CODE with alignment = 8, size = ASSEMBLER_CODE_SIZE {}; place at address mem:0x1fff8000 { block ASSEMBLER_CODE }; keep { block ASSEMBLER_CODE };