工具/软件:Code Composer Studio
我使用AM572X EVM根据以下URL测试IPC hello示例:processors.wiki.ti.com/.../AM572x
我创建了CCS项目“DSP1”并生成了DSP1.out文件。 此时,我将DSP1.out加载到DSP1内核,并将hello_dsp2.xe66加载到IPC数据包中到DSP2内核,然后我成功连接了这两个内核。
但是,我正在进行“DSP1”项目,该项目被稍微修改为“DSP2”,这次只是将对等项从“DSP2”更改为“DSP1”,并将DSP2.out加载到DSP2内核,但此时无法连接。
那么问题是什么呢? 我认为这可能是CCS调试地址问题,因为CCS在起始地址为0x80万时连接到DSP1核心DSP2核心。 如果是,如何修改我的程序,使DSP1核心上的起始地址为8C00_0000,而DSP2核心上的地址为8D00_0000?
这是我的DSP2.c:
/*
*========= HelloDsp2.c =========
*平台:DRA7XX_BIOS_elf
*/
/*包头文件*/
#include <XDC/std.h>
#include <XDC/cfg/globL.h>
#include <XDC/runtime / Diags.h>
#include <XDC/runtime / Error.h>
#include <XDC/runtime/Log.h>
#include <XDC/runtime /System.h>
#include <ti/IPC/IPC.h>
#include <ti/IPC/MessageQ.h>
#include <ti/IPC/MultiProc.h>
#include <ti/IPC/SharedRegion.h>
#include <ti/SysBIOS/BIOS.h>
#include <ti/SysBIOS/KNL/Task.h>
/*本地头文件*/
#include "../SYSCFG.h"
/*私人函数*/
void App_taskFxn (UArg arg0,UArg arg1);
/*定义应用程序角色*/
#define role_reader 1.
#define role_writer 2.
Int角色= role_reader;/*此处理器的角色*/
字符串对等端="DSP1";/*对等处理器的名称*/
/*
*========= 主====
*/
int main (int argc,char *argv[])
{
错误块EB;
task_Params taskParams;
log_print0 (Diags_entry,"main:-->");
/*创建主线程(在BIOS上主中未启用中断)*/
task_params_init(&taskParams);
taskParams.instance->name ="App_taskFxn";
taskParams.arg0 =(UArg) argc;
taskParams.arg1 =(UArg) argv;
taskParams.STACKSIZE = 0x1000;
ERROR_INIT(&E);
TASK_CREATE (App_taskFxn,&taskParams,&EB);
如果(Error_check (&EB)){
system_abort("main: failed to create application threads";
}
/*启动调度程序,这从不返回*/
BIOS_START();
/*永远不会来这里*/
log_print0 (Diags_exit,"main:<--");
返回(0);
}
/*
*========= app_taskFxn ==========
*/
void App_taskFxn (UArg arg0,UArg arg1)
{
INT状态;
UINT16 remoteProcId;
log_print0 (Diags_entry,"App_taskFxn:-->");
/*
*初始化IPC层
*/
状态= IPC_START();
如果(状态< 0){
system_abort("IPC_start failed\n");
}
remoteProcId = MultiProc_getid (对等);
执行{
状态= IPC_ATTATT(remoteProcId);
}同时((status <0)&&(status == IPC_E_NotReady));
}