rk3399 android 7.1
我这边出现的问题是开机充电没问题。但是关机充电的话会无线重启。log现象是开机检测到充电,但是进入kernel的前面一段时间没有检测到,一段时间没有检测到机器就关机了。充电状态下进行重启,发现也有这个现象,进入kernel前面的一段时间检测不到充电信息。所以,想通过欺骗机器,上电的kernel前面是有充电的,即使没有充电,也默认是适配器充电。研究代码,估摸大概是在下面的部分

绿色两个函数看得出是设置初始化充电状态是usb充电或者dc充电(其实细分的话就是有充电,没充电,有充电的话,分两类,dc或者usb,usb中又分几种)。所以,要欺骗机器就从前面的两个跟init相关函数着手

其中一个函数的具体定义就是这样的,通过查阅rk818datasheet可以知道这边是在获取当前充电的各种状态信息并且设置。

这个函数没看懂。
所以只能猜往后面的两个函数可能可以欺骗机器。


这个设置相关的函数是通过switch来做判断做进入哪个状态的。通过追踪相关宏,知道这个枚举结构体的成员,从名字就能知道含义了。

加log后打印两次,没错,上面的初始化充电状态函数有两次调用这个函数,一次是检测dc,一次是检测usb。(其实也可以理解dc优先级别高些。)这边看log,这两次调用的结果都是没有相关充电设备。所以,我就在这欺骗机器了。

充电初始化状态默认是usb ac充电 然后就可以骗过去了,进行充电了。
rk818电池计量计无充电检测问题
最新推荐文章于 2024-10-29 19:58:15 发布
博客内容涉及RK3399芯片在Android 7.1系统下遇到的一个故障:设备在关机状态下充电会无限重启。问题根源在于开机和进入kernel时无法检测到充电状态。作者通过分析代码,尤其是与初始化充电状态相关的函数,发现可能的解决方案是欺骗设备以为始终处于USBAC充电状态,从而规避充电检测问题。通过修改相关设置,成功让设备在关机充电时避免重启。
1607

被折叠的 条评论
为什么被折叠?



