硬汉嵌入式论坛

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

[emWin教程入门篇] 【emWin实战教程V2.0】第3章  STemWin介绍

[复制链接]

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
发表于 2016-12-24 17:08:02 | 显示全部楼层 |阅读模式




完整65章+12章附件教程下载地址:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=19834
第3章       STemWin介绍



    本章主要介绍STemWin的基础知识,其实确切的讲应该叫emWin基础知识,由于教程使用的开发板是ST的微控制器,所以就把名字统一命名成STemWin(为什么叫STemWin,在下面会有详细的讲解)。
    3.1 STemWin,emWin,μCGUI之间的关系
    3.2 SEGGER公司介绍
    3.3 STemWin介绍
    3.4 STM32F429跑STemWin性能测试
    3.5 STemWin论坛
    3.6         总结





努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
 楼主| 发表于 2016-12-24 17:10:13 | 显示全部楼层
3.1  STemWin,emWin,μCGUI之间的关系


    这个放在最开头进行说明,因为很多的初学者比较迷惑。
    对于一些刚学GUI的用户来说,知道μCGUI的比较多,而不知道所谓的emWin或者STemWin。这个并不奇怪,
这就类似于大部分人只知道SEGGER公司做的JLINK,而不知道他们还有RTOS和相关的中间件(中间件的意思就是
基于RTOS的文件系统,GUI,USB主机和设备协议栈等

3.1.1   μCGUI在国内比较火的原因


μCGUI前几年在国内比较火的原因主要有三点:
    1、一个是μCOS-II在国内的推广,自从Micrum公司出的那本《嵌入式实时操作系统μCOS-II》发布之后,国内关于
μCOS-II的资料就是铺天盖地,再加上各种培训机构和开发板的推广,μCOS-II就在国内火起来了。μCOS-II火的同时,
它配套的中间件,特别是μCGUI就跟着在国内火了起来。
    2、前几年国内有一个μCGUI的论坛,这个论坛在国内的μCGUI方面应该算是做得最好的,特别是那位站长在μCGUI
方面的研究,对于μCGUI在国内的发展功不可没。
    3、还有一个原因就是μCGUI是带有源码的,很多时候可以通过修改部分的源码实现一些特殊的功能。现在网上流传的
μCGUI的源码已经不知道经过多少人的手被修改过,最原始的代码在官网上已经找不到了。

3.1.2   emWin和μCGUI的关系


    首先要明白,emWin和μCGUI这两个GUI是同一个东西。最初这个GUI就是SEGGER公司的,然后以什么的方式授
权给μCGUI就不清楚了。现在SEGGER公司是这个GUI的主要推动者,已经将其授权给了多个芯片生产厂家。

3.1.3  STemWin和emWin的关系


    STemWin是SEGGER公司授权给ST(意法半导体)的。使用ST芯片的用户可以免费使用STemWin。其实不光授权
给了ST,还有NXP,Energy Micro等。凡是使用这些芯片厂商生产的处理器都可以免费的使用emWin。但是出于一
定的保护措施,使用STemWin的库是不能用在其它芯片厂商的处理器上面的。因为在工程初始化STemWin前要使能
CRC校验。如果没有使能,STemWin是启动不起来的。KEIL MDK的安装目录里面也带有emWin软件包,这个软件包
也不可以直接使用,用户需要给KEIL MDK注册RL-ARM才可以使用。
    这里STemWin还针对ST的微控制器做了专门的优化,比如在使用ST的F4XX微控制器带FPU的芯片时,STemWin在
需要浮点处理的地方专门做了优化。

3.1.4  emWin5.xx版本和以前版本的不同


    emWin发展到5.0版本以后进行了很大的更新,特别是底层驱动方面。emWin5.xx版本向下完全的兼容低版本,当然
也包括μCGUI5.xx以下的版本,也就是说如果用户有在emWin5.xx以下版本建立的应用,完全可以在高版本上面实现
条件是没有修改过源码)。
     emWin5.xx以后的版本只有库,没有源码。想研究源码的,可以看早期的版本,了解一下消息机制。不过对于大多数
