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.

[参考译文] LAUNCHXL-F280025C:将安全函数从闪存复制到 RAM 时出现问题会导致非法操作

Guru**** 2463330 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1180223/launchxl-f280025c-problem-copy-secure-functions-from-flash-to-ram-results-in-illegal-operation

器件型号:LAUNCHXL-F280025C
主题中讨论的其他器件:UNIFLASH

你(们)好

来自此主题:

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1179106/tms320f280025c-copy-secure-functions-from-flash-to-ram-in-tms320f280025c

闪存扇区6和 RAMLS5是 EXEONLY:

两个都位于同一个安全区-区2中。 这是从 f28002x_dcsm.asm 中获取的:

当函数从安全闪存扇区(6)运行时、一切都正常。  

复印功能将如何帮助? 即使他们复制函数、程序也会从何处知道这些函数的运行方式? 它们仍将从安全闪存(扇区6)运行。 我需要该程序

将从安全 RAM (RAMLS5)运行这些函数。  我知道这种类型的东西是在.cmd 文件中配置的。 我曾尝试过这种方法 、 但看到了 RAMLS5中的函数  

当程序到达其中一个函数时、它将跳转到非法操作中断。

谢谢

Yoav

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

    您好、Yoav、

    在  B0_Z2_EXEONLYSECTR 中具有值1意味着 EXEONLY 被禁用。 您需要将这些字段编程为0以使闪存扇区和 RAM 成为 EXEONLY。 请在将它们配置为 EXEONLY 后进行拍摄。   

    谢谢、此致

    Pramod

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

    您好 Pramod

    感谢您的答复。

    如何配置 EXEONLY ram/flash? 我可以看到可以读取状态的函数、如下所示:

    DCSM_EXEOnlyStatus
    DCSM_getZone2RAMEXEStatus(DCSM_RAMModule module)
    {
        DCSM_EXEOnlyStatus status;
    
        //
        // Check if module belongs to this zone
        //
        if(DCSM_getRAMZone(module) != DCSM_MEMORY_ZONE2)
        {
            status = DCSM_INCORRECT_ZONE;
        }
        else
        {
            //
            // Get the EXE status of the RAM Module
            //
            status = (DCSM_EXEOnlyStatus)((HWREGH(DCSMBANK0_Z2_BASE +
                   DCSM_O_Z2_EXEONLYRAMR) >> (uint16_t)module) & (uint16_t)0x01U);
        }
        return(status);
    }

    是否有用于设置 EXEONLY ram/flash 的函数? 还是 需要手动写入地址? 如果是这样

    在这种情况下、您能给我一个示例、说明如何执行该操作、因为我尝试 了以下操作:

    从0x0F 更改为0x0D (将 RAMLS5设置为0):

      

     它没有更改值。

    谢谢

    Yoav

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

    您好、Yoav、

    这些值不能通过 CCS 直接写入。 EXEONLY 位是作为 ZSB 一部分在 OTP 中进行的其他安全配置设置的一部分。 您需要对 用于更改其他 DCSM 设置的相同器件(闪存 API/CCS 闪存插件/UniFlash)使用闪存编程工具   

    更改设置后、请告诉我可以解决您的问题。  

    谢谢、此致

    Pramod

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

    您好 Pramod

    如果这是 OTP 区域、则意味着我无法更改这些扇区/ram EXEONLY 状态的状态?

    谢谢

    Yoav

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

    您好、Yoav、

    是的。 这是 OTP 区域、这意味着一旦编程、您就无法重新编程。  正如我在本例中看到的、默认情况下未配置 EXEONLY 设置。 因此、您仍然可以对 OTP 进行编程、以更改 RAM/Flash 的 EXEONLY 设置。  

    但是、我们有一个称为区域选择块(我相信您已经知道这一点)的东西、更像是安全设置的多个副本。 您可以配置 LinkPointer 来选择应使区域选择块的安全设置生效。 此方法将使您能够多次修改安全设置、即使这些设置是 OTP 的一部分。 有关这方面的更多详细信息、请参阅器件 TRM (www.ti.com/.../spruin7a.pdf)中的 DCSM 一章。  

    请试用我们作为 SYSCFG 一部分提供的 DCSM 工具、该工具将帮助您轻松实现上述安全设置。 以下是相同的文档。 (https://www.ti.com/lit/an/spracp8a/spracp8a.pdf)和工具也受 F28002x 的支持。

    如果您对此主题还有任何疑问、请告诉我。 对于需要解决的任何新问题、请随时打开新主题帖。  

    希望这对您有所帮助。  

    谢谢、此致

    Pramod

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

    您好、Parmod

    感谢你的帮助。  工作。

    谢谢

    Yoav