硬汉嵌入式论坛

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

[emWin] 在F103上STemwin性能提升10倍

  [复制链接]

29

主题

231

回帖

318

积分

高级会员

积分
318
发表于 2020-5-14 10:53:23 | 显示全部楼层 |阅读模式
之前在安富莱相关STEMWIN资料指导,使用STM32F103ZET6芯片开发项目,项目做出来了,但是感觉显示效果仍不能满意,当时认为是103芯片硬件性能限制。
后来静心思考,发现有些思路在入门教程里可以用,实际做项目里要尽量避免,比如教程里只有一个界面,所以是整个界面刷新,实际上项目有很多个界面,整个界面刷新会把刷新速度降低下来。
调整刷新思路,文字使用新的生成方法,图片使用新的生成方法。结果文字开启了2个抗锯齿,图片大小缩小了2-3倍,刷新速度提高至少10倍。具体方式不便提供,谅解!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2020-5-14 11:16:04 | 显示全部楼层
直接上传你的界面效果就行,无需解决办法,和你测实际测试速度,我来给网友提供媲美你项目性能的案例。

回复

使用道具 举报

3

主题

337

回帖

346

积分

高级会员

积分
346
发表于 2020-5-14 11:25:04 | 显示全部楼层
哇!楼主好牛逼
回复

使用道具 举报

5

主题

40

回帖

55

积分

初级会员

积分
55
发表于 2020-5-14 11:42:08 | 显示全部楼层
楼主装完b就跑,刺激吗
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-14 11:46:56 | 显示全部楼层
爱喝柠檬水 发表于 2020-5-14 11:42
楼主装完b就跑,刺激吗

虽然装完就跑,我也提到优化的方向。这个不需要明说的。
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-14 11:47:31 | 显示全部楼层
eric2013 发表于 2020-5-14 11:16
直接上传你的界面效果就行,无需解决办法,和你测实际测试速度,我来给网友提供媲美你项目性能的案例。

界面不能提供,见谅
回复

使用道具 举报

5

主题

519

回帖

534

积分

金牌会员

积分
534
发表于 2020-5-14 11:57:02 | 显示全部楼层
按楼主这种格式,应该可以提供很多倍。但是有些界面就是要全屏刷新。

就好像我写个OS,号称比UCOSIII效率高一万倍一样。不通用,片面提升,意义不大。
回复

使用道具 举报

2

主题

180

回帖

186

积分

初级会员

积分
186
发表于 2020-5-14 11:58:23 | 显示全部楼层
GUI不都支持局部刷新?
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2020-5-14 12:43:23 | 显示全部楼层
楼主你是最牛逼的 和我们没关系
回复

使用道具 举报

4

主题

140

回帖

152

积分

初级会员

积分
152
发表于 2020-5-14 12:56:52 | 显示全部楼层
看楼主位的说明应该是有变化则刷新无变化则不刷新,这个前提得是硬件带锁存的才行吧
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-14 13:08:52 | 显示全部楼层
hqgboy 发表于 2020-5-14 11:57
按楼主这种格式,应该可以提供很多倍。但是有些界面就是要全屏刷新。

就好像我写个OS,号称比UCOSIII效 ...

我可没号称,实际测试出来的效果和文件大小。
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-14 13:10:01 | 显示全部楼层
qq57379550 发表于 2020-5-14 11:58
GUI不都支持局部刷新?

支持局部刷新,但是每个人在拿到素材的时候,规划不一样。
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-14 13:19:36 | 显示全部楼层
nan_banqiu 发表于 2020-5-14 12:43
楼主你是最牛逼的 和我们没关系

牛不牛不是重点,做过项目,研究深点就能看出我给出的优化方向。
回复

使用道具 举报

5

主题

201

回帖

216

积分

高级会员

