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.
工具与软件:
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