android
文章平均质量分 80
苏西守护者
我希望大家都能把自己的感悟记录下来,分享出来,其实我这里做的很多别人一样做过,但是没有留下资料,非常遗憾,这样会拖累整个人类的进步的,毕竟后来者需要更快学习才能掌握更新的知识
展开
-
kernel boot的时候如何抓取dtsi
首先在aboot.c里的int boot_linux_from_mmc(void){struct boot_img_hdr *hdr = (void*) buf;#if DEVICE_TREEstruct dt_table *table;struct dt_entry dt_entry;unsigned dt_table_offset;uint32_t dt原创 2016-03-02 16:57:32 · 2239 阅读 · 0 评论 -
GT9xx系列------从lk里传递gpio的value到kernel中
目前由于要针对多种屏幕,所以需要在lk里读取panel id信息传给kernel使用,也就是通过cmd line来做首先获取gpio信息lcd_id = (gpio_get(41)这里获取了当前gpio的电平状态sprintf(cmd_lcd_id, " LCD_ID=%d ", lcd_id);把值写到cmd_lcd_id里然后到Aboot.c (bootlo原创 2016-04-06 15:04:11 · 1521 阅读 · 0 评论 -
fastboot 刷机遇到问题
情况1 :Created filesystem with 11/716672 inodes and 84789/2866553 blockstarget reported max download size of 536870912 byteserasing 'userdata'...OKAY [ 0.207s]sending 'userdata' (136718 KB)..原创 2016-04-13 17:06:12 · 15579 阅读 · 2 评论 -
如何关闭android的一个service
如何停止一个service: adb shell getprop |grep svc 看到 [init.svc.thermal-engine]: [running] [init.svc.thermalatd]: [st原创 2016-04-13 17:26:53 · 2017 阅读 · 0 评论 -
gt9xx系列------实现实体按键的unpin解锁
由于gt的虚拟按键的上报不是上报坐标而是类似电源按键的实体按键所以需要修改之前的unpin步骤if ((( rawEvent->code==139)&&(rawEvent->value==1))||((rawEvent->code==158)&&(rawEvent->value==1))) //有按键按下{if( unpinkey[0]==0) //第一次数组0肯定为原创 2016-05-25 09:44:51 · 611 阅读 · 0 评论 -
Goodix系列------如何取消原生的屏幕上的三个key(如何在java里获取property)
首先是在framework/base/services/core/java/com/android/server/policy/PhoneWindowManager.java里 String navBarOverride = SystemProperties.get("qemu.hw.mainkeys"); if ("1".equals(navBarOverride)) {原创 2016-05-19 17:33:00 · 1291 阅读 · 0 评论 -
GT9xx系列------创建gesture mode 节点
首先在init.qcom.rc里service asusgesture /system/bin/sh /system/etc/init.asus.gesture.sh class core oneshoton property:persist.asus.gesture.type=* start asusgesture然后写一个脚原创 2016-04-19 14:13:53 · 598 阅读 · 0 评论 -
如何用repo在两台局域网内的主机上传code
假设A同仁已经下完 code, B同仁迟迟没有下载完成,1.那么先在 B同仁的机器 (比如 10.64.58.45)上建立source 目录并进入.repo下面: $ mkdir source $ cd source原创 2016-05-30 13:58:39 · 641 阅读 · 0 评论 -
git系列-----git server上下载patch并打上
首先在server上找到相应的提交,然后点击进去发现页面的右上角有个download选项,点击发现Patch-File7a21c24.diff.base64|7a21c24.diff.zip然后直接点击这个zip,浏览器会直接下载这个patch,然后打开patch文件diff --git原创 2016-05-17 11:28:48 · 2104 阅读 · 0 评论 -
GT9xx系列------gesture mode在framework里的实现
首先到了inputreader.cpp里的void KeyboardInputMapper::process(const RawEvent* rawEvent) { switch (rawEvent->type) { case EV_KEY: { //走的是这里 int32_t scanCode = rawEvent->code; in原创 2016-04-19 10:56:48 · 1136 阅读 · 0 评论 -
Gt9xxxx系列------如何确定config档
通常touch都是根据panel的型号来确定config文件的,Gt系列也一样,首先在static int goodix_ts_probe(struct i2c_client *client, const struct i2c_device_id *id){......ret = gtp_init_panel(ts);......}看看这个static s3原创 2016-03-01 10:30:09 · 2856 阅读 · 1 评论 -
GT9xxxxx系列------如何加入电源管理模块
最近看到Gt的driver有电源管理部分之前没有看到过,今天写一下struct goodix_ts_data {struct early_suspend early_suspend;};static int gtp_register_powermanger(struct goodix_ts_data *ts){ ts->early_suspen原创 2016-02-29 19:38:16 · 1550 阅读 · 0 评论 -
GT9xx_Driver系列------如果修改config
刚把driver加入kernel,发现touch的点击报点不准,厂商给出了解决方案:将附件里对应的cfg贴到GT9xx.h里的CTP_CFG_GROUP2即可,然后我们很傻很天真的把cfg放到了h文件中,结果发现还是那个样子,于是就得看看代码到底咋回事了哦 先看h文件里的#define CTP_CFG_GROUP2 {\ } 然后看这个在哪里用了在c文件原创 2016-02-29 10:13:59 · 5319 阅读 · 3 评论 -
Bug系列----打电话过程中重启
这台机器是android虚拟机重启,并不是完全重启。问题发生在androidruntime的gc(垃圾回收)过程中追了一下调用栈:没看过gc相关的调用过程,不晓得0xf8这个object对应的是什么。inline void MarkSweep::MarkObject(Object* obj, Object* holder,MemberOffset offset) { if (ob原创 2016-02-16 09:59:09 · 2812 阅读 · 0 评论 -
Bug系列---------图片库崩溃(内存泄露)
最近遇到一个打开图片库就崩溃的,看了一下log感觉下面这段有点价值 0 I init : Service 'imsdatadaemon' (pid 22635) exited with status 101-27 13:04:15.253 0 0 I init : Service 'imsdatadaemon' (pid 22635) killing原创 2016-02-03 15:31:24 · 2519 阅读 · 0 评论 -
关于屏幕下方的三个虚拟按键的一些摘要
android原始代码都会有屏幕下方的三个虚拟按键,今天大概的看一眼 关于系统如何获取长按三个按键的代码如下 在PhoneStatusBar.java里有 private View.OnLongClickListener mLongPressBackRecentsListener = //长按back和recent两个key new View.OnLo原创 2016-03-17 10:17:13 · 3718 阅读 · 0 评论 -
Double click 转成power之后的上报
首先来到了void KeyboardInputMapper::process(const RawEvent* rawEvent) { switch (rawEvent->type) { case EV_KEY: { int32_t scanCode = rawEvent->code; int32_t usageCode = mCurren原创 2016-03-17 16:27:58 · 513 阅读 · 0 评论 -
FTxxxx系列------系统通过属性获取virtualkey
之前我们知道如何在driver里定义好virtual key然后就可以了,那么framework里到底做了什么来获取virtualkey的信息的。慢慢来看我们创建的节点是root@ASUS_Z00L_63:/sys/board_properties # lsvirtualkeys.ft5x06_ts这个东东哪里用了./native/services/inputfli原创 2016-03-07 15:42:49 · 1203 阅读 · 0 评论 -
读取qualcom cpu 信息
root@ASUS_Z00L_93:/ # cat proc/cpuinfo Processor : AArch64 Processor rev 1 (aarch64)processor : 0processor : 1processor : 2processor : 3processor :原创 2016-04-01 11:44:59 · 1072 阅读 · 0 评论 -
GTxxxx系列------irq电压偏低
在proting GT系列touch的时候遇到了touch的irq gpio在system 醒着的时候电压只有1.2v,正常是1.8v,于是觉得很奇怪,通常的irq gpio被配置成input,但是到底是pull up还是down还是别的状态需要ic厂商来确认,没有办法参考别的touch的配置,厂商告诉我需要配置成float+input,于是就在lk里干了先定义好要用的irq#de原创 2016-03-10 18:42:57 · 508 阅读 · 0 评论 -
如何看系统到底用了哪个dtsi
最近在搞驱动,发现被dtsi坑死了,研究了一下打算总结在这里防止以后被坑,当然自己去找是很辛苦的,但是有时候也是有必要的。之前我们用的dtsi是msm8916-mtp.dtsi,现在新加入了msm8916-pmi8916-mtp-evb.dtsi,而这两个在makefile里都被用了dtb-$(CONFIG_ARCH_MSM8916) += msm8916-rumi.dtb \ms原创 2016-02-25 18:02:07 · 12517 阅读 · 0 评论 -
Inputreader.cpp里virtualkey的流程
首先是void TouchInputMapper::process(const RawEvent* rawEvent) { if (rawEvent->type == EV_SYN && rawEvent->code == SYN_REPORT) {ALOGD("matt- TouchInputMapper::process "); sync(rawEv原创 2016-03-12 13:11:10 · 917 阅读 · 0 评论 -
编译错误系列------对字符数组赋值
一开始我下意识的直接赋值 char buf[SIZE];error: incompatible types in assignment of 'const char [5]' to 'char [128]' buf="full" ;后来才知道必须strcpy(buf,"Full");buf是个数组是个const char *常量,不能够修改其值,执行赋值操作是非法原创 2016-05-31 10:56:45 · 6978 阅读 · 0 评论 -
如何实现back 与 app_switch的解锁
其实很简单,上层对数据的要求是上报的相邻的两个点必须是back+app_switch或者app_switch+back,而我们的手指在按住两个按键的同时本来inputreader在上报的时候无法保证能符合上层的要求,也就是说会出现back+back的情况所以要处理一下bool TouchInputMapper::consumeRawTouches(nsecs_t when, uint32_t原创 2016-01-28 13:54:07 · 1390 阅读 · 0 评论 -
解决android系统唤醒时间偏长------如何在android的linux kernel中获取系统时间
如果想要优化一些唤醒系统的时间,就必须知道某段程序花了多少时间,今天我就找到了一些获取时间的函数以及应用struct timespec ts;ts=current_kernel_time(); tv_nsecold=ts.tv_nsec; printk("matt-psy-name=%s\n",psy->name);current_kernel_time这个函数在kerne原创 2016-05-31 17:58:28 · 1882 阅读 · 0 评论 -
bat系列-----8953进shipping mode
1.8953进shipping modeadb wait-for-deviceadb rootadb wait-for-deviceadb shell "echo 0x2085A > /sys/kernel/debug/spmi/spmi-0/address"adb shell "echo 0x04 > /sys/kernel/debug/spmi/spmi-0/data"原创 2016-10-14 16:35:43 · 2728 阅读 · 0 评论 -
input系统--getevent工作原理
遇到了一个bug,需要看看eventhub这边的getevent是咋工作的首先看getevent的一个最重要的东西 int pollResult = epoll_wait(mEpollFd, mPendingEventItems, EPOLL_MAX_EVENTS, timeoutMillis); //不停的读event这个mEpollFd怎么来的呢 result =原创 2016-10-26 14:33:09 · 2153 阅读 · 0 评论 -
input系统------kernel层上报(1)
我们以input_report_abs(data->input_dev, ABS_MT_POSITION_X, event->au16_x[i]);为例子首先看static inline void input_report_abs(struct input_dev *dev, unsigned int code, int value){input_event(dev, EV_ABS原创 2016-10-28 10:25:57 · 3813 阅读 · 0 评论 -
bug系列------为何kl的wake失效了
之前说了kl文件里的wake是唤醒系统的关键,但是最近遇到的bug是哪怕把kl里的wake拿掉还是会唤醒系统,也就是wake还在这就很奇怪了。于是追代码:有个两个因素会影响wake,一个是kl文件中的wake的flag,还有就是PhoneWindowManager.java里的interceptKeyBeforeQueueing这个函数。在interceptKeyBeforeQueue原创 2016-07-25 16:16:32 · 1102 阅读 · 0 评论 -
git系列------如何升级fw(测试专用)
最近怀疑bug是由于fw太旧的问题,所以就升级一下fw作为测试首先git clone下载fw然后到vendor/qcom/proprietary目录下做patch,git log找到第一条提交commit 6e60d7404fd375f9eca2c79a0a0e4ff76ed4cb06Author: matthew_xuan Date: Wed Dec 21 15:19:5原创 2016-12-22 11:29:10 · 1427 阅读 · 0 评论 -
c tool系列------c语言编程常用语句
安卓c语言编程常用的一些函数原创 2015-01-21 09:59:48 · 1200 阅读 · 0 评论 -
c tool系列------用poll函数查询IMEI
#include "tthelp.h"#include "SIMTest.h"#include#include#include#include#include#include #include #include #define CMD_READ_IMEI "AT+CGSN\r"#define Send_cmd_succe原创 2015-01-04 16:55:21 · 578 阅读 · 0 评论 -
shell系列-----aging camera
root@ASUS_Z00T:/ # input touchscreen tap 210 2b6 Error: Invalid arguments for command: tapUsage: input [] [...]The sources are: mouse keyboard原创 2016-05-20 17:08:10 · 693 阅读 · 0 评论 -
关闭qcom soc系列手机的ramdump mode
在 kernel/msm-3.10 / arch/arm64/configs/ze550kl_user_defconfig中将CONFIG_MSM_DLOAD_MODE=y改成#CONFIG_MSM_DLOAD_MODE is not set然后在/ drivers/power/reset/msm-poweroff.c中将if (!in_panic) {// Norma原创 2017-02-10 16:36:14 · 2940 阅读 · 1 评论 -
删除原生的app {system/app目录下}
$ sudo adb root[sudo] password for matthew: adbd is already running as root$ sudo adb remountremount succeeded$ sudo adb shellroot@ASUS_Z00L_63:/ # cd system/approot@ASUS_Z00L_63:/system原创 2016-10-24 16:38:24 · 1997 阅读 · 0 评论 -
FTxxxx系列------x,y坐标的计算以及上报
最近无聊,看看x,y的坐标是怎么从0x转成floatvoid MultiTouchInputMapper::syncTouch(nsecs_t when, bool* outHavePointerIds) {for (size_t inIndex = 0; inIndex const MultiTouchMotionAccumulator::Slot* in原创 2016-10-08 11:16:16 · 1863 阅读 · 0 评论 -
App系列------Your content must have a ListView whose id attribute is 'android.R.id.list'
也遇到了Your content must have a ListView whose id attribute is 'android.R.id.list'这个问题,结果是这么解决的xml version="1.0" encoding="utf-8"?>LinearLayout xmlns:android="http://schemas.android.com/apk/res/andr原创 2016-09-06 16:00:08 · 345 阅读 · 0 评论 -
解决android系统唤醒时间偏长------看log找可疑的地方
最近发现我们的手机的双击唤醒时间偏长,那么就需要去看是什么导致的。于是首先看唤醒的log[ 252.830937] [ASDF] enter do_write_event_worker //这个是打印log的service[ 252.838638] [SENSOR] : inv_ak09911_pm_suspend[ 252.838647] CM32683:原创 2016-05-30 09:28:52 · 5000 阅读 · 0 评论 -
解决android系统唤醒时间偏长------healthd里的一些调用
目前定位到healthd的调用过程耗时太长,于是去看看power相关的一些东西healthd里一共调用了如下的节点获取数据openat(AT_FDCWD, "/sys/class/power_supply/battery/present", 1 *******openat(AT_FDCWD, "/sys/class/power_supply/battery/capacity",1原创 2016-05-31 18:12:31 · 4014 阅读 · 0 评论 -
解决android系统唤醒时间偏长------healthd里的epoll以及socket
在healthd中,有一个很好的例子,特地截取下来作为参考:首先是static int uevent_fd;static int eventct;static int epollfd;int uevent_open_socket(int buf_sz, bool passcred){ struct sockaddr_nl addr; int on原创 2016-06-02 14:43:46 · 1911 阅读 · 2 评论