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.

[参考译文] PROCESSOR-SDK-J784S4:Linux 应用程序中 CpuLoad 的跨核初始化流程和远程服务- A72到 R5F/C7x (位于裸机中)

Guru**** 2392095 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1498787/processor-sdk-j784s4-cross-core-initialization-flow-and-remote-service-for-cpuload-in-linux-application---a72-to-r5f-c7x-in-baremetal

部件号:PROCESSOR-SDK-J784S4

工具/软件:

您好:

 我正在 使用 TI SDK 为 J784S4平台开发 CPU 内核管理接口、并在验证从 Linux (A72)到远程裸机内核(如 R5F 和 C7X)的初始化流程方面需要您的支持。

硬件流程概述:

1.应用程序来源–Linux (A72):

我们运行用户空间 Linux 应用、初始化和管理所有其他内核(R5F、C6x、C7X 等)。

A72 Linux 进程负责触发这些内核上的存储器和远程服务设置。

2. 初始化 API–objInstance_cpu::Init():

我们已为每个内核实现了一个包装器 API 来处理初始化和远程服务设置。

以下是此方法中使用的示例逻辑:

注意:请参考 pdk_path/vision_apps/platform/j784s4/app_init.c

1.无 appCommonInit() API

Bool objInstance_cpu::Init()

appLogPrintf ("初始化核心:%s\n"、m_core->name.c_str());
appLogGlobalTimeInit

appLogInitPrmSetDefault

appFileIOInitPrmSetDefault

appFileIOWrInit

appMemInit();

m_ipcInitialized = true;

返回 true;
}

2.使用 appCommonInit() API

Bool objInstance_cpu::Init()

appLogPrintf ("初始化核心:%s\n"、m_core->name.c_str());

appCommonInit();
}



4、核心详情管理:

每个内核都有一个跟踪结构、其中包括:

1. ipc_cpu_id 2. 名称3.is_enabled 4. LOAD_ALLOWED

这些寄存器用于从 Linux 动态控制启用/禁用操作。

在日志中观察到的问题:

我们会遇到不一致的行为和初始化失败、具体取决于我们如何调用初始化序列。 我们的日志中记录了三个主要问题:

1.未找到 virtio 设备:

   出现错误:未找到 CPU x 的 virtio 设备(IPC 失败)

2.未检测到 RemoteProc:

   错误:CPU x 的远程 proc 不可用

3. TX 通道故障:

   错误:无法为远程内核创建 TX 通道

无论我们遵循全局初始化路径(appCommonInit、appGlobalInit 等)还是直接在 objInstance_cpu::Init ()内尝试本地化初始化、都会出现这些问题。

需要澄清:

使用 SDK 基础设施从 Linux 初始化远程内核的正确顺序是否正确?

在为裸机内核调用 appRemoteServiceInit()之前、我们是否需要额外的内存注册或同步?

从 Linux 用户空间动态禁用和重新启用这些内核时、是否存在任何已知问题或限制?


我们附上了相关的源文件和日志以供参考。

期待您的指导和 clarification.e2e.ti.com/.../log_5F00_with_5F00_commoninit.txte2e.ti.com/.../log_5F00_without_5F00_commonInit.txt

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

    您好、

    如果您使用的是 vision_apps 固件、请先运行 vision_apps_init。 sh 脚本?

    另外还使用了哪个版本的 SDK?  

    此致、

    Keerthy  

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

    尊敬的 Keerthy:

     SDK 版本为 pdk_j784s4_09_02_00_30。 请问 这个 vision_apps_init.sh 脚本的 src 代码位置是什么?

    谢谢。此致

    Jocund

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

    尊敬的 Joucund:

    remoteService 实用程序基于 FreeRTOS 构建。 您可能无法在裸机应用程序中直接使用它。

    RemoteService 使用 IPC 在远程内核之间进行通信。

    您必须参考该 PDK IPC 库并编写您自己的实现。

    首先、请参阅$(psdkra)/pdk_j784s4_09_02_00_30/packages/ti/drv/ipc/examples/common/us/main_bareMetal.c 中提供的 ipc_echo_test 示例 src

     SDK 版本为 pdk_j784s4_09_02_00_30。 我可以知道 这个 vision_apps_init.sh 脚本的 src 代码位置吗?

    您可以在/opt/vision_apps 中的 EVM 中找到 vision_apps_init.sh。

    此致、
    Gokul