- 博客(117)
- 资源 (1)
- 收藏
- 关注
原创 低内存手机kernel的几个性能优化点
低内存手机kernel的几个性能优化点1.快速释放内存 boost free anon pages of sigkill process1.1修改@kernel/msm-4.9/arch/arm/mm/fault.c#include "fault.h"#include <linux/boost_sigkill_free.h>#ifdef CONFIG_MMU#ifdef CONFIG_KPROBESstatic int __kprobes__do_page_fa...
2020-10-30 15:45:19
854
原创 Android Keypad按键播放音
背景知识对于音乐类型的音频资源,可以通过MediaPlayer来播放; 对于音调,可以通过ToneGenerator来播放; 对于提示音,可以通过Ringtone来播放; 对于游戏中的音频资源,可以通过SoundPool来播放。ToneGenerator提供了对DTMF音(ITU-T Q.23),以及呼叫监督音(3GPP TS 22.001)、专用音(3GPP TS 31.111)中规定的音频的支持,根据呼叫状态和漫游状态,该文件产生的音频路径为下行音频或者传输给扬声器或耳机。需要说明的是.
2020-08-05 14:56:48
1010
原创 MTK schedplus CPU Governor
一,代码分析定义 CONFIG_CPU_FREQ_GOV_SCHEDPLUS=y1. @LINUX/android/kernel-4.9/drivers/misc/mediatek/sched/Kconfigconfig CPU_FREQ_DEFAULT_GOV_SCHEDPLUS bool "To make sched+ as default governor" select CPU_FREQ_GOV_SCHEDPLUS help Use the CPUfreq governor 'sched
2020-08-05 14:44:42
1360
原创 Android 改变RenderThread调度策略提高性能
一,通过设置绘画的RenderThread线程的调度策略来提高性能默认情况下每个进程的绘画线程RenderThread的调度策略是SCHED_OTHER, 并且优先级为-10.设置系统属性sys.use_fifo_ui为1后,则表示每个进程的绘画线程RenderThread的调度策略变更为SCHED_FIFO,并且实时优先级为1. 调度器 名称 解释 SCHED_OTHER 默认 标
2020-08-05 14:36:30
3552
原创 AndroidQ 的进程清理机制Process_Reclaim
https://www.jianshu.com/p/ae4ca096201ahttps://lore.kernel.org/patchwork/patch/688100/ linux kernel patch for process reclaim一,Kernel 空间1. @kernel-4.9\mm\Kconfigconfig PROCESS_RECLAIMbool "Enable process reclaim"depends on PROC_FSdefault n.
2020-08-05 14:27:48
3595
原创 AndroidQ SettingsProvider和Settings原理
一, SettingsProvider1. SettingsProvider顾名思义是一个提供设置数据共享的Provider,SettingsProvider和Android系统其它Provider有很多不一样的地方,如:SettingsProvider只接受int、float、string等基本类型的数据; SettingsProvider由Android系统framework进行了封装,使用更加快捷方便 SettingsProvider的数据由键值对组成SettingsProvider有点
2020-08-05 14:20:08
2949
原创 按powerkey唤醒启动上层Andord
参考http://www.jianshu.com/p/ae1e992cdae9http://blog.csdn.net/fu_kevin0606/article/details/54408094直接上流程图一,基本代码分析1. @InputManager.cpp (frameworks\native\services\inputf
2018-01-30 16:42:34
2522
转载 页框分配器
参考http://www.cnblogs.com/tolimit/p/4551428.html一,分段和分页 先看一幅图 也就是我们实际中编码时遇到的内存地址并不是对应于实际内存上的地址,我们编码中使用的地址是一个逻辑地址,会通过分段和分页这两个机制把它转为物理地址。而由于linux使用的分段机制有限,可以认为,linux下的逻辑地址=线性地址。也就是,我们
2018-01-30 16:18:41
1133
原创 AndroidQ的详细关机流程
一,先直接上流程图二,代码详细分析1. @frameworks/base/services/java/com/android/server/SystemServer.javaprivate void startOtherServices() { wm = WindowManagerService.main(context, inputManager,
2018-01-30 16:05:14
2041
原创 lmkd 和 memcg
一,概述参考:https://segmentfault.com/a/1190000008125359二,编译和使用1. 如何使能功能CONFIG_MEMCG=y 总开关 obj-$(CONFIG_MEMCG) += memcontrol.o page_cgroup.o vmpressure.oCONFIG_MEMCG_SWAP=y 扩展功能,控制内核是否支持
2018-01-30 15:58:11
8496
1
原创 ION详细分析
参考:http://blog.csdn.net/armwind/article/details/53454251?locationNum=2&fps=1代码路径驱动代码: kernel-3.18/drivers/staging/android/ionNative lib代码: system\core\libion & vendor/mediatek/proprietary/ex
2018-01-30 15:47:48
9755
原创 CMA 详细分析
关于CMA的config@LINUX/android/kernel/arch/arm/configs/msm8909_defconfigCONFIG_CMA=y 已经打开# CONFIG_CMA_DEBUG is not set## Default contiguous memory area size:#CONFIG_CMA_SIZE_MBYT
2018-01-30 15:00:05
7676
原创 针对低端机KSM的优化
简介: KSM的基本概念和思想可参考如下的分析http://blog.csdn.net/summer_liuwei/article/details/6013255http://blog.csdn.net/haitaoliang/article/details/25003395 代码分析一, 编译设置,初始化1. @kernel-3.18/arch/arm
2018-01-30 14:21:58
2418
转载 Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
http://blog.csdn.net/xiaanming/article/details/9825113异步加载图片的例子,网上也比较多,大部分用了HashMap> imageCache ,但是现在已经不再推荐使用这种方式了,因为从 Android 2.3 (API Level 9)开始,垃圾回收器会更倾向于回收持有软引用或弱引用的对象,这让软引用和弱引用变得不再可靠。另外,A
2015-03-23 14:58:22
825
转载 android ListView和GridView拖拽移位具体实现及拓展
http://blog.csdn.net/jj120522/article/details/8240407#comments关于ListView拖拽移动位置,想必大家并不陌生,比较不错的软件都用到如此功能了.如:搜狐,网易,百度等,但是相比来说还是百度的用户体验较好,不偏心了,下面看几个示例: 首先说一下:拖拽ListView的item就不应
2015-02-02 16:35:57
1241
原创 User space程序读取kernel log 并保存
#include #include #include #include #include static void run_kmsg_dump_daemon(void){ int pid; pid = fork(); if (pid == 0) { int fd_1; int fd_2; int i; /* start */
2014-12-16 14:34:08
1124
转载 Android LCD(四):LCD驱动调试篇
一、LCD接口原理以及硬件电路Samsung Exynos4412、SN75LVDS83B、LVDS接口LCD(24bit)为例说明,三者的关系如下:如上图所示,我们在应用中我,主控(Exynos4412)输出RGB信号到TFT-LCD大体经过三部分:(1)、标号1部分,主控(Exynos4412)输出TTL信号;(2)、标号2部分,TTL(RGB)-LVDS转换芯片S
2014-12-12 14:57:24
1698
转载 Android LCD(三):Samsung LCD接口篇
参考:S5PV210显示驱动分析与移植(android)这篇文章中转载的成分比较多,不过大部分内容是从芯片手册上翻译过来。Framebuffer部分是黄冈老师--《嵌入式Linux之我行》这一系列博客中的,嵌入式Linux之我行这系列博客写的非常精,我刚学习Linux时经常拜读他的博客。这部分内容比较固定,三星的芯片跟新了好多代,不过这部分变化不大,技术是一个积累的过程,感谢那些前辈给我们整理
2014-12-12 14:56:20
1068
转载 Android LCD(二):LCD常用接口原理篇
TFT-lCD常用的接口,TTL(RGB)、LVDS、EDP、MIPI,这篇我们大致说一下这些接口的信号组成已经基本原理。一、TTL1、TTL接口概述TTL(Transistor Transistor Logic)即晶体管-晶体管逻辑,TTL电平信号由TTL器件产生。TTL器件是数字集成电路的一大门类,它采用双极型工艺制造,具有高速度、低功耗和品种多等特点。TTL接口属于并行方式传
2014-12-12 14:54:40
1010
转载 Android LCD(一):LCD基本原理篇
http://blog.csdn.net/xubin341719/article/details/9125583LCD的种类分类标准比多,按驱动方式可以分为:被动矩阵式、主动矩阵式两种被动矩阵式:被动矩阵式LCD又可分为TN-LCD(TwistedNematic-LCD,扭曲向列LCD)、STN—LCD(SuperTN-LCD,超扭曲向列LCD)和DSTN-LCD(Doublelayer
2014-12-12 14:54:38
1750
转载 android电池(五):电池 充电IC(PM2301)驱动分析篇
android充电这块,有的电源管理芯片内部包含充电管理,如s5pv210上常用的AT8937。我们这次用的max77686没有充电控制这块,所以我们加入一个充电IC来控制,选用PM2301.一、PM2301和主控、电池的逻辑如下图所示:1、蓝色部分:IIC控制接口,这个说得太多了,好多外围器件都是通过IIC控制的,这个一定要熟悉、熟悉、熟烂了,然后可以完成比较多的工作。2、黄
2014-12-12 14:39:34
1273
转载 android电池(四):电池 电量计(MAX17040)驱动分析篇
电池电量计,库仑计,用max17040这颗电量IC去计量电池电量,这种方法比较合理。想起比较遥远的年代,做samsung s5pc110/sp5v210的时候,计量电量用一个AD口加两个分压电阻就做了,低电量的时候系统一直判断不准确,“低电关机”提示一会有,一会没有,客户那个郁闷呀,“到底是有电还是没电?”。如下图,通过两个分压电阻,和一个AD脚去侦测VCC(电池)电压。一、M
2014-12-12 14:38:14
1652
2
转载 android 电池(三):android电池系统
一、电池系统结构 Android中的电池使用方式主要有三种:AC、USB、Battery 等不同的模式。在应用程序层次,通常包括了电池状态显示的功能。因此从 Android 系统的软件方面(包括驱动程序和用户空间内容)需要在一定程度上获得电池的状态,电池系统主要负责电池信息统计、显示。电池系统的架构如下所示:自下而上, Android 的电池系统分成以下几个部分:
2014-12-12 14:36:42
1207
转载 android 电池(二):android关机充电流程、充电画面显示
上一篇我们讲了锂电池的充放电的流程和电池的一些特性,这一节我们重点说一下android关机充电是怎么、充电画面显示是怎么实现的,这个在工作中也比较有用,我们开始做这一块的时候也走了不少的弯路。我记得我们做adnroid2.3的时候,关机状态和充电logo显示是在uboot中做的。应该是有两种做法,回头我再看下uboot中做画面显示那一块是怎么做的,这一节我们重点说系统中的充电logo显示。一、
2014-12-12 14:35:46
2371
转载 android 电池(一):锂电池基本原理篇
http://blog.csdn.net/xubin341719/article/details/8497830电池充电最重要的就是这三步:第一步:判断电压,要先进行预充电,0.05C电流;第二步:判断 3V电压,恒流充电0.2C~1C电流;第三步:判断电压>4.2V,恒压充电,电压为4.20V,电流随电压的增加而减少,直到充满。一、锂电池1、简述锂电池以及工作
2014-12-12 14:33:22
1083
转载 Android快速启动要点总结
http://developer.51cto.com/art/201001/180765.htm是什么优秀的特性造就了Android快速启动这一优势呢?经过我们的分析,主要是因为资源文件的优化读取、 安装时进行优化dex文件、 制作数据库的方便性等等。Android手机操作系统的推出,为智能手机领域增添了不小的生机,而且其开源性帮助不少商家获得了
2014-11-24 15:45:57
678
转载 Android重量级开发之--提高android启动速度研究
http://www.eoeandroid.com/thread-29953-1-1.html
2014-11-24 15:07:06
1087
转载 浅谈Android开机启动速度优化(含应用程序启动速度优化)
http://blog.csdn.net/jackyu613/article/details/6044297
2014-11-24 14:53:43
4085
转载 Android 4.1 Surface系统变化说明
时间真的是很巧,本来没打算写Surface系统的(相比AudioFlinger来说,Surface变化之后的难度真的是毛毛雨了),但为了庆祝泷泽萝拉发第二部大作,我决定还是要坚持一下。下面将延续Audio的分析风格,从几个层面来介绍Surface系统的变化(JB号称在Surface这块做过大量的优质的改进,无非就是引入在PC机上早都烂熟的VSYNC,Triple Buffering。但
2014-10-30 17:24:44
693
转载 Andorid linux模块编译和加载(三)
上节中我们已经掌握了创建大量内核线程的能力,可惜线程之间还缺乏配合。要知道学习ITC(inter thread communication),和学习IPC(inter process communication)一样,不是件简单的事情。本节就暂且解释一种最简单的线程同步手段—completion。 打开include/linux/completion.h,你就会看到complet
2014-10-30 12:02:51
779
转载 Andorid linux模块编译和加载(二)
上节中,我们成功地编译运行了一个linux模块。可惜的是,它只有两个函数,hello_init在模块加载时调用,hello_exit 在模块卸载时调用。这样下去,模块纵使有天大的本事,也只能压缩在这两个函数中。为了避免这种悲剧发生,本节就来学习一种让模块在加载后能一直运行下去的方法——内核线程。 要创建一个内核线程有许多种方法,我们这里要学的是最简单的一种。打开include/lin
2014-10-30 11:57:49
756
转载 android lcd调试 高通平台lcd调试深入分析总结(mipi和rgb接口)
http://blog.csdn.net/linux_devices_driver/article/details/7765160
2014-10-28 15:29:47
2603
转载 mipi 调试经验
以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议有专门的文档,所以这里就记录一些常用知识点:一、D-PHY1、传输模式LP(Low-Power) 模式:用于传输控制信号,最高速率 10 MHzHS(High-Speed)模式:用于高速传输数据,速率范围 [80 Mbps, 1Gbps] per Lane传输的最小单元为 1 个字节,采用小端
2014-10-28 15:23:47
3109
转载 如何才能更持久系列之——耗电元凶
好多技术型同学都有分享过电量的心得,特别是那些自己组装个硬件去测电流的牛牛们,更是佩服的五体投地。不过在繁忙的版本迭代和铺天盖地的各种需求扑面而来的时候,是否能从容的把握住需求在电量方面的问题,才是大多数测试同学最关心的,毕竟就算是专职测性能的同学也很难在大浪来袭的时候淡定的花几天来拿硬件逐一确认功能点电量消耗。 为什么要这么纠结耗电量?因为手机由很多模块组成,基本上每个会被程序使用的
2014-10-27 14:54:06
1491
转载 Android 上层显示原理简介
Android 显示原理简介mary 发表于 2013.12.13 4934浏览 7讨论作者:yearzhu,2011年进入腾讯公司,从事过Web端及移动端的测试工作,喜爱新鲜事物及新技术,目前在SNG开放平台测试组负责的移动互联SDK的测试工作。 现在越来越多的应用开始重视流畅度方面的测试,了解Android应用程序是如何在屏幕上显示的则是基础
2014-10-27 14:44:38
1952
原创 QCOM 开机的LOGO显示
分析 kernel/drivers/video/msm/logo.c 文件1. int load_565rle_image(char *filename) 加载图像文件“logo.rle”, 该
2014-10-23 15:45:24
1521
转载 linux驱动面试题目汇总
http://blog.csdn.net/blueice8601/article/details/76664271、linux驱动分类2、信号量与自旋锁3、platform总线设备及总线设备如何编写4、kmalloc和vmalloc的区别5、module_init的级别6、添加驱动7、IIC原理,总线框架,设备编写方法,i2c_msg
2014-10-23 14:34:44
849
原创 在Linux下如何编译并运行C程序-----编写Amzon的面试题
#include#include#define true 1char* findsubstring_(char *str) { char *repeat = NULL; int i = 0, j = 0, k = 0, len = 0; if( str == NULL
2014-10-21 17:34:27
707
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人