当前位置: 首页 > news >正文

【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 模块系统&#xff08;自 Node.js v12 以来&#xff09; // 两种模块导入方式 import * as fs from fs;// Es6:这种方式需要在package.json中配置"type": "module" const fs require(fs);// commonJs:如果你…...

Linux(Rocky)下 如何输入中文(切换中文输入法)教程

RockyLinux如何输入中文&#xff08;切换中文输入法&#xff09; 注意 在字符画界面的Linux系统中 默认不具备中文输入法的功能 需要SSH或其他远程工具来实现 问题 可能大家有的时候安装了一个虚拟机之后 想切换中文输入法 但是一直找不到方法 下面将利用Rocky9.2作为演示…...

Python中包(package)与模块(module)的概念 以及 import 问题

目录 Python中 包(package) 与 模块(module) 的概念一. Python中, 包 (package) 与 模块 (module) 的概念1. 一个有 __init__.py 文件 的目录, 被视为一个 Python 的 包 (package)2. 一个Python源文件 , 被视为一个模块 (module) 二. 不同包之间 以及 同一个包的不同模块之间的…...

Android常见内存泄漏场景总结

一、非静态内部类造成的内存泄漏 造成原因&#xff1a;非静态内部类默认会持有外部类的引用&#xff0c;如果内部类的生命周期超过了外部类就会造成内存泄漏。 场景&#xff1a;当Activity销毁后&#xff0c;由于内部类中存在异步耗时任务还在执行&#xff0c;导致Activity实…...

未来已来:Angular、React、Vue.js——前端框架的三大巨头

目录 前言 一、Angular框架 特点和优势 核心技术和应用场景 二、React框架 特点和优势 核心技术和应用场景 三、Vue.js框架 特点和优势 核心技术和应用场景 总结&#xff1a; 前言 在Web前端开发领域&#xff0c;随着技术的不断发展&#xff0c;出现了众多优秀的框…...

Mybatis06-动态SQL

动态SQL 1.什么是动态SQL 什么是动态SQL&#xff1a;动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句. 类似JSTL标签 官网描述&#xff1a; MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验&#xff0c;你就能体会到根据不同条件拼接…...

26-LINUX--I/O复用-select

一.I/O复用概述 /O复用使得多个程序能够同时监听多个文件描述符&#xff0c;对提高程序的性能有很大帮助。以下情况适用于I/O复用技术&#xff1a; ◼ TCP 服务器同时要处理监听套接字和连接套接字。 ◼ 服务器要同时处理 TCP 请求和 UDP 请求。 ◼ 程序要同时处理多个套接…...

spring源码解析-(2)Bean的包扫描

包扫描的过程 测试代码&#xff1a; // 扫描指定包下的所有类 BeanDefinitionRegistry registry new SimpleBeanDefinitionRegistry(); // 扫描指定包下的所有类 ClassPathBeanDefinitionScanner scanner new ClassPathBeanDefinitionScanner(registry); scanner.scan(&quo…...

Java 数学计算 - Random类

在Java中&#xff0c;Random类用于生成伪随机数。这个类在java.util包中&#xff0c;你可以使用它来生成整数、浮点数等不同类型的随机数。以下是关于Random类的一些学习笔记和示例。 1. 创建Random对象 首先&#xff0c;你需要创建一个Random对象。默认情况下&#xff0c;如…...

Ubuntu22.04之解决:无法关机和重启问题(二百四十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…...

大学数字媒体艺术设计网页设计试题及答案,分享几个实用搜题和学习工具 #媒体#职场发展

现在读书可不像小时候&#xff0c;以前想要校对试题答案&#xff0c;都得找到对应的纸质版答案查看&#xff0c;而且有的还只有答案&#xff0c;没有解析&#xff0c;无法弄清楚答案的由来。但是现在不一样了&#xff0c;现在我们可以通过搜题软件&#xff0c;寻找试题的答案&a…...

【ArcGIS微课1000例】0119:TIFF与grid格式互相转换

文章目录 一、任务描述二、tiff转grid三、grid转tif四、注意事项一、任务描述 地理栅格数据常用TIFF格式和GRID格式进行存储。TIFF格式的栅格数据常以单文件形式存储,不仅存储有R、G、B三波段的像素值,还保存有地理坐标信息。GRID格式的栅格数据常以多文件的形式进行存储,且…...

B3870 [GESP202309 四级] 变长编码

[GESP202309 四级] 变长编码 题目描述 小明刚刚学习了三种整数编码方式&#xff1a;原码、反码、补码&#xff0c;并了解到计算机存储整数通常使用补码。但他总是觉得&#xff0c;生活中很少用到 2 31 − 1 2^{31}-1 231−1 这么大的数&#xff0c;生活中常用的 0 ∼ 100 0…...

WordPress网站更换域名后如何重新激活elementor

在创建WordPress网站时&#xff0c;我们常常需要更改域名。但是&#xff0c;在更换域名后&#xff0c;你可能会遇到一个问题&#xff1a;WordPress后台中的Elementor插件授权状态会显示为不匹配。这时&#xff0c;就需要重新激活Elementor插件的授权。下面我会详细说明如何操作…...

linux cron 执行url

linux cron 执行url 在Linux中&#xff0c;你可以使用curl或wget来执行URL。如果你想要定期执行这个操作&#xff0c;可以使用cron来设置定时任务。 以下是一个使用curl在cron中执行URL的例子&#xff1a; 打开终端。 输入 crontab -e 命令来编辑你的cron作业。 添加一个新…...

压缩视频在线压缩网站,压缩视频在线压缩工具软件

在数字化时代&#xff0c;视频成为了人们记录和分享生活的重要载体。然而&#xff0c;视频文件一般都非常大&#xff0c;这不仅占据了大量的存储空间&#xff0c;也给视频的传输和分享带来了不便。因此&#xff0c;压缩视频成为了许多人必须掌握的技能。本文将详细介绍如何压缩…...

linux经典例题编程

编写Shell脚本&#xff0c;计算1~100的和 首先vi 1.sh,创建一个名为1.sh的脚本&#xff0c;然后赋予这个脚本权限&#xff0c;使用命令chmod 755 1.sh&#xff0c;然后就可以在脚本中写程序&#xff0c;然后运行。 shell脚本内容 运行结果&#xff1a; 编写Shell脚本&#xf…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

&#x1f9e0; LangChain 中 TextSplitter 的使用详解&#xff1a;从基础到进阶&#xff08;附代码&#xff09; 一、前言 在处理大规模文本数据时&#xff0c;特别是在构建知识库或进行大模型训练与推理时&#xff0c;文本切分&#xff08;Text Splitting&#xff09; 是一个…...

统计学(第8版)——统计抽样学习笔记(考试用)

一、统计抽样的核心内容与问题 研究内容 从总体中科学抽取样本的方法利用样本数据推断总体特征&#xff08;均值、比率、总量&#xff09;控制抽样误差与非抽样误差 解决的核心问题 在成本约束下&#xff0c;用少量样本准确推断总体特征量化估计结果的可靠性&#xff08;置…...

vue3 手动封装城市三级联动

要做的功能 示意图是这样的&#xff0c;因为后端给的数据结构 不足以使用ant-design组件 的联动查询组件 所以只能自己分装 组件 当然 这个数据后端给的不一样的情况下 可能组件内对应的 逻辑方式就不一样 毕竟是 三个 数组 省份 城市 区域 我直接粘贴组件代码了 <temp…...