硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3830|回复: 33
收起左侧

[SPI/QSPI] 程序运行一段时间后死机,怀疑和XIP运行方式有关

  [复制链接]

28

主题

130

回帖

214

积分

高级会员

积分
214
发表于 2022-1-10 11:31:50 来自手机 | 显示全部楼层 |阅读模式
片内 flash 0x0800 0000地址起始运行正常的程序,重新编译为片外XIP 0x9000 0000起始地址运行,当然向量表地址也改为了0x9000 0000,其他都不变。程序运行一段时间后死机。(这个一段时间大概十几分钟,也可能是半个小时左右,也可能是8、9十几个小时)。程序为ucos+emwin demo演示程序。目前怀疑会不会是因为xip通信速率太高了导致通信不稳定,导致取指错误。但是又有点矛盾,如果通信速率太高的原因的话为什么不会立马死机而是运行一段时间后死机。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
发表于 2022-1-10 15:43:29 | 显示全部楼层
之前有个坛友也是这个问题,一下子想不起来他发的帖子的关键词了,他解决了。
回复

使用道具 举报

210

主题

1045

回帖

1685

积分

至尊会员

More we do, more we can do.

积分
1685
发表于 2022-1-10 21:36:14 | 显示全部楼层
降主频验证下,是不是硬件性能问题。
回复

使用道具 举报

3

主题

38

回帖

47

积分

新手上路

积分
47
发表于 2022-1-11 08:38:36 | 显示全部楼层
对,按楼上说的先降频率,频率太高受硬件走线影响,基本上要等长线的。
回复

使用道具 举报

77

主题

691

回帖

922

积分

金牌会员

积分
922
发表于 2022-1-11 22:25:37 | 显示全部楼层
死机什么现象,会不会是溢出了。
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-1-12 09:30:28 来自手机 | 显示全部楼层
庄永 发表于 2022-1-11 22:25
死机什么现象,会不会是溢出了。

led翻转单独一个任务,led保持常亮不再闪烁。emwin demo单独一个任务,画面卡住保持在一个固定画面,电容触摸屏单独一个任务,触摸无效。所有任务都卡住不动了
回复

使用道具 举报

77

主题

691

回帖

922

积分

金牌会员

积分
922
发表于 2022-1-12 21:27:40 | 显示全部楼层
logo 发表于 2022-1-12 09:30
led翻转单独一个任务,led保持常亮不再闪烁。emwin demo单独一个任务,画面卡住保持在一个固定画面,电容 ...

单独点个灯试试。这样来确定是不是你以为的问题,多半不是,多半是你代码有问题。
回复

使用道具 举报

8

主题

25

回帖

49

积分

初级会员

积分
49
发表于 2022-1-13 14:49:01 | 显示全部楼层
之前碰到用QPSI bank1  走线比较乱导致以太网在内部flash运行ping不丢包,在外部运行丢包严重,后来改到用bank2,同时优化走线就没丢过了
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-1-14 11:34:09 | 显示全部楼层
emwin 发表于 2022-1-10 21:36
降主频验证下,是不是硬件性能问题。

感觉又不像是硬件线路性能,主频太高问题。如果是硬件问题应该不需要程序跑十来个小时以后才出问题,我觉得应该是立马出现问题。我测试的时间是晚上10点钟程序上电开始跑,到了第二天早上8、9点一看就死机了。
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-1-14 11:37:19 | 显示全部楼层
老鸟kkk 发表于 2022-1-13 14:49
之前碰到用QPSI bank1  走线比较乱导致以太网在内部flash运行ping不丢包,在外部运行丢包严重,后来改到用b ...

你这种情况应该程序一开始跑很快就能复现异常,而我的这个要跑个十来个小时才会出现异常死机。就很奇怪。
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-1-14 11:41:28 | 显示全部楼层
目前还怀疑会不会和内存回收什么的有关系,程序跑着内存没了,因为例程源码我也没有通读,所以目前不清楚。
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-1-16 10:05:15 | 显示全部楼层
emwin 发表于 2022-1-10 21:36
降主频验证下,是不是硬件性能问题。

    之前是QSPIHandle.Init.ClockPrescaler     = 1;时钟为100MHz
现在改为QSPIHandle.Init.ClockPrescaler     = 2;目前连续通电测试了一天一夜发现不会再死机了。

是不是因为QSPI FLASH的信号线我没有做等长处理的缘故,导致数据错乱了,目前最长的线是NCS线3.7cm,最短线是IO1是1.6cm长。准备再做一版QSPI 等长线。

回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-1-16 10:06:09 | 显示全部楼层
wklhwkl 发表于 2022-1-11 08:38
对,按楼上说的先降频率,频率太高受硬件走线影响,基本上要等长线的。

    之前是QSPIHandle.Init.ClockPrescaler     = 1;时钟为100MHz
