基于HDMIRx CEC的电视待机唤醒方案的软件设计

2021-10-01 02:39:56,龙
电子技术应用 2021年9期
关键词:待机单板中间件

吕 亮 ,龙 华

(1.东南大学 微电子学院,江苏 南京 210000;2.华为技术有限公司,广东 深圳 518000)

0 引言

当前,常见的高清视频接口有HDMI、VGA、DP 和DVI[1-2]。HDMI 作为当今主流的多媒体高速数字接口,依据最新的HDMI2.1 协议,其支持8K 甚至更高分辨率的数据传输[3]。其广泛应用于大多数知名品牌的电视、机顶盒等音视频设备上,甚至使用一个遥控器就可以控制多个音视频设备[4-5]。HDMI 拥有5种不同的线缆,其分别拥有不同的引脚分布,如图1 所示。而在实际场景中,种类A的线缆用得较多,其拥有19 个引脚,图2 为引脚的分布图。其中,CEC(Consumer Electronics Control)信 号通过引脚13 传输,作为HDMI 接口的一部分。CEC 总线作为控制信号被分离出来,使得在不增加数据占用带宽的情况下完成高速复杂的通信要求[6]。随着CEC 应用范围越来越大,不同的厂商赋予了CEC 技术不同的名字,如:索尼的Bravia Theater Sync、松下的VIERALINK、三星的ANYNET+和LG的SIMPLELINK 等[7]。

图1 HMDI 线缆分类

图2 线缆A 引脚分布

CEC 系统的设计可以分为CEC 控制器的设计和CEC 软件部分的设计两部分。文献[8]和[9]通过Verilog仿真工具和FPGA的开发板完成了对CEC 控制器的设计实现目的,这些方法可以作为IP 广泛地应用到支持HDMI 接口的SoC 开发中。文献[10]考虑到部分HDMI转换芯片上没有包含CEC 模块而采用IO 模拟实现CEC协议的方法,从而取代了硬件CEC 控制器的设计。文献[11] 通过CEC 技术控制服务唤醒显示设备以使其从关机状态进入开机状态,其中采用了MCU 处理关机状态下的CEC 消息传送。文献[12]设计了一种电路以解决MCU 芯片无法满足CEC 总线漏电流的问题。以上文献中对于CEC 软件系统虽有描述,但是对于其中的细节详细阐述少之又少。

本文通过对CEC1.4 协议的分析,阐述了利用CEC技术实现TV 待机唤醒的软件驱动方案。为了保证TV在待机状态下可以通过CEC 来唤醒,提出了采用CPU与MCU 协同工作的方式。在TV 工作时,由CPU 管理整个系统,MCU 处于复位状态;当TV 待机后,CPU 将不进行工作,而由MCU 负责。当MCU 收到CEC 相关消息后,会及时唤醒CPU。该设计使得TV 能在待机状态下得到唤醒,也满足了低功耗的要求。

1 CEC 协议概述

CEC 是一种在各音视频产品中提供上层控制功能的协议,其提供了一系列的特性来增强HDMI 系统的功能和互通性。CEC 使用远程控制或自动改变设置来命令连接的CEC 设备发生相应的变化[13]。所有在CEC 线上的传输包括一个发起者(Initiator)和多个接收者(Follower)。发起者负责发送消息数据。接收者负责接收任何数据以及设置应答位。发起者提供时序和位前沿。若同一时刻,当超过一个发起者进行CEC 数据传输时,可以使用控制信号线仲裁机制避免冲突。CEC 线采用半双工、串行的方式传输数据。在设备打开CEC的情况下,可以使用单个遥控器完成一系列的控制操作,如:待机唤醒、按键透传等。在CEC 网络中会连接多个设备,各个设备通过CEC 线通信与命令交互。

CEC的帧结构=起始位+引导块+数据块,其中数据块中包含操作码和操作数。所有的引导块和数据块都是10 bit,并拥有相同的数据结构,如图3 所示。一条完整的CEC 消息的数据结构如图4 所示。

图3 块结构

图4 一条消息的数据结构

