请教2407外扩ram和flash的问题!

问题如下:

一直有个疑问,在本站也看到不少关于外扩flash和ram的问题。首先,如果编写的程序大于了32k,2407就放不下了,看见有人说外扩ram可解决,这个怎么解决呢?程序只能烧写到flash里去阿。ram的内容掉电之后就丢失了,所以我认为:程序ram只有两个用途,一是仿真时用,二是脱离仿真后运行时可以把flash里的程序load到外部ram里运行,但这样作有什么好处,我不理解!

而2407上外扩数据ram有什么作用呢?是用来放程序运行时临时产生的数据?还是有其他的用途,应该不可以用来在cmd文件里指定放常量数据吧(我不是指仿真,仿真的时候可以把常量数据放到外部ram里,我已经证实了)。谢谢各位指点,这个问题我一直没想通。

另外,在我的一个程序中,因为有大量的常量数组(lcd字符),在cmd文件中,我把这些数组放到外部的ram中,仿真的时候程序运行时正常的(字符可以显示),而把程序烧写到flash里后就不正常了(字符显示不正常,不是乱码,只是一些点状的东西),由此产生了上面的疑问。

解答如下:

程序可以简单的分为code(程序)区,和data(数据)区,code区在运行的时候是不可以更改的,data区放全局变量和临时变量,是要不断的改变的,cpu从code区读取指令,对data区的数据进行运算处理,因此code区存储在什么介质上并不重要,象以前的计算机程序存储在卡片上,code区也可以放在rom里面,也可以放在ram里面,也可以放在flash里面(但是运行速度要慢很多,主要读flash比读ram要费时间),因此一般的做法是要将程序放到flash里面,然后load到ram里面运行的;DATA区就没有什么选择了,肯定要放在RAM里面,放到rom里面改动不了。

永不止步步 发表于03-27 16:03 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:382741个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号