Hi, Dear partners.
My target chip is ADSP-21593, I need to define a variable at an absolute address(in L2 memory) with no-starting-up-init(no_init)
can you tell me how to do this in LDR file or in C file?
thanks and looking forward to your reply.
KCC Quizzes AQQ303 about the radius of a circle
1. Quote of the month: "When I die, I want to die like my grandfather who died peacefully in his sleep. Not screaming like all the passengers in his car" - Will Rogers
2. Quiz AQQ304 about finding the radius of a circle
Good luck, and try to be
View All
August Monthly Blog Quiz! Read the blog, take the quiz, and you could win a gift card
Important: Read the blog first . The quiz questions are all based on the content of the blog:
Stay in the loop and win! Read the blog Current Output Driving Industrial Loops , then take our quick five-question quiz for a chance to win a gift card
View All
Hi, Dear partners.
My target chip is ADSP-21593, I need to define a variable at an absolute address(in L2 memory) with no-starting-up-init(no_init)
can you tell me how to do this in LDR file or in C file?
thanks and looking forward to your reply.
Hi Jay,
The RESOLVE() command in the LDF is used to place a symbol at an absolute address. The symbol in the RESOLVE() command must be a global symbol. The resolver is an absolute address that contains the symbol's definition. Please refer attached screenshot for your reference.
For example,
//RESOLVE(symbol_name, resolver)
RESOLVE(Test_Data., 0x20020000)
Regarding no_init qualifier>>> NO_INIT contains uninitialized data. There is no data stored in the .dxe file for this section.
The NO_INIT qualifier is used, When linking an executable file that contains large uninitialized variables. The NO_INIT qualifier directs the linker to omit data for that section from the output file.
You can map variable/ buffers to section with no_init qualifier as below in source file.
for example,
#pragma section("seg_l2_noinit_data", NO_INIT)
test1[10];
Even if you do not use NO_INIT, the boot loader removes variables initialized to zeros from the .ldr file and replaces them with instructions for the loader kernel to zero out the variable. This action reduces the loader’s output file size.
Regards,
Santhakumari.K

Hi Jay,
The RESOLVE() command in the LDF is used to place a symbol at an absolute address. The symbol in the RESOLVE() command must be a global symbol. The resolver is an absolute address that contains the symbol's definition. Please refer attached screenshot for your reference.
For example,
//RESOLVE(symbol_name, resolver)
RESOLVE(Test_Data., 0x20020000)
Regarding no_init qualifier>>> NO_INIT contains uninitialized data. There is no data stored in the .dxe file for this section.
The NO_INIT qualifier is used, When linking an executable file that contains large uninitialized variables. The NO_INIT qualifier directs the linker to omit data for that section from the output file.
You can map variable/ buffers to section with no_init qualifier as below in source file.
for example,
#pragma section("seg_l2_noinit_data", NO_INIT)
test1[10];
Even if you do not use NO_INIT, the boot loader removes variables initialized to zeros from the .ldr file and replaces them with instructions for the loader kernel to zero out the variable. This action reduces the loader’s output file size.
Regards,
Santhakumari.K

Thanks Santha, this is really helpful.