AR# 50824


14.1 EDK - Using NOLOAD Attribute to Increase Software Startup Time


When software designs contain large, uninitialized (or 0-initialized) elements, the software takes an unusually long amount of time to load.


This delay generally occurs when these elementsare uninitializedor initialized to 0; if this is the case,they will be placed in the .bss section of the linker script. This section is always initialized to 0 upon application startup, and large elements will cause a larger duration for this action.A workaround for this is to set an attribute that disables initialization for these elements; this attribute should only be added to elements that do not need to be initialized.

To begin, a new section must be added to the linker script (generally titled lscript.ld) following the template below.

.my_noload_section (NOLOAD) : {
} > My_Memory_ADDR

".my_noload_section" can be named anything, while "My_Memory_ADDR" should be a memory device, whether it be BRAM, DDR3, etc. Reference the MEMORY or other sections of the linker script forexamples.

Now that a new section has been added to the linker with the NOLOAD tag, certain elements canbe assigned to that section. This can be done by setting an attribute with the following formatting.

u8 MyElement[Element_Size] __attribute__((section(".my_noload_section")));

Notice how the section name is consistent between the attribute and linker script. This will prevent any element with this attribute from being initialized.
AR# 50824
Date 11/28/2012
Status Active
Type General Article
People Also Viewed