积分
216
发表于 2020-5-14 18:59:56 | 显示全部楼层
代码藏着掖着,也不会给你带来什么收益。然后过了几年,发现一点价值都没有了。
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-14 21:38:23 | 显示全部楼层
honami520 发表于 2020-5-14 18:59
代码藏着掖着,也不会给你带来什么收益。然后过了几年,发现一点价值都没有了。

教训人的口气真的好~优化方向已经给出,只要朝着优化的三个方向去考虑就可以了~以后有没有价值我不用你帮考虑,公司的代码不可能拿出来的,除非你没有职业道德。
回复

使用道具 举报

210

主题

1044

回帖

1684

积分

至尊会员

More we do, more we can do.

积分
1684
发表于 2020-5-14 21:47:00 | 显示全部楼层
楼主说得很对,抓住GUI的主要开支,然后有针对性地优化,才能更快达到效果。
回复

使用道具 举报

23

主题

1406

回帖

1475

积分

至尊会员

积分
1475
发表于 2020-5-14 22:04:01 | 显示全部楼层
我来猜测下楼主的优化方向
图片大小:
1、如果是位图,可以使用RLE4,RL8压缩,这个会减小图片大小
2、如果是扁平化图,可以使用颜色板,可以减小图片。
3、PNG,JPEG使用EMWIN玩不转,倒是可以绘制到内存设备,这个可以有效加速。
4、如果103有外部并口NOR,优化效果极其明显。

字体方向:
说实话,没什么好优化的,F1系列也刷的很流畅。
代码不规范,亲人两行泪!
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-14 22:12:44 | 显示全部楼层
missfox 发表于 2020-5-14 22:04
我来猜测下楼主的优化方向
图片大小:
1、如果是位图,可以使用RLE4,RL8压缩,这个会减小图片大小

字体还真有优化的,你可以尝试同个文字,同个字体,同个字体大小,然后把可以生成的方法都生成一遍,对比数据大小,你会发现教程给的字体生成方法还可以优化.
我使用的图片基本是PNG,要把PNG转换成数组,
论坛里教程有将PNG转换成数组,转换方法有很多种,你可以试试生成数组大小。
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-14 22:13:36 | 显示全部楼层
emwin 发表于 2020-5-14 21:47
楼主说得很对,抓住GUI的主要开支,然后有针对性地优化,才能更快达到效果。

谢谢理解,其实都快说到答案了,只要有稍微研究,一点就破~
回复

使用道具 举报

23

主题

1406

回帖

1475

积分

至尊会员

积分
1475
发表于 2020-5-14 22:31:34 | 显示全部楼层
guoxiang 发表于 2020-5-14 22:12
字体还真有优化的,你可以尝试同个文字,同个字体,同个字体大小,然后把可以生成的方法都生成一遍,对比 ...

我说是速度显示没什么好优化的,无论是GBK还是XBF,存到外部SPI Flash,都很流畅。

字体大小,使用GB2312,很小,相比XBF。

如果是XBF,使用扩展模式,生成的相比标准的也小点。
代码不规范,亲人两行泪!
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-14 22:47:25 | 显示全部楼层
missfox 发表于 2020-5-14 22:31
我说是速度显示没什么好优化的,无论是GBK还是XBF,存到外部SPI Flash,都很流畅。

字体大小,使用GB2 ...

显示速度,最开始我是整个界面刷新,后来发现,界面可以分成几个小界面,每个小界面可以单独刷新,这样刷新速度大大提高。比如论坛里有问界面的标题栏要怎么操作,我就把标题栏单独定义成一个窗体,单独刷新。这样不用每个界面都要重新创建和刷新标题栏了
回复

使用道具 举报

23

主题

1406

回帖

1475

积分

至尊会员

积分
1475
发表于 2020-5-14 23:04:09 | 显示全部楼层
guoxiang 发表于 2020-5-14 22:47
显示速度,最开始我是整个界面刷新,后来发现,界面可以分成几个小界面,每个小界面可以单独刷新,这样刷 ...

