- 博客(54)
- 资源 (8)
- 收藏
- 关注
原创 YouCompleteMe unavailable : requires Vim 7.4.143
sudo add-apt-repository ppa:jonathonf/vimsudo apt-get update && sudo apt-get upgrade
2016-11-24 20:51:15
4899
原创 android系统属性的使用
一 Property系统的属性名称Property系统中使用的属性名称有一定的命名规则。我们所设置的属性名称hw.akm.resetdoe会与system/core/init/property_service.c中的结构体property_perms中的前缀做比较,如果满足,则又会比较uid。从源代码可知结构体property_perms的定义如下:struct {
2014-11-27 18:13:22
1060
原创 ubuntu14.04环境搭建
https://www.codeaurora.org/xwiki/bin/QAEP/版本:ubuntu14.041 添加源:Ubuntu 官方更新服务器(欧洲,此为官方源,国内较慢,但无同步延迟问题,电信、移动/铁通、联通等公网用户可以使用):deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe
2014-10-26 20:58:51
727
转载 MTK-当修改一些代码时,使用什么编译命令可以最有效率
[SOLUTION]1: ./mk n(r) kernel; ./mk bootimage;当修改build-in 到kernel相关代码时,要使用此命令,具体文件参考如下: alps/kernel/ alps/mediatek/platform/mt65xx/kernel/ alps/mediatek/source/kernel/ alps/m
2014-08-05 10:55:01
731
转载 struct sockaddr_nl 结构体 由来、含义以及使用——获取Linux路由表
Linux 用户态与内核态的交互 在 Linux 2.4 版以后版本的内核中,几乎全部的中断过程与用户态进程的通信都是使用 netlink 套接字实现的,例如iprote2网络管理工具,它与内核的交互就全部使用了netlink,著名的内核包过滤框架Netfilter在与用户空间的通 读,也在最新版本中改变为netlink,无疑,它将是Linux用户态与内核态交流的主要方法之一。它的通信依据是
2014-04-15 10:01:31
837
转载 Android使用socket使底层和framework通信
一般的native和framework的通信是通过jni,但是这一般只是framework调用native,native如果有消息要怎样通知上层呢?Android中GSP模块提供一种解决思路,但是实现有些复杂,这里介绍一种使用socket通信的方法可以使native和framework自由通信,具体实现如下:android中使用jni对linux中的socket进行了封装。使用起来十分的方
2014-04-14 15:52:30
1320
原创 如何在设置中默认打开EPO,AGPS功能以提高用户体验
平台:MT6589,MT6572默认打开EPO,AGPS功能,以减少GPS定位时间,提高用户体验做如下修改:alps\mediatek\frameworks\base\agps\etc\agps_profiles_conf.xml agps_enable="no" ==> 改成"yes" disable_after_reboot="no" ==> 保持"n
2013-11-12 15:22:43
6866
原创 采用Fuel Gauge可能出现的几种电量现象及解释
首先应该熟悉两个变量,bat_volt_check_point是UI上面显示的值。gFG_capacity_by_C,库仑计计算的电量值.也等于SOC的值.公式 DOD1 = DOD0 + (-Car/Qmax).DOD1对应当前的电量值.DOD0对应初始的电量值.Car 为t时间内, 流过Rfg电阻电流的电量.Qmax为电池的容量.下面几种情况会更新DOD0的值,
2013-04-15 15:00:39
10313
原创 How to enter deep idle with USB plugged in (Used For Debugging)
有时在抓取dpidle state 信息的时候,如果通过ADB下命令,由于这时的USB 的clock 被拉起来,会阻止系统进入dpidle;所以 无法抓取到dpidle信息,这时为了debug的方便,可以使用如下命令bypass掉USB clock,就是说即使USB plug in,系统仍然可以 进dpidle: – echo enable 10 >/sys/
2013-04-15 14:35:12
1453
原创 audiosystem之audio_track_cblk_t
audio_track_cblk_t这个结构是FIFO实现的关键,该结构是在createTrack的时候,由AudioFlinger申请相应的内存,然后通过IMemory接口返回AudioTrack的,这样AudioTrack和AudioFlinger管理着同一个audio_track_cblk_t,通过它实现了环形FIFO,AudioTrack向FIFO中写入音频数据,AudioFlinger从
2012-12-12 11:26:59
3042
原创 AudioSystem::popCount
01.uint32_t AudioSystem::popCount(uint32_t u) 02.{ 03. u = ((u&0x55555555) + ((u>>1)&0x55555555)); 04. u = ((u&0x33333333) + ((u>>2)&0x33333333)); 05. u = ((u&0x0f0f0f0f) + ((u>>4
2012-12-11 14:12:31
1026
原创 android-alsa架构
linux的alsa驱动层在kernel/sound/core/pcm_native.c文件中的snd_pcm_f_ops是alsa驱动层对alsa_lib层的接口;从Android的角度由下往上看:首先是cpp库层,然后是框架层,最后是java应用层。库层分3部分:首先是硬件接口层AudioHardwareInterface,其派生类负责调用alsa_lib接口,形成re
2012-12-10 16:39:29
2036
1
原创 Linux __setup解析
__setup这条宏在Linux Kernel中使用最多的地方就是定义处理Kernel的启动参数的函数及数据结构,宏定义如下:#define __setup(str, fn) \__setup_param(str, fn, fn, 0)#define __setup_param(str, unique_id, fn, early) \static char __setup_st
2012-08-22 11:45:25
19402
转载 Android消息队列模型——Thread,Handler,Looper,Massage Queue
Android系统的消息队列和消息循环都是针对具体线程的,一个线程可以存在(当然也可以不存在)一个消息队列(Message Queue)和一个消息循环(Looper)。Android中除了UI线程(主线程),创建的工作线程默认是没有消息循环和消息队列的。如果想让该线程具有消息队列和消息循环,并具有消息处理机制,就需要在线程中首先调用Looper.prepare()来创建消息队列,然后调用Loope
2012-08-14 11:05:53
6618
1
原创 Android AudioManager
本章内容是android.media.AudioManager 结构 继承关系 public class AudioManager extends Object java.lang.Object android.media.AudioManager 类概述 AudioManager类提供访问音量和振铃模式的控制。 用Context.
2012-08-14 09:57:25
3787
转载 可延迟函数、内核微线程以及工作队列
http://www.ibm.com/developerworks/cn/linux/l-tasklets/?ca=drs-tp4608
2012-03-24 23:14:12
723
原创 内核线程的创建并运行
kthread_run()负责内核线程的创建,参数包括入口函数 threadfn,参数data,线程名称namefmt。 进入kthread.h文件,会发现kthread_run实际是一个宏定义,由kthread_create()和wake_up_process() 两部分组成,这样的好处是用kthread_run()创建的线程可以直接运行。kthread_stop()负责结束创建的线程,
2012-03-24 16:56:00
732
原创 android的文件系统结构
android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中,ramdisk.img是emulator的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator加载
2011-08-04 14:07:20
531
原创 一个打通jni,java framework,application三层的练习
一个打通jni,java framework,application三层的练习 Daniel Wood 08/27/2010练习:从jni层获得一个字符串,在屏幕上显示,当然是手机屏幕 要求:1.需要包含三层结构:JNI, java framework, java application 2.字符串的内容为“Hello from JNI !”,必须在JN
2011-06-10 13:29:00
2288
原创 android涉及的几种机制
Android BinderAndroid电源管理(PM)低内存管理器(Low Memory Killer)匿名共享内存(ashmem)Android PMEM(Physical)Android Logger,一个轻量级的日志设备,用于抓取Android系统的各种日志Android Alarm,提供了一个定时器用于把设备从睡眠状态唤醒,同时它也提供了一个即使在设备睡眠时也会
2011-06-08 16:11:00
938
原创 网址
http://solidot.org/ IBM developerworks:http://www.ibm.com/developerworks/cn/ Android:http://geek.gfan.com/create-android-developer-environment/http://www.android123.com.cn/sdkxiazai/717.
2011-02-23 21:04:00
739
原创 内核延迟函数分析
<br />linux内核提供3个函数分别进行纳秒,微妙和毫秒延时:<br />void ndelay(unsigned long nsecs);<br /><br />void udelay(unsigned long usecs);<br />void mdelay(unsigned long msecs);<br />这3个函数的延时原理是忙等待,也就是说在延时的过程中并没有放弃cpu,根据cpu的频率进行一定次数的循环。<br />在内核中对于毫秒级以上的延时,最好不要直接使用mdelay函数,这将
2011-02-21 11:14:00
5418
原创 linux内核定时器分析
linux内核(2.6.28)操作定时器的数据结构为timer_list,timer_list结构体的一个实例对应一个定时器。struct timer_list { struct list_head entry; unsigned long expires; void (*function)(unsigned long); unsigned long data; struct tvec_base *base; #if
2011-02-17 18:15:00
1175
转载 fork和vfork的区别
<br />fork()和vfork()都是创建一个进程,区别在于:<br />fork():子进程拷贝父进程的数据段和代码段,且父子进程的执行顺序是不确定的<br />vfork():共享父进程的数据段,确保子进程优先执行,在调用exec或exit之前与父进程共享数据段,在调用exec或exit父进程才可能被调度运行。如果在调用这两个函数之前,子进程依赖于父进程的进一步动作,则会造成死锁。<br />举例如下:<br />#include <stdio.h><br />#include <unistd.h
2011-02-17 16:56:00
643
转载 进程上下文和中断上下文
<br />进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。<br /> <br /><br />处理器总处于以下状态中的一种:<br />1、内核态,运行于进程上下文,内核代表进程运行于内核空间;<br />2、内核态,运行于中断上下文,内核代表硬件运行于内核空间;<br />3、用户态,运行于用户空间。<br
2011-02-17 11:57:00
748
原创 linux中断机制分析
在linux设备驱动中,使用中断的设备需要申请和释放对应的中断,分别使用内核提供的request()和free()函数。1 申请IRQint request_irq(unsigned int irq, void (*handler)(int irq, void *dev_id ...), unsigned long irqflags, const char *devname, void *dev_id);其中irq:要申请的硬件中断号irqflags是要处理的中
2011-02-17 10:13:00
4085
转载 Android开发环境搭建全程演示(jdk+eclipse+android sdk)
<br />转自:http://hi.baidu.com/lvjava/blog/item/74a8480ee120e0c67acbe10f.html<br />(1) java JDK下载:<br />进入该网页: http://java.sun.com/javase/downloads/index.jsp (或者直接点击下载)如下图:<br />选择 Download JDK 只下载JDK,无需下载jre. <br />(2)eclipse下载<br /> 进入该网页: http://www.ecl
2011-02-15 14:21:00
628
转载 Android内核和驱动程序
<br />http://blog.csdn.net/faithtrue/archive/2010/07/30/5775365.aspx
2011-01-21 15:38:00
566
原创 android源代码开发环境
在linux环境中,开发android主机环境包括以下需求:git工具repo工具java的jdk主机编译工具在ubuntu主机上通常需要安装以下的包:sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev其中安装sun-java5-jdk所需的源:d
2011-01-19 23:18:00
1493
转载 mmap
<br />功能描述: <br />mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。 <br />基于文件的映射,在mmap和munmap执行过程的任何时刻,被映射文件的st_atime可能被更新。如果st_atime字段在前述的情况下没有得到更新,首次对映射区的第一个页索引时会更新该字段的值。用PROT_WRITE 和 MAP_SHARED标志建立起来的
2011-01-19 11:25:00
447
转载 boot开机制作方法
boot开机logo的制作方法<br />在有实现LCD显示和LCD命令行终端的U-boot中,在左上角都有显示一个logo,如果是atmel的芯片,就会有atmel的logo,三星的则是denx的logo。<br />有的网友发邮件说想改成自己公司的Logo,而且如果是自己玩的话,改成自己喜欢的logo也爽阿。所以今天我做好了实验,将简单的修改方法总结如下:<br />一、图片的放置路径<br /> 所有的开机logo都放在了 /tools/logos 之下,你只需要将你的班子作对应的logo替换就好了
2010-12-14 10:01:00
759
转载 使uboot支持S3C6410的SD启动
<br />这里使用的uboot并非uboot官方发布的uboot代码,而是为三星定制的一个uboot版本s3c-u-boot-1.1.6,其代码作者就包括了三星的程序员与denx的员工。这个版本支持SD启动,不过默认是nand启动,使它支持uboot需要做以下事情:<br /> 1、 虽然支持uboot启动,但是uboot代码里不叫SD启动方式,而是叫movinand启动方式,在incluede/configs/smdk6410.h中就有这个选项,所以在这个文件里关闭nand启动,打开movinand
2010-12-08 10:03:00
539
转载 linux/compile.h头文件说明
<br />inux/compile.h头文件说明 <br />所有的内核代码,基本都包含了linux/compile.h这个文件,所以它是基础,打算先分析这个文件里的代码看看,有空再分析分析其它的代码。<br /><br />首先印入眼帘的是对__ASSEMBLY__这个宏的判断,这个变量实际是在编译汇编代码的时候,由编译器使用-D这样的参数加进去 的,AFLAGS这个变量也定义了这个变量,gcc会把这个宏定义为1。用在这里,是因为汇编代码里,不会用到类似于__user这样的属性(关于
2010-12-07 10:01:00
885
原创 unbutu下添加桌面图标
<br />alt+f2 <br />然后输入gconf-editor<br />然后如果想在桌面显示下面的图标请分别勾选这几个键值: <br /><br />computer_icon_visible (计算机图标) <br />home_icon_visible (主文件夹图标) <br />trash_icon_visible (回收站图标) <br />vomules_visible (自动挂载的磁盘)
2010-12-01 20:29:00
694
原创 undefined reference to __udivdi3问题之解决
<br />编译时有时会遇到这种错误:<br />undefined reference to `__udivdi3'<br />嵌入式中,32位系统中(目前多数系统都是,比如ARM的片子),对于普通的a除以b(b为32位):<br />(1)当a为32位,Linux 内核中,常用uint32_t 类型,可以直接写为 a/b<br />(2)但是,对于a是64位,uint64_t的时候,就要用到专门的除操作相关的函数,linux内核里面一般为<br />do_div(n, base),注意,此处do_div
2010-11-05 10:25:00
5251
原创 vivi分析
<br /><br /> 在操作系统启动前,要先运行一段程序.这段程序就是BootLoader,即启动装载程序,它相当于PC机上的BIOS。通过这段程序,可以实现硬件设备的初始化,建立内存卒问映射等一系列初始化工作,从而将系统的软硬件环境初始化为一个合适的状态.以便为装载操作系统作好准备。在系统加电或复位后,CPU通常都是从一个预先定义的地址上取指令,而在嵌入式系统中,通常将某种类型的固态存储设备(如ROM、FIash等)映射到此地址处。通过烧写工具把BootLoader的映像烧写到这种固态存储设备上,在
2010-11-02 15:16:00
1074
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人