On Fri, Mar 26, 2021 at 11:41 AM Gregory Nutt <[email protected]> wrote:
> Missing bit of logic:
>
> >> Speaking of the linker, is there a way to use a combination of the
> >> linker script and __attribute__ incantations in the code to detect
> >> automatically the size that g_sram4_reserve should be and entirely
> >> eliminate the need for the user to specify the start and end of each
> >> region in Kconfig?
> >
> > Are you thinking of something like this in the linker script:
> >
> > .sram4_reserve :
> > {
> > _sram4_reserve_begin = ABSOLUTE(.);
> > *(.sram4)
> > _sram4_reserve_end = ABSOLUTE(.);
> > }
> >
> > And in the C code:
> >
> We need to lie to C and tell it what to think those symbols are:
>
> EXTERN const uint32_t _sram4_reserve_begin
> EXTERN const uint32_t _sram4_reserve_begin
Ah, yes, otherwise those symbols would be undefined. Later the linker will
resolve them to the correct addresses.
> #define SRAM4_RESERVE_BEGIN &_sram4_reserve_begin
> > #define SRAM4_RESERVE_END &_sram4_reserve_end
> >
> > The implied size depends on the size of all .sram4 sections. I assume
> > this would be positioned at the beginning of SRAM4 and the size of the
> > region that could be added to the heap would be SRAM4_RESERVE_END
> > through SRAM_END.
> >
> You can see this same kind of thing in, for example,
> arch/arm/src/common/arm_internal.h
Great! Thanks
Nathan