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.

读写eCAN的RAM时,不能使用memcpy



在28335上,把eCAN的mailbox当做普通RAM来用。

直接对地址进行读写很正常,使用memcpy拷贝一个字节也没问题,但是如果长度大于两个写入不成功,会把ram全部清零。

代码如下:

int* from=(int*)0x6240;

int* des =(int*)0x6300;

// 直接写地址,没有问题

*(Uint16*)(0x6240) = 0x00;

*(Uint16*)(0x6241) = 0x11;

*(Uint16*)(0x6242) = 0x22;

*(Uint16*)(0x6300) = 0xAB;

*(Uint16*)(0x6301) = 0xCD;

*(Uint16*)(0x6302) = 0xEF;

memcpy(des, from,1);  // 只拷贝一次也正常

   MOV   @AL,*(0:0x6240)

   MOV   *(0:0x6300),@AL

   memcpy(des, from,3); // 拷贝多个使目标地址清零

   MOVL   XAR4,#0x006300

   MOVL   XAR7,#0x006240

   RPT    #2

||  PREAD  *XAR4++,*XAR7

请高手帮忙解答下这是怎么回事?谢谢!