C语言之总线错误、段错误、页错误、malloc、static 当硬件告诉操作系统一个有问题的内存引用时,就会出现这两种错误。操作系统通过向出错的进程发送一个信号与之交流。进程收到 “bus error” 或 "segmentation fault"信号后将进行信息转储并终止。不过可以认为这些信号设置一个信号处理程序(signal handler),用于修改进程的缺省反应。bus error (core dumped) 总线错误CPU对进程引用内存的一些做法不满事实上,总线错误几乎都是由于未对齐的读或写引起的。之所以称为总线错误,是因为出现未对齐的..
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/..
C语言学习--顺序程序设计 C程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的。C语句可分为以下5类:表达式语句表达式语句由表达式加上分号 ; 组成其一般形式为: 表达式;执行表达式语句就是计算表达式的值。例如:x=y+z; 赋值语句 y+z 加法运算语句,但计算结果不能保留,无实际意义;i++; 自增1语句,i值增加1。函数调用语句函数调用语句:由函数名、实际参数加上分号 ; 组成其一般形式为:函数名(实际参数表)执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然.
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..
摄像头的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工作原理介绍工作过程..
Android:Camera2开发详解 Camera2架构概述Camera2架构图Camera2引用了管道的概念将安卓设备和摄像头之间联通起来,系统向摄像头发送 Capture 请求,而摄像头会返回CameraMetadata。这一切建立在一个叫作 CameraCaptureSession 的会话中。Camera2拍照流程图Camera2中比较重要的类及方法CameraManager 摄像头管理器,用于打开和关闭系统摄像头getCameraIdList() 返回当前设备中可用的相机列..
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..
Linux内核中的软中断、tasklet 上半部指的是中断处理程序,下半部则指的是一些虽然与中断有相关性但是可以延后执行的任务。在网络传输中,网卡接收到数据包这个事件不一定需要马上被处理,适合用下半部去实现;但是用户敲击键盘这样的事件就必须马上被响应,应该用中断实现。中断不能被相同类型的中断打断,而下半部依然可以被中断打断;中断对于时间非常敏感,而下半部基本上都是一些可以延迟的工作。由于二者的这种区别,所以对于一个工作是放在上半部还是放在下半部去执行,可以参考下面4条:如果一个任务对时间非常敏感,将其放在中断处理程序中执行。..
Linux IO 多路复用(select、poll、epoll) 复用的意思是不用每个进程/线程只能操空一个IO,只需要一个进程/线程来操作多个IO,复用的是进程/线程。内核空间不能直接解引用用户态的指针。IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。..
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次方。.
Linux互斥锁和条件变量、两者之间配合使用 当多个控制线程共享相同的内存时,需要确保每个线程看到一致的数据视图,如果每个线程使用的变量都是其他线程不会读取或者修改的,就不会存在一致性的问题。通常来说用户可以使用互斥量(互斥锁)或者条件变量(条件锁)的方式来解决线程的同步问题。互斥锁互斥锁是一个简单的锁定命令,它可以用来锁定共享资源使得其他线程无法访问,具有以下特点原子性:把一个互斥锁定义为一个原子操作,这意味着操作系统保证了不可被中断。如果一个线程锁定了互斥锁,则没有其他线程可以在同一时间成功锁定这个互斥量。唯一性:如果一..
Linux中的工作队列 工作队列使Linux内核中把工作延迟执行的一种手段,其目的不同于软中断,软中断使提高CPU的相应,尽可能的缩短关中断的时间。而工作队列主要目的使节省资源,其比较适合微小的任务,比如执行某个唤醒工作等,通过创建线程同样可以达到目的,但是线程毕竟有其自身的资源开销如CPU、内存等。如果某个任务很小的话,就不至于在创建一个线程,因此linux内核提供了工作队列这种方式。工作队列成为ConcurrencyManaged Workqueue(cmwq)总体描述工作队列相关结构体这是工作队列机..
android (MTK) 驱动层读取摄像头ID失败问题、低温下Camera打开花屏或者读不到id、概率性读取不到id 底层驱动读不到摄像头的ID,可以从以下几个方面做检查首先检查硬件方面,多拿几个摄像头模组来做试验。因为会存在打样模组有问题的情况,在原理图上对清摄像头的各个脚是否都对应上了、模组是否都扣好等。这个是硬件层面上的。第二检查I2C地址是否正确,如MTK平台的基本都是以7位地址的方式操作的。既是偏移一位的。最后是要看看模组的规格书,确认器件的I2C地址第三就要看摄像头的上、下电时序这一块。如MTK平台的,它在这个文件里实现:mt6737_65_a_n_mp1\kernel-3.18\driv..
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..
C语言基础学习 C语言初使用—HelloWorldc语言是一个面向过程的编程语言。使用工具:VS(Visual Studio)面向过程:“面向过程”是一种以事件为中心的编程思想,就是解析出问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用。main是主函数的函数名,表示这是一个主函数,是这个程序的入口函数每一个c源程序都必须要有,并且只有一个主函数(main函数)函数调用语句,printf函数的功能是要把输出的内容送到显示器上去显示,打印功能printf函数是一个系统定义的标准
进程间通信之无名管道和有名管道 无名管道什么是管道一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两个已经打开文件进行,它们分别代表管道的两端。管道是一种特殊的文件,它不属于某一种文件系统,而是一种独立的文件系统,有着自己的数据结构。它建立起两个进程之间的桥梁。数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从哪个缓冲区的头部读出数据。无名管道的特性只能用于具有亲缘关系的进程之间的通信,通常一个管道由一个进程创建,然后该进程调用fo
Android硬件抽象层HAL层 hal的作用硬件抽象层是介于android内核kernel和上层之间的抽象出来的一层结构。他是对linux驱动的一个封装,对上层提供统一接口,上层应用不必知道下层硬件具体的实现工作,屏蔽了底层实现细节。hal的意义谷歌搭建好了hal的框架,为上层framework打开通过jni调用hal提供了同一的api,硬件开发商或者移植人员只需要按照框架开发接口,不需要耗时时间在与上层的交互实现上硬件厂商可以将核心动心放入到hal层,hal层属于用户空间,不属于linux内核,和android源码
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判断是否需要作同步,怎么做同步,需要同
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