自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 android系统功耗问题:systrace

在做android/linux系统产品时,不可避免要解决功能,性能,功耗,用户体验问题;其中功耗问题不可忽视,嵌入式设备电池续航能力是产品竞争力重要一环。功耗问题,我们需要powermonitor或者精密电源查看各个场景下的功耗;最近遇到的问题是:系统进入light sleep时,电量图上出现每500ms一个突起(俗称毛刺),通过系统log也不能发现是进程在搞鬼;后来通过同事介绍,

2017-10-26 16:37:33 1036

原创 PROC文件及文件夹创建

创建一个proc虚拟文件,应用层通过读写该文件,即可实现与内核的交互。先看看比较简单的,创建proc文件夹。调用以下函数,即可实现proc文件夹的创建:struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *parent);name就是要创建的文件夹名称。parent是要创

2018-01-26 17:41:12 2045

原创 Linux驱动中delayed_workqueue使用:

在驱动中,有时不能使用中断(这种情况很少遇到),此时delayed_workqueue就可以发挥其巨大的功效了。也可以用其它同类的内核API实现:如timer.delayed_workqueue的使用过程如下:(1)定义workqueue: struct workqueue_struct *test_workqueue; //  kernel/workqueue.c(2)定义wor

2018-01-26 17:10:34 685

原创 Linux workqueue

Workqueue引入在之前的softirq中提到过,内核在中断的bottom half引入了softirq,  tasklet,  workqueue。 而softirq和tasklet只能用在中断上下文中,而且不可以睡眠。所以内核引入了workqueue,工作队列运行在进程上下文,同时可以睡眠。在以前版本的内核中workqueue的代码比较简单。在linux2.6.30代码量在10

2018-01-25 11:18:23 310

原创 SLUB

内核管理页面使用了2个算法:伙伴算法和slub算法,伙伴算法以页为单位管理内存,但在大多数情况下,程序需要的并不是一整页,而是几个、几十个字节的小内存。于是需要另外一套系统来完成对小内存的管理,这就是slub系统。slub系统运行在伙伴系统之上,为内核提供小内存管理的功能。        slub把内存分组管理,每个组分别包含2^3、2^4、...2^11个字节,在4K页大小的默认情况

2018-01-22 10:12:34 329

原创 DEVICE_ATTR

使用DEVICE_ATTR,可以在sys fs中添加“文件”,通过修改该文件内容,可以实现在运行过程中动态控制device的目的。类似的还有DRIVER_ATTR,BUS_ATTR,CLASS_ATTR。这几个东东的区别就是,DEVICE_ATTR对应的文件在/sys/devices/目录中对应的device下面。而其他几个分别在driver,bus,class中对应的目录下。这次

2018-01-17 16:42:49 180

原创 GPIO基础知识

gpio作为一种通用的IO接口,使用方法主要如下:Gpio:每个 GPIO 都代表一个连接到特定引脚或球栅阵列(BGA)封装中“球珠”的一个位标准头文件  [对外接口]其中根据是否定义CONFIG_GENERIC_GPIO判断系统是否支持gpio头文件为 ;实现文件为 步骤1. gpio_request(gpio_num, "xx gpio");  申请GPIO, 返

2017-12-15 17:37:41 1653

原创 android arm linux下使用内存转储crash工具分析 kernel system dump问题

对vmlinux进行反汇编:/home/apuser/mywork/4.4-3.10-prime/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-objdump -D vmlinux > vmlinux.dis得到的汇编代码vmlinux.dis,可用vi查看。准备:

2017-12-15 11:09:14 1455

原创 android AES对称加密算法使用实例

