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.

[参考译文] CCS/TMS320F28069:F28069 CLA cmd 文件

Guru**** 2529560 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/604540/ccs-tms320f28069-f28069-cla-cmd-file

器件型号:TMS320F28069

工具/软件:Code Composer Studio

大家好、

我正在使用 F28069 MCU、我需要一个闪存 cmd 文件 用于 CLA、如下所示。

部分

/*分配计划领域:*/
.cinit:> FLASHA PAGE = 0
.pinit:> FLASHA,page = 0
.text:> FLASHC PAGE = 0
codestart:> begin page = 0
ramfuncs:load = FLASHD,
运行= RAMM0、
load_start (_RamfuncsLoadStart)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
PAGE = 0

csmpasswds:>csm_PWL_P0 page = 0
csm_rsvd:>csm_RSVD page = 0

/*分配未初始化的数据段:*/
.stack:>RAMM1 page = 1.
.cio:>RAML0 page = 1.
.sysmem:>RAMM1 PAGE = 1.
.ebss:> RAML0 page = 1.
.esysmem:>RAML0 page = 1.


/*初始化段进入闪存*/
/*要使 SDFlash 对这些内容进行编程、必须将它们分配到第0页*/
econst:> FLASHA PAGE = 0
.switch:> FLASHA PAGE = 0

/*分配 IQ 数学区域:*/
IQMath:> FLASHA page = 0 /*数学代码*/
IQmathTables :>IQTABLES,PAGE = 0,TYPE = NOLOAD

Cla1Prog:load = FLASHD,
运行= RAML3、
load_start (_Cla1funcsLoadStart)、
load_size (_Cla1funcsLoadSize)
run_start (_Cla1funcsRunStart)、
load_size (_Cla1funcsLoadSize)、
PAGE = 0

Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,page = 1.
CpuToCla1MsgRAM:>CLA1_MSGRAMHIGH,PAGE = 1.
Cla1DataRam0:> CLARAM0,PAGE = 1
Cla1DataRam1:> CLARAM1,PAGE = 1

CLA1mathTables:load = FLASHB,
运行= CLARAM1、
Load_start (_Cla1mathTablesLoadStart)、
Load_End (_Cla1mathTablesLoadEnd)、
run_start (_Cla1mathTablesRunStart)、
load_size (_Cla1mathTablesLoadSize)、
PAGE = 1.

CLAscratch:
{*。obj (CLAscratch)
。 += CLA_ScratchPad_size;
*。obj (CLAscratch_end)}> CLARAM1、
PAGE = 1.

.reset:> reset,page = 0,type = DSECT
VECTORS:> VECTORS PAGE = 0,TYPE = DSECT

 我检查了控制套件并找到28069_RAM_CLA_C_lnk.cmd 文件 、但它用于 RAM 处理。  任何人都可以与 CLA 共享闪存的 cmd 文件

