UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 50824

14.1 EDK - Using NOLOAD Attribute to Increase Software Startup Time

Description

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

Solution

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_noload_section)
} > 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 Created 07/13/2012
Last Updated 11/28/2012
Status Active
Type General Article
Tools
  • EDK
IP
  • Embedded Processing