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.

[参考译文] F29H850TU:如何在 AUTOSAR 上下文中配置 seccfg/SSU?

Guru**** 2881510 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1641228/f29h850tu-how-to-configure-seccfg-ssu-in-an-autosar-context

器件型号: F29H850TU
主题: SysConfig 中讨论的其他器件

您好:

我们在 AUTOSAR 上下文中工作、这意味着我们正在使用 MEMMAP 部分主要根据 ASIL(例如:1 个 QM 区域、1 个 ASIL C 区域、1 个共享 ASIL C 区域)对代码和数据进行分组。

因此、在我们的链接器脚本中、我们不是在文件级别工作、而是在段级别工作(我们使用图形来捕获输入段,而不是基于文件,而是基于我们通过 MEMMAP 创建的不同段(例如:Proj_SEC_CODE_ASILY_C_CORE1))。

如何根据部分而不是文件来配置 SSU?

如果 SysConfig 不支持该功能、是否有其他方法可以实现?

谢谢你

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

    尊敬的 Ronan:

    在回答问题之前、我想告诉您、我们将在 4 月底发布 F29x SDK 的新版本。 请期待在 TI.com 中发布新版本。 这个新的 SDK 版本包含 SSU 工具的许多增强功能和更新、因此我强烈建议您在开发过程中使用该版本。  

    我们如何根据部分而不是文件来配置 SSU?

    有多种方法可以做到这一点。 我将介绍以下所有方法。

    首先要注意的是、当在 SysConfig 中添加“系统安全性“(意味着添加了 SSU)时、这将自动使 SysConfig 也生成链接器命令文件。 我怀疑您已经有了基于 AUTOSAR 开发的工程链接器命令文件。

    如果要保留现有的 cmd 文件、可以将其与 SysConfig 生成的 cmd 文件结合使用。 为此、您可以仅将 SysConfig 中生成的存储器区域设置。 因此、cmd 文件中使用的存储器区域与器件上设置的 APR 相匹配。  

    然后在“SSU Setup“窗格中、取消选中“Create cinit、binit、ovly、sysmem 和 stack sections “、以便该工具不会创建这些段、在每个链接的设置中、取消选中“Create Default APRs“复选框。 这将删除 cmd 文件的 SECTIONS 输出中的内容。  

    然后、在 SysConfig 的“存储器区域“部分、您可以根据您想要对存储器进行分区的方式定义自己的存储器区域

    设置内存区域/APR 后、需要为已设置的链接授予在这些内存区域之外执行或访问这些内存区域的正确权限。 这是通过 SysConfig 的链接部分完成的。 在这里、对于每个链接、您可以分配“代码区域“、哪个 APR 将包含该区域的可执行代码(如.text 段)、如果您希望该链接对任何存储器区域具有只读或读写访问权限。

    最后、在您自己的 cmd 文件中、删除存储器部分并确保您的各节映射到的所有存储器区域与您在 SysConfig 的“Memory Regions“窗格中定义的区域相同。

    另一种方法是仅使用在 SysConfig 中生成的 cmd 文件。 为此、您可以 选中 “Create cinit、binit、ovly、sysmem 和 stack sections“ 复 选框、并保持选中“Create Default APRs“复选框。 然后、在 SysConfig 的“选项“窗格中、您可以创建输出和输入部分。 在这里、您可以创建与原始 cmd 文件中相同的段、在“Load Memory“中选择已定义的某个内存区域/APR(如下所示,您可以在 cmd 文件中看到此段配置的输出)

    如果您对我的描述有任何疑问、敬请告知。

    此致、

    Marlyn

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

    尊敬的 Marlyn:

    感谢您提供的信息。

    今天、我使用的是 SDK 的 1.26.0 版本、它没有这些选项、因此我将迁移到最新版本并查看一下。

    链接到 SECCFG、我还有一个关于如何管理的问题。

    让我们考虑一下,我有一个产品,我有几个软件:启动器(其目标是确定要启动的软件),加载器(其目标是下载/更新应用软件),生产软件(其主要目标是处理产品生产过程中的测试)和可在项目生命周期更新的应用软件。

    那么、我的问题是如何处理 SECCFG?

    1/应配置 SECCFG 一次、以允许执行启动器、加载器和生产软件、并允许进入应用程序、然后应用程序重新配置 SSU 以满足应用程序的需要?
    如果这种解决方案是一种可能性,它有什么限制(如果有)?

    2/应将 SECCFG 配置为执行所有软件(如此配置以满足应用程序需求)、因此在更新应用程序以满足应用程序的需求时、加载程序需要更新?

    3/任何其他情况?

    有任何疑问吗? 您的客户是否使用标准方法?

    谢谢你

    Ronan

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

    尊敬的 Ronan:

    回答这个问题并不简单、因为它在很大程度上取决于您提到的所有软件的配置以及使用 SSU 时的总体目标(例如,仅用于存储器分区,或者如果您需要阻止对 JTAG 的调试访问,或者您关心闪存更新权限等)。

    启动器(其目标是确定要启动哪个软件)、加载器(其目标是下载/更新应用软件)、生产软件(其主要目标是在产品生产过程中处理测试)以及可在项目生命周期内更新的应用软件。

    是否可以将启动器视为“引导管理器“类型的软件、将加载器视为普通的引导加载程序?

    我不太熟悉您可能认为您的“生产软件“。

    1/ SECCFG 应该一次配置一次、以允许执行启动器、加载器和生产软件、并允许进入应用程序、然后应用程序重新配置 SSU 以满足应用程序的需要?
    如果这种解决方案是可行的、它有什么限制(如果有的话)?

    在生产 SECCFG 扇区期间、需要作为任何其他闪存(编程/数据)进行编程。 复位或 POR 发生后、在 SECCFG 中配置的设置将生效。 SSUMODE 用于整个器件。 这意味着、如果器件设置为 SSUMODE2 或 SSUMODE3、则器件上的任何固件都需要具有对器件上使用的任何资源(即外设/RAM/闪存)的适当访问权限。 我们在 SDK 中有一个很快发布的示例、该示例利用 SSU 设置两个引导加载程序。 它可以作为在有多个代码库/工程时设置 SSU 的参考。

    请注意、在 SSUMODE3 中、通过 JTAG 进行的调试会自动关闭且闪存更新权限生效(只有一个 CPU 和一个链路可以更新闪存)。 对于为固件更新而执行的任何闪存更新或在应用程序执行期间、需要考虑这一点。

    2/ SECCFG 应配置为执行所有软件(如此配置以满足应用程序需求)、因此在更新应用程序以满足应用程序的需求时需要由加载程序进行更新?

    同样、非常依赖于您的最终目标在安全和安保方面。 如果您要更改应用程序并需要更改 APR/LINK 等设置、则是的、在更新应用程序时也需要更新 SECCFG。

    3/任何其他情形?

    您是否也在使用 HSM? 如果您计划在闪存更新和调试方面同时使用 HSM 和 SSU、可能还需要考虑其他因素。

    您有建议吗? 您的客户是否使用标准方式?

    使用 SSU 时、每个客户的软件和目标都有不同的结构、因此没有“单向“方法。 我是否可以建议我们拨打电话、以便我更深入地了解您的特定用例、并且我们可以讨论可能需要考虑的任何问题?

    此致、
    Marlyn

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

    您好、Marlyn、

    感谢您的回答。

    关于术语:
    -启动器:是的,我在想一个引导管理器
    -加载器:是的,我在考虑一个标准的引导加载程序
    -生产软件:这通常是在生产线上用于验证产品的软件

    特性:
    -我们想在生产中阻止 JTAG
    -如果没有 FOTA、只有引导加载程序应该写入程序闪存
    -但我们可能需要在一些项目上使用 FOTA(我想在这种情况下,应用程序也需要写入程序闪存)
    -当然,我们需要存储器分区,但通常我们只在应用程序中实现 MPU
    -我们可能最终需要 HSM 在很少的用例

    您是否有一个可以帮助我们做出选择的文档?

    此外、进行调用也是有益的。 但是、我们将在 5 月底前不能提供。 我会尽快回来给你,只要我知道更多.

    感谢您的支持。

    Ronan

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

    尊敬的 Ronan:

    感谢您对术语的进一步澄清和对您的特定功能需求的更多见解。

    特性:
    -我们想在生产中阻止 JTAG
    -如果没有 FOTA、只有引导加载程序应该写入程序闪存
    -但我们可能需要在一些项目上使用 FOTA(我想在这种情况下,应用程序也需要写入程序闪存)
    -当然,我们需要存储器分区,但通常我们只在应用程序中实现 MPU
    -我们最终可能需要 HSM 在极少的用例

    您的应用是否完全使用数据闪存?

    对于 FOTA、我已经看到闪存更新由引导加载程序本身处理、而不是由应用程序处理。

    为了保护存储器、SSU 的目的是预先完成存储器分区配置、因此在运行时不需要根据代码执行重新配置存储器区域。  

    您是否有一个可以帮助我们进行选择的文档?

    否、目前我们的主要文档集如下。 根据每个工程的功能集/要求、SECCFG 的解决方案可能看起来有所不同、但这完全取决于用户如何实现其软件结构。

    此外、进行呼叫也是有益的。 但是、我们将在 5 月底前不能提供。 我会尽快回来给你,只要我知道更多。

    当然不用担心、我可以在此帮助澄清有关使用 SSU 或设置 SSU 以实现特定目标的任何问题。

    此致、
    Marlyn