本文转载自:http://blog.csdn.net/kris_fei/article/details/77894406 Rockchip的按键驱动位于 kernel/drivers/input/keyboard/rk_keys.c 默认支持的keys在dts中定义: 其中power key作为普通gpio,具有唤醒功能.而其他按键比如,volume up/down 可以通过adc精确读取到gpio的电压值,原理图如下:   和一般的按键一样,驱动是通过内核input子系统来将keys注册供用户…
Android 7.0  Power 按键处理流程 Power按键的处理逻辑由PhoneWindowManager来完成,本文只关注PhoneWindowManager中与Power键相关的内容,其他系统按键的处理类似也是在PhoneWindowManager中处理的.理解了power按键的处理再看其他系统按键的逻辑会容易的多也简单的多. 一.Power按键的上报 Power按键的上报流程与其余的按键处理流程一致,在按下power按键后驱动上报按键经InputManagerService处理按键…
转自:http://blog.chinaunix.net/uid-20776117-id-3212095.html 本文接着input子系统学习笔记五 按键驱动实例分析上接续分析这个按键驱动实例! input_report_key()向子系统报告事件 在 button_interrupt()中断函数中,不需要考虑重复按键的重复点击情况,input_report_key()函数会自动检查这个问题,并报告一次事件给输入子系统.该函数的代码如下: C++代码 static inline void in…
本文转载自:http://blog.csdn.net/kris_fei/article/details/78341425 Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92 9.7寸eDP对应的Touch IC型号是GT928,分辨率为2048*1536, 硬件连接和之前GSL5680( 见 [RK3288][Android6.0] 移植笔记 — Touch IC GSL5680添加 一文) 一样. I2C: GPIO:  电源是用的是LDO2,开机…
1. 几个重要结构体的引入给test_server添加一个goodbye服务, 由此引入以下概念: 进程间通信其实质也是需要三要素:源.目的.数据,源是自己,目的用handle表示:通讯的过程是源向实现进程的“服务”发数据,handle是对“服务”的引用,在不同的进程里面handle不一样,即使多个进程对同一个进程的“服务”发数据,这些多个进程里面的handle可以也不一样 总结:handle是进程A对进程B提供的服务S的引用,进程A调用binder_call把handle传递给驱动,驱动根据h…
系统平台:android6.0概述Healthd是android4.4之后提出来的一种中介模型,该模型向下监听来自底层的电池事件,向上传递电池数据信息给Framework层的BatteryService用以计算电池电量相关状态信息,BatteryServcie通过传递来的数据来计算电池电量显示,剩余电量,电量级别等信息,如果收到过温报警或者严重低电报警等信息,系统会直接关机,保护硬件. 1.主模块处理流程Healthd模块代码是在system/core/healthd/,其模块入口在health…
本文转载自:http://blog.csdn.net/kris_fei/article/details/70052413 Platform: ROCKCHIPOS: Android 6.0Kernel: 3.10.92 这个问题蛮奇怪的,现象是:1. 默认系统按键音是打开的,然后去录音,是正常的.2. 当把按键音关闭之后再去录音,虽然录音有在工作,但是不能录制到声音. 理论上说播放和录音是两条不相干的通路,可以同时工作,也可以独立工作,可事实上播放的配置影响到了录音. 有通过系统自带的tinyp…
按键驱动分析: #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #include <linux/init.h> #include <linux/delay.h> #include <linux/poll.h> #include <linux/irq.h> #include <asm/irq.h> #include…
    北京时间9月30日凌晨在美国旧金山举行2015年秋季新品公布会.在公布会上代号为"Marshmallow(棉花糖)"的安卓6.0系统正式推出.新系统的总体设计风格依旧保持扁平化的MeterialDesign风格. Android6.0在对软件体验与执行性能上进行了大幅度的优化.安卓权限系统被又一次设计了.     全新的Android M相比眼下的Android Lollipop(5.0)有二十项重大的改进:     原文博客请參考:点击打开链接     一:App Permi…
