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.

[参考译文] CCS/TMS320F28062:在闪存中使用多个应用时、如何处理 CSM 部分

Guru**** 2603695 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/678006/ccs-tms320f28062-what-to-do-with-csm-section-when-using-multiple-applications-in-flash

器件型号:TMS320F28062

工具/软件:Code Composer Studio

您好、再说一次、

我在 F28062上运行了2个应用。 第一个是 FlashA 中的自定义引导加载程序、另一个是在 FlashB 中运行的主应用程序。

两者都必须通过 CSM 进行保护、因此它们都具有相同的128位 CSM 密钥。 但问题如下:

当我编译这两个项目时、应该只有一个项目指定 CSM 部分以及如何处理它、或者由于它们使用相同的密钥、所以这两个项目都可以更改这个部分?

当我考虑这一点时、我会说只有引导加载程序必须保护闪存、因为它是唯一更改闪存的程序、所以我可以省略主应用程序中的 CSM 密码。

那么、哪种解决方案是最佳的呢?

如果我在引导加载程序中仅使用 CSM、是否可以仅删除主应用程序链接器文件中的 CSM 部分、或者这会导致未定义的行为? 我应该如何处理链接器文件中的 CSM 部分?

提前感谢:)

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

    引导加载程序将编程一次、假设您以后不会更改安全设置、您只需将其包含在引导加载程序和主应用程序链接中、cmd 文件的 CSM 部分定义为 type = DESECT (下面是示例供参考)-

    复位: > H0SARAM PAGE 0、TYPE = DSECT

    此致、

    Vivek Singh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么、当引导加载程序跳转到安全闪存之外的主应用程序时、没有问题? 我不必在主应用程序中执行 csmUnlock()?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    由于引导加载程序和主应用程序都从安全闪存运行、因此两者都具有相同的权限、因此没有问题。  一般情况下,您不必使用 csmUnlock()来运行代码。  

    Vivek Singh

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

    好的,谢谢:)

     n`t 清楚一点、在构建主应用程序时、我希望"csm_rsvd 和 csmpasswds"两个段都是 DSECT、因此在刷写新的主应用程序时、这两个段都不会被触及?

    csm_rsvd :>csm_RSVD,page = 0,type = DSECT
    csmpasswds :>csm_PWL_P0、page = 0、type = DSECT
    
    csm_RSVD:origin = 0x3F7F80、length = 0x000076 /* FLASHA 的一部分。 当 CSM 正在使用时、使用所有0x0000进行编程。 //
    csm_PWL_P0:origin = 0x3F7FF8,length = 0x000008 /* FLASHA 的一部分。 FLASHA 中的 CSM 密码位置*/ 

    csm_rsvd 告诉 DSP CSM 是有效的、所以只有引导加载程序在烧写时将这些值设置为0x0000、主应用程序永远不会更改这些值、这样我在主应用程序中将 csm_rsvd 声明为 DSECT、对吧?

    csmpasswds 存储密码、因此在烧写时、只有引导加载程序更改这些值、主应用程序不应更改这些值、因此我也在 主应用程序中将 csmpasswds 声明为 DSECT、对吧?

    谢谢你

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

    您好!

    [引述]

    csm_rsvd 告诉 DSP CSM 是有效的、所以只有引导加载程序在烧写时将这些值设置为0x0000、主应用程序永远不会更改这些值、这样我在主应用程序中将 csm_rsvd 声明为 DSECT、对吧?

    csmpasswds 存储密码、因此在烧写时、只有引导加载程序更改这些值、主应用程序不应更改这些值、因此我也在 主应用程序中将 csmpasswds 声明为 DSECT、对吧? [/报价]

    是的、没错。

    一个澄清是、csm_rsvd 地址范围本身为0x0并不表示 DCSM 处于活动状态。 CSM 在 CSM 密码被编程时生效、在这种情况下、建议将 csm_rsvd 空间与数据0x0进行编程。

    此致、

    Vivek Singh