发新帖我要提问
12
返回列表
打印
[STM32F4]

调用标准库读写片内flash时,死机,求解

[复制链接]
楼主: 地瓜patch
手机看帖
扫描二维码
随时随地手机跟帖
21
地瓜patch|  楼主 | 2018-7-3 16:18 | 只看该作者 回帖奖励 |倒序浏览
yyy71cj 发表于 2018-7-3 15:53
贫电工掐指一算,觉得你可以关闭一切中断,然后调试,发结果来看…… ...

在我自定义的writeflash()函数中已经关闭总中断_disable irq();

使用特权

评论回复
22
yediezeus| | 2018-7-3 16:22 | 只看该作者

使用特权

评论回复
23
地瓜patch|  楼主 | 2018-7-3 18:01 | 只看该作者
擦除的地址是flash的最后一个sector

使用特权

评论回复
24
地瓜patch|  楼主 | 2018-7-3 18:02 | 只看该作者
已经把flash的相关函数都放到RAM里跑了

使用特权

评论回复
25
airwill| | 2018-7-3 18:57 | 只看该作者
注意,  要把相关的函数都转到 SRAM 里.
我之前做的 bootload 程序, 就是这样处理的

使用特权

评论回复
26
地瓜patch|  楼主 | 2018-7-3 22:12 | 只看该作者
airwill 发表于 2018-7-3 18:57
注意,  要把相关的函数都转到 SRAM 里.
我之前做的 bootload 程序, 就是这样处理的 ...

我也是全放进去的,包括标准库里的flash相关函数

使用特权

评论回复
27
airwill| | 2018-7-4 07:12 | 只看该作者
那就借助仿真器,  用汇编指令跟踪方式, 看看停在哪一条指令上了

使用特权

评论回复
28
捉虫天师| | 2018-7-4 23:30 | 只看该作者
换个芯片试试,会不会这个芯片锁死了。

使用特权

评论回复
29
地瓜patch|  楼主 | 2018-7-5 13:46 | 只看该作者
捉虫天师 发表于 2018-7-4 23:30
换个芯片试试,会不会这个芯片锁死了。

现在将库函数FLASH_Status FLASH_EraseSector()中的 FLASH->CR |= FLASH_CR_STRT;注释掉了。写flash能够成功。

使用特权

评论回复
30
地瓜patch|  楼主 | 2018-7-5 13:46 | 只看该作者
捉虫天师 发表于 2018-7-4 23:30
换个芯片试试,会不会这个芯片锁死了。

现在将库函数FLASH_Status FLASH_EraseSector()中的 FLASH->CR |= FLASH_CR_STRT;注释掉了。写flash能够成功。

使用特权

评论回复
31
zhuotuzi| | 2018-7-5 23:30 | 只看该作者
666,不知道那句是为何干扰了程序啊?

使用特权

评论回复
32
zhuotuzi| | 2018-7-5 23:30 | 只看该作者
666,不知道那句是为何干扰了程序啊?

使用特权

评论回复
33
香水城| | 2018-7-10 10:55 | 只看该作者
本帖最后由 香水城 于 2018-7-10 10:58 编辑

执行flash扇区擦除操作时不再执行flash指令,只是貌似死机了吧。
你可以多等一会看看【当然你擦除的扇区不要对其它代码造成影响】,
或者把那些不能受耽搁的代码放到RAM.

另外,擦除时供电要符合擦除参数且稳定。

使用特权

评论回复
34
地瓜patch|  楼主 | 2018-7-13 09:18 | 只看该作者
香水城 发表于 2018-7-10 10:55
执行flash扇区擦除操作时不再执行flash指令,只是貌似死机了吧。
你可以多等一会看看【当然你擦除的扇区不 ...

把写flash的部分函数放到ram里,断电后再次上电,ram里的函数会怎样?还会存在么?

使用特权

评论回复
35
地瓜patch|  楼主 | 2018-7-17 09:24 | 只看该作者
经测试,在程序中同时使用U2和U3的DMA功能。同时使能两者的RENX和IDLE中断。在U3的中断程序中未编写针对RENX的中断处理。仿真时发现程序多数停在U3的中断中。编写对应中断的代码或者禁用该中断,问题解决。
只从现象来看解决我所遇到的问题。因为是stm32的新手,期待高手能进行进一步解释。
另外,对flash的操作可以不在ram中进行,目前未发现问题。

使用特权

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

本版积分规则