自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 Android相机架构预览

2024-03-25 09:41:58 120

原创 C语言之总线错误、段错误、页错误、malloc、static

当硬件告诉操作系统一个有问题的内存引用时,就会出现这两种错误。操作系统通过向出错的进程发送一个信号与之交流。进程收到 “bus error” 或 "segmentation fault"信号后将进行信息转储并终止。不过可以认为这些信号设置一个信号处理程序(signal handler),用于修改进程的缺省反应。bus error (core dumped) 总线错误CPU对进程引用内存的一些做法不满事实上,总线错误几乎都是由于未对齐的读或写引起的。之所以称为总线错误,是因为出现未对齐的..

2021-08-16 09:57:03 1613

原创 MTK平台点亮sensor以及mtk开机初始化

MTK点亮sensorProbe:上电–>matach id–>下电Driver:Kernel部分和Hal部分dtsi:主要配置GPI的上电逻辑,把camera的上电管脚与平台管脚相关联。custom:tuning和imagesensor metadata添加一个sensorkenrel层把厂商提供的包含前摄像头驱动文件夹 gc2385_mipi_raw 和后摄像头驱动文件夹 gc5035cmipi_raw 拷贝到目录./kernel-4.4/drivers/..

2021-08-09 11:08:32 3704

原创 C语言学习--顺序程序设计

C程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的。C语句可分为以下5类:表达式语句表达式语句由表达式加上分号 ; 组成其一般形式为: 表达式;执行表达式语句就是计算表达式的值。例如:x=y+z; 赋值语句 y+z 加法运算语句,但计算结果不能保留,无实际意义;i++; 自增1语句,i值增加1。函数调用语句函数调用语句:由函数名、实际参数加上分号 ; 组成其一般形式为:函数名(实际参数表)执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然.

2021-08-06 15:35:22 314

原创 Camera杂项汇总

Camera 的 30 根 Pin 脚可大致分为以下几类:电源部分:VCAMD 就是 DVDD 数字供电,主要给 ISP 供电,由于 RAWDATA格式的sensor其ISP是在 BB 端,所以将其引脚将其NC。从上面的规格书上可以看出 DVDD 是内部 BB 端供电。模组已将其 NC 掉了;VCAM_IO 就是 VDDIO 数字 IO 电源主要给 I2C 部分供电;VCAMA 就是 AVDD 模拟供电,主要给感光区和 ADC 部分供电;VCAM_AF 是对 Camera..

2021-08-04 09:54:43 1064

原创 摄像头的MIPI接口、DVP接口和CSI接口

电脑摄像头接口是USB接口,智能手机的摄像头接口是MIPI接口,还有一部分的摄像头(比如说某些支持DVP接口的硬件)是DVP接口。USB是串行通用串行总线(Universal Serial Bus)的简称,而MIPI是移动行业处理器接口(Mobile Industry Processor Interface),DVP是数字视频端口(digital video port)的简称,CSI是相机串行接口(CMOS Sensor Interface)的简称。Camera工作原理介绍工作过程..

2021-08-04 09:44:00 4180

原创 Android:Camera2开发详解

Camera2架构概述Camera2架构图Camera2引用了管道的概念将安卓设备和摄像头之间联通起来,系统向摄像头发送 Capture 请求,而摄像头会返回CameraMetadata。这一切建立在一个叫作 CameraCaptureSession 的会话中。Camera2拍照流程图Camera2中比较重要的类及方法CameraManager 摄像头管理器,用于打开和关闭系统摄像头getCameraIdList() 返回当前设备中可用的相机列..

2021-08-03 10:17:34 5723

原创 Camera Metadata原理

概述在Camera2+HAL3的架构中,App --> Framework --> HAL通过metadata的方式来传递参数。metadata实际上就是一个参数对(key, value),比如设置AE mode为auto,传下来的是类似(10,1)这样的参数对(AE mode的key为10,参数auto的value为1)。然后在HAL中通过10来获取设置值1。相关文件路径/system/media/camera/include/system/camera_metadata..

2021-08-03 10:03:50 1370 1

原创 Linux内核中的软中断、tasklet

