【STM32F429】第3章 ThreadX GUIX和GUIX Studio介紹


最新教程下載:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429

第3章   ThreadX GUIX和GUIX Studio介紹

本章主要介紹GUIX和GUIX Studio的基礎知識。

3.1 初學者重要提示

3.2 Express Logic公司介紹

3.3 GUIX簡介

3.4 GUIX Studio簡介

3.5 GUIX性能測試

3.6 GUIX論壇

3.7 總結

 

 

3.1   初學者重要提示

  1.   GUIX通過了醫療認證IEC-62304 Class C,汽車認證IEC-61508 ASIL D,工業認證IEC-61508 SIL 4和運輸/鐵路認證EN50128,表明GUIX可用於安全關鍵型系統

3.2   Express Logic公司介紹

ThreadX的作者是William lamie(同樣是Nucleus RTOS的原始作者,於1990年發布)。1996的時候成立了Express Logic,並於1997發布首版ThreadX RTOS。

  •   ThreadX4發布於2001年,ThreadX5發布於2005年,ThreadX6發布於2020年。
  •   FileX – ThreadX的嵌入式文件系統於1999年發布首版。
  •   NetX – ThreadX的嵌入式TCP / IP網絡協議棧於2002年發布首版。
  •   USBX – ThreadX的嵌入式USB協議棧於2004年發布首版。
  •   2009年推出了適用於SMP多核環境的ThreadX。
  •   2011年發布支持動態應用加載的ThreadX Modules。
  •   GUIX – ThreadX的嵌入式UI於2014年發布首版。
  •   Microsoft在2019年4月18日以未公開的價格購買了Express Logic。

3.2.1  ThreadX內核

ThreadX幾乎是小型RTOS的巔峰之作,不管你之前用的那個OS,如果有精力建議還是學習下。62億電子設備采用,是其它RTOS無法逾越的高山。ThreadX的產品涵蓋了各種領域,包括NASA的多個太空探測項目,飛機自動駕駛儀系統,火星偵察軌道器等。

 

ThreadX及其所有中間件的安全認證等級,至今沒有一款小型RTOS可以與其匹敵。這么多安全認證,公司要入大量財力,人力和物力才可以完成,早前Micrium的一篇文章還談過這個問題,投入了太多資金和人力了,還與風河的VxWorks做了簡單對比。

(1)醫療 - FDA510(k),IEC-62304 Class C,IEC-60601,ISO-14971

(2)工業 - UL-1998,IEC-61508 SIL 4

(3)運輸/鐵路 - EN50128 SIL 4,BS50128,  49CFR236,IEC-61508

(4)航空航天設備 - DO-178B,ED-12B,DO-278

(5)汽車    - IEC-61508 ASIL D

(6)核應用 - IEC-61508

(7)家電   - UL/IEC 60730/60335

規格如下:

 

更詳細的介紹地址:https://rtos.com/solutions/threadx/real-time-operating-system/

3.2.2  FileX文件系統

ThreadX的文件系統非常強勁,通過了各行各業的高等級安全認證。其它文件系統別說安全認證了,安全措施都不多,甚至沒有。

 

規格如下:

 

再看API,一個文件系統竟然提供了230多個,僅異常處理的API就有20個(一個文件一個API)

 

更詳細的介紹看此貼:https://rtos.com/solutions/filex/embedded-file-system/

3.2.3  NetX網絡協議棧

ThreadX的網絡協議棧對其它網絡協議棧幾乎是碾壓性優勢。一張圖,幾乎涵蓋了我們日常項目大部分應用:

 

各個行業的安全認證:

 

物聯網協議方向安全認證:

 

加密庫也做了認證:

 

更多介紹可以看此貼:https://rtos.com/solutions/netx-duo/embedded-network-stack/

3.2.4  USBX協議棧

USB協議棧也不錯,日常用的功能也齊全

 

規格如下:

 

更多介紹可以看此貼:https://rtos.com/solutions/usbx/embedded-usb/

3.2.5  LevelX擦寫均衡保護層

LevelX為NAND和NOR型Flash提供擦寫均衡支持,並且對於NAND型,還支持ECC校驗和壞塊管理。

