基于ARM支持实现MCU的高级视频图形功能

描述

需要高级视频图形功能的系统一直是实施的挑战。传统上,这些系统需要硬件功能和软件功能的复杂组合,以创建应用程序所需的必要的更高级别的视频和图形。最新的基于ARM的MCU现在提供了一套全面的高级硬件功能,通常将常见的视频和图形标准作为独立模块实现,从而最大限度地减少了对这些硬件功能进行“硬编码”的需求。此外,广泛的基于ARM的生态系统提供了大量软件支持,用于实现常见的应用程序级功能(例如,轻松构建图形用户界面或GUI的应用程序),只需极少量的低级编码。广泛的参考设计和硬件平台允许设计人员利用制造商开发的例程来简化他们自己的自定义应用程序的创建。让我们看一下基于ARM的MCU系列中现有的一些新的视频硬件和软件功能。

三个关键要素:输入,处理和显示

将三个关键视频图形元素分成输入是很方便的,处理和显示。输入功能通常允许设备通过各种标准连接到各种传感器和摄像机。处理功能支持将一个标准转换为另一个标准,创建用于显示的多层图形对象(例如,作为GUI中的元素),以及用于创建具有深度和着色属性的对象的更复杂的函数。最后,显示功能将存储在内部存储器中的图形元素转换为可以传输到平板显示器或电视的数据。现在让我们使用基于ARM的示例MCU更详细地查看每个元素。

视频图形输入

大多数基于ARM的MCU都包含一个通用图像传感器的视频输入接口。这些接口通常使用标准格式(例如RGB或YCbCr)将视频输入存储到内部存储器中,该标准格式可以被处理然后显示在标准LCD面板上。 Atmel SAMA5D3系列基于ARM的MCU是一个很好的例子,它说明了一些所需的视频输入功能。主视频输入模块是图像传感器接口(ISI),使用两种常用方法连接到图像传感器:与垂直和水平同步信号的硬件同步,或国际电信联盟建议书(ITU-R)标准(如BT)。 601/656)。 BT.601/656的使用减少了引脚数,因为不需要垂直和水平信号,但灵活性不如通用的垂直和水平硬件同步模式。图像传感器数据由最多12位并行数据组成,支持高达2048 x 2048的分辨率。完整的输入数据路径如下图1所示。

mcu

图1:Atmel SAMA5D3 MCU的视频输入路径(由Atmel提供)。

时序信号和图像传感器输入数据显示在图的左侧。在图的中间底部显示了两个输入路径;一个用于预览路径,一个用于编解码器路径。可以格式化预览路径,以便直接在输出LCD面板上转换然后显示输入视频(可能是RGB格式)。 2D图像缩放器和像素格式器可用于实现简单的视频缩放和剪切。可以通过中断和DMA访问来支持完整路径,而根本不涉及CPU。如果需要视频处理,输入数据可以转换(例如,从RGB转换为YCbCr),并使用图1底部显示的编解码器路径以打包格式存储在存储器中.FIFO缓冲区和带散射聚集的AHB主机功能补充了数据输入功能。

使用中断和DMA传输管理数据路径的能力对于提高视频应用的效率至关重要。这使得ARM CPU可以专注于实现管理功能并为功能区分提供定制处理。 Atmel SAMA5D3是具有重要自主操作的设备的一个很好的例子,当处理效率至关重要时,您应该注意这一点。

在许多情况下,视频数据已经过压缩处理,需要以不同的格式捕获。例如,安全摄像机通常以压缩的JPEG格式提供视频数据,以减少传输视频数据所需的带宽。这可以降低接收端的功耗要求,并简化数据带宽要求。加密通常用于保护视频数据免受网络入侵。让我们考虑使用STMicroelectronics STM32F207 MCU作为目标平台的示例安全摄像头设计。

STM32F207数码相机输入是一个同步并行接口,能够从外部CMOS摄像头模块捕获高速图像数据。它支持常见的格式,如YCbCr4:2:2,RGB656,8/10/12/14位逐行扫描视频和JPEG。 JPEG在低功耗应用中很有用,因为它是压缩的,因此传输图像所需的带宽较少。 STM32F207在视频流的水平同步部分内接收JPEG视频,如图2所示。请注意,HSYNC信号的宽度根据每个JPEG数据包所需的数据量而变化。开始和结束时的指示由VSYNC信号限制,以便于识别。

mcu

图2:STM32F207上带摄像头输入的JPEG捕获(由STMicroelectronics提供)。

JPEG视频捕获数据后,使用DMA控制器将数据存储在内存中以减少CPU开销。在传输之前,视频数据被加密,使得视频难以被网络入侵者捕获或篡改(你经常看到安全视频数据在黑暗电影中被“黑客攻击”)。 STM32F207具有片上加密处理器,支持流行的加密标准,如Triple-DES和AES-256。加密处理器作为32位AHB外设访问,并支持DMA传输。随机数生成器和安全散列处理器也可用于添加身份验证功能,以便安全摄像头的命令和从摄像头传输的数据可以证明来自预期的来源。

一旦数据完全处理并准备好发送时,STM32F207有一个以太网控制器,支持使用符合IEEE 802.3标准的MII接口进行10/100数据传输,以连接到外部PHY。控制器还支持LAN唤醒帧,以便在等待以太网端口上的活动时可以使用低功耗模式。双2 KB FIFO(一个用于发送,一个用于接收)提供足够的缓冲存储,以保持高效率,从而降低功耗。 DMA用于传输以太网流量以及进一步降低CPU开销。普遍使用DMA将数据从输入,处理转移到传输,是低功耗视频实现中的常用技术,并且应该是任何设计中关键因素,其中功率效率是关键考虑因素。

