打印
[STM32H7]

stm32H743读内部flash问题

[复制链接]
2874|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本来我写的一对读写flash的函数用的好好的,但是今天下午突然出现读flash的时候程序就会进入HardFault的问题。
我代码十分简单

就是我将3个32位的值放在H7的存储区2的第7扇区。一开始是可以用的,但是我让程序自己运行了一个中午,下午来的时候就不用了。
后来我将调试器设置成擦除整个芯片,重新下载一次,又正常了。而且重新选会仅擦除扇区,问题也不会出现了。
我没有什么经验,想询问一下这个问题是什么原因造成的呢?
我在排查问题的时候也查了选项字节,RDP一直是0xAA。不存在读保护的问题。

使用特权

评论回复
沙发
千樱硕|  楼主 | 2020-5-21 15:32 | 只看该作者
另外请教一下,能不能申请一个固定地址的常量呢?
我了解到STM32将(或许是Keil5的编译行为?)常量放在Flash里,那么我能不能通过修改启动文件或者map文件,申请一个固定地址的常量呢?这样我就不用把希望保存的值放在一个“相对”安全的位置了。

使用特权

评论回复
板凳
zchong| | 2020-5-22 07:24 | 只看该作者
确定仅仅是这块出的问题?

使用特权

评论回复
评论
千樱硕 2020-5-22 09:59 回复TA
我只尝试读了这一块,程序可以正常运行到我读Flash的时候,在读Flash之前,创建RTX线程,开启ADC3之类的一切正常,但是读Flash的时候,汇编运行到一句 LDR r2,[r1,#0x00] 之后就会跳进硬件错误。 
地板
mmuuss586| | 2020-5-22 10:10 | 只看该作者
仿真调试的时候,因为其它原因进入硬件错误有可能的;
程序烧进去,通过printf或其它方法打印出来看看

使用特权

评论回复
评论
千樱硕 2020-5-23 08:02 回复TA
验证的时候也是有问题的,读取完这些数据,就会通过初始化lcd并显示这些数据。但是lcd不亮,所以程序自己跑的时候也应该是进入了硬件错误。 
5
sonicll| | 2020-5-22 10:39 | 只看该作者
千樱硕 发表于 2020-5-21 15:32
另外请教一下,能不能申请一个固定地址的常量呢?
我了解到STM32将(或许是Keil5的编译行为?)常量放在Fla ...

可以用关键字__attribute__((at()))把常量放在指定的地址

使用特权

评论回复
评论
千樱硕 2020-5-23 08:03 回复TA
OK,谢谢。 
6
598330983| | 2020-5-22 15:15 | 只看该作者
这个必须放一个指定位置?

使用特权

评论回复
评论
千樱硕 2020-5-23 08:05 回复TA
也不是,就是程序每次运行的时候要到固定的地方读取嘛,然后我看H7的手册说,如果读取内部Flash的时候,其他的读取行为都会暂停,但是两个存储区的Flash是不受干扰的。所以为了不会开发后期程序变大还要调整存储位置,就放在了存储2的最后一个扇区。 
7
youjiang405| | 2021-5-1 12:15 | 只看该作者
你的这个flash区域是在被反复的高速读取吗?是否导致了“read disturb”现象。就是过度的读Flash导致Flash数据异常(消失或变化)。
我在STM32F4中发现另一个器官的现象。
我用STM32F407VGT6 作为数字控制电源的处理器。将ADC转换系数存在Flash中。例如:VolCoeff1 = ( *(s32*)VOL1_COEFF_ADDR),VOL1_COEFF_ADDR为Flash地址。则真实的电压为
the real voltage=VolCoeff1 * ADC digital value

在TIM2定时器中断(15kHz,66.7us)中读取系数,用于真实电压/电流的换算。因为有十几个ADC转换系数,因此每小时读Flash的次数超过7亿次。
后来发现存在用户Flash区域中的ADC转换系数有的变为0(转换的真实采样值变为0,并且在Keil 内存Watch窗口可以看到),
并且,有的系数在对过程中是不断变化的,这个在Keil 内存Watch窗口中也可以观察到(写flash的指令都被屏蔽了)。重新刷写相应的Flash数据扇区后系数都能恢复正常。

上述现象与文献所说的read disturb比较吻合。但我现在也不能完全确定。

内核在程序存储区取指令应该也是一种“读”操作吧,这也访问用户自定义的Flash数据区有什么区别吗?

希望有大神能给于解释,不甚感激!!!


使用特权

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

本版积分规则

4

主题

21

帖子

0

粉丝