代码是最好的注释!public class AES {    public static String mSeed = "leichxxxxx;/*    public static String encrypt(String seed, String cleartext)            throws Exception {        byte[] rawK

2017-11-20 21:08:34 323

原创 minicom用法

在android开发过程中,通常需要输出串口log

2014-10-23 09:25:42 883

原创 常用UML类图总结

UML类图几种关系的总结         在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)         1. 泛化(Generalizat

2014-10-16 14:18:15 473

原创 eclipse 中工程名出现红色感叹号问题 JRE System Library

By  雷格雷戈Android_in_China右键工程名-----选择Build Path-----选择Config build path------选择Libraries选项----选中出错的行---点击右边的edit...-------点选第二个raidoButton

2014-10-10 10:32:53 1815

原创 如何提高Android系统Aututu benchmark跑分

安兔兔等跑分软件能帮助手机用户了解自己手机的性能,此功能迎合了大多数人的需求,因此安兔兔较流行。当然目前市面上不止一款跑分软件,这些跑分软件大同小异,基本原理是:通过模拟用户操作(比如玩游戏,做运算,听音乐等等)来测试CPU,GPU,MEM,WIFI,BLUETOOTH,MODEM,DDR等等性能,给每一项进行打分,最后形成总分。认真做技术的芯片供应商,集成商会不断突破已有技术,从而提高产品性

2014-09-23 16:29:35 2636

转载 动态电压与频率调节在降低功耗中的作用

关键字:芯片运行负载采集1 DVFS的工作流程 现在,为了延长便携式设备(如手机、MP3、多媒体播放器、笔记本电脑等)的电池寿命,芯片厂商们正在绞尽脑汁开发新的节电技术。简单地说,这些节电技术可以分为两类——动态技术和静态技术。静态技术包括不同的低功耗模式,芯片内部不同组件的时钟或电源的按需开关等。动态技术则是根据芯片所运行的应用程序对计算能力的不同需要,动态调节芯片的运行频率和电

2014-09-05 15:13:18 1188

原创 Linux kernel Kobjects解析

Kobjectskobject是一种数据结构,定义在 。 struct kobject {    const char    * k_name;/*kobject 的名字数组(sysfs 入口使用的名字)指针;如果名字数组大小小于KOBJ_NAME_LEN,它指向本数组的name,否则指向另外分配的一个名字数组空间 */    char            name[KOBJ_N

2014-09-05 14:01:18 487

翻译 android gdbserver

什么是gdb它是gnu组织开发的一个强大的unix程序调试工具,我们可以用它来调试Android上的C、C++代码。它主要可以做4件事情:随心所欲地启动你的程序。设置断点,程序执行到断点处会停住。(断点可以是表达式)程序被停住后,可以查看此时程序中发生的事。动态改变程序的执行环境。GDB远程调试原理图如图上所示,我们需要使用gdbserver依附到我

2014-08-22 11:24:27 1098

转载 android gdb gdbserver

1:弄一个和平台相关的程序放入手机#adb push memtest /data/bin2:启动gdbserver我们编译出来的系统都已经自带了gdbserver,如果没有,例如真机,可以在prebuilt里面找到编译好的安装上去这里我们直接在adbshell中启动gdbserver$adb shell#gdbserver :1234 /data/bin/memtest正常的话应该显示:Proc

2014-08-21 19:56:06 628

原创 ARM指令教程

ARM汇编程序特点:l         所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通用寄存器来完成.因此代码中大量看到LDR,STR指令来传送值.l         ARM汇编语句中.当前语句很多时候要隐含的使用上一句的执行结果.而且上一句的执行结果,是放在CPSR寄存器里,(

2014-07-03 09:29:35 575

原创 C C++回调函数和java的回调函数

回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。回调函数使用是必要的,在我们想通过一个统一接口实现不同的内容,这时用回掉函数非常合适。比如,我们为几个不同的设备分别写了不同的显示函数:void TVshow(); void ComputerShow(); void NoteBookShow()…等等。这是我们想用一个统一的显示函数,我们这时就可以用回掉函数了

2013-11-20 19:57:40 1169

转载 测试自动化框架〔转贴〕

Test Automation Frameworks"When developing our test strategy, we must minimize the impact caused by changes in the applications we are testing, and changes in the tools we use to test them."--

2013-11-12 10:09:33 815

原创 adb server is out of date killing

在windows上配置的android 开发环境,在使用adb时,总是提示“adb server is out of date killing ”,搞颇久,后来在网上查了一下是端口被占用的问题。于是打开任务管理器,把不重要的进程都杀掉了,结果adb可以正常使用了。经过排查发现占用端口的是baiduHelper这个鬼东西。网上另外一人说他遇到的是腾讯的tadb.exe在作祟。各种情况不一样,

2013-11-07 09:41:29 533

原创 android service莫名启动问题

当您发现service莫名启动,则说明该service已经死了,又借尸还魂了。它的pid已经发生变化了。这是为什么呢?这是因为:该service在此之前已经被kill掉了。而service在被杀后,在有些情况下是可以复活的,具体什么情况下复活,稍后会讲。如果您发现service借尸还魂现象,请到android/service.log中查看,您会发现:01-04 13:18:24.720

2013-11-06 17:25:17 964

原创 android java程序中调用shell命令

在android 应用的java程序中使用不需要SU权限的shell脚本很简单:final String command = "am dumpheap -n " + packageName1 + " /storage/sdcard0/" + packageName1 + "_"                            + Util.getTime();try {

2013-10-23 11:42:12 1450

原创 具有system权限的进程无法访问sdcard

最近遇到一个问题,之前运行好好的程序,在最近的daily build版本上无法正常运行,后来发现问题是:我的程序在SDCard中找文件时找不到,而我shell进去后看到文件明明存在,而程序对该文件却视而不见。折腾了颇久,发现了一个问题:正常版本上 adb shell mount 后:/dev/block/vold/179:19 /storage/sdcard1 vfat rw,

2013-10-23 11:13:55 2478

原创 orientation|keyboardHidden

当横竖屏切换的时候会直接调用onCreate方法中的onConfigurationChanged方法,而不是重新执行onCreate方法,如果没有使用这个属性就会重新调用onCreate方法了。

2013-09-23 12:06:17 689

原创 关于StopSelf

在Service中在使用StopSelf时,您是否遇到过,不能终止掉自己的情况?遇到这种情况不要惊慌,可以通过下面的方法解决:在需要结束掉本Service时,发给消息给Acvitivy,在Acvity中结束掉Service: 如:mContext.stopService(new Intent().setClass(mContext, MgrService.class));

2013-09-23 10:34:38 835

转载 判断字符串是否是有效的手机号码

private boolean isPhoneNumberValid(String phoneNumber) {        boolean isValid = false;        /**         * valid phone number format;         */        String expression1 = "^\\(?(\\d{3})

2013-09-18 17:31:38 3315

原创 无界面发短信

private void testSMS3(String targetNumber, String centreSMSNum, String smsBody) {        if (!isPhoneNumberValid(targetNumber)) {            Log.d(TAG, "ERROR:the targetNum is invalid ........");

2013-09-18 17:30:07 952

原创 无界面发彩信

======================转载请注明出处,谢谢!author: chi.lei@spreadtrum.com======================调用该类的send(final Context context, String phone, String subject, String text, String imagePath, String

2013-09-18 17:27:16 1359

原创 java.net.SocketException: socket failed: EACCES (Permission denied)

原因是建立的套接字没有限权对外连接。在AndroidManifest.xml中,加上这一句话,取得权限。

2013-09-17 09:49:33 1385

原创 AndroidRuntime: Shutting down VM

01-02 13:35:15.590   470   470 D StatusBar.NetworkController: mSimColor[ 0] = 001-02 13:35:15.620   103   103 D dalvikvm: WAIT_FOR_CONCURRENT_GC blocked 0ms01-02 13:35:15.640   103   103 D dalvikv

2013-09-12 17:36:51 26361

转载 Activity launchMode

Activity的四种launchModelaunchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里。这里简单介绍一下task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个与之对应的

2013-09-04 10:47:52 906

转载 Android HAL(硬件抽象层)介绍以及调用

Android 的 HAL(Hardware Abstract Layer硬件抽象层)是Google因应厂商「希望不公开源码」的要求下,所推出的新观念,其架构如下图。虽然 HAL 现在的「抽象程度」还不足,现阶段实作还不是全面符合 HAL的架构规划,不过也确实给了我们很好的思考空间。ce - 许兴旺的博客" src="http://img.blog.163.com/photo/vKXegR10

2013-09-02 10:25:57 842

原创 android:background

#FFFFFF#FFFFF0#FFFFE0#FFFF00#FFFAFA#FFFAF0#FFFACD#FFF8DC#FFF5EE#FFF0F5#FFEFD5#FFEBCD#FFE4E1#FFE4C4#FFE4B5#FFDEAD#FFDAB9#FFD700#F

2013-08-06 19:41:59 1083

转载 java字符串的各种编码转换

/** * 转换字符串的编码 */public class ChangeCharset { /** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */ public static final String US_ASCII = "US-ASCII"; /** ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1 */ pub

2013-08-05 11:52:10 1015

转载 追加文件内容的三种方法

import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.Rand

2013-08-02 10:11:35 1152

原创 常见异常

异常一:java.lang.IllegalArgumentException: File /mnt/sdcard/leichi.txt contains a path separatorFile出错的代码:        String path = Environment.getExternalStorageDirectory().toString();        Stri

2013-08-02 10:07:21 833

转载 android 文件操作

在android中的文件放在不同位置,它们的读取方式也有一些不同。一、资源文件的读取:      1) 从resource的raw中读取文件数据:01String res = "";02try{ 03  04    //得到资源中的

2013-07-29 12:07:50 856

原创 android camera实例

在android平台上实现拍照很简单,这里提供了一个简单的demo,有对焦和拍照功能。1,首先配置文件中的权限如下:              2,代码注释比较清楚,就不罗嗦了,直接看代码吧:public class MainActivity extends Activity implements SurfaceHolder.Callback {    pr

2013-07-23 21:25:08 1441

原创 android Camera framework层解析

Author :chi.lei@spreadtrum.com转载请注明出处,谢谢!相机服务框架类相机服务是如何运作的呢?若弄清这个问题,必须先了解组成Service Framework的各个类与Bind RPC的连接关系。图-1描述了在不同的三个部分中各个类与Binder RPC的关系。(a)       Camera 类继承自ICameraClient类,负责在应用程序与

2013-07-23 13:31:57 2376

空空如也

空空如也

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

TA关注的人

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