从应用角度出发的用户,完全没有必要学习源码,源码内容太多。一些早期版本无法实现的功能,在emWin5.xx上面得到
了很大的改善,支持的控件更多了。如果通过各种方法仍然无法实现,可以使用emWin支持的自定义控件,自定义回调函
数或者控件皮肤设置做一个符合要求的。
努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
 楼主| 发表于 2016-12-24 17:12:00 | 显示全部楼层
3.2  SEGGER公司介绍

SEGGER公司应该算是一家老牌的调试工具以及RTOS及其中间件的生产商。SEGGER公司成立于1997年,到2016年已经有差不多20年的历史了。这家公司主要有两个office,一个是在德国的Hilden,另一个在美国的 Massachusetts。官网还有一个工作环境的照片,环境很好,见下图3-1。
3.1.png
图3-1  SEGGER公司的工作场所

SEGGER公司的产品主要有三个方向,分别如下:
3.2.1  RTOS及其中间件
SEGGER公司的RTOS是embOS,在国内知道的人可能比较少。SEGGER做的embOS和中间件都是以库的形式供用户下载的,除非购买了使用权。产品主要如下:
(1) embOS (Real Time OperatingSystem)
(2) embOS/IP (TCP/IP Stack)
(3) emWin (Graphic Software &GUI)
(4) emFile (File System)
(5) emSecure (Digital SignatureSuite)
(6) emSSL (Transport LayerSecurity)
(7) emUSB-Device (USB DeviceStack)
(8) emUSB-Host (USB Host Stack)
(9) emCompress (CompressionSystem)
(10) emLib (Helper Libraries)
(11) emLoad (Bootloader)
(12) emModbus (Modbus Stack)


3.2.2  J-Link 调试工具

J-Link大家应该都不陌生,它是由SEGGER公司设计的。J-Link产品有好几款,具体如下:
(1) J-Link PRO
(2) J-Link ULTRA+
(3) J-Link PLUS
(4) J-Link BASE
(5) J-Trace PRO Cortex-M
(6) J-Trace Cortex-M
(7) J-Trace ARM


3.2.3  Production Programmers

这个工具在国内用的比较少,主要有如下几款产品:
(1) Flasher PRO
(2) Flasher ARM
(3) Flasher Portable
(4) Flasher RX
(5) Flasher STM8
(6) Flasher ST7
(7) Flasher 5
(8) Flasher 5 PRO
上面的三项算是SEGGER公司的主营产品,更详细的内容可以去官网www.segger.com进行了解。
努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
 楼主| 发表于 2016-12-24 17:15:39 | 显示全部楼层
3.3  STemWin介绍

emWin5.xx版本设计出来的界面还是非常漂亮的。为了使大家有一些感官的认识,先来欣赏几张相关的界面设计图片。


3.3.1  STemWin设计界面

下面是官方提供的应用界面设计效果:
3.2.png
3.3.png
3.4.png
图3-2  官方设计STemWin界面

整体来说,这些界面还是非常漂亮的,不过这些界面不是用专门的控件显示出来的,而是用2D绘图配合存储设备实现的。


下面是在STM32-V6开发板上实现的界面
更多界面效果看此地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=17330
主界面:
3.5.png

音乐播放器界面:
3.6.png

视频播放界面:
3.7.png

收音机界面:



3.3.2  STemWin目标系统硬件需求
实现STemWin的最基本硬件需求如下:
1、一个MCU或者MPU(8/16/32/64位)且RAM和Flash大小要满足emWin最小需求。
2、一个图形显示器(任何类型和任何分辨率)。
Flash和RAM的使用大小取决于用户所使用的STemWin的功能以及编译器的效率。因此不可能指定精确的值,但是以下值适用于典型的系统。
未使用窗口管理器时
RAM:100字节
堆栈:600字节
Flash:10-25 kb(取决于所使用的功能)
使用窗口管理器和控件时
RAM:2-6 kb(取决于所需的窗口数)
堆栈:1200-1800字节 (取决于所使用的功能)
Flash:30-60 kb(取决于所使用的功能)
请注意,如果应用程序使用了很多字体,则对ROM的要求会提高。上述所有值都是粗略估算值,不保证能正常使用。


