工具/软件:
我正在尝试在 AutoSAR 工程中使用 SSU、应该将所有工程文件添加到中 代码和数据-段 、因为 SSU 需要代码 绑定才能链接。 还是有简单的方法?
此外、在程序执行期间、我是否可以通过软件更改 APR 中 LinkID 开始、结束、访问寄存器的值?
谢谢。
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.
工具/软件:
我正在尝试在 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]
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