硬汉嵌入式论坛

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

[GUI] stm32F7 emwin 显示gif导致程序死掉问题

[复制链接]

8

主题

32

回帖

56

积分

初级会员

积分
56
发表于 2018-1-6 17:25:19 | 显示全部楼层 |阅读模式
小弟调试stm32F7+emwin  显示多边形、图片什么的都是正常的,但是当我显示gif图片时,程序直接死掉,我看了一下,程序死在了
GUI_GIF_DrawSub(pFile, FileSize, XPos, YPos, j);这一句,请各位帮忙分析分析。调试代码用的是仿真例程里面的,仿真程序是可以正常跑的。

void _ShowMovie(const char * pFile, int FileSize) {
  GUI_GIF_IMAGE_INFO ImageInfo = {0}; // Info structure of one particular GIF image of the GIF file
  GUI_GIF_INFO       GifInfo   = {0}; // Info structure of GIF file
  int                i;
  int                j;
  int                XPos;
  int                YPos;
  //
  // Display sample information
  //
  GUI_SetFont(&GUI_Font8x16);
  GUI_ClearRect(0, 40, 319, 59);
  GUI_DispStringHCenterAt("Show complete GIF file as movie", 160, 40);
  //
  // Show movie
  //
  GUI_ClearRect(0, 60, 319, 239);                                 // Clear the image area
  GUI_GIF_GetInfo(pFile, FileSize, &GifInfo);                     // Get GIF info structure
  XPos = (GifInfo.xSize > 320) ?  0 : 160 - (GifInfo.xSize / 2);
  YPos = (GifInfo.ySize > 180) ? 60 : 150 - (GifInfo.ySize / 2);
  for (i = 0; i < 2; i++) {                                       // Show the complete GIF 2 times ...
    for (j = 0; j < GifInfo.NumImages; j++) {
      GUI_GIF_DrawSub(pFile, FileSize, XPos, YPos, j);            // Draw sub image
      GUI_GIF_GetImageInfo(pFile, FileSize, &ImageInfo, j);       // Get sub image information
      GUI_Delay(ImageInfo.Delay ? ImageInfo.Delay * 10 : 100);    // Use the Delay member of the ImageInfo structure for waiting a while
    }
    GUI_Delay(2000);                                              // Wait a while
  }
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106740
QQ
发表于 2018-1-6 17:34:44 | 显示全部楼层
函数没什么问题,图片是存在哪里的,是C数组格式存到Flash里面的吗
回复

使用道具 举报

8

主题

32

回帖

56

积分

初级会员

积分
56
 楼主| 发表于 2018-1-6 17:44:47 | 显示全部楼层
eric2013 发表于 2018-1-6 17:34
函数没什么问题,图片是存在哪里的,是C数组格式存到Flash里面的吗

是的是的就是 直接存的数组保存在flash里面
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106740
QQ
发表于 2018-1-6 18:10:52 | 显示全部楼层
hunkxie 发表于 2018-1-6 17:44
是的是的就是 直接存的数组保存在flash里面

你现在的emWin动态内存分配的多大,也就是GUIConf,c文件中的分配的大小。

务必要够大,如果是内部SRAM,至少得100KB以上才保险,可以先显示一个50*50左右的超小GIF图片看看。
回复

使用道具 举报

8

主题

32

回帖

56

积分

初级会员

积分
56
 楼主| 发表于 2018-1-6 18:37:09 | 显示全部楼层
eric2013 发表于 2018-1-6 18:10
你现在的emWin动态内存分配的多大,也就是GUIConf,c文件中的分配的大小。

务必要够大,如果是内部SRAM ...

动态内存应该是够的至少有7、8M  工程里面还有bmp显示以及多边形旋转都能用的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106740
QQ
发表于 2018-1-7 03:39:43 | 显示全部楼层
hunkxie 发表于 2018-1-6 18:37
动态内存应该是够的至少有7、8M  工程里面还有bmp显示以及多边形旋转都能用的

测试下我们新版emWin教程里面提供的方法和图片看看,http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

8

主题

32

回帖

56

积分

初级会员

积分
56
 楼主| 发表于 2018-1-7 11:33:44 | 显示全部楼层
eric2013 发表于 2018-1-7 03:39
测试下我们新版emWin教程里面提供的方法和图片看看,http://www.armbbs.cn/forum.php?mod=viewthread& ...

我把gui的动态空间  改成内部ram后就能用了  改成外部sdram就挂掉
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106740
QQ
发表于 2018-1-8 09:47:08 | 显示全部楼层
hunkxie 发表于 2018-1-7 11:33
我把gui的动态空间  改成内部ram后就能用了  改成外部sdram就挂掉

如果是这样的话,有如下两个问题:
1. 你的硬件布线不太给力,容易出现SDRAM性能跟不上的情况,表现在emWin上就是,跑一些需要性能的演示,容易出现死机或者花屏。
2. 还有一种情况就是你的配置有问题,这个需要排查下,尝试降低LTDC的时钟,以及LTDC和SDRAM所涉及到的引脚速度等级。
回复

使用道具 举报

8

主题

32

回帖

56

积分

初级会员

积分
56
 楼主| 发表于 2018-1-9 08:43:19 | 显示全部楼层
本帖最后由 hunkxie 于 2018-1-9 08:46 编辑
eric2013 发表于 2018-1-8 09:47
如果是这样的话,有如下两个问题:
1. 你的硬件布线不太给力,容易出现SDRAM性能跟不上的情况,表现在em ...

我debug了一下    在执行GUI_GIF_DrawSub的时候 直接进入HardFault_Handler,我怀疑是堆栈不够,但是我把堆栈改大了过后还是不行,gui的动态空间应该是够的,10M左右。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2023-7-3 10:07:54 | 显示全部楼层
hunkxie 发表于 2018-1-9 08:43
我debug了一下    在执行GUI_GIF_DrawSub的时候 直接进入HardFault_Handler,我怀疑是堆栈不够,但是我把 ...

你好,我遇到了和你一样的问题,请问这个问题你解决了吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106740
QQ
发表于 2023-7-3 10:37:51 | 显示全部楼层
zzyEmbed 发表于 2023-7-3 10:07
你好,我遇到了和你一样的问题,请问这个问题你解决了吗

硬件问题已经排除没

如果硬件问题已经排除了,软件上还有一点就是Cache问题。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 14:58 , Processed in 0.187824 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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