3.3.3  STemWin特性

emWin提供了高效且独立于处理器和显示控制器的图形用户界面,可用于任何使用图形显示进行操作的应用。它与单任务和多任务环境、专用操作系统或任何商业RTOS均兼容,emWin的发布形式为C语言源代码。它可适用于任何尺寸的、具有任何显示控制器,不管是物理的还是虚拟的显示器。其特性包括:
【一般特性】
(1)支持使用任何控制器的任何(单色、灰度或彩色)显示器(如果有正确的驱动)。
(2)在较小的显示器上无显示控制器也可运行。
(3)使用配置宏可支持任何接口。
(4)显示尺寸可配置。
(5)可在显示器上的任何点(而不仅仅是在偶数位字节地址)上写入字符和位图。
(6) 已经针对尺寸和速度对程序进行了优化。
(7) 对于较慢的显示控制器,可在存储器中缓存显示,将存取操作减到最少,从而获得非常高的速度。
(8)结构清晰。
(9) 支持虚拟显示,虚拟显示可大于实际显示。
【图形库】
(1)支持不同颜色深度的位图。
(2)可使用位图转换器。
(3) 绝对无浮点使用。
(4) 快速线/点绘制 (不使用浮点)。
(5) 圆形/多边形绘制非常快速。
(6) 不同的绘图模式。
【字体】
(1)基本软件配备多种不同的字体:4*6、6*8、6*9、8*8、8*9、8*16、8*17、8*18、24*32以及像素高度为8、10、13、16的比例字体。
(2)可以定义新的字体。
(3) 只有应用程序使用的字体才链接到可执行程序里,从而使Flash使用最小。
(4)字体可在X和Y方向完全缩放。
(5)可使用字体转换器,主机系统(即Microsoft Windows)上有的任何字体都可以转换。
【字符串/值输出函数】
(1) 函数可以十进制、二进制、十六进制、任何字体形式显示值。
(2)函数可以十进制、二进制、十六进制、任何字体形式编辑值。
【窗口管理器(WM)】
(1) 完整的窗口管理操作,包括裁剪。窗口的客户区以外的区域不可能被覆盖。
(2) 窗口可以移动和调整大小。
(3) 支持回调函数(可选择是否使用)。
(4) 窗口管理器使用最小的RAM(每个窗口大约50字节)。
【PC界面外观的可选控件】
(1) 提供各种控件,它们通常自动操作并且简单易用。
【支持触摸屏和鼠标】
(1) 对于控件,emWin提供触摸屏和鼠标支持。
【PC工具】
(1)模拟查看器。
(2)位图转换器。
(3)字体转换器。


3.3.4  RTOS对STemWin多任务的支持

基本常见的RTOS都支持STemWin的多任务,移植起来也比较简单,下面这些是官方提供好的移植,如图3-3所示。
图3-3  STemWin的RTOS接口文件

这些移植好的接口文件在MDK的安装目录里面,以MDK5.20版本为例,所在的路径为:C:\\Keil_v520\\ARM\\PACK\\Keil\\MDK-Middleware\\7.1.0\\emWin\\Sample\\GUI_X。


3.3.5  STemWin基本的内存需要

表3-1  STemWin基本的内存需要

这个只是官方提供的基本数据,仅供参考,具体还要看实际应用。



3.3.6  STemWin当前支持的控件


由于emWin在不断的更新当中,这里是当前支持的大部分控件,但不是全部。
表3-2  STemWin当前支持的控件
3.11.png
3.12.png
3.13.png

3.14.png

努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
 楼主| 发表于 2016-12-24 17:21:01 | 显示全部楼层
3.4  STM32F429跑STemWin性能测试

