搜索
bottom↓
回复: 16

flash可以像写ram一样直接写入吗

[复制链接]

出0入0汤圆

发表于 2013-1-9 14:36:37 | 显示全部楼层 |阅读模式
本帖最后由 毛毛雨 于 2013-1-9 14:45 编辑

刚去网上搜了一下,大家是众说纷纭,有的说可以直接写,有的说先映射到ram区然后再写入,大家进来发表一下自己的见解,这也算是学习一个知识了
我可能没说太明白,其实主要疑问就是flash能不能像ram那样直接用mov指令就能够写入

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入442汤圆

发表于 2013-1-9 14:41:27 | 显示全部楼层
FLASH必须先擦除才能写;CFI FLASH必须使用写入命令才能写。

出0入0汤圆

 楼主| 发表于 2013-1-9 14:43:46 | 显示全部楼层
wye11083 发表于 2013-1-9 14:41
FLASH必须先擦除才能写;CFI FLASH必须使用写入命令才能写。

先擦除这个我还知道点,我只是不理解flash是不是能够像RAM那样直接用mov指令写入

出0入0汤圆

发表于 2013-1-9 15:22:48 | 显示全部楼层
具体应该还是区别很大的,坐等等打字小王子来帮大家科普吧

出0入0汤圆

 楼主| 发表于 2013-1-9 15:27:06 | 显示全部楼层
bbssilverkey 发表于 2013-1-9 15:22
具体应该还是区别很大的,坐等等打字小王子来帮大家科普吧

打字小王子?大神吗?

出0入0汤圆

发表于 2013-1-9 16:02:31 | 显示全部楼层
FLASH映射到XRAM区后可以象读FLASH一样去读,但写入还要用专门流程,看你用什么单片机的,一般还是先页擦除,再写入,有DMA的稍方便些。

出0入0汤圆

 楼主| 发表于 2013-1-9 16:36:04 | 显示全部楼层
flywater 发表于 2013-1-9 16:02
FLASH映射到XRAM区后可以象读FLASH一样去读,但写入还要用专门流程,看你用什么单片机的,一般还是先页擦除 ...

我想做的是先使用烧写工具把程序烧写到flash的某一段,然后flash其他部分的读写问题就交给最先烧进去的那段代码自己完成,所以现在是完全不能借助工具,我只是想知道能不能用MOVX @DPTR,A这样的指令直接就把数据写到flash的目标地址,至于写之前的擦出是必须的,关键是支持不支持MOVX指令

出0入0汤圆

发表于 2013-1-9 17:01:47 | 显示全部楼层
不行,不用问了。可以的话干嘛不用flash当RAM用(慢点没所谓)

出0入0汤圆

 楼主| 发表于 2013-1-9 17:47:05 | 显示全部楼层
Etual 发表于 2013-1-9 17:01
不行,不用问了。可以的话干嘛不用flash当RAM用(慢点没所谓)

是啊,我也觉得不行,但是看到不少资料都是直接用MOVX @DPTR,A写入的,所以我就迷茫了

出0入0汤圆

发表于 2013-1-9 18:33:48 | 显示全部楼层
毛毛雨 发表于 2013-1-9 17:47
是啊,我也觉得不行,但是看到不少资料都是直接用MOVX @DPTR,A写入的,所以我就迷茫了 ...

MOVX @DPTR,A 这条指令是51专门用来写外部存储器的指令,对应的引脚会发生很多动作,产生时序,如果外接的flash的读写满足这个时序的话就能进行了,我是这样理解的。

同理这样的指令还可以用来读取任何满足这样时序的器件,比如AD等

出0入0汤圆

 楼主| 发表于 2013-1-10 10:12:00 | 显示全部楼层
tianheiGE 发表于 2013-1-9 18:33
MOVX @DPTR,A 这条指令是51专门用来写外部存储器的指令,对应的引脚会发生很多动作,产生时序,如果外接 ...

这样的说法貌似也有一定道理啊,我也想过时序的问题,只是我找的资料中只有一份说到了"the slow time of flash",还就提了这一句然后就没下文了,纠结啊

出0入0汤圆

发表于 2013-1-14 10:17:01 | 显示全部楼层
毛毛雨 发表于 2013-1-9 16:36
我想做的是先使用烧写工具把程序烧写到flash的某一段,然后flash其他部分的读写问题就交给最先烧进去的那 ...

因为FLASH和RAM的擦除方式不一样,FLASH擦除时必须是一块,不能单字节,所以FLASH映射到XDATA后,写是不能象XRMA那样直接用MOVX的,还必须调用专用擦除函数进行页擦除(IAP),然后再写入。
一般这种可以改变映射状态的单片机都有DMA通道的,即 flash->xram    xram->flash   xram->sfr   等,实现FLASH读写也很简单,建议你多查一下你正使用单片机的DATASHEET,我也没办法给你提供更多细节,因为不同单片机操作方式也不同。

出0入0汤圆

 楼主| 发表于 2013-1-14 13:54:09 | 显示全部楼层
flywater 发表于 2013-1-14 10:17
因为FLASH和RAM的擦除方式不一样,FLASH擦除时必须是一块,不能单字节,所以FLASH映射到XDATA后,写是不 ...

datasheet也是反复看了好几遍了,只是在flash的讲解部分写flash的时候有一个Column Latches和一个Extra row,这两个东西各占128字节,但是对于这两个东西的讲解十分笼统,实在搞不懂,所以才来论坛求助

出0入0汤圆

发表于 2013-1-14 17:34:16 | 显示全部楼层
FLASH经得起楼主多少次的读写摧残呢

出215入169汤圆

发表于 2013-1-14 17:39:35 | 显示全部楼层
搞几下就报销了,不能当内存用的。
编译器的访问次数不容易控制。

最好方法就是搞个SPI Flash或者SD卡,也不算很复杂

出0入0汤圆

 楼主| 发表于 2013-1-15 12:55:13 | 显示全部楼层
yklstudent 发表于 2013-1-14 17:34
FLASH经得起楼主多少次的读写摧残呢

哈哈,我只是最近在搞flash,发现很多资料都是用MOVX直接写flash的,感觉费解,就来求助一下大神们

出0入0汤圆

 楼主| 发表于 2013-1-15 12:58:00 | 显示全部楼层
monkeynav 发表于 2013-1-14 17:39
搞几下就报销了,不能当内存用的。
编译器的访问次数不容易控制。

这样啊,受教了,最近在搞AT89C51RE2的flash,datasheet很不详细,感觉很吃力,所以就来求助大神了,不知道大神你有没有做过这款单片机,片上128k flash的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 09:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表