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.

[参考译文] TMS320F28P650DK:用于 CLA 程序的 LS8和 LS9 RAM。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1405856/tms320f28p650dk-the-ls8-and-ls9-ram-for-cla-program

器件型号:TMS320F28P650DK

工具与软件:

hi champs、

在项目 CLA_ASIN_LS8_9中、我们使用 LS8和 LS9 RAM 作为 CLA 程序存储器、并在将代码从闪存复制到 RAM 时添加偏移0x1E000U、这是因为 CPU 执行存储器复制操作吗、所以我们需要添加偏移、以便 CPU 复制 RAM 存储器从0x00022000开始、LS8 RAM (CPU1映射)?

如果是这种情况、是否意味着我们不可能将 LS0、LS1、 LS8和 LS9 RAM 分配为 CLA 程序存储 器、因为我们不知道何时应该为存储器复制添加偏移0x1E000U? 或者是否有其他方法可以做到这一点?

请告知、感谢您的支持。

此致、

Luke

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

    Luke、

    由于 F28P65x 上的 RAM 量、LS8/LS9块必须移动到 CPU 存储器映射中的地址0x22000/0x24000。  但是、CLA 地址总线无法访问0xFFFF 以上的任何内容、因此为了让这些 RAM 块被 CLA 用作程序 RAM、我们必须将它们映射到该存储器总线的较低地址范围(0x4000/0x6000)。

    现在、我们已经为闪存加载和 RAM 运行构建了项目、为此、我们必须将 CLA 程序代码从闪存复制到 RAM。  在所有其他情况下、对于 LS RAM、CPU 和 CLA 之间的地址是相同的、因此映射是简单的。  不过、由于上述原因、我们必须将此偏移添加到 CLA 运行时地址以将其写入 LS8/LS9、因为我们使用 CPU 执行闪存到 RAM 的复制。

    我不确定最后一项陈述在您的帖子中是什么意思;但是通过使用上述内容、可以正确放置存储器、以便 CLA 根据需要从0x4000/0x6000执行。  请记住、物理内存是相同的、因此 CPU 空间中的0x22000/0x24000地址不能被重新使用、但是这与其它 LSx 内存被用于 CLA 数据/程序时的情况没有什么不同。

    此致!

    Matthew

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

    您好、Matthew:

    让我用一个例子来解释我在帖子中的最后一个陈述。

    例如、如果我们计划使用 LS0、LS1、LS8和 LS9块作为 CLA 的程序 RAM、我们如何将 CLA 程序代码从闪存复制到这些 RAM 块(LS0、LS1、LS8和 LS9)?

    此致、

    Luke

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

    Luke、

    我想我理解您的意见、由于您跨越的是非连续的 RAM 地址、当我们从闪存复制内容时、要在正确的位置找到内容可能并不简单。

    对于 CLA 工程/链接、您可以假设 CLA 为0x4000-0x8FFF。  由于这不会由 C28x 执行、因此我们可以选择相同大小的闪存范围。

    当我们运行该应用时、我们只需立即使用命令从闪存中获取代码并复制到 CPU SRAM 的相应区域。  我们可以取第一个0x4000并将其放置在0x22000处、然后取余数并将其放置在0x8000处。  我们无需尝试仅复制所使用的区域、因为整个区域仅为 CLA 保留、此处不会放置任何其他区域。

    此致!

    Matthew

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

    Matthew

    您是说我们为 CLA 程序分配20K 字闪存空间、当我们运行应用程序代码时、我们复制前16K 字闪存内容、并将其放置在0x22000 (对于 LS8和 LS9 RAM)、然后复制其余4K 字闪存内容、并将其放置在0x8000 (对于 LS0和 LS1 RAM)?

    此致、

    Luke

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

    正确、而不是将其放置在通用闪存区域中;我会创建一个刚好是该大小的新命名段、以仅保存 CLA 信息。  

    这样、我们就不必依赖链接器符号来确定起始/加载地址、然后尝试拆分该段进行复制、我们可以将第一个16K 复制到高地址空间、其余的复制到其匹配的低地址空间。

    此致!
    Matthew