可以这么说,STM32F429+STemWin的性能能够满足大部分小型嵌入式GUI项目的要求,下面就从刷色块和刷图片两个方面介绍实际性能。
另外,特别注意一点,为了更好发挥STM32F429的图形性能,强烈建议使用32位SDRAM,使用16位的SDRAM性能会降低一半。


3.4.1  刷色块测试

STM32F429支持以下8种颜色格式:
(1) LTDC_Pixelformat_ARGB8888
(2) LTDC_Pixelformat_RGB888
(3) LTDC_Pixelformat_RGB565
(4) LTDC_Pixelformat_ARGB1555
(5) LTDC_Pixelformat_ARGB4444
(6) LTDC_Pixelformat_L8
(7) LTDC_Pixelformat_AL44
(8) LTDC_Pixelformat_AL88
测试条件:
1、STM32F429BIT6 + 32位SDRAM。
2、显示屏是800*480分辨率。
这里主要测试了24位色,16位色和8位色的刷色块性能。初学者可能不太理解位色是什么意思,位色的意思就是一个像素点或者一个颜色点是由多少个bit表示,24位色表示一个像素点需要24bit来表示,即3个字节。16位色表示一个像素点需要16bit来表示,即2个字节。再比如,如果我们要在800*480分辨率的显示屏上面使用24位色,那么需要多大的显存空间呢?按照前面说的,就需要800*480*3 =1152000字节。
刷24位色
32位色的ARGB8888和24位色的RGB888是一样的,因为32位色只是多了一个alpha通道,用于设置透明效果。另外注意下面测试图中的蓝色背景,其实是一个圆圈套一个圆圈的颜色层,32位色和24位色显示效果还是很棒的。
3.15.png

刷色块跑分8000万个像素点每秒。这个跑分是什么概念呢?如果我们给800*480分辨率的显示屏刷24位色的颜色块,那么每秒可以刷81923000/(800*480) =213帧。
3.16.png

彩带效果:
3.17.png

刷16位色
16位色显示效果如下,这里仅测试了16位色中的RGB565格式。
3.18.png

刷色块跑分1亿两千万,这个跑分是什么概念呢?如果我们给800*480分辨率的显示屏刷16位色的颜色块,那么每秒可以刷129346000/(800*480) =336帧。
3.19.png

彩带效果:
3.20.png

刷8位色
8位色是一种非常有实用价值的颜色格式,对颜色要求不高的场合可以用,速度超快。
3.21.png

刷色块跑分2亿6千万,这个跑分是什么概念呢?如果我们给800*480分辨率的显示屏刷8位色的颜色块,那么每秒可以刷267128000/(800*480) =695帧。
3.22.png

彩带效果:
3.23.png



3.4.2  刷图片测试

测试条件:
1、STM32F429BIT6 + 32位SDRAM。
2、显示屏是800*480分辨率,配置为RGB565格式,即16位色。
测试方法是将800*480分辨率的JPG图片进行解码,解码成位图后写入到SDRAM里面,然后用SDRAM刷界面,可以做15ms刷一帧,即每秒刷66帧,这个帧率可以满足大部分需要刷图片的应用项目。
努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
 楼主| 发表于 2016-12-24 17:22:58 | 显示全部楼层
3.5    STemWin论坛


    自从国内的μCGUI论坛关闭以后,这方面比较好的论坛就很少了,论坛对于STemWin的推广和发展也很重要。
针对STemWin,我们有自己建立的论坛版块:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12
    当然,SEGGER官方也有自己的emWin论坛,地址:http://forum.segger.com/
努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
 楼主| 发表于 2016-12-24 17:23:17 | 显示全部楼层
3.6    总结


    关于STemWin的介绍就跟大家介绍这么多,更详细的可以上我们的论坛进一步讨论。还有一点要说明的就是SEGGER公司的所有软件都是收费的,收费标准请看这里:https://www.segger.com/pricing.html
努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 16:06 , Processed in 0.204477 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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