This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F2.8386万S:Cla1funcsLoadStart,Cla1funcsLoadEnd等定义

Guru**** 2537340 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1103419/tms320f28386s-cla1funcsloadstart-cla1funcsloadend-etc-definition

部件号:TMS320F2.8386万S
主题中讨论的其他部件:C2000WARE

您好,我正在尝试让我的项目从Flash运行,但我遇到了一些问题。

我正在用C2000Ware安装中提供的示例来介绍我的工作。

我不明白这种休克的定义是什么:

Cla1funcsLoadStart,Cla1funcsLoadEnd

Cla1funcsRunStart, Cla1funcsLoadSize

在演示项目上,调试项目时,Cla1funcsLoadSize的值为 :0x0万B8.

在删除我的项目时, Cla1funcsLoadSize的值为 :0xFFFFFFFF

另外 ,Cla1funcsLoadStart = 0xFFFFFFFF和 Cla1funcsLoadEnd = 0xFFFFFFFF

那么该值来自何处 ?

附件是RAM和闪存的链接器命令文件

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    无法上传文件:-(.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,NIR Givon:

    尝试上传文件时出现什么错误?

    谢谢,此致,

    Vamsi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    CLA_ScratchPad_size = 0x100;
    --UNDEF_SYM=__CLA_scratchpad_end
    --UNDEF_SYM=__CLA_scratchpad_start

    内存

    /* BEGIN用于“引导至闪存”引导加载程序模式*/
    BEGIN:Origin = 0x8万,length = 0x0.0002万
    BOOT_RSVD:Origin = 0x0.0002万,length = 0x0001AF /* M0的一部分,boot ROM将使用此堆栈*/
    RAMM0:原点= 0x0001B1,长度= 0x0.0024万F
    RAMM1:原点= 0x0.04万,长度= 0x0003F8 /*片上RAM块M1 */
    // RAMM1_RSVD:Origin = 0x0007F8,length = 0x0.0008万 /*根据勘误咨询“内存:预取超过有效内存”*/,保留代码且不用于代码
    RAMD0:原点= 0x00C000,长度= 0x0.08万
    RAMD1:原点= 0x00C800,长度= 0x0.08万
    RAMLS0:原点= 0x0.8万,长度= 0x0.08万
    RAMLS1:原点= 0x0.88万,长度= 0x0.08万
    RAMLS2:原点= 0x0.9万,长度= 0x0.08万
    RAMLS3:原点= 0x0.98万,长度= 0x0.08万
    RAMLS4:原点= 0x00A000,长度= 0x0.08万
    RAMLS5:原点= 0x00A800,长度= 0x0.08万
    RAMLS6:原点= 0x00B000,长度= 0x0.08万
    RAMLS7:原点= 0x00B800,长度= 0x0.08万
    RAMGS0:原点= 0x00D000,长度= 0x0.1万
    RAMGS1:原点= 0x00E000,长度= 0x0.1万
    RAMGS2:原点= 0x00F000,长度= 0x0.1万
    RAMGS3:原点= 0x1万,长度= 0x0.1万
    RAMGS4:原点= 0x1.1万,长度= 0x0.1万
    RAMGS5:原点= 0x1.2万,长度= 0x0.1万
    RAMGS6:原点= 0x1.3万,长度= 0x0.1万
    RAMGS7:原点= 0x1.4万,长度= 0x0.1万
    RAMGS8:原点= 0x1.5万,长度= 0x0.1万
    RAMGS9:原点= 0x1.6万,长度= 0x0.1万
    RAMGS10:原点= 0x1.7万,长度= 0x0.1万
    RAMGS11:原点= 0x1.8万,长度= 0x0.1万
    RAMGS12:原点= 0x1.9万,长度= 0x0.1万
    RAMGS13:原点= 0x01A000,长度= 0x0.1万
    RAMGS14:原点= 0x01B000,长度= 0x0.1万
    RAMGS15:原点= 0x01C000,长度= 0x000FF8
    // RAMGS15_RSVD:Origin = 0x01CFF8,length = 0x0.0008万 /* Reserve and do not use for code as per errata advisory "Memory: prefetching Beyond Valid Memory"*/

    /*闪存扇区*/
    FLASH0:原点= 0x8.0002万,长度= 0x001FFE /*片上闪存*/
    FLASH1:Origin = 0x8.2万,length = 0x0.2万 /*片上闪存*/
    FLASH2:Origin = 0x8.4万,length = 0x0.2万 /*片上闪存*/
    FLASH3:原点= 0x8.6万,长度= 0x0.2万 /*片上闪存*/
    FLASH4:原点= 0x8.8万,长度= 0x0.8万 /*片上闪存*/
    FLASH5:原点= 0x9万,长度= 0x0.8万 /*片上闪存*/
    Flash6:原点= 0x9.8万,长度= 0x0.8万 /*片上闪存*/
    FLASH7:原点= 0x0A0000,长度= 0x0.8万 /*片上闪存*/
    FLASH8:原点= 0x0A8000,长度= 0x0.8万 /*片上闪存*/
    FLASH9:原点= 0x0B0000,长度= 0x0.8万 /*片上闪存*/
    FLASH10:原点= 0x0B8000,长度= 0x0.2万 /*片上闪存*/
    FLASH11:原点= 0x0BA000,长度= 0x0.2万 /*片上闪存*/
    FLASH12:原点= 0x0BC000,长度= 0x0.2万 /*片上闪存*/
    FLASH13:原点= 0x0BE000,长度= 0x001FF0 /*片上闪存*/
    // FLASH13_RSVD:源站= 0x0BFFF0,长度= 0x0.001万 /*根据勘误咨询“内存:预取超出有效内存”*/,保留代码且不用于代码

    CPU1TOCPU2RAM:原点= 0x03A000,长度= 0x0.08万
    CPU2TOCPU1RAM:原点= 0x03B000,长度= 0x0.08万
    CPUTOCMRAM:原点= 0x3.9万,长度= 0x0.08万
    CMTOCPURAM:原点= 0x3.8万,长度= 0x0.08万

    Cana_MSG_RAM:原点= 0x4.9万,长度= 0x0.08万
    CANB_MSG_RAM:原点= 0x04B000,长度= 0x0.08万

    重置:原始= 0x3FFFC0,长度= 0x0.0002万

    CLA1_MSGRAMLOW:原点= 0x0.148万,长度= 0x0.008万
    CLA1_MSGRAMHIGH :原点= 0x0.15万,长度= 0x0.008万
    }

    章节

    codegstart:>开始,对齐(8)
    text :>> FLASH1 | FLASH2 | FLASH3 | FLASH4,ALIGN (8)
    .cinit :> FLASH4, align(8)
    开关:> FLASH1,对齐(8)
    .reset:> reset,type = DSECT /* not used,*/
    .stack:> RAMM1

    #IF已定义(__TI_EABI__)
    init_array:> FLASH1,align(8)
    .bss :> RAMLS3
    .bss:output :> RAMLS3
    数据:> RAMLS4.
    sysmem:> RAMLS4
    /*初始化部分进入Flash */
    const :> FLASH5, align(8)
    #否则
    .Pinit:> FLASH1,ALIGN (8)
    .ebss:> RAMLS3
    esysmem:> RAMLS4.
    /*初始化部分进入Flash */
    econst :>> FLASH4 | FLASH5,ALIGN (8)
    #endif

    MSGRAM_CPU1_TO_CPU2:> CPU1TOCPU2RAM,类型= NOINIT
    MSGRAM_CPU2_TO_CPU1:> CPU2TOCPU1RAM,type=NOINIT
    MSGRAM_CPU_to_CM:> CPUTOCMRAM,type=NOINIT
    MSGRAM_CM_to_CPU:> CMTOCPURAM,type=NOINIT

    dclfuncs:> FLASH1,对齐(8)


    /* CLA特定部分*/
    #IF已定义(__TI_EABI__)
    Cla1Prog:负载= FLASH12,
    运行>> RAMLS4 | RAMLS5 | RAMLS6 | RAMLS7
    load_start (Cla1funcsLoadStart),
    Load_End (Cla1funcsLoadEnd),
    run_start (Cla1funcsRunStart),
    load_size (Cla1funcsLoadSize),
    对齐(8)
    #否则
    Cla1Prog:负载= FLASH4,
    RUN = RAMLS5,
    load_start (_Cla1funcsLoadStart),
    load_end (_Cla1funcsLoadEnd),
    run_start(_Cla1funcsRunStart),
    load_size (_Cla1funcsLoadSize),
    对齐(8)
    #endif

    CLADataLS0:> RAMLS0
    CLADataLS1:> RAMLS1

    Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,type=NOINIT
    CpuToCla1MsgRAM:> CLA1_MSGRAMHIGH,type=NOINIT
    Cla1DataRam :>> RAMLS0 | RAMLS1.

    /* CLA C编译器部分*/
    //
    //必须分配给CLA具有写入访问权限的内存
    //
    CLAskatch:
    {*。obj (CLAskatch)
    。 += CLA_ScratchPad_Size;
    *.obj(CLAScatch_end)}> RAMLS1

    .scratchpad:> RAMLS1
    .bss_CLA :> RAMLS1
    CLA_SHARED:> RAMLS1
    #IF已定义(__TI_EABI__)
    .const_CLA:LOAD = FLASH2,
    RUN = RAMLS1,
    RUN_START (Cla1ConstRunStart),
    load_start (Cla1ConstLoadStart),
    Load_Size (Cla1ConstLoadSize)
    #否则
    .const_CLA:LOAD = FLASH2,
    RUN = RAMLS1,
    Run_start(_Cla1ConstRunStart),
    load_start (_Cla1ConstLoadStart),
    Load_Size (_Cla1ConstLoadSize)
    #endif


    #IF已定义(__TI_EABI__)
    .TI.ramfunc:{} load = FLASH3,
    Run = RAMD0,
    load_start (RamfuncsLoadStart),
    load_size (RamfuncsLoadSize),
    Load_End (RamfuncsLoadEnd),
    run_start (RamfuncsRunStart),
    Run_Size (RamfuncsRunSize),
    Run_End (RamfuncsRunEnd),
    对齐(8)
    #否则
    .TI.ramfunc:{} load = FLASH3,
    Run = RAMD0,
    load_start(_RamfuncsLoadStart),
    load_size (_RamfuncsLoadSize),
    load_end (_RamfuncsLoadEnd),
    run_start(_RamfuncsRunStart),
    Run_Size (_RamfuncsRunSize),
    Run_End(_RamfuncsRunEnd),
    对齐(8)
    #endif

    }

    /*
    //===========================================================================================================================================
    //文件结束。
    //===========================================================================================================================================
    */

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    CLA_ScratchPad_size = 0x100;
    --UNDEF_SYM=__CLA_scratchpad_end
    --UNDEF_SYM=__CLA_scratchpad_start

    内存

    /* BEGIN用于“引导至SARAM”引导加载程序模式*/
    BEGIN:Origin = 0x0万,length = 0x0.0002万
    BOOT_RSVD:Origin = 0x0.0002万,length = 0x0001AF /* M0的一部分,boot ROM将使用此堆栈*/
    RAMM0:原点= 0x0001B1,长度= 0x0.0024万F
    RAMM1:原点= 0x0.04万,长度= 0x0003F8 /*片上RAM块M1 */
    // RAMM1_RSVD:Origin = 0x0007F8,length = 0x0.0008万 /*根据勘误咨询“内存:预取超过有效内存”*/,保留代码且不用于代码
    RAMD0:原点= 0x00C000,长度= 0x0.08万
    RAMD1:原点= 0x00C800,长度= 0x0.08万
    RAMLS0:原点= 0x0.8万,长度= 0x0.08万
    RAMLS1:原点= 0x0.88万,长度= 0x0.08万
    RAMLS2:原点= 0x0.9万,长度= 0x0.08万
    RAMLS3:原点= 0x0.98万,长度= 0x0.08万
    RAMLS4:原点= 0x00A000,长度= 0x0.08万
    RAMLS5:原点= 0x00A800,长度= 0x0.08万
    RAMLS6:原点= 0x00B000,长度= 0x0.08万
    RAMLS7:原点= 0x00B800,长度= 0x0.08万
    RAMGS0:原点= 0x00D000,长度= 0x0.1万
    RAMGS1:原点= 0x00E000,长度= 0x0.1万
    RAMGS2:原点= 0x00F000,长度= 0x0.1万
    RAMGS3:原点= 0x1万,长度= 0x0.1万
    RAMGS4:原点= 0x1.1万,长度= 0x0.1万
    RAMGS5:原点= 0x1.2万,长度= 0x0.1万
    RAMGS6:原点= 0x1.3万,长度= 0x0.1万
    RAMGS7:原点= 0x1.4万,长度= 0x0.1万
    RAMGS8:原点= 0x1.5万,长度= 0x0.1万
    RAMGS9:原点= 0x1.6万,长度= 0x0.1万
    RAMGS10:原点= 0x1.7万,长度= 0x0.1万
    RAMGS11:原点= 0x1.8万,长度= 0x0.1万
    RAMGS12:原点= 0x1.9万,长度= 0x0.1万
    RAMGS13:原点= 0x01A000,长度= 0x0.1万
    RAMGS14:原点= 0x01B000,长度= 0x0.1万
    RAMGS15:原点= 0x01C000,长度= 0x000FF8
    // RAMGS15_RSVD:Origin = 0x01CFF8,length = 0x0.0008万 /* Reserve and do not use for code as per errata advisory "Memory: prefetching Beyond Valid Memory"*/

    /*闪存扇区*/
    FLASH0:原点= 0x8万,长度= 0x0.2万 /*片上闪存*/
    FLASH1:Origin = 0x8.2万,length = 0x0.2万 /*片上闪存*/
    FLASH2:Origin = 0x8.4万,length = 0x0.2万 /*片上闪存*/
    FLASH3:原点= 0x8.6万,长度= 0x0.2万 /*片上闪存*/
    FLASH4:原点= 0x8.8万,长度= 0x0.8万 /*片上闪存*/
    FLASH5:原点= 0x9万,长度= 0x0.8万 /*片上闪存*/
    Flash6:原点= 0x9.8万,长度= 0x0.8万 /*片上闪存*/
    FLASH7:原点= 0x0A0000,长度= 0x0.8万 /*片上闪存*/
    FLASH8:原点= 0x0A8000,长度= 0x0.8万 /*片上闪存*/
    FLASH9:原点= 0x0B0000,长度= 0x0.8万 /*片上闪存*/
    FLASH10:原点= 0x0B8000,长度= 0x0.2万 /*片上闪存*/
    FLASH11:原点= 0x0BA000,长度= 0x0.2万 /*片上闪存*/
    FLASH12:原点= 0x0BC000,长度= 0x0.2万 /*片上闪存*/
    FLASH13:原点= 0x0BE000,长度= 0x0.2万 /*片上闪存*/
    CPU1TOCPU2RAM:原点= 0x03A000,长度= 0x0.08万
    CPU2TOCPU1RAM:原点= 0x03B000,长度= 0x0.08万

    CPUTOCMRAM:原点= 0x3.9万,长度= 0x0.08万
    CMTOCPURAM:原点= 0x3.8万,长度= 0x0.08万

    Cana_MSG_RAM:原点= 0x4.9万,长度= 0x0.08万
    CANB_MSG_RAM:原点= 0x04B000,长度= 0x0.08万
    重置:原始= 0x3FFFC0,长度= 0x0.0002万

    CLA1_MSGRAMLOW:原点= 0x0.148万,长度= 0x0.008万
    CLA1_MSGRAMHIGH :原点= 0x0.15万,长度= 0x0.008万
    }


    章节

    codegstart:>开始
    text :>> RAMM0 | RAMM1 | RAMGS1 | RAMGS2 | RAMGS3
    cinit :> RAMGS4.
    switch:> RAMM0
    .reset:> reset,type = DSECT /* not used,*/

    stack:> RAMD0
    #IF已定义(__TI_EABI__)
    .bss :> RAMLS4.
    .bss:output :> RAMLS3
    init_array:> RAMM0
    const :> RAMLS4.
    数据:> RAMLS4.
    sysmem:> RAMLS4
    #否则
    Pinit:> RAMM0
    .ebss :> RAMLS4.
    econst :> RAMLS4.
    esysmem:> RAMLS4.
    #endif

    ramgs0:> RAMGS0,type=NOINIT
    ramgs1:> RAMGS1,type=NOINIT

    MSGRAM_CPU1_TO_CPU2 > CPU1TOCPU2RAM,类型= NOINIT
    MSGRAM_CPU2_TO_CPU1 > CPU2TOCPU1RAM,type=NOINIT
    MSGRAM_CPU_to_CM > CPUTOCMRAM,type=NOINIT
    MSGRAM_CM_to_CPU > CMTOCPURAM,type=NOINIT

    dclfuncs:> RAMLS3

    /* CLA特定部分*/
    Cla1Prog :>> RAMLS4 | RAMLS5 | RAMLS6 | RAMLS7.

    CLADataLS0:> RAMLS0
    CLADataLS1:> RAMLS1

    Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,type=NOINIT
    CpuToCla1MsgRAM:> CLA1_MSGRAMHIGH,type=NOINIT
    Cla1DataRam :>> RAMLS0 | RAMLS1.

    /* CLA C编译器部分*/
    //
    //必须分配给CLA具有写入访问权限的内存
    //
    CLAskatch:
    {*。obj (CLAskatch)
    。 += CLA_ScratchPad_Size;
    *.obj(CLAScatch_end)}> RAMLS1

    .scratchpad:> RAMLS1
    .bss_CLA :> RAMLS1
    .const_CLA:> RAMLS1
    CLA_SHARED:> RAMLS1

    .ti.ramfunc :{}> RAMM0

    }

    /*
    //===========================================================================================================================================
    //文件结束。
    //===========================================================================================================================================
    */

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    我将在本周四查看并回复您。

    谢谢,此致,
    Vamsi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    这些是链接程序添加的符号。 在cmd文件中-

    Cla1Prog:负载= FLASH12,
    运行>> RAMLS4 | RAMLS5 | RAMLS6 | RAMLS7
    load_start (Cla1funcsLoadStart),
    Load_End (Cla1funcsLoadEnd),
    run_start (Cla1funcsRunStart),
    load_size (Cla1funcsLoadSize),

    指定的符号添加在加载开始地址,结束 地址等处

    在.c或.h文件中,可以添加外部定义并使用&运算符获取地址。

    例如:

    extern UINT32_t Cla1funcsRunStart,Cla1funcsLoadStart,Cla1funcsLoadSize;

    memcpy(UINT32_t *)&Cla1funcsRunStart,(UINT32_t *)&Cla1funcsLoadStart,
    (UINT32_t)&Cla1funcsLoadSize);

    此致,

    Veena