在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
请高手帮忙解答下这是怎么回事?谢谢!