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.

F28M35H52C1上电启动问题,IPC 消息RAM当普通可读写和只读RAM使用



IPC 消息RAM当普通可读写和只读RAM使用,C28,M3各自以这两块RAM当共享RAM用。上电启动异常。现象如下:

1、仿真器复位,只要M3,C28都CONNECT,程序运行正常;

2、仿真器复位,C28断开,DISCONNECT; M3程序在加载到操作IPC消息RAM的任务时复位,重新启动,循环如此;

3、上电启动因为无法监控,但现象应该和2一样;

4、还有一个区别就是,之前程序是用SYS BIOS,没有加以太网,相同程序结构,一切正常。之后重新建立项目,采用TI RTOS,增加以太网部分,就出现上述问题。但如果在C28进入MAIN,初始化IPC部分RAM,进入一死循环,则M3程序工作正常,初步定位问题到IPC消息RAM的操作上。

想问的问题是:IPC 消息RAM当普通可读写和只读RAM使用,C28,M3各自以这两块RAM当共享RAM用。这样IPC用法要注意什么,两内核不能独立工作吗?(排除RAM里数据引起程序出错问题)

以下是M3和C28共用的子函数,各自程序里定位地址后,各自IPC 消息RAM当普通可读写和只读RAM使用。为了上以太网,省内存,想把这两块利用起来,64K共享内存没有分配,默认分配给M3用

/M3C28 RAM地址
#define CPU_M3 1
#define CPU_C28 2
#define CTOM_RAM_M3 0x2007F000
#define MTOC_RAM_M3 0x2007F800
#define CTOM_RAM_C28 0x3F800
#define MTOC_RAM_C28 0x3FC00

/*-----------------------------------------------------------------------------
* 函数名:
* 功 能:IPC共享RAM初始化
* 参 数:数据结构指针定位
* 返回值:
* 备 注:
*------------------------------------------------------------------------------*/
void Init_IpcRam(unsigned char cpu)
{
//定位地址
if(cpu == CPU_M3)
{
gp_RamCtoM = (C28TOM3RAM *)CTOM_RAM_M3;
gp_RamMtoC = (M3TOC28RAM *)MTOC_RAM_M3;
memset(gp_RamMtoC,0,sizeof(M3TOC28RAM));
gp_RamMtoC->startAdd = 1;
gp_RamMtoC->spAdd = 1;
gp_RamMtoC->spDelay = 0;
}
else if(cpu == CPU_C28)
{
gp_RamCtoM = (C28TOM3RAM *)CTOM_RAM_C28;
gp_RamMtoC = (M3TOC28RAM *)MTOC_RAM_C28;
memset(gp_RamCtoM,0,sizeof(C28TOM3RAM));
}
}