MTK 自有相机框架 camera适配
文章目录前言一、关键路径1.1 device/emdoor/project_name/ProjectConfig.mk1.2 device/mediatek/mt6789/CameraConfig.mk1.3 device/mediatek/common/kernel-headers/kd_imgsensor.h1.4 kernel-5.10/arch/arm64/boot/dts/mediatek/cust_project_name_camera.dtsi1.5 kernel-5.10/arch/arm64/boot/dts/mediatek/project_name.dts1.6 kernel-5.10/arch/arm64/configs/project_name_defconfig1.7 kernel-5.10/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h1.8 kernel-5.10/drivers/misc/mediatek/imgsensor/src/common/v1/gc08a3main_mipi_raw1.9 kernel-5.10/drivers/misc/mediatek/imgsensor/src/common/v1/imgsensor_sensor_list.c1.10 kernel-5.10/drivers/misc/mediatek/imgsensor/src/common/v1/imgsensor_sensor_list.h1.11 修改上电引脚及时序 imgsensor_cfg_table.c1.12 vendor/mediatek/proprietary/custom/mt6768/hal/imgsensor_src/sensorlist.cpp1.13 metedata 与mipi raw也需要一并合入二、kernel 中的gc08a3代码简析三、注意事项前言记录MTK自有相机框架 适配这里以新增 gc08a3 为例一、关键路径1.1 device/emdoor/project_name/ProjectConfig.mk//在HAL中新增gc08a3main_mipi_rawCUSTOM_HAL_IMGSENSORgc08a3main_mipi_raw//指定gc08a3main_mipi_raw为HAL中的主imgsensorCUSTOM_HAL_MAIN_IMGSENSORgc08a3main_mipi_raw//在KERNEL中新增gc08a3main_mipi_rawCUSTOM_KERNEL_IMGSENSORgc08a3main_mipi_raw//指定KERNEL中的主imgsensor为gc08a3main_mipi_rawCUSTOM_KERNEL_MAIN_IMGSENSORgc08a3main_mipi_raw注意如果需要新增sub相机gc08a8sub_cxt_mipi_raw也要做如下操作其余的步骤也要跟下列的所有操作一致//在HAL中新增子相机gc08a8sub_cxt_mipi_rawCUSTOM_HAL_IMGSENSORgc08a3main_mipi_raw gc08a8sub_cxt_mipi_raw//指定gc08a8sub_cxt_mipi_raw为HAL中的子imgsensorCUSTOM_HAL_SUB_IMGSENSORgc08a8sub_cxt_mipi_raw//在KERNEL中新增gc08a3main_mipi_rawCUSTOM_KERNEL_IMGSENSORgc08a3main_mipi_raw gc08a8sub_cxt_mipi_raw//指定KERNEL中的子imgsensor为gc08a8sub_cxt_mipi_rawCUSTOM_KERNEL_SUB_IMGSENSORgc08a8sub_cxt_mipi_raw1.2 device/mediatek/mt6789/CameraConfig.mk//注意如果相机的个数超过了3个这部分内容需要修改一下MTK_CAM_MAX_NUMBER_OF_CAMERA31.3 device/mediatek/common/kernel-headers/kd_imgsensor.h#defineGC08A3MAIN_SENSOR_ID0x08a3#defineSENSOR_DRVNAME_GC08A3MAIN_MIPI_RAWgc08a3main_mipi_raw1.4 kernel-5.10/arch/arm64/boot/dts/mediatek/cust_project_name_camera.dtsi确认各引脚的复用功能及其对应电气属性是否符合原理图1.5 kernel-5.10/arch/arm64/boot/dts/mediatek/project_name.dts确认原理图是否包含了1.3的相机的原理图1.6 kernel-5.10/arch/arm64/configs/project_name_defconfig//config包含了需要编译的相机CONFIG_CUSTOM_KERNEL_IMGSENSORgc08a3main_mipi_raw1.7 kernel-5.10/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h#defineGC08A3MAIN_SENSOR_ID0x08a3#defineSENSOR_DRVNAME_GC08A3MAIN_MIPI_RAWgc08a3main_mipi_raw1.8 kernel-5.10/drivers/misc/mediatek/imgsensor/src/common/v1/gc08a3main_mipi_raw在路径kernel-5.10/drivers/misc/mediatek/imgsensor/src/common/v1下创建gc08a3main_mipi_raw文件夹从上一个项目复制其Makefile文件Makefile#SPDX-License-Identifier:GPL-2.0#Copyright(C)2020MediaTek Inc.# 这部分是我们需要编译的相机驱动 IMGSENSOR_SUBDRV_OBJ:\ $(subdrv-rpath)/gc08a3main_mipi_Sensor.o \ # 下面这部分内容沿用上一个项目的或者mediateksample的ifeq($(CONFIG_MTK_IMGSENSOR_ISP3_Z),m)$(eval $(MTK_PLATFORM_KO)-objs$(IMGSENSOR_SUBDRV_OBJ))elseifeq($(CONFIG_MTK_IMGSENSOR_ISP3_Z),y)obj-$(CONFIG_MTK_IMGSENSOR_ISP3_Z)$(IMGSENSOR_SUBDRV_OBJ)endififeq($(CONFIG_MTK_IMGSENSOR_ISP4),m)$(eval $(MTK_PLATFORM_KO)-objs$(IMGSENSOR_SUBDRV_OBJ))elseifeq($(CONFIG_MTK_IMGSENSOR_ISP4),y)obj-$(CONFIG_MTK_IMGSENSOR_ISP4)$(IMGSENSOR_SUBDRV_OBJ)elseifeq($(CONFIG_MTK_IMGSENSOR_ISP3_M),m)$(eval $(MTK_PLATFORM_KO)-objs$(IMGSENSOR_SUBDRV_OBJ))elseifeq($(CONFIG_MTK_IMGSENSOR_ISP3_M),y)obj-$(CONFIG_MTK_IMGSENSOR_ISP3_M)$(IMGSENSOR_SUBDRV_OBJ)endififeq($(CONFIG_MTK_IMGSENSOR_ISP4_C),m)$(eval $(MTK_PLATFORM_KO)-objs$(IMGSENSOR_SUBDRV_OBJ))elseifeq($(CONFIG_MTK_IMGSENSOR_ISP4_C),y)obj-$(CONFIG_MTK_IMGSENSOR_ISP4_C)$(IMGSENSOR_SUBDRV_OBJ)endif新增gc08a3main_mipi_Sensor.c 和 gc08a3main_mipi_Sensor.h到该文件夹下具体的驱动内容这一章节不讲解下一章节会简单讲解1.9 kernel-5.10/drivers/misc/mediatek/imgsensor/src/common/v1/imgsensor_sensor_list.cstructIMGSENSOR_INIT_FUNC_LISTkdSensorList[MAX_NUM_OF_SUPPORT_SENSOR]{...//GC08A3MAIN_MIPI_RAW_SensorInit#ifdefined(GC08A3MAIN_MIPI_RAW){GC08A3MAIN_SENSOR_ID,SENSOR_DRVNAME_GC08A3MAIN_MIPI_RAW,GC08A3MAIN_MIPI_RAW_SensorInit},#endif...};1.10 kernel-5.10/drivers/misc/mediatek/imgsensor/src/common/v1/imgsensor_sensor_list.hUINT32GC08A3MAIN_MIPI_RAW_SensorInit(structSENSOR_FUNCTION_STRUCT**pfFunc);1.11 修改上电引脚及时序 imgsensor_cfg_table.c这个文件在common下有许多我们需要注意上一代项目具体所使用的是哪一个这里使用ips4的同时因为这颗相机是一个主摄因此其对应的是IMGSENSOR_SENSOR_IDX_MAIN其中这些内容是定义引脚的上电类型注意上电引脚的类型配置也可能在kernel-5.10/drivers/misc/mediatek/imgsensor/src/common/v1_1/camera_hw/imgsensor_cfg_table.cstructIMGSENSOR_HW_CFGimgsensor_custom_config[]{{IMGSENSOR_SENSOR_IDX_MAIN,IMGSENSOR_I2C_DEV_0,{{IMGSENSOR_HW_PIN_MCLK,IMGSENSOR_HW_ID_MCLK},{IMGSENSOR_HW_PIN_AVDD,IMGSENSOR_HW_ID_GPIO},{IMGSENSOR_HW_PIN_AVDD1,IMGSENSOR_HW_ID_REGULATOR},{IMGSENSOR_HW_PIN_DOVDD,IMGSENSOR_HW_ID_REGULATOR},{IMGSENSOR_HW_PIN_DVDD,IMGSENSOR_HW_ID_GPIO},{IMGSENSOR_HW_PIN_PDN,IMGSENSOR_HW_ID_GPIO},{IMGSENSOR_HW_PIN_RST,IMGSENSOR_HW_ID_GPIO},{IMGSENSOR_HW_PIN_AFVDD,IMGSENSOR_HW_ID_REGULATOR},{IMGSENSOR_HW_PIN_NONE,IMGSENSOR_HW_ID_NONE},},},};structIMGSENSOR_HW_POWER_SEQsensor_power_sequence[]{#ifdefined(GC08A3MAIN_MIPI_RAW){SENSOR_DRVNAME_GC08A3MAIN_MIPI_RAW,{{RST,Vol_Low,0},{PDN,Vol_Low,1},{SensorMCLK,Vol_High,1},{DOVDD,Vol_1800,1},{DVDD,Vol_1200,1},{AVDD,Vol_2800,1},{RST,Vol_High,1},{PDN,Vol_High,2},},},#endif...};注意这个上电时序也有可能在kernel-5.10/drivers/misc/mediatek/imgsensor/src/common/v1_1/imgsensor_pwr_seq.c1.12 vendor/mediatek/proprietary/custom/mt6768/hal/imgsensor_src/sensorlist.cppMSDK_SENSOR_INIT_FUNCTION_STRUCT SensorList[]{#ifdefined(GC08A3MAIN_MIPI_RAW)//这里需要注意这个输入的格式这颗相机是RAW_INFO//GC08A3MAIN_SENSOR_ID的定义在效果文件夹里//SENSOR_DRVNAME_GC08A3MAIN_MIPI_RAW的定义也在效果文件夹里RAW_INFO(GC08A3MAIN_SENSOR_ID,SENSOR_DRVNAME_GC08A3MAIN_MIPI_RAW,NULL),#endif};1.13 metedata 与mipi raw也需要一并合入metedata路径vendor/mediatek/proprietary/custom/project_name/hal/imgsensor_metadata/gc08a3main_mipi_raw/mipi raw路径vendor/mediatek/proprietary/custom/mt6768/hal/imgsensor/ver1/gc08a3main_mipi_raw/二、kernel 中的gc08a3代码简析gc08a3main_mipi_Sensor.c三、注意事项配mclk、port端口等信息需要去vendor/mediatek/proprietary/custom/paltform_name(mt6768) or 皮project_name/hal/imgsensor_src下的cfg_setting_imgsensor.cppstaticCUSTOM_CFG gCustomCfg[]{{//相机对应的ID,见第一章中的定义ProjectConfig的配置.sensorIdxIMGSENSOR_SENSOR_IDX_MAIN,//这个也需要查看使用的是哪个时钟.mclkeMclk_1,//下面就是使用的端口是CSI0还是CSI1#ifdefG88_PROJECT.portEMipiPort_CSI1,#else.portEMipiPort_CSI0,#endif//这个是前后摄.dirCUSTOM_CFG_DIR_REAR,.bitOrderCUSTOM_CFG_BITORDER_9_2,.orientation90,.horizontalFov67,.verticalFov49,.PadPclkInv0,},

