/*
//###########################################################################
//
// FILE: F2808.cmd
//
// TITLE: Linker Command File For F2808 Device
//
//###########################################################################
// $TI Release: F2803x C/C++ Header Files and Peripheral Examples V127 $
// $Release Date: March 30, 2013 $
//###########################################################################
*/
/* ======================================================
// For Code Composer Studio V2.2 and later
// ---------------------------------------
// In addition to this memory linker command file,
// add the header linker command file directly to the project.
// The header linker command file is required to link the
// peripheral structures to the proper locations within
// the memory map.
//
// The header linker files are found in \DSP2803x_Headers\cmd
//
// For BIOS applications add: DSP2803x_Headers_BIOS.cmd
// For nonBIOS applications add: DSP2803x_Headers_nonBIOS.cmd
========================================================= */
/* ======================================================
// For Code Composer Studio prior to V2.2
// --------------------------------------
// 1) Use one of the following -l statements to include the
// header linker command file in the project. The header linker
// file is required to link the peripheral structures to the proper
// locations within the memory map */
/* Uncomment this line to include file only for non-BIOS applications */
/* -l DSP2803x_Headers_nonBIOS.cmd */
/* Uncomment this line to include file only for BIOS applications */
/* -l DSP2803x_Headers_BIOS.cmd */
/* 2) In your project add the path to \DSP2803x_headers\cmd to the
library search path under project->build options, linker tab,
library search path (-i).
/*========================================================= */
/* Define the memory block start/length for the F28035
PAGE 0 will be used to organize program sections
PAGE 1 will be used to organize data sections
Notes:
Memory blocks on F2803x are uniform (ie same
physical memory) in both PAGE 0 and PAGE 1.
That is the same memory region should not be
defined for both PAGE 0 and PAGE 1.
Doing so will result in corruption of program
and/or data.
L0 memory block is mirrored - that is
it can be accessed in high memory or low memory.
For simplicity only one instance is used in this
linker file.
Contiguous SARAM memory blocks or flash sectors can be
be combined if required to create a larger memory block.
FLASHH : origin = 0x3E8000, length = 0x002000
FLASHG : origin = 0x3EA000, length = 0x002000
FLASHF : origin = 0x3EC000, length = 0x002000
FLASHE : origin = 0x3EE000, length = 0x002000
FLASHD : origin = 0x3F0000, length = 0x002000
FLASHC : origin = 0x3F2000, length = 0x002000
*/
MEMORY
{
PAGE 0: /* Program Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
/*****************因为 RAML0 在RUN宏定义里后面为Page0,所以放在这里*****************/
RAML0 : origin = 0x008000, length = 0x000800 /*SARAM--2K */
OTP : origin = 0x3D7800, length = 0x000400 /* on-chip OTP */
FLASHD : origin = 0x3E8000, length = 0x00A000 /**40K** App-Pro*/
FLASHC : origin = 0x3F2000, length = 0x002000 /**8K**/
FLASHB : origin = 0x3F4000, length = 0x002000 /**8K** Boot-Pro*/
FLASHA : origin = 0x3F6000, length = 0x001F80 /* on-chip FLASH 7K+896words*/
CSM_RSVD : origin = 0x3F7F80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */
BEGIN : origin = 0x3F7FF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */
CSM_PWL_P0 : origin = 0x3F7FF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */
IQTABLES : origin = 0x3FE000, length = 0x000B50 /* IQ Math Tables in Boot ROM */
IQTABLES2 : origin = 0x3FEB50, length = 0x00008C /* IQ Math Tables in Boot ROM */
IQTABLES3 : origin = 0x3FEBDC, length = 0x0000AA /* IQ Math Tables in Boot ROM */
ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */
RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */
VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */
PAGE 1 : /* Data Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
/* Registers remain on PAGE1 */
/*********************Cla use*****************/
RAML1 : origin = 0x008800, length = 0x000400 /* Cla DataRam0--1K */
RAML2 : origin = 0x008C00, length = 0x000400 /* cla DataRam1--1K */
RAML3 : origin = 0x009000, length = 0x001000 /* Cla Prog Ram--4K */
/************可调调整为正常的M0--M1--40--400--800*************/
BOOT_RSVD : origin = 0x000000, length = 0x000050 /* Part of M0, BOOT rom will use this for stack */
RAMM0 : origin = 0x000050, length = 0x000300 /* on-chip RAM block M0 */
RAMM1 : origin = 0x000350, length = 0x000350 /* on-chip RAM block M1 */
}
/* Allocate sections to memory blocks.
Note:
codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code
execution when booting to flash
ramfuncs user defined section to store functions that will be copied from Flash into RAM
*/
SECTIONS
{
/* Allocate program areas: */
.cinit : > FLASHB PAGE = 0//初始化的变量和常量,要求放在程序页
.pinit : > FLASHB, PAGE = 0//它包括全局构造器(C++)初始化的变量和常量表,要求放在程序页
.text : > FLASHB PAGE = 0//它包括所有的可执行代码和常数,必须放在程序页;
codestart : > BEGIN PAGE = 0
ramfuncs : LOAD = FLASHC,//保存的是#program 定义在famfuncs的函数
RUN = RAML0,
LOAD_START(_RamfuncsLoadStart),
LOAD_END(_RamfuncsLoadEnd),
LOAD_SIZE(_RamfuncsLoadSize),
RUN_START(_RamfuncsRunStart),
PAGE = 0
csmpasswds : > CSM_PWL_P0 PAGE = 0
csm_rsvd : > CSM_RSVD PAGE = 0
/* Allocate uninitalized data sections: */
//为C系统堆栈保留空间,这部分存储器为用来将声明传给函数及为局部变量留出空间,要求放在低地址的数据页
.stack : > RAMM0 PAGE = 1
//它是在远(far)访问(只用于C)和大存储模式下使用,它为全局变量和静态变量保留空间。
//在程序开始运行时,C导入路径把数据从.cinit段复制出去然后存在.ebss节中,可以放在数据页的任何地方;
.ebss : > RAMM1 PAGE = 1
//动态存储器分配保留空间,这个空间用于外部malloc函数,如果不使用外部malloc函数,这个段的大小就是0,可以放在数据页的任何地方。
.esysmem : > RAMM1 PAGE = 1
/* Initalized sections go in Flash */
/* For SDFlash to program these, they must be allocated to page 0 */
.econst : > FLASHB PAGE = 0
.switch : > FLASHB PAGE = 0
/* Allocate IQ math areas: */
IQmath : > FLASHB PAGE = 0 /* Math Code */
IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD
.reset : > RESET, PAGE = 0, TYPE = DSECT
vectors : > VECTORS PAGE = 0, TYPE = DSECT
/***********自己定义的****************/
//ReceivedMsgBuf : >RAML0 PAGE = 0
}
/*
//===========================================================================
// End of file.
//===========================================================================
*/