自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (8)
  • 收藏
  • 关注

转载 Camera(7) MTK camera打开流程介绍

文章目录一、整体介绍1、MiddleWare(MW)层介绍2、Pipeline介绍二、Camera Open流程一、整体介绍首先看下MTKcam的整体框架图如下包含了很多的内容,其中camera的打开流程也贯穿在其中,从Camera APK 一层层的系统调用到driver再到Hardware层,这篇文章主要从Pipeline开始介绍打开camera的流程,JAVA/Cameraservice/MiddleWare层后续再进行介绍:1、MiddleWare(MW)层介绍ICameraProvider:

2020-05-22 00:16:08 8185 7

转载 Camera(6) MTK camera启动流程介绍

文章目录一、Camera框架介绍:一、Camera框架介绍:Camera的框架分为Kernel部分和hal部分,其中kernel部分主要有两块:(1) image sensor driver,负责具体型号的sensor的id检测,上电,以及在preview、capture、初始化、3A等等功能设定时的寄存器配置;(2) isp driver,通过DMA将sensor数据流上传;HAL层部分主要有三部分组成:(1) imageio,主要负责数据buffer上传的pipe;(2) drv,包含im

2020-05-21 23:24:39 7645 1

转载 Camera(5) MTK camera驱动框架介绍

文章目录一、概序二、上电相关的结构体之间的联系(1) IMGSENSOR_HW结构体:(2) 上电时序控制相关:三、系统初始化:1、设备加载:2、imgsensor_driver_register创建字符设备3、imgsensor_clk_init 时钟初始化:4、imgsensor_hw_init电压初始化:5、imgsensor_i2c_create I2C设备初始化:6、具体类型的上电介绍(以pmic控制的regulator方式为例)(1) 传入对应的设备的device结构体(2) 调用对应的init

2020-05-21 16:40:57 3886 1

转载 Camera(4) MTK camera驱动结构介绍

文章目录一、概述二、sensor driver介绍1、sensor driver函数结构体:(1) imgsensor_mode_struct不同模式特征的结构体(2) struct imgsensor_info_struct描叙sensor info常量的结构体(3)struct imgsensor_struct记录sensor info变量的结构体,用于动态的保存sensor的关键信息2、驱动入口xxxx_MIPI_RAW_SensorInit3、open 函数介绍及其所完成的任务4、feature_c

2020-05-21 16:01:45 5351

转载 Camera(3) camera mipi通信协议

文章目录一、mipi协议介绍二、mipi CSI-2 的物理连接三、MIPI CSI2的工作模式四、mipi传输时序一、mipi协议介绍MIPI(移动行业处理器接口),是Mobile Industry Processor Interface的缩写。MIPI移动行业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准。分别定义了一系列的手机内部接口标准,比如摄像头接口CSI、显示接口DSI,其中CSI(Camera Serial Interface)是由MIPI联盟下Camera工作组指定的接口

2020-05-21 11:28:26 4478

转载 Camera(2) camera i2c总线协议介绍

文章目录一、I2C总线的拓扑结构二、I2C总线特征三、I2C总线协议四、I2C总线操作i2c 不通的原因有两种一、I2C总线的拓扑结构I2C总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。I2C通信方式为半双工,只有一根SDA线,同一时间只可以单向通信,485也为半双工,SPI和UART为双工

2020-05-21 11:09:26 2434

转载 Camera(1) camera初探之camera模组和硬件接口

文章目录一、Camera模组介绍Camera模组组成(1) 工作原理(2) CCM 包含四大件:(3) 图像的输出格式A、YUVB、JPEGC、RGBD、RAW(4) 传感器尺寸和画质的关系(5) 图像解析度/分辨率(Resolution)二、Camera硬件接口1、camera的硬件接口如下图所示2、camera 的工作时序一、Camera模组介绍摄像头结构模组的图片如下Camera模组组成(1) 工作原理物体通过镜头(lens)聚集的光,通过CMOS或CCD集成电路,把光信号转换成电信号,再

2020-05-21 10:31:51 3924

原创 [Camera Drv]如何调整闪光灯在auto模式下的打闪阈值

文章目录[DESCRIPTION][SOLUTION][具体分析]平台os版本内核MT6739Android 9.0kernel-4.4[DESCRIPTION]【偶现】办公室环境下开启自动闪光灯拍照或录像,闪光灯亮起,说明闪光灯阈值偏大,需要调整闪光灯在 auto 模式下的打闪阈值【前提条件】无【操作步骤】明亮环境下开启自动闪光灯拍照或录像【实际结果】闪...

