工具与软件:
团队成员、您好!
我想要在运行时通过 IPC 使用 RPmsg 加载或关闭所有内核或特定内核时、测试 CPU 负载或消耗的最大电流。 Kinldy 告诉我如何在运行时实现这一点?
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.
工具与软件:
团队成员、您好!
我想要在运行时通过 IPC 使用 RPmsg 加载或关闭所有内核或特定内核时、测试 CPU 负载或消耗的最大电流。 Kinldy 告诉我如何在运行时实现这一点?
Tarun、您好!
感谢您的耐心、
是的、我们使用的是 RPMSG IPC。 将来自 A72内核的命令发送到所有其他内核以进行睡眠和唤醒。
其他内核、例如8xR5F 和4xC7xx 内核。
用例是、我们必须测试 CPU 负载以及 EMC 测试中的温度和电流测量。
我们必须打开 A72中的其他内核、在负载测试完成时、我们必须将内核置于睡眠状态。 因此、通过 RPmsg、我们必须唤醒内核并将其置于睡眠状态。
此致:
示例
您好!
是的、您可以访问 software-dl.ti.com/.../Foundational_Components_IPC_J784S4.html
此致
Tarun Mukesh
您好!
请尝试执行 echo stop >/sys/class/remoteproc/remoteproc */状态。 在最新的 SDK 10.1上试用
:/sys/class/remoteproc/remoteproc3 echo stop > state
不要这样做。
echo stop >/sys/class/remoteproc/remoteproc3/state.
该内核的远程处理器详细信息是动态的、您可能需要验证"head /sys/class/remoteproc/remoteproc */name"
此致
Tarun Mukesh
Tarun、您好!
我已经厌倦了获取远程处理器头的详细信息、
root@j784s4-EVM:~# 标题/sys/class/remoteproc/remoteproc */名称
=>/sys/class/remoteproc remoteproc0 /name <=
5c00000.r5f
=>/sys/class/remoteproc remoteproc1 /name <=
64800000.dsp
=>/sys/class/remoteproc 远程进程10 /name <=
41000000.r5f
=>/sys/class/remoteproc remoteproc2 /name <=
5d00000.r5f
=>/sys/class/remoteproc 远程进程3 /name <=
5e00000.r5f
=>/sys/class/remoteproc remoteproc4 /name <=
5f00000.r5f
=>/sys/class/remoteproc remoteproc5 /name <=
5900000.r5f
=>/sys/class/remoteproc 远程过程6 /name <=
5a00000.r5f
=>/sys/class/remoteproc remoteproc7 /name <=
65800000。DSP
=>/sys/class/remoteproc 远程进程8 /name <=
668000.dsp
=>/sys/class/remoteproc remoteproc9. /name <=
67800000.dsp
我试图停止远程内核3 > 远程进程3 = 5e00000.r5f
root@j784s4-EVM:~# echo stop >/sys/class/remoteproc/remoteproc3/state
-sh: echo:写错误:参数无效
仍然显示相同的错误。
您好!
您正在运行的命令
[报价 userid="595057" url="~/support/processors-group/processors/f/processors-forum/1468141/tda4vh-q1-tda4vh-q1-processor-sdk-j784s4-tda4vh-q1-is-it-possible-to-bootup-and-sleep-and-wakeup-from-sleep-of-the-r5f-and-c7x-cores-during-runtime/5687443 #5687443"]rpmsg_char_simple -r3 -n3这适用于 MCU2_1内核。
您可以参阅 https://git.ti.com/cgit/rpmsg/ti-rpmsg-char/tree/include/rproc_id.h。
对于 MCU3_0、它为"rpmsg_char_simple -r 4 -n 3"
[报价 userid="595057" url="~/support/processors-group/processors/f/processors-forum/1468141/tda4vh-q1-tda4vh-q1-processor-sdk-j784s4-tda4vh-q1-is-it-possible-to-bootup-and-sleep-and-wakeup-from-sleep-of-the-r5f-and-c7x-cores-during-runtime/5687448 #5687448"]我们将在中运行 FreeRTOS 5e00000.r5f [报价]这是 MCU3_0内核、您可以参考该表
+--------------- +--------------- +--------------- +--------------- + |内核名称 RemoteProc 名称|说明 |固件文件名|+====== +======== +============ +============ + | C7x | 64800000。c7x | C7x 内核 | j784s4-C71_0-FW |+------- +--------------- +--------------- +--------------- + | C7x | 65800000.c7x | C7x core | j784s4-C71_1-FW |+------- +--------------- +--------------- +--------------- + | C7x | 6680000.c7x | C7x 内核 | j784s4-C71_2-FW |+------- +--------------- +--------------- +--------------- + | C7x | 67800000.c7x | C7x 内核 | j784s4-C71_3-FW |+------- +--------------- +--------------- +--------------- + | R5F | 41000000.r5f | r5f core (MCU 域)| j784s4-mcu-r5f0_0-fw |+/---- +--------------- +--------------- +--------------- + | R5F | 414000.r5f | r5f core(MCU domain )| j784s4-mcu-r5f0_1-fw | +------- +--------------- +--------------- +--------------- + | R5F | 5c00000.r5f | r5f core (main domain)| j784s4-main-r5f0_0-fw |+------- +--------------- +--------------- +--------------- + | R5F | 5d00000.r5f | r5f core (main domain)| j784s4-main-r5f0_1-FW |+------- +--------------- +--------------- +--------------- + | R5F | 5e00000.r5f | r5f core (main domain)| j784s4-main-r5F1_0-fw |+------- +--------------- +--------------- +--------------- + | R5F | 5f00000.r5f | r5f core (main domain)| j784s4-main-r5F1_FW |!----- +--------------- +--------------- +--------------- + | R5F | 5900000.r5f | r5f core (main domain)| j784s4-main-r5F2_0-fw |+------- +--------------- +--------------- +--------------- + | R5F | 5a00000.r5f | R5F core (main 域)| j784s4-main-r5F2_1-FW
您好!
我在您遵循的步骤中发现2个差异。
1)您正在使用 附加到所有固件(即自定义应用)的 Coreio_xxxxxx_release.xer5f、您可以使用 ipc_echo_test 示例而不是自定义应用程序进行检查吗?
远程处理器关闭并启动是启用的。在最新的 SDK 中的 ipc_echo_test 示例中、我不确定您的定制应用。
2)如前所述,rpmsg_char_simple 具有固定的远程 proc 编号,echo stop 命令具有动态 remoteproc
例如:
rpmsg_char_simple -r 4 -n 3、这里的4始终代表 MCU3_0
而当您运行命令 echo stop >/sys/class/remoteproc/remoteproc4/state 时,这个远程处理器号是动态的。 这次不是 MCU3_0、而是 MCU2_1 内核。
/sys/class/remoteproc/remoteproc4/name <=5d00000.r5f
您需要理解这一点、您不能关闭每个正在运行的内核。 只有使用 ipc_echo_test 时、才可以执行此操作。
此致
Tarun Mukesh
您好!
[报价 userid="595057" url="~/support/processors-group/processors/f/processors-forum/1468141/tda4vh-q1-tda4vh-q1-processor-sdk-j784s4-tda4vh-q1-is-it-possible-to-bootup-and-sleep-and-wakeup-from-sleep-of-the-r5f-and-c7x-cores-during-runtime/5690807 #5690807"]我很难理解一些概念
1. echo stop >/sys/class/remoteproc/remoteproc3/state
这里 remoteproc 如何识别..
from rproc_id.h
否 这是不正确的。这是我试图传达形式开始。
让我清楚地分解为2个步骤:
步骤1:
echo stop >/sys/class/remoteproc/remoteproc3/state
remoteproc*此编号是动态的、一旦您运行 标题/sys/class/remoteproc/remoteproc */名称 您将获得 remoteproc 详细信息列表的命令
根据 下表、您需要选择远程处理器编号。每次远程处理器编号都会更改
++------- +--------------- +--------------- +--------------- +
| Core Name | RemoteProc Name | Description | Firmware File Name |
+======== +======== +============ +============ +
| C7x | 64800000.c7x | C7x CORE | j784s4-C71_0-FW |
+--------------- +--------------- +--------------- +--------------- +
| C7x | 65800000.c7x | C7x CORE | j784s4-C71_FW |
+--------------- +--------------- +--------------- +--------------- +
| C7x | 66800000.c7x | C7x CORE | j784s4-C71_2-FW |
+--------------- +--------------- +--------------- +--------------- +
| C7x | 67800000.c7x | C7x CORE | j784s4-C71_3-FW |
+--------------- +--------------- +--------------- +--------------- +
| R5F | 41000000.r5f | R5F CORE (MCU 域)| j784s4-mcu-r5f0_0-FW |
+--------------- +--------------- +--------------- +--------------- +
| R5F | 414000.r5f | R5F CORE (MCU 域)| j784s4-mcu-r5f0_1-FW |
+--------------- +--------------- +--------------- +--------------- +
| R5F | 5c00000.r5f | R5F core (main 域)| j784s4-main-r5f0_0-FW |
+--------------- +--------------- +--------------- +--------------- +
| R5F | 5d00000.r5f | R5F core (MAIN 域)| j784s4-main-r5f0_1-FW |
+--------------- +--------------- +--------------- +--------------- +
| R5F | 5e00000.r5f | R5F core (main 域)| j784s4-main-r5F1_0-FW |
+--------------- +--------------- +--------------- +--------------- +
| R5F | 5f00000.r5f | R5F core (main 域)| j784s4-main-r5F1_FW |
+--------------- +--------------- +--------------- +--------------- +
| R5F | 5900000.r5f | R5F core (MAIN 域)| j784s4-main-r5F2_0-FW |
+--------------- +--------------- +--------------- +--------------- +[/报价]第2步:
当您使用 rpmsg_char_simple 时、每次远程处理器详细信息都是静态和固定的。 无需在此处查看远程处理器详细信息。 它将直接从 https://git.ti.com/cgit/rpmsg/ti-rpmsg-char/tree/include/rproc_id.h 获取。
回波停止和 rpmsg_char_simple 都有不同的分配。 一种使用动态、另一种使用静态。请勿将这两者混合。
此致
Tarun Mukesh
您好!
您可以按照以下 e2e 的说明禁用相应的内核。
您无法禁用 MCU1_0、因为它上正在运行 DM (设备管理器)。
此致
Tarun Mukesh
e2e.ti.com/.../quote]Tarun、您好!
我在这里有疑问、在运行时我们可以更改 k3-j784s4-evm.dts 吗?
在这里、如下所示、状态已禁用、我假设现在特定内核已禁用?
&C71_2{
-状态="正常";
+ status ="已禁用";
mboxes =<&mailbox0_cluster5 &mbox_C71_2>;
memory-region =<&C71_2_DMA_memory_region>、
<&C71_2_MEMORY_REGION>;为了启用该内核、我们将状态更改为"enabled"以启用特定的 C71_2内核。 ??
其中、
&C71_0{
.
MAYS =<& mailbox0_cluster4 &mbox_C71_0>;
memory-region =<&C71_0_DMA_MEMORY_REGION>、
<&C71_0_MEMORY_REGION>;
};&C71_1{
.
MAYS =<& mailbox0_cluster4 &mbox_C71_1>;
memory-region =<&C71_DMA_memory_region>、
<&C71_MEMORY_REGION>;
};
&C71_2{
.
MAYS =<& mailbox0_cluster5 &mbox_C71_2>;
memory-region =<&C71_2_DMA_memory_region>、
<&C71_2_MEMORY_REGION>;如何考虑这里的参数? 对于 R5F?
[报价]
您好!
动态无法更改 DTS 文件。 如果您需要停止内核、则需要像上述操作那样执行远程处理器平稳关机。
对于动态禁用内核的示例代码、您还有什么含义?
我已经分享了正确的步骤, ipc_echo_test 示例包含远程处理器平稳关机的步骤在之前共享的文档中提到。
对于 IPC_ECHO_TEST、我们在 TI EVM 上已经测试并成功运行。
您无法禁用 MCU1_0。 您需要在 MCU1_0上运行 DM (DM 处理 RM 和 PM 调用)、它始终作为 tispl.bin 的一部分加载。您可以为 MCU1_1执行 remoteproc 平稳关闭。如果您对 DM 处理还有其他问题、请提出另一个 TT。
此致
Tarun Mukesh
尊敬的 Tarun:
当我读取所有 remoteproc 名称时、这里是列表。

其中有 MCU1_0 - R5F_MCU0_0 | 41000000.r5f ->无法禁用和
但在列表中、我没有看到 MCU1_1 - R5F_MCU0_1 | 414000.r5f ->可以正常关机

您无法禁用 MCU1_0。 您需要在 MCU1_0上运行 DM (DM 处理 RM 和 PM 调用)、它始终作为 tispl.bin 的一部分加载。您可以为 MCU1_1[/QUOT]执行 remoteproc 正常关闭如您所述、我们无法禁用 MCU1_1 - R5F_MCU0_1 | 414000.r5f
当我尝试
对该数据进行 IPC 回显时、我尝试回显 mcu1_1 - R5F_MCU0_1、i 错误及其给我带来的这个错误。
同时我也尝试回声 MCU1_0-R5F_MCU0_1 我能够收到回复。
root@j784s4-EVM:~# rpmsg_char_simple -r 0 -n 3.
创建了 Endpt 器件 rpmsg-char-0-1268、FD = 4端口= 1025
在 rproc id 0上使用 rpmsg 设备 rpmsg-char-0-1268交换3条消息...发送消息#0:你好,那里0!
收到的消息#0:往返延迟(usecs)= 134610
你好!
发送消息#1:您好!
收到的消息#1:往返延迟(usecs)= 87280
您好!
正在发送消息#2:您好!2!
收到的消息#2:往返延迟(usecs)= 78385
你好!在 rpmsg-char-0-1268上成功传递了3条消息
测试状态:通过
但当我尝试禁用时 MCU1_0 内核.
root@j784s4-EVM:~# echo stop >/sys/class/remoteproc/remoteproc0/state
-sh: echo:写错误:参数无效>> 这是正常的。由于 DM 正在运行、我们无法进行删除。
但当科尔 e MCU1_1 -R5F_MCU0_1 | 414000.r5f 它本身未在列表中列出
但在 "ls -l /lib/firmware /"命令中、我收到了这个错误、
…
lrwxrwxrwx 1根根2012年4月28日 j784s4- mcu-r5f0_1 - FW ->/usr/lib/firmware/ti-ipc/j784s4/ipc_echo_test_mcu1_1_release_strip.xer5f
lrwxrwxrwx 1根根目录79 Apr 28 2022 j784s4- mcu-r5f0_1 - fw-sec ->/usr/lib/firmware/ti-ipc/j784s4/ipc_echo_test_mcu1_1_release_strip.xer5f.signed上面的日志表示什么,以及如何进行平稳关机,如果 remoteproc id 不可用...
如果我回显测试、请在其中运行
root@j784s4-EVM:~# rpmsg_char_simple -r 1 -n 3.
_rpmsg_char_find_rproc:414000.r5f 未探测或不是 remoteproc!
无法创建端点设备:没有此类文件或目录
测试状态:失败
请告诉我。
你好。
我已观察到您的日志、并且我了解您的内核正在从 uboot 加载。
仅当内核由 Linux 加载、而不是 uboot 加载时、Remote proc 平稳关机才起作用。
因此、请更改 SD 卡引导文件夹中 uEnv.txt 文件的设置
#设置正确的 U-Boot 环境变量
dorprocboot=0
然后重新启动。
因此、内核会通过 Linux 加载、从而可以使用正常关断功能。
请首先对主域内核(MCU2_0、2_1等)尝试执行此操作。
[报价 userid="595057" url="~/support/processors-group/processors/f/processors-forum/1468141/tda4vh-q1-tda4vh-q1-processor-sdk-j784s4-tda4vh-q1-is-it-possible-to-bootup-and-sleep-and-wakeup-from-sleep-of-the-r5f-and-c7x-cores-during-runtime/5696227 #5696227"]但当我尝试禁用时 MCU1_0 内核.
root@j784s4-EVM:~# echo stop >/sys/class/remoteproc/remoteproc0/state
-sh: echo:写错误:参数无效
>> 这是正常的。由于 DM 正在运行、我们无法进行删除。
[报价]是的、对。 由于在其上运行 DM、因此无法禁用 MCU1_0。
[报价 userid="595057" url="~/support/processors-group/processors/f/processors-forum/1468141/tda4vh-q1-tda4vh-q1-processor-sdk-j784s4-tda4vh-q1-is-it-possible-to-bootup-and-sleep-and-wakeup-from-sleep-of-the-r5f-and-c7x-cores-during-runtime/5696227 #5696227"]但当科尔 e MCU1_1 -R5F_MCU0_1 | 414000.r5f 它本身未在列表中列出
[报价]默认情况下、在 SDK 10.1中、我们在锁步模式下运行 MCU1_0、您无法看到 MCU1_1、这就是为什么在您发出命令时没有 remoteproc 详细信息为您提供的原因 标题/sys/class/remoteproc/remoteproc */名称 锁定步进模式意味着只有 MCU1_0存在、但 MCU1_1不存在。
[报价用户 id="595057" url="~/support/processors-group/processors/f/processors-forum/1468141/tda4vh-q1-tda4vh-q1-processor-sdk-j784s4-tda4vh-q1-is-it-possible-to-bootup-and-sleep-and-wakeup-from-sleep-of-the-r5f-and-c7x-cores-during-runtime/5696227 #5696227"]lrwxrwxrwx 1根根72 4月28日2022年 j784s4- mcu-r5f0_1 - FW ->/usr/lib/firmware/ti-ipc/j784s4/ipc_echo_test_mcu1_1_release_strip.xer5f如果您使 MCU1_0进入拆分模式、则只会加载此 MCU1_1、并且 IPC_ECHO_TEST 上将开始运行内核。
如前所述、请使用主域内核尝试正常关断、这样您将更好地理解、并可以在拆分模式下对 MCU1_1执行此操作。
此致
Tarun Mukesh