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.

[参考译文] AM62A7:有关 HSM 安全代理的问题

Guru**** 2463330 points
Other Parts Discussed in Thread: AM62P

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1462197/am62a7-question-regarding-hsm-secure-proxy

器件型号:AM62A7
主题中讨论的其他器件:AM62P

工具与软件:

尊敬的 TI:

我有2个与 AM62A 平台上的安全代理配置和 HSM 相关的问题:

  1. 在的安全代理线程分配表中SA3_SS0_SEC_PROXY_0、列出了 TIFS_HSM 和 HSM 的线程 ID、但在与 HSM 内核通信时、我找不到 DM 内核、MCU 内核或内核的线程 ID。

    同时、该hsm_ipc演示定义RX_THREAD_ID为9和TX_THREAD_ID8。

    使用这些宏定义访问 sproxy 寄存器会导致硬中止。 这些 ID 是另一个映射表的一部分吗? 如果是、您能否说明我可以在哪里找到该分配?

  2. 在表中、 TIFS_HSM 作为主机被列为sec_low_priority_rxsec_HSM_response_tx线程和线程。 为什么两个 TIFS_HSM 内核一起用作主机?  

此致、
Yang

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

    您好!

    1.这些分配由 TIFS 为 TIFS 与其他内核之间的通信定义。 对于 HSM 与其他内核的通信、HSM 代码本身定义了线程 ID 映射。

    对于 AM62A、映射在以下文件中定义: hsm/SR24drivers/sec_proxy/config/am62ax/sec_proxy_config_data.c src

    对于与 WKUP R5F 内核的通信、您会找到以下映射:

    • HSM -> WKUP R5F:TX ID 2 -> RX ID 9
    • WKUP R5F -> HSM:TX ID 8 -> RX ID 0

    这就是在 HSM IPC 示例中定义{RX|TX}_THREAD_ID 的方式。

    2. TIFS_HSM 只是单个 TIFS 内核的虚拟主机 ID。

    此致、

    Prashant

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

    您好 Prashant:

    谢谢您的支持、我们解决了 DM R5和 HSM 之间的 IPC 问题。 我们现在正在尝试将 MCU R5内核集成到 HSM IPC 通信中、因此需要一些指导。

    如何为 HSM IPC 配置 MCU R5内核? 我应该手动添加新配置、还是应该遵循预定义设置?

    当其他内核向 HSM 发送消息时、它们是否都使用相同的线程 ID 来接收 HSM、或者每个内核是否需要唯一的配置?

    感谢您的帮助。

    此致、  

    Yang

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

    Yang、

    在我回答这个问题之前、请先提供您在 MCU R5上运行的操作系统:

    1) 1)免费的 RTOS

    或者

    2) 2) AutoSAR

    谢谢

    Yogesh

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

    尊敬的  Yogesh:

    在开发过程中,我们在 MCU PLUS SDK 的 FreeRTOS 上运行,但客户端会将内容集成到 他们的环境中,该环境在 AUTOSAR OS 上运行。

    此致、

    Yang

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

    尊敬的 Yogesh:

    这个问题对我们来说非常紧迫。 非常感谢您向我们提供有关此问题的任何更新。

    谢谢!

    Yang

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

    很抱歉耽误你的时间。

    我没有时间进行测试、但您可以参考 HSM 维护包中的 AM62P 映射:

    • HSM -> MCU R5F:TX ID 2 -> RX ID 13
    • MCU R5F -> HSM:TX ID 12 -> RX ID 0

    如果您遇到任何问题、请告诉我。

    谢谢

    Yogesh

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

    Yogesh、

    我已经尝试过这种方法、但这种现象与 AM62A7完全相同:HSM 护理包-无法在 AM62Ax 上运行 HSM_IPC 示例-处理器论坛-处理器- TI E2E 支持论坛。
    我已将工程文件从 r5fss0-0_freertos 文件夹迁移到 mcu-r5fss0-0_freertos 、安全代理 ID 会根据您的回复更改。

    在这种情况下 (发送消息)、ththread_id 会修改为12。 在调试期间、我可以看到代码会在这里运行。  

    在这一行后、代码显示在此处:

    在此行后、它跳转到 HwiP_data_abort_handler() 位于中的函数  Hwip_armv7r_handlers_freertos.c.

    器件处于 HS-LVDS FS 状态。

    您能帮助澄清原因吗?

    此致、
    Yang

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

    您是否也将 ID 集成到了 HSM 包中?

    对于 AM62A、映射在以下文件中定义:hsm/quote  src drivers/sec_proxy/config/am62ax/sec_proxy_config_data.c[/quota]

    这仅配置 WKUP_R5F 和 A53内核的线程。 您需要手动配置 MCU R5F 内核的线程。

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

    请参阅以下 AM62A 和 AM62P 配置数据之间的差异、其中后者为 MCU R5F 配置了线程:

    --- ./hsm-care-package/hsm/src/drivers/sec_proxy/config/am62ax/sec_proxy_config_data.c	2024-02-13 15:47:08.000000000 +0530
    +++ ./hsm-care-package/hsm/src/drivers/sec_proxy/config/am62px/sec_proxy_config_data.c	2024-02-22 16:50:06.000000000 +0530
    @@ -1,11 +1,11 @@
     /*
      * System Firmware Source File
      *
    - * SoC configs for secure proxy for AM62AX device
    + * SoC configs for secure proxy for AM62PX device
      *
    - * Data version: 221107_151433
    + * Data version: 231011_130515
      *
    - * Copyright (C) 2021-2023 Texas Instruments Incorporated - http://www.ti.com/
    + * Copyright (C) 2024 Texas Instruments Incorporated - http://www.ti.com/
      * ALL RIGHTS RESERVED
      */
     
    @@ -31,73 +31,99 @@
     
     
     const struct secure_proxy_tx_thread_config soc_secure_proxy_tx_configurations[SOC_MAX_SPT_TX_CONFIG_INSTANCES] = {
    -	[AM62AX_MCU_SA3_SS0_SEC_PROXY_0_TX_HSM_LOW_PRIORITY_THR002_CONF028] =			{
    +	[AM62PX_MCU_SA3_SS0_SEC_PROXY_0_TX_HSM_LOW_PRIORITY_THR002_CONF026] =			{
     		.host_id		= HOST_ID_HSM,
     		.thread_id		= 2U,
     		.num_credits		= 8U,
     		.threshold		= 1U,
     		.evt_threshold		= SOC_SAFE_EVENT,
     		.evt_error		= SOC_SAFE_EVENT,
    -		.rx_thread_instance_id	= AM62AX_MCU_SA3_SS0_SEC_PROXY_0_RX_MCU_0_R5_0_HSM_SEC_LOW_PRIORITY_RX_THR013_CONF019,
    +		.rx_thread_instance_id	= AM62PX_MCU_SA3_SS0_SEC_PROXY_0_RX_MAIN_0_R5_0_HSM_SEC_LOW_PRIORITY_RX_THR013_CONF018,
     	},
    -	[AM62AX_MCU_SA3_SS0_SEC_PROXY_0_TX_MCU_0_R5_HSM_SEC_HSM_RESPONSE_TX_THR012_CONF029] =	{
    -		.host_id		= HOST_ID_MAIN_0_R5_0,
    +	[AM62PX_MCU_SA3_SS0_SEC_PROXY_0_TX_MAIN_0_R5_HSM_SEC_HSM_RESPONSE_TX_THR012_CONF027] =	{
    +		.host_id		= HOST_ID_WKUP_0_R5_0,
     		.thread_id		= 8U,
     		.num_credits		= 8U,
     		.threshold		= 1U,
     		.evt_threshold		= SOC_SAFE_EVENT,
     		.evt_error		= SOC_SAFE_EVENT,
    -		.rx_thread_instance_id	= AM62AX_MCU_SA3_SS0_SEC_PROXY_0_RX_HSM_RESPONSE_THR000_CONF018,
    +		.rx_thread_instance_id	= AM62PX_MCU_SA3_SS0_SEC_PROXY_0_RX_HSM_RESPONSE_THR000_CONF017,
     	},
    -	[AM62AX_MCU_SA3_SS0_SEC_PROXY_0_TX_MPU_0_A72_HSM_SEC_HSM_RESPONSE_TX_THR010_CONF030] =	{
    +	[AM62PX_MCU_SA3_SS0_SEC_PROXY_0_TX_MPU_0_A72_HSM_SEC_HSM_RESPONSE_TX_THR010_CONF028] =	{
     		.host_id		= HOST_ID_A53_0,
     		.thread_id		= 10U,
     		.num_credits		= 8U,
     		.threshold		= 1U,
     		.evt_threshold		= SOC_SAFE_EVENT,
     		.evt_error		= SOC_SAFE_EVENT,
    -		.rx_thread_instance_id	= AM62AX_MCU_SA3_SS0_SEC_PROXY_0_RX_HSM_RESPONSE_THR000_CONF018,
    +		.rx_thread_instance_id	= AM62PX_MCU_SA3_SS0_SEC_PROXY_0_RX_HSM_RESPONSE_THR000_CONF017,
     	},
    -	[AM62AX_MCU_SA3_SS0_SEC_PROXY_0_TX_HSM_LOW_PRIORITY_THR003_CONF031] =			{
    +	[AM62PX_MCU_SA3_SS0_SEC_PROXY_0_TX_HSM_LOW_PRIORITY_THR003_CONF029] =			{
     		.host_id		= HOST_ID_HSM,
     		.thread_id		= 3U,
     		.num_credits		= 8U,
     		.threshold		= 1U,
     		.evt_threshold		= SOC_SAFE_EVENT,
     		.evt_error		= SOC_SAFE_EVENT,
    -		.rx_thread_instance_id	= AM62AX_MCU_SA3_SS0_SEC_PROXY_0_RX_MCU_0_A72_0_HSM_SEC_LOW_PRIORITY_RX_THR011_CONF020,
    +		.rx_thread_instance_id	= AM62PX_MCU_SA3_SS0_SEC_PROXY_0_RX_MCU_0_A72_0_HSM_SEC_LOW_PRIORITY_RX_THR011_CONF019,
    +	},
    +	[AM62PX_MCU_SA3_SS0_SEC_PROXY_0_TX_HSM_LOW_PRIORITY_THR002_CONF030] =			{
    +		.host_id		= HOST_ID_HSM,
    +		.thread_id		= 4U,
    +		.num_credits		= 8U,
    +		.threshold		= 1U,
    +		.evt_threshold		= SOC_SAFE_EVENT,
    +		.evt_error		= SOC_SAFE_EVENT,
    +		.rx_thread_instance_id	= AM62PX_MCU_SA3_SS0_SEC_PROXY_0_RX_MCU_0_R5_0_HSM_SEC_LOW_PRIORITY_RX_THR013_CONF018,
    +	},
    +	[AM62PX_MCU_SA3_SS0_SEC_PROXY_0_TX_MCU_0_R5_HSM_SEC_HSM_RESPONSE_TX_THR012_CONF031] =	{
    +		.host_id		= HOST_ID_MCU_0_R5_0,
    +		.thread_id		= 12U,
    +		.num_credits		= 8U,
    +		.threshold		= 1U,
    +		.evt_threshold		= SOC_SAFE_EVENT,
    +		.evt_error		= SOC_SAFE_EVENT,
    +		.rx_thread_instance_id	= AM62PX_MCU_SA3_SS0_SEC_PROXY_0_RX_HSM_RESPONSE_THR000_CONF017,
     	},
     };
     
     const u16 soc_secure_proxy_rx_configurations_num = SOC_MAX_SPT_RX_CONFIG_INSTANCES;
     
     const struct secure_proxy_rx_thread_config soc_secure_proxy_rx_configurations[SOC_MAX_SPT_RX_CONFIG_INSTANCES] = {
    -	[AM62AX_MCU_SA3_SS0_SEC_PROXY_0_RX_HSM_RESPONSE_THR000_CONF018] =					  {
    +	[AM62PX_MCU_SA3_SS0_SEC_PROXY_0_RX_HSM_RESPONSE_THR000_CONF017] =					  {
     		.host_id			= HOST_ID_HSM,
     		.thread_id			= 0U,
     		.threshold			= 1U,
     		.evt_threshold			= 0x0002,
     		.evt_error			= 0x0000,
    -		.secure_proxy_instance_id	= AM62AX_SPROXY_IDX_SA3_SS0_SEC_PROXY_0,
    -		.ring_config_instance_id	= AM62AX_MCU_SA3_SS0_RINGACC_0_RING_0005_CONF_018,
    +		.secure_proxy_instance_id	= AM62PX_SPROXY_IDX_SA3_SS0_SEC_PROXY_0,
    +		.ring_config_instance_id	= AM62PX_SA3_SS0_RINGACC_0_RING_0005_CONF_017,
     	},
    -	[AM62AX_MCU_SA3_SS0_SEC_PROXY_0_RX_MCU_0_R5_0_HSM_SEC_LOW_PRIORITY_RX_THR013_CONF019] =			  {
    -		.host_id			= HOST_ID_MAIN_0_R5_0,
    +	[AM62PX_MCU_SA3_SS0_SEC_PROXY_0_RX_MAIN_0_R5_0_HSM_SEC_LOW_PRIORITY_RX_THR013_CONF018] =			  {
    +		.host_id			= HOST_ID_WKUP_0_R5_0,
     		.thread_id			= 9U,
     		.threshold			= 1U,
     		.evt_threshold			= SOC_SAFE_EVENT,
     		.evt_error			= SOC_SAFE_EVENT,
    -		.secure_proxy_instance_id	= AM62AX_SPROXY_IDX_SA3_SS0_SEC_PROXY_0,
    -		.ring_config_instance_id	= AM62AX_MCU_SA3_SS0_RINGACC_0_RING_0004_CONF_019,
    +		.secure_proxy_instance_id	= AM62PX_SPROXY_IDX_SA3_SS0_SEC_PROXY_0,
    +		.ring_config_instance_id	= AM62PX_SA3_SS0_RINGACC_0_RING_0004_CONF_018,
     	},
    -	[AM62AX_MCU_SA3_SS0_SEC_PROXY_0_RX_MCU_0_A72_0_HSM_SEC_LOW_PRIORITY_RX_THR011_CONF020] =		  {
    +	[AM62PX_MCU_SA3_SS0_SEC_PROXY_0_RX_MCU_0_A72_0_HSM_SEC_LOW_PRIORITY_RX_THR011_CONF019] =		  {
     		.host_id			= HOST_ID_A53_0,
     		.thread_id			= 11U,
     		.threshold			= 1U,
     		.evt_threshold			= SOC_SAFE_EVENT,
     		.evt_error			= SOC_SAFE_EVENT,
    -		.secure_proxy_instance_id	= AM62AX_SPROXY_IDX_SA3_SS0_SEC_PROXY_0,
    -		.ring_config_instance_id	= AM62AX_MCU_SA3_SS0_RINGACC_0_RING_0003_CONF_020,
    +		.secure_proxy_instance_id	= AM62PX_SPROXY_IDX_SA3_SS0_SEC_PROXY_0,
    +		.ring_config_instance_id	= AM62PX_SA3_SS0_RINGACC_0_RING_0004_CONF_019,
    +	},
    +	[AM62PX_MCU_SA3_SS0_SEC_PROXY_0_RX_MCU_0_R5_0_HSM_SEC_LOW_PRIORITY_RX_THR013_CONF018] =			  {
    +		.host_id			= HOST_ID_MCU_0_R5_0,
    +		.thread_id			= 13U,
    +		.threshold			= 1U,
    +		.evt_threshold			= SOC_SAFE_EVENT,
    +		.evt_error			= SOC_SAFE_EVENT,
    +		.secure_proxy_instance_id	= AM62PX_SPROXY_IDX_SA3_SS0_SEC_PROXY_0,
    +		.ring_config_instance_id	= AM62PX_SA3_SS0_RINGACC_0_RING_0004_CONF_020,
     	},
     };
    -