全球新动态:MTK 平台相机bringup流程
和你一起终身学习,这里是程序员Android
(相关资料图)
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、Camera 框架介绍一、Camera 框架介绍二、Camera Bringup 需要配置的文件三、复盘总结
Camera 的框架分为 Kernel 部分和 hal 部分,其中kernel部分主要有两块:
image sensor driver,负责具体型号的sensor的id检测,上电,以及在preview、capture、初始化、3A等等功能设定时的寄存器配置;
isp driver,通过DMA将sensor数据流上传;HAL层部分主要有三部分组成:
imageio,主要负责数据buffer上传的pipe;
drv,包含imgsensor和isp的hal层控制;
feature io,包含各种3A等性能配置;
二、Camera Bringup 需要配置的文件(本文以hi1634q型号的前摄为例,平台是mt6789,kernel版本为5.10)
2.1、Device Config Files修改时删除多余的 sensor driver name,只保留自己的即可;
/device/mediateksample/k6789v1_64ProjectConfig.mk
/device/mediatek/mt6789CameraConfig.mkdevice-camera.mk
注意:CUSTOM_HAL_IMGSENSOR 、CUSTOM_HAL_SUB_IMGSENSOR 、CUSTOM_KERNEL_IMGSENSOR 、CUSTOM_KERNEL_SUB_IMGSENSOR 这四个必须都要指定 sensor name;不能遗漏
/device/mediatek/common/kernel-headers kd_imgsensor.h
指定 sensor name 和 sensor model id !这里一定要check不能出错!
2.2、Kernel Config Files/kernel-5.10/arch/arm64/configs mgk_64_k510_defconfig
修改时删除多余的 sensor driver name,只保留自己的即可;
/kernel-5.10/drivers/misc/mediatek/imgsensor/inc kd_imgsensor.h
指定 sensor name 和 sensor model id 和 device config files 那边修改一样!这里一定要check不能出错!
/kernel-5.10/arch/arm64/boot/dts/mediatek cust_mt6789_camera.dtsi
(1)修改 cust_mt6789_camera.dtsi 中 pio 节点的各个Pin number,其中 1 对应 sensor index, 最好是将其他不相关的 sensor 定义都删除,排除干扰,提供一个干净整洁的代码!并将文件中 kd_camera_hw1 节点中的 pin 增加对应节点,rst 引脚和 mclk 引脚需要根据原理图上的信息去 map 查找,具体对应的是哪个 gpio引脚,pinctrl也只需要保留对应节点即可(必须从0开始递增,否则遍历会出错!),如下图红圈部分:
(2) 在 cust_mt6789_camera.dtsi 文件中 kd_camera_hw1 节点中将采用 PMIC 供电方式的 pin 增加如下子节点,再加一个 cust-sensor = “sensor_mipi_raw”,或者是 cam1_enable_sensor = “sensor_mipi_raw ”(方便匹配指定sensor):
(3)在对应的 i2c 总线中定义 camera 设备,i2c0 到 i2c8,具体是哪一条 i2c 路线需要到原理图查找,同时设备在 i2c 线上的地址是 sensor 的物理地址的高七位的值(实际过程中此地址只需要不和 i2c 路线的其它设备地址冲突即可,但是为了便于查找,尽量使用高七位的地址),同时删除无关的设备配置,包括其它的camera sensor、eeprom 相关、点亮 sensor 的原理图上不存在的引脚配置。
/kernel-5.10/drivers/misc/mediatek/imgsensor/src/common/v1_1 hi1634q_mipi_raw
此目录下添加驱动文件,仿照类似型号 sensor 修改成自己的,然后改成自己的名字,删除 mipi_raw 下的eeprom 以及 makefile 中的 eeprom 相关,排除干扰项。
到 sensor.c 和 sensor.h 文件修改具体内容,主要包括 imgsensor_info、init_setting、preview_setting 等 mode setting 中的数据、winsize_info 数据修改,最后修改 driver 的入口函数 XXX_MIPI_RAW_SensorInit(),一般在 sensor.c 文件最下面。
imgsensor_sensor_list.cimgsensor_sensor_list.h
imgsensor_sensor_list.h 中添加相应的 sensor 的 init(入口函数) 的函数;
imgsensor_sensor_list.c 中添加相应的 sensor 的id、name、init(入口函数) ,注意顺序和 vendor 层相对应,此处需要注意的是最好把位置放在你对应sensor idx 的位置上,这样就不会有匹配出错的情况出现。
imgsensor_pwr_seq.c此文件中修改引脚电压值以及上电延时等信息,注意 sensor driver name 的大小写,同时严格按照 sensor data 上电模块的说明,添加延时。需要注意的是 AVDD, DVDD, DOVDD 的电压需要确认是否正确,并且在上完前两路电之后第三路电最好加个 1ms 的延迟,不然可能会出现意料之外的问题;
/kernel-5.10/drivers/misc/mediatek/imgsensor/src/common/v1_1/camera_hw/ imgsensor_cfg_table.c
此处修改硬件配置信息,主要是三路电的配置,是 regulator 还是 gpio类型的,如果 sensor 原理图有其它引脚,也可以继续添加,同时删除原理图不存在的引脚,例如 pdn 引脚。
2.3、Vender Config Files/vendor/mediatek/proprietary/custom/common/hal/imgsensor_src sensorlist.cpp
Note: sensorlist.cpp 中的 SensorList[] 与 imgsensor_sensor_list.c 中的 gimgsensor_sensor_list 的 sensor 的顺序必须一致,否则 user space 和 kernel space 在通过 ioctl 传递命令 id 时会对应错误。
/vendor/mediatek/proprietary/custom/mt6789/hal/imgsensor_src cfg_setting_imgsensor.cpp
注意:kernel 底层的MCLK_0/1/2 ----> 分别对应HAL层的 MCLK_1/2/3
Tunning文件Note:
(1)Tuning Parameter 与 Metadata 可以采用下图作为参考,参考复制对应文件夹并将其中所有的Sensor Name、Sensor Id等更改成当前需要porting的sensor的对应名称,一共三处。此处需要注意:参考的sensor tunning 配置必须对应上,例如 前摄只能参考和 sub 相关的文件配置,否则会出现踩内存现象;
(2) 修改过程中注意 sensor name 和 driver 驱动的大小写问题即可,具体的 mediatek 信息不会影响点亮阶段,但会对后续的出图细节有影响,需要点亮之后再进行调试
(3)Kernel 版本号可以根据当前 Project 的 ProjectConfig.mk 中的 LINUX_KERNEL_VERSION 得知。
Driver 是 v1_1 或者其他版本可以通过 Platform 下的 Makefile 中的 COMMON_VERSION 得知。
/vendor/mediatek/proprietary/custom/mt6789/hal/imgsensor/ver1/
/vendor/mediatek/proprietary/custom/mt6789/hal/imgsensor_metadata/
/vendor/mediatek/proprietary/custom/common/hal/imgsensor_metadata/sensor/
/vendor/mediatek/proprietary/scripts/soong/mtkcam/ mtkcamvars.go
/vendor/mediatek/proprietary/tools/dct/dws/mt6789 k6789v1_64.dws
dws(设备树相关)check gpio,一般不需要改动。
/vendor/mediatek/proprietary/hardware/mtkcam/include/mtkcam/drv/ IHalSensor.h
检查一下信息是否和 kernel 层信息相同或者是否需要添加 sensor ,一般不需要改动。
三、复盘总结通过上面的代码流程,可以知道上开机时,camera模块先会将所有的MCLK打开,然后对依次对对应的sensor进行上电,读取ID(判断I2C是否正常通讯)。这部分调试过程中遇到的问题总结如下:
3.1、注意事项kernel 重要的是 module 的驱动代码和设备树添加,驱动代码的改动需要根据模组厂给的配置文档,一般里面包含了驱动的所有信息,包括一些 dts 配置、init setting、i2c_addr、分辨率(注意屏比例)、上电时序等一些重要信息device 中 config.mk 文件修改后,要将 out 相关所有目录删除,再全部编译,否则会导致踩内存的橙色界面vender 参考的 sensor tunning 配置必须对应上,例如 前摄只能参考和 sub 相关的文件配置,否则会出现踩内存现象参考 sensor 进行复制替换时注意大小写的问题!!!注意排除干扰项、无关项,单独点亮一颗 sensor 时,先到 config 文件删除其余无关的 sensor 驱动,eeprom 相关的也删除,camera 设备原理图没有的引脚也要到 dtsi 和上电相关的文件 cfg_table.c 中删除。
3.2、ID读取不到,I2C不通检查上电时序,3项电压(AVDD/DVDD/IOVDD)是否正确;检查 kernerl 层的 imgsensor_sensor_list.c 和 vendor 层的 sensorlist.cpp 中的位置是否一致。I2C地址及通道设置是否正确;确认 i2c 可以正常通信,通过万用表看看有无电流,万用表也可以用来测量配置的 regulator 是否正确,测量电压时首先屏蔽 imgsensor_hw.c 中的下电代码,最后编译完成,通过 i2c write/read 工具读写寄存器,将对应 regulator 的所有电源全部打开,之后测量电压。检查 cfg_setting_imgsensor.cpp 中 MCLK 和 HW 链接配置是否正确;如果还是无法读到 sensor id,先熟悉以下驱动代码以及上电代码,通过打印 log 的方式检查具体执行到哪个模块:camera 的入口在 imgsensor.c 最下方的 init 函数,通过它绑定一个 platform 的驱动,我们在到驱动对应的 probe 函数下看它如何执行,主要包括设备的匹配注册,imgsensor_hw_init,imgsensor_proc_init,sensorlist_init,其中上电部分的代码通过 imgsensor_hw_init 到达 imgsensor_hw.c 文件,获取硬件信息配置之后分别到平台定义的标准化接口 mclk.c、regulator.c、gpio.c 中执行标准化接口,这样一路打印 log,大概率会发现上电过程哪里出现问题,根据问题去检查对应模块。读到 sensor id 之后,如果相机无法预览,需要到 imgsensor.c 以及驱动代码中检查 open 之后的执行情况,check 驱动中的 init_setting 、mode setting 、imgsensor_winsize_info 是否正确。
3.3、Camera 启动时间过长检查 Sensor 上电时序要求的延时,是否有偏长的情况;去掉多余的 I2C 地址,因为大部分驱动会多添加一些地址;OTP的加载调整到每次开机时第一次打开加载,之后不加载;sensorInit如果时间过长,可以调节I2C speed(400->1000);
原文链接:https://blog.csdn.net/Sugar_wolf/article/details/127512088
【腾讯文档】Camera学习知识库https://docs.qq.com/doc/DSWZ6dUlNemtUWndv
友情推荐:
Android 开发干货集锦
至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
点击阅读原文,为大佬点赞!
标签:
推荐文章
- 全球新动态:MTK 平台相机bringup流程
- 津广两地小学生 同上云端法治课_环球热讯
- 动态:诺思格:6月19日融资买入13.46万元,融资融券余额864.07万元
- 湖北一残疾人学校校长猥亵学生获刑3年半,家长认为量刑过轻,法院进行全案审查
- 视点!货代业务员的工作内容_新手货代业务员要怎么找客户
- 全球观焦点:上海:推动临床急需和罕见病治疗药品、医疗器械审评审批提速
- 全球快资讯:克劳丽化妆品股权被冻结,曾谋划创业板上市,大股东为隆力奇
- 粽叶飘香递真情 爱心沐浴护未来,泰安开展“粽暖童心”关爱儿童志愿服务活动
- 《赛博朋克》多个核心机制被重做升级 新技能树曝光!_环球今头条
- 广西多地中小学暑假放假时间公布,具体安排→
- 成人女星:我跟锡安的爱爱视频即将释出!
- 6月19日这30只个股被猛烈扫货(附买入卖出详细名单) 全球时讯
- 买啥移动硬盘!1TB爱国者固态U盘太香了
- 今日最新!3-5,U17男足“站着输”!从半场溃败到载誉而归,村超球迷被打脸
- 帅客2020款报价及图片_帅客2 0
- 杜伽K615W机械键盘:全新97键位,多重连接与定制轴体的完美结合_观热点
- 热搜爆了!黄子佼“刷屏”,连爆13位艺人黑料?最新回应!日方逮捕一中国籍研究员,外交部发声
- 每日消息!落实临灾预警“叫应”机制 解决预警落地“最后一公里”问题
- 环球观天下!日照银行山海天支行党总支开展“党建引领强根基 铸魂育人谋新篇”主题教育系列活动
- 落实临灾预警“叫应”机制 解决预警落地“最后一公里”问题-环球新资讯
- 草书床前明月光全诗(床前明月光全诗的意思)
- 股价叒新高!左手拥抱OpenAI,右手助力竞品,英伟达在下一盘大棋 世界快播报
- 天天新资讯:水塘边教学 体验式学习——义乌“消防橙”防溺水教育“实景课堂”正式开课
- 环球视点!ChatGPT 标注指南来了!数据是关键
- 兰州G30一总包项目党支部开展“党员身边无事故”主题活动
- 全球热消息:朝鲜劳动党八届八中全会扩大会议闭幕
- 单眼皮眼妆的画法步骤_清纯可爱无辜眼妆的画法-当前要闻
- 六福内地铂金多少钱一克(2023年06月19日)|今日聚焦
- N开创首日涨119.67% 换手率75.58%
- 13岁是青少年吗(13岁属于什么是少年还是青年还是青少年)-世界速看
- 港股异动 | 五矿资源(01208)跌超6%领跌有色股 机构称下游产品开工率方面未见明显好转 焦点速读
- 全球快讯:泰康人寿新乡中支开展防范非法集资宣传活动
- 手机下划线符号怎么打_怎么打下划线符号
- 大众集团MEB平台电动汽车产量破100万辆 当前热讯
- 记仇排名前三的动物,表面呆萌实际报复心很重,看完你还敢惹吗
- Redmi K60系列618卖疯 销量破100万台
- 苹果短信怎么删除一条_苹果短信怎么全部删除|全球热推荐
- 1方石子等于多少吨计算方法_1方石子等于多少吨 每日关注
- 焦点关注:我国棉花产业韧性强助推行业高质量发展
- 乔恩沃伊特德尼罗(乔恩 沃伊特)
- 世界即时看!周杰伦歌词做昵称3个字_周杰伦歌词做昵称
- 父亲节公公祝福语大全简短 全球时讯
- 每日消息!美股三大指数集体上涨,特斯拉涨超4%
- 今日热搜:一剑绝杀!中国姑娘“大心脏”,最后时刻上演逆转,奥运冠军输了
- 蓝钻豪华版有什么用_蓝钻豪华版|最新
- 全球资讯:个人自我介绍ppt模板图片(个人自我介绍ppt)
- 非洲吃火鸡是什么? 快看点
- 水稻夏种正在进行 多种种植模式为秋粮丰收奠定基础 环球热文
- 在“她”视界感受“她”力量 2023年 VOGUEfilm “她”视界艺术周于沪盛放|环球播资讯
- 俞敏洪谈教育:如果孩子成绩不是很好,请一定花2分钟读这篇文章!
- 造车新势力失血,外资品牌反击? 焦点滚动
- 每日热议!“存款50万 5年下来差价5000元”!跨省存款突然火了!“60元车费 多赚几千元”
- 天天动态:多省份用电负荷创新高!多部门采取措施保障电力稳定供应
- 精彩看点:雨情通报:最大小时雨强出现在商南富水镇龙窝村
X 关闭
最新资讯
- 40万级别SUV大对决,路虎发现运动 VS 凯迪拉克XT5
- 巴基斯坦从俄方购买10万吨石油!使用人民币支付|每日快看
- 当地媒体:如果拜仁为小基耶萨提供5000万欧的报价,尤文将会放人
- 天天热点!新疆和田地区和田县发生3.7级地震 震源深度10千米
- 全球热资讯!强力天麻杜仲胶囊说明书白云陕西_强力天麻杜仲胶囊说明书
- 湖南本科学校排名公办_湖南本科学校排名
- 六指琴魔电影和原著差别_像六指琴魔一样经典的电影
- 北京沙化土地面积减少近60% 推进京津冀生态环境联防联治 世界视点
- 陈楚生老婆是富二代吗 陈楚生老婆是谁
- 全民航海,喜迎亚运!中国家庭帆船赛扬帆宁波梅山湾_环球滚动
- 重磅!募资300亿华电新能IPO过会 全球播资讯
- 厦门点亮“网络文明之光” 世界球精选
- 蔚来ET5旅行版车展首秀,蔚来携全系车型亮相粤港澳大湾区车展 环球热议
- 端午游以短途为主 毕业游预订升温-全球实时
- 天天微头条丨来火把节!看凉山如何以数字化赋 线上线下把游客“请进来”
- 节气组诗——春篇_环球资讯
- 债务炸弹“引线”暂除 万亿“新债”引发担忧 病根未除,美债危机还在继续(环球热点) 环球热门
- 我给白TXT百度云_天天微速讯
- 环球热推荐:如何删除word页眉上的横线 怎样删除word页眉上的横线
- 后天创业板明阳电气申购,顶格申购需配市值18.5万元_资讯
- 《流浪地球》等荣膺电影频道传媒关注荣誉 王一博获最受关注男主角|当前报道
- 好!光屁股狂奔的干部被撤职,女教师被丈夫和婆婆赶出家门
- 港澳定居申请办理条件和费用是怎样规定的?
- 圣诞节的由来和习俗_圣诞节的来历
- 四川科技馆端午节门票预约时间表2023|当前视点
- 当前视讯!双丰社区:“三步走”推动托幼再升级
- 2023河北高考成绩什么时候公布? 世界聚看点
- 不用vip的免费追剧软件有哪些
- 新食代回暖,Z世代先走胃还是先走心? 今日要闻
- 天天快讯:制造一个长方形怎么做_制造一个长方形
- 长城人寿盈相随年金保险可靠吗?好处有哪些?
- 2023鹿晗演唱会重庆站什么时候购票?|快消息
- 这几种情况下你需要5why分析法
- qq飞车管家加成是什么应用(qq飞车电脑管家加成)
- 蔚来,撑得住吗?
- iQOO 11刷新率怎么调
- 怎样才能让自己变得有气质_让自己变得有气质的方法 全球热点
- 当前短讯!武汉纺织大学制订2024年硕士研究生招生专业目录的通知
- 最新资讯:端午民宿预订同比增长524% 避暑成搜索关键词
- 福特中国确认裁员 合资车企能否走出电动化困境?-天天微头条
- 全球快消息!涉"广州地铁事件",微博深夜通报:这些账号被禁言
- 香港宣布:解除!
- 中央气象台:江南华南等地多降雨 华北黄淮等地有高温天气
- Win11系统开机卡微软账号解决方法
- 国家发改委:研究部署加强居民增收工作,各地要加大稳就业工作力度-全球消息
- 天天快看:就算没有人造子宫技术,家庭解体也是现代社会的必然趋势,欧美日韩莫不如此
- 天天热点!《湖北省“无废城市”建设三年行动方案》发布 倡导校园、景区、酒店减排固体废物
- 保护心脏的小方子(对治阳康之后的心慌和心悸等后遗症)
- 当前动态:2023年6月16日无水硫酸钠价格最新行情预测
- 世界要闻:我们这代人存不下钱的原因是什么?
X 关闭