【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脚本…...
nli-distilroberta-base一文详解:开源NLI大模型在语义推理场景的落地应用
nli-distilroberta-base一文详解:开源NLI大模型在语义推理场景的落地应用 1. 项目概述 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)Web服务,专门用于判断两个句子之间的逻辑关系。这个轻量级模型继承了RoBERTa的强大语义理…...
Sambert镜像应用实战:快速为视频配音,生成带情感的解说音频
Sambert镜像应用实战:快速为视频配音,生成带情感的解说音频 1. 引言:视频配音的新选择 在短视频创作、在线教育、企业宣传等领域,专业配音往往面临成本高、周期长的问题。传统语音合成技术虽然能快速生成音频,但缺乏…...
开关电源设计实战:Buck、Boost、Buck-Boost三大拓扑公式详解与选型指南
开关电源设计实战:Buck、Boost、Buck-Boost三大拓扑公式详解与选型指南 刚入行电源设计那会儿,我最头疼的就是面对各种拓扑结构的选择。Buck、Boost、Buck-Boost这三种基础拓扑看似简单,但实际设计中总会在参数计算和器件选型上栽跟头。记得第…...
MusePublic低配适配教程:16G显存降级方案与效果妥协平衡点
MusePublic低配适配教程:16G显存降级方案与效果妥协平衡点 1. 项目简介 MusePublic是一款专门为艺术感时尚人像创作设计的轻量化文本生成图像系统。这个项目的核心基于MusePublic专属大模型,采用安全高效的safetensors格式封装,针对艺术人像…...
FireRedASR Pro Java集成开发指南:SpringBoot微服务语音处理实战
FireRedASR Pro Java集成开发指南:SpringBoot微服务语音处理实战 如果你是一个Java后端开发者,最近接到了要给系统加上语音识别功能的需求,比如处理用户上传的客服录音,或者分析会议纪要,那你可能正在寻找一个既稳定又…...
Qwen3-32B开源模型企业应用:Clawdbot平台审计日志、调用统计、权限分级
Qwen3-32B开源模型企业应用:Clawdbot平台审计日志、调用统计、权限分级 1. 引言:当企业级AI平台遇上开源大模型 想象一下,你的团队正在内部使用一个强大的AI助手,它能回答技术问题、编写代码、甚至帮你分析数据。但问题来了&…...
CANoe CAPL实战:putvalue和getvalue函数在汽车总线测试中的高效应用
CANoe CAPL实战:putvalue和getvalue函数在汽车总线测试中的高效应用 在汽车电子测试领域,CANoe作为主流的测试工具,其CAPL编程语言的高效运用直接决定了测试效率和质量。对于经常与CAN总线打交道的测试工程师来说,putvalue和getva…...
OpenClaw低代码方案:Qwen3-VL:30B飞书流程可视化编排
OpenClaw低代码方案:Qwen3-VL:30B飞书流程可视化编排 1. 为什么需要低代码自动化 去年我接手了一个特别头疼的任务:每周要手动处理几十个跨部门会议预约,会后还要整理纪要并归档到飞书文档。这种重复性工作不仅耗时,还经常因为人…...
逻辑回归毕设效率优化实战:从特征工程到推理加速的全流程提速方案
最近在帮学弟学妹们看逻辑回归相关的毕业设计,发现一个普遍问题:大家把重点都放在了模型原理上,但代码一跑起来,训练慢、预测卡,整个流程效率低下,非常影响实验进度和最终演示效果。其实,逻辑回…...
大鼠抗小鼠CD193抗体如何揭示CCL24-CCR3轴在心肌纤维化中的作用?
一、心脏巨噬细胞如何参与心肌纤维化进程?心肌纤维化是多种心脏疾病进展至心力衰竭的关键病理环节,其特征是心脏成纤维细胞过度活化并分泌大量细胞外基质蛋白,导致心肌僵硬与功能障碍。心脏组织中存在大量常驻巨噬细胞,它们在维持…...
