zoukankan      html  css  js  c++  java
  • 【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就跟大家介绍这么多,更详细的可以上我们的论坛进一步讨论。

    微信公众号:armfly_com 安富莱论坛:www.armbbs.cn 安富莱淘宝:https://armfly.taobao.com
  • 相关阅读:
    多线程
    Java命令行传参
    IO流
    集合
    Java基础语法
    常见的数据结构
    泛型
    java 集合重要概念 (Set 的存储内存解析)
    java 集合重要概念 (== 和 equals 解读)
    java 集合重要概念 (实现一个简单的斗地主)
  • 原文地址:https://www.cnblogs.com/armfly/p/13852728.html
Copyright © 2011-2022 走看看