OpenEdv-开源电子网

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

GUI内存空间不够

[复制链接]

21

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2015-12-4
在线时间
10 小时
发表于 2016-1-4 19:15:26 | 显示全部楼层 |阅读模式
1金钱
在编写GUI界面时,只是弄了几张图片,在编译的时候就出现了空间不足,要是编写一整套GUI界面,这个问题该如何解决?
求各位分享经验...

最佳答案

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

把图片放外部FLASH里,用到的时候再读出来,或者把数组用const修饰下,那样是放在内部flash里的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6758

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12989
金钱
12989
注册时间
2012-11-26
在线时间
3789 小时
发表于 2016-1-4 19:15:27 | 显示全部楼层
willsmith 发表于 2016-1-4 21:59
恩,你是怎么处理的?

把图片放外部FLASH里,用到的时候再读出来,或者把数组用const修饰下,那样是放在内部flash里的
学无止境
回复

使用道具 举报

70

主题

6758

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12989
金钱
12989
注册时间
2012-11-26
在线时间
3789 小时
发表于 2016-1-4 20:11:35 | 显示全部楼层
你把图片资料直接放数组里了?
回复

使用道具 举报

21

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2015-12-4
在线时间
10 小时
 楼主| 发表于 2016-1-4 21:59:52 | 显示全部楼层
jermy_z 发表于 2016-1-4 20:11
你把图片资料直接放数组里了?

恩,你是怎么处理的?
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2016-1-4 23:18:00 | 显示全部楼层
外扩FLASH,放到SD卡里面。另外如果可能,尽量少用图片作为GUI,一方面读取资源需要大量的时间,另外为了显示效果需要占用大量RAM。单片机做GUI不是强项
回复

使用道具 举报

21

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2015-12-4
在线时间
10 小时
 楼主| 发表于 2016-1-5 09:52:47 | 显示全部楼层
ricefat 发表于 2016-1-4 23:18
外扩FLASH,放到SD卡里面。另外如果可能,尽量少用图片作为GUI,一方面读取资源需要大量的时间,另外为了显 ...

如果不用图片做GUI,那有什么其它的好办法可以借鉴吗?求大神指点
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2016-1-5 13:17:01 | 显示全部楼层
本帖最后由 ricefat 于 2016-1-5 15:36 编辑
willsmith 发表于 2016-1-5 09:52
如果不用图片做GUI,那有什么其它的好办法可以借鉴吗?求大神指点

安卓,windows,ios,MacOS,linux,emWin这种界面总体上都是代码生成的,用纯色,渐变色或是半透明组成比较简单好看的界面,图片或是图标只是很少一部分。另外GUI也需要结合硬件功能让其更好看,比如F429自带的2D图形加速功能,或是参考F746的演示代码。总得来说,好的GUI需要比较强悍的计算机图形学,硬件,以及一定的美术功底。

我自己没太搞过GUI,只是觉得单片机还是做单片机的活,GUI什么的交给ARM更合适

最后附上F7的演示视频,没有什么图片,但是界面我认为很漂亮
回复

使用道具 举报

21

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2015-12-4
在线时间
10 小时
 楼主| 发表于 2016-1-5 15:06:33 | 显示全部楼层
ricefat 发表于 2016-1-5 13:17
安卓,windows,ios,MacOS,linux,emWin这种界面总体上都是代码生成的,用纯色,渐变色或是半透明组成 ...

那种界面时挺好看,但不知道它是怎么做的...
回复

使用道具 举报

21

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2015-12-4
在线时间
10 小时
 楼主| 发表于 2016-1-5 15:09:22 | 显示全部楼层
jermy_z 发表于 2016-1-4 19:15
把图片放外部FLASH里,用到的时候再读出来,或者把数组用const修饰下,那样是放在内部flash里的

如果那样处理的话,你们有没有用到emWin的API?感觉如果不用emWin的API,直接编写代码一个像素一个像素地去描点,那样有点繁琐...
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2016-1-5 15:38:06 | 显示全部楼层
willsmith 发表于 2016-1-5 15:06
那种界面时挺好看,但不知道它是怎么做的...

emWin就是原来的ucGUI,从源代码那边应该能知道如何实现相关绘图方式。
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2016-1-5 15:41:49 | 显示全部楼层
willsmith 发表于 2016-1-5 15:09
如果那样处理的话,你们有没有用到emWin的API?感觉如果不用emWin的API,直接编写代码一个像素一个像素地 ...

emWin也是一个像素一个像素的,只不过通过硬件和软件的相互配合,还有一些图形算法,让单片机也能流畅显示一些复杂图形。也可以参考原子开发板mp3相关代码,看看实现方式
回复

使用道具 举报

21

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2015-12-4
在线时间
10 小时
 楼主| 发表于 2016-1-5 16:21:42 | 显示全部楼层
ricefat 发表于 2016-1-5 15:41
emWin也是一个像素一个像素的,只不过通过硬件和软件的相互配合,还有一些图形算法,让单片机也能流畅显 ...

就是那些算法有点难整...其实探索者也是用一个像素一个像素描上去的,但是搞那个算法有点难
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2016-1-5 16:49:57 | 显示全部楼层
willsmith 发表于 2016-1-5 16:21
就是那些算法有点难整...其实探索者也是用一个像素一个像素描上去的,但是搞那个算法有点难

嗯,空间换时间,时间换空间
回复

使用道具 举报

21

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2015-12-4
在线时间
10 小时
 楼主| 发表于 2016-1-5 16:53:36 | 显示全部楼层
ricefat 发表于 2016-1-5 16:49
嗯,空间换时间,时间换空间

非常感谢的讨论,我最后将其压缩就可以解决这个问题,但只能起到急救的效果而已...谢谢你们
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2016-1-5 17:30:19 | 显示全部楼层
willsmith 发表于 2016-1-5 16:53
非常感谢的讨论,我最后将其压缩就可以解决这个问题,但只能起到急救的效果而已...谢谢你们

压缩和解压缩还需要占用CPU时间,解压缩后的资源仍旧会占用存储器,未必流畅。如果不是专攻这个方向的,用现成的就可以了
回复

使用道具 举报

21

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2015-12-4
在线时间
10 小时
 楼主| 发表于 2016-1-5 19:42:58 | 显示全部楼层
ricefat 发表于 2016-1-5 17:30
压缩和解压缩还需要占用CPU时间,解压缩后的资源仍旧会占用存储器,未必流畅。如果不是专攻这个方向的, ...

我的不是这个意思,我是说在将图片转化成.c文件的时候,选择了压缩这一项...不是指算法上的压缩,这是用软件转化的时候选择了一个压缩
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-1-6 15:21:40 来自手机 | 显示全部楼层
我为了做GUI,把图片素材保存为单色图,那样每个像素只占一个位,在单片机里再指定前景色或背景色甚至透明,也非常灵活
回复

使用道具 举报

21

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2015-12-4
在线时间
10 小时
 楼主| 发表于 2016-1-6 15:52:48 | 显示全部楼层
xkwy 发表于 2016-1-6 15:21
我为了做GUI,把图片素材保存为单色图,那样每个像素只占一个位,在单片机里再指定前景色或背景色甚至透明 ...

我也是这么做的,是用位图转化器转化的时候,选定的吧?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 21:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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