STemWin介紹


本期教程開始帶領大家了解一下STemWin的基本知識,其實確切的講應該叫emWin基礎知識,由於教程使用的開發板是ST的微控制器,所以就把名字統一命名成STemWin(為什么叫STemWin,在下面會有詳細的講解)。

1.1 STemWin,emWin,μCGUI之間的關系

1.2 SEGGER公司介紹

1.3 STemWin介紹

1.4 STM32F103和407跑STemWin性能測試

1.5 STemWin論壇

1.6 總結

1.1  STemWin,emWin,μCGUI之間的關系

這個放在最開頭進行說明,因為很多的初學者比較的迷惑。

對於一些剛學GUI的用戶來說,知道μCGUI的比較多,而不知道所謂的emWin或者STemWin。這個並不奇怪,主要是因為大部分人只知道SEGGER公司的做的JLINK,而不知道他們還有RTOS和相關的中間件(中間件的意思就是基於RTOS的文件系統,GUI,USB主機和設備協議棧等)。

1.1.1       μCGUI在國內比較火的原因

μCGUI在國內前幾年比較火的原因有三點:

l  一個是μCOS-II在國內的推廣,自從Micrum公司出的那本《嵌入式實時操作系統μCOS-II》發布之后,國內關於μCOS-II的資料就是普天蓋起,再加上各種培訓機構和開發板的推廣,μCOS-II就在國內火起來了。μCOS-II火的同時,它配套的中間件,特別是μCGUI就跟着在國內火了起來。

l  前幾年國內有一個μCGUI的論壇,這個論壇在國內的μCGUI方面應該算是做得最好的,特別是那個站長在μCGUI方面的研究,這位站長對於μCGUI在國內的發展功不可沒。

l  還有一個原因就是μCGUI是帶有源碼的,很多時候可以通過修改部分的源碼實現一些特殊的功能,現在網上流傳的μCGUI的源碼已經不知道經過多少人的手被修改過,最原始的的代碼已經在官網上面找不到了。

1.1.2       emWin和μCGUI的關系

首先要明白,這兩個GUI是一個東西。最初這個GUI就是SEGGER公司的,然后以什么的方式授權給μCGUI就不清楚了。現在SEGGER公司是這個GUI的主要推動者,已經將其授權給了多個芯片生產廠家。

1.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在需要浮點處理的地方專門做了優化。

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

emWin發展到5.0版本以后已經產生了很大的更新,特別是底層驅動方面。emWin5.xx版本向下完全的兼容低版本,當然包括μCGUI5.xx以下的版本,也就說如果用戶有在μCGUI5.xx以下版本建立的工程,完全可以用在高版本上面(條件是沒有修改過源碼)。這里不建議初學者修改源代碼,修改過后會破壞現有的機制。在以后的使用中會養成不好的習慣,只要某些功能無法實現就去修改源碼,隨着修改的增多會嚴重的破壞現有的機制。

emWin5.xx以后的版本只有庫,沒有源碼。對於一些想研究源碼的,可以看早期的版本,了解一下通訊機制。不過對於大多數從應用角度出發的,完全沒有必要學習源碼,源碼內容太多。對於一些無法實現的功能,在emWin5.xx上面得到了很大的改善,基本不需要修改源碼。如果通過各種方法實在無法實現,完全可以使用emWin支持的用戶控件設計方法做一個符合要求的。

1.2  SEGGER公司介紹

SEGGER公司應該算是一家老牌的調試工具以及RTOS及中間件的生產商。SEGGER公司成立於1997年,到現在的2014年,有差不多17年的歷史了,這家公司主要有兩個office,一個是在德國的Hilden,另個在美國的 Massachusetts。官網還有一個他們工作地方的照片,看着很不錯,我這里也把這個照片貼上。

 【STemWin教程入門篇】第1章 <wbr>STemWin介紹

 

SEGGER公司的產品主要有三個方向,分別如下:

1.2.1       RTOS及其中間件

SEGGER公司的RTOS是embOS,在國內知道的人可能比較少。SEGGER做的embOS和中間件都是以庫的形式供用戶下載的,除非購買了使用權。產品主要如下:

l  embOS  (Real Time Operating System)

l  embOS/IP  (TCP/IP Stack)

l  emWin (Graphic Software & GUI)  

l  emFile (File System)

l  emUSB Device (USB Device Stack)

l  emUSB Host (USB Host Stack)

l  emModbus(Modbus Stack)

emModbus是今年(2014年)剛剛發布的。

1.2.2       J-Link 調試工具

J-Link應該大家都不陌生,它是有SEGGER公司設計的。具體的J-Link產品有好幾款,具體如下:

l  J - Link PRO

l  J - Link ULTRA+

l  J - Link PLUS

l  J - Link

l  J - Trace Cortex-M3

