新闻详情

新闻详情

首页 / 资讯中心 / 详情

异步注册流程

发布时间:2026/9/30 11:18:44来源:尧图网络
异步注册流程
异步注册流程pipelineOV5645 - DPHY - CSI - DMA DMA只当“父节点” 中间节点既当“子节点”又当“父节点” OV5645只当“叶子节点”1. OV5645先注册v4l2_async_register_subdev(ov5645-sd);// 此时还没有有效的根notifier,并且也没有注册v4l2_device所以最后:list_add(sd-async_list,subdev_list);此时全局subdev_list中subdev_list: OV56452. DPHY 加载DPHY 有两个身份DPHY 自己是一个subdev告诉下游CSIDPHY notifier → 等 OV5645/* 先异步注册subdev */v4l2_async_register_subdev(dphy-sd);然后DPHY注册自己的notifierv4l2_async_subdev_nf_init(dphy-notifier,sd);//初始化notifier的waiting_list和done_listv4l2_async_nf_parse_fwnode_endpoints();//从设备树解析当前节点的remote-endpoint,把要等的fwnode加入waiting_list中v4l2_async_nf_register(dphy-notifier);//把自己的notifier插入全局notifier_list中v4l2_async_nf_register()会调用v4l2_async_nf_try_all_subdevs()里面会检查有没有v4l2_device没有的话直接return 0;最后都会用list_add将自己的notifier插入到全局notifier_list中。此时subdev_list: DPHY OV5645 notifier_list: DPHY notifier-waiting_list:OV56453. CSI 加载同样也是中间节点注册以后subdev_list: CSI DPHY OV5645 notifier_list: CSI notifier-waiting_list:DPHY DPHY notifier-waiting_list:OV56454. DMA 加载在 DMA 中会注册v4l2_device_register(dev, csi_dma-v4l2_dev);//初始化subdev管理链表v4l2_async_nf_init(ntf, csi_dma-v4l2_dev);//将notifier与v4l2_device关联v4l2_async_nf_register(ntf);//最后调用此函数,会触发关键内容此时subdev_list: CSI DPHY OV5645 notifier_list: DMA notifier-waiting_list:CSI (已经有了v4l2_dev) CSI notifier-waiting_list:DPHY DPHY notifier-waiting_list:OV5645这一次在v4l2_async_nf_register()中执行v4l2_async_nf_try_all_subdevs()时开始遍历subdev_list寻找与当前notifier中waiting_list相符的进行匹配(也就是CSI)匹配成功进入v4l2_async_match_notify()这里才把已经 async-register 的 subdev 正式绑定到根 v4l2_device。v4l2_device_register_subdev()会将subdev-list插入v4l2_dev-subdevs如果之前注册了 media_device还会注册sd-entity到 Media Graph。然后调用DMA中绑定的bound函数创建媒体链接。然后把这次已经匹配的成功的异步链接挂到被匹配的subdev链表中从notifier的waiting_list移进done_list。DMA waiting_list: CSI ↓ list_move() DMA done_list: CSI! 接下来最关键的递归开始了当前subdev是CSIv4l2_async_find_subdev_notifier()会遍历全局notifier_list找到CSI notifier。接下来csi_notifier-parent dma_notifier;现在第一次建立联系DMA notifier ↓ parent关系 CSI notifier接下来又return v4l2_async_nf_try_all_subdevs();CSI notifier再遍历整个subdev_list在notifier-waiting_list中找到了 DPHY注册subdev把subdev-list插入v4l2_dev-subdevs再调用CSI中的bound函数以此类推…全局 subdev_list v4l2_dev-subdevs: │ │ ├── CSI ├── CSI ├── DPHY ├── DPHY └── OV5645 └── OV5645 全局 notifier_list │ ├── DMA notifier │ parent NULL │ v4l2_dev dma-v4l2_dev │ │ waiting_list: empty │ done_list: │ └── asc(CSI) │ ├── CSI notifier │ parent DMA notifier │ │ waiting_list: empty │ done_list: │ └── asc(DPHY) │ └── DPHY notifier parent CSI notifier waiting_list: empty done_list: └── asc(OV5645)v4l2_async_nf_try_all_subdevs()递归绑定 CSI-DPHY-Sensor。__v4l2_async_nf_register(dma_notifier){...retv4l2_async_nf_try_all_subdevs(dma_notifier);retv4l2_async_nf_try_complete(dma_notifier);...}至此异步框架结束。5.complete函数在此函数中执行v4l2_device_register_subdev_nodes(csi_dma-v4l2_dev)通过遍历之前的v4l2_dev-subdev_list如果子设备设置了V4L2_SUBDEV_FL_HAS_DEVNODE那么就会创建/dev/v4l-subdevX设备节点。调用自己定义的csi_dma_pipeline_prepare()函数从 DMA 的/dev/videoX对应media_entity出发沿着已经创建好的 Media Graph 数据链路向上游遍历找到 CSI2、DPHY、Sensor的subdev结构体地址并保存到 DMA 的 pipeline 中。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

