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

MTK camera 闪光灯Flashlight驱动调试流程

MTK camera 闪光灯Flashlight驱动调试流程

分类: MtkDev  |  作者: topicdev 相关  |  发布日期 : 2014-09-26  |  热度 : 153°
 
 

Camera Flash 驱动分析

一、Flash驱动涉及到的文件包含:

mediatek /custom/common/kernel/flashlight/src/kd_flashlightlist.c

mediatek /custom/huaqin_bsp/at808p/base/kernel/flashlight/constant_flashlight/leds_strobe.c

mediatek /platform/mt6592/hardware/mtkcam/core/featureio/drv/strobe/flashlight_drv.cpp

mediatek/platform/mt6592/hardware/mtkcam/core/featureio/pipe/aaa/flash_mgr/flash_mgr.cpp

mediatek/platform/mt6592/hardware/mtkcam/core/featureio/pipe/aaa/flash_mgr/flash_cct.cpp

mediatek/platform/mt6592/hardware/mtkcam/acdk/src/cct/if/cct_feature.cpp

二、Flash驱动代码流程分析:

i.             mediatek /custom/common/kernel/flashlight/src/kd_flashlightlist.c

主要完成设备的注册和初始化。

1.注册一个平台设备:名为"kd_camera_flashlight";

2.注册一个平台驱动,name和我们的devices name同名,这个名字主要用来和HAL层的name做匹配用;

3.对IOCTL的一个填充,供HAL调用;

4.做一个接口主要跟我们实际使用的Flash驱动对接,以kdFlashlightList罗列出来;

ii.             mediatek/custom/huaqin_bsp/at808p/base/kernel/flashlight/constant_flashlight/leds_strobe.c

1.      这个文件就是我们实际性的使用的Flash驱动文件,从

mediatek/config/huaqin92_wet_b2a_tdd/xxx/ProjectConfig.mk文件中CUSTOM_KERNEL_FLASHLIGHT配置获取具体使用的Flash驱动。

如:

CUSTOM_HAL_FLASHLIGHT= constant_flashlight

CUSTOM_KERNEL_FLASHLIGHT = constant_flashlight

2.      该文件和kd_flashlightlist.c文件的对接函数为: 

323 MUINT32constantFlashlightInit(PFLASHLIGHT_FUNCTION_STRUCT *pfFunc)

3.      这个文件完成的任务是填充以下几个函数:

 

[cpp]   http://www.aiuxian.com/article/p-1659602.html  http://www.aiuxian.com/article/p-1659602.html http://www.aiuxian.com/article/p-1659602.html  http://www.aiuxian.com/article/p-1659602.html  在CODE上查看代码片  派生到我的代码片
 
  1. 315FLASHLIGHT_FUNCTION_STRUCT constantFlashlightFunc=  
  2. 316{   
  3. 317     constant_flashlight_open,  
  4. 318     constant_flashlight_release,  
  5. 319     constant_flashlight_ioctl  
  6. 320 };  

 

4.      我们主要分析的是constant_flashlight_ioctl,以为这是跟HAL实际握手的接口。

 

iii.             mediatek/platform/mt6592/hardware/mtkcam/core/featureio/drv/strobe/flashlight_drv.cpp

这个文件完成的任务比较多,主要是一些类的实现和定义。

 

[cpp]   http://www.aiuxian.com/article/p-1659602.html  http://www.aiuxian.com/article/p-1659602.html http://www.aiuxian.com/article/p-1659602.html  http://www.aiuxian.com/article/p-1659602.html  在CODE上查看代码片  派生到我的代码片
 
  1. 825 intFlashlightDrv::setFlashlightModeConf(unsigned long a_strobeMode)  
  2. 897 intFlashlightDrv::setCaptureFlashlightConf(unsigned long a_strobeWidth)  
  3. 952 intFlashlightDrv::setCaptureDelay(unsigned int value)  
  4. 1021 intFlashlightDrv::getDuty(int* duty)  
  5. 1090 intFlashlightDrv::lowPowerDetectEnd(int* isLowPower)  

 

主要是为flash_mgr.cpp提供接口。

                      

iv.             mediatek/platform/mt6592/hardware/mtkcam/core/featureio/pipe/aaa/flash_mgr/flash_mgr.cpp

实现闪光灯模式的设置和获取、拍照/摄像预览的开启和终止、闪光灯设备的打开和关闭等等。

 