相关新闻

2026实测|VMware Tools按钮灰色?这个方案包对口

2026实测|VMware Tools按钮灰色?这个方案包对口

材料 VMware虚拟机 Windows系统的镜像 这里以Windowsxp为例 下载链接 百度网盘下载链接: https://pan.baidu.com/s/19-0Dpwc5Xms0_HjcqwUiMw 提取码: wz51 迅雷下载链接:https://next.itellyou.cn/ (需要登录) VMware 17虚拟机百度网盘下载链接: https://pan.b…

2026/7/23 19:15:50 阅读更多 →
路由器两大阵营:软路由和硬路由,谁才是你的最佳搭档?

路由器两大阵营:软路由和硬路由,谁才是你的最佳搭档?

在这个万物联网、宽带提速的时代,网络设备早已不再是“接根网线就行”的简单玩意儿了。越来越多的网工、极客、甚至普通家庭用户都开始关注一个网络中枢的“灵魂之争”——软路由 vs 硬路由! 但问题来了: 什么是软路由?什么是硬路由? 它们到底有啥区别?我家到底该选哪…

2026/7/23 19:15:50 阅读更多 →
消费级GPU部署170亿参数大模型:Qwen3.5-Plus实战

消费级GPU部署170亿参数大模型:Qwen3.5-Plus实战