上半部指的是中断处理程序,下半部则指的是一些虽然与中断有相关性但是可以延后执行的任务。在网络传输中,网卡接收到数据包这个事件不一定需要马上被处理,适合用下半部去实现;但是用户敲击键盘这样的事件就必须马上被响应,应该用中断实现。中断不能被相同类型的中断打断,而下半部依然可以被中断打断;中断对于时间非常敏感,而下半部基本上都是一些可以延迟的工作。由于二者的这种区别,所以对于一个工作是放在上半部还是放在下半部去执行,可以参考下面4条:如果一个任务对时间非常敏感,将其放在中断处理程序中执行。..

2021-08-02 10:44:37 352

原创 Linux IO 多路复用(select、poll、epoll)

复用的意思是不用每个进程/线程只能操空一个IO,只需要一个进程/线程来操作多个IO,复用的是进程/线程。内核空间不能直接解引用用户态的指针。IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。..

2021-08-02 10:16:14 260

原创 C语言初使用—数据类型2

C语言初使用—数据类型1、实型数据实型也称为浮点型。实型常量也成为实数或者浮点数。在C语言中,实数只采用十进制。它有二种形式:十进制小数形式,1)十进制数形式:由数码0~9和小数点组成例:0.0、25.0、8.789、0.13、4.56、200.、-2665.454等均为合法的实数。注意,必须要有小数点。2)指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为:a E n(a为十进制数,n为十进制整数)说明:2.1E5是2.1乘以10的5次方。.

2021-07-30 14:21:10 2448

原创 Linux互斥锁和条件变量、两者之间配合使用

当多个控制线程共享相同的内存时,需要确保每个线程看到一致的数据视图,如果每个线程使用的变量都是其他线程不会读取或者修改的,就不会存在一致性的问题。通常来说用户可以使用互斥量(互斥锁)或者条件变量(条件锁)的方式来解决线程的同步问题。互斥锁互斥锁是一个简单的锁定命令,它可以用来锁定共享资源使得其他线程无法访问,具有以下特点原子性:把一个互斥锁定义为一个原子操作,这意味着操作系统保证了不可被中断。如果一个线程锁定了互斥锁,则没有其他线程可以在同一时间成功锁定这个互斥量。唯一性:如果一..

2021-07-30 09:48:02 270

原创 Linux中的工作队列

工作队列使Linux内核中把工作延迟执行的一种手段,其目的不同于软中断,软中断使提高CPU的相应,尽可能的缩短关中断的时间。而工作队列主要目的使节省资源,其比较适合微小的任务,比如执行某个唤醒工作等,通过创建线程同样可以达到目的,但是线程毕竟有其自身的资源开销如CPU、内存等。如果某个任务很小的话,就不至于在创建一个线程,因此linux内核提供了工作队列这种方式。工作队列成为ConcurrencyManaged Workqueue(cmwq)总体描述工作队列相关结构体这是工作队列机..

2021-07-30 09:37:04 277

原创 android (MTK) 驱动层读取摄像头ID失败问题、低温下Camera打开花屏或者读不到id、概率性读取不到id

底层驱动读不到摄像头的ID,可以从以下几个方面做检查首先检查硬件方面,多拿几个摄像头模组来做试验。因为会存在打样模组有问题的情况,在原理图上对清摄像头的各个脚是否都对应上了、模组是否都扣好等。这个是硬件层面上的。第二检查I2C地址是否正确,如MTK平台的基本都是以7位地址的方式操作的。既是偏移一位的。最后是要看看模组的规格书,确认器件的I2C地址第三就要看摄像头的上、下电时序这一块。如MTK平台的,它在这个文件里实现:mt6737_65_a_n_mp1\kernel-3.18\driv..

2021-07-29 09:59:28 2354 1

原创 Camera dtsi解析

平台:8909参考kernel/Documentation/devicetree/bindings/media/video/msm-cci.txt的注释sensor配置cell-index = <0>; 唯一标识,用来区分多个摄像头。源码:kernel/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.ccell index标识camera安装的位置,这个值只要唯一即可!compa..

2021-07-29 09:49:00 873

原创 C语言基础学习

C语言初使用—HelloWorldc语言是一个面向过程的编程语言。使用工具:VS(Visual Studio)面向过程:“面向过程”是一种以事件为中心的编程思想,就是解析出问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用。main是主函数的函数名,表示这是一个主函数,是这个程序的入口函数每一个c源程序都必须要有,并且只有一个主函数(main函数)函数调用语句,printf函数的功能是要把输出的内容送到显示器上去显示,打印功能printf函数是一个系统定义的标准