2020-05-09 10:28:00 1320

原创 MT6739 Camera驱动移植文档

文章目录MT6739 Camera Porting Guide把厂商提供的驱动代码拷贝到对应路径KERNEL层HAL层(1) 修改ProjectConfig.mk配置文件修改与imgsensor相关的配置信息修改与lens相关的配置信息修改flashlight相关配置信息(2) 修改defconfig配置文件(3) 修改内核驱动代码添加新的camera sensor ID定义添加新的Camera ...

2020-05-08 14:49:00 2709

原创 打开Android camera log相关的命令(3A、Flashlight、Camera)

关闭防火墙adb shell setenforce 0将logcat的缓存空间增大为10Madb shell logcat -G 10m获取AE的调试信息adb shell setprop debug.ae_mgr.enable 1 adb shell setprop debug.aaa.pvlog.enable 1 ...

2020-05-08 10:20:29 2385

原创 audio驱动之machine

文章目录音频驱动原理概述音频驱动分析platformcpu_daicodec和codec_daimachine耳机音频驱动原理概述ASoC 被分为 Machine, Platform 和 Codec 三大部件,Platform 驱动的主要作用是完成音频数据的管理, 最终通过 CPU 的 数字音频接口(DAI) 把音频数据传送给 Codec 进行处理,最终由 Codec 输出驱动耳机或者是喇叭的...

2020-05-07 10:45:37 1126 1

原创 在MTK平台配置一个支持smartPA的audio驱动

smartPA概述smart PA翻译成中文,就是“智能功率放大器”,其本质上也是一个放大器,而它和普通外放模块相比,最大的区别是加了一个反馈的功能。这个反馈的功能起到什么样的作用呢?假设一特定中频下smart PA和普通PA模块信噪比、最大输出功率等可以做到完全相同,在其他频率下(特别是在低频)普通放大器为了保证信噪比(直观反映为音质)及最大功率(防止被烧毁),该放大器在设计之初就必须调低...

2020-05-06 17:46:13 7783 1

原创 audio驱动之codec和codec_dai

平台os版本内核MT6765Android 9.0kernel-4.9./kernel-4.9/sound/soc/mediatek/codec/mt6357/mtk-soc-codec-6357.cmodule_init(mtk_mt6357_codec_init);static int __init mtk_mt6357_codec_init(void)...

2020-05-06 13:52:09 2108

原创 audio驱动之耳机

