OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4187|回复: 6

STM32 擦出FLASH过程中如何相应外设中断?

[复制链接]

14

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
248
金钱
248
注册时间
2011-10-16
在线时间
31 小时
发表于 2015-8-12 16:53:48 | 显示全部楼层 |阅读模式
5金钱

1  我用FLASH模拟EEPROM的方式保存机器运行参数以及用户参数设置.
2 从FLASH编程手册上得知FLASH每个页擦出的最短时间是20ms, 并且擦出过程中一切试图访问FLASH的操作都会导致CPU stall.也就是说不能相应外设的中断。
3 我这个项目的事实性要求很高,与外面主机的通信必须在收到数据 10ms内做出相应,否则主机视从机已经断开链接。
4 现在问题是如果我在擦出FLASH的时候,刚好外面主机要就我响应其通信数据。这样将导致通信失败(我这边必须10ms做出响应)

请问对于这种应用场合,能不能找出一种解决方案?
查了很多资料,有的说修改Scatter 链接脚本,让中断服务程序在RAM里执行,但是中断向量还是在FLASH里,响应中断时还是要从FLASH里去取中断向量,这样违反了手册上说的“一切访问FLASH的操作将导致CPU停止” ,仔细推敲好像改方法行不通。
不知大家有没有好的解决方法?

最佳答案

查看完整内容[请看2#楼]

没事别去插flash,擦flash的时候,你一般是用于固件升级,此时完全不处理其他任何事情。 如做参数保存,这也是你必须考虑的问题,如果实时性一定要保证,那就换方案。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-12 16:53:49 | 显示全部楼层
没事别去插flash,擦flash的时候,你一般是用于固件升级,此时完全不处理其他任何事情。
如做参数保存,这也是你必须考虑的问题,如果实时性一定要保证,那就换方案。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

14

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
248
金钱
248
注册时间
2011-10-16
在线时间
31 小时
 楼主| 发表于 2015-8-12 17:07:58 | 显示全部楼层
Yes you will need to place all code, interrupts, vectors, etc into SRAM to avoid the processor stalling. You must not try to read FLASH while an erase or write is in progress, as it will stall the processor. Depending on the part/sector this may be several seconds, which is clearly fatal to any peripheral which expects timely servicing.
查了一点资料,上面这样说的。。。把所有代码,中断程序,中断矢量等放到SRAM里面去,这样搞起来还有意义 吗?把所有代码都放到SARM里。。
STM32最大的缺点了,擦出FLASH过程中长达20ms无法响应外设请求。。
回复

使用道具 举报

60

主题

153

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2014-1-28
在线时间
8 小时
发表于 2015-8-12 17:43:03 | 显示全部楼层
可以吧。
你看那个IAP。就是先进入bootloader,然后把所有的程序代码,都放在SRAM里面。重启时,SRAM的代码消失,重启后,再次进入bootloader,从FLASH上拷贝所有的程序到SRAM。
回复

使用道具 举报

14

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
248
金钱
248
注册时间
2011-10-16
在线时间
31 小时
 楼主| 发表于 2015-8-12 19:21:34 | 显示全部楼层
回复【3楼】LuoKen:
---------------------------------
请问你说的IAP是指哪里的IAP?
回复

使用道具 举报

60

主题

153

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2014-1-28
在线时间
8 小时
发表于 2015-8-13 09:42:54 | 显示全部楼层
回复【4楼】okyihu:
---------------------------------
http://www.openedv.com/posts/list/14429.htm

【ALIENTEK 战舰STM32开发板例程系列连载+教学】第五十三章 串口IAP实验
回复

使用道具 举报

14

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
248
金钱
248
注册时间
2011-10-16
在线时间
31 小时
 楼主| 发表于 2015-8-13 11:17:45 | 显示全部楼层
回复【5楼】LuoKen:
---------------------------------
那样的话 APP的大小就受到SRAM大小的限制了.这样虽然可以解决问题,但是付出代价太大。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 18:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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