采用局部刷新可解决。
代码不规范,亲人两行泪!
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-15 08:35:58 | 显示全部楼层
missfox 发表于 2020-5-14 23:04
采用局部刷新可解决。

,果然工程师所见略同
回复

使用道具 举报

2

主题

180

回帖

186

积分

初级会员

积分
186
发表于 2020-5-15 09:30:53 | 显示全部楼层
guoxiang 发表于 2020-5-14 13:10
支持局部刷新,但是每个人在拿到素材的时候,规划不一样。

没用过emwin,但是用过的几乎所有gui都原生支持局部刷新,根本不需要优化  spi的屏320*480都可以跑到30fps
回复

使用道具 举报

7

主题

85

回帖

111

积分

初级会员

积分
111
发表于 2020-5-15 10:35:14 | 显示全部楼层
有2个重要的条件没提供,屏幕分辨率多少?使用什么颜色格式?
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-15 13:43:06 | 显示全部楼层
JIKIMO 发表于 2020-5-15 10:35
有2个重要的条件没提供,屏幕分辨率多少?使用什么颜色格式?

1.分辨率是320*480
2.16位565。
3.素材有20个界面,产品是消费类电子,界面多带渐变效果。四国语言。
4.带简单动画效果,风格偏手机风格
回复

使用道具 举报

15

主题

73

回帖

118

积分

初级会员

积分
118
发表于 2020-5-19 18:23:20 | 显示全部楼层
guoxiang 发表于 2020-5-15 13:43
1.分辨率是320*480
2.16位565。
3.素材有20个界面,产品是消费类电子,界面多带渐变效果。四国语言。

请教下楼主,生成位图文件,是定义的常量数组还是从存储设备读取出来的?
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2020-5-19 23:55:01 | 显示全部楼层
guoxiang 发表于 2020-5-14 22:47
显示速度,最开始我是整个界面刷新,后来发现,界面可以分成几个小界面,每个小界面可以单独刷新,这样刷 ...

是不是绘图消息里,有参数指出了需要重绘的矩形区域
如果绘图消息都是全屏重绘,可想而知这个重复劳动。

因为窗口剪切会出现多个区域重绘,想想一个大矩形中间切了一个矩形,剩下的多边形会有多少个矩形

其实硬汉注意过这个问题的,只是也没到需要挖空心思优化的地步
回复

使用道具 举报

13

主题

45

回帖

84

积分

初级会员

积分
84
发表于 2020-5-20 08:56:08 | 显示全部楼层
不就是脏矩形算法吗?但是创建控件的时候要合理分配背景与窗口,才能充分利用这算法。

另外,emwin我好久没用了,littlevgl不香吗?
代码风格完爆emwin,效果比emwin好看
只是消耗的rom多了点
回复

使用道具 举报

335

主题

2037

回帖

3047

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3047
发表于 2020-5-20 11:59:09 | 显示全部楼层
F103的RAM比较小。如果分配40KB以上空间给emwin,也会快很多。还有,你可以利用RA8875的双图层,也会好一些把。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2020-5-20 12:28:39 | 显示全部楼层
myxiaonia 发表于 2020-5-19 23:55
是不是绘图消息里,有参数指出了需要重绘的矩形区域
如果绘图消息都是全屏重绘,可想而知这个重复劳动。 ...

最根本的原因还是楼主没有上传效果,所以我们没有办法了解实际情况,以及他所说的10倍怎么个效果。

只要他上传上传效果,我们就可以做一个媲美他的案例。
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-20 14:39:34 | 显示全部楼层
caicaptain2 发表于 2020-5-20 11:59
F103的RAM比较小。如果分配40KB以上空间给emwin,也会快很多。还有,你可以利用RA8875的双图层,也会好一些 ...

版主,硬件配置跟V4差不多。
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-20 14:41:47 | 显示全部楼层
mmo 发表于 2020-5-19 18:23
请教下楼主,生成位图文件,是定义的常量数组还是从存储设备读取出来的?

