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.

[参考译文] TMS320F280049:DCSM 设计问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1379214/tms320f280049-dcsm-design-question

器件型号:TMS320F280049

工具与软件:

您好!
我将为我的客户提供用于各种 C2000微控制器的 CAN 引导加载程序。 现在、我正在完成加密固件更新选项、这就是我不得不思考一些 C2000 μ µCs 中实现的 DCSM 的地方。

通常、对于引导加载程序而言、使用时需要一定的闪存、但实际上不需要 RAM。 原因是、应用程序和引导加载程序绝不会同时运行。 因此当两者之一运行时、可以完全使用 RAM。

我使用对称加密/签名算法、需要使用常规密钥与引导加载程序一起存储。 禁用 JTAG 即可确保密钥的安全、但可能会利用引导加载程序或应用程序中的错误来读取闪存(因此会损害应用程序的机密性和/或密钥)。

DSSM 将对某些闪存扇区的访问限制为仅执行的功能似乎非常适合该问题。 但是:引导加载程序需要 RAM 的某些部分从那里运行闪存库。 根据我对这个概念的理解、只有当 RAM 被分配到同一个区域并且只被设定为执行时、才可以将库从闪存复制到 RAM 中。

将这个 RAM 部分设置到一个特定的区域并且只执行、RAM 将不再能够被应用使用(除了在将应用程序闪存分配给同一个区域时将它用于相似的用途之外)。

是否可以通过某种方法来克服此限制、将 bootloader 闪存存储器设置为仅执行、从而使整个 RAM 仍可用于应用?

此致

Torsten

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

    Torsten、您好!

    尝试实现 RAM EXEONLY 的方法并没有真正好的解决方案、而只能用于引导加载程序。

    但是、我不确定您是否必须使 RAM 生效。 Flash API 库是公开的(我们在我们的网站上免费发布此库)、因此、如果尝试维护该库的机密性、将不会获得任何好处。 您可以考虑将 闪存库的加载和运行存储区域放置在非 EXEONLY RAM 中、从而保持能够根据应用需求重复使用该 RAM。

    此致、
    Ibukun

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

    尊敬的 Ibukun:

    这是一个非常有趣的想法! 目前、引导加载程序涵盖2个 扇区、我可以保护其中一个扇区、并确保密钥存储在该扇区中、并尝试确保闪存库链接到未受保护的扇区。

    非常感谢这个想法!

    此致

    Torsten