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.

[参考译文] TMS320F28379D:我对 CLA 有疑问。

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/676854/tms320f28379d-i-have-a-question-about-cla

器件型号:TMS320F28379D
主题中讨论的其他器件:C2000WARE

CLA 程序未加载到闪存中并请求帮助。 谢谢

以下是整个项目文件、要求诊断方面的帮助。

e2e.ti.com/.../ccpu.rar

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

    您能更具体地回答一个问题吗?

    请参阅 C2000Ware 中的 CLA 示例、并参阅包含 CLA 部分的 device_support 中的链接器命令文件。

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

    我用汇编语言编写整个程序。CLA 程序可以在调试期间在 RAM 中执行、但不能烧写到闪存的指定单元。当电源复位时、CLA 不能再执行。

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

    您好!

    在发送的文件中、您已注释 ccpu.asm 中的以下两行:

    initial_cla:
    ;LCflash_initialize;FLASH初始化
    ;LCcopyprogrammosram;搬运程序到CLA程序区 

    要从闪存运行、您需要初始化闪存存储器并将 CLA 程序从此处复制到所需的 RAM 区域。

    您能否检查这两个呼叫为什么被注释掉?

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

    是的、您需要将 CLA 程序和数据加载到闪存中、然后将 memcpy 执行到正确的 RAM 位置。 这与在链接器命令文件中处理 ramfuncs、然后在主应用程序中复制到 RAM 的方式类似。

    我们的 CLA 示例和 CLA 链接器命令文件演示了如何针对加载到闪存中的程序执行此操作。

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

     
    但前提是使用 CMD 配置文件、CLA 程序无法加载到闪存中、我不知道如何配置 CMD 文件来解决无法将 CLA 写入闪存问题的问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在调试期间、发现 CLA 程序已在 RAM 中、因此无法使用这两个子例程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但前提是使用 CMD 配置文件、CLA 程序无法加载到闪存中、我不知道如何配置 CMD 文件来解决无法将 CLA 写入闪存问题的问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    CLA 程序和数据必须首先加载到闪存中、以便在下电上电周期内保持。 必须将代码和数据编程到闪存中。 然后、您的应用必须使用链接器提供的符号执行 memcpy、就像 ramfuncs 一样。

    我不知道这是什么混乱。 您能解释一下吗?

    此致、
    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我无法将 CLA 程序和数据加载到闪存中、即使使用您的 CMD。 当文件正在加载,时、我发现 CLA 程序和数据位于 RAM 中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请参阅2837xD_FLASH_CLA_lnk_cpi1.cmd。

    程序加载到闪存中。 如果您有需要加载的数据表、您可以看到 CLA 数学库链接器命令文件、以显示如何将数据加载到闪存并复制到 RAM。 这与处理 CLAProg 和 ramfuncs 的方式相同。

    2837xD_FLASH_CLA_lnk_cpi1.cmd……

    /* CLA 特定部分*/
    Cla1Prog :LOAD = FLASHD,
    运行= RAMLS4_5、
    load_start (_Cla1funcsLoadStart)、
    load_end (_Cla1funcsLoadEnd)、
    run_start (_Cla1funcsRunStart)、
    load_size (_Cla1funcsLoadSize)、
    PAGE = 0、ALIGN (4)

    CLADataLS0:>RAMLS0,PAGE=1
    CLADataLS1:> RAMLS1,PAGE=1

    Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,page = 1.
    CpuToCla1MsgRAM:>CLA1_MSGRAMHIGH,PAGE = 1.

    #ifdef CLA_C
    /* CLA C 编译器段*/
    //
    //必须被分配给 CLA 具有写入访问权限的内存
    //
    CLAscratch :
    {*。obj (CLAscratch)
    。 += CLA_ScratchPad_size;
    *。obj (CLAscratch_end)}> RAMLS1、PAGE = 1

    暂存区 :> RAMLS1、 PAGE = 1.
    .bss_cla:> RAMLS1、 PAGE = 1.
    .const_cla:LOAD = FLASHB、
    运行= RAMLS1、
    run_start (_Cla1ConstRunStart)、
    Load_start (_Cla1ConstLoadStart)、
    load_size (_Cla1ConstLoadSize)、
    PAGE = 1.
    #endif //cla_C
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     您好!


    我尝试使用您提供的方法解决此问题、但结果是失败。 您可以根据我提供的项目对其进行调试。
    检查 CLA 程序是否可以加载到闪存中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    请向我提供有关如何配置 CMD 文件的说明吗?
    谢谢你
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    本主题的最佳信息来源是汇编语言工具文档:SPRU513。 相关章节为8.5链接器命令文件

     请参阅 http://www.ti.com/lit/ug/spru513k/spru513k.pdf

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

    需要注意的是、您的汇编代码位于 RAM 中的名为"claprog"的段中。 您需要执行其他操作、类似于当前版本中未使用的另一节"ClaProg"。

    ClaProg :LOAD = FLASHD,
    运行= RAMLS0、
    load_start (_Cla1funcsLoadStart)、
    load_end (_Cla1funcsLoadEnd)、
    run_start (_Cla1funcsRunStart)、
    load_size (_Cla1funcsLoadSize)、
    PAGE = 0、ALIGN (4) 

    如果使用此命令、则分配给 ClaProg 段的所有代码都将复制到闪存区域 FLASHD 中、但符号(例如可调用函数等)将在 RAM 区域 RAMLS0中具有其地址。 此外、链接器将定义全局符号_Cla1funcsLoadStart、_Cla1funcsLoadEnd、_Cla1funcsRunStart。  

    然后、您需要使用这些全局符号将数据从闪存范围(_Cla1funcsLoadStart、_cla1funcsLoadEnd)复制到 RAM 范围(_cla1funcsRunStart、_Cla1funcsRunStart +_Cla1funcsLoadSize)。

    您似乎有一个自定义函数 copyprogramram、但它看起来不像 CLA 代码的顺序副本。

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

    谢谢、但我应该如何在现有流程中做到这一点?

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

    请参阅 CLA 示例、其中包括具有闪存构建配置的 CLA 数学示例。 他们演示了如何执行此操作。

    此致、
    SAL