【发布时间】:2021-07-29 06:00:49
【问题描述】:
能否请您帮我为以下代码编写链接器文件(高级且不特定于任何 mcu)。
/*Global variable*/
#define adc_start
int a,b,c;
int d=56, e=22;
const int x=23,y=44;
static int z;
static int t=99;
#define adc_end
void add()
{
int e,f,g;
e=f+g;
}
main()
{
int f;
f=add();
return 0;
}
/* MemMap.h */
/*Please help here*/
#define adc_start
#define adc_end
;;;;
/* 链接器文件 */
/*Please help here*/
MEMORY
{
}
SECTIONS
{
{
}>RAM
}
注意:它只是高级别的,如果我错过了代码中的某些内容,您可以更新, 我想了解 inker 部分中的 RAM、ROM、BSS、STACK、HEAP 如何 他们映射。
尤其是我不怎么描述 memmap.h 中的宏相关代码, 数据、堆、栈
【问题讨论】:
-
代码无关紧要,链接描述文件始终特定于特定的 MCU,因为它们具有不同的内存映射,并且可能从 ROM 执行或需要将代码传输到 RAM 以执行。编译器/链接器将不会期望声明特定的部分(例如.bss、.data .text)。无论如何,它们都将位于您平台的默认链接器脚本中。您很少需要从头开始创建,通常只需要针对特定的内存支持和特殊要求进行自定义。