请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

TouchGFX 4.23:支持矢量字体,节省Flash,更丰富的UI!

[复制链接]
STMCU-管管 发布时间:2024-1-11 08:40
TouchGFX 4.23:支持矢量字体,节省Flash,更丰富的UI!
TouchGFX 4.23 对Flash 的使用进行了整体优化。首先,它支持矢量字体的微控制器UI工具;其次,该新版本还支持直接将视频帧写入帧缓冲区从而节省存储空间。最后,可以通过仅对内部Flash编程来缩短编译时间。
/ ?  u3 H' m$ S) C) H' l7 N
12.png
越来越多的客户因为外部Flash已满,或想要去掉外部Flash,导致无法添加屏幕或语言功能。此外,由于存储器市场价格的波动性很大,尽量减少对存储器的需求可以有效提升产品的实用性和盈利性。因此,刚刚推出的TouchGFX新版本将为更多的微控制器带来UI特性。
! \8 }" M* K, z; C0 [; `7 ]5 L
TouchGFX 4.23新特性
1 ]2 E( t6 b0 q
矢量字体
, R  {& i- b, s- u/ ~文本是大多数UI的重要组成部分,但却最容易被忽视。比如,许多人甚至不清楚font和typeface之间的区别。Helvetica和Avenir经常被称作font,但实际上都属于typeface。typeface是一种设计语言,用来塑造一系列字母、数字和图标的形态。font是typeface的子集,主要是限定文字的粗细或大小等属性。因此,Helvetica是一种typeface,而12磅Helvetica则是一种font。同样,12磅Helvetica Bold是另一种font。
& Y' H; b+ h! R2 F% P; h这两者的区别为什么重要呢?因为嵌入式系统必须在编译时为每种字体渲染新的位图。PC需要使用轮廓字体(又称矢量字体),轮廓字体包含如何绘制的说明,而嵌入式系统需要使用位图。矢量字体需要很大的计算量,这对PC来说不是问题,但对微控制器来说,会造成UI运行缓慢。相反,已经完成渲染的位图不涉及任何计算,但会占用更多存储空间,因为系统必须对每种字体进行单独渲染。例如,三种Font(同一typeface所对应的三种不同大小)的位图会占用将近800字节的内存,而一个矢量文件所占用的内存不到200字节。
0 E# x) j! t! i2 w7 }
13.png
▲ 图示:渲染矢量字体
TouchGFX Designer能够在MCU上使用矢量字体的UI工具,为希望减少Flash占用空间的工程师带来了福音。有了这一功能,某些应用场景下,开发者只需使用MCU的内部Flash,大幅降低了BOM成本。产品或公司标识往往需要比字母文字系统用到更多的位图,因此节省存储空间的效果更加明显,实际效果因具体应用而异。此外,存储器市场价格波动频繁,而我们这个新版本可以帮助开发人员减少对外部Flash的需求。$ F( D% ~$ _4 v' p2 y/ j; J
意法半导体旗下已有多款STM32 MCU在技术上支持矢量字体,STM32U5和最新推出的STM32H7R/S内部集成了NeoChrom GPU,出色的加速矢量计算的能力让矢量计算真正切实可行。例如,STM32F7渲染一个矢量字体可能需要花费2.88 ms,而STM32U5F9仅需0.80 ms。同样,最近针对TouchGFX先前版本的矢量优化也能有效减轻负载。但并非每种UI都能从轮廓字体中受益,比如需要使用大量动画的系统。
- W" I3 ^( f! t# t# z- v& u矢量字体并不是节省存储空间的唯一方法,ST的L8压缩系统也可以缩小位图。每个项目都有不同的Flash需求,每个UI也都有特殊的渲染需求。有些项目只能使用有限的外部Flash,有些项目倾向于使用内部Flash,还有些项目仅需要缩短编程时间。但总的来说,越来越多的客户都希望UI占用的Flash空间更少。因此,矢量字体为无法通过其他方式缩减占用空间的UI提供了一个解决方案。
; x& h6 n+ v8 B  |& a2 ^
4 R( F6 ?( d* u7 A/ H6 W% K9 a$ f
3 P9 z8 ~7 k) O
将视频直接写入帧缓冲区
9 S, ]. d$ e- ZTouchGFX 4.23还具备一项有助于减少应用所占存储空间的功能,那就是自动将系统配置为直接写入帧缓冲区。通常情况下,系统在显示视频时会先将帧存储在视频缓冲区中,然后将其传输到提供显示的帧缓冲区。增加这一中间步骤是为了确保所有资源均处于可用状态,以保证平滑的动画播放效果。但这样会占用更多的存储空间,因为必须先将视频帧写入一个缓存,然后才能将其移动到帧缓冲区。这就导致在较小的STM32 MCU上显示视频需要更高的成本。  m( m" w3 G  a9 ^
14.png
▲ 图示:将视频帧直接写入帧缓冲区的示意图
TouchGFX之前的版本已经支持直接将视频帧写入帧缓冲区以进行纯软件渲染的功能。但使用硬件MJPEG解码器和Chrom-ART加速器需要复杂的手动实现,因为开发人员需要调整同步和底层驱动。这需要用到大量的专业知识,所以无法得到广泛应用。TouchGFX 4.23推出了一项新功能,可以自动完成微控制器的初始化,使用MJPEG引擎和Chrom-ART将视频帧直接写入帧缓冲区。该功能成为新的默认配置,可有效减少运行视频控件所需的内存空间。
- B1 \# @7 c2 v8 ^& S/ R! y% Z5 C, s5 ?( P/ ]# X/ h
5 X# U, [( {( k3 @
更快的Flash编程
- l6 q' d3 l, a" f& V. p6 mTouchGFX Designer新增了仅烧录内部Flash的功能,大大减少了编程时间。事实上,每当编译界面的时候,TouchGFX都会加载所有数据,其中包括存储在外部存储器中的数据(即使他们没有变化)。因此,有时即使开发人员没有更新任何存储在外部的数据,编译操作也可能需要花费近10分钟的时间。为了优化工作流程,TouchGFX Designer 4.23中新增了一个仅编程内部Flash的选项,可将编译操作的用时缩减为几秒钟。但开发人员应当注意,如果在修改存储在外部Flash中的资源后忘记对外部Flash进行烧录,则可能会对应用造成损坏。0 \& [2 b" c7 I+ f- s

" s- ~7 P+ e  X  p2 O
收藏 评论1 发布时间:2024-1-11 08:40

举报

1个回答
落花又见流水 回答时间:2024-1-15 10:21:52

很不错的功能,已经开始试用了

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版