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.

[参考译文] TMS320F28377S:LS 05 RAM 不会加载 ClaProg 程序代码

Guru**** 2482105 points
Other Parts Discussed in Thread: TMS320F28377S, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/963576/tms320f28377s-ls-05-ram-does-not-get-loaded-with-claprog-program-code

器件型号:TMS320F28377S
主题中讨论的其他器件: C2000WARECCStudio

我在 TMS320F28377S 上致力于 CLA 的功能证明。  嗯、可以肯定它可以正常工作、但在我们的代码库中演示它可以正常工作是个问题。

我使用的是 MathWorks 示例 c28377Splink_CLA、该示例将 CLA 代码作为原型生成。  我修改了 MathWorks 示例、使其更加简单。

最后、我有一个来自代码生成器的.cla 和.c 文件。   使用 MathWorks 链接器控制文件、我添加了代码并修改了现有的链接器控制文件。

在闪存中:

Cla1funcsLoadStart
75D0   8100   74C0   00F4   7AC0   810C   7590   003C   7BC0   003D   7BC0   003C   7B40   003D   7B80   003C   7BC0   003C   7B80
0004   7F20   0000   7FA0   0000   7FA0   0000   7FA0   0024   7981   0000   7FA0   0000   7FA0   0000 7FA0 0000   7FA0   8106   7580   0000
7841   003C   7BC0   003C   7B80   0004   7F20   0000   7FA0   0000   7FA0   0000   7FA0   0008   7981   0000   7FA0   0000   7FA0
0000   7FA0   8106   7580   810C   75C0   4502   7841   8100   73C0   3000   7881   0004   7C20   8102   74C0   8100   73C0   4502
7841   00F0   7A80   3000   7881   0004   7C20   8104   74C0   0000   7842   406B   7580   0000   7841   FFFF   7882   0004   7C60
8102   73D0   0005   7EA0   0019   7C60   0004   7C80   406B   75C0   0000   7842   0000   7841   FFFF   7882   416B   7580   0004
7C60   8104   73D0   0005   7EA0   0019   7C60   0004   7C80   416B   75C0   0000   79AF   0000   7FA0   0000   7FA0   0000 7FA0 0000   7FA0
8108   73C0   1480   74C0   3842   7841   1502   73C0   2E45   7881   0004   7C00   40C9   7841   0FDB   7881   810A   0110   0004
7C20   8102   74C0   06D8   799F   0000   7FA0   0000   7FA0   0000   7FA0   0000   7D80   8100   74C0   40C9   7840   8102   73D0
0FDB   7880   0001   7D00   0000   7FA0   0000   7FA0   0000   7FA0   0018   7984   0000   7FA0   0000   7FA0   0000 7FA0 0000   7FA0   40C9
7840   0FDB   7880   0004   7C40   810A   74C0   000c   798E   0000   7FA0   0000   7FA0   0000   7FA0   00F4   7AC0   810A   74C0
0000   7841   8108   73C0   0001   7881   0004   7CC0   8108   74C0   0000   7FA0   0000   7FA0   0000   7FA0 0000 7FA0   0000   7F80
C$SW5、Cla1funcsLoadEnd

I LS 05 RAM: 未加载。

Cla1funcsRunStart、HAL_MODEG_fnProcess、c
0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000
0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000
0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000
0000   0000   0000 0000
C$L1
0000   0000   0000 0000   0000
C$L2
0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000
0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000
0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000
0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000
Cla1Task1、c
0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000
0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000
0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000
0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000    0000   0000   0000 0000   0000   0000 0000
C$L1

链接器命令文件:

 RAMLS_CLA_PROG     :origin = 0x00A800,length = 0x000800
 /*控制律加速器(CLA)程序代码部分*/
 Cla1Prog       :load = flash_code,
                   运行= RAMLS_CLA_PROG、
                   load_start (_Cla1funcsLoadStart)、
                   load_end (_Cla1funcsLoadEnd)、
                   run_start (_Cla1funcsRunStart)、
                   load_size (_Cla1funcsLoadSize)、
                   PAGE = 0、ALIGN (4)

