📄 mc56f835x_sdm_external_mem_linker.cmd
字号:
# ----------------------------------------------------
# Metrowerks sample code
# linker command file for DSP56835x EVM
# using
# external pRAM MA=1 (external boot)
# internal xRAM EX=0
# Small Data Model (SDM)
# ----------------------------------------------------
# see end of file for additional notes & revision history
# see Motorola docs for specific EVM memory map
# memory use for this LCF:
# interrupt vectors --> external pRAM starting at zero
# program code --> external pRAM
# constants --> external xRAM
# dynamic data --> external xRAM
# CodeWarrior preference settings:
#
# M56800E Processor:
# Small Program Model: OFF
# Large Data Model: OFF
#
#
# M56800E Assembler:
# Default Data Memory Model: 16-bit
# Default Program Memory Model: 19-bit
#
# M56800E Target:
# config file: 56835x_ext_xp.cfg
# (sets OMR for external memory)
# EVM board jumpers:
# JG4 off
# (if not set by config file)
# 56835x memory map for:
# Small Data Model (SDM)
# x memory: OMR EX=0
# p memory: OMR MA=MB=1 (mode 1)
# x memory above 7FFF not available with SDM
# complete 56835x x-RAM shown in commented line
# see below for memory notes
MEMORY
{
.p_interrupts_ext_RAM (RWX) : ORIGIN = 0x0000, LENGTH = 0x00A4 # reserved for interrupts
.p_external_RAM (RWX) : ORIGIN = 0x00A4, LENGTH = 0x0000 # the max available
.x_internal_RAM (RW) : ORIGIN = 0x0001, LENGTH = 0x1FFF
.x_flash_ROM (RW) : ORIGIN = 0x2000, LENGTH = 0x1000
.x_sdm_external_RAM (RW) : ORIGIN = 0x3000, LENGTH = 0x4FFF # SDM limit is 0x7FFF
.x_onchip_peripherals (RW) : ORIGIN = 0xF000, LENGTH = 0x1000 # not accessible w/SDM
.x_external_RAM_2 (RW) : ORIGIN = 0x010000, LENGTH = 0xFEFF00 # n/a w/SDM
.x_EOnCE (RW) : ORIGIN = 0xFFFF00, LENGTH = 0x0000 # n/a w/SDM
}
# we ensure the interrupt vector section is not deadstripped here
# the label "interrupt_vectors" comes from file 56835x_vector.asm
KEEP_SECTION{ interrupt_vectors.text }
SECTIONS
{
.interrupt_vectors :
{
* (interrupt_vectors.text)
} > .p_interrupts_ext_RAM
.executing_code :
{
# .text sections
* (startup.text)
* (utility.text)
* (interrupt_routines.text)
* (rtlib.text)
* (fp_engine.text)
* (.text)
* (user.text)
} > .p_external_RAM
.data :
{
# .data sections
* (.const.data.char) # used if "Emit Separate Char Data Section" enabled
* (.data.char) # used if "Emit Separate Char Data Section" enabled
* (.const.data)
* (.data)
* (fp_state.data)
* (rtlib.data)
# .bss sections
* (rtlib.bss.lo)
* (rtlib.bss)
. = ALIGN(2);
__bss_addr = .;
* (.bss.char) # used if "Emit Separate Char Data Section" enabled
* (.bss)
__bss_end = .;
__bss_size = __bss_end - __bss_addr;
# setup the heap address
. = ALIGN(4);
__heap_addr = .;
__heap_size = 0x100;
__heap_end = __heap_addr + __heap_size;
. = __heap_end;
# setup the stack address
_min_stack_size = 0x200;
_stack_addr = __heap_end + 2;
_stack_end = _stack_addr + _min_stack_size;
. = _stack_end;
# used by MSL
F_heap_addr = __heap_addr;
F_heap_end = __heap_end;
# stationery init code uses these globals:
F_Lstack_addr = _stack_addr;
# next not used in this LCF
# we define anyway so init code will link
# these can be removed with removal of rom-to-ram
# copy code in init file
F_Ldata_size = 0x0000;
F_Ldata_RAM_addr = 0x0000;
F_Ldata_ROM_addr = 0x0000;
F_xROM_to_xRAM = 0x0000;
F_pROM_to_xRAM = 0x0000;
# zeroBSS utility
F_Lbss_addr = __bss_addr;
F_Lbss_size = __bss_size;
} > .x_sdm_external_RAM
}
# -------------------------------------------------------
# additional notes:
# about the reserved sections:
# p_interrupts_RAM -- reserved in internal pRAM
# memory space reserved for interrupt vectors
# interrupt vectors must start at address zero
# interrupt vector space size is 0xA4
# about the memory map:
# SDM xRAM limit is 0x7FFF
# about LCF conventions:
# program memory (p memory)
# (RWX) read/write/execute for pRAM
# (RX) read/execute for flashed pROM
# data memory (X memory)
# (RW) read/write for xRAM
# (R) read for data flashed xROM or reserved x memory
# LENGTH = next start address - previous
# LENGTH = 0x0000 means use all remaing memory
# revision history
# 011226 R1.0 c.m. first version
# 020220 R1.1 a.h. updates
# 020308 R1.1 a.h. 56838E
# 021101 R2.0 a.h. R2.0 prep
# 021204 R2.01 a.h. bss align by 1
# 030222 R2.1 a.h. 568345/346
# 030630 R6.0 a.h. ldm pROM-xRAM
# 030814 R6.0 a.h. align(1) for data
# 030916 R6.01 a.h. 56835x
# end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -