当我在代码中声明(void)__attribute __((section(“.rwdata”)))时,为什么我的链接器脚本不在目标内存部分中包含我的子例程?-Altera-Intel社区-FPGA CPLD-ChipDebug

当我在代码中声明(void)__attribute __((section(“.rwdata”)))时,为什么我的链接器脚本不在目标内存部分中包含我的子例程?

Nios®IIIDE中的链接器不会自动将子例程放入未指定为.text的内存中。

为了将子例程包含在除.text(在本例中为.rwdata)之外的特定内存部分中,请执行以下操作:

  1. 为此特定例程定义自定义部分,例如:void my_subroutine(void)__ attribute _((section(“。usersection”)));
  2. 打开位于<sw_proj> _syslib / Debug / system_description文件夹中的generated.x文件,然后查找__ram_rwdata_end
  3. 将以下行添加到generated.x文件中:

.usersection:AT(LOADADDR(.rwdata)+ SIZEOF(.rwdata))

{
PROVIDE(_alt_partition_usersection_start = ABSOLUTE(。));
*(。usersection .usersection。*)
。 = ALIGN(4);
PROVIDE(_alt_partition_usersection_end = ABSOLUTE(。));

}> onchip_ram

PROVIDE(__flash_alt_partition_usersection_start = LOADADDR(.usersection));

  1. 修改alt_load.c以执行自定义节复制操作。见下文供参考:

extern void __flash_alt_partition_usersection_start;
extern void _alt_partition_usersection_end;
extern void _alt_partition_usersection_start;

/ *

*复制.usersection部分。

* /

alt_load_section(&__ flash_alt_partition_usersection_start,
&_alt_partition_usersection_start,
&_alt_partition_usersection_end);

请登录后发表评论

    没有回复内容