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:关于在有效存储器之外进行预取的勘误表

Guru**** 2465890 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1489661/tms320f28p650dk-errata-about-prefetching-beyond-valid-memory

器件型号:TMS320F28P650DK

工具与软件:

尊敬的 Champ:

我正在为我的客户重新确认。

请注意、它在 LS9的末尾留下8W 的长度(0x25FF8-0x25FFF)、CPU1无法使用这些存储器。

如果用户在.cmd 文件中将 LS8和 LS9配置为 CLA 程序、如下所示、

RAMLS_CLA_PROG:origin = 0x004000、length = 0x004000 //针对 CLA_PROGRAM 的 LS8~LS9

(1)。  勘误表是否也会影响 CLA 内核将 LS9的最后8W 长度用作 CLA 程序 ? 应该是的 不会 、对吗?

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

在这篇文章中、我可以再次确认以下结论:用户不能将 LS0、LS1、LS8和 LS9 RAM 作为 CLA 程序存储器的组合存储器扇区、如下所示、对吧?

RAMLS_CLA_PROG:origin = 0x004000、length = 0x005000 // LS8~LS9~LS0~LS1 (用于 CLA_PROGRAM)

(3)。 在#2之后、如果可以将 LS8、LS9、LS0和 LS1指定为 CLA 程序、在这种情况下、是否应该保留 LS9上的8W 长度以避免出现此错误?  

谢谢。此致、

Johnny

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

    您好!

    (1)。  勘误表是否也会影响 CLA 内核将 LS9的最后8W 长度用作 CLA 程序 ? 应该是的 不会 、对吗?

    不、它仅适用于 CPU。

    [报价 userid="488507" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1489661/tms320f28p650dk-errata-about-prefetching-beyond-valid-memory "]

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

    在这篇文章中、我可以再次确认以下结论:用户不能将 LS0、LS1、LS8和 LS9 RAM 作为 CLA 程序存储器的组合存储器扇区、如下所示、对吧?

    RAMLS_CLA_PROG:origin = 0x004000、length = 0x005000 // LS8~LS9~LS0~LS1 (用于 CLA_PROGRAM)

    [报价]

    正确。

    此致、

    Vivek Singh

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

    尊敬的 Vivek、

    感谢您的答复。

    否、仅适用于 CPU.

    要将 LS8和 LS9配置为 CLA 程序、 用户必须从由 CPU1完成的闪存复制代码、如下所示。

    memcpy ((uint32_t *)((uint32_t)&Cla1ProgRunStart +(0x1E000U))、(uint32_t *)&Cla1ProgLoadStart、
    (uint32_t)&Cla1ProgLoadSize);

    执行 memcpy 行,这不是问题在这里的勘误? 因为 CPU1目前仍应拥有 LS9的最后8W 长度、或者我的担忧实际上是没有必要的 ?

    正确。

    所以、 您建议如何 将  LS0_1的存储器和  LS8_9 RAM 的存储器配置为.cmd 文件和 memcpy 中的 CLA 程序存储器?

    它是否应该这样配置?

    .cmd 文件

    RAMLS8_LS9:对于 CLA_PROGRAM、origin = 0x004000、length = 0x004000 // LS8~LS9

    RAMLS0_LS1: origin = 0x008000、length = 0x001000 //针对 CLA_PROGRAM 的 LS0~LS1

    Cla1Prog:load = flash_BANK0、
    RUN = RAMLS8_LS9 | RAMLS0_LS1
    Load_start (Cla1ProgLoadStart)、
    RUN_START (Cla1ProgRunStart)、
    Load_Size (Cla1ProgLoadSize)、
    对齐(4)

    以执行 memcpy

    memcpy ((uint32_t *)((uint32_t)&Cla1ProgRunStart +(0x1E000U))、(uint32_t *)&Cla1ProgLoadStart、
    (uint32_t)&Cla1ProgLoadSize);

    你看到这里有任何问题吗?  如有任何错误、请更正。

    谢谢!

    Johnny

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

    尊敬的 Vivek、

    是否有机会在此处获得输入内容?

    谢谢!

    Johnny

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    执行 memcpy 行、这对勘误表来说不是问题吗? 由于 CPU1此时仍应拥有 LS9的最后8W 长度、或者实际上没有必要担心 ?

    问题在于代码获取、而不是读取数据、因此它应该是可以的。

    [报价 userid="488507" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1489661/tms320f28p650dk-errata-about-prefetching-beyond-valid-memory/5723188 #5723188"]

    以执行 memcpy

    memcpy ((uint32_t *)((uint32_t)&Cla1ProgRunStart +(0x1E000U))、(uint32_t *)&Cla1ProgLoadStart、
    (uint32_t)&Cla1ProgLoadSize);

    [报价]

    在 CPU 端、LS8/LS9和 LS0/LS1的地址不连续、因此此 memcpy 不适用于 LS0/LS1。 您需要分两步完成。 一个用于 LS0和 LS1、另一个用于 LS8和 LS9。

    此致、

    Vivek Singh

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

    尊敬的 Vivek、

    感谢您的答复。

    问题是用于获取代码、而不是用于读取数据、因此应该是可以接受的。

    请您进一步说明代码获取和读取数据之间的区别吗?

    您需要分两步完成此操作。 一个用于 LS0和 LS1、另一个用于 LS8和 LS9。

    "你是说是你的?"  执行两次

    .cmd 文件

    RAMLS8_LS9:对于 CLA_PROGRAM、origin = 0x004000、length = 0x004000 // LS8~LS9

    RAMLS0_LS1: origin = 0x008000、length = 0x001000 //针对 CLA_PROGRAM 的 LS0~LS1

    Cla1Prog:load = flash_BANK0、
    RUN = RAMLS8_LS9、
    Load_start (Cla1ProgLoadStart_LS8_9)、
    RUN_START (Cla1ProgRunStart_LS8_9)、
    Load_Size (Cla1ProgLoadSize_LS8_9)、
    对齐(4)

    Cla1Prog:load = flash_BANK0、
    RUN = RAMLS0_LS1、
    Load_start (Cla1ProgLoadStart_LS0_1)、
    RUN_START (Cla1ProgRunStart_LS0_1)、
    Load_Size (Cla1ProgLoadSize_LS0_1)、
    对齐(4)

    以执行 memcpy

    memcpy ((uint32_t *)&Cla1ProgRunStart_LS0_1、(uint32_t *)&Cla1ProgLoadStart_LS0_1
    (uint32_t)&Cla1ProgLoadSize_LS0_1);

    memcpy ((uint32_t *)((uint32_t)&Cla1ProgRunStart_LS8_9 +(0x1E000U))、(uint32_t *)&Cla1ProgLoadStart_LS8_9
    (uint32_t)&Cla1ProgLoadSize_LS8_9);

    是否高于看起来正确? 如果有任何错误、请更正我。

    谢谢。此致、

    Johnny

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

    尊敬的 Johnny:

    请您进一步说明代码获取和读取数据之间的区别吗?

    C28 CPU 具有不同的接口来获取代码(要执行的指令)和读取数据。

    上述内容是否正确? 如果有任何错误、请更正我。

    这对我来说很好。  

    此致、

    Vivek Singh