当多个client对server发出请求的时候,如果server忙不过来的时候会创建多线程来处理请求 那么忙不过来由谁来判断? server进程有个binder_proc结构体,其里面有todo链表(放有client发过来的数据),并且会唤醒等待在binder_proc.wait上的线程,如果有线程在wait上等待,表面server进程忙的过来:如果wait上空了,就表面server太忙了,驱动会向应用程序反馈 (1)驱动判断是否忙不过来 (2)驱动向APP发请求:创建新线程 (3)APP创建新…
迅为IMX6开发板: Android4.4/6.0系统  Linux + Qt5.7系统  Ubuntu12.04系统 部分案例:HMI:3D打印机:医疗设备:工控机:触控一体机:车载终端 核心板兼容:IMX6Q商业级.IMX6Q工业级.IMX6Q-PLUS.IMX6DL版本 接口支持:4G全网通.GPS.千兆以太网.WIFI蓝牙.CAN总线.SATA接口.CAMERA接口等 光盘资料:原理图(PDF格式).底板PCB(Allegro格式).驱动程序源码.芯片和LCD数据手册.开发环境.产品使用…
本文转载自:http://blog.csdn.net/dearsq/article/details/72770295 Platform: RK3399 OS: Android 6.0 Kernel: 4.4 Version: v2017.04 IC: TI BQ25700.RK808 已知问题 驱动分析 函数调用链 已知问题 cw2015 的代码默认是 rk3288 平台的,3399 平台有一些接口已经升级. 所以默认编译是无法通过的. 所以当前的问题是进行代码的修改以适用于当前 3399 平台…
本文转载自:https://blog.csdn.net/kris_fei/article/details/55045936 Platform: RK3288OS: Android 6.0Kernel: 3.10.92 RK3288使用TSADC(Temperature-Sensor ADC)来测量CPU温度,支持两种模式:用户自定义模式: 主动控制读取温度.自动模式: 自动检测温度,达到阀值就自动报告. rk3288.dtsi中的device配置:tsadc: tsadc@ff280000 { …
本文转载自:http://blog.csdn.net/kris_fei/article/details/52584903 Platform: RK3288OS: Android 6.0Kernel: 3.10.92 以MIPI DSI接口的lcd为例. rk_screen.c:读取lcd timing参数.lcd_mipi.c:屏幕mipi配置信息.rk_fb.c:fb驱动.rk3288_lcdc.clcdc controller驱动.rk32_mipi_dsi.c:dsi controller…
本文转载自:http://m.blog.csdn.net/kris_fei/article/details/69553422 Platform: ROCKCHIPOS: Android 6.0Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示.Recovery中升级完成后控制GPIO输出高电平点亮LED. 系统自带GPIO控制驱动:内核已经自带了通用GPIO驱动,可以直接在用户空间操作.路径: /sys/class/gpioroot@rk3288:/…
前面对Camera2的初始化以及预览的相关流程进行了详细分析,本文将会对Camera2的capture(拍照)流程进行分析. 前面分析preview的时候,当预览成功后,会使能ShutterButton,即可以进行拍照,定位到ShutterButton的监听事件为onShutterButtonClick方法: //CaptureModule.java @Override public void onShutterButtonClick() { //Camera未打开 if (mCamera ==…
本文转载自:http://blog.csdn.net/kris_fei/article/details/55100299 Platform: RK3288OS: Android 6.0Kernel: 3.10.92 由于项目的apk安装需要shareid为system的权限(不需要高权限的apk是可以正常安装的),一开始我用的是releasekey,导致签名文件不匹配无法安装,因此就替换系统默认platform签名文件. 生成新的签名文件方法参考rk3288/build/target/produ…
本文转载自:http://blog.csdn.net/kris_fei/article/details/53464461 latform: ROCKCHIPOS: Android 6.0Kernel: 3.10.92 描述: 当系统全部download开机后,会默认进入Recovery模式,这个其实是misc分区里的内容在作怪. misc分区: misc.img是RK原始就提供而不是自己编译生成的,其实misc里内容就两行,用UE可查看: Uboot log:#Boot ver: 2016-11…
本文转载自:http://blog.csdn.net/kris_fei/article/details/52536093 Platform: RK3288OS: Android 6.0Version: v2014.10 bl    board_init_f -> crt0.S    initcall_run_list(init_sequence_f) -> board_f.c        arch_cpu_init ->            rk_get_chiptype    //…
概述 一直以来,电源管理是电子产品设计中很重要的环节.也是不论什么电子设备中最为重要的系统模块之中的一个,优秀的电源管理方案.可以提供持久的续航能力,良好的用户体验.更能提升电子产品的竞争力. 移动设备的电量主要由两种元件消耗:CPU和显示屏,因此设法减少这两种元件的耗电量就是电源管理的关键,为移动设备设计的CPU大多有两种工作频率,为了省电,大部分时间内cpu都工作在减少频率下.仅仅有进行密集计算时,如视频解码才会切换到高频状态,而显示屏省电的方法是尽量减少亮屏时间.可是显示屏的开关和应用有非…
概述 Healthd是android4.4之后提出来的一种中介模型,该模型向下监听来自底层的电池事件,向上传递电池数据信息给Framework层的BatteryService用以计算电池电量相关状态信息,BatteryServcie通过传递来的数据来计算电池电量显示,剩余电量,电量级别等信息,如果收到过温报警或者严重低电报警等信息,系统会直接关机,保护硬件. 主模块处理流程 Healthd模块代码是在system/core/healthd/,其模块入口在healthd的main函数,函数代码如下…
转自:http://blog.csdn.net/hanmengaidudu/article/details/11777501 标准linux休眠过程: l        power management notifiers are executed with PM_SUSPEND_PREPARE l        tasks are frozen l        target system sleep state is announced to the platform-handling co…
本文转载自:http://blog.csdn.net/kris_fei/article/details/77318410 Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 有时候需要知道mmcblk对应的分区是哪一个,其实驱动已经完成这个功能了,如下: root@rk3288:/dev/block/platform/ff0f0000.rksdmmc/by-name # ls -l lrwxrwxrwx root root 2017-01-01…
本文转载自:http://blog.csdn.net/kris_fei/article/details/78748313 Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92 硬件接上USB扫描枪后,被认为是一个USB物理键盘,这时候,系统会默认关闭软键盘. 通过如下方法可以让软硬键盘都打开. kris@eco:~/rk3288/frameworks/base$ g df core/java/android/inputmethodservice/Inp…
本文转载自:http://blog.csdn.net/kris_fei/article/details/71515020 Platform: RockchipOS: Android 6.0Kernel: 3.10.92 rk在驱动层做了一个通用i2c测试代码提供给上层快速测试i2c外设是否传输正常. 测试使用方法:#echo [0-5] > /dev/i2c_detect    //0-5表示i2c number号,不过i2c5需要修改下驱动,默认只支持到i2c4.例如我的i2c2接的是audi…
本文转载自:http://blog.csdn.net/kris_fei/article/details/70053135 Platform: ROCKCHIPOS: Android 6.0Kernel: 3.10.92 以rt5631为例,后续遇到再增加. 使用tinyalsa工具确定播放音问题是否在驱动层1|root@rk3288:/data # tinycap  test.wav                                        Capturing sample:…
本文转载自:http://blog.csdn.net/kris_fei/article/details/54574073   标签: rk3288 串口添加 2017-01-16 14:52 1079人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. Platform: ROCKCHIPOS: Android 6.0Kernel: 3.10.92 uart0,1,3,4 (普通串口) 用的是同一个串口驱动.uart2(调试串口)的驱动代码嵌在fiq debugg…
本文转载自:https://blog.csdn.net/kris_fei/article/details/78620960 Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92 先提USB HOST/DEVICE/OTG概念: OTG控制器可以做host,也能做device,控制器的角色一般由USB ID电平来决定.完整的USB2.0 OTG 控制器硬件信号如下: USB_ID:输入信号,由 USB OTG 协议定义,用于识别 USB 口所接设备的默认…
本文转载自:http://m.blog.csdn.net/kris_fei/article/details/70226451 Platform: RockchipOS: Android 6.0Kernel: 3.10.92 需求:硬件版本不一样,通过几个gpio的高低电平来表示不同版本,u-boot/kernel/hal/framework/app层都需要用到,那么可以使用系统自身的参数传递机制以及property API来实现. 以一个gpio为例.改动:u-bootdiff --git a/…
本文转载自:http://blog.csdn.net/kris_fei/article/details/76919134 Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 rk的pmu模块只提供了每次单个寄存器的读写,驱动提供了这个节点供使用:/sys/rk818/rk818_test 举例: 读取: echo r 0x23 > /sys/rk818/rk818_test: 读取地址 0x23 的值,r 表示读: 写入: echo w 0x23…