l  J - Trace ARM

1.2.3       Production Programmers

這個工具在國內用的比較少,主要如下幾款產品:

l  Flasher  ARM

l  Flasher  RX

l  Flasher  STM8

l  Flasher  ST7

l  Flasher  5

l  Flasher  5 PRO

 

上面說的這三項應該算是SEGGER公司的主營產品,更詳細的可以上面他們的官網www.segger.com

進行了解。

1.3  STemWin介紹

emWin5.xx版本設計出來的界面還是非常漂亮的,先貼幾個相關的設計圖片,讓大家有一些感官的認識。

1.3.1       STemWin設計界面

l  第一幅是官方設計的圖片

【STemWin教程入門篇】第1章 <wbr>STemWin介紹 

整體來說,這些圖片還是非常漂亮的,不過這些界面不是用專門的控件顯示出來的,使用的2D繪圖配合內存設備管理實現的。

l  下面的是在STM32-V5開發板上面實現的界面

總的來說這些界面還是非常漂亮的,關於STM32-V5開發板更詳細的資料可以看如下兩個地址:

http://bbs.armfly.com/read.php?tid=1285

http://bbs.armfly.com/read.php?tid=1139

 

【STemWin教程入門篇】第1章 <wbr>STemWin介紹

 

【STemWin教程入門篇】第1章 <wbr>STemWin介紹

 

【STemWin教程入門篇】第1章 <wbr>STemWin介紹

1.3.2       目標系統(硬件)

目標系統必須具有:

l  一個CPU(8/16/32/64位)

l  一個具有最小內存的RAM和ROM

l  一個完整圖形顯示器 (任何類型和任何分辨率)

    存儲器要求取決於使用的是軟件的哪部分以及目標編譯器的效率。因此不可能指定精確的值,但是以下值適用於典型的系統。

小系統 (無窗口管理器)

l  RAM:100字節

l  堆棧:600字節

l  ROM:10-25 kb(取決於所使用的功能)

大系統 (包含窗口管理器和小工具)

l  RAM:2-6 kb(取決於所需的窗口數)

l  堆棧:1200-1800字節 (取決於所使用的功能)

l  ROM:30-60 kb(取決於所使用的功能)

    請注意,如果應用程序使用了很多字體,則對ROM的要求會提高。上述所有值都是粗略估算值,不保證能正常使用。

1.3.3       特性

emWin設計用於提供高效且獨立於處理器和顯示控制器的圖形用戶界面,用於任何使用圖形顯示進行操作的應用。它與單任務和多任務環境、專用操作系統或具有任何商業RTOS兼容,emWin的發貨形式為C語言源代碼。它可適用於任何尺寸的、具有任何顯示控制器和CPU的物理和虛擬顯示器。其特性包括:

一般特性

l  支持使用任何控制器的任何 (單色、灰度或彩色)顯示器 (如果有正確的驅動)。

l  在較小顯示器上無顯示控制器也可運行。

l  使用配置宏可支持任何接口。

l  顯示尺寸可配置。

l  可在顯示器上的任何點 (而不僅僅是在偶數位字節地址)上寫入字符和位圖。

l  已針對尺寸和速度優化了各種例程。

l  利用編譯時間切換可進行不同優化。

l  對於較慢的顯示控制器,可在存儲器中緩存顯示,將存取操作減到最少,從而獲得非常高的速度。

l  結構清晰。

l  支持虛擬顯示;虛擬顯示可大於實際顯示。

圖形庫

l  支持不同色深的位圖。

l  可使用位圖轉換器。

l  絕對無浮點使用。

l  快速線/點繪制 (不使用浮點)。

l  圓形/多邊形繪制非常快速。

l  不同的繪圖模式。

字體

l  基本軟件配備多種不同的字體:4*6、6*8、6*9、8*8、8*9、8*16、8*17、8*18、24*32以及像素高度為8、10、13、16的比例字體。

l  可以定義新的字體並只需簡單鏈接。

l  只有應用程序使用的字體才實際鏈接到生成的可執行程序,從而使ROM使用最小。

l  字體可分別在X和Y方向完全縮放。

l  可使用字體轉換器;主機系統 (即Microsoft Windows)上有的任何字體都可以轉換。

字符串/值輸出例程

l  例程可以十進制、二進制、十六進制、任何字體形式顯示值。

l  例程可以十進制、二進制、十六進制、任何字體形式編輯值。

窗口管理器(WM)

l  完整的窗口管理操作,包括裁剪。窗口的客戶區以外的區域不可能被覆蓋。

l  窗口可以移動和調整大小。

l  支持回調例程 (可選擇是否使用)。

l  WM使用最小的RAM(每個窗口大約50字節)。

PC界面外觀的可選小工具

l  提供各種小工具 (窗口對象,也稱為控件)。它們通常自動操作並且簡單易用。

