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

2020-10-27 14:51:46 浏览数 (1)

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

0 人点赞