So my question is: if I were to define that “manually” (or just apply the section attribute “manually”) in an SDK before v2.10 and/or firmware before R7.2, would it work?
The appropriate entries appear in the map file, but variables defined with this attribute are zeroed when the unit (re)starts.
So my question now is: what else is additionally required to get this to work in an SDK before v2.10 and/or firmware before R7.2
(specifically, v6.63g)
Is it just a matter of getting the linker script (and whatever else) right, or does it actually rely upon features within the firmware itself?
I think it is a matter of linker section with attribute “do not initialize” (for IAR compiler). For GCC there should be another linker script options. And also you sholud know where in memory to place this section and mark your variables to put them into that section.
However, I’m afraid this won’t be enough…
Indeed, as soon as you use Developer Studio, the generated linker script always contains the uninitialized area, even for applications built on top of “old” OS versions.
It’s not only a matter of link, but also updates implemented at Firmware/OS level to take care of this area…