当一个CEC 设备连接到CEC 网络中时,其会通过Ping(即发送Polling Message 消息)的方式获取到自身的逻辑地址。各个设备类型的逻辑地址如表1 所示,其中总共有16 个逻辑地址,而有些设备具有多个逻辑地址,如:录音设备就有1、2、9 三个不同的逻辑地址。对于下文涉及的电视待机唤醒功能会使用到图5 描述的场景。

表1 CEC 逻辑地址

图5 一键唤醒的场景

其中,Playback Devcie 可以是碟机等设备,当TV 处于待机状态时,用户可以使用碟机的遥控器唤醒碟机后,碟机会发送消息给TV,来唤醒TV。当source 需要将输出显示在TV 上时,source 必须同时发送消息和消息。其中,的操作码为0x04,的操作码为0x82。

2 系统实现

为了使TV 在待机状态下的功耗降低,该方案采用CPU与MCU 结合的方式,通过这两部分的交互实现TV中待机唤醒。图6 是CEC的软件架构图,分为CPU 和MCU 两部分,两者通过公用的寄存器通信。

图6 CEC 软件架构图

当系统上电后,CPU 开始运行,MCU 处于复位状态,CPU 负责CEC 消息收发等工作。而当TV 待机后,CPU下电,MCU 开始运行,主要负责CEC 唤醒检测。图7 为电视待机唤醒检测的流程图。

图7 CPU/MCU 待机检测

2.1 MCU 模块设计

MCU 模块从上到下分为User、Driver 层。User 层负责将收到的CEC 消息转化为具体的功能控制。Driver 层负责CEC 逻辑层的抽象和隔离、CEC 消息的收发,包括:(1)CEC 逻辑使能控制;(2)HPD(Hot Plug Detect)状态获取;(3)CEC EDID的读取与解析;(4)CEC 消息的发送和读取;(5)CEC 日志的串口打印等。

MCU中只做简单的消息收发处理。其中,接收的消息包括:。发送的消息包括:

图8 为MCU的运行图,在MCU 初始化后,MCU 会检测此时CPU 运行在boot 还是kernel 阶段,并停在对应的阶段。当CPU 下电后,MCU 跳出对应阶段,向下执行一系列的操作,最后在while 循环中不断地检测CEC 唤醒的消息,若收到中的某条消息,则唤醒CPU。

图8 MCU 运行框图

2.2 CPU 模块设计

CPU 模块由Middleware(中间件)、UNF、Driver 三个子模块组成。其中,中间件模块会主动获取CEC 驱动中的CEC 消息,同时也会发送具体的CEC 消息给驱动,然后CEC 驱动会把消息通过CEC 线发送出去,中间件是CEC具体业务指令中控。UNF 模块是提供给中间件使用的接口层,里面包含一系列接口函数,中间件可以调用UNF中的接口函数将CEC 消息传输给CEC 驱动或获取CEC驱动的消息。Driver 模块实现CEC 网络建立,CEC 消息接收发送的具体实现,消息池管理,各任务间的协同控制等。

为了防止在CEC 总线上消息传输失败,整个系统方案中采用了CEC 消息重传机制。当出现CEC 控制器发送CEC 消息到总线上失败时,软件中会对CEC 控制器的重传次数进行配置,之后如果CEC 消息发送失败,硬件就会自动进行CEC 消息重传。根据协议中的要求次数设置为最小值2,以保证从中间件传下来的所有CEC消息都能通过CEC 驱动传输给指定的CEC 设备。图9为重传机制的流程图。

图9 重传机制流程图

此外,为保证CEC 驱动可以将短时间内从中间件下发的CEC 消息全部发送给其他的CEC 设备,在CEC 驱动中增加了CEC 消息队列,最大可以存储30 条从中间件传下来的CEC 消息。以下为CEC 消息和CEC 消息队列的数据结构,每条CEC 消息都通过CecMessage 结构体的形式储存,并将全部的CEC 消息保存在CecQueue 结构体的cec_message 数组中。

图10 为CPU的运行图,当系统上电后,CPU 开始运行,CEC 驱动拥有单独的内核线程。在该线程中,包括CEC消息的发送,CEC中断的检测,CEC 消息的发送等。