现在改为QSPIHandle.Init.ClockPrescaler     = 2;目前连续通电测试了一天一夜发现不会再死机了。

是不是因为QSPI FLASH的信号线我没有做等长处理的缘故,导致数据错乱了,目前最长的线是NCS线3.7cm,最短线是IO1是1.6cm长。准备再做一版QSPI 等长线。
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-1-16 10:07:19 | 显示全部楼层
eric2013 发表于 2022-1-10 15:43
之前有个坛友也是这个问题,一下子想不起来他发的帖子的关键词了,他解决了。

    之前是QSPIHandle.Init.ClockPrescaler     = 1;时钟为100MHz
现在改为QSPIHandle.Init.ClockPrescaler     = 2;目前连续通电测试了一天一夜发现不会再死机了。

是不是因为QSPI FLASH的信号线我没有做等长处理的缘故,导致数据错乱了,目前最长的线是NCS线3.7cm,最短线是IO1是1.6cm长。准备再做一版QSPI 等长线。
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-1-17 10:28:18 | 显示全部楼层
本帖最后由 logo 于 2022-1-24 11:06 编辑

最新测试进展,
之前是QSPIHandle.Init.ClockPrescaler     = 1;时钟为100MHz
现在改为QSPIHandle.Init.ClockPrescaler     = 2;目前连续通电测试了一天一夜发现不会再死机了。

但是遇到一个新的问题就是连续跑了两天两夜后发现emwin卡在了GUIDEMO_WashingMachine 洗衣机这个例程画面,但LED指示灯翻转任务还在正常运行。
有单独的一个led翻转任务如下:
  1. void led_task(void *p_arg)
  2. {
  3.      OS_ERR err;
  4.      while(1)
  5.     {
  6.         LED0_Toggle;
  7.         LED1_Toggle;
  8.         OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_PERIODIC,&err);//延时500ms
  9.     }
  10. }
复制代码

emwin卡在下面这个GUIDEMO_WashingMachine界面保持不动
IMG_9245.JPG

目前遇到的是emwin画面卡住,但LED任务还在正常运行不知道是不是因为因为SDRAM没有等长布线。

回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-1-22 22:09:31 | 显示全部楼层
最新进展,QSPI改成等长线以后发现还是还是会死机,并且死机现象发生更快了,之前要跑几个小时,甚至十几个小时才会时机的,现在可能十几分就死机了。还不如之前了



QQ截图20220122220815.jpg
另外SDRAM也做了等长线处理。

QQ截图20220122220828.jpg
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-1-22 22:26:50 | 显示全部楼层

在线debug了一下发现程序进入了HardFault_Handler

HardFault_Handler.jpg

回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-1-23 20:31:24 | 显示全部楼层
本帖最后由 logo 于 2022-1-23 21:33 编辑

最新进展,发现要使能MDMA时钟,即QSPI IO口时钟初始化时候要加上这句__HAL_RCC_MDMA_CLK_ENABLE();


微信截图_20220123200527.jpg

官方例程 ExtMem_CodeExecution\ExtMem_Boot 里并没有这句



微信截图_20220123201537.jpg






加上这句__HAL_RCC_MDMA_CLK_ENABLE(); 以后目前测试暂时正常。


我严重怀疑死机现象和我之前电路板上QSPI FLASH、SDRAM没有做等长线无关。
我手上只有一片主控STM32H743IIT6,主控STM32H743IIT6 LQFP176目前太贵了网上都要250多,新板子上的主芯片是从旧版PCB上拆的,之前买的时候大概65。等后面有芯片了再用旧版焊接对比实验下。






回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-1-23 21:58:21 | 显示全部楼层
老鸟kkk 发表于 2022-1-13 14:49
之前碰到用QPSI bank1  走线比较乱导致以太网在内部flash运行ping不丢包,在外部运行丢包严重,后来改到用b ...

目前我用的是BK1
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-1-23 22:06:19 | 显示全部楼层
老鸟kkk 发表于 2022-1-13 14:49
之前碰到用QPSI bank1  走线比较乱导致以太网在内部flash运行ping不丢包,在外部运行丢包严重,后来改到用b ...

我觉得信号应该不会那么容易受到干扰、那么脆弱,毕竟是数字信号,BK1本身应该也不会有问题。你改到BK2以后走线做了什么优化,做等长了处理了吗。
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-1-24 14:49:17 | 显示全部楼层
最新进展,程序连续跑了将近20个小时左右,又出现了emwin卡在下面这个GUIDEMO_WashingMachine界面保持不动,但LED翻转任务还在正常运行这种情况。


另外在emwin界面完全卡在GUIDEMO_WashingMachine这个界面保持不动之前,每次程序跑到GUIDEMO_Automotive这个例程时候会有大概30%左右的几率会花屏。
webwxgetmsgimg.jpg