由於NAND和NOR型Flash擦除次數是有限的,因此均勻分配閃存使用至關重要。這通常稱為擦寫均衡,LevelX為此而生。LevelX向用戶提供一個邏輯扇區陣列,這些邏輯扇區映射到LevelX內部的物理閃存。應用程序可以將LevelX與FileX結合使用,也可以直接讀取/寫入邏輯扇區。LevelX專為容錯而設計。Flash更新是分多個步驟進行的,每個步驟都可以中斷。在下一次操作期間,LevelX自動恢復到最佳狀態。

3.3   GUIX簡介

GUIX是微軟的高級工業級GUI解決方案,專門針對深度嵌入式,實時和IoT應用程序而設計。微軟還提供了名為GUIX Studio的桌面開發工具,該工具允許開發人員在桌面上設計其GUI並生成GUIX代碼,然后可以將其導出到目標。

GUIX通過了醫療認證IEC-62304 Class C,汽車認證IEC-61508 ASIL D,工業認證IEC-61508 SIL 4和運輸/鐵路認證EN50128。表明GUIX可用於安全關鍵型系統。

3.3.1  基礎介紹

  直觀一致的API

  •   名詞動詞命名約定。
  •   所有API都有gx_前綴,方便識別GUIX的函數。
  •   事件驅動模式。
  •   需要時,支持直接canvas畫布繪制。
  •   方便與GUIX Studio交互。
  •   API支持繪制直線,矩形,多邊形等。
  •   API支持圓圈,圓弧,餅圖,弦圖和橢圓繪制。
  •   API支持文本繪制和位置調整。
  •   支持抗鋸齒,紋理填充和實體填充。
  •   支持創建和修改屏幕和控件。

  控件庫

  •   預定義,但是可以自定義的一組通用接口元素。
  •   小巧,緊湊且高效。
  •   庫包括按鈕、儀表、列表,窗口,滾動條,滑塊,進度條等
  •   完全可定制的繪制和外掛。
  •   完全可定制的操作和事件管理。
  •   只有控件的使用與應用代碼關聯。

  數學和實用功能

  •   支持sin,cos,arcsin,arccos,tan和平方根、
  •   支持操作屏幕區域。
  •   系統配置和啟動
  •   內存池定義。
  •   定時器管理、
  •   動畫管理。
  •   Dirty列表維護(即需要繪制的區域)

  圖像處理

  •   支持jpeg和png解碼。
  •   支持抖動和顏色格式轉換。
  •   支持圖像旋轉。
  •   支持圖像放縮。
  •   支持圖像混合。

  事件處理

  •   空閑時自動掛起GUIX線程。
  •   UI設計中流行的事件驅動編程模型。
  •   將驅動程序與GUIX繪制任務隔離。
  •   發送和接收事件功能。
  •   所有GUIX小控件的預定義事件類型。
  •   用戶自定義事件。

  Canvas畫布處理

  •   裁剪和Z序處理。
  •   控件和硬件隔離。
  •   應用和硬件隔離。
  •   自動刷新Dirty區域。
  •   支持多圖層畫布的混合。
  •   可以由應用程序直接調用。

  輸入設備驅動

  •   定制硬件支持,GUIX和硬件隔離。
  •   支持電阻式,電容式和實體鍵盤。
  •   輸入事件傳遞到GUIX事件隊列。

  顯示驅動和目標硬件

  •   各種顏色格式和顏色深度支持。
  •   可以定制圖形加速,通過底層接口函數實現。
  •   幾乎任何支持圖形輸出的屏,都可以使用GUIX。
  •   支持多屏顯示。

3.3.2  內存需求

對於集成了內部GRAM和自刷新技術的顯示屏,可以不需要canvas畫布支持。這種情況下,GUIX需要的最小Flash是13.2KB,RAM是4KB。

所需畫布大小的計算公式如下:

Canvas RAM (bytes) = (x * y * (bpp/8))

其中x和y分別是畫布的長和寬,而bpp是畫布的顏色深度,比如RGB565,顏色深度bpp就是16bit,即兩字節。

另外大多數應用還會用到圖形資源和字庫,這個占用大小由實際應用而定。

3.3.3  API命名規則

