- 博客(67)
- 资源 (6)
- 收藏
- 关注
原创 Android-Log分析:addr2line分析运行停止问题
对运行停止Crash问题进行分析时,可通过addr2line来对backtrace进行问题定位。如下以蓝牙停止运行为例:蓝牙接收文件概率性出现“蓝牙共享停止运行”,打印Logcat如下:--------- beginning of crash01-18 16:53:36.984 1245 1271 F libc : system/bt/hci/src/hci_hal_h...
2018-10-27 14:46:48
1183
转载 Android GpioService从app到驱动
因为最近项目Android要用到APP控制相关GPIO控制,因为网上大部分都是app直接通过JNI控制GPIO,这样做存在一个问题,GPIO被多个app打开会报错。同时也违背了Android设计初衷。这里demo也是从其他项目拷贝过来的。自己修改的。源码使用的是Android 5.1 的rk3288.使用控制led灯的方式来实现gpioservice。通过JNI方式一般流程是app->...
2018-10-05 10:57:45
917
转载 DEVICE_ATTR的使用
使用DEVICE_ATTR,可以在sys fs中添加“文件”,通过修改该文件内容,可以实现在运行过程中动态控制device的目的。类似的还有DRIVER_ATTR,BUS_ATTR,CLASS_ATTR。这几个东东的区别就是,DEVICE_ATTR对应的文件在/sys/devices/目录中对应的device下面。而其他几个分别在driver,bus,class中对应的目录下。这次主要介...
2018-10-05 10:34:10
893
原创 Ubuntu系统下切换Openjdk7和Openjdk8
随着Android版本的更新,Ubuntu下的Jdk版本也相应随之增多。 Android6.0及以下用的是Openjdk7,而Android7.1则需用Openjdk8。同一个Ubuntu系统下往往需要安装多个版本的Jdk,以适配置不同的Android版本。现在按当前的以验记录下Openjdk版本的切换。(一)若切换至Openjdk8第一步:sudo gedit /etc/pro
2017-06-05 20:35:19
5305
原创 repo sync同步出错问题
今天repo sync rk3126_android7.1_beta_20170305的时候,提示 error: .repo/manifests/: contains uncommitted changes.这让我想起在第一次解压SDK后同步编译时,因为有一个kernel报错,当时的错误是:"android/platform/prebuilts/qemu-kernel" not a valid
2017-06-05 20:00:44
9043
原创 Ubuntu12.04安装配置OpenJDK8
Android7.1 系统编译依赖于 JAVA 8,编译之前需安装 OpenJDK。第一步:下载jdk-8u91-linux-x64.tar.gz安装包,解压到/usr/lib/jvm/目录下,解压即安装。对解压出来的文件,改名字: cp -r jdk1.8.0_91 java-8-openjdk-amd64 注:安装包在我的博客资源里可下载。第二步:配置JDK环境
2017-06-02 20:45:43
2802
转载 MT6575驱动调试笔记
一、配置GPIO通过工具:mediatek/source/dct/DrvGen.exe配置并替换dws文件:mediatek/custom/bbk75_emmc_gb2/kernel/dct/dct/codegen.dws配置GPIO的主要目的是使系统在uboot,甚至preloader阶段时保持BB管脚的状态;在kernel启动阶段加载驱动模块时,不少驱动是会重新设置其用的g
2017-04-11 11:25:28
1429
原创 MTK SmartPhone Record-(6)+驱动文档总结
========================================== Driver start =======================================在/mediatek/custom下会有好多重名的文件,在不同的文件夹里,最终会编译哪个文件是根据目录的优先级来判断 brighter89_evdo_jb2 > mt6589 > common
2017-04-11 11:20:08
1467
原创 MTK SmartPhone Record-(5)
1. 把设置菜单下的黑色背景换成图片显示,修改如下: (1)找开 \packages\apps\Settings\AndroidManifest.xml 文件,找到 Setting菜单的主题android:theme="@android:style/Theme.Holo"(2)找开 \frameworks\base\core\res\res\values\themes.xml 文件,找
2017-04-11 11:16:21
1739
原创 MTK SmartPhone Record-(4)
1.MT6572修改蓝牙名称若修改上层无效的话,则改底层。上层:\mediatek\frameworks-ext\base\core\jni\android_bluetooth_common.h修改: #define BTMTK_ANDROID_DEFAULT_LOCAL_NAME "ANDROID BT"底层:\mediatek\config\common\custom.conf
2017-04-11 11:10:14
942
原创 MTK SmartPhone Record-(3)
51. 如何使得用户在将预置的 APK 卸载后,恢复出厂设置时能恢复?为了让用户在将预置的 APK 卸载后,恢复出厂设置时能恢复,敝司做了一个 Feature,但在ALPS.GB.TDFD.MP.V1.7和 ALPS.GB.FDD2.MP.V4.7版本后支持,若贵司版本低于此版本,请申请 Patch ALPS00092543;大致的做法是:- 在out/target/product/p
2017-04-11 11:04:26
955
原创 MTK SmartPhone Record-(2)
21. Android来电过程函数调用1) InCallScreen.java1.1) 执行handlerMessage()方法,可能是由后台程序触发的。1.2) 执行onPhoneStateChanged()方法,由1.1)的handlerMessage()方法调用。1.3) 执行1.1)--1.2)2) CallNotifier.java2.1) 执行handler
2017-04-11 11:03:07
911
原创 MTK SmartPhone Record-(1)
1.参考资料网站: http://www.verydemo.com语言、国家代码: http://www.w3.org/WAI/ER/IG/ert/iso639.htm2.请教修改cpu显示单核变四核的问题 我这边搞定的方法给大家分享下:在/alps/kernel/drivers/base下面-搜索SYSDEV_CLASS_ATTR(kernel_max在同样的地方添加
2017-04-11 10:29:22
2409
原创 Driver:硬件原理补充(2)
1.回顾调Stk3311光感 (1)dts配置stk3311@48 {compatible = "stk,stk3311";reg = ; //addrinterrupt-parent = ;interrupts = ;//3:gpio口, 4:中断方式gpios = ; /* SGPIO0, low active; AUXIN2 */near_thr
2017-04-07 20:02:55
1211
原创 Driver:硬件原理补充(1)
1差分信号,是驱动器端发送两个等值、反相的信号,接收端通过比较两个电压的差值来判断逻辑状态“0”还是“1”。而承载差分信号的那一对走线就称为差分走线。简而言之,是一对大小相等而极性相反的对称信号。作用:差分信号互相参考,没有公共地,可以有效抵制共模干扰。2.稳压IC:TCS2105-E33 作用:只有SER_RST0使能拉高,VCC3V3才会有电压。 如下图所示
2017-04-06 21:00:30
504
原创 驱动相关命令
1.uname命令 uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。 uname(选项) -a或--all:显示全部的信息; -m或--machine:显示电脑类型; -n或-nodename:显示在网络上的主机名称; -r或--release:显示操作系统的发行编号; -s或--sysname:显示操作系统名称;
2017-04-05 21:02:48
919
原创 对中断的理解
1.中断是一种可以使CPU和硬件设备进行通信的技术。例如,当我们在敲击键盘时,键盘控制器(控制键盘的硬件设备)会发送一个中断,通知操作系统有键按下。从本质上说,中断是一种特殊的信号,由硬件设备向CPU发送。当CPU接收到中断信号后,就会马上通知操作系统此信号的到来,然后由操作系统负责处理这些新到来的数据。2.中断请求:不同的设备对应的中断不同,每一个中断都通过一个唯一的数字标识。这些数字表示的
2017-04-05 16:03:13
15330
1
原创 如何学习Android驱动开发
如何成为一名优秀的Android驱动程序员?参数如下要求:一、Android驱动的基础知识1.Android驱动是基于Linux驱动,强烈推荐阅读Linux Device Driver 3rd版,这本书讲了Linux下设备驱动的基础知识,要求反复细读。2.能读懂和编写一些C程序。3.能懂Java基础,因为Framework层的代码与驱动代码联系比较紧密,稍懂一些Java代码,会发现
2017-04-05 14:50:38
11745
转载 Android开发:bindService的使用方法
http://blog.youkuaiyun.com/zhou_wenchong/article/details/51302574bindService用于绑定一个服务。这样当bindService(intent,conn,flags)后,就会绑定一个服务。这样做可以获得这个服务对象本身,而用startService(intent)的方法只能启动服务。 bindService方式的一般过程:
2017-04-01 10:21:41
968
转载 快速简单理解i2c标准协议
http://blog.youkuaiyun.com/k_linux_man/article/details/7224810对于嵌入式开发的朋友来说,I2C协议实在是再熟悉不过了,有太多的器件,采用的都是通过I2C来进行相应的设置。今天,我们就随便聊聊这个I2C协议。 I2C协议中最重要的一点是I2C地址。这个地址有7位和10位两种形式。7位能够表示127个地址,而在
2017-03-08 20:01:41
476
转载 Android开发:Handler、Looper、MessageQueue
Android系统主要通过MessageQueue、Looper和Handler三个类来实现Android应用程序的处理消息机制。---参考罗升阳书集MessageQueue:用来描述消息队列。Looper:用来创建消息队列,以及进入消息循环。Handler:用来发送消息和处理消息。//Handler在Android中很常用,或是用来更新UI,或是派发任务给子线程去执行,也可用
2017-03-03 18:18:07
573
转载 Android开发:Service和Thread的关系
以下是转载,抱歉,没找到原创链接...不少Android初学者都可能会有这样的疑惑,Service和Thread到底有什么关系呢?什么时候应该用Service,什么时候又应该用Thread?答案可能会有点让你吃惊,因为Service和Thread之间没有任何关系!之所以有不少人会把它们联系起来,主要就是因为Service的后台概念。Thread我们大家都知道,是用于开启一个
2017-03-01 16:50:39
867
转载 Android-Framework:Sensor框架Framework层解读
http://blog.youkuaiyun.com/u010164190/article/details/51946671Sensor整体架构 整体架构说明黄色部分表示硬件,它要挂在I2C总线上红色部分表示驱动,驱动注册到Kernel的Input Subsystem上,然后通过Event Device把Sensor数据传到HAL层,准确说是HAL从Event读绿色部分表
2017-02-24 20:16:24
1033
转载 Android-Framework层理解(1)
http://blog.youkuaiyun.com/lyjit/article/details/52472623不管你是做手机系统开发还是APP开发,Framework层你肯定会碰到。除非你所做的事情只是UI的优化。 那么Framework具体的工作是做什么呢? 简单一句话:提供Android开发人员一系列的服务和API的接口。 关于API接口如何查看:如何查看Android API文档
2017-02-24 17:24:09
678
转载 Android开发:Handler的使用(三)
http://blog.youkuaiyun.com/dengxiayehu/article/details/6400995Android开发:Handler的使用(三)d、自己创建新的线程,然后在新线程中创建Looper,主线程调用子线程中的发消息方法,将消息发给子线程的消息队列。[java] view plain copypack
2017-02-18 14:49:34
387
转载 Android开发:Handler的使用(二)
http://blog.youkuaiyun.com/dengxiayehu/article/details/6400981Android开发:Handler的使用(二)2、sendMessage版本的Handler的使用 这里介绍几种模型: a、默认的Handler(消息处理队列挂在主线程上)[java] view plain copyp
2017-02-18 14:48:21
265
转载 Android开发:Handler的使用(一)
http://blog.youkuaiyun.com/dengxiayehu/article/details/6398648Handler的使用(一)一个Handler允许你发送和处理消息(Message)以及与一个线程的消息队列相关的Runnable对象。每个Handler实例都和单个线程以及该线程的消息队列有关。当你创建了一个新Handler,它就会和创建它的线程/消息队列绑定,在那以
2017-02-18 14:47:10
316
转载 Android开发:Environment类的接口详解
Android应用开发中,常使用Environment类去获取外部存储目录,在访问外部存储之前一定要先判断外部存储是否已经是可使用(已挂载&可使用)状态,并且需要在AndroidManifest.xml文件中添加外部存储读和写的权限。Environment类中提供了几个静态常量用于标识外部存储的状态,这些状态都是String类型MEDIA_BAD_REMOVAL 在没有挂载前存储媒体已
2017-02-17 10:05:34
2593
原创 Android开发:getContentResolver的使用
getContentResolver的使用 分两种情况:一、在有Activity和Service的情况下 getContext().getContentResolver().insert(...);1.getContext()是获得一个上下文对象(Context),一般在四大组件中都会获取上下文对象。 2.在Activity和Service中,就没必要获取Context了,因
2017-02-16 17:14:39
57861
1
转载 Android开发:Service的远程调用
原文http://liangruijun.blog.51cto.com/3061169/653344 在Andorid平台中,各个组件运行在自己的进程中,他们之间是不能相互访问的,但是在程序之间是不可避免的要传递一些对象,在进程之间相互通信。为了实现进程之间的相互通信,Andorid采用了一种轻量级的实现方式RPC(Remote Procedure Call 远程进程调用)来完
2017-02-11 10:58:31
827
原创 时间管理的“青蛙法则”
下文阐述了一个看起来很简单的时间管理办法,但读完之后会真正实践的人可能并不多,知道方法之后结合自己行动是产生变化的关键。读文之前先准备好纸笔,仔细想想下文开头的那个问题并把答案写下来是行动的第一步。本文来源于财富中文网。——————————————————————每天的时间似乎永远也不够用,不足以让我们完成所有想完成的事情。那么,为什么有些人总能更有效地利用时间,从而取得比其他人更大的
2017-01-18 17:47:28
1343
转载 I2C设备驱动的编写(二)
前面我们说了如何I2C用户模式驱动,这种驱动基于I2C子系统,但是他对于应用程序开发人员的要求较高,需要应用程序开发人员了解硬件的一些东西,比如时序,地址等等,而多数时候应用程序开发人员是按照操作文件的方法操作设备,所以我们更希望用一些更简单的接口去访问。也就是我们今天的内容——基于I2C子系统的字符驱动。I2C子系统的代码分为三部分如图:Host:主机控制器驱动D
2017-01-12 18:52:50
371
转载 I2C设备驱动的编写(一)
作者:曹忠明,华清远见嵌入式学院讲师。I2C总线是有Philips公司开发的,它是一种比较简单的总线,接线简单:只有两根线数据线(SCL)和时钟线(SDA),控制简单。所以一些封装较小的器件多使用I2C总线,常见的使用I2C总线的设备有EEPROM、rtc及一些传感器。这里我们介绍下基于linux的I2C设备驱动的编写。I2C设备驱动的编写有多种方式:一种是直接操作CPU的
2017-01-12 18:51:44
505
原创 INIT_DELAYED_WORK和INIT_WORK定时器中断函数
一、初始化:static int stk3311_probe(struct i2c_client *client, const struct i2c_device_id *id){......INIT_DELAYED_WORK(&work,stk3311_update); //stk3311_update是中断函数
2017-01-12 18:26:21
7213
转载 MTK调试gprs,即socket通信
转 http://blog.youkuaiyun.com/maple_wei/article/details/7564739一、添加新文件:新建TicketSocket.c 文件到..\plutommi\mmi\TicketApp\TicketAppSrc目录下二、将文件添加工程里:在文件..\make\plutommi\mmi_app中添加如下文件信息plutommi\mmi\Ticke
2017-01-09 17:05:23
2589
转载 MTK串口通信调试
转 http://blog.youkuaiyun.com/maple_wei/article/details/7564750一、说明:1、添加新文件:在..\plutommi\mmi\TicketApp\TicketAppSrc\下添加文件CosUart.c2、将新添加的文件加入到工程中:在文件..\make\plutommi\mmi_app中添加如下文件信
2017-01-09 17:00:38
825
转载 内存调试
转载请注明出处:http://blog.youkuaiyun.com/jscese/article/details/37928823一.调试准备首先需要开启Android系统的adb功能,start adbdPC端 adb connect IP ADDRESS 如果 出现adb 异常可以尝试 adb kill-server ; adb start-server
2016-12-16 15:29:44
475
转载 建立最简单的repo服务器实例讲解
http://blog.youkuaiyun.com/21cnbao/article/details/7272708repo是一个将多个git tree进行系统管理的工具,repo本身不是一个源代码版本管理系统,它只是联合manifest.git中project list xml的多个工程,统一管理。在运行repo sync的情况下,xml文件中指定的工程都统一被sync下来。下面用最简单
2016-12-14 11:21:51
581
转载 深入理解指针函数
文章来自http://blog.sina.com.cn/s/blog_5e8facd20100qn20.html1.指针函数的定义 顾名思义,指针函数即返回指针的函数。其一般定义形式如下: 类型名 *函数名(函数参数表列); 其中,后缀运算符括号“()”表示这是一个函数,其前缀运算符星号“*”表示此函数为指针型函数,其函数值为指针,即它带回来
2016-11-21 15:08:17
284
转载 C语言中数据类型的本质含义是:表示一个内存格子的长度和解析方法
转载 http://www.cnblogs.com/schling/p/5931291.htmlC语言中数据类型的本质含义是:表示一个内存格子的长度和解析方法。数据类型决定长度的含义:我们一个内存地址(0x30000000),本来这个地址只代表1个字节的长度,但是实际上我们可以通过给他一个类型(int),让他有了长度(4),这样这个代表内存地址的数字(0x30000000)就能
2016-11-21 10:02:17
862
仿Iphone5S后台任务管理
2016-11-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人