硬汉嵌入式论坛

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

[emWin] 彻底找到F429配置为32位色时,emWin绘制位图慢的原因,实际理论值可以达到23ms一张

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115653
QQ
发表于 2016-11-17 02:17:21 | 显示全部楼层 |阅读模式
1. 这个问题由来已久,了解这个问题的历史,务必优先看此贴,
http://www.armbbs.cn/forum.php?mod=viewthread&tid=21120
2.  现在已经使用emWin5.36版本测试了,官方说5.34版本就加入32bpp的优化功能,测试发现没有任何效果,
鉴于这个原因,专门花了一天时间才找到了下面的问题,不容易啊,兄弟们。
-------------------------------------------------------------------------------
8.png
=============================================
条件:
F429+32位SDRAM配置为ARGB8888格式,硬件接口也是RGB888,绘制800*480*3的位图。


第一种测试,正常绘图,方法如下,使用函数GUI_MEMDEV_WriteAt刷图,*****213ms一帧*******
hMempic = GUI_MEMDEV_CreateEx(0, 0, 800, 480, GUI_MEMDEV_HASTRANS);
/* 将图片解码到内存设备中 */
GUI_MEMDEV_Select(hMempic);
GUI_DrawBitmap(&bm1, 0, 0);  
GUI_MEMDEV_Select(0);
显示的时候调用函数:
GUI_MEMDEV_WriteAt(hMempic,0,0);
1.png
=============================================
第二种测试,方法如下,使用函数GUI_MEMDEV_WriteOpaqueAt刷图,*****82ms一帧*****
速度提升相当的明显,提高了131ms。
显示的时候调用函数:
GUI_MEMDEV_WriteOpaqueAt(hMempic,0,0);
2.png
=============================================
第三种测试,依然使用函数GUI_MEMDEV_WriteOpaqueAt刷图,但是由于STemWin
和MDK安装目录中的emWin都没有把ARGB格式的宏定义开放出来,导致设置
宏定没有任何效果,所以我人为的将底层转换的函数屏蔽掉了。具体速度提升至*****23ms一帧*****
当然,这个仅仅测试,因为屏蔽了转换函数,图像就显示不出来了,只能等待官方讲这个宏定义
开放出来。
为什么ABRG转ARGB这么消耗时间?主要是因为每个像读点都要做一次转换,相当耗时。
3.png




==========================================
补充下些知识点,可能有些网友不太理解这里的含义,这个不是说做个软件上ABGR转ARGB,其实上面的截图中说的已经比较明白:
这里的意思是说emWin在5.30版本以前,它自己的颜色格式是固定的ABGR格式,如果用户的显示屏是ARGB格式的,那么每次emWin
的输出都要做颜色格式的转换,在这个上面浪费了很多时间,特别是刷图的时候,而emWin5.30版本以后,官方推出了ARGB格式,方
便了像STM32F429/439这种显示屏驱动了,这样emWin设置的颜色格式就可以直接输出了。大大提升了速度,特别是刷新图片的时候,
AGBGR8888转换F429的ARGB8888耗费了太多时间了,极其影响性能。而AGBR8888转RGB565要好非常多,因为将图片绘制到内存
设备后,已经转换成RGB565,所以直接输出的跟裸机操作一样,而转ARGB8888,即使存储到内存设备,每次输出依然要做颜色格式
转换,这个是因为ARGB格式多了一个8位的Alpha通过,每次绘制都要考虑到这个alpha的作用,所以干脆绘制到内存存储设备里面的
还依然是ABGR8888格式,这个就是速度慢的根本原因了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115653
QQ
 楼主| 发表于 2016-11-17 02:32:13 | 显示全部楼层
新的emWin5.36版本依然没有把这个宏定义开放出来,痛苦至极:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=23423
回复

使用道具 举报

32

主题

187

回帖

283

积分

高级会员

积分
283
发表于 2016-11-17 09:03:42 | 显示全部楼层
老师这种精神好棒,学习学习
回复

使用道具 举报

5

主题

15

回帖

30

积分

新手上路

积分
30
发表于 2016-11-17 10:20:12 | 显示全部楼层
emWin5.36 和STemwin 可以互用吗? STM32F429 官方给的是5.28 没有这个函数?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115653
QQ
 楼主| 发表于 2016-11-17 11:02:09 | 显示全部楼层

回 lihaimeng@ 的帖子

lihaimeng@:emWin5.36 和STemwin 可以互用吗? STM32F429 官方给的是5.28 没有这个函数? (2016-11-17 10:20) 
可以的,直接替换lib和inc两个文件夹即可,不过这个只有MDK版本。
回复

使用道具 举报

5

主题

15

回帖

30

积分

新手上路

积分
30
发表于 2016-11-17 12:10:04 | 显示全部楼层

回 eric2013 的帖子

eric2013:可以的,直接替换lib和inc两个文件夹即可,不过这个只有MDK版本。 (2016-11-17 11:02) 
谢谢,就是说IAR不行吧?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115653
QQ
 楼主| 发表于 2016-11-17 12:13:31 | 显示全部楼层

回 lihaimeng@ 的帖子

lihaimeng@:谢谢,就是说IAR不行吧? (2016-11-17 12:10) 
对,IAR要等ST官方发布emWin的软件包,他们的软件包里面含MDK,IAR和GCC三个版本。
回复

使用道具 举报

5

主题

15

回帖

30

积分

新手上路

积分
30
发表于 2016-11-17 12:25:07 | 显示全部楼层

回 eric2013 的帖子

eric2013:对,IAR要等ST官方发布emWin的软件包,他们的软件包里面含MDK,IAR和GCC三个版本。 (2016-11-17 12:13) 
谢谢!帮助非常大
回复

使用道具 举报

57

主题

908

回帖

1079

积分

至尊会员

积分
1079
发表于 2016-11-17 18:06:56 | 显示全部楼层
为啥这么简单个事情 都不开放呢?估计是开放人员根本都没有想到? 老外也是程序猿嘛。
版主写个小邮件问问?
回复

使用道具 举报

5

主题

15

回帖

30

积分

新手上路

积分
30
发表于 2016-11-18 09:48:44 | 显示全部楼层
搞错了,
回复

使用道具 举报

680

主题

3479

回帖

5544

积分

论坛元老

积分
5544
发表于 2016-12-2 17:10:10 | 显示全部楼层
现在搞emwin 不知道该使用哪个版本的比较好啊,
回复

使用道具 举报

680

主题

3479

回帖

5544

积分

论坛元老

积分
5544
发表于 2016-12-2 17:11:24 | 显示全部楼层
现在搞emwin 不知道该使用哪个版本的比较好啊,

能够支持 keil , iar 还有 rtos或者 ucos,
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115653
QQ
 楼主| 发表于 2016-12-5 16:17:50 | 显示全部楼层

回 hpdell 的帖子

hpdell:现在搞emwin 不知道该使用哪个版本的比较好啊,

能够支持 keil , iar 还有 rtos或者 ucos, (2016-12-02 17:11) 
可以的话,就使用MDK自带的,好用。
回复

使用道具 举报

3

主题

12

回帖

21

积分

新手上路

积分
21
发表于 2017-6-13 12:49:00 | 显示全部楼层
留名,楼主辛苦
菩萨畏因,凡夫畏果;
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-10 07:11 , Processed in 0.388904 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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