S12的物理RAM和ROM是否可以互换?即某固定内存地址段,是...

2020-02-11 09:03发布

自己认为,是可以的,因为自己这样做过,自己曾做过如下修改:
        修改前:
        /* non-paged RAM */
              RAM           = READ_WRITE  DATA_NEAR            0x2000 TO   0x3FFF;
        /* non-banked FLASH */
              ROM_4000      = READ_ONLY   DATA_NEAR IBCC_NEAR  0x4000 TO   0x7FFF;
        修改后:
        /* non-paged RAM */
              RAM           = READ_WRITE  DATA_NEAR            0x2000 TO   0x4FFF; //default 8k ,add 4k,now is 12k
        /* non-banked FLASH */
              ROM_4000      = READ_ONLY   DATA_NEAR IBCC_NEAR  0x5000 TO   0x7FFF; //default 16k ,delete 4k ,now is 12k
修改的原因是因为RAM不够用了,因此将RAM由8K提高到12K,将ROM_4000由16K减小到12K,
这样修改后,程序也照样运行,没有任何异常,不知道这样长时间有没有问题?
按自己的理解,单片机的ROM可以当做RAM来用,但是RAM不能当做ROM来用,单片机的RAM地址段掉电后,数据是否丢失,也不一定,

由此引起一个问题,就是RAM,EEPROM,FLASH,三者有什么区别?某固定内存地址段是否可以指定为三者中的任意一类型?个人觉得应该可以。
电脑的硬盘(包括机械硬盘和固态硬盘)和内存条之间的区别?
个人理解,其区别是内存相比机械硬盘或固态硬盘,读写速度更快,如果固态硬盘的读写速度和内存条相同,那么后续是否就不用内存条了?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
takashiki
1楼-- · 2020-02-11 14:36
RAM是随机存储器,掉电数据就没了
ROM是只读存储器,固化好的程序一般不能直接写,只能读。当然有可能会通过其他手段写入,这种ROM叫PROM。然而人们不满足于只能写入一次,所以搞出了可以擦除的EPROM。这玩意最早是紫外线可擦除的,很麻烦,所以有了电可擦除的,叫EEPROM。后来觉得eeprom结构太复杂,工艺上改成了浮置栅,称为Flash。所以广义上后面的都是前面的子集,狭义上则是指特定工艺从而完全不一样了。
如果ssd赶上了RAM的速度而你又不要内存,估计现代的软件能在1ms内将你的ssd寿命写满。
farui
2楼-- · 2020-02-11 15:36
我觉得不能通用。RAM中数据丢失就丢失了,这是硬件决定的。

一周热门 更多>