图片放在外部FLASH
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-20 14:43:05 | 显示全部楼层
myxiaonia 发表于 2020-5-19 23:55
是不是绘图消息里,有参数指出了需要重绘的矩形区域
如果绘图消息都是全屏重绘,可想而知这个重复劳动。 ...

其实一个界面分成三个分界面就好了
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-20 14:44:05 | 显示全部楼层
a3748622 发表于 2020-5-20 08:56
不就是脏矩形算法吗?但是创建控件的时候要合理分配背景与窗口,才能充分利用这算法。

另外,emwin我好 ...

Littlegl我在4.2版本的时候就已经研究了
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-20 14:45:30 | 显示全部楼层
大家在敏感10倍这三个字,我的目的是让大家在三个方向去优化去考虑~
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2020-5-22 10:35:33 | 显示全部楼层
想看看啥子情况!也不知道什么情况 我也不敢问
回复

使用道具 举报

12

主题

104

回帖

140

积分

初级会员

积分
140
发表于 2020-5-22 16:01:42 | 显示全部楼层
其实你是消费电子的。。界面又不涉及代码。。也无所谓职业道德高度吧。。因为你拿出去卖也要给人看界面啊。。
至于几倍我不知道。。我也看不到。。相当于你说可以10倍速度提升然后要我去研究一遍反证明结论。。
优化方面。。字体 不就是那几种字体?选个最高效最小的字库的?显示速度
图片 你说的是png。。转换成啥565的数组?还是其他呢?还有分割图片大小。。我猜猜是压缩?
然后你说的局部刷新 = 多个窗口 内各自刷新?(这个我确实知道,也用了。)
然后我还说另外的。。假设你的图片是图标级别的那么点。。然后外观或其他自定义控件全绘制2d或借用存储设备下绘制渐变2d。。
也就是简单来讲 是重绘2d和改小图片大小,多个窗口局部刷新。。这些好像没啥特别吧?问题我根本没听懂外挂字体下的是用哪个字库还四国语言的?啥格式呢?
回复

使用道具 举报

7

主题

125

回帖

146

积分

初级会员

积分
146
发表于 2020-5-23 10:40:44 | 显示全部楼层
楼主所说的10倍,可能只是基于自己项目优化前后的对比,可能引起了大家比较多的误解。我用TouchGFX,emwin不会,不多讨论

但是大家让楼主上传图片或者代码这个就有点不合适了,毕竟是公司项目,不同于个人项目,上传产品图片明显的泄密行为,违反NDA的,更不用说源码了。甚至有些公司明确要求不能上论坛交流

另外说实话,我也没从楼主分享的经验里领会到什么
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
 楼主| 发表于 2020-5-24 07:11:05 | 显示全部楼层
狂野的庄稼汉 发表于 2020-5-23 10:40
楼主所说的10倍,可能只是基于自己项目优化前后的对比,可能引起了大家比较多的误解。我用TouchGFX,emwin ...

感谢理解~
确实是这个10倍是基于我一个项目前后刷新速度的对比。切换界面由2秒压缩到200ms。
我的硬件与V4的配置接近,ILI9488+103ZET6+1MB SRAM+8MB SPI FLASH.
刷新那么慢,主要在于我的背景是一个无规则带渐变效果的图,背景以外的图片和文字整理出来有4MB,文字字库大概3MB,103ZET6 有512KB FLASH大小,是无法保存这些内容的,只能存储在外部的FLASH里,每次切换界面都要读取外部的FLASH里的图片和字库,加载刷新。
可以理解用这套硬件配置去显示这样的效果是超负荷。
我的优化经验是基于STemwin,在一个很紧张的硬件资源下还有什么可优化的地方。
你使用TouchGFX,想必也要考虑硬件配置和UI资源的匹配。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 22:40 , Processed in 0.521683 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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