数据库增删改查实战:从索引优化到事务与安全删除 2026/9/30 12:01:44

数据库增删改查实战:从索引优化到事务与安全删除

1. 增删改查的本质与整体设计思路聊数据库,绕不开的永远是这四个字:增删改查。说句实在话,我入行这些年,经手的业务系统少说也有几十个,从早期的单机管理软件,到后来基于微服务架构的中台系统,无…

阅读更多 →
小区域长时序InSAR高效处理:从数据裁剪到形变提取的实用流程 2026/9/30 12:01:44

小区域长时序InSAR高效处理:从数据裁剪到形变提取的实用流程

做Sentinel-1长时序InSAR这件事,有个很现实的门槛:不是原理看不懂,而是数据量实在压人。全画幅的Sentinel-1 SLC单景数据动辄几百MB到几个GB,30景数据跑一遍干涉基线网络,SNAP内存占用直接飙升到十几GB,处理…

阅读更多 →
Wireshark分析RTP丢包率:从抓包到统计的完整排查指南 2026/9/30 12:01:44

Wireshark分析RTP丢包率:从抓包到统计的完整排查指南

简介:这是一份以Wireshark分析RTP丢包率为主题的技术教程PDF,面向需要排查实时音视频网络质量的运维人员、测试工程师及网络协议学习者。内容围绕RTP传输中的丢包定位展开,从抓包过滤到流分析给出了清晰的操作路径,适合具备一定Wi…

阅读更多 →
Docker部署MySQL 8.0实战:数据持久化与连接坑全解 2026/9/30 12:01:36

Docker部署MySQL 8.0实战:数据持久化与连接坑全解

最近在整理韦奇这套部署环境时,碰上了一个特别典型的任务:用Docker把MySQL 8.0拉起来,数据还得持久化,开发、测试、预发三套环境都要用同一套部署方式,不能各自为政。折腾了一轮之后,我把整个落地过程完整梳…

阅读更多 →
Hadoop+Spark+Kafka+Hive民宿推荐系统全链路开发实战 2026/9/30 12:01:36

Hadoop+Spark+Kafka+Hive民宿推荐系统全链路开发实战

1. 这个毕设到底要做什么:民宿推荐系统的完整拼图如果你正在为一台 8G 内存的笔记本该选什么毕设题目发愁,同时又不想做烂大街的 XX 管理系统,我强烈建议你看看这个组合——Hadoop Spark Kafka Hive,配上民宿爬虫与可视化。我当…

阅读更多 →
Windows下用Nginx部署Vue3项目实战指南 2026/9/30 12:01:36

Windows下用Nginx部署Vue3项目实战指南

1. 为什么在Windows上用Nginx部署Vue3项目,是很多前端工程师绕不开的实战门槛? 你是不是也经历过:本地 npm run serve 跑得好好的,页面清爽、路由丝滑、状态管理稳如老狗;可一到打包部署环节,就卡在“访…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