Thread 中讨论的其他器件:C2000WARE
工具与软件:
您好!
我正在使用以下链接器文件、但它有一个问题、问题是我在0x63FF 地址处遇到存储器违例、我不在代码中触摸此存储器、但出现了此违例、
我想知道是什么原因? 因为有时我的代码运行不可预测、我想这可能是原因。
.cmd 文件:
#ifdef CLA_block_included
//定义将要使用的 CLA 暂存区的大小
//由 CLA 编译器为局部符号和 temps 编译
//也强制引用标记的特殊符号
//暂存区。
CLA_SCRATCHPAD_SIZE = 0x100;
--undef_sym=_cla_scratchpad_end
-- undef_sym=____ cla_scratchpad_start
#endif //cla_block_included
小程序
{
第0页:
/*开始用于"引导至 SARAM"引导加载程序模式*/
begin:origin = 0x000000、length = 0x000002
begin_flash:origin = 0x080000、length = 0x000002
RAMLS_CLA_DATA:origin = 0x008000、length = 0x002000
RAMLS_CLA_PROG:origin = 0x00A000、length = 0x002000
RAMGS_PROG:origin = 0x014000、length = 0x007000
/*闪存扇区*/
FLASHA_N:origin = 0x080002、length = 0x03FFFE /*片上闪存*/
复位:origin = 0x3FFFC0、length = 0x000002
第1页:
BOOT_RSVD:origin = 0x000002、length = 0x0001AE /*作为 M0的一部分、引导 ROM 将使用此值用于 STACK */
RAMM0M1:origin = 0x0001B0、length = 0x000650
RAMD0D1:origin = 0x00C000、length = 0x001000
RAMGS_DATA:origin = 0x010000、length = 0x004000
CLA1_MSGRAMLOW:origin = 0x001480、length = 0x000080
CLA1_MSGRAMHIGH:origin = 0x001500、length = 0x000080
CPU1TOCPU2RAM:origin = 0x03A000、length = 0x000800
CPU2TOCPU1RAM:origin = 0x03B000、length = 0x000800
CPUTOCMRAM:origin = 0x039000、length = 0x000800
CMTOCPURAM:origin = 0x038000、length = 0x000800
CANA_MSG_RAM:origin = 0x049000、length = 0x000800
CANB_MSG_RAM:origin = 0x04B000、length = 0x000800
#ifdef EMIF1_CS0_INCLUDED
EMIF1_CS0_MEMORY:origin = 0x80000000、length = 0x10000000
#endif //EMIF1_CS0_INCLUDED
#ifdef EMIF1_CS2_INCLUDED
EMIF1_CS2_MEMORY:origin = 0x00100000、length = 0x00200000
#endif //EMIF1_CS2_Included
#ifdef EMIF1_CS3_INCLUDED
EMIF1_CS3_MEMORY:origin = 0x00300000、length = 0x00080000
#endif //EMIF1_CS3_included
#ifdef EMIF1_CS4_INCLUDED
EMIF1_CS4_MEMORY:origin = 0x00380000、length = 0x00060000
#endif //EMIF1_CS4_INCLUDED
#ifdef EMIF2_CS0_INCLUDED
EMIF2_CS0_MEMORY:origin = 0x90000000、length = 0x10000000
#endif //EMIF2_CS0_INCLUDED
#ifdef EMIF2_CS2_INCLUDED
EMIF2_CS2_MEMORY:origin = 0x00002000、length = 0x00001000
#endif //EMIF2_CS2_INCLUDED
}
部分中)
{
/*分配方案领域:*/
codestart :> Begin_FLASH, page = 0, align(8)
.text:> FLASHA_N、page = 0、align (8)
.cinit:> FLASHA_N、page = 0、align (8)
.switch:> FLASHA_N、PAGE = 0、ALIGN (8)
#if defined (_TI_EABI__)
init_array :> FLASHA_N, page = 0, align(8)
/*初始化段进入闪存*/
.const:> FLASHA_N、PAGE = 0、ALIGN (8)
.data :> RAMGS_DATA, page = 1.
.TI.ramfunc:{}load = FLASHA_N、
RUN = RAMGS_PROG、
Load_start (RamfuncsLoadStart)、
Load_Size (RamfuncsLoadSize)、
Load_End (RamfuncsLoadEnd)、
RUN_START (RamfuncsRunStart)、
RUN_SIZE (RamfuncsRunSize)、
RUN_END (RamfuncsRunEnd)、
PAGE = 0、ALIGN (8)
ramfuncs:load = FLASHA_N、
RUN = RAMGS_PROG、
Load_start (MW_RamfuncsLoadStart)、
Load_Size (MW_RamfuncsLoadSize)、
Load_End (MW_RamfuncsLoadEnd)、
RUN_START (MW_RamfuncsRunStart)、
RUN_SIZE (MW_RamfuncsRunSize)、
RUN_END (MW_RamfuncsRunEnd)、
PAGE = 0、ALIGN (8)
#else
.pinit :> FLASHA_N, PAGE = 0, ALIGN (8)
/*初始化段进入闪存*/
econst:> FLASHA_N、page = 0、align (8)
.TI.ramfunc:{}load = FLASHA_N、
RUN = RAMGS_PROG、
Load_start (_RamfuncsLoadStart)、
Load_Size (_RamfuncsLoadSize)、
Load_End (_RamfuncsLoadEnd)、
RUN_START (_RamfuncsRunStart)、
RUN_SIZE (_RamfuncsRunSize)、
RUN_END (_RamfuncsRunEnd)、
PAGE = 0、ALIGN (8)
ramfuncs:load = FLASHA_N、
RUN = RAMGS_PROG、
Load_start (_mw_RamfuncsLoadStart)、
Load_Size (_mw_RamfuncsLoadSize)、
Load_End (_mw_RamfuncsLoadEnd)、
RUN_START (_MW_RamfuncsRunStart)、
RUN_SIZE (_mw_RamfuncsRunSize)、
RUN_END (_MW_RamfuncsRunEnd)、
PAGE = 0、ALIGN (8)
#endif //已定义(__TI_EABI__)
#if defined (_TI_EABI__)
bss :>> RAMGS_DATA , page = 1.
#else
.ebss :>> RAMGS_DATA , page = 1.
#endif //已定义(__TI_EABI__)
/*分配 IQmath 区域:*/
IQMath :> FLASHA_N, PAGE = 0, ALIGN (8)/*数学代码*/
IQmathTables :> FLASHA_N, page = 0, align (8)
#if defined (_TI_EABI__)
.sysmem :> RAMD0D1 , page = 1.
#else
.esysmem :> RAMD0D1, page = 1.
.cio:>RAMGS_DATA、page = 1.
#endif //已定义(__TI_EABI__)
stack:> RAMM0M1、页= 1.
.reset :> RESET , PAGE = 0, TYPE = DSECT /*未使用,*/
MSGRAM_CPU1_TO_CPU2:> CPU1TOCPU2RAM、page = 1、align (4)、type = NOINIT
MSGRAM_CPU2_TO_CPU1:>CPU2TOCPU1RAM、page = 1、align (4)、type = NOINIT
MSGRAM_CPU_TO_CM:>CPUTOCMRAM、PAGE = 1、ALIGN (4)、TYPE = NOINIT
MSGRAM_CM_TO_CPU:>CMTOCPURAM、PAGE = 1、ALIGN (4)、TYPE = NOINIT
#if Defined (EMIF1_CS0_included)&& defined (EMIF2_CS0_included)
.farbss:> EMIF1_CS0_MEMORY | EMIF2_CS0_MEMORY、PAGE = 1
.farconst:> EMIF1_CS0_MEMORY | EMIF2_CS0_MEMORY、PAGE = 1
#elif!defined (EMIF1_CS0_included)&& defined (EMIF2_CS0_included)
.farbss:> EMIF2_CS0_MEMORY、PAGE = 1
.farconst:> EMIF2_CS0_MEMORY、PAGE = 1
#elif defined (EMIF1_CS0_included)&&!defined (EMIF2_CS0_included)
.farbss:> EMIF1_CS0_MEMORY、PAGE = 1
.farconst:> EMIF1_CS0_MEMORY、PAGE = 1
#else
//无 EMIF 内存段
#endif // defined (EMIF1_CS0_included)&& defined (EMIF2_CS0_included)
#ifdef EMIF1_CS0_INCLUDED
Em1Cs0:> EMIF1_CS0_MEMORY、PAGE = 1
#endif //EMIF1_CS0_INCLUDED
#ifdef EMIF2_CS0_INCLUDED
Em2Cs0:> EMIF2_CS0_MEMORY、PAGE = 1
#endif //EMIF2_CS0_INCLUDED
#ifdef EMIF1_CS2_INCLUDED
Em1Cs2:> EMIF1_CS2_MEMORY、PAGE = 1
#endif //EMIF1_CS2_Included
#ifdef EMIF1_CS3_INCLUDED
Em1CS3:> EMIF1_CS3_MEMORY、PAGE = 1
#endif //EMIF1_CS3_included
#ifdef EMIF1_CS4_INCLUDED
Em1Cs4 :> EMIF1_CS4_MEMORY, page = 1.
#endif //EMIF1_CS4_INCLUDED
#ifdef MW_EMIF2_CS2_INCLUDED
Em2Cs2:> EMIF2_CS2_MEMORY、PAGE = 1
#endif //MW_EMIF2_CS2_INCLUDED
}
/*
//________________________________________________====
//文件结尾。
//________________________________________________====
*/