[cpp]   http://www.aiuxian.com/article/p-1659602.html  http://www.aiuxian.com/article/p-1659602.html http://www.aiuxian.com/article/p-1659602.html  http://www.aiuxian.com/article/p-1659602.html  在CODE上查看代码片  派生到我的代码片
 
  1. 1479 void FlashMgr::setTorchOnOff(int en)  
  2. 2276 intFlashMgr::setFlashMode(int mode)  

 

v.             mediatek/platform/mt6592/hardware/mtkcam/core/featureio/pipe/aaa/flash_mgr/flash_cct.cpp

调用lash_mgr.cpp中的函数来给cct_feature.cpp提供接口。

 

[cpp]   http://www.aiuxian.com/article/p-1659602.html  http://www.aiuxian.com/article/p-1659602.html http://www.aiuxian.com/article/p-1659602.html  http://www.aiuxian.com/article/p-1659602.html  在CODE上查看代码片  派生到我的代码片
 
  1. 128 int FlashMgr::cctFlashEnable(int en)  
  2. 129 {  
  3. 130    LogInfo("cctFlashEnable(en=%d) line=%d",en,__LINE__);  
  4. 131     if(en==1)  
  5. 132     {  
  6. 133        setFlashMode(FLASHLIGHT_FORCE_ON);  
  7. 134     }  
  8. 135     else  
  9. 136     {  
  10. 137        setFlashMode(FLASHLIGHT_FORCE_OFF);  
  11. 138     }  
  12. 139     return 0;  
  13. 140 }  

 

vi.             mediatek/platform/mt6592/hardware/mtkcam/acdk/src/cct/if/cct_feature.cpp

调用flash_cct.cpp中的函数,并以IOCTL的形式进行封装,供更上一层次调用。具体的没有在继续跟下去,有兴趣的话,可以再往上分析分析。

 

[cpp]   http://www.aiuxian.com/article/p-1659602.html  http://www.aiuxian.com/article/p-1659602.html http://www.aiuxian.com/article/p-1659602.html  http://www.aiuxian.com/article/p-1659602.html  在CODE上查看代码片  派生到我的代码片
 
  1. MINT32 CctImp::aaaCCTFeatureControl  
  2. 361    case ACDK_CCT_OP_FLASH_ENABLE:  
  3. 362        err = FlashMgr::getInstance()->cctFlashEnable(1); //YosenFlash  
  4. 363        break;  
  5. 364    case ACDK_CCT_OP_FLASH_DISABLE:  
  6. 365        err = FlashMgr::getInstance()->cctFlashEnable(0); //YosenFlash  

 

原文:http://www.aiuxian.com/article/p-1646401.html

转载于:https://www.cnblogs.com/Ph-one/p/5528334.html

相关文章:

  • 3518调试2
  • Ubuntu Linux 安装 .7z 解压和压缩文件
  • proc_create的使用方法
  • simple_strtoul
  • linux子系统的初始化_subsys_initcall()
  • linux sed 命令,sed -i
  • linux设备驱动程序注册过程详解
  • linux下lk和kernel层通信方式[2]
  • 模拟IC
  • ubuntu使用ssh连接远程电脑的方法
  • Linux内核日志开关
  • Linux:命令gedit
  • bin/sh^M:损坏的解释器: 没有那个文件或目录
  • ubuntu 关机命令
  • 海思3518e mpp2/sample/venc makefile简析
  • [数据结构]链表的实现在PHP中
  • Android 架构优化~MVP 架构改造
  • CentOS7简单部署NFS
  • Java程序员幽默爆笑锦集
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Spring-boot 启动时碰到的错误
  • 机器学习中为什么要做归一化normalization
  • 前端路由实现-history
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 实习面试笔记
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • 正则表达式-基础知识Review
  • # C++之functional库用法整理
  • #前后端分离# 头条发布系统
  • (1)STL算法之遍历容器
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (推荐)叮当——中文语音对话机器人
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)http协议
  • ***监测系统的构建(chkrootkit )
  • .md即markdown文件的基本常用编写语法
  • .net core开源商城系统源码,支持可视化布局小程序
  • .Net MVC4 上传大文件,并保存表单
  • .Net Web项目创建比较不错的参考文章
  • .NET和.COM和.CN域名区别
  • .net中的Queue和Stack
  • /etc/fstab 只读无法修改的解决办法
  • @JoinTable会自动删除关联表的数据
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [20171113]修改表结构删除列相关问题4.txt
  • [android] 请求码和结果码的作用
  • [AX]AX2012 AIF(四):文档服务应用实例
  • [BJDCTF2020]The mystery of ip
  • [cocos creator]EditBox,editing-return事件,清空输入框
  • [HackMyVM]靶场 Wild