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.

[参考译文] F29H85X-SSU-EVM:有关 SOM 使用的问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1510648/f29h85x-som-evm-questions-about-ssu-usage

器件型号:F29H85X-EVM-EVM SOM

工具/软件:

我正在尝试在 AutoSAR 工程中使用 SSU、应该将所有工程文件添加到中 代码和数据-段 、因为 SSU 需要代码 绑定才能链接。 还是有简单的方法?

此外、在程序执行期间、我是否可以通过软件更改 APR 中 LinkID 开始、结束、访问寄存器的值?

谢谢。

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

    您好:

    Unknown 说:
    如果我将所有项目文件添加到中、我将尝试在 AutoSAR 项目中使用 SSU 代码和数据-段 、因为 SSU 需要代码 绑定才能链接。 还是有简单的方法?

    您计划使用哪种 SSU 模式? 如果使用 SSU 中的 LINK 和 STACK 功能、则所有代码都需要绑定到 LINK。 最简单的方法是通过每个链接的"Code & Data"部分包含文件。 出于好奇心、您的项目中有多少个文件?

    此外、在程序执行期间、我是否可以更改 LinkID 的 start、end、access register in APR、by software 的值?

    此处是否打算在程序执行期间更改权限? SECCFG (闪存中存储所有 SSU 设置的区域)仅在启动时加载。 程序执行期间对 SSU 权限的任何更改都不会在该程序执行期间生效。

    此致、

    Marlyn

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

    您好、Marlyn、
    对于第一个问题、我使用 SSU MODE2中的 LINK 和 STACK 功能。 此时我的工程中没有太多文件、但请考虑进一步了解、工程中可能会添加更多文件。 器件 应用程序模式中的自定义部分 ? 首先将所有函数代码添加到一个部分、然后将此部分添加到一种应用模式?

    对于第二个问题、我正在尝试满足 AUTOSAR 要求、这将阻止从同一操作系统应用程序中的所有其他任务/ISR 对不受信任应用程序的任务/类别2 ISR 的私有栈进行写入访问。
    我注意到在 TRM 10.2访问保护范围中、 访问保护寄存器在引导时加载、但之后可以通过以安全根权限运行的代码进行修改
    因此、我可以使用这一建议:
    1.使用2个 APR、APR1起始地址和结束地址都是任务的栈地址范围。 APR2起始地址和结束地址是当前正在运行的任务栈地址范围。 对于所有链路、APR 的两个访问都是 R/W。
    2. ARP2起始地址和结束地址将更改为当前正在运行的任务的栈地址范围,此时禁用 APR1 ,使当前任务只能读取和写入其所有者栈。
    3.任务终止时、禁用 APR2、启用 ARP1。 以便系统可以具有管理任务堆栈的访问权限。

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

    您好:

    对于第一个问题、我在 SSU MODE2中使用了链接和堆栈功能。 此时我的工程中没有太多文件、但请考虑进一步了解、工程中可能会添加更多文件。 器件 应用程序模式中的自定义部分 ? 首先将所有函数代码添加到一个部分、然后将该部分添加到一个应用模式?

    是的、有几种方法可以使用 SSU 工具将代码和数据映射到不同的 LINK (应用模块)。 一个是如前所述、您将文件作为链接的一部分包括、它会将该文件中的所有代码和数据与您为其包含的链接相关联。 另一种选择是为某个段分配代码和/或数据、并在应用模块中启用"Use Custom Section"、然后将该段添加到应用模块。 这两种方法也可以一起完成。 例如、如果您在 Link3中包含一个文件、但在该文件中有一个要与 LINK4关联的函数、则可以将该函数放在您定义的特定段中、然后将该段包含在 LINK4中。 如果不清楚、请告诉我、我很乐意进一步解释。  

    AUTOSAR 请求、该请求阻止从同一操作系统应用程序中的所有其他任务/ ISR 对不受信任应用程序的任务专用堆栈/类别2 ISR 的写访问。

    好的、为了确保我明白、在 AUTOSAR OS 应用程序中有不同的任务、这些任务都有一个私有栈。 要求这些任务的每个栈都需要与其他任务的栈隔离、以便不启用写入访问权限?

    [报价 userid="632760" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1510648/f29h85x-som-evm-questions-about-ssu-usage/5810164 #5810164"] 访问保护寄存器在引导时加载、但之后可以通过以安全根权限运行的代码进行修改 .

    是的、这是对的。 对于 APR、LINK2能够修改 APR 寄存器、除非 SECCFG 将其标记为锁定。  

    访问保护范围定义不能相互重叠。 该建议表明您的 APR2处于 APR1的范围之内、但这是不可能的。 配置将产生 APR 覆盖范围冲突的错误。我了解、目的是根据上下文禁用和启用 APR1和 APR2、但我不知道时间会起作用(即在操作系统必须计划新任务执行时"切换"APR)。 您如何知道哪个任务是当前的执行任务、是否有办法抢先了解这一点?

    您是否有计划如何使用 SSU 对操作系统应用程序进行分区的图形表示? 我很高兴能一起会面并讨论这一点、从而详细了解我们如何满足 AUTOSAR 要求。

    此致、

    Marlyn

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

    您好 、Marlyn、

    是的、有几种方法可以使用 SSU 工具将代码和数据映射到不同的链接(应用模块)。 一个是如前所述、您将文件作为链接的一部分包括、它会将该文件中的所有代码和数据与您为其包含的链接相关联。 另一种选择是为某个段分配代码和/或数据、并在应用模块中启用"Use Custom Section"、然后将该段添加到应用模块。 这两种方法也可以一起完成。 例如、如果您在 Link3中包含一个文件、但在该文件中有一个要与 LINK4关联的函数、则可以将该函数放在您定义的特定段中、然后将该段包含在 LINK4中。 如果不清楚、请告诉我、我很乐意进一步解释。  [/报价]

    很明显、我可以理解。

    好的、为确保我理解、在 AUTOSAR OS 应用程序中、任务不同、这些任务都有一个私有栈。 要求这些任务的每个栈都需要与其他任务的栈隔离、以便不启用写入访问权限?

    是的、您是对的。 有不同的任务、每个任务都有专用栈要求这些任务的每个栈都需要与其他任务的栈隔离、以便不启用写入访问权限。

    访问保护范围定义不能相互重叠。 该建议表明您的 APR2处于 APR1的范围之内、但这是不可能的。 配置将产生 APR 覆盖范围冲突的错误。

    好的、我想我只能将一个 APR 用于栈地址交换。 在任务运行之前、我会动态更改开始和结束寄存器。

    我明白、目的是根据上下文禁用和启用 APR1和 APR2、但我不知道时间会起作用(即在操作系统必须计划新任务执行时"切换"APR)。 您如何知道哪个任务是当前的执行任务、是否有办法抢先了解此任务?

    是的、 在 OS 必须安排新任务执行时、我们有一个 MPU 开关操作。

    非常感谢、我很高兴在稍后的会议中与您讨论这些问题。

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

    我将操作系统文件包括到项目中、但生成错误 occours、我使用了操作系统文件中的函数。 为什么会出现这个问题?

    请参阅下图。

    此致、

    Zhang Yu

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

    您好、张:

    您看到 Os_Alarm 的错误吗?

    这是我看到其中包含的第一个操作系统文件、但我想知道您是否看到链接器找不到该文件的构建错误。

    此致、

    Marlyn

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

    我尝试第二种方法、使用  应用程序模式中的自定义部分 但它也会导致生成错误。 并且.map 文件中没有操作系统段、操作系统函数地址也不正确。

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

    您好、张:

    使用第一种方法(包括 LINK2中的所有操作系统文件)、您能否删除文件扩展名?

    例如、将其改为仅 OS_ALARM、而不是 OS_ALARM_c。 对包含的所有文件执行此操作。

    此致、

    Marlyn

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

    是的、我犯了这个错误、但仍然有一些错误、操作系统函数没有填充到 LINK2_CODEAPR_FLASH 中。

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

    您好、张:

    您能否增加 RAM 中链路2闪存和 RW 数据的大小?

    这可以通过安全根模块配置中的"Code & Data - Sizes"部分来完成、如下所示:

    此致、

    Marlyn

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

    尊敬的 Marlyn:

    我增加了  RAM 中链路2闪存和 RW 数据的大小。 构建问题正常。

    但 现在无法将 SSU_ex1_mode2.out 下载到闪存中、请查看下面中显示的错误。

    我已执行  ‘允许 NonMain 闪存 擦除..."  选项。  

    此问题可能是由什么引起的?

    此致、

    Yu Zhang

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

    Yu 您好:

    我是否可以建议先对默认 SECCFG 重新编程?

    请加载以下.out: c:\ti\f29h85x-sdk_1_01_00_00\source\defseccfgbin\default_seccfg_bankmode_0_ssumode1.out

    然后、在器件上执行 POR。 然后、正常为您的工程加载.out (之后使用 POR)。 如果之后仍然看到闪存问题、请告诉我。  

    此致、

    Marlyn

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

    此方法效果很好、输出文件可成功加载到电路板中。

    谢谢你。

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

    尊敬的 Marlyn:
    我根据 SSU_ex1_mode2演示添加了一个属于 LINK7和 STACK2的应用模块3、操作系统代码属于 LINK2_CODEAPR_FLASH。
    OS code call.port @_c29_secure_LP_memset、它是常用代码属于 LINK3、CURRLINK 应为 LINK3、但剂量不会改变。
    在添加应用模块3之前、当程序在同一位置运行(操作系统代码 call.port @_c29_secure_lp_memset)时、CURRLINK 将更改为 LINK3。
    如果 CURRLINK 剂量未更改、APR 访问将无效。
    可能是什么原因导致的?

    此致

    Yu Zhang

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

    尊敬的 Yu:

    感谢您分享最新问题。 当我对您发送的项目有疑问时、让我们通过电子邮件继续讨论。 适当时、我们可以在 E2E 上继续讨论。  

    此致、

    Marlyn

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

    尊敬的 Yu:

    只需重新发布此问题与 CURRLINK 已解决的信息。 加载 default_seccfg_bankmode_0_ssumode1.out 后会看到此行为。

    加载工程后、CURRLINK 将更新为正确的链接。

    此致、

    Marlyn