深入探究V4L2异步与媒体控制器框架
1. 背景与框架概述
随着时间的推移,媒体支持对于日益复杂的片上系统(SoC)而言,已成为必备且极具吸引力的特性。媒体IP核心的复杂性使得获取传感器数据需要软件搭建一整个由多个子设备组成的管道。基于设备树的系统具有异步性,这导致子设备的设置和探测并非一帆风顺。为解决子设备无序探测的问题,异步框架应运而生,确保在所有媒体子设备就绪时,媒体设备能按时启动。此外,由于媒体管道的复杂性,有必要简化其组成子设备的配置,于是媒体控制器框架诞生,它将整个媒体管道封装为一个媒体设备元素,并引入了一些抽象概念,例如将每个子设备视为一个实体,具有接收端口、源端口或两者皆有。
2. 技术要求
在深入学习相关内容前,需要具备以下条件:
- 扎实的计算机体系结构知识和C编程技能。
- 可从https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/refs/tags 获取Linux内核v4.19.X的源代码。
3. V4L2异步接口与图绑定概念
在V4L2驱动开发中,以往采用同步方式,即桥接设备驱动在探测时同步为所有子设备注册设备。但这种方式不适用于本质上异步且无序的设备注册系统,如扁平化设备树。因此,引入了异步接口。在新方法中,桥接驱动注册子设备描述符列表和通知回调,子设备驱动注册待探测或已成功探测的子设备。异步核心负责将子设备与硬件描述符匹配,并在匹配成功时调用桥接驱动回调,子设备注销时也会调用相应回调。异步子系统依赖一种特殊的设备声明方式——图绑定。
3.1 图绑定
嵌入式系统的设备
超级会员免费看
订阅专栏 解锁全文
35

被折叠的 条评论
为什么被折叠?



