打印

如何实现删除430单片机Flash中的其中一个数据

[复制链接]
1713|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sgq151679|  楼主 | 2016-6-10 20:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的MSP430F149单片机,假如 flash中存储了10组字符数组(一组8个字符),如何才能删除其中的一组而其他的保持不变呢?谁有好办法?

相关帖子

沙发
dirtwillfly| | 2016-6-10 20:51 | 只看该作者
没有好办法,flash的性质决定了擦除必须按段来操作

使用特权

评论回复
板凳
sgq151679|  楼主 | 2016-6-10 20:56 | 只看该作者
先读出来,再判断是删除哪一组,把其他的再写入到Flash中,这样能实现吗?感觉好麻烦

使用特权

评论回复
地板
sgq151679|  楼主 | 2016-6-10 20:57 | 只看该作者
dirtwillfly 发表于 2016-6-10 20:51
没有好办法,flash的性质决定了擦除必须按段来操作

先读出来,再判断是删除哪一组,把其他的再写入到Flash中,这样能实现吗?感觉好麻烦

使用特权

评论回复
5
dirtwillfly| | 2016-6-10 21:12 | 只看该作者
sgq151679 发表于 2016-6-10 20:57
先读出来,再判断是删除哪一组,把其他的再写入到Flash中,这样能实现吗?感觉好麻烦
...

是的。
也可以想其他办法。
比如为每个数多留出一个字节存储数据状态,如果删除某个数就标记一个删除状态。当段内数据满的时候,整体更新一次

使用特权

评论回复
6
zyj9490| | 2016-6-11 14:06 | 只看该作者
用CCS,设计一个常量FLASH段,用CMD文件把要擦写的常量放进去,这样跟其他执行代码没有关糸啦。

使用特权

评论回复
7
sgq151679|  楼主 | 2016-6-11 20:53 | 只看该作者
zyj9490 发表于 2016-6-11 14:06
用CCS,设计一个常量FLASH段,用CMD文件把要擦写的常量放进去,这样跟其他执行代码没有关糸啦。 ...

没用过CCS

使用特权

评论回复
8
zyj9490| | 2016-6-11 21:40 | 只看该作者

不知IAR有没有这样的功能,把变量任意指定某个内存或FALSH区哉,关键是刷FALSH不能跟指令码一起刷,还有在操作FALSH时,指令要跑在RAM里面,因为操作FALSAH的总线与CPU读取FALSH的总线不能共用。

使用特权

评论回复
9
Bjorn| | 2016-6-12 21:51 | 只看该作者
flash是分区刷的还是全刷的

使用特权

评论回复
10
sgq151679|  楼主 | 2016-6-12 22:25 | 只看该作者
Bjorn 发表于 2016-6-12 21:51
flash是分区刷的还是全刷的

都存到同一段的

使用特权

评论回复
11
shenmu2012| | 2016-6-13 16:07 | 只看该作者
那就分别存放咋不同的sector上的

使用特权

评论回复
12
Soraka| | 2016-6-13 21:52 | 只看该作者
设计一个常量FLASH段,用CMD文件把要擦写的常量放进去

使用特权

评论回复
13
309030| | 2016-6-14 21:01 | 只看该作者
删除430单片机Flash中的其中一个数据

是不是往里边写0就行了

使用特权

评论回复
14
zyj9490| | 2016-6-19 10:44 | 只看该作者
309030 发表于 2016-6-14 21:01
是不是往里边写0就行了

擦是把全部FLASH都变成1,而写是把1变成0,FLASH写没有把0变成1的功能,除非EARSE,跟它的硬件机理有关。并且写FLASH必须要按FLASH控制器的寄成器设置来写的,速 度比较慢,以上说,在写FLASH时,读指令(从FALSH)必须停止,或跑在RAM上,否则硬件出错,崩。

使用特权

评论回复
15
zyj9490| | 2016-6-19 10:51 | 只看该作者
430还有一个FLASH可以任意时可以擦写,不过同样,在擦写时不要运行FLASH指令,就是INFO A,INFO B ,专门为保存信息准备的,430的FLASH不是作为一个外设准备的,不如微星片子有作为外设准备的,随时可以擦写,不需要考量读指令的共存问题。

使用特权

评论回复
16
lzbf| | 2016-6-19 21:26 | 只看该作者
读取地址直接覆盖吧。

使用特权

评论回复
17
lzbf| | 2016-6-19 21:27 | 只看该作者
如果你使用数据链就可以删除。

使用特权

评论回复
18
cehuafan| | 2016-6-20 22:34 | 只看该作者
这个直接覆盖掉地址就行了

使用特权

评论回复
19
cehuafan| | 2016-6-20 22:36 | 只看该作者
你想连续读取这个不一定好弄的。

使用特权

评论回复
20
pmp| | 2016-6-21 16:47 | 只看该作者
这个删除是不是全置位成1

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

79

帖子

1

粉丝