./kernel-4.4/drivers/misc/mediatek/accdet/accdet_drv.cmodule_init(accdet_mod_init);static int accdet_mod_init(void){ int ret = 0; ACCDET_DEBUG_DRV("[Accdet]accdet_mod_init begin!\n"); ret = pl...

2020-04-30 15:12:43 1317

原创 audio驱动之cpu_dai

平台os版本内核MT6765Android 9.0kernel-4.9cpu_daicpu_dai 驱动通常对应cpu的一个或者几个 I2S/PCM 接口。用来连接platform和machine。./kernel-4.9/sound/soc/mediatek/common_int/mtk-soc-dai-stub.cmodule_init(mtk_dai_s...

2020-04-27 15:14:35 1610

原创 audio驱动之platform驱动

文章目录平台os版本内核MT6765Android 9.0kernel-4.9audio驱动相关结构体注释snd_soc_codec_driver音频编解码芯片描述及操作函数,如控件/微件/音频路由的描述信息、时钟配置、IO 控制等snd_soc_dai_driver音频数据接口描述及操作函数,根据 codec 端和 soc 端,分为...

2020-04-24 19:06:00 1092

原创 audio驱动之简单介绍

文章目录audio驱动原理概述audio驱动中的一些术语以及概念audio驱动代码的文件组织结构查看声卡设备的一些常用命令查看声卡的设备文件查看声卡0下面挂载的设备查看某个具体pcm设备的信息查看注册的所有pcm设备的设备名称audio驱动原理概述ASoC 被分为 Machine, Platform 和 Codec 三大部件,Platform 驱动的主要作用是完成音频数据的管理, 最终通过 C...

2020-04-23 17:15:32 3450

原创 Android P 的 Camera JNI 加载流程概述

文章目录概述hw_get_module()1.CameraService2. hardware概述本篇主要研究 camera 在 HAL 层中的实现机制,我们将将从 hw_get_module() 函数入手,探究 Libraries 层是如何调用 HAL 层中的库函数的。hw_get_module()1.CameraServiceCameraService 是在开机时就会启动,而当它第一...

2020-04-02 19:39:09 660

原创 基于MT6739的Android9.0 Camera驱动(kernel层)

文章目录Kernel 层驱动的实现Camera 开机流程Camera 驱动的文件结构Camera 驱动初始化流程Camera 入口函数 imgsensor_init注册的平台驱动结构体 gimgsensor_platform_driverimgsensor_probe 探测函数的实现imgsensor_driver_register 注册函数的实现gimgsensor_file_operation...

2020-03-18 17:13:57 3818

原创 拍照时闪光灯调用HAL层到driver层流程

文章目录@[toc]HAL层HAL层闪光灯调用具体函数执行流程Hal3AIf::getInstance的实现Hal3AFlowCtrl::getInstance的实现Hal3AFlowCtrl::init的实现IThread3A::createInstance的实现Thread3AImp::createInstance的实现Thread3AImp::Thread3AImp的实现Thread3AIm...

2020-03-06 10:41:23 3429

原创 修改MTK平台Android P系统支持系统A/B分区升级

文章目录MTK平台Android_P系统A/B升级至生成系统image一、device目录下的修改二、kernel 目录下的修改三、lk目录下的修改四、preloader目录下的修改五、修改img分区大小六、Android A/B System OTA分析MTK平台Android_P系统A/B升级至生成系统imagePlatform: MT6739OS: Android 9.0MTK 平台...

2020-02-20 11:44:47 4025

原创 GMS测试步骤

文章目录GMS测试GMS测试环境配置PC端配置手机端环境配置CTS测试流程1) 启动CTS测试2) CTS常用命令VTS测试流程1) 替换谷歌system.img2) 启动VTS测试3) VTS常用命令GTS测试流程1) 启动GTS测试2) GTS常用命令GMS测试GMS 全称为 Google Mobile Service,即谷歌移动服务,对于出口厂商而言,没有 GMS 的手机走不了运营商的渠...

2020-02-20 09:16:17 4038

原创 【RK3399】【Android7.1】camsys 驱动加载流程分析

驱动的加载过程(1) camsys driver入口函数​根据 ./kernel/drivers/media/video/rk_camsys 目录下的Makefile可以了解到,该目录源码最终会生成camsys_drv.o模块,设备端加载camsys_drv.o这个模块时,会调用这个模块中module_init注册的入口函数camsys_platform_init,具体代码如下:module...

2019-10-23 14:24:46 1343

原创 【RK3399】【Android7.1】Ubuntu16.04下不能正常使用vi编辑文件解决方法

问题现象:ubuntu16.04中vi在编辑状态下方向键不能用,还有回格键不能删除等我们平时习惯的一些键都不能正常使用。问题原因:ubuntu16.04中预装的是vim tiny版本,想要正常使用我们常用的功能需要的是vim full版本。解决办法:可以安装vim full版本,在full版本下键盘可以正常使用,安装好后同样使用vi命令。安装vim:执行下面的语句安装vim full...

2019-10-20 20:35:03 319

原创 【RK3399】【Android7.1】SecureCRT连接虚拟机中的Linux系统(Ubuntu)

Platform: Firefly-RK3399OS: Android 7.1PC: Ubuntu 16.04什么是SecureCRTSecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说就是可以在Windows下登录UNIX或Linux服务器主机的软件。为什么要使用SecureCRT想要操作linux系统的时候不必进入到linux桌面,可以更方便的在命令行下...

2019-10-20 20:05:56 341

原创 【RK3399】【Android7.1】Ubuntu16.04配置开发编译环境出现的问题

(1) ubuntu16.04 安装 lib32readline-gplv2-dev 出错,解决办法直接用 lib32readline6-dev 替代:lib32readline-gplv2-dev使用命令:sudo apt-get install lib32readline6-dev(2) Android N 源码编译错误:Communication error with Jack...

2019-10-19 08:37:52 466

原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(7)——读写信号量

