【Mtk Camera开发学习】01 MTK 平台Camera BringUp
本专栏内容针对 “知识星球”成员免费,欢迎关注公众号:小驰行动派,加入知识星球。
#MTK Camera开发学习系列 #小驰私房菜
这篇文章主要介绍MTK 平台,Camera BringUp会涉及到修改的模块。
MTK不同的平台系列,具体修改代码路径可能会 有差异,不过大体应该是差不多的。
====================================================================
涉及到需要修改的文件:
一、Kernel
kernel-4.19/arch/arm64/configs/tbXXX_64_defconfig
kernel-4.19/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h
kernel-4.19/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_pwr_seq.c
kernel-4.19/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_sensor_list.c
kernel-4.19/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_sensor_list.h
kernel-4.19/drivers/misc/mediatek/imgsensor/src/common/v1_1/XXX_mipi_raw
二、device
device/mediatek/common/kernel-headers/kd_imgsensor.h
device/mediateksample/tbXXX_64/ProjectConfig.mk
三、vendor
/vendor/mediatek/proprietary/custom/mt6XXX/hal/imgsensor_src/sensorlist.cpp
/vendor/mediatek/proprietary/custom/mt6XXX/hal/imgsensor/ver1/XXX_mipi_raw
/vendor/mediatek/proprietary/custom/mt6XXX/hal/imgsensor_metadata/XXX_mipi_raw
===================================================
详细修改
一、Kernel
kernel-4.*/arch/arm64/configs/tbXXX_64_defconfig
CONFIG_CUSTOM_KERNEL_IMGSENSOR = "XXX_mipi_raw"
kernel-4.*/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h
#define XXX_SENSOR_ID 0xXXX
#define SENSOR_DRVNAME_XXX_MIPI_RAW "XXX_mipi_raw"
上电时序配置:
kernel-4.*/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_pwr_seq.c
#if defined(XXX_MIPI_RAW)
{SENSOR_DRVNAME_XXX_MIPI_RAW, { {RST, Vol_Low, 1}, {PDN, Vol_Low, 1}, {DVDD, Vol_1200, 1}, {DOVDD, Vol_1800, 1}, {AVDD, Vol_2800, 1}, {SensorMCLK, Vol_High, 1}, {RST, Vol_High, 1}, {PDN, Vol_High, 1},},
},
#endif
kernel-4.*/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_sensor_list.c
#if defined(XXX_MIPI_RAW)
{XXX_SENSOR_ID, SENSOR_DRVNAME_XXX_MIPI_RAW, XXX_MIPI_RAW_SensorInit},
#endif
kernel-4.*/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_sensor_list.h
UINT32 XXX_MIPI_RAW_SensorInit(struct SENSOR_FUNCTION_STRUCT **pfFunc);
驱动文件放置目录:
kernel-4.*4.*/drivers/misc/mediatek/imgsensor/src/common/v1_1/XXX_mipi_raw
(如果只是修改了驱动文件,可以单独编译bootimage和dtboimage来快速验证)
二、device
device/mediatek/common/kernel-headers/kd_imgsensor.h
#define XXX_SENSOR_ID 0xXXX
#define SENSOR_DRVNAME_XXX_MIPI_RAW "XXX_mipi_raw"
device/mediateksample/tbXXX_64/ProjectConfig.mk
(针对一供、二供这种,就直接在后面添加就好。如下面所示,XXX_mipi_raw表示一供, XXX2_mipi_raw表示二供)
CUSTOM_HAL_MAIN_IMGSENSOR = XXX_mipi_raw XXX2_mipi_raw CUSTOM_KERNEL_IMGSENSOR = XXX_mipi_raw XXX2_mipi_raw CUSTOM_KERNEL_MAIN_IMGSENSOR = XXX_mipi_raw XXX2_mipi_raw
三、vendor
/vendor/mediatek/proprietary/custom/mtXXX/hal/imgsensor_src/sensorlist.cpp
#if defined(XXX_MIPI_RAW)RAW_INFO_M(XXX_SENSOR_ID, DEFAULT_MODULE_INDEX, DEFAULT_MODULE_ID,
SENSOR_DRVNAME_XXX_MIPI_RAW,CAM_CALGetCalData), #endif
metadata相关信息:
/vendor/mediatek/proprietary/custom/mt6XXX/hal/imgsensor_metadata/XXX_mipi_raw
tuning效果参数:
/vendor/mediatek/proprietary/custom/mt6XXX/hal/imgsensor/ver1/XXX_mipi_raw
=======================================================================
相关日志打印:
vendor/mediatek/proprietary/hardware/mtkcam/drv/src/sensor/common/v1_1/imgsensor_drv.cpp
01-02 17:49:55.340 D/ImgSensorDrv( 6839): [init][init] imgsensor_drv 01-02 17:49:55.340 D/ImgSensorDrv( 6839): [featureControl][featureControl] Skip due to no FeatureId
01-02 17:49:55.340 D/SeninfDrv( 6839): [setMclk][setTg3Phase]pcEn(1), freq(24) 01-02 17:49:55.340 D/ImgSensorDrv( 6839): [searchSensor]searchSensor idx = 3 01-02 17:49:55.415 D/ImgSensorDrv( 6839): [searchSensor]Warning( 124):Search fail
01-02 17:49:55.415 D/SeninfDrv( 6839): [setMclk][setTg3Phase]pcEn(0), freq(24) 01-02 17:49:55.415 D/ImgSensorDrv( 6839): [uninit][uninit] imgsensor_drv 01-02 17:49:55.415 D/ImgSensorDrv( 6839): [init][init] imgsensor_drv 01-02 17:49:55.415 D/ImgSensorDrv( 6839): [featureControl][featureControl] Skip due to no FeatureId
01-02 17:49:55.415 D/SeninfDrv( 6839): [setMclk][setTg3Phase]pcEn(1), freq(24) 01-02 17:49:55.415 D/ImgSensorDrv( 6839): [searchSensor]searchSensor idx = 4 01-02 17:49:55.499 D/ImgSensorDrv( 6839): [searchSensor]Warning( 124):Search fail
01-02 17:49:55.499 D/SeninfDrv( 6839): [setMclk][setTg3Phase]pcEn(0), freq(24) 01-02 17:49:55.499 D/ImgSensorDrv( 6839): [uninit][uninit] imgsensor_drv
------------------------------------------------------------------------
文章内容所有权归@公众号:小驰行动派,禁止宣传转载,谢谢~
相关文章:
【Mtk Camera开发学习】01 MTK 平台Camera BringUp
本专栏内容针对 “知识星球”成员免费,欢迎关注公众号:小驰行动派,加入知识星球。 #MTK Camera开发学习系列 #小驰私房菜 这篇文章主要介绍MTK 平台,Camera BringUp会涉及到修改的模块。 MTK不同的平台系列,具体修改…...
新能源汽车内卷真相
导语:2025年,我国新能源汽车总产能预计可达3661万辆,如此产能如何消化? 文 | 胡安 “这样卷下去不是办法,企业目的是什么?是盈利,为国家作贡献,为社会作贡献。我们应该有大格局&…...
C 语言实现在终端里输出二维码
Mac 环境安装二维码库 brew install qrencode安装过程报权限问题执行以下命令 sudo chown -R 用户名 /usr/local/include /usr/local/lib chmod uw /usr/local/include /usr/local/lib#include <stdio.h> #include <qrencode.h>void print_qr_code(QRcode *qrcode…...
nodejs---fs模块,文件读写操作详解,自定义一个文件写入方法
fs模块导入 Node.js 同时支持 CommonJS 和 ES 模块系统(自 Node.js v12 以来) // 两种模块导入方式 import * as fs from fs;// Es6:这种方式需要在package.json中配置"type": "module" const fs require(fs);// commonJs:如果你…...
Linux(Rocky)下 如何输入中文(切换中文输入法)教程
RockyLinux如何输入中文(切换中文输入法) 注意 在字符画界面的Linux系统中 默认不具备中文输入法的功能 需要SSH或其他远程工具来实现 问题 可能大家有的时候安装了一个虚拟机之后 想切换中文输入法 但是一直找不到方法 下面将利用Rocky9.2作为演示…...
Python中包(package)与模块(module)的概念 以及 import 问题
目录 Python中 包(package) 与 模块(module) 的概念一. Python中, 包 (package) 与 模块 (module) 的概念1. 一个有 __init__.py 文件 的目录, 被视为一个 Python 的 包 (package)2. 一个Python源文件 , 被视为一个模块 (module) 二. 不同包之间 以及 同一个包的不同模块之间的…...
Android常见内存泄漏场景总结
一、非静态内部类造成的内存泄漏 造成原因:非静态内部类默认会持有外部类的引用,如果内部类的生命周期超过了外部类就会造成内存泄漏。 场景:当Activity销毁后,由于内部类中存在异步耗时任务还在执行,导致Activity实…...
未来已来:Angular、React、Vue.js——前端框架的三大巨头
目录 前言 一、Angular框架 特点和优势 核心技术和应用场景 二、React框架 特点和优势 核心技术和应用场景 三、Vue.js框架 特点和优势 核心技术和应用场景 总结: 前言 在Web前端开发领域,随着技术的不断发展,出现了众多优秀的框…...
Mybatis06-动态SQL
动态SQL 1.什么是动态SQL 什么是动态SQL:动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句. 类似JSTL标签 官网描述: MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接…...
26-LINUX--I/O复用-select
一.I/O复用概述 /O复用使得多个程序能够同时监听多个文件描述符,对提高程序的性能有很大帮助。以下情况适用于I/O复用技术: ◼ TCP 服务器同时要处理监听套接字和连接套接字。 ◼ 服务器要同时处理 TCP 请求和 UDP 请求。 ◼ 程序要同时处理多个套接…...
spring源码解析-(2)Bean的包扫描
包扫描的过程 测试代码: // 扫描指定包下的所有类 BeanDefinitionRegistry registry new SimpleBeanDefinitionRegistry(); // 扫描指定包下的所有类 ClassPathBeanDefinitionScanner scanner new ClassPathBeanDefinitionScanner(registry); scanner.scan(&quo…...
Java 数学计算 - Random类
在Java中,Random类用于生成伪随机数。这个类在java.util包中,你可以使用它来生成整数、浮点数等不同类型的随机数。以下是关于Random类的一些学习笔记和示例。 1. 创建Random对象 首先,你需要创建一个Random对象。默认情况下,如…...
Ubuntu22.04之解决:无法关机和重启问题(二百四十三)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...
大学数字媒体艺术设计网页设计试题及答案,分享几个实用搜题和学习工具 #媒体#职场发展
现在读书可不像小时候,以前想要校对试题答案,都得找到对应的纸质版答案查看,而且有的还只有答案,没有解析,无法弄清楚答案的由来。但是现在不一样了,现在我们可以通过搜题软件,寻找试题的答案&a…...
【ArcGIS微课1000例】0119:TIFF与grid格式互相转换
文章目录 一、任务描述二、tiff转grid三、grid转tif四、注意事项一、任务描述 地理栅格数据常用TIFF格式和GRID格式进行存储。TIFF格式的栅格数据常以单文件形式存储,不仅存储有R、G、B三波段的像素值,还保存有地理坐标信息。GRID格式的栅格数据常以多文件的形式进行存储,且…...
B3870 [GESP202309 四级] 变长编码
[GESP202309 四级] 变长编码 题目描述 小明刚刚学习了三种整数编码方式:原码、反码、补码,并了解到计算机存储整数通常使用补码。但他总是觉得,生活中很少用到 2 31 − 1 2^{31}-1 231−1 这么大的数,生活中常用的 0 ∼ 100 0…...
WordPress网站更换域名后如何重新激活elementor
在创建WordPress网站时,我们常常需要更改域名。但是,在更换域名后,你可能会遇到一个问题:WordPress后台中的Elementor插件授权状态会显示为不匹配。这时,就需要重新激活Elementor插件的授权。下面我会详细说明如何操作…...
linux cron 执行url
linux cron 执行url 在Linux中,你可以使用curl或wget来执行URL。如果你想要定期执行这个操作,可以使用cron来设置定时任务。 以下是一个使用curl在cron中执行URL的例子: 打开终端。 输入 crontab -e 命令来编辑你的cron作业。 添加一个新…...
压缩视频在线压缩网站,压缩视频在线压缩工具软件
在数字化时代,视频成为了人们记录和分享生活的重要载体。然而,视频文件一般都非常大,这不仅占据了大量的存储空间,也给视频的传输和分享带来了不便。因此,压缩视频成为了许多人必须掌握的技能。本文将详细介绍如何压缩…...
linux经典例题编程
编写Shell脚本,计算1~100的和 首先vi 1.sh,创建一个名为1.sh的脚本,然后赋予这个脚本权限,使用命令chmod 755 1.sh,然后就可以在脚本中写程序,然后运行。 shell脚本内容 运行结果: 编写Shell脚本…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
WEB3全栈开发——面试专业技能点P7前端与链上集成
一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...