优素福  

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

    您好、Yusuf、

    在名为 F28069.cmd 的同一目录中有一个闪存链接器 cmd。 尽管如此、它不包含 CLA 挂钩作为 RAM 版本。 您可以采用与 RAM 版本类似的方式来实现这些挂钩。 希望这对您有所帮助。

    此致、

    Ozino

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ozino、
    我会按照您的建议进行整合。 新的 cmd 文件如下所示


    /********* /
    _Cla1Prog_Start =_Cla1funcsRunStart;
    堆0x400
    -stack 0x400

    //为将要使用的 CLA 暂存区定义大小
    //由 CLA 编译器生成局部符号和 temps
    //还强制引用标记的特殊符号
    //暂存区是。
    CLA_ScratchPad_size = 0x100;
    --undef_sym=__cla_scratchpad_end
    --undef_sym=__cla_scratchpad_start



    存储器

    第0页:/*程序内存*/
    /*内存(RAM/FLASH/OTP)块可移动到第1页进行数据分配*/
    RAML0 :origin = 0x008000、length = 0x000800 /*片上 RAM 块 L0 */
    RAML1. :origin = 0x008800,length = 0x000400 /*片上 RAM 块 L1 */
    RAML3. :origin = 0x009000,length = 0x001000
    OTP :origin = 0x3D7800,length = 0x000400 /*片上 OTP */

    FLASHH :origin = 0x3D8000,length = 0x008000 /*片上闪存*/
    //FLASHG :origin = 0x3DC000、length = 0x004000 /*片上闪存*/
    FLASHF :origin = 0x3E0000、length = 0x004000 /*片上闪存*/
    FLASHE :origin = 0x3E4000,length = 0x004000 /*片上闪存*/
    FLASHD :origin = 0x3E8000、length = 0x004000 /*片上闪存*/
    FLASHC :origin = 0x3EC000、length = 0x004000 /*片上闪存*/
    FLASHA :origin = 0x3F3000,length = 0x004F80 /*片上闪存*/
    csm_RSVD:origin = 0x3F7F80,length = 0x000076 /* FLASHA 的一部分。 当 CSM 正在使用时、使用所有0x0000进行编程。 *
    开始 :origin = 0x3F7FF6,length = 0x000002 /* FLASHA 的一部分。 用于"引导至闪存"引导加载程序模式。 *
    CSM_PWL_P0:origin = 0x3F7FF8,length = 0x000008 /* FLASHA 的一部分。 FLASHA 中的 CSM 密码位置*/

    FPUTABLES:origin = 0x3FD860,length = 0x0006A0 //引导 ROM 中的 FPU 表*/
    IQTABLES:origin = 0x3FDF00,length = 0x000B50 /*引导 ROM 中的 IQMath 表*/
    IQTABLES2:origin = 0x3FEA50,length = 0x00008C /*引导 ROM 中的 IQMath 表*/
    IQTABLES3:origin = 0x3FEADC,length = 0x0000AA /*引导 ROM 中的 IQMath 表*/

    ROM :origin = 0x3FF3B0,length = 0x000C10 /*引导 ROM */
    复位 :origin = 0x3FFFC0,length = 0x000002 /*引导 ROM 的一部分*/
    矢量 :origin = 0x3FFFC2,length = 0x00003E /*引导 ROM 的一部分*/

    第1页:/*数据存储器*/
    /*内存(RAM/FLASK/OTP)块可被移动至 PAGE0以进行程序分配*/
    /*寄存器保留在第1页上 *

    BOOT_RSVD:origin = 0x000000,length = 0x000050 // M0的一部分,引导 ROM 将此用于堆栈*/
    RAMM0 :origin = 0x000050、length = 0x0003B0 /*片上 RAM 块 M0 */
    RAMM1 :origin = 0x000400、length = 0x000400 /*片上 RAM 块 M1 */
    //RAML2 :origin = 0x008C00,length = 0x001000 /*片上 RAM 块 L2 */
    //RAMM1 :origin = 0x000480,length = 0x000380
    CLARAM0 :origin = 0x008800,length = 0x000400
    CLARAM1 :origin = 0x008C00,length = 0x000400
    CLARAM2 :origin = 0x008000、length = 0x000800

    CLA1_MSGRAMLOW :origin = 0x001480、length = 0x000080
    CLA1_MSGRAMHIGH :origin = 0x001500,length = 0x000080

    RAML3. :origin = 0x009C00,length = 0x000E00 //片上 RAM 块 L3 */
    RAML4. :origin = 0x00B000、length = 0x001000 /*片上 RAM 块 L4 */
    RAML5. :origin = 0x00C000、length = 0x002000 /*片上 RAM 块 L5 */
    RAML6. :origin = 0x00E000、length = 0x002000 /*片上 RAM 块 L6 */
    RAML7. :origin = 0x010000,length = 0x002000 /*片上 RAM 块 L7 */
    RAML8. :origin = 0x012000、length = 0x002000 /*片上 RAM 块 L8 */
    USB_RAM :origin = 0x040000、length = 0x000800 /* USB RAM *
    FLASHB :origin = 0x3F0000、length = 0x004000 /*片上闪存*/


    /*将段分配给内存块。
    注:
    DSP28_CodeStartBranch.asm 中用于重定向代码的 codestart 用户定义段
    闪存时执行
    ramfuncs 用户定义的段来存储将从闪存复制到 RAM 中的函数
    *


    部分


    /*分配计划领域:*/
    .cinit :> FLASHH、 PAGE = 0
    .pinit :> FLASHH、 PAGE = 0
    .text :> FLASHH、 PAGE = 0
    codestart :>开始, PAGE = 0
    ramfuncs :LOAD = FLASHD,
    运行= RAML0、
    load_start (_RamfuncsLoadStart)、
    load_end (_RamfuncsLoadEnd)、
    run_start (_RamfuncsRunStart)、
    load_size (_RamfuncsLoadSize)、
    PAGE = 0

    csmpasswds :>csm_PWL_P0、page = 0
    csm_rsvd :>csm_RSVD,page = 0

    /*分配未初始化的数据段:*/
    堆栈 :> RAML6, PAGE = 1.
    ebss :> RAML4, PAGE = 1.
    等斯梅姆 :> RAML4, PAGE = 1.

    /*将初始化段放入闪存中*/
    /*要使 SDFlash 对这些内容进行编程、必须将它们分配到第0页*/
    .econst :> FLASHH、 PAGE = 0
    切换 :> FLASHH、 PAGE = 0

    /*分配 IQ 数学区域:*/
    IQMath :> FLASHH、 PAGE = 0 /*数学代码*/
    IQmathTables :> IQTABLES,PAGE = 0,TYPE = NOLOAD

    /*分配 FPU 数学区域:*/
    FPUmathTables :> FPUTABLES,PAGE = 0,TYPE = NOLOAD

    Cla1Prog :LOAD = FLASHD,
    运行= RAML3、
    load_start (_Cla1funcsLoadStart)、
    load_end (_Cla1funcsLoadEnd)、
    run_start (_Cla1funcsRunStart)、
    load_size (_Cla1funcsLoadSize)、
    PAGE = 0

    Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,page = 1.
    CpuToCla1MsgRAM:>CLA1_MSGRAMHIGH,PAGE = 1.
    Cla1DataRam0:> CLARAM0, PAGE = 1.
    Cla1DataRam1:> CLARAM1, PAGE = 1.
    Cla1DataRam2:> CLARAM2、 PAGE = 1.
    CLA1mathTables:> CLARAM1, PAGE = 1.

    CLAscratch :
    {*。obj (CLAscratch)
    。 += CLA_ScratchPad_size;
    *。obj (CLAscratch_end)}> CLARAM1、
    PAGE = 1.

    //DMARAML5 :> RAML5, PAGE = 1.
    //DMARAML6 :> RAML6, PAGE = 1.
    //DMARAML7 :> RAML7, PAGE = 1.
    //DMARAML8. :> RAML8, PAGE = 1.

    /*如果调用 IQNexp()或 IQexp(),请取消注释以下部分
    库中的函数、以便利用
    引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
    1个等待状态)。 如果此部分未注释、则为 IQmathTables2
    将被加载到其他存储器(SARAM、闪存等)中并将采用
    上行空间、但0等待状态是可能的。
    *
    /*
    IQmathTables2:> IQTABLES2,PAGE = 0,TYPE = NOLOAD


    IQMath.lib (IQmathTablesRam)


    *
    /*如果调用 IQNasin ()或 IQasin (),请取消注释以下部分
    库中的函数、以便利用
    引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
    1个等待状态)。 如果此部分未注释、则为 IQmathTables2
    将被加载到其他存储器(SARAM、闪存等)中并将采用
    上行空间、但0等待状态是可能的。
    *
    /*
    IQmathTables3:> IQTABLES3,PAGE = 0,TYPE = NOLOAD


    IQMath.lib (IQmathTablesRam)


    *

    /*.reset 是编译器使用的标准段。 它包含*/
    /* C 代码_c_int00起始地址。 /*
    /*当使用引导 ROM 时,此部分和 CPU 矢量*/
    /*不需要表。 因此、默认类型设置为*/
    /* DSECT */
    复位 :>重置, PAGE = 0、TYPE = DSECT
    矢量 :>引导程序,页= 0,类型= DSECT



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


    您能否检查是否存在任何问题?

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

    您好、Yusuf、

    乍一看、您在第0页和第1页上都定义了存储器范围 RAML3。 我会删除或重命名 其中一个定义、以避免混淆。 我还会注释出 第一行 CLA_ScratchPad_size 定义。  您是否在应用程序中尝试过使用链接器命令文件? 我会尝试在您的应用程序中使用该文件、看看您是否遇到任何其他问题。

    此致、

    Ozino