In our NXP kl03 processor project, I see where 160 bytes of RO memory (assumed to be program memory) has been reserved for data. When I make a list file of the source file accused of causing this RO memory reservation for data, I see it is due to a number of type uint16_t variables assigned values in a header file:
uint16_t offset_for_a = 0;
uint16_t offset_for_b= sizeof(image_a);
uint16_t offset_for_c = 128;
uint16_t offset_for_d = sizeof(image_c) + 128;
If I remove both the 2nd and 4th line from the above code, the RO memory reservation drops to zero for the source file which includes the above header information. If I leave either the 2nd or 4th line (just one but not both), the RO memory reservation jumps to 160 bytes.
"image_a" is of type structure containing 26 uint16_t values.
"image_c" is of type structure containing 3 uint16_t values.
So, then, why has the NXP / IAR SDK wasted 160 bytes of precious code space?