GUIX的函數命名規則是:Noun-verb naming convention (名詞動詞命名約定)。根據這個命名規格,我們實際看下個API,比如:gx_widget_front_move ,前綴gx,名詞widget_front_,動詞move。再看下面API截圖(部分函數截圖):

 

基本也都符合這個要求。

3.3.4  快速執行

Azure RTOS GUIX是專門用C編寫的,旨在提高速度。Azure RTOS GUIX具有最小的內部函數調用分層。

此外,Azure RTOS GUIX還提供了優化的剪輯,繪制和事件處理。所有這些以及通用的面向性能的設計理念可幫助Azure RTOS GUIX實現最快的性能。

3.3.5  安全認證

GUIX通過了醫療認證IEC-62304 Class C,汽車認證IEC-61508 ASIL D,工業認證IEC-61508 SIL 4和運輸/鐵路認證EN50128。表明GUIX可用於安全關鍵型系統。

注:SGS-TUV公司由德國SGS集團和TUV合資企業組成,現已成為領先的認證公司,致力於測試,審核,驗證和認證全球安全相關的嵌入式軟件。

 

3.3.6  簡單易用

GUIX的使用非常方便,利用GUIX Studio可以讓開發人員在桌面上方便的生成目標板運行的C代碼,從而使其變得更加容易。然后,用戶可以添加自己的自定義事件處理和繪圖功能,以完成其GUI。

使用Azure RTOS GUIX API也很方便。GUIX API既直觀又功能強大。API名稱是用真實的單詞構成的,而不是一些無意義的單詞。所有GUIX API都有前導gx_並遵循名詞-動詞命名約定。此外,整個API都具有功能一致性。例如,所有初始化控件控制塊的API均命名為<widget_type> _create,並且每種控件的創建函數形參始終以相同的順序定義。

3.3.7  支持的控件種類

GUIX默認支持的控件類型如下,當然。GUIX也支持用戶自定義各種控件。

  •   Accordion Menu
  •   Button
  •   Checkbox
  •   Circular Gauge
  •   Drop Down List
  •   Horizontal List
  •   Horizontal Scrollbar Window
  •   Icon
  •   Icon Button
  •   Line Chart
  •   Menu
  •   Multi Line Text Button
  •   Multi Line Text Input
  •   Multi Line Text View
  •   Numeric Pixelmap Prompt
  •   Numeric Prompt
  •   Numeric Scroll Wheel
  •   Pixelmap Button
  •   Pixelmap Prompt
  •   Pixelmap Slider
  •   Pixelmap Sprite
  •   Progress Bar
  •   Prompt
  •   Radial Progress Bar
  •   Radio Button
  •   Scroll Wheel
  •   Single Line Text Input
  •   Slider
  •   String Scroll Wheel
  •   Text Button
  •   Tree View
  •   Vertical List
  •   Vertical Scrollbar

3.3.8  完善的底層繪圖API

Azure RTOS GUIX提供了強大的畫布繪圖API,允許應用程序實現復雜的圖形形狀。

所有功能都支持高顏色深度目標設備的抗鋸齒,並且所有形狀都可以填充輪廓,包括實心和像素圖案填充。當以16 bpp和更高的色深運行時,所有繪圖均支持alpha。繪圖功能包括:

  •   Arc Draw
  •   Circle Draw
  •   Line Draw
  •   Pie Draw
  •   Pixelmap Blend
  •   Pixelmap Tile
  •   Polygon Draw
  •   Text Draw
  •   Chord Draw
  •   Ellipse Draw
  •   Pixel Draw
  •   Pixelmap Draw
  •   Pixelmap Rotate
  •   Rectangle Draw
  •   Text Blend

3.3.9  免費字體

GUIX提供了一組免費的TrueType矢量字體。開發人員可以根據需要添加其他TrueType字體。GUIX字體格式支持8bpp抗鋸齒,4bpp抗鋸齒和1bpp單色字體。對於大多數資源受限的應用程序,使用GUIX Studio將TrueType字體預先渲染為壓縮的位圖格式。

 

  •   免費字體搜集貼:

http://www.armbbs.cn/forum.php?mod=viewthread&tid=98594

3.3.10        支持的顏色格式和觸摸