2021-07-28 18:35:57 159

原创 进程间通信之无名管道和有名管道

无名管道什么是管道一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两个已经打开文件进行,它们分别代表管道的两端。管道是一种特殊的文件,它不属于某一种文件系统,而是一种独立的文件系统,有着自己的数据结构。它建立起两个进程之间的桥梁。数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从哪个缓冲区的头部读出数据。无名管道的特性只能用于具有亲缘关系的进程之间的通信,通常一个管道由一个进程创建,然后该进程调用fo

2021-07-28 09:38:20 364

原创 Android硬件抽象层HAL层

hal的作用硬件抽象层是介于android内核kernel和上层之间的抽象出来的一层结构。他是对linux驱动的一个封装,对上层提供统一接口,上层应用不必知道下层硬件具体的实现工作,屏蔽了底层实现细节。hal的意义谷歌搭建好了hal的框架,为上层framework打开通过jni调用hal提供了同一的api,硬件开发商或者移植人员只需要按照框架开发接口,不需要耗时时间在与上层的交互实现上硬件厂商可以将核心动心放入到hal层,hal层属于用户空间,不属于linux内核,和android源码

2021-07-28 09:29:15 1142

原创 MTK 双摄帧同步问题确认

设计模块:Hwsync相关代码:vendor\mediatek\proprietary\hardware\mtkcam\drv\src\sensor\common\v1hwsync_drv.cppW:\kernel-4.9\drivers\misc\mediatek\imgsensor\src\common\v1* 相关驱动代码原理:hwsync 会从n3d 那边获取帧的相关信息, v-sync-diff等,然后会根据 v-sync-diff判断是否需要作同步,怎么做同步,需要同

2021-07-27 09:38:18 1051

原创 Qcom-相机停止运行总结、预览或拍照时瞬间闪屏、修改Camera预览、拍照、视频时支持的分辨率

相机停止问题描述:【通过霍尔传感器】频繁打开关闭相机,出现一次相机停止crash logmain log报错原因:130 VIDIOC_MSM_CSID_IO_CFG failed Connection timed outmsm_post_event:Timed outkernel log报错根源:问题在于连接超时错误解决方案:#define CSID_TIMEOUT msecs_to_jiffies(100) 改成 #define CSID_T

2021-07-27 09:33:35 845 2

原创 Mtk相机冷启动--耗时

概述冷启动分为s0、s1、s2、s3、s4、s5、s6、s7S0:Touch Up → ActivityStartS1:ActivityStart → open camera | startS2:Open cameraS3:Open camera | end → Configure streams | startS4:Configure streamsS5:Configure streams | end → SetRepeatingRequestsS6:Se

2021-07-26 10:43:36 415

原创 Camera电路、图像传感器问题汇总

常见电路VCC表示给芯片电源供电;VDD表示给芯片中的器件单独供电,当然也可也从内部电源的VCC整合过来,就不用外部单独提供;所以有些芯片只有VCC,没有VDD,所以一般VDD<=VCCAVDD表示模拟电压,给芯片中的模拟器件供电,比如camera供电就要用到AVDD,也是相对于DVDD区别出来的,DVDD表示数字电压,给芯片的数字信号供电,比如0101,AFVDD表示auto focus VDD自动对焦电压,是针对一些马达之类的电压,DOVDD和IOVDD是芯片引脚出来

2021-07-26 10:31:23 4977 7

原创 I/O模型

Linux内核将所有的外部设备当作一个文件来操作,对文件的读写操作会调用内核的系统命令,返回一个文件描述符(file descriptor,fd)。socket的读写也有相应的描述符,成为socketfd。描述符就是一个数字,指向内存中的一个结构体(文件路径或者数据区等)操作系统的5种IO模型阻塞IO模型在应用进程中调用recfrom,期间系统调用直到数据包到达并复制到应用进程的缓冲区中或者发生异常而返回,期间一直等待,应用进程从调用recvfrom开始到返回的整个时间段内都是阻塞的。.

2021-07-26 09:57:28 82

原创 Camera多摄学习