相关的 GEL 文件行

   *(int *) 0x5F432 =0x003F;     /* LS0..LS5 存储器的 RAM 初始   化*

/*程序内存映射*/
GEL_MapAddStr (0x000080000、0x800、"R|W|AS2"、0); /* LS0 RAM (带奇偶校验)(4KB) *
GEL_MapAddStr (0x00008800、0、0x800、"R|W|AS2"、0); /* LS1 RAM (带奇偶校验)(4KB) *
GEL_MapAddStr (0x000090000、0x800、"R|W|AS2"、0); /* LS2 RAM (带奇偶校验)(4KB) *
GEL_MapAddStr (0x00009800、0、0x800、"R|W|AS2"、0); /* LS3 RAM (带奇偶校验)(4KB) *
GEL_MapAddStr (0x0000A0000、0x800、"R|W|AS2"、0); /* LS4 RAM (带奇偶校验)(4KB) *
GEL_MapAddStr (0x0000A800、0、0x800、"R|W|AS2"、0); /* LS5 RAM (带奇偶校验)(4KB) *

/*数据存储器映射*/
GEL_MapAddStr (0x000080001、0x800、"R|W|AS2"、0); /* LS0 RAM (带奇偶校验)(4KB) *
GEL_MapAddStr (0x00008800、1、0x800、"R|W|AS2"、0); /* LS1 RAM (带奇偶校验)(4KB) *
GEL_MapAddStr (0x000090001、0x800、"R|W|AS2"、0); /* LS2 RAM (带奇偶校验)(4KB) *
GEL_MapAddStr (0x00009800、1、0x800、"R|W|AS2"、0); /* LS3 RAM (带奇偶校验)(4KB) *
GEL_MapAddStr (0x0000A0001、0x800、"R|W|AS2"、0); /* LS4 RAM (带奇偶校验)(4KB) *
GEL_MapAddStr (0x0000A800、1、0x800、"R|W|AS2"、0); /* LS5 RAM (带奇偶校验)(4KB) * 


有什么意见?

GEL 命令是否可以阻止某些内容?

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

    您好!

    在项目的系统初始化中、C28x 是否执行从闪存到 RAM 的代码副本?  这将适用于您希望从 RAM 以及 CLA 代码运行的任何 C28x 代码。  ?   

    CLA 的 C2000Ware driverlib 示例中提供了相关示例。  

    此致

    Lori

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

    我明天会尝试。

    谢谢

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

    我添加了以下行来复制代码:

    // :使用 void * memcpy (void * destination、const void * source、size_t num)
    // 要将"Cla1Prog"和".const_cla"部分从闪存复制到 RAM
    memcpy ((uint32_t *)&Cla1ProgRunStart、(uint32_t *)&Cla1ProgLoadStart、
    (uint32_t)&Cla1ProgLoadSize);
    memcpy ((uint32_t *)&Cla1ConstRunStart、(uint32_t *)&Cla1ConstLoadStart、
    (uint32_t)和 Cla1ConstLoadSize);
    

    但代码不会生成;链接器不会找到这些符号。
    Cla1ProgRunStart、Cla1ProgLoadStart、Cla1ProgLoadSize、等等。 

    我在 c200中尝试了一个示例
    C:\ti\c2000Ware_3_03_00_00\driverlib\f2837xs\examples\cpu1\cla
    如果我使_flash 为1、也会失败。

    请告知下一步




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

    我能够构建

    C:\ti\c2000Ware_3_03_00_00\driverlib\f2837xs\examples\cpu1\cla

    例如、将配置设置为闪存时

    不知道如何使其在我的项目上正常工作?

    其中、.cproject 中的大多数行 的起始行如下所示:

    "="">

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

    [引用用户="Marlo Gote"]

    链接器未找到这些符号。 
    Cla1ProgRunStart、Cla1ProgLoadStart、Cla1ProgLoadSize、等等。 

    [/报价]

    在 C 代码中、这些应定义为 extern、因为链接器本身会在创建段时创建它们(请参阅第一个帖子中的链接器.cmd 文件片段)

    extern uint32_t Cla1ProgRunStart、Cla1ProgLoadStart、Cla1ProgLoadSize…… 等等 

    您可能会发现此处列出的"入门"资源非常有用-尤其是 CLA 实践技术讲座。  

    https://software-dl.ti.com/C2000/docs/cla_software_dev_guide/index.html

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

    很抱歉耽误你的时间、

    通过此代码更改:

    extern uint32_t Cla1ProgRunStart、Cla1ProgLoadStart、Cla1ProgLoadSize;
    extern uint32_t Cla1ConstRunStart、Cla1ConstLoadStart、Cla1ConstLoadSize;

     memcpy (((uint32_t *)&Cla1ProgRunStart、(uint32_t *)&Cla1ProgLoadStart、
         (uint32_t)和 Cla1ProgLoadSize);
     memcpy (((uint32_t *)&Cla1ConstRunStart、(uint32_t *)&Cla1ConstLoadStart、
         (uint32_t)和 Cla1ConstLoadSize);

     未定义         的首次引用
     符号                     
     ------          --------
     _Cla1ProgLoadSize ./mbd/mbd_cla.obj
     _Cla1ProgLoadStart ./mbd/mbd_cla.obj
     _Cla1ProgRunStart ./mbd/mbd_cla.obj
     
    错误#10234-D:未解析的符号仍然存在
    错误#10010:链接期间遇到错误;

    ----------------------------------------

    如果我注释掉程序标签、 它将会生成。

    因为此时没有 CLA 常量  

    //extern uint32_t Cla1ProgRunStart、Cla1ProgLoadStart、Cla1ProgLoadSize;
    //memcpy (((uint32_t *)&Cla1ProgRunStart、(uint32_t *)&Cla1ProgLoadStart、
    //    (uint32_t)&Cla1ProgLoadSize);

    我们使用的是 ccs8 和 ccs9

    请再提供建议。

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

    名称应与链接器文件中的名称匹配。  即、您是否正在使用 Cla1funcs? 或 ClaProg...   

    这是原始帖子中的内容?

     RAMLS_CLA_PROG     :origin = 0x00A800,length = 0x000800
     /*控制律加速器(CLA)程序代码部分*/
     Cla1Prog       :load = flash_code,
                       运行= RAMLS_CLA_PROG、
                       load_start (_Cla1funcsLoadStart)、
                       load_end (_Cla1funcsLoadEnd)、
                       run_start (_Cla1funcsRunStart)、
                       load_size (_Cla1funcsLoadSize)、
                       PAGE = 0、ALIGN (4)

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

    你(们)好、Lori

    好的、它现在构建、 没有错误。

    我需要在下一步的硬件上确认、我可以访问 的硬件设置是 一个共享资源、 因此希望我可以在本周进行确认。

    谢谢

    Marlo

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

    很好、感谢您告诉我。  

    谢谢

    Lori

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

    我们加载了程序代码、 CLA 任务看起来不会运行。  

    证据是 CLA-2-CPU RAM 既不发生变化、也不发生任何内部 CLA RAM 变化。

    该算法是一个简单的计数器。   它假设从 timer0运行、 每秒21、000次。

    如何进行调试、

    是否有 CLA 错误寄存器可以告诉我一些问题?

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

    在 CLA 调试中、  CLA 程序计数器始终位于地址0x00B000处 、并从该处递增。  

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

    我介绍了如何让 CLA 执行(将程序简化为最少)

    此主题已完成。