最新教程下載: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 初學者重要提示
- 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就跟大家介紹這么多,更詳細的可以上我們的論壇進一步討論。