这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ZLGARM,LPC,SRAM 请问ZLGARM,LPC的内部SRAM里面有回写

共2条 1/1 1 跳转至

ZLGARM,LPC,SRAM 请问ZLGARM,LPC的内部SRAM里面有回写缓冲,编译器怎么作这个呢?

院士
2006-09-17 18:14:16     打赏
ZLGARM,LPC,SRAM 请问ZLGARM,LPC的内部SRAM里面有回写缓冲,编译器怎么作这个呢?



关键词: ZLGARM     请问     内部     里面     回写     缓冲     编译器    

院士
2006-12-22 22:43:00     打赏
2楼
问    请问,LPC22XX的内部SRAM里面有回写缓冲,编译器怎么操作这个呢?比如,我定义了一个unsigned char a,b,a,b均为一变量,我的程序只会这样写a=b,这样可以把b的数据传给a吗?按照LPCSRAM说明应该是有问题的?
    知道答案请帮助,谢谢! 1: 顶 2: 和编译器无关。编译器不知道,也不用知道 3: 对,我也觉得IDE不知道,所以为了写LPCSRAM,是不是要多写一次对,我也觉得IDE不知道,所以为了写LPCSRAM,是不是要多写一次,请大家明示! 4: ZLGARM回答一下。   还有一个问题,内部SRAM和外部SRAM的速度差别大吗?内部SRAM读写是不是一个CLK搞定呢? 5: 最后一次顶!! 6: ??写缓冲的意思:就是最后一次写入并没有写入到RAM中,只是写入到缓存中.
这么做的原因看数据手册.
这个应当好理解,也很好验证.你往某个RAM写入一个数,然后复位,你可以看到数据并没有真正写进去.

我想令你困惑的原因是

比如,我定义了一个unsigned char a,b,a,b均为一变量,我的程序只会这样写a=b,这样可以把b的数据传给a吗?按照LPCSRAM说明应该是有问题的?

b = 0x1234; //当然,这个数还没有写入到RAM,只在缓冲中.
a = b;     // 同样,读b的值也是不是从RAM读的,是读的缓冲.*注1
           // 另:在好的编译中,连读缓冲都不必要,利用暂存在寄存器的内容就可以了.

注1: 实际上,写缓冲包括2个部分,地址和值.只有你读RAM的地址和写缓冲的地址相同(读最后一次写入的数据,都是读的缓冲,而不是RAM);
b = 0x1234;
//.... //一些操作(没有写RAM)
a = b; // 读的是缓冲
//.... // 又一些操作(没有写RAM的动作发生)
c = b; // 还是读的缓冲

话外:菲利普的文档确实不怎么样,很多模棱两可的地方. 7: 谢谢!   知道了,谢谢!
   总结,也就是正常操作,用户感觉不到这个过程.

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]