概述Android9引入了对多相机设备的API支持,该逻辑相机设备由同一方向的两个或多个物理相机设备组成。逻辑摄像机设备作为单个CameraDevice / CaptureSession公开给应用程序,允许与HAL集成的多摄像机功能进行交互。应用程序可以选择访问和控制基础物理相机流,元数据和控件。逻辑相机和物理相机是一对多或者一对一的关系,一对多为了做多摄同步,多个相机映射成一个物理相机对应对一个CameraDevice/CaptureSession在此图中,不同的摄像机ID用颜色编码。

2021-07-23 11:29:43 405

原创 高通平台Camera调试移植入门

camera基本代码架构1、上层应用和HAL层交互,高通平台在HAL层里实现自己的一套管理策略。在kenrel中实现sensor的底层驱动。最核心的sensor端的底层设置、ISP效果相关代码单独进行抽离,放在daemon进程中进行管理2、高通把大部分具体的设置及参数放到了daemon进程中,kenrel部分进行了v4l2的设备注册I2C设备注册3、上图所示,camera在kenrel层的主文件为msm. c文件,负责设备的具体注册及相关方法的填充;在msm_sensor.c文件中,主要维护高通自..

2021-07-23 09:49:45 1558

原创 Framework和HAL之间的起始和基本执行流程

camera API的详细步骤1、Framework调用camera_module_t->common.open(),返回hardware_device_t结构体2、Framework检查haraware_device_t->version字段,并为该版本的相机硬件设备实例化相应的句柄。如果是3.0版本,则将hardware_device_t映射为camera3_device_t3、Framework入参Framework的回调函数指针调用camera3_device_t->ops-

2021-07-22 09:45:29 1217

原创 Android Camera HAL3 hdr

HAL3的主要流程获取现在设备上可用的相机设备,包括相机每一个相机的属性功能,get_number_of_camera。获取想要打开的相机的Information,在调用中被定为 get_camera_info 函数。打开一个设备,保存打开设备时获取的camera_module_t结构体,该结构体就是一个抽象的camera module的连接通道通过新建一个设备cameradevice,来获取一个camera3_device_t结构体,该结构体主要用于获取notify和torch的

2021-07-22 09:34:21 581 2

原创 MTK camera --MiddleWare层

Camera ProvidercreatelCameraProvider_V2_4生成CameraProvider对象setCallback清除之前存在的callback、设置新的callbackinitialize设置setupVendorTags检查生成CameraProvider对象传入mManager是否合理onCameraDeviceStatusChange、onTouchModesStatusChange给FWK通知camera、闪光灯的状态mapToHidlCamera..

2021-07-21 10:54:59 370

原创 MTK --process_capture_request

camera process_capture_request 流程在使用默认设置中的一组设置和至少一个输出流(已由Framework较早注册),framework构造并向HAL发送第一个捕获请求。framework调用 camera_device方法ops调用camera3_device_ops的process_capture_request开始下发request请求,通过camera3_device_t-> ops-> process_capture_request()发送到HAL。 在..

2021-07-21 10:52:49 664

原创 MTK camera --Config Streams

相机简述监听和枚举相机设备get_number_of_cameras、get_camera_characteristic打开设备并连接监听器connect、open配置目标使用情形的输出(static、capture、video)configure_stream为目标使用情形创建请求捕获/重复请求和连拍process_capture_request接受结果metadata和图片数据proces_capture_result切换使用情形时,重新配置目标是用情形输出framew..

2021-07-21 10:51:06 1296

原创 MTK camera--Search Sensor

概述MTK camera主要的内容在hal层,现在有hal1/hal3,当下主流的使用的是hal3,驱动主要负责sensor,电源的控制以及sensor相关寄存器的操作,MTK采用设备和驱动分离的思想,抽象出imgsensor.c来控制sensor的上下电以及sensor具体的操作,结构图如下:sensorDriver介绍对上相应需求,对下控制sensor硬件行为,处理器通过I2C接口来控制sensor的大部分行为,sensor输出的数据传输到TG、ISP等模块处理后,ISP将数据保存到内..

2021-07-21 10:48:48 1355

原创 MTK camera --Open

