自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(19)
  • 收藏
  • 关注

原创 Ashmem 内存分析

稍微记录一下ashmem的分析。到底是先讲驱动的代码还是调用的代码呢? 还是从外部入手吧。        android中调用ashmem的地方很多,我给一个dalvik中的例子:void *dvmAllocRegion(size_t byteCount, int prot, const char *name) { void *base; int fd, ret;

2012-02-23 14:20:16 2239

原创 Pmem使用小结

Pmem很好的满足高通芯片中MDP、GPU等需要连续物理内存的设备,这里我稍微小结一些自己的理解,做个记录:1.如何使用,这里要分两种情况:     第一种:在一个进程中自己分配自己使用,直接open之后mmap就ok了。     pmem_fd = open("/dev/pmem_device", O_RDWR, 0)     pmem_base = mmap(0, size

2011-07-12 16:10:09 3688

原创 android pmem使用小结

Pmem很好的满足高通芯片中MDP、GPU等需要连续物理内存的设备,这里我稍微小结一些自己的理解,做个记录:1. 如何使用,这里要分两种情况:     第一种:在一个进程中自己分配自己使用,直接open之后mmap就ok了。     pmem_fd = open("/dev/pm

2011-07-12 15:21:43 359

原创 android memory leak analysis tools

<br />    如何在Android中来检测系统中可能存在的内存泄漏问题呢?本篇文章给大家起一个头,分享一下基本的步骤。<br />    1.首先,打开DDMS, 在左边的device视图区点击你想要分析的进程,这里以system_process为例:<br /><br />    2.选中上图左上角的两个绿色按钮,即选中”Update Heap”和”Dump HPROF file”. 之后,会弹出对话框让您选择hprof文件的存放路径.<br />    3.此时,我们已经得到了hprof文件,但是

2011-02-23 16:07:00 3160

原创 搭建android git server

    主要给自己做一个记录,老是忘东西. 1.安装git daemon和gitosis.git daemon主要用于用户匿名访问,最好把所有工程都导出.gitosis 主要用于用户权限设置.切换到需要访问工程的用户名下,敲ssh-keygen -t rsa得到密钥,添加到工程中. 2.设置好权限之后,使用repo来镜像一份android代码.repo init -u git://xxx/platform/manifest.git -b branch_name --mirror   3.repo sync之

2011-01-12 10:57:00 1365

原创 下载编译GingerBread

<br /><br /><br />1. 下载地址:<br />   repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread<br />   repo sync<br /> <br />2. 修改build/core目录下的main.mk文件:<br />   ifeq ($(BUILD_OS),linux)<br />   build_arch := $(shell uname -m)<br />   -

2011-01-07 09:43:00 497

原创 高通芯片中的MDP模块[msm7x27]

   在高通芯片msm7x27中,有一个MDP模块,显示相关的数据都会经由其处理后送至目标设备。如下图所示,MDP模块主要包括PPP和DMA两大部分,系统可以利用PPP模块对数据进行加速处理,譬如缩放、旋转、叠加等等;7X27中的MDP具有四条DMA通道,分别是DMA_P、MDA_S、DMA_E、DMA_TV,可以外接lcd panel和TV。其中,DMA_S不可以接主屏。     先来讲讲PPP模块,这个模块在android中被copybit库抽象。在android中,很多对图像的操作,譬如缩放、BLIT

2010-12-05 11:03:00 5662 5

原创 surfaceflinger中的composition小结[msm7x27为例]

    在高通7x27平台上,surfaceflinger可以使用gpu/mdp/sw来做composition。因为mdp没有mmu,所以需要使用pmem才能正常工作。GPU可以通过mmu来使用非连续的内存,因此可以节省pmem的空间。    下面来简单的讲讲surfaceflinger的composition过程,每个surface都会分配一个内存空间,当surface需要更新时,给surfaceflinger发送消息,surfaceflinger的主线程收到消息后,从阻塞状态恢复,首先按照每个surf

2010-11-25 22:00:00 2655

原创 如何察看android smem log

<br /><br />    现在大部分的android手机都是基于双核架构的,这必然导致双核之间的通信,一些crash bug经常出在这一部分。这里,我给大家介绍两种方法:<br />    1、用trace32。trace32无疑是强大的,几乎可以做任何debug的事情,有高通代码的兄弟可以在/AMSS/products/76XX/tools/debug目录下找到smemlog.cmm和smem_log.pl这两个文件,可以dump出log.<br />    2、没有trace32的兄弟也不要灰心,

2010-11-16 16:14:00 1026 1

原创 android framebuffer driver 小结[msm7627为例]

    主要讲android中lcd驱动注册的主线,以msm7627为例。熟悉这个芯片的兄弟应该知道,msm7627的2d是通过一个mdp的硬件来做的,7627上这个硬件的版本是3.02。它支持EBI2/MDDI/RGB接口,这里以RGB接口为例,给大家看张图:     首先,在board.c文件里会注册panel/lcdc/mdp/framebuffer四个devices, 然后从panel的驱动初始化函数开始,做init,然后注册panel的驱动,如果驱动的name和device的name match上

2010-11-05 19:21:00 3700

原创 用trace32调试android kernel[msm7627为例]

    之前我讲了怎么用eclipse调试android的framework代码以及用gdb server调试native代码,但是由于gdb无法调试多线程代码,所以用起来还是很不方便。今天我来讲讲怎么用trace32调试kernel.    首先讲讲硬件连接,必须保证你的trace32是连接到arm11的JTAG口上,其他连接不细说了。    打开trace32的命令窗口,并对cpu设置,如下图所示:    进入设置界面,设置如下:    然后依次输入命令“cd Z:/out/target/product

2010-10-29 16:28:00 4356 1

原创 display tearing小结

<br /> <br />    小结一下tearing的问题,tearing可以分为source buffer tearing和destination tearing:<br />    1、source buffer tearing<br />    source buffer tearing是由于上层软件写framebuffer的速度快于MDP dma更新lcd的速度导致的,具体下下面的示意图。具体怎么判断呢?可以在MDP_drv.c中的mdp_pipe_ctrl()函数设置断点,按F5调试运行,如果

2010-10-27 14:07:00 1748 1

原创 android 内存分配小结

    有android手机的童鞋们可能经常会有这样的疑问,为什么我的G2手机明明是256M的内存,可用任务管理器或者free之类的命令,看到的实际值会远远小于256。看到网上的很多误导言论,这里我给大家澄清一下吧:    在android中,内存主要分给modem/pmem/android三个部分使用:    1、modem部分一般会占用40M~50M的内存,主要用于跑Amss。如果你有源码的话,可以在device/qcom/msmxxx/Boardconfig.mk看到。还有一种方法,可以用adb pu

2010-10-26 10:42:00 2116 1

原创 video bug fix小结

<br /><br />    今天碰到一个video解码的问题,无论播什么视频,视频都失真。经过一番排查,最终发现问题出现在了render的选择上面。vendor/qcom/android-open/libopencorehw/下的Android.mk文件没有将render配置进去。<br />    下面主要小结一下video debug的一些方法:<br />    1、开启所有的bug option: 修改在vendor/qcom/proprietary/mm-video/qdsp5/vdec-co

2010-10-25 18:31:00 1308 2

原创 用gdb和gdbserver调试android native code

      其实网上有很多类似的文章,但是你会发现几乎都不可重现,要么是细节没讲清楚,要么是压根自己没有真正去试过。这里,我仅给出自己用gdb和gdbserver调试android native code的实际过程,希望对大家有用。      注:以调试mediaserver进程为例.      第一步:你需要下载android,以debug方式编译,并以生成的image起模拟器或者设备。      第二步:你需要从“http://developer.download.nvidia.com/tegra/fi

2010-09-27 16:50:00 10245 1

原创 Android 按键消息path

下面是我自己总结的android中的按键消息传递path, 首先我们可以来看一下general flow: 如上图所示,Window manager service会起两个Thread,一个线程负责从kernel读取消息到keyQ队列;另外一个线程负责将keyQ队列中的消息分发给应用程序。具体的path见下面的几个图,大家可以参考几个图对着代码看一遍,就理解了。

2010-09-20 13:41:00 1396

原创 Android 输入法框架小结

<br />下面的这个图是我自己画的Android IMF, 仅供参考:<br />

2010-09-16 13:00:00 1306 1

原创 调试android java framework and app

 首先,需要将修改后的framework编译,烧写进设备。然后打开eclipse,新建工程,如下图:然后将需要调试的framework代码加入工程:建好工程后,连接设备,进入ddms视图,并点击需要调试的进程:点击Run->Debug Configuration->Remote JavaApplication->New,设置如下:在sourcecode里设置断点,并在ddms视图中选择开始调试:然后切换到debug视图,点击:调试即可完成。如果需要调试app, 需要在java视图中点击如下:弹出后的界面

2010-09-15 14:13:00 1345

原创 Android display Path analysis

    使用过Linux framebuffer的人都知道,我们需要在屏幕上显示一幅图像时,只需要将framebuffer mmap到用户空间,然后直接写这块内存即可,操作的结果会立即反映在display上。作为分析Android display path的基础知识,我先来讲讲Linux这部分的原理,如下图所示:    MDP会以一个固定的刷新率取得framebuffer中的数据送往panel,只要我们更新的framebuffer, 更新的内容会在一个刷新周期内反映在panel上。同时,Linux disp

2010-08-20 14:07:00 1841

空空如也

空空如也

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

TA关注的人

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