14.1 EDK - 使用NOLOAD属性增加软件启动时间

描述

当软件设计包含大型未初始化(或0初始化)元件时,软件需要花费非常长的时间来加载。

这种延迟通常发生在这些元件未初始化或初始化为0时;如果是这种情况,它们将被放置在链接描述文件的.bss部分中。应用程序启动时,此部分始终初始化为0,大型元件将导致此操作的持续时间更长。解决方法是设置一个禁用这些元件初始化的属性;此属性只应添加到不需要初始化的元件中。

首先,必须在下面的模板后面的链接器脚本(通常标题为lscript.ld)中添加一个新的部分。

.my_noload_section(NOLOAD):{
*(。my_noload_section)
}> My_Memory_ADDR

“.my_noload_section”可以命名为任何内容,而“My_Memory_ADDR”应该是一个内存器件,无论是BRAM,DDR3等。请参考MEMORY或链接描述文件的其他部分。

现在已经使用NOLOAD标记向链接器添加了新部分,可以将某些元件分配给该部分。这可以通过使用以下格式设置属性来完成。

u8 MyElement [Element_Size] __attribute __((section(“。my_noload_section”)));

请注意属性和链接描述文件之间的节名称是如何一致的。这将阻止具有此属性的任何元件被初始化。
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-31 14:24:29 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它