最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429
本章主要介绍GUIX和GUIX Studio的基础知识。
3.1 初学者重要提示
3.2 Express Logic公司介绍
3.3 GUIX简介
3.4 GUIX Studio简介
3.5 GUIX性能测试
3.6 GUIX论坛
3.7 总结
ThreadX的作者是William lamie(同样是Nucleus RTOS的原始作者,于1990年发布)。1996的时候成立了Express Logic,并于1997发布首版ThreadX RTOS。
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/ 。
ThreadX的文件系统非常强劲,通过了各行各业的高等级安全认证。其它文件系统别说安全认证了,安全措施都不多,甚至没有。
规格如下:
再看API,一个文件系统竟然提供了230多个,仅异常处理的API就有20个(一个文件一个API)
更详细的介绍看此贴:https://rtos.com/solutions/filex/embedded-file-system/。
ThreadX的网络协议栈对其它网络协议栈几乎是碾压性优势。一张图,几乎涵盖了我们日常项目大部分应用:
各个行业的安全认证:
物联网协议方向安全认证:
加密库也做了认证:
更多介绍可以看此贴:https://rtos.com/solutions/netx-duo/embedded-network-stack/ 。
USB协议栈也不错,日常用的功能也齐全
规格如下:
更多介绍可以看此贴:https://rtos.com/solutions/usbx/embedded-usb/
LevelX为NAND和NOR型Flash提供擦写均衡支持,并且对于NAND型,还支持ECC校验和坏块管理。
由于NAND和NOR型Flash擦除次数是有限的,因此均匀分配闪存使用至关重要。这通常称为擦写均衡,LevelX为此而生。LevelX向用户提供一个逻辑扇区阵列,这些逻辑扇区映射到LevelX内部的物理闪存。应用程序可以将LevelX与FileX结合使用,也可以直接读取/写入逻辑扇区。LevelX专为容错而设计。Flash更新是分多个步骤进行的,每个步骤都可以中断。在下一次操作期间,LevelX自动恢复到最佳状态。
GUIX是微软的高级工业级GUI解决方案,专门针对深度嵌入式,实时和IoT应用程序而设计。微软还提供了名为GUIX Studio的桌面开发工具,该工具允许开发人员在桌面上设计其GUI并生成GUIX代码,然后可以将其导出到目标。
GUIX通过了医疗认证IEC-62304 Class C,汽车认证IEC-61508 ASIL D,工业认证IEC-61508 SIL 4和运输/铁路认证EN50128。表明GUIX可用于安全关键型系统。
直观一致的API
控件库
数学和实用功能
图像处理
事件处理
Canvas画布处理
输入设备驱动
显示驱动和目标硬件
对于集成了内部GRAM和自刷新技术的显示屏,可以不需要canvas画布支持。这种情况下,GUIX需要的最小Flash是13.2KB,RAM是4KB。
所需画布大小的计算公式如下:
Canvas RAM (bytes) = (x * y * (bpp/8))
其中x和y分别是画布的长和宽,而bpp是画布的颜色深度,比如RGB565,颜色深度bpp就是16bit,即两字节。
另外大多数应用还会用到图形资源和字库,这个占用大小由实际应用而定。
GUIX的函数命名规则是:Noun-verb naming convention (名词动词命名约定)。根据这个命名规格,我们实际看下个API,比如:gx_widget_front_move ,前缀gx,名词widget_front_,动词move。再看下面API截图(部分函数截图):
基本也都符合这个要求。
Azure RTOS GUIX是专门用C编写的,旨在提高速度。Azure RTOS GUIX具有最小的内部函数调用分层。
此外,Azure RTOS GUIX还提供了优化的剪辑,绘制和事件处理。所有这些以及通用的面向性能的设计理念可帮助Azure RTOS GUIX实现最快的性能。
GUIX通过了医疗认证IEC-62304 Class C,汽车认证IEC-61508 ASIL D,工业认证IEC-61508 SIL 4和运输/铁路认证EN50128。表明GUIX可用于安全关键型系统。
注:SGS-TUV公司由德国SGS集团和TUV合资企业组成,现已成为领先的认证公司,致力于测试,审核,验证和认证全球安全相关的嵌入式软件。
GUIX的使用非常方便,利用GUIX Studio可以让开发人员在桌面上方便的生成目标板运行的C代码,从而使其变得更加容易。然后,用户可以添加自己的自定义事件处理和绘图功能,以完成其GUI。
使用Azure RTOS GUIX API也很方便。GUIX API既直观又功能强大。API名称是用真实的单词构成的,而不是一些无意义的单词。所有GUIX API都有前导gx_并遵循名词-动词命名约定。此外,整个API都具有功能一致性。例如,所有初始化控件控制块的API均命名为<widget_type> _create,并且每种控件的创建函数形参始终以相同的顺序定义。
GUIX默认支持的控件类型如下,当然。GUIX也支持用户自定义各种控件。
Azure RTOS GUIX提供了强大的画布绘图API,允许应用程序实现复杂的图形形状。
所有功能都支持高颜色深度目标设备的抗锯齿,并且所有形状都可以填充轮廓,包括实心和像素图案填充。当以16 bpp和更高的色深运行时,所有绘图均支持alpha。绘图功能包括:
GUIX提供了一组免费的TrueType矢量字体。开发人员可以根据需要添加其他TrueType字体。GUIX字体格式支持8bpp抗锯齿,4bpp抗锯齿和1bpp单色字体。对于大多数资源受限的应用程序,使用GUIX Studio将TrueType字体预先渲染为压缩的位图格式。
http://www.armbbs.cn/forum.php?mod=viewthread&tid=98594 。
GUIX支持的颜色类型也比较丰富,常用的颜色类型,从单色到32bit颜色格式,都支持了:
而触摸方面,电阻屏,电容屏和实体按键全都支持。
GUIX提供了VS2019模拟器版本,位于GUIX Studio安装目录的如下路径(路径里面的6.01是版本号,随着以后的升级,版本号会递增):
使用VS2019打开这些例子,就可以直接编译运行。
注意:GUIX Studio V6.00版本里面案例可以直接打开运行,V6.01版本要注意此贴的问题:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=98923 。
GUIX手册中罗列了一批GUIX支持的硬件平台,实际上,凡是裸机能够驱动的LCD,都可以移植GUIX(满足GUIX最小RAM和最小Flash需求即可)。
使用GUIX Studio,完全可以让美工前期做好各种界面效果,后期工程师添加操作流程和触发事件。的确是做的非常成熟,可以添加设置各种主题,各种界面效果,各种字体展示,各种图片格式设置,使用GUIX Studio,基本可以实现GUI设计一条龙。
GUIX Studio生成的文件
下面这些效果,都是在GUIX上设计完成的:
GUIX提供了应用案例界面效果展示:
智能家居:
医疗类:
家电:
汽车电子:
工业控制:
ThreadX GUIX在STM32上的刷屏流畅度展示,效果顶呱呱:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=98185 。
针对ThreadX GUIX,专门建立了论坛版块:
http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12。
当然,大家也可以上GUIX的官方Github开源地址提交问题:
https://github.com/azure-rtos 。
关于ThreadX GUIX就跟大家介绍这么多,更详细的可以上我们的论坛进一步讨论。