回复

使用道具 举报

9

主题

78

回帖

105

积分

初级会员

积分
105
发表于 2022-4-14 08:56:18 | 显示全部楼层
有可能还是程序的问题,目前我也是在外部flash运行程序,跑的lvgl的压力测试的demo,目前还没遇到问题,只是没有加外置ram
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-4-14 09:43:25 | 显示全部楼层
悠悠三千载 发表于 2022-4-14 08:56
有可能还是程序的问题,目前我也是在外部flash运行程序,跑的lvgl的压力测试的demo,目前还没遇到问题,只 ...

目前还不能完全确定是硬件还是软件问题,不过根据我之前的多次软件更改,排查范围逐渐缩小,感觉QSPI FLASH硬件部分可能是引发异常的根本原因的概率要大些。

正在准备再做一版,把QSPI FLASH硬件部分走线、布局再优化下。
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-4-14 09:47:50 | 显示全部楼层
老鸟kkk 发表于 2022-1-13 14:49
之前碰到用QPSI bank1  走线比较乱导致以太网在内部flash运行ping不丢包,在外部运行丢包严重,后来改到用b ...

只是ping丢包吗,不会死机吗。有没有注意到会不会死机。

我感觉QSPI FLASH部分如果有异常的话应该是直接死机进入HardFault_Handler。而不是可以工作只是数据有丢失异常。

回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-4-19 10:29:21 | 显示全部楼层
老鸟kkk 发表于 2022-1-13 14:49
之前碰到用QPSI bank1  走线比较乱导致以太网在内部flash运行ping不丢包,在外部运行丢包严重,后来改到用b ...

最新进展,现在判定是软件问题,不是硬件问题,目前已经连续运行了3天了,还没有死机。并且我用的就是QSPI BK1,频率现在跑100MHz,我觉得也没有之前想象的那么玄乎了。
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-4-19 10:31:02 | 显示全部楼层
emwin 发表于 2022-1-10 21:36
降主频验证下,是不是硬件性能问题。

最新进展,判定为软件问题,非硬件走线问题。目前已连续运行三天,没有死机,功能正常。XIP 时钟频率跑的是100MHz。
回复

使用道具 举报

9

主题

78

回帖

105

积分

初级会员

积分
105
发表于 2022-4-19 21:45:36 | 显示全部楼层
logo 发表于 2022-4-19 10:31
最新进展,判定为软件问题,非硬件走线问题。目前已连续运行三天,没有死机,功能正常。XIP 时钟频率跑的 ...

是关于MPU的问题吗?
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-4-21 22:38:35 来自手机 | 显示全部楼层
悠悠三千载 发表于 2022-4-19 21:45
是关于MPU的问题吗?

目前初步判定是emwin触摸屏驱动问题
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-4-22 08:50:10 | 显示全部楼层
最新进展,程序为QSPI XIP方式运行,SDRAM时钟SDCLK频率为100MHz,QSPI CLK时钟频率为100MHz,emwin demo+UCOS III +RGB触摸屏 800x480 GT1151Q触摸芯片.


程序从4月20号下午开始运行,到了大概22号凌晨,累计约30多个小时再次发生死机情况。

死机具体现象表现为emwin画面卡主,画面停留在washing machine demo这个画面。LED翻转任务停止。
测量发现MCU晶振25MHz波形还在持续正常输出,SDCLK持续正常输出100MHz,通过热插拔RGB屏幕发现LTDC RGB屏幕驱动信号还在持续保持输出washing machine demo这个画面。
QSPI FLASH所有信号没有波形。




程序卡在下面这个画面保持不动。还有一个情况就是在程序正常运行的时候会发现例程切换到washing machine demo这个例程画面的时候感觉画面有点卡,其他例程画面均正常无卡顿情况。这个不知道是不是属于带宽不够的情况。
w.jpg

当前程序卡住的情况我分析极有可能是因为我在emwin的基础上加入了UCOS III,可能是加入UCOS III的过程中程序有处理不当的地方导致现在卡死的情况。


之前裸机程序(没有开启触摸功能)持续测试了3天没有发现死机。

准备再继续观察下不加UCOS III程序长时间运行会不会死机。



回复

使用道具 举报

3

主题

1228

回帖

1237

积分

至尊会员

积分
1237
发表于 2022-4-22 21:51:55 | 显示全部楼层
精彩的调试案例分析,期待继续。
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2022-5-16 11:00:58 | 显示全部楼层
目前判断死机原因属于是触摸屏代码引起。https://www.armbbs.cn/forum.php? ... d=112323&extra=

用的网上开发板自带的例程,例程触摸代码部分和emwin时钟节拍应该分别放在不同的优先级定时器中断中调度。并且触摸优先级要低于emwin时钟节拍优先级才可以。

回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-15 11:01 , Processed in 0.461166 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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