工具与软件:
您好!
我知道如何为段生成链接器符号。 但是、是否有办法为存储器生成链接器符号?
例如、我能否 在链接时在代码中引用 OCRAM 的原点(0x70080000)和长度(0x40000):

谢谢你。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
您好!
我知道如何为段生成链接器符号。 但是、是否有办法为存储器生成链接器符号?
例如、我能否 在链接时在代码中引用 OCRAM 的原点(0x70080000)和长度(0x40000):

谢谢你。
尊敬的 Kier:
[quote userid="479799" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1420488/am263p4-referring-to-origin-and-length-at-link-time 我知道如何为段生成链接器符号。 但是、是否有办法为存储器生成链接器符号?[/QUOT]在 TI ARM CLANG 链接器中创建存储器符号: 10.3.调用链接器—TI Arm Clang 编译器工具用户指南
根据代码是指您的链接器文件、那么是的、您可以实现它。
尊敬的 Nilabh:
根据代码、您的意思是链接器文件
我是说源代码中的代码。
例如、这就是如何引用输出段.bss。
链接器:
GROUP : {
.bss : {
} palign(8)
RUN_START(__BSS_START)
RUN_END(__BSS_END)
来源:
extern uint32_t __BSS_START;
extern uint32_t __BSS_END;
int32_t _system_pre_init(void)
{
uint32_t bss_size = ((uintptr_t)&__BSS_END - (uintptr_t)&__BSS_START);
(void) memset((void*)&__BSS_START, 0x00, bss_size);
return 1;
}
这已经很清楚了。
问题是如何为一个存储器区域创建类似符号?
OCRAM : ORIGIN = 0x70040000 , LENGTH = 0x80000
例如、OCRAM origin 和 OCRAM length 的值。
如果是、请使用什么语法?
在源代码中:(.c fike)
uint8_t globalBufMem[ICSS_EMAC_PKT_BUF_MEM_SIZE]__attribute__((aligned (128)、section (".bss.buf_mem"));
在链接器文件中:
例如、OCRAM origin 和 OCRAM length 的值。
如果是、请使用什么语法?
[报价]我分享了一个示例、其中您将 globalBufMem 数组放置在.bss.buf_mem 段中
稍后、您可以参考段名称并创建内存区域 BUF_MEM (确保这不会重叠)、并可以使用下面提到的语法来放置它。
这有几个问题。
用例是、我希望检查写入存储器访问是否具有特定范围。 因此、我的应用需要知道链接时的值和 BUF_MEM 原点和 BUF_MEM 长度。
答案似乎是"否、没有语法可用于确定 源代码中链接时 BUF_MEM origin 和 BUF_MEM length 的值。" 好了、我只需要知道答案就是这样。
尊敬的 Kier:
请告诉我这对您是否有帮助。