整体介绍Middle Ware(MW)层介绍 ICameraProvider:向上暴露的接口调用,实现是在CameraProvider中 [email protected]: 用于Camera Service去操作各个Camera device的操作,实现在CameraDevice3中; [email protected]: Camera会话的接口,实现是再CameraDevice3Session ICameraDeviceCallBa

2021-07-21 10:39:36 596

原创 MTK平台Camera驱动流程分析

Camera成像原理景物通过镜头生成的光学图像投射到图像传感器上,然后转为模拟的电信号,经过A/D模数转换器后转换成数字信号,再把数字信号传输到DSP数字信号处理芯片加工处理,再通过IO接口传输到CPU中处理,再通过LCSD就可以看到图像了。**图像传感器(sensor)**是一种半导体芯片,其表面包含有几十万到几百万的光电二极管。光电二极管受到光照射时,就会产生电荷。目前的sensor有两种CCD(Charge Couple Device)电荷耦合器件,它是目前高像素类 sensor 中比较成熟..

2021-07-21 10:32:48 1468

原创 Log and Dump Summary

开启各模块log前,建议关闭selinux权限,并确定camera logD是已经有打印的,如果没有使用以下命令开启adb shell setenforce 0adb shell setprop prtsist.vendor.mtk.camera.log_lvvel3adb shell pkill camera*开MTK camera2 APP logadb rootadb shell setpropvendor.debug.mtkcam.loglevel 3开cmaera device ha

2021-07-21 10:29:25 678

原创 Camera mipi协议

mipi协议介绍mipi,是Mobile Industry Processor Interface缩写。mipi移动行业处理器接口。是mipi联盟发起的为移动应用处理器制定的开放标准。分别定义了一系列的手机内部接口标准,比如摄像头接口CSI、显示接口DSI,其中CSI(Camera Serial Interface)是由MIPI联盟下Camera工作组指定的接口标准。CSI-2是MIPI CSI第二版,主要由应用层、协议层、物理层组成,最大支持4通道数据传输、单线传输速度高达1Gb/s。mipi CSI

2021-07-21 10:28:20 615 1

原创 Camera i2c、常见概念、系统架构简介

Cmera I2C介绍I2C总线协议I2C总线在物理连接上比较简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。I2C通信方式为半双工,只有一根SDA线,同一时间只可单向通信。***I2C总线特征I2C总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址(地址通过物理接地或者拉高..

2021-07-21 10:24:38 2552

原创 Camera 配置 关键结构体

static struct msm_sensor_power_setting power_setting[] = {//上电序列{ .seq_type = SENSOR_GPIO, //来源,分为GPIO和VERG .seq_val = SENSOR_GPIO_STANDBY,//电压类型 .config_val = GPIO_OUT_LOW,// 上电/下电 高/低 .delay = 10, //上电时间}};static struct msm_camera_sensor_slave_i

2021-07-21 09:48:43 921

原创 Camera知识问答

I2C不通的情况下怎么检查?I2C地址,址的宽度,总线配确认sensor的i2c地址是否配置正确,由于i2c通信地址是7bit,而不同的平台可能存在差异。有些配置7bit;有些则配置8bit,最后一位是读写标志。检查上电时序确认驱动中,是否在上电过程中,都按照sensor datasheet的上电流程配置电源和将reset,pwdn拉到相应的电平状态检查上电电压是否正确检查mclk硬件测量是否正确是否与别的I2C地址冲突mipi不通的情况下怎么检查?确认硬件mipi lane上是..

2021-07-20 16:33:03 3078

原创 Camera基础概念学习总结

CMOS sensor在外观上分为三层1、 Microl0ens层:将入射光线聚集到感光区2、 Color Filter:覆盖了一个RGB的滤光片在感光区上,作用是将入射的光线过滤成R、G、B三原色3、 感光层:接受光线照射,将光信号转换成电流信号,放大输出Camera系统的组成Camera模组图例名词解释:Substrate:基层传感器,光电转换器,将光源转成电子信号,并将信号发送给ISP处理。IR cut滤光片:分为红外截至或吸收滤光片(白天摄像头可以接收人眼无法识别的.

2021-07-20 16:19:09 1213 1

原创 Android深入了解Qcom架构

Android相机架构预览相机应用层相机服务层硬件抽象层硬件抽象层实现高通KMD

2021-07-20 11:43:55 992

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除