
-----Qualcomm------
文章平均质量分 57
KrisFei
工作记录.
展开
-
SurfaceFlinger旋转流程分析
chipset: MSM8X25Qcodebase: Android4.1本文主要对SF(SurfaceFilnger)处理旋转事件的流程做个简单分析。GPU和mdp都可以用来旋转,文中对两者穿插说明。 系统初始化会调用GraphicPlane::setDisplayHardware,此函数主要判断系统是否默认设置了rotation property值,如果有,则先保存下来。另外,SF原创 2013-02-17 15:16:31 · 5692 阅读 · 0 评论 -
DDMS和豌豆荚 ScreenCapture流程
chipset: MSM8x25Qcodebase: Android4.1Screencap和screenshot大同小异,不过前者是直接用build好的一个可执行文件来操作的,文件位于/system/bin/screencap。看下code:int main(int argc, char** argv){ const char* pname = argv[0]原创 2013-02-08 11:18:09 · 3295 阅读 · 0 评论 -
volume down + power key ScreenShot 流程
chipset: MSM8x25Qcodebase: Android 4.1interceptKeyBeforeQueueing -> PhoneWindowManager.java interceptScreenshotChord -> postDelayed -> takeScreenshot -> handleMessage -> TakeScree原创 2013-02-08 08:22:28 · 4126 阅读 · 0 评论 -
屏幕旋转180°调试过程
环境:OS: Android4.1Chipset:MSM8X25Qmdp:3.03背景:屏幕反着打,需要显示旋转180°。旋转方案:1. 通过lcd driver ic直接让屏幕旋转。2. 通过mdp旋转。3. Framework旋转。 调试过程:方案1:由于玻璃是单扫描方向,如果直接将driver IC反着扫,也就是说从IC原创 2013-01-31 10:52:34 · 5682 阅读 · 1 评论 -
vmalloc size分析
平台: msm8x25系统: android 4.1内核: 3.4.0概念由于系统的连续物理内存有限,这使得非连续物理内存的使用在linux内核中出现,这叫vmalloc机制。和前者一样,vmalloc机制中的虚拟地址也是连续的。 Vmallocinfo Vmalloc机制并不是狭义地指使用vmalloc函数分配,其他还有如iorema原创 2013-12-10 14:15:10 · 10589 阅读 · 0 评论 -
Low Memory Killer分析
Chipset: MSM8X25QCodebase: Android4.1Kernel: 3.4.0 概念: Lowmemory killer是android基于oom killer做了改进。两者区别:Oom killer: 当系统内存不足时,会根据当前进程的内存使用状况以及oom score来Kill掉某个进程。Low memorykiller: 会周原创 2013-04-29 13:19:51 · 4035 阅读 · 0 评论 -
OOM(out_of_memory) killer分析
Chipset: MSM8X25QCodebase: Android4.1Kernel: 3.4.0 概念: OOMkiller,即out of memory killer,是linux下面的一种管理当内存耗尽时的处理机制。当内存较少时,OOM会遍历整个进程链表,然后根据进程的内存使用情况以及它的oom score值最终找到得分较高的进程,然后发送kill信号将原创 2013-04-27 16:47:38 · 4211 阅读 · 0 评论 -
高端内存永久映射分析
chipset: MSM8X25QCodebase: Android4.1Kernel: 3.4.0 基本概念: 当你需要将高端页面长期映射到内核空间的时候,就要使用Kmap函数来实现,即高端内存永久映射。这样避免页表和TLB的更新而导致资源的占用。 使用的时候一般先通过alloc_page(__GFP_HIGHMEM)申请一个page,然后原创 2013-04-24 18:00:03 · 3118 阅读 · 2 评论 -
伙伴系统分析
chipset: MSM8X25QCodebase: Android4.1Kernel: 3.4.0 基本概念: 关于伙伴系统算法的原理还是比较好理解的,这里不作复数。直接看下关键数据结构。struct zone {~~snip struct free_area free_area[MAX_ORDER]; //每一阶原创 2013-04-07 18:17:52 · 3342 阅读 · 0 评论 -
bootmem allocator分析
Codebase: android 4.1Kernel: 3.4.0Chipset: msm8x25q 在系统启动时,内存的伙伴系统/slab算法还没有初始化之前,系统也需要来作内存管理,分配一些核心数据结构,bootmem分配器就实现了该功能,它用于在启动阶段早期分配内存。Bootmem分配器使用位图来管理页,位图数量和系统的物理内存也数量是相同的。当页被使用时,就标记为1,原创 2013-03-21 21:43:35 · 2349 阅读 · 0 评论 -
struct meminfo分析
Chipset:MSM8x25QCodebase:Android 4.1Linux Kernel: 3.4.0 在linux Kernel中,一开始内存相关的信息是由struct meminfo来保存的,每个物理连续的内存区域被保存为meminfo中的一个元素,也就是说在Linux使用中,整块物理内存可能是不连续的,可能其中某一中间区域是被其他cpu给使用掉了。原创 2013-03-18 19:52:28 · 3520 阅读 · 1 评论 -
PMEM原理分析
Chipset:MSM8x25QCodebase:Android 4.1PMEM使用:PMEM使用比较简单,分单进程使用和共享进程使用同一块PMEM。单进程使用:1. int master_fd = open(“/dev/pmem_xxx”,O_RDWR, 0);2. 然后再mmap就可以使用了。进程间共享PMEM:进程A:原创 2013-03-04 18:14:28 · 4056 阅读 · 3 评论 -
ION原理分析
平台: MSM8x25Q系统: Android4.1从上一篇ION基本概念中,我们了解了heaptype, heap id, client, handle以及如何使用,本篇再从原理上分析下ION的运作流程。 MSM8x25Q平台使用的是board-qrd7627.c,ION相关定义如下:/** * These heaps are listed in the o原创 2013-02-27 17:29:54 · 10730 阅读 · 1 评论 -
ION基本概念介绍
chipset: MSM8X25Qcodebase: Android 4.1ION概念: ION是Google的下一代内存管理器,用来支持不同的内存分配机制,如CARVOUT(PMEM),物理连续内存(kmalloc), 虚拟地址连续但物理不连续内存(vmalloc), IOMMU等。用户空间和内核空间都可以使用ION,用户空间是通过/dev/ion来创建client的原创 2013-02-18 17:35:13 · 9417 阅读 · 6 评论 -
memory pool 原理及使用
chipset: msm8x25codebase: android4.1一、 初始化:int __init memory_pool_init(void){ int i; alloc_root = RB_ROOT; mutex_init(&alloc_mutex); for (i = 0; i < ARRAY_SIZE(mpools); i++) { mutex_原创 2013-01-23 16:23:37 · 2777 阅读 · 0 评论 -
保留内存(PMEM/ION)申请
chipset: msm8x25codebase: android4.1PMEM是高通使用的固定内存分配机制,ION是Google为了使各家厂商使用同一种固定内存分配机制而出现的产物。当然在ION使用的情况下,PMEM也是可以被定义使用的,主要看用户空间选择哪个了,不过两者并存实在没这个必要,毕竟很浪费内存。先看下kernel在开机的时候是如何申请这部分内存作为PMEM使用原创 2013-01-16 13:55:49 · 4050 阅读 · 0 评论 -
[笔记分享] [Camera] msm8x25 camera hal 流程记录
Platform: msm8x25相对前面的msm8926平台记录少了一点。 因为粘贴格式不对齐问题,所以截图了,字体太小在线或者下载放大。原创 2017-08-13 18:27:20 · 683 阅读 · 0 评论 -
[笔记分享] [Camera] msm8926 camera hal 流程小结
Platform: msm8926因为粘贴格式不对齐问题,所以截图了,字体太小在线或者下载放大。原创 2017-08-11 18:16:57 · 748 阅读 · 0 评论 -
[笔记分享] [Camera] 相机的flash led功能小结
平台:高通相关目录及文件:Kernel/drivers/media/platform/msm/camera_v2/sensor/flash:msm_led_flash.c 注册flash为camera架构中的一个subdev,提供ioctl接口给上层camera server调用。 msm_led_torch.c 提供设置torch模式接口,我们没注册进去。(led_trigger_set原创 2017-08-11 14:57:59 · 6482 阅读 · 1 评论 -
[笔记分享] [Camera] 相机的一些名词解释
Black Level Correction: 暗电流校准。此功能一般集成在sensor中,但是严格来说是属于ISP一部分。感光二极管在没有光照射情况下,释放了一部分电流,称为暗电流。需要去除之。 参考文档: 80-N7433-1_BLinearization Correction: Sensor输出的R/G和B/G颜色曲线理论上是1:1的比例,事实有差异,注意是颜色变化比例,不是说某一个pi原创 2017-08-11 14:49:42 · 3683 阅读 · 0 评论 -
[笔记分享] [Camera] 相机的Tuning flow
平台: 高通原创 2017-08-11 14:35:58 · 3599 阅读 · 0 评论 -
[笔记分享] [Camera] 相机的一些附加功能
收集各类手机和相机的camera附加功能Nubia Z7:急速抓拍: 按音量值,不开屏幕的情况下,泛焦(不测光/不对焦)拍三张照片(过曝/正常/欠曝)。构图线: 显示拍照构图线。罗盘水平仪: 显示水平线。当水平线 参考线重合之后,拍出来的照片也是水平的。独立白平衡: 画面上选择自己想要的色温。手动白平衡: 手动调节色温值。对焦和测光点分离:原创 2017-08-11 14:13:04 · 782 阅读 · 0 评论 -
[笔记分享] [Camera] msm8926的ZSL功能小结
平台: msm8926 OS: Android 4.4术语:ZSL: Zero Shutter Lag. ubiFocus: 高通对照片后期的一种处理技术,可以利用多张照片来实现拍照不对焦,拍好之后随便选择对焦点的功能。ZSL出现背景:拍照的延时主要分两个方面: 1. 从按下拍照键到照片拍好放到内存里。 2. APK的后期处理。对于BSP这边,能优化的主要是第一条,因此ZSL的出现正原创 2017-08-10 16:21:51 · 7377 阅读 · 0 评论 -
[笔记分享] [Camera] 相机的曝光三要素
之前工作学习笔记,分享给大家!原创 2017-08-10 15:25:53 · 1929 阅读 · 0 评论 -
[笔记分享] [Camera] 相机的等效焦距计算
之前工作学习笔记,分享给大家!原创 2017-08-10 14:43:59 · 5366 阅读 · 0 评论 -
[笔记分享] [Camera] 各种相机种类及区别
之前工作笔记,分享给大家!成像原理:原创 2017-08-10 14:25:32 · 2181 阅读 · 0 评论 -
samurai_ii__vengeance(武士二:复仇)无法在android上运行的原因
运行程序的时候会提示程序停止,抓到如下log:01-12 06:29:17.649 I/ActivityManager( 562): Start proc com.android.vending for service com.android.vending/com.google.android.finsky.services.LicensingService: pid=4547 uid=1原创 2013-04-22 17:08:12 · 3074 阅读 · 0 评论 -
[笔记分享] [SPI] MSM8X60 SPI 小结
SPI 连接当MSM作为master的时候,SPI可以用来支持触摸屏。如下图:SPI 架构SPI主要由以下几个块构成,也可从图上看出: 1. 寄存器组状态和控制。提供内部总线接口,寄存器接口和核心控制。 2. 输出FIFO。保持所有输出数据。 3. 移位寄存器。提供串并和并串转换。 4. 输入FIFO。保持所有输入数据。 5. 时钟控制。给移位寄存器提供全局时钟和复位信号。 6原创 2017-08-20 23:47:53 · 864 阅读 · 0 评论 -
[笔记分享] [SPI] SPI 协议小结
1 Overview 本文先介绍了SPI协议的工作原理,然后再介绍了MSM8x60上SPI的特点。2 SPI 2.1 简介 同步外设接口(SPI)是由摩托罗拉公司开发的全双工同步串行总线,该总线大量用在与EEPROM、ADC、FRAM和显示驱动器之类的慢速外设器件通信。 SPI(Serial Peripheral Interface)是一种串行同步通讯协议,由一个主设备和一个或多个原创 2017-08-20 23:44:29 · 748 阅读 · 0 评论 -
[笔记分享] [中断] 中断申请释放以及上下半部
1.1 介绍 Linux将中断分为中断上半部和下半部。上半部用来处理紧急的和硬件操作相关的,此时所有当前中断线都被禁止,包括其它CPU。下半部用来处理能够被允许推迟完成的中断处理部分,此时中断是开启的。上下半部之间的界限依情况划分。 而异常和中断不同,必须考虑时钟的同步,也称同步中断,如除0、缺页等。这里我们只讨论异步中断。 1.2 中断注册/释放 1.2.1 注册函数 request_原创 2017-08-20 23:21:52 · 1944 阅读 · 0 评论 -
[笔记分享] [中断] MSM7201 Interrupt study report
OverviewScope本文主要介绍MSM7201平台中断机制,适合大多数开发平台。开头还介绍了一般ARM中断的原理。另外还分别介绍了MSM7201的PIC和VIC两种控制器来控制中断的原理以及他们的不同部分。 具体的MSM8x60的中断是如何处理的(包括原理、寄存器设置等)相关的文档还没找到。不过原理应该和MSM7201是差不多的。注意MSM7201和MSM8x60不同部分对中断的影响: 1原创 2017-08-20 17:58:33 · 717 阅读 · 0 评论 -
[笔记分享] [GPIO] MSM8x39 GPIO 软件部分小结
平台: MSM8X39 OS: Android4.4 Kernel: 3.10.28GPIO SW:Overview:在之前的msm8926平台以及以前的平台 ,GPIO 作为一个整体存在,也就是说是一个GPIO子系统,不区分是控制什么功能。而在未来的msm8939/msm8994平台,GPIO模块引起了kernel支持的pinctrl系统。出现pinctrl系统的原因应该是开发者想把GPI原创 2017-08-19 21:48:19 · 2131 阅读 · 0 评论 -
[笔记分享] [GPIO] MSM8x39 GPIO 硬件部分小结
平台: MSM8X39 OS: Android4.4 Kernel: 3.10.28术语及缩写:TLMM: Top-Level Mode Multiplexer. 此模块提供了一种机制可以让一组GPIO pads共享使用不同的功能。另外,对于 pin的缩写定义,有如下表格作参考。 这里要说明的”H”: 是指pin可以接高电压,例如3.0V,不过它的驱动能力最大只能到8mA了。GPIO H原创 2017-08-19 21:30:09 · 3345 阅读 · 0 评论 -
[笔记分享] [eMMC] 内核eMMC分区及对应名字读取
Chipset: msm8926 OS: Android4.4 Kernel: 3.4.0在N久之前的会议上留下了两个问题: 1. 内核在加载emmc驱动时是如何知道当前有几个分区的? 2. 如何知道/dev/mmcblkXpX对应的是哪个分区呢?读取分区加载sd/emmc驱动的时候,有如下流程: 来看看Check_partition(): 核心的部分是check_part这个结构体原创 2017-08-18 12:32:29 · 10334 阅读 · 4 评论 -
[笔记分享] [SD] SD读写测试程序
读写1M或者1K所花时间测试,测试文件默认放在/sdcard/sd.test(由于sdcard目录是fuse产生的,性能会收到影响,见下一篇文章 [RK3288][Android6.0] Fuse将被SDCardFS替换 ,所以建议换个目录)/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under th原创 2017-08-15 22:55:54 · 1571 阅读 · 0 评论 -
[笔记分享] [SD] 块设备驱动学习小结
Chipset: msm8926 OS: Android4.4 Kernel: 3.4.0相关概念:块设备与字符设备区别: 1. 以块传输,字符设备以字节为单位。 2. 有对应缓冲区。 3. 可以随机访问。可以不按传输顺序访问,比如访问的是1/10/3/2扇区,可以调整为1/2/3/10扇区。此设计是为了机械类块设备如硬盘设计的,对于SD/EMMC可以直接访问。Struct bloc原创 2017-08-15 22:44:33 · 866 阅读 · 0 评论 -
[笔记分享] [SD] msm8926 sd 探测流程
Platform: msm8926因为粘贴格式不对齐问题,所以截图了,字体太小在线或者下载放大。原创 2017-08-15 22:16:48 · 495 阅读 · 0 评论 -
[笔记分享] [SD] SD卡种类介绍
MMC:Multimedia card.7 pin。分MMC和SPI两种工作模式。SPI是MMC协议的一个子集,主要用于低数据传输率的系统,可以减少cost. RS-MMC:只是小型号的MMC。SD:Secure Digital Card. 数据传送和物理规范由MMC发展而来,比MMC稍微厚一点,与MMC兼容。 相对MMC增加了2 Pin作为数据线。 有CPRM功能(数据加密)。 SD1原创 2017-08-13 22:29:58 · 6194 阅读 · 0 评论 -
work queue in Linux 2.3.36
新work queue工作机制 工作队列(workqueue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。Linux的work queue在2.6.0 到2.6.19以及到2.6.36工作队列发生了一些变化。本文主要对新版本做一些分析。原创 2012-08-10 16:40:33 · 3229 阅读 · 0 评论 -
[笔记分享] [Power] MSM8x60 Power Management study report
1 Overview 本文主要介绍MSM8x60平台的电源管理部分,平台通过PM8058和PM8901两个IC来管理电源部分,另外,RPM中的MPM用来提供MSM的sleep mode功能来使系统最小的功耗浪费。 这里主要对电源管理部分的总体进行大致地介绍,具体的部分可参考PMIC的参考文档: PM8058: 80-VK401-3 PM8058 POWER MANAGEMENT IC U原创 2017-08-20 18:22:26 · 1294 阅读 · 0 评论