core: Fix ldscript for AT90USB to support unimap
This commit is contained in:
parent
909277107f
commit
ee4686eafc
1 changed files with 59 additions and 0 deletions
|
|
@ -14,7 +14,53 @@ __SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE
|
||||||
__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K;
|
__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K;
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
|
/* With keymap section
|
||||||
|
*
|
||||||
|
* TODO: should be as below
|
||||||
|
* Flash Map of AT90USB(128KB)
|
||||||
|
* +------------+ 0x0000
|
||||||
|
* | .vectors |
|
||||||
|
* | .progmem |
|
||||||
|
* | .init0-9 | > text region
|
||||||
|
* | .text |
|
||||||
|
* | .fini9-0 |
|
||||||
|
* | |
|
||||||
|
* |------------| _etext
|
||||||
|
* | .data |
|
||||||
|
* | .bss | > data region
|
||||||
|
* | .noinit |
|
||||||
|
* | |
|
||||||
|
* |------------| 0x1D800
|
||||||
|
* | .keymap | > keymap region(2KB)
|
||||||
|
* |------------| 0x1E000
|
||||||
|
* | bootloader | 8KB
|
||||||
|
* +------------+ 0x1FFFF
|
||||||
|
*
|
||||||
|
* FIXME: Use this To fit to ATMega32U4 unimap address
|
||||||
|
* Flash Map of AT90USB(128KB)
|
||||||
|
* +------------+ 0x0000
|
||||||
|
* | .vectors |
|
||||||
|
* | .progmem |
|
||||||
|
* | .init0-9 | > text region
|
||||||
|
* | .text |
|
||||||
|
* | .fini9-0 |
|
||||||
|
* | |
|
||||||
|
* |------------| _etext
|
||||||
|
* | .data |
|
||||||
|
* | .bss | > data region
|
||||||
|
* | .noinit |
|
||||||
|
* | |
|
||||||
|
* |------------| 0x6800
|
||||||
|
* | .keymap | > keymap region(2KB)
|
||||||
|
* |------------| 0x7000
|
||||||
|
* ~ ~
|
||||||
|
* ~ ~
|
||||||
|
* |------------| 0x1E000
|
||||||
|
* | bootloader | 8KB
|
||||||
|
* +------------+ 0x1FFFF
|
||||||
|
*/
|
||||||
text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__
|
text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__
|
||||||
|
keymap (rw!x) : ORIGIN = 0x6800, LENGTH = 2K
|
||||||
data (rw!x) : ORIGIN = 0x800100, LENGTH = __DATA_REGION_LENGTH__
|
data (rw!x) : ORIGIN = 0x800100, LENGTH = __DATA_REGION_LENGTH__
|
||||||
eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__
|
eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__
|
||||||
fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__
|
fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__
|
||||||
|
|
@ -196,6 +242,19 @@ SECTIONS
|
||||||
_end = . ;
|
_end = . ;
|
||||||
PROVIDE (__heap_start = .) ;
|
PROVIDE (__heap_start = .) ;
|
||||||
} > data
|
} > data
|
||||||
|
/* keymap region is located at end of flash
|
||||||
|
* .fn_actions Fn actions definitions
|
||||||
|
* .keymaps Mapping layers
|
||||||
|
*/
|
||||||
|
.keymap :
|
||||||
|
{
|
||||||
|
PROVIDE(__keymap_start = .) ;
|
||||||
|
*(.keymap.fn_actions) /* 32*actions = 64bytes */
|
||||||
|
. = ALIGN(0x40);
|
||||||
|
*(.keymap.keymaps) /* rest of .keymap section */
|
||||||
|
*(.keymap*)
|
||||||
|
/* . = ALIGN(0x800); */ /* keymap section takes 2KB- */
|
||||||
|
} > keymap = 0x00 /* zero fill */
|
||||||
.eeprom :
|
.eeprom :
|
||||||
{
|
{
|
||||||
/* See .data above... */
|
/* See .data above... */
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue