完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在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 请高手帮忙解答下这是怎么回事?谢谢! |
|
相关推荐
6 个讨论
|
|
韩程瑞1 发表于 2018-10-29 18:42 楼主你好! 按你的描述测了一下,确实使用memcpy后会将操作的相应的mailbox RAM地址清零。其实写一个字节也会出问题,只是因为你写的是0,所以看不出来,以为写成功了。 我试了一下用下面的方法来做,搬20字也没有问题,而MemCopy()函数在附件中有。 Uint16* from=(Uint16*)0x6240; Uint16* des=(Uint16*)0x6300; MemCopy(from, from+20,des1); |
|
|
|
|
|
szbliy 发表于 2018-10-29 19:27 memcpy()函数时ccs的内嵌函数,它的反汇编程序中有一条指令只能访问程序空间,而ecan寄存器属于数据空间,因此用memcpy()是不能对PF0,PF1,PF2访问的。另外,由于RAM和FLASH即可以是数据空间,也可以是程序空间,所以memcpy()在这区域没有问题。 - ERIC |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
665 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
591 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1045 浏览 1 评论
726 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
519 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
153浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
119浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
122浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
120浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
163浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 09:19 , Processed in 2.077954 second(s), Total 60, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号