图10 CPU CEC 运行框图

3 功能验证

3.1 验证平台

该系统采用基于Cortex-A73 处理器并搭载Linux 4.14操作系统的单板实现软件设计,搭载A73 处理器的单板,其以更低的功耗和更小的空间实现了更佳的性能与寿命[14]。该单板的硬件部分,如CEC 控制器等以及中间件中的软件程序编写,均由其他成员完成设计。在CEC驱动编写完成后,分别烧录到CPU 和MCU中,上电后即开始运行。

SL309 是CEC CTS的认证仪器,由SimplayLabs 公司生产,作为官方推荐的CEC1.4 测试仪器,其具有易用、UI 界面内容丰富等特点。实物见图11,其可以模拟出CEC1.4 协议中提到的所有CEC 设备,并可以收发不同的CEC 消息以验证单板上的CEC 驱动实现是否符合CEC 协议的要求。图12 为CEC 网络中的设备连接图,碟机使用的是索尼BDP-S1500,该碟机支持CEC 功能,其连接SL309,再接本文所设计实现CEC 功能的单板,最后将单板接到SONY TV 上。

图11 SL309

图12 设备连接图

3.2 验证结果

首先打开所有连接的CEC 网络中的设备,并在SONY TV的UI中打开单板的CEC 功能,再使用单板的遥控器让单板进入待机状态,此时可以看到,TV的UI黑屏,并通过串口工具可以看到单板已进入MCU 模式。再观察SL309 应用窗口中DUT (Device Under Test)发送了广播消息,如图13 和图14 所示。

从图13 可以看出,起始位(Start Bit)、数据位(Data Bit)时序符合协议的规定,即单板发送的CEC 消息符合CEC1.4 协议中的要求。从图14中的方框可知,单板已成功将Standby 待机消息发送给了连接在CEC 网络中的设备。此时碟机、单板的CPU 都进入了待机状态,而只有单板的MCU 处于运行状态。

图13 消息时序图

图14 SL309 收到的CEC 消息

之后使用索尼的遥控器将碟机开机,从SL309 应用窗口中可以看到碟机给单板发送了消息,如图15 方框中所示。从图16 和图17可知,这两条消息的时序符合CEC1.4 协议中的要求。再从串口中可以看出单板的CPU 已启动,并且SONY TV已经被点亮。

图15 碟机发送的消息

图16 消息时序图

图17 消息时序图

最后,从图15 得知,由中间件在短时间内下发的CEC消息(不超过30 条)全部被CEC 驱动发送了出去,并且没有一个CEC 消息发送失败。这表明单板的CEC 软件设计以及硬件逻辑完全符合该场景下待机唤醒的需求。

4 结论

CPU 驱动提供的UNF 接口可以让业务指令中心下发所需的CEC 消息,配合MCU中的驱动,所有的消息时序符合CEC1.4 协议中规定,并且完全满足电视一键待机和一键唤醒的要求。通过CPU 和MCU 结合的方式,也让电视在待机下功耗更低。

猜你喜欢
待机单板中间件
摄影作品
体育风尚(2023年24期)2024-01-26 05:59:00
摄影作品
体育风尚(2023年17期)2023-10-17 13:18:36
遏制“超长预售”,需监管“超长待机”
公民与法治(2022年6期)2022-07-26 06:16:04
“超长待机”的余震
哈哈画报(2022年5期)2022-07-11 05:57:48
漫“话”抗疫·人与自我:“超长待机”的假期,你收获了什么?
大众文艺(2020年8期)2020-04-21 08:57:58
单板U型场地滑雪关键技术动作及训练方法
冰雪运动(2019年3期)2019-08-23 08:10:32
RFID中间件技术及其应用研究
电子制作(2018年14期)2018-08-21 01:38:10
基于VanConnect中间件的设计与开发
电子测试(2018年10期)2018-06-26 05:54:02
单板层积材带来的内部生产模式
国际木业(2016年4期)2017-01-15 13:54:25
中间件在高速公路领域的应用