Linker Script and Assigning a value to a specific address

Hello,
I want to keep some variables in my code at certain addresses. For this, I created a new section in the LD file to reserve a certain area from the existing FLASH memory. I wait for the variable I created by typing __attribute__((section(".flash_rw.__at_0x000...))) to write to the address I specified. However, it writes the value to a completely different address in the section I created. I use arm-none-eabi-. GNU Arm Embedded Toolchain version 10 2021.10.

MEMORY
{
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x40000 /* 256 KB ana Flash bellek */
FLASH_RW (rx) : ORIGIN = 0x00040000, LENGTH = 0x40000 /* 256 KB yazılabilir Flash bellek */
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x18000 /* 96 KB RAM */
}

SECTIONS
{
    ....
    ....
    ....
    ....
    
    .flash_rw :
    {
        . = ORIGIN(FLASH_RW);
        __flash_rw_start__ = .;

        *(.flash_rw)
        *(.flash_rw.*)

        . = ALIGN(4);
        __flash_rw_end__ = .;
    } > FLASH_RW

unsigned short tristor50x35[584] __attribute__((section(".flash_rw.__at_0x0006A4CA"))) = 
{
	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x0,	0x820,	0x842,	0x842,	0x842,
    ........
};

The output of the code is as follows;

Flash Address tristor50x35 => 0x00057b70

Top replies

Parents Reply Children