工具/软件:
您好:
我正在 使用 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