1. 项目概述:消费级GPU跑通170亿参数大模型的现实意义第一次在RTX 3060上加载完Qwen3.5-Plus并看到生成结果时,我的工作室电脑风扇转速都没超过50%——这与我去年折腾70亿参数模型时显卡狂啸的场景形成鲜明对比。作为长期在边缘设备部署AI模型的工程师&a…

2026/7/23 19:15:50 阅读更多 →

最新新闻

不容错过的思维导图——XMind2025(全功能版)

不容错过的思维导图——XMind2025(全功能版)

(获取方式在文末)小伙伴们大家是否接触过思维导图软件呢,如果有那一定听说过XMind吧,今天我来为大家介绍一下,一起来看一下吧。软件介绍一、AI 核心功能革新一句话总结:写 PPT 前 10 分钟就能画出一张思维导…

2026/7/23 19:26:53 阅读更多 →
**轧辊测量精度突破0.003mm的3大关键技术**

**轧辊测量精度突破0.003mm的3大关键技术**

轧辊轮廓测量的技术突破与工程实践钢铁冷轧产线上,轧辊辊型精度直接影响带钢板形质量。传统机械式测量存在三个技术瓶颈:千分尺人工读数易引入0.005mm以上人为误差;V型块基准面磨损导致系统误差累积;车间震动与油污环境使接触式测…

