主题:C2000WARE 中讨论的其他器件
工具/软件:
您好:
我注意到、从 C2000Ware 导入示例工程时生成的链接器文件中似乎缺少一些存储器部分。
具体而言、我为 F2837xS CPU1 导入了“empty_projects"示“示例、位置为: C:\ti\c2000\C2000Ware_5_05_00_00\driverlib\f2837xs\examples\cpu1\empty_projects
当我检查MEMORY生成的链接器命令文件中的块时、它仅定义从 RAMGS0 到 RAMGS11 的存储器段。
然而、根据 TMS320F2837xS 数据表、此系列中的某些器件包含额外的 RAM 部分:RAMGS120x00018000 至 RAMGS15(从至,总计 32KB)0x0001BFFF。
我的问题是:如果我使用的器件具有这些额外的 RAM 段、并且我从 C2000Ware 示例工程开始、是否需要手动修改链接器文件以自行添加 RAMGS12-RAMGS15 段?
感谢你的帮助。
2837xS Generic_flash_lnk.cmd
移动数据
{
页 0:/*程序内存*/
/*存储器 (RAM/FLASH) 块可移动到 Page1 以进行数据分配*/
/* BEGIN 用于“引导至闪存“引导加载程序模式*/
BEGIN:origin = 0x080000、length = 0x000002
RAMM0:原点= 0x000123、长度= 0x0002DD
RAMD0:原点= 0x00B000、长度= 0x000800
RAMLS0:origin = 0x008000、length = 0x000800
RAMLS1:原点= 0x008800、长度= 0x000800
RAMLS2:原点= 0x009000、长度= 0x000800
RAMLS3:原点= 0x009800、长度= 0x000800
RAMLS4:原点= 0x00A000、长度= 0x000800
Reset:origin = 0x3FFFC0、length = 0x000002
/*闪存扇区*/
/*组 0 */
FLASHA:origin = 0x080002、length = 0x001FFE /*片上闪存*/
FLASHB:origin = 0x082000、length = 0x002000 /*片上闪存*/
FLASHC:origin = 0x084000、length = 0x002000 /*片上闪存*/
FLASHD:origin = 0x086000、length = 0x002000 /*片上闪存*/
FLASHE:origin = 0x088000、length = 0x008000 /*片上闪存*/
FLASHF:origin = 0x090000、length = 0x008000 /*片上闪存*/
FLASHG:origin = 0x098000、length = 0x008000 /*片上闪存*/
FLASHH:origin = 0x0A0000、length = 0x008000 /*片上闪存*/
FLASHI:origin = 0x0A8000、length = 0x008000 /*片上闪存*/
FLASHJ:origin = 0x0B0000、length = 0x008000 /*片上闪存*/
FLASHK:origin = 0x0B8000、length = 0x002000 /*片上闪存*/
FLASHL:origin = 0x0BA000、length = 0x002000 /*片上闪存*/
FLASHM:origin = 0x0BC000、length = 0x002000 /*片上闪存*/
FLASHN:origin = 0x0BE000、length = 0x002000 /*片上闪存*/
/*组 1 */
FLASHO:origin = 0x0C0000、length = 0x002000 /*片上闪存*/
FLASHP:origin = 0x0C2000、length = 0x002000 /*片上闪存*/
FLASHQ:origin = 0x0C4000、length = 0x002000 /*片上闪存*/
FLASHR:origin = 0x0C6000、长度= 0x002000 /*片上闪存*/
FLASHS:origin = 0x0C8000、length = 0x008000 /*片上闪存*/
FLASHT:origin = 0x0D0000、length = 0x008000 /*片上闪存*/
FLASHU:origin = 0x0D8000、length = 0x008000 /*片上闪存*/
FLASHV:origin = 0x0E0000、length = 0x008000 /*片上闪存*/
FLASHW:origin = 0x0E8000、length = 0x008000 /*片上闪存*/
FLASHX:origin = 0x0F0000、length = 0x008000 /*片上闪存*/
Flashy:origin = 0x0F8000、length = 0x002000 /*片上闪存*/
FLASHZ:origin = 0x0FA000、length = 0x002000 /*片上闪存*/
FLASHAA:origin = 0x0FC000、length = 0x002000 /*片上闪存*/
FLASHBB:origin = 0x0FE000、length = 0x001FF0 /*片上闪存*/
// FLASHBB_RSVD:origin = 0x0FFFF0、length = 0x000010 /*根据勘误表公告“内存:在有效内存之外预取“保留并不用于代码*/
第 1 页:/*数据内存*/
/*存储器(RAM/闪存)块可移动到 PAGE0 以进行程序分配*/
BOOT_RSVD:origin = 0x000002、length = 0x000121 /* M0 的一部分、引导 ROM 将对堆栈使用该值*/
RAMM1:origin = 0x000400、length = 0x0003F8 /*片上 RAM 块 M1 */
// RAMM1_RSVD:origin = 0x0007F8、length = 0x000008 /*根据勘误表公告“存储器:在有效存储器之外预取“保留并不用于代码*/
RAMD1:origin = 0x00B800、length = 0x000800
RAMLS5:原点= 0x00A800、长度= 0x000800
RAMGS0:原点= 0x00C000、长度= 0x001000
RAMGS1:origin = 0x00D000、length = 0x001000
RAMGS2:origin = 0x00E000、length = 0x001000
RAMGS3:origin = 0x00F000、length = 0x001000
RAMGS4:原点= 0x010000、长度= 0x001000
RAMGS5:原点= 0x011000、长度= 0x001000
RAMGS6:原点= 0x012000、长度= 0x001000
RAMGS7:origin = 0x013000、length = 0x001000
RAMGS8:原点= 0x014000、长度= 0x001000
RAMGS9:原点= 0x015000、长度= 0x001000
RAMGS10:原点= 0x016000、长度= 0x001000
RAMGS11:原点= 0x017000、长度= 0x000FF8
// RAMGS11_RSVD:origin = 0x017FF8、length = 0x000008 /*根据勘误表公告“内存:在有效内存之外预取“保留并不用于代码*/
}
很重要
{
/*分配程序区域:*/
.cinit:> FLASHB PAGE = 0、ALIGN(8)
.pinit :> FLASHB, page = 0, align(8)
.text:>> FLASHB | FLASHC | FLASHD | FLASHE PAGE = 0、ALIGN (8)
codestart:> Begin page = 0, align(8)
/*分配未初始化的数据段:*/
.stack :> RAMM1 PAGE = 1
#if defined (__TI_EABI__)
.init_array:> FLASHB, page = 0, align(8)
.bss:> RAMLS5、PAGE = 1
.bss:output :> RAMLS3, page = 0
.bss:CIO:> RAMLS5、PAGE = 1
.data :> RAMLS5, page = 1.
.sysmem :> RAMLS5, page = 1.
/*初始化段进入闪存*/
.const:> FLASHF、page = 0、align (8)
#else
.pinit :> FLASHB, page = 0, align(8)
.ebss:>> RAMLS5 | RAMGS0 | RAMGS1、PAGE = 1
.esysmem :> RAMLS5, page = 1.
.CIO:> RAMLS5、PAGE = 1
/*初始化段进入闪存*/
.econst:>> FLASHF PAGE = 0、ALIGN(8)
#endif
/*初始化段进入闪存*/
.switch:> FLASHB PAGE = 0、align(8)
.reset:> reset、page =0、type = DSECT /*未使用、*/
#ifdef _TI_COMPILER_VERSION__
#if __TI_COMPILER_VERSION_>= 15009000
#if defined (__TI_EABI__)
.TI.ramfunc:{} load = FLASHD、
RUN = RAMLS0、
LOAD_START (RamfuncsLoadStart)、
load_size (RamfuncsLoadSize)、
LOAD_END (RamfuncsLoadEnd)、
RUN_START (RamfuncsRunStart)、
RUN_SIZE (RamfuncsRunSize)、
RUN_END (RamfuncsRunEnd)、
PAGE = 0、ALIGN (8)
#else
.TI.ramfunc:{} load = FLASHD、
RUN = RAMLS0、
LOAD_START (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
LOAD_END (_RamfuncsLoadEnd)、
RUN_START (_RamfuncsRunStart)、
RUN_SIZE (_RamfuncsRunSize)、
RUN_END (_RamfuncsRunEnd)、
PAGE = 0、ALIGN (8)
#endif
#else
ramfuncs : load = FLASHD,
RUN = RAMLS0、
LOAD_START (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
LOAD_END (_RamfuncsLoadEnd)、
RUN_START (_RamfuncsRunStart)、
RUN_SIZE (_RamfuncsRunSize)、
RUN_END (_RamfuncsRunEnd)、
PAGE = 0、ALIGN (8)
#endif
#endif
ramgs0:> RAMGS0、page = 1
ramgs1 :> RAMGS1, page = 1.
/*以下部分的定义针对 SDFM 示例*/
filter1_RegsFile:> RAMGS1、page = 1、fill=0x1111
Filter2_RegsFile:> RAMGS2、page = 1、fill=0x2222
Filter3_RegsFile:> RAMGS3、page = 1、fill=0x3333
Filter4_RegsFile:> RAMGS4、page = 1、fill=0x4444
Difference_Regs 文件:>RAMGS5, page = 1, fill=0x3333
}
/*
//==============================================================================
//文件结尾。
//==============================================================================
*/