视频图形处理

视频图形处理是高级ARM MCU和MPU近年来增加的复杂功能之一。 MPU特别增加了用于视频处理的硬件加速,旨在创建可包括实时视频的创新用户界面。将视频数据从一种格式转换为另一种格式,裁剪,缩放和颜色校正目标显示器的属性或改变照明条件的能力可以显着增强用户体验。飞思卡尔i.MX53xx具有片上2D图形处理单元(GPU)和独立的3D GPU。 2D GPU实现了针对OpenVG 1.0.1图形API和功能集的各种图形和视频处理功能。 3D GPU的目标是DirectX9着色和纹理,用于构建高级图形图像。

2D GPU在构建视觉上引人注目的UI方面特别有用,并且可以使用由3D GPU创建的图形元素。 2D GPU支持位图图形操作,例如BitBlt,填充和光栅化器操作,帧缓冲区最高可达2048 x 2048,采用全范围的源和目标位图格式(例如,从ARGB4444到ARGB8888)。提供了三个用于掩模,图案和alpha层的独立源位图,以简化复杂图形构造的实现。矢量图形引擎结合2D单元提供多边形和几何操作。 2D GPU的框图如下图3所示。

mcu

图3:飞思卡尔i.MX53xx MPU嵌入式2D GPU框图(由飞思卡尔提供)。

2D GPU接受命令流,如图3顶部所示。命令被分离并发送到2D单元或矢量图形单元。 2D单元通过存储器仲裁器对图形存储器上的像素,梯度,纹理和颜色进行操作。矢量单元还使用存储器仲裁器来访问图形存储器,从而生成并操作几何形状。仲裁器通过优先考虑和组合存储器操作来最大化带宽效率。

i.MX53视频图形系统的架构,具有单独的2D,矢量和3D单元并不罕见。拥有支持不同标准的独立块可以更轻松地创建特定于功能的驱动程序,中间件和更复杂的高级应用程序接口(API),从而使设计人员能够专注于他们的关键差异化因素,而不是花时间实施低级别的“家政“功能。很多时候,这些模块还支持低功耗模式,其中未使用的元件可以断电以显着降低功耗。当视频图形处理是您设计中的重要要求时,请寻找这些类型的功能。

视频图形输出

在某些应用中,不需要直接视频输入功能;但是,拥有视频输出功能至关重要。例如,手持式测试设备可能需要图形用户界面和生成视频输出的能力,以图形方式显示实时测试结果。这些类型的功能的常见示例可以在超声医疗设备,材料检查或电信频率测试中找到。恩智浦LPC4350双ARM内核MCU是非常适合这些应用的器件类型的一个很好的例子。恩智浦LPC4530的LCD面板输出控制器如下图4所示。

mcu

图4:恩智浦LPC4350双ARM内核MCU上的LCD输出(由恩智浦提供)。

系统界面帧缓冲器是通过图4中左侧所示的AHB主机实现的。控制器将像素编码数据转换为各种可能的显示设备所需的格式,包括单或双超扭曲向列(STN) )面板或薄膜晶体管(TFT)彩色面板。支持320 x 240到1024 x 768的分辨率,TFT显示屏上每像素高达24位真彩色非托盘色。 245个条目乘以16位的RAM调色板可用于托盘化实现。请注意,当存在双面板时可以使用单独的DMA FIFO,或者当只有一个面板时可以组合使用单独的DMA FIFO。这有助于提高传输效率并降低CPU开销。包含硬件光标以简化图形用户界面(GUI)实现。

NXP LPC4350上提供的双ARM内核对于具有大型或复杂GUI功能的应用程序特别有用。其中一个ARM内核可专用于管理用户界面和测试数据的实时显示。这有助于将时间关键功能与不太关键的管理或处理功能分开。例如,数据处理的短暂延迟比数据显示期间的延迟(创建“参差不齐”和分散注意力的测试结果)更不明显。将CPU专用于键显示功能也有助于优化功率,因为当显示器未激活时可以将显示处理器置于低功率模式。您只需在需要更新显示器时唤醒CPU。

基于ARM的生态系统支持

ARM CPU的普及使用创建了一个非常强大的生态系统,支持与视频图形相关的功能。软件支持包括视频编解码器,用于构建GUI功能的工具,甚至高级视频处理功能。一个流行的用户界面(UI)构建器是Mentor Graphics的Inflexion UI。它支持拖放创建引人注目的用户界面,可以针对运行RTOS的应用程序,并可以使用目标设备的OpenGL硬件图形引擎来实现2D,2.5D或全3D效果。

另一个例子是来自Segger的emWin。 emWin中间件系统为图形LCD提供了高效的GUI。它以“C”源代码的形式提供,可在基于ARM的设备上轻松实现。该系统包括对小部件库,窗口管理器,渲染支持(具有图形库,基本字体和触摸/鼠标支持)以及输出和存储设备驱动程序的支持。这些只是ARM软件生态系统中许多图形和面向GUI的元素的两个例子。

硬件支持非常丰富,供应商和第三方提供可开发基于视频的应用程序的开发平台。飞思卡尔i.MX53器件具有完整的开发平台,可针对复杂的设计进行针对性的参考设计,例如无线摄像头接口,可视电话平台或更多通用开发平台。即使是用于i.MX53的简单入门套件,如MCIMX53-START-R-ND,也可用于评估i.MX53的一些高级视频图形功能,包括启动Linux,连接摄像头和驾驶LCD面板。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分