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

it2024-11-09  6

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

第3章   ThreadX GUIX和GUIX Studio介绍

本章主要介绍GUIX和GUIX Studio的基础知识。

目录

第3章   ThreadX GUIX和GUIX Studio介绍

3.1   初学者重要提示

3.2   Express Logic公司介绍

3.2.1  ThreadX内核

3.2.2  FileX文件系统

3.2.3  NetX网络协议栈

3.2.4  USBX协议栈

3.2.5  LevelX擦写均衡保护层

3.3   GUIX简介

3.3.1  基础介绍

3.3.2  内存需求

3.3.3  API命名规则

3.3.4  快速执行

3.3.5  安全认证

3.3.6  简单易用

3.3.7  支持的控件种类

3.3.8  完善的底层绘图API

3.3.9  免费字体

3.3.10        支持的颜色格式和触摸

3.3.11        GUIX模拟器

3.3.12        支持的硬件平台

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就跟大家介绍这么多,更详细的可以上我们的论坛进一步讨论。

 

最新回复(0)