读写信号量概述读写信号量和信号量的关系与读写自旋锁和自旋锁的关系类似。读信号量和写信号量是互斥的,但允许N个读执行单元同事访问共享资源(同事获取读信号量),而最多允许一个写进程获取写信号量。因此,读写信号量相对于信号量更宽松,对于读多写少的情况会明显提高程序的执行效率。读写信号量的使用方法(1) 定义和初始化读写信号量struct rw_semaphore rw_sem; /* 定义读写信...

2019-10-18 16:34:34 236

原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(8)——信号量(Semaphore)

信号量(Semaphore)简单介绍信号量也是一种用来保护 临界区(共享数据) 的常用方法,它的使用方法和自旋锁类似。和自旋锁类似之处是,信号量使用时,只有得到信号量的进程才能够执行临界区代码。和自旋锁不同的地方是,在没有得到信号量的时候,进程不会像自旋锁那样原地旋转,而是进入休眠等待的状态。因此当信号量阻塞时小号的系统资源(主要是CPU资源)并不多,也不会出现死机的现象。信号量的使用方法...

2019-10-15 19:10:47 127

原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(6)——读-复制-更新(RCU)机制API

RCU使用方法(1) 读锁定static inline void rcu_read_lock(void)static inline void rcu_read_lock_bh(void)(2) 读解锁static inline void rcu_read_unlock(void)static inline void rcu_read_unlock_bh(void)(3) 使用RC...

2019-10-13 16:32:16 189

转载 Markdown进阶(更改字体、颜色、大小,设置文字背景色,调整图片大小设置居中)

Markdown进阶(更改字体、颜色、大小,设置文字背景色,调整图片大小设置居中)Markdown进阶(更改字体、颜色、大小,设置文字背景色,调整图片大小设置居中)...

2019-10-12 09:52:59 832 1

原创 【RK3399】【Android7.1】关于adb的一些问题

“adb”不是内部或外部命令,也不是可运行的程序或批处理文件(Win)原因: 出现这个问题的原因是在对应的目录下没有adb执行程序,即“adb.exe”。解决方法:解决这个问题最简单的一个方法就是,将android stuido软件里的 ./sdk/platform-tools/ 目录下的 adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll 三个文件放在对应的目录下...

2019-10-11 21:58:49 990

原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(5)——读-复制-更新(RCU)机制原理

RCU的原理RCU(Read-Copy-Update,读-复制-更新)机制可以看做是读写自旋锁的扩展。在rwlock机制中读自旋锁和写自旋锁时互斥的,但是在RCU机制中读和写操作是可以并发执行的。在访问共享数据的时候,需要先获取锁,才能访问共享数据。这种原理很简单,其根本思想就是在访问共享资源时,需要先访问一个全局的变量,也就是锁,然后通过全局变量的状态来控制任务线程或进程对共享数据的访问。但...

2019-10-09 17:58:57 219

原创 【RK3399】【Android7.1】Ubuntu16.04配置开发编译环境

获取Ubuntu16.04镜像文件可以在如下地址获取到Ubuntu16.04的镜像文件Ubuntu16.04镜像文件下载链接下载成功后可以得到一个iso镜像文件:ubuntu-16.04.6-desktop-amd64.iso获取的 .iso文件 可以通过vmware 创建新的虚拟机中选中来加载。安装基本的依赖软件sudo apt-get install -y git flex bis...

2019-10-09 17:04:14 1675

原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(4)——顺序锁

顺序锁和读写自旋锁的区别顺序锁 同样是自旋锁的一种衍生,顺序锁和读写自旋锁类似,但是顺序锁赋予了 写自旋锁 更高的权限。在 读写自旋锁 中,读自旋锁和写自旋锁的优先级是相同的,当有任务线程或进程获取了读自旋锁后,写自旋锁必须等待读自旋锁被释放后,才能被获取,反过来也一样。在 顺序锁 中,当任务线程或进程获取了读自旋锁后,不必等到读自旋锁被释放也可以获取写自旋锁,并在此过程中继续执行修改共享数...

2019-10-09 12:32:18 126

原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(3)——读写自旋锁

为什么会引入读写自旋锁自旋锁并不在乎锁定的临界区是进行读操作还是写操作,因为它仅仅允许同一时间只有一个任务线程或进程获取自旋锁,所以即使有很多个任务线程或进程同时读取共享数据并不会影响到共享资源,临界区也会被锁住,这无疑是影响系统性能的。为了解决这个问题,在自旋锁的基础上衍生出了这样一个分支锁——读写自旋锁。读写自旋锁 可以将临界区的读、写操作区分开。如果开发人员认为临界区的代码只是读取了共享...

2019-10-08 18:51:58 130

原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(2)——自旋锁

什么是自旋锁(Spin Lock)

2019-10-08 15:29:50 152

原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(1)——原子操作

为什么需要并发控制通常一个 Linux 驱动程序并不是为了给某个用户空间使用而编写的。调用到这个 Linux 驱动程序的用户有可能会有很多个,这就有可能出现多个用户程序同时对这个 Linux 驱动程序进行read、write、ioctl等操作。由于 Linux 驱动程序还会使用一些全局数据(即共享数据),如果同时对这些全局数据进行操作,就有可能会出现异常数据,这就使得 Linux 驱动必须具有能...

2019-10-07 18:50:42 256

原创 Linux 驱动程序编写流程概述

编写 Linux 驱动程序的步骤第1步:(建立 Linux 驱动的骨架加载和卸载 Linux驱动)Linux 内核在使用驱动前需要先加载驱动。在加载过程中会进行一些初始化的工作,比如分配设置注册对应的结构体,创建设备文件,分配内存地址空间等。而当 Linux 内核需要移除这个驱动时,会卸载该驱动,在卸载这个驱动的过程中会释放掉加载时这个驱动占用的资源,比如释放分配的内存地址空间以及删除创建的...

2019-10-06 22:58:08 1267

转载 Linux内核中双向链表的经典实现

概要前面一章"介绍双向链表并给出了C/C++/Java三种实现",本章继续对双向链表进行探讨,介绍的内容是Linux内核中双向链表的经典实现和用法。其中,也会涉及到Linux内核中非常常用的两个经典宏定义offsetof和container_of。内容包括:1. Linux中的两个经典宏定义2. Linux中双向链表的经典实现转载请注明出处:http://www.cnblo

2017-07-04 09:26:16 450

转载 i2c 编程接口

http://blog.csdn.net/g_salamander/article/details/8064627

2017-04-20 17:41:16 514

嵌入式CC++语言精华文章集锦

嵌入式 C C++语言精华文章集锦 C C+语言 struct 深层探索 2 C++中 extern "C"含义深层探索 7 C 语言高效编程的几招

2019-02-15

深入Linux设备驱动程序内核机制

这是一本系统阐述Linux设备驱动程序技术内幕的专业书籍,它的侧重点不是讨论如何在Linux系统下编写设备驱动程序,而是要告诉读者隐藏在这些设备驱动程序背后的那些内核机制及原理。作者通过对Linux内核源码抽丝剥茧般的解读,再辅之以精心设计的大量图片,使读者在阅读完本书后对驱动程序前台所展现出来的那些行为特点变得豁然开朗

2019-02-15

Linux设备驱动开发详解:基于最新的Linux 4.0内核

这是一本介绍Linux设备驱动开发理论、框架与实例的书,《以Linux4.0 版本内核为蓝本,详细介绍自旋锁、信号量、完成量、中断顶/底半部、定时器、内存和I/O映射以及异步通知、阻塞I/O、非阻塞I/O等Linux设备驱动理论;字符设备、块设备、TTY设备、I2C设备、LCD设备、音频设备、USB设备、网络设备、PCI设备等Linux设备驱动的架构和框架中各个复杂数据架构和函数的关系,并讲解了Linux驱动开发的大量实例,使读者能够独立开发各类Linux设备驱动。

2019-02-15

Head First Java(第2版)中文

此书是根据学习理论所设计的,让你可以从学习程序语言的基础开始一直到包括线程、网络与分布式程序等项目。最重要的,你会学会如何像个面向对象开发者一样去思考。而且不只是读死书,你还会玩游戏、拼图、解谜题以及以意想不到的方式与Java交互。在这些活动中,你会写出一堆真正的Java程序,包括了一个船舰炮战游戏和一个网络聊天程序。

2019-02-15

Android系统源代码情景分析

本书结合使用情景,全面、深入、细致地分析了Android系统的源代码,涉及到Linux内核层、硬件抽象层(HAL)、运行时库层(Runtime)、应用程序框架层(Application Framework)以及应用程序层(Application)

2019-02-15

深入理解Android内核设计思想

全面剖析了进程/线程、内存管理、Binder机制、GUI显示系统、多媒体管理、输入系统等核心知识在Android中的实现原理,通过大量图片与实例来引导读者学习,以求尽量在源码分析外,为读者提供更易于理解的思维路径 由浅入深,由总体框架再到细节实现,让读者尽快了解Android内核的设计思想

2019-02-15

Git权威指南

git领域的集大成之作,是一本关于git的百科全书,在广度、深度和实战性上让同类作品望尘莫及。

2019-02-15

空空如也

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

TA关注的人

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