器件型号:EVMK2H
工具/软件:Linux
我一直在使用 Processor SDK 中的 rmK2KC66A15LinuxDspClientTestProject (processor_sdk_rtos_k2hk _3_02_00_05和 processor-sdk-linux-rt-k2hk EVM-03.02.00.05)。 每次重新启动 Linux 后、我能够运行该示例一次、并获得正确、成功的输出。
但是,如果我 重置 DSP (对于0 1 2 3 4 5 6 7中的 DSP;执行 mpmcl 重置 DSP$DSP;完成), 则停止套接字<->MessageQ 代理任务(rmDspClientTest.out), 然后重新启动 Linux 资源管理器(pkill -9 rmServer.out); /usr/bin/rmServer.out global-resources.dtb server-policy.dtb -l linux-evm.dtb)、然后尝试重新启动 DSP 任务、CORE0控制台日志始终包含以下故障:
2个位于0x810000的资源条目
(小部分
*********** RM DSP+ARM DSP 客户端测试*********
(小部分
RM 版本:0x02020002
版本字符串:RM 版本:02.02.00.02:2016年12月13日:16:28:17
已初始化 RM_Client
核心0:-------------------------------------------------------
内核0:--- 静态初始化分配---
核心0:-实例名称:RM_Client -
核心0:-资源名称:QoS 群集-
内核0:-开始:0 -
内核0:-结束:0 -
内核0:-对齐:0 -
内核0:-
核心0:-通过-
核心0:-------------------------------------------------------
核心0:-------------------------------------------------------
内核0:--- 静态初始化分配---
核心0:-实例名称:RM_Client -
核心0:-资源名称:QoS 群集-
内核0:-开始:2 -
核心0:-结束:2 -
内核0:-对齐:0 -
内核0:-
核心0:-通过-
核心0:-------------------------------------------------------
核心0:-------------------------------------------------------
内核0:--- 静态初始化分配---
核心0:-实例名称:RM_Client -
核心0:-资源名称:QoS 群集-
内核0:-开始:1 -
核心0:-结束:1 -
内核0:-对齐:0 -
内核0:-
核心0:-已通过-拒绝:79 -
核心0:-------------------------------------------------------
核心0:-------------------------------------------------------
内核0:--- 静态初始化分配---
核心0:-实例名称:RM_Client -
核心0:-资源名称:AIF-队列-
内核0:-开始:525 -
核心0:-结束:525 -
内核0:-对齐:0 -
内核0:-
核心0:-通过-
核心0:-------------------------------------------------------
核心0:-------------------------------------------------------
内核0:--- 静态初始化分配---
核心0:-实例名称:RM_Client -
核心0:-资源名称:AIF-队列-
内核0:-开始:525 -
核心0:-结束:525 -
内核0:-对齐:0 -
内核0:-
核心0:-通过-
核心0:-------------------------------------------------------
核心0:正在创建 RM 启动任务...
内核0:正在启动 BIOS...
在61上使用主机注册 rpmsg-proto:rpmsg-proto 服务
[T=0x00131f5d] ti.SysBIOS.KNL.Semaphore:错误:第202行:断言失败:a_badContext:调用上下文错误。 必须从任务调用。
TI.SYSBIOS.KNL.Semaphore:第202行:断言失败:a_badContext:调用上下文错误。 必须从任务调用。
xdc.runtime.Error.raise:终止执行
使用 CodeComposer 调试器进行分解后、我会看到以下堆栈跟踪:
exit.c:128 0x008BB344处的 abort()
xdc_runtime_System_abort__E (char *)() at System.c:101 0x008BAE90
xdc_runtime_Error_PolicyDefault_E (struct xdc_runtime_Error_Block *、unsigned short、char *、int、unsigned int、 Error.c:165 0x008AAE28上的 int、int)()
xdc_runtime_Error_raiseX__E (struct xdc_runtime_Error_Block *、unsigned short、char *、int、unsigned int、 Error.c:115 0x008BC198上的 int、int)()
sassert.c:36 0x008B6928处的 xdc_runtime_assert_arc___i (unsigned short、char *、int、unsigned int)()
TI_SYSBIOS_KNL_Semaphore_Pend__E (struct ti_SysBIOS_KNL_Semaphore_Object *、unsigned int)(位于 semaphore.c:201 0x00897678
RPMessage_send (unsigned short、unsigned int、unsigned int、void *、unsigned short)()、位于 RPMessage.c:567 0x008913A4
sendMessage$14 (char *、char *、unsigned int、enum rpmsg_ns_flags)() at NameMap.c:81 0x008A59CE
TI_IPC_transports_TransportRpmsg_instance_init_E (struct ti_IPC_transports_TransportRpmsg_Object *、unsigned short、struct ti_IPC_transportRpmsg_Params *、struct XDC_RUNTIME_Error_Block *)() at TransportRpmsg.c:114 0x00108A8C
TI_IPC_transports_TransportRpmsg_create (unsigned short、struct ti_ipc_transports_TransportRpmsg_Params *、struct XDC_RUNITY_Error_Block *)() at DSP_client_pe66.c:25、540 0x008B5EEC
TI_IPC_TRANSFORS_TransportRpmsgSetup_attach_E (无符号短整型、void *)()、位于 TransportRpmsgSetup.c:75 0x008AFAA4
IpcMgr_ipcStartup () at IpcMgr.c:97 0x008A2830
在 DSP_CLIENT_PE66.c:3、638 0x008BA0C4处的 TI_SYSBIOS_BIOS_startFunc___I ()
在 dsp_client.c:1、009 0x0080FAE0处的 main (int、char *)()
_c_int00 () at boot.c:175 0x008C4C84 (发生错误:调试信息不指示返回地址)
此故障似乎与 IpcMgr_ipcStartup()功能有关。 当然、必须能够重新启动使用 IPC 的 DSP 应用、而无需完全重新启动 Linux?
Steve Williams