GUIX支持的顏色類型也比較豐富,常用的顏色類型,從單色到32bit顏色格式,都支持了:

  •   GX_COLOR_FORMAT_MONOCHROME 1
  •   GX_COLOR_FORMAT_MONOCHROME_INVERTED 2
  •   GX_COLOR_FORMAT_2BIT_4GRAY 3
  •   GX_COLOR_FORMAT_2BIT_GRAY_INVERTED 4
  •   GX_COLOR_FORMAT_4BIT_GRAY 5
  •   GX_COLOR_FORMAT_4BIT_GRAY_INVERTED 6
  •   GX_COLOR_FORMAT_4BIT_VGA 7
  •   GX_COLOR_FORMAT_8BIT_GRAY 8
  •   GX_COLOR_FORMAT_8BIT_GRAY_INVERTED 9
  •   GX_COLOR_FORMAT_8BIT_PALETTE 10
  •   GX_COLOR_FORMAT_8BIT_PACKED_PIXEL 11
  •   GX_COLOR_FORMAT_15BIT_BGR 12
  •   GX_COLOR_FORMAT_15BIT_RGB 13
  •   GX_COLOR_FORMAT_16BIT_RGB 14
  •   GX_COLOR_FORMAT_16BIT_ARGB 15
  •   GX_COLOR_FORMAT_16BIT_BGRA 16
  •   GX_COLOR_FORMAT_16BIT_BGR 17
  •   GX_COLOR_FORMAT_24BIT_RGB 18
  •   GX_COLOR_FORMAT_24BIT_BGR 19
  •   GX_COLOR_FORMAT_24BIT_XRGB 20
  •   GX_COLOR_FORMAT_24BIT_BGRX 21
  •   GX_COLOR_FORMAT_32BIT_ARGB 22
  •   GX_COLOR_FORMAT_32BIT_RGBA 23
  •   GX_COLOR_FORMAT_32BIT_ABGR 24
  •   GX_COLOR_FORMAT_32BIT_BGRA 25

 

而觸摸方面,電阻屏,電容屏和實體按鍵全都支持。

3.3.11        GUIX模擬器

GUIX提供了VS2019模擬器版本,位於GUIX Studio安裝目錄的如下路徑(路徑里面的6.01是版本號,隨着以后的升級,版本號會遞增):

 

使用VS2019打開這些例子,就可以直接編譯運行。

 

注意:GUIX Studio V6.00版本里面案例可以直接打開運行,V6.01版本要注意此貼的問題:

http://www.armbbs.cn/forum.php?mod=viewthread&tid=98923

 

 

3.3.12        支持的硬件平台

GUIX手冊中羅列了一批GUIX支持的硬件平台,實際上,凡是裸機能夠驅動的LCD,都可以移植GUIX(滿足GUIX最小RAM和最小Flash需求即可)。

3.4   GUIX Studio簡介

使用GUIX Studio,完全可以讓美工前期做好各種界面效果,后期工程師添加操作流程和觸發事件。的確是做的非常成熟,可以添加設置各種主題,各種界面效果,各種字體展示,各種圖片格式設置,使用GUIX Studio,基本可以實現GUI設計一條龍。

  GUIX Studio生成的文件

  •   自動生成ANSI C文件。
  •   讓用戶應用設計與界面設計隔離開。
  •   包含設計所需的字體和圖像。
  •   生成的代碼可以和用戶應用代碼一起編譯。
  •   界面更新不影響用戶應用邏輯。
  •   資源ID保證創建的語言和主題獨立性。
  •   用戶可以提供自定義繪圖和事件處理能力。

下面這些效果,都是在GUIX上設計完成的:

GUIX提供了應用案例界面效果展示:

智能家居:

 

醫療類:

 

家電:

 

汽車電子:

 

工業控制:

 

3.5   GUIX性能測試

ThreadX GUIX在STM32上的刷屏流暢度展示,效果頂呱呱:

http://www.armbbs.cn/forum.php?mod=viewthread&tid=98185

3.6   GUIX論壇

針對ThreadX GUIX,專門建立了論壇版塊:

http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12

當然,大家也可以上GUIX的官方Github開源地址提交問題:

https://github.com/azure-rtos

3.7   總結

關於ThreadX GUIX就跟大家介紹這么多,更詳細的可以上我們的論壇進一步討論。

 


免責聲明!

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



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