06.02.2013 Views

AVR32795: Using the GNU Linker Scripts on AVR UC3 ... - Atmel

AVR32795: Using the GNU Linker Scripts on AVR UC3 ... - Atmel

AVR32795: Using the GNU Linker Scripts on AVR UC3 ... - Atmel

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

32158A-<strong>AVR</strong>-01/11<br />

PROVIDE(_data_sdram_lma = ABSOLUTE(LOADADDR(.data_sdram)));<br />

.bss_sdram :<br />

{<br />

PROVIDE(__bss_sdram_start = .);<br />

*(.bss_sdram)<br />

PROVIDE(_bss_sdram_end = .);<br />

} >SDRAM AT>SDRAM :SDRAM<br />

<str<strong>on</strong>g><strong>AVR</strong>32795</str<strong>on</strong>g><br />

NOTE Because <str<strong>on</strong>g>the</str<strong>on</strong>g> program header SDRAM was defined as PT_NULL, <str<strong>on</strong>g>the</str<strong>on</strong>g> .bss_sdram secti<strong>on</strong><br />

w<strong>on</strong>’t be loaded to target (which is ok because <str<strong>on</strong>g>the</str<strong>on</strong>g> .bss secti<strong>on</strong> is supposed to hold<br />

uninitialized data). And so <str<strong>on</strong>g>the</str<strong>on</strong>g> AT>SDRAM is unnecessary and ignored. This secti<strong>on</strong> will<br />

just be zeroed out in <str<strong>on</strong>g>the</str<strong>on</strong>g> startup routine.<br />

NOTE Definiti<strong>on</strong>s:<br />

Will be used by <str<strong>on</strong>g>the</str<strong>on</strong>g> startup routine for data init<br />

Will be used by <str<strong>on</strong>g>the</str<strong>on</strong>g> startup routine for zero init<br />

Assign a secti<strong>on</strong> to a previously defined segment<br />

(cf PHDRS{})<br />

Specify <str<strong>on</strong>g>the</str<strong>on</strong>g> memory regi<strong>on</strong> SDRAM for <str<strong>on</strong>g>the</str<strong>on</strong>g> secti<strong>on</strong>’s LMA<br />

Assign this secti<strong>on</strong>’s VMA to <str<strong>on</strong>g>the</str<strong>on</strong>g> regi<strong>on</strong> of memory SDRAM<br />

(defined in MEMORY{ })<br />

_data_sdram: VMA address of <str<strong>on</strong>g>the</str<strong>on</strong>g> start of <str<strong>on</strong>g>the</str<strong>on</strong>g> .data_sdram secti<strong>on</strong><br />

_data_sdram: VMA address of <str<strong>on</strong>g>the</str<strong>on</strong>g> end of <str<strong>on</strong>g>the</str<strong>on</strong>g> .data_sdram secti<strong>on</strong><br />

_data_sdram_lma: LMA start address of <str<strong>on</strong>g>the</str<strong>on</strong>g> .data_sdram secti<strong>on</strong><br />

>SDRAM AT>FLASH :SDRAM_AT_FLASH<br />

>SDRAM: VMA of .data_sdram in external SDRAM<br />

AT>FLASH: LMA of .data_sdram (in flash)<br />

:SDRAM_AT_FLASH: specified as loadable in PHDRS{} (for <str<strong>on</strong>g>the</str<strong>on</strong>g> data init value)<br />

13

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!