diff options
author | laforge <laforge@6dc7ffe9-61d6-0310-9af1-9938baff3ed1> | 2006-09-22 21:29:57 +0000 |
---|---|---|
committer | laforge <laforge@6dc7ffe9-61d6-0310-9af1-9938baff3ed1> | 2006-09-22 21:29:57 +0000 |
commit | 1c2b1d22016957bebe0a49c9069b85815f7cf936 (patch) | |
tree | 77046d2750dcb60ce46976f94027e65df67c502e /firmware/link/AT91SAM7S128-ROM-sam7dfu-app.ld | |
parent | 238c6c3c0ac40dcdef82c430fae52cad34ed5a10 (diff) |
- we increase the DFU size from 4k to 16k size. This is mainly due to the
SAM7S128 and SAM7S256 being restricted to 16k lock region size. If we want
to lock the bootloader, it has to be 16k aligned. This wastes a lot of
memory, since a non-debug DFU implementation fits currently into less than
4k. But anyway, we have lots of flexibility for the future given that amount
of space.
- The DFU size change introduces also a change in dfu_api location to 0x103fd0
- Allow GETSTATE and GETSTATUS from runtime mode (optional in DFU spec)
- Make dfu_status a .data.shared variable, since it is used from GETSTATUS
which we already support in runtime mode
- do some led switching while flashing via DFU
- disable all non-usb/dbgu interrupts when switching to DFU mode
- fix interrupt-storm problem when dbgu is used in DFU loader
- add missing linker script for SAM7S128
git-svn-id: https://svn.openpcd.org:2342/trunk@218 6dc7ffe9-61d6-0310-9af1-9938baff3ed1
Diffstat (limited to 'firmware/link/AT91SAM7S128-ROM-sam7dfu-app.ld')
-rw-r--r-- | firmware/link/AT91SAM7S128-ROM-sam7dfu-app.ld | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/firmware/link/AT91SAM7S128-ROM-sam7dfu-app.ld b/firmware/link/AT91SAM7S128-ROM-sam7dfu-app.ld new file mode 100644 index 0000000..0c6ac80 --- /dev/null +++ b/firmware/link/AT91SAM7S128-ROM-sam7dfu-app.ld @@ -0,0 +1,94 @@ +/* Memory Definitions */ + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x00104000, LENGTH = (0x00020000 - 0x4000) + DATA (rw) : ORIGIN = 0x00200028, LENGTH = (0x00008000 - 0x28) + STACK (rw) : ORIGIN = 0x00208000, LENGTH = 0x00000000 +} + + +/* Section Definitions */ + +SECTIONS +{ + . = 0x00000000; + /* first section is .text which is used for code */ + .text 0x00104000: AT ( 0x00000000 ) { + src/start/Cstartup_app.o (.text) + * (.text) + * (.rodata*) + . = ALIGN(4); + } >FLASH + + _etext = . ; + PROVIDE (etext = .); + + /* 0x00200000 ... */ + .data 0x00200028: AT ( ADDR(.text) + SIZEOF(.text) - ADDR(.text) ) { + _data = . ; + * (.data) + . = ALIGN(4); + } >DATA + + _edata = . ; + PROVIDE (edata = .); + + /* .bss section which is used for uninitialized data */ + .bss : { + __bss_start = . ; + __bss_start__ = . ; + *(.bss) + *(COMMON) + } >DATA + + . = ALIGN(4); + __bss_end__ = . ; + __bss_end__ = . ; + + PROVIDE (main = .); + + _end = . ; + + . = ALIGN(4); + .int_data : { + *(.internal_ram_top) + } >STACK + + PROVIDE (end = .); + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + +} |