2026/7/23 19:25:53 阅读更多 →
企业级数据中台建设方法论:从消除孤岛到资产复用的完整落地路径

企业级数据中台建设方法论:从消除孤岛到资产复用的完整落地路径

✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:大数据、AI开发、Java、测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_6…

2026/7/23 19:25:53 阅读更多 →
YOLO26的SPASPP模块:提升红外小目标检测精度

YOLO26的SPASPP模块:提升红外小目标检测精度

1. 项目概述:YOLO26的SPASPP模块创新在目标检测领域,YOLO系列算法因其出色的实时性能而广受欢迎。最近提出的YOLO26模型在保持高效推理速度的同时,进一步提升了检测精度。然而,在处理红外小目标检测这类特殊任务时,传统…

2026/7/23 19:25:53 阅读更多 →
0 基础入门React Native鸿蒙跨平台开发:体重单位转换器功能实战

0 基础入门React Native鸿蒙跨平台开发:体重单位转换器功能实战

本文是基于HarmonyOS API 24的进行的ReactNative 鸿蒙跨平台开发依托适配鸿蒙的 RN 运行层,使用 React 与 JS 编写一套业务代码,无需大量 ArkTS 原生开发,通用业务实现代码复用,支持按需扩展原生桥调用鸿蒙特有能力,有…

2026/7/23 19:25:53 阅读更多 →
Python毕设项目:基于 Python 的智能期货模拟交易分析系统 虚拟资金期货交易演练管理平台 (源码+文档,讲解、调试运行,定制等)

Python毕设项目:基于 Python 的智能期货模拟交易分析系统 虚拟资金期货交易演练管理平台 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/23 19:25:53 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