支持觸摸屏和鼠標

l  對於按鈕小工具等窗口對象,emWin提供觸摸屏和鼠標支持。

PC工具

l  模擬脈沖查看器。

l  位圖轉換器。

l  字體轉換器。

1.3.4       RTOS對STemWin多任務的支持

基本常見的RTOS都支持STemWin的多任務,移植起來也比較的簡單,下面這些是官方提供好的移植。

【STemWin教程入門篇】第1章 <wbr>STemWin介紹 

1.3.5       STemWin基本的內存需要

 

Example

Hello world

Window application

ROM

GUI core

5.9 kB

43 kB

 

Fonts

1.8 kB

12.5 kB

 

Application

38 B

2.7 kB

 

Startup code

300 B

300 B

 

Library

0.1 kB

1.5 kB

 

Total

8.1 kB

60 kB

ROM

GUI core

62 B

5.2 kB

 

Application

-

40 B

 

Stack

272 B

1.4 kB

 

Total

334 B

6.6 kB

這個只是官方提供的基本數據,僅供大家參考。具體還要看實際應用。

1.3.6       STemWin當前支持的控件

由於emWin在不斷的更新當中,這里是當前支持的大部分控件,但不是全部。

【STemWin教程入門篇】第1章 <wbr>STemWin介紹

【STemWin教程入門篇】第1章 <wbr>STemWin介紹

【STemWin教程入門篇】第1章 <wbr>STemWin介紹

【STemWin教程入門篇】第1章 <wbr>STemWin介紹

1.4  STM32F103和407跑STemWin性能測試

以前論壇上以及群里面的一些客戶對STM32F103和407跑STemWin持懷疑態度,覺得跑不起來,或者說實時性不行,刷屏比較慢,這里我專門的做了一些測試。

1.4.1       刷色塊

l  測試F4驅動RA8875的7寸800*480分辨率的屏。

優化底層的情況下,刷整個屏

【STemWin教程入門篇】第1章 <wbr>STemWin介紹 

沒有優化底層的情況下,刷整個屏

 

【STemWin教程入門篇】第1章 <wbr>STemWin介紹 

 通過上面的測試,有沒有看到差距,底層沒有經過優化的要620ms,而優化以后的刷整個屏只要25ms,

 620 / 25 = 24.8倍,能差出這么多來,可見經過優化和沒有優化的差距之大。由於RA8875有刷色塊的指令,這里再用3.0寸的測試一下(3.0寸的沒有專門的刷色塊指令)。

l  測試F4驅動SPFD5420的3寸400*240分辨率的屏。

優化底層的情況下,刷整個屏

【STemWin教程入門篇】第1章 <wbr>STemWin介紹 

沒有優化底層的情況下,刷這個屏

【STemWin教程入門篇】第1章 <wbr>STemWin介紹 

 有沒有看到差距,這里差出10倍來。

1.4.2       刷控件

l  測試F4驅動RA8875的7寸800*480分辨率的屏。

 這里刷一個如下圖所示樣子的控件,大小800*480

  【STemWin教程入門篇】第1章 <wbr>STemWin介紹

  優化底層的情況下,刷整個控件

【STemWin教程入門篇】第1章 <wbr>STemWin介紹 

 沒有優化底層的情況下,刷整個控件

【STemWin教程入門篇】第1章 <wbr>STemWin介紹

 

   有沒有看到差距。

l  測試F4驅動SPFD5420的3寸400*240分辨率的屏。

現在用3.0的屏刷控件,優化底層的情況下,刷整個控件

【STemWin教程入門篇】第1章 <wbr>STemWin介紹 

 沒有優化底層的情況下,刷整個控件

【STemWin教程入門篇】第1章 <wbr>STemWin介紹 

通過上面的比較,大家有沒有看到差距,是否還對用F1,F4跑emWin界面存在疑慮?對於刷圖片,本身STM32F1,STM32F4刷圖片的效果就比較差,這里就不做測試了。通過這個測試也說明了很重要的一點,那就是優化底層驅動的重要性。

 

1.5  STemWin論壇

自從國內的uCGUI論壇關閉以后,這方面比較好的論壇就很少了,論壇對於STemWin的發展也很重要。針對STemWin,我們自己建立的論壇:http://bbs.armfly.com/thread.php?fid=12。有興趣的可以在論壇跟大家探討相關的應用。

SEGGER官方也有自己的emWin論壇,地址是:http://forum.segger.com/

1.6  總結

關於STemWin的介紹就跟大家說這么多,更詳細的可以上我們的論壇進一步討論。還有一點要說明的就是SEGGER公司的所有軟件都是收費的,收費標准看這里:http://www.segger.com/pricing.html

 

轉自:http://www.360doc.com/showweb/0/0/779762529.aspx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM