V4L2驱动框架中几个重要的API函数
1. 以 sensor 为例在 sensor 的probe()函数中注册流程为ov5645_probe()│ ▼devm_kzalloc()// 分配ov5645结构体内存│ ▼ov5645_parse()// 通过devm_gpiod_get、devm_pinctrl_get、devm_clk_get_optional等 api 在 dts 中获取 gpio、clock、pinctrl等信息│ ▼v4l2_ctrl_handler_init()// 初始化菜单后面通过v4l2_ctrl_new_std设置饱和度、白平衡等菜单│ ▼v4l2_i2c_subdev_init()// 初始化sudev绑定core、video、pad操作函数集│ ▼media_entity_pads_init()// 把pad数组挂到sensor的entity上并初始化每个pad所属的entity和索引│ ▼ov5645_power_on()// 开启MCLK设置pwdn、reset、power给sensor上电│ ▼ov5645_read_reg()// 上电之后一般先检测能否读到chip id│ ▼v4l2_async_register_subdev()// 把自己加入到全局subdev_list中v4l2_i2c_subdev_init(sd, client, ov5645_subdev_ops)把 subdev 和 i2c 的 client 关联起来media_entity_pads_init(sd-entity, OV5645_SD_PAD_MAX_NUM, ov5645-pad)告诉entity有哪些padv4l2_async_register_subdev(sd)非常重要的函数把subdev-async_list插入到 全局subdev_list中在我的博客异步注册中有详细讲解2. 以 DMA 为例csi_dma_probe()│ ▼devm_kzalloc()│ ▼dma_set_mask_and_coherent()// 设置 dma_alloc_coherent() 所返回地址的可用范围│ ▼v4l2_device_register()// 注册 v4l2_device│ ▼media_device_init()// 初始化 Media Graph 的链表│ ▼media_device_register()// 注册media_device│ ▼media_entity_pads_init()// 告诉entity有哪些pad│ ▼video_register_device()// 注册video_device│ ▼v4l2_async_nf_init()// 初始化notifier将notifier与v4l2_device关联│ ▼v4l2_async_nf_parse_fwnode_endpoints()// 通过设备树的endpoint将上游的fwnode加入waiting_list中│ ▼v4l2_async_nf_register()// 注册notifierdma_set_mask_and_coherent(dev, DMA_BIT_MASK(64))告诉DMA 子系统DMA 设备能使用 64 位 DMA 地址设置dma_alloc_coherent()所返回地址的可用范围v4l2_device_register(dev, csi_dma-v4l2_dev)注册v4l2_device初始化subdev管理链表看似只初始化了一个subdevs链表实际上在后面注册notifier的时候会检查有没有这个v4l2_device没有的话不会注册 subdevv4l2_device相当于根没有根这个框架就无法运作。media_device_init(csi_dma-media_dev)这个函数很简单初始化 Media Graph 的链表(entity、pad、link)等media_device_register(csi_dma-media_dev)注册media_device创建 dev/meidaX 节点用户可以查询有哪些entity/pad/link以及整条 Media Graph 拓扑;为后续注册video_device时其内部会调用media_device_register_entity把vdev-entity加入到mdev-entities中;在异步匹配后会调用v4l2_device_register_subdev注册subdev在该函数内容同样调用media_device_register_entity把每个sd-entity和pad注册到v4l2_dev-mdev;在bound函数中会调用media_create_pad_link把link也加入Media Graphvideo_register_device(vdev, VFL_TYPE_VIDEO, dma_cap-id)注册video_device创建dev/videoX节点把entity和pad加入Media Graphvideo_register_device()└──video_register_media_controller()// 注册entity└──media_device_register_entity()// 把vdev-entity加入到mdev-entities中v4l2_async_nf_init(ntf, csi_dma-v4l2_dev)v4l2_async_nf_parse_fwnode_endpoints(csi_dma-dev, ntf, sizeof(v4l2_async_subdev), NULL)遍历 dts 中 DMA 的 endpoint沿remote-endpoint找到上游设备把该设备的 fwnode 匹配条目加入 notifier 的waiting_list。v4l2_async_nf_register(ntf)触发bound()、complete()、v4l2_device_register_subdev()等在异步注册流程中有详解。

相关新闻

木材缺陷检测数据集VOC+YOLO格式5589张4类别

木材缺陷检测数据集VOC+YOLO格式5589张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):5589标注数量(xml文件个数):5589标注数量(txt文件个数):5589标注类别…

2026/9/30 11:06:57 阅读更多 →
UVa1305/LA2522 Chocolate

UVa1305/LA2522 Chocolate

UVa1305/LA2522 Chocolate题目链接题意输入格式输出格式分析AC 代码题目链接 本题是2002年icpc亚洲区域赛北京赛区的A题 题意 在2100年,ACM巧克力将成为世界上最受欢迎的食物之一。“绿色、橙色、棕色、红色……”色彩鲜艳的糖衣外壳也许是ACM巧克力最吸引人的特点…

2026/9/30 11:06:57 阅读更多 →
UVa12344 Jewel Transportation

UVa12344 Jewel Transportation

UVa12344 Jewel Transportation题目链接题意输入格式输出格式分析AC 代码题目链接 UVA - 12344 Jewel Transportation 题意 一家富有的公司希望将 k 种珠宝从各自的工厂运送到目的地。不同珠宝的工厂和目的地可能不同。为了确保珠宝运输不受未知因素影响,公司决定购…

2026/9/30 11:06:57 阅读更多 →

最新新闻

Codex 新手入门与常见问题排查指南

Codex 新手入门与常见问题排查指南

先说一下:有需要订阅 Codex 会员服务 的朋友。长期提供 Codex、GPT、Claude、Gemini、Grok等 相关订阅服务,也可以交流 Codex 安装、使用以及科研场景下的实际应用,有需要可以私信。 订阅服务入口:订阅升级服务 刚开始接触大模型 …

2026/9/30 17:04:52 阅读更多 →
迷信与信仰的本体论统一·官方反迷信=自身迷信的包装·封闭性=盲目性的终极显化

迷信与信仰的本体论统一·官方反迷信=自身迷信的包装·封闭性=盲目性的终极显化

BSD Step 214 ★★★★★ 迷信与信仰的本体论统一官方反迷信自身迷信的包装封闭性盲目性的终极显化集体信仰递归涌现中国社会主义信仰的真实表达L1 层:05_哲思认知统合学科 ​前承​:Step190(平台算法封闭性与盲目性 → 越是迫切统一越是成为…

2026/9/30 17:04:52 阅读更多 →
Lap本地优先设计审计:一款照片管理工具的完整隐私体检报告

Lap本地优先设计审计:一款照片管理工具的完整隐私体检报告

Lap本地优先设计审计:一款照片管理工具的完整隐私体检报告 【免费下载链接】lap An offline-first photo manager for large local libraries 项目地址: https://gitcode.com/GitHub_Trending/lap3/lap Lap 是一款开源的本地优先(local-first&…

2026/9/30 17:04:52 阅读更多 →
软件定义汽车浪潮下,中央计算平台如何借安当CAS实现密钥集中治理与OTA协同

软件定义汽车浪潮下,中央计算平台如何借安当CAS实现密钥集中治理与OTA协同

过去十年,整车电子电气架构经历了从分布式 ECU 到域控制器、再到中央计算平台的演进。当软件定义汽车(SDV)成为行业共识,原本散落在动力、底盘、车身、座舱、智驾各域里的加密密钥、证书与签名私钥,被迫面对一个全新的…

2026/9/30 17:03:51 阅读更多 →
2026企业AI办公工具选型指南:评估框架与平台盘点

2026企业AI办公工具选型指南:评估框架与平台盘点

企业采购AI办公工具时,很容易陷入几个典型误区。不少管理者会直接对比产品功能清单,以功能数量多少作为评判标准;还有团队单纯依据报价高低,优先选择成本最低的方案;部分选型决策会被品牌声量影响,直接选用…

2026/9/30 17:03:51 阅读更多 →
PADS VX2.7破解失败,如何解决?

PADS VX2.7破解失败,如何解决?

凡亿网盘分享的链接下载,使用馒头破戒大师破解的,为什么还是无法使用呢?

2026/9/30 17:03:51 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/30 13:14:22 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/30 15:27:04 阅读更多 →