- 博客(107)
- 资源 (13)
- 收藏
- 关注

原创 硬件目录
pcb设计pads router的使用技巧之过孔设置参考文章Pads Router布线技巧,等长,蛇线,差分硬件知识DDR内存简介参考文章天道酬勤
2015-02-06 16:32:22
841

原创 音视频图像资料目录
视频相关http://blog.youkuaiyun.com/u010657219/article/details/40372159 对视频相关的概念进行了整理!
2015-01-05 16:35:06
921
原创 synchronized同步
synchronized既可以实现方法的同步,也可以配合Object对象的wait()/notify()/nitifyAll()一起使用实现更加高级的同步
2017-02-09 11:47:59
757
原创 设计模式分类
设计模式是什么克里斯托弗·亚历山大说过:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题解决方案的核心。” 设计模式的四个基本要素: 1.模式名称:对模式解决的问题和模式解决方案的简略描述 2.问题:描述了模式的适用场景。 3.解决方法:描述了设计模式的组成成分,以及他们之间的各自职责和相互关系。 4.效果:描述了应用的效果以及模式应当权衡的问题。模式分类创建型创建型模式
2016-08-16 15:19:10
510
原创 设计原则
单一职责原则定义 一个类只负责一项职责,不要存在多于一个导致类变更的原因。描述 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T
2016-08-12 17:36:06
442
原创 UML类图与类的关系详解
类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实例理解这些关系。泛化(Generalization)继承关系,子承父业是对象之间耦合最大的一种关系。 在类图中使用带三角箭头的实线表示,箭头从子
2016-08-05 16:33:31
380
原创 服务的注册
Server获得了Service Manager远程接口之后,就要把自己的Service添加到Service Manager中去,然后把自己启动起来,等待Client的请求。本文将通过分析说明Server的启动过程是怎么样的。我们通过Android Binder实列篇中的实列来说明下服务启动的整个过程。 类的继承关系图: 从上图可以明显看出BnShareBuffer实际是继承了IShareB
2015-10-21 17:20:24
585
原创 ServiceManager远程代理的获取
ServiceManager管理着系统中所有的服务,无论是service 还是client只要跟系统中的服务打交道,必先获取ServiceManager的代理,才能获取ServiceManager提供的各项服务。在安卓系统中Service Manager远程代理是一个特殊的Binder引用,它的引用句柄一定是0。获取远程代理的方法defaultServiceManager()的实现在framewor
2015-10-21 15:02:58
710
原创 ServiceManager守护进程的注册
Service Manager是整个Binder机制的守护进程,用来管理开发者创建的各种Server,并且向Client提供查询Server远程接口的功能。Service Manager作为本地服务由Init进程启动。在Init.rc配置文件中有这么一段配置:service servicemanager /system/bin/servicemanager class core
2015-10-20 15:40:01
789
原创 Android Binder原理篇
继Android Binder实列篇之后对binder通信原理进行简洁的说明。 先上张图对整个机制有个全局的认识。 上图虚线表示代理 本系列文章将会按照上图过程进行讲解: 1. ServiceManager守护进程的注册 2. 服务的注册 3. 服务的使用 4. 服务与代理的交互
2015-10-19 18:08:13
529
原创 Android Binder实列篇
前言Binder是安卓应用最宽泛的进程间的通信方式,在分析安卓源码时少不了要和其打交道。对于一般开发人员而言只要知会其如何使用,如何实现进程间的通信即可,本文就是为了达到这个目的而写,一是给自己做一个备忘,二是让想了解binder通信的人员有个全局的认识。更深层次的研究请参考Android资料目录的Binder通信部分。 本文将通过实列的方式讲解如何实现binder通信,计划实现的列子框图如下:
2015-10-16 19:21:44
818
原创 linux 常用命令
拷贝指定的文件到指定的目录并保持原始的目录结构:tar c $(find . -type f -name '*.src*') | tar x -C destDirtar c $(find . -type f -ctime -5 -name '*.src*') | tar x -C destDirfind . -type f -ctime -5 -name '*.src*' | xargs tar
2015-10-10 19:03:10
534
原创 安卓OTA升级系统解析下
在安卓OTA升级文件的制作中提到updater-script的功能。这里详细介绍脚本是如何生成的。 updater-script是我们升级时所具体使用到的脚本文件,它主要用以控制升级流程的主要逻辑。具体位置位于更新包中/META-INFO/com/google/android/目录下,在我们制作升级包的时候产生。 前面有个介绍。/build/tools/releasetools/目录下的模块ed
2015-09-21 18:07:51
1163
原创 安卓OTA升级系统解析中
在img_from_target_files中可以看到:if __name__ == '__main__': try: common.CloseInheritedPipes() main(sys.argv[1:]) except common.ExternalError, e: print print " ERROR: %s" % (e,) pri
2015-09-21 16:58:49
1891
原创 安卓OTA升级文件的制作
OTA刷机包制作整个项目编译完成后再执行make otapackage 生成的完整升级包会存放在out\debug\target\product[project name]\ 下 具体名字根据make otapackage的install来确定 生成的过程文件包在out/target/product/ardbeg/obj/PACKAGING/target_files_intermediat
2015-09-21 15:09:24
2013
原创 安卓OTA升级系统解析上
在MTK安卓环境中只需要在alps 目录执行./mk otapackage即可打包ota升级包,下面我们来分析下这个过程中。 alps/mk代码片段sub chkDep{ my $module = $_[0]; my $string = $module; if (!$module) { $string = all; }# print "**************
2015-09-21 11:40:18
2492
原创 安卓的数字签名技术
什么是签名实际生活中我们自己的签名是为了证明签名的材料是出自于你手,是否有人更改,是辨别真假的一种最简单直接的方式。那么什么是数字世界的签名呢?其实和现实世界的签名一样,是为了保证数字内容的完整性,保证传输的内容没有经过非法的更改。在弄清楚签名之前,需要知道什么只摘要和什么是非对称加密。什么是摘要摘要是指采用单向Hash函数对数据进行计算生成的固定长度的Hash值,摘要算法有Md5,Sha1等,M
2015-09-19 15:09:42
1549
原创 Android Fragment
Fragment简介Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的。难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊。Fragment的出现就是为了解决这样的问题。你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activ
2015-08-12 19:14:17
549
原创 USB之概述
最近在安卓系统上开发usb应用,刚开始并不顺利自己也走了不少弯路。网上的资料也是参差不齐,或是讲解不够详细看完还是一头雾水,为了给遇到usb问题的同仁快速得定位问题,同时也作为自己的备忘录,将这段时间自己对usb的认识加以总结。该系列文章将按照linux中的usb系统构架(下图所示)从下到上进行讲解。 总体目录如下:Usb DeviceUsb CoreUsb Host DriverUs
2015-04-21 14:48:08
585
原创 MTK效率最高编译命令
当修改一些代码时,使用什么编译命令可以提高编译效率!./mk n(r) kernel ./mk bootimage 当修改kernel相关代码时,要使用此命令,具体如下:alps/kernel/alps/mediatek/platform/mt65xx/kernel/alps/mediatek/source/kernel/alps/mediatek/coustom/mt65xx/kern
2015-03-14 18:27:03
1165
原创 基于安卓的本地编译环境
或许您有过这样的需求,需要单独的编译一个c代码在安卓机器上运行,但又不想去编写Android.mk.对Android.mk情有独钟的您可以略过。因为linux的工具实在是太多,相比Android toobox较为完善, 有些工具能让事半功倍,大大提高工作效率。
2015-03-14 18:00:14
940
原创 MTK安卓第三方内核模块编译
在原生的linux环境中编译第三方驱动的资料比较多。只需要在驱动的makefile中指定交叉编译器和编译后内核的路径就可以开始编译了。具体可以参考linux驱动编译系统。 我不知道是安卓的原因还是变态的mtk不兼容原生驱动编译方式,导致花费了较长的时间去摸索如何编译驱动的问题。 在mtk8685SDK下,只能将原始驱动放入内核目录即mtkv1.33/kernel/drivers目录下。makef
2015-03-14 16:57:24
2265
原创 linux驱动编译系统
前言从Linux内核2.6开始,Linux内核的编译采用Kbuild系统,这同过去的编译系统有很大的不同,尤其对于Linux内核模块的编译。在新的系统下,Linux编译系统会多次扫描Linux的Makefile。范列下面我们通过一个简单的驱动示例,来熟悉linux的编译系统,驱动代码如下:/** hello.c -- the example of printf "hello world!" in t
2015-03-14 16:25:33
1487
Android中RIL层详细分析
2015-11-17
Android JNI学习
2015-01-23
usb otg协议介绍
2013-09-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人