andorid之摄像头驱动流程--MTK平台
camera成像原理:
景物通过镜头生产光学图像投射到sensor表面上,然后转为模拟电信号,经过数模变成数字图像信号,在经过DSP加工出来,然后在通过IO接口传输到CPU处理。 由于摄像头满足总线、驱动、设备模型,那么看看andorid是怎么去实现摄像头的流程。
1. 注册Camera的platform平台设备
点击(此处)折叠或打开
- CAMERA_HW_i2C_init
- platform_driver_register(&g_stCAMERA_HW_Driver)
- static struct platform_driver g_stCAMERA_HW_Driver = {
- .probe = CAMERA_HW_probe,
- .remove = CAMERA_HW_remove,
- .suspend = CAMERA_HW_suspend,
- .resume = CAMERA_HW_resume,
- .driver = {
- .name = "image_sensor",
- .owner = THIS_MODULE,
- }
- };
2. 注册Camera的platform平台设备驱动
点击(此处)折叠或打开
- platform_device_register(&sensor_dev);
- static struct platform_device sensor_dev = {
- .name = "image_sensor",
- .id = -1,
- };
在 在mt6575_board_init这个函数中注册了很多平台设备,包括上面的平台设备。camera的平台设备与平台驱动匹配后,就会调用drv的probe函数,其probe函数主要完成的是i2c平台驱动的注册
点击(此处)折叠或打开
- static int CAMERA_HW_probe(struct platform_device *pdev)
- {
- return i2c_add_driver(&CAMERA_HW_i2c_driver);
- }
- struct i2c_driver CAMERA_HW_i2c_driver = {
- .probe = CAMERA_HW_i2c_probe,
- .remove = CAMERA_HW_i2c_remove,
- .detect = CAMERA_HW_i2c_detect,
- .driver.name = CAMERA_HW_DRVNAME,
- .id_table = CAMERA_HW_i2c_id,
- .address_data = &addr_data,
- };
怎么去做i2c驱动与设备的匹配呢?内核中对于这块有详细的讲解,文件为instantiating-devices,现在i2c的平台驱动已经注册了,下面来分析下是怎么注册平台设备的。应该使用内核的第3种方法,在内核注册i2c驱动的时候,最终会遍历总线设备的driver成员,调用__attach_adapter函数。
点击(此处)折叠或打开
- static int __attach_adapter(struct device *dev, void *data)
- {
- struct i2c_adapter *adapter;
- struct i2c_driver *driver = data;
- if (dev->type != &i2c_adapter_type)
- return 0;
- adapter = to_i2c_adapter(dev);
- i2c_detect(adapter, driver);
- /* Legacy drivers scan i2c busses directly */
- if (driver->attach_adapter)
- driver->attach_adapter(adapter);
- return 0;
- }
这个函数最主要的是调用了CAMERA_HW_i2c_driver的detect函数,完成设备与驱动的匹配,最终会调用CAMERA_HW_i2c_probe。
点击(此处)折叠或打开
- static int CAMERA_HW_i2c_detect(struct i2c_client *client, int kind, struct i2c_board_info*info)
- {
- strcpy(info->type, CAMERA_HW_DRVNAME);
- return 0;
- }
在probe函数中最只做了一件事件RegisterCAMERA_HWCharDrv,这个函数会注册字符设备,注册设备节点,并在设备节点下创建类,重点的东西出现了
点击(此处)折叠或打开
- static const struct file_operations g_stCAMERA_HW_fops =
- {
- .owner = THIS_MODULE,
- .open = CAMERA_HW_Open,
- .release = CAMERA_HW_Release,
- #ifdef USE_NEW_IOCTL
- .unlocked_ioctl = CAMERA_HW_Ioctl
- #else
- .ioctl = CAMERA_HW_Ioctl
- #endif
- };
Open只是初始化一个原子变量留给系统调用,ioctrl才是核心,CAMERA_HW_Ioctl是上层文件操作底层硬件的方法。以上是andorid上摄像头i2c设备的过程。
相关文章:
andorid之摄像头驱动流程--MTK平台
camera成像原理: 景物通过镜头生产光学图像投射到sensor表面上,然后转为模拟电信号,经过数模变成数字图像信号,在经过DSP加工出来,然后在通过IO接口传输到CPU处理。 由于摄像头满足总线、驱动、设备模型,…...
Android9.0 iptables用INetd实现屏蔽ip黑名单的实现
1.前言 在9.0的系统rom定制化开发中,在system中netd网络这块的产品需要中,会要求设置屏蔽ip地址之内的功能,liunx中iptables命令也是比较重要的,接下来就来在INetd这块实现屏蔽ip黑名单的的相关功能,就是在app中只能屏蔽某个网址,就是除了这个网址,其他的都能上网,最后…...
介绍一下json
目录 介绍一下json Elasticsearch7.6学习指南 介绍一下json JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易于阅读和编写的文本形式表示结构化数据。JSON最初是由Douglas Crockford在2001年提出的,它在we…...
DI依赖注入环境
1.构造器注入 上一章节已经说过了: <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLoca…...
《程序员面试金典(第6版)》面试题 16.18. 模式匹配(暴力破解 + 剪枝)
题目描述 你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。 例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a&q…...
一天吃透SpringCloud面试八股文
1、什么是Spring Cloud ? Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。 Sprin…...
java生成图片缩略图
目录 前言一、使用Base64编码方式1、基本方法2、压缩本地图片保存到本地3、压缩网络图片到图片服务器 二、使用thumbnailator工具方式1、导入依赖2、压缩本地图片保存到本地 前言 下面介绍了两种获取图片缩略图的方式,全都不是一次性压缩,如果没有达到设…...
《统计学习方法》——隐马尔可夫模型(下)
学习算法 HMM的学习,在有观测序列的情况下,根据训练数据是否包含状态序列,可以分别由监督学习算法和无监督学习算法实现。 监督学习算法 监督学习算法就比较简单,基于已有的数据利用极大似然估计法来估计隐马尔可夫模型的参数。…...
Liunx top 命令详解
文章目录 top补充说明语法选项top交互命令实例 top 显示或管理执行中的程序 补充说明 top命令 可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。 语法…...
基于 SpringBoot 的医院固定资产系统
本文将介绍基于 SpringBoot 技术的医院固定资产系统的设计和实现。医院固定资产管理是医疗机构管理工作的重要组成部分,它对医院的正常运营和管理具有重要的意义。本系统的设计和实现将有助于医疗机构更好地管理和维护其固定资产。 1. 系统需求分析 医院固定资产管…...
【企业信息化】第2集 免费开源ERP: Odoo 16 销售管理系统
文章目录 前言一、概览二、使用功能1.通过清晰报价提高销售效率2.创建专业报价单3.管理订单及合同4.简化沟通5.维护产品&价格6.直观的报告7.集成 三、总结 前言 世界排名第一的免费开源ERP: Odoo 16 销售管理系统。通过Odoo Sign应用程序和在线支付,发送报价。…...
浅谈数据治理
大家好 ,近年来,数据治理成为挖掘数据价值的重要手段和工具。随着大数据平台和工业互联网兴起,数据治理平台主要采用数据中台技术和微服务架构初步替代传统架构,面向大数据架构下,为数据资源中心与外部数据系统提供数据…...
Matlab入门教程003|MATLAB变量|MATLAB命令
MATLAB变量 每个MATLAB变量可以是数组或者矩阵。 用一个简单的方法指定变量。例如: x 3 % defining x and initializing it with a value MATLAB执行上述语句,并返回以下结果: x 3 上述的例子创建了一个1-1的矩阵名为x和的值存储…...
【啃书C++Primer5】-编写一个简单C++程序
每个C程序都包含一个或多个函数(function),其中一个必须命名为main。操作系统通过调用main来运行C程序。下面是一个非常简单的main函数,它什么也不干,只是返回给操作系统一个值: int main() {return 0; }一个函数的定义包含四部分:返回类型(r…...
GoView 是一个Vue3搭建的低代码数据可视化开发平台
一、总览 开源、精美、便捷的「数据可视化」低代码开发平台 二、整体介绍 框架:基于 Vue3 框架编写,使用 hooks 写法抽离部分逻辑,使代码结构更加清晰; 类型:使用 TypeScript 进行类型约束,减少未知错误…...
【面试篇】Redis持久化面试题
文章目录 Redis持久化🙎♂️面试官:什么是Redis持久化? AOF日志AOF日志原理🙎♂️面试官:AOF日志是怎么工作的/AOF写入磁盘的流程?🙎♂️面试官: 刚刚说到了Redis先执行写入的…...
哈工大软件过程与工具作业2
云原生技术云原生技术 哈尔滨工业大学 计算机科学与技术学院/国家示范性软件学院 2022年秋季学期 《软件过程与工具》课程 作业报告 作业 2:需求分析UML建模 姓名 学号 联系方式 石卓凡 120L021011 944613709qq.com/18974330318 目 录 1 需求概述...........…...
SDN控制器三平面(软件定义网络、OOB)
目录 又名 三个独立的平面或层 SDN数据流 控制流量的带外(OOB) 优势 技术...
嘉兴桐乡会计考证实操-考初级会计真的有用吗?
一边说着:考初级会计门槛太低了,谁都能考;一边又争先恐后的去报考,考初级会计真的是有用的吗?为什么这么多人一边说考了没用却一直在努力备考呢? 关于这类的话题,其实一直都存在,但不…...
约翰霍普金斯大学诺奖得主涉嫌造假,撤回5篇PNAS论文
2019年,约翰霍普金斯大学的著名基因医学科学家Gregg L. Semenza博士因为“发现细胞如何感知和适应氧气供应”,和另外两名科学家( William Kaelin Jr. and Peter J. Ratcliffe)分享当年的生理医学诺贝尔奖。 近期,Gregg…...
APIPOST 8.x 脚本实战:循环调用接口实现OA流程自动化测试
1. 为什么需要OA流程自动化测试 最近在排查一个OA系统的诡异问题时,我遇到了一个典型场景:某个审批流程偶尔会出现卡顿,但手动测试又很难复现。这时候就需要用自动化测试工具来模拟真实用户操作,通过高频次的流程触发来验证问题。…...
华硕笔记本终极控制方案:如何用GHelper实现10倍性能优化
华硕笔记本终极控制方案:如何用GHelper实现10倍性能优化 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, …...
N-Day 基准测试揭晓:OpenAI GPT - 5.4 以 83.93 分领跑语言模型网络安全能力排名
【导语:N - Day 基准测试用于衡量前沿语言模型发现现实世界中在其知识截止日期之后披露的漏洞的能力。近期测试已完成,扫描 1000 个安全公告,公布了各模型的平均得分等数据。】N - Day 基准测试:衡量语言模型网络安全能力N - Day …...
告别两阶段!用单个冻结的ConvNeXt-Large CLIP,7.5倍速搞定开放词汇分割(附代码)
7.5倍速开放词汇分割实战:FC-CLIP架构设计与工程实现 当你在深夜调试两阶段分割模型时,是否曾对着显存不足的报错信息陷入沉思?开放词汇分割任务对算法工程师提出了双重挑战:既要处理任意类别的语义理解,又要应对高分辨…...
嵌入式设备部署MogFace-large轻量版:从模型压缩到板载推理
嵌入式设备部署MogFace-large轻量版:从模型压缩到板载推理 最近有不少朋友在问,能不能把那些效果不错的人脸检测模型,比如MogFace-large,塞到树莓派或者Jetson Nano这类嵌入式板子里去跑。想法很好,但直接把原始模型丢…...
通义千问2.5-7B自动化脚本生成:DevOps集成部署案例
通义千问2.5-7B自动化脚本生成:DevOps集成部署案例 1. 引言:当AI大模型遇上DevOps自动化 在日常开发工作中,你是否遇到过这样的场景:需要快速编写部署脚本、配置CI/CD流程,或者处理重复性的系统管理任务?…...
别再傻等!Florence2大模型在ComfyUI里加载慢?试试这个手动加载的‘作弊’技巧
Florence2大模型加载优化:揭秘ComfyUI中的手动加载黑科技 每次打开ComfyUI工作流,盯着进度条发呆的感觉糟透了。特别是当灵感迸发时,却要被迫等待Florence2模型慢悠悠地加载完成——这种体验简直是对创作热情的谋杀。但真相是,你完…...
AppUpdate完整指南:10分钟掌握Android应用更新库
AppUpdate完整指南:10分钟掌握Android应用更新库 【免费下载链接】AppUpdate Android App update library. Android版本更新库,简单、轻量、可随意定制 项目地址: https://gitcode.com/gh_mirrors/app/AppUpdate AppUpdate是一款专为Android开发者…...
从图像压缩到信道反馈:CsiNet如何重塑大规模MIMO的深度学习范式
1. 当无线通信遇上计算机视觉:CSI为何能被看作图像? 第一次听说把信道状态信息(CSI)当作图像处理时,我的反应和大多数通信工程师一样:"这脑洞开得有点大吧?"但当我真正动手复现CsiNet…...
100G SFP光模块全解读:核心定义、关键特性与主流应用场景
在高速光通信网络飞速发展的当下,100G速率已成为数据中心、城域网、5G承载网等场景的核心传输需求,而100G SFP光模块作为实现光电信号转换的关键器件,凭借小巧的体积、灵活的适配性,成为连接网络设备、支撑高速数据传输的核心载体…...
