搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
煮酒与君饮
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
小程序备案小程序认证双系统
2
【AI工具合集】图片、文本、音视频工具与A I岗位面试资料_音频视觉文本ai
3
by: kotlin.UninitializedPropertyAccessException: lateinit property xxx(变量名) has not been initialized_lateinit property madapter has not been initialize
4
Spring:概述、IOC理论_狂神ioc
5
linux系统docker部署使用neo4j_docker运行neo4j exit 1
6
NVivo的节点矩阵_nvivo怎么导出共词矩阵
7
QT中利用QMovie实现动态加载效果
8
2024年热门网络安全运营工具/方案推荐_vulnerability manager plus
9
数字图像处理期末整理
10
基于Python的定制化图书借阅推荐引擎设计与实现
当前位置:
article
> 正文
类android设备reset过程
作者:煮酒与君饮 | 2024-06-19 15:35:02
赞
踩
类android设备reset过程
模式解析流程
frameworks/base/core/java/android/os/PowerManager.java
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
把reason存储到SystemProperties,最后调用ShutdownThread带着reason传参
frameworks/base/services/core/java/com/android/server/power/ShutdownThread.java
这个类中主要根据一些条件做了一些单独处理,例如recovery等可能还会展示弹窗
SystemProperties.set(“sys.powerctl”, “reboot,” + reason),这里很重要
静默重启会把这个值存储到内核特定的启动参数,比如使用RTC寄存器来保存,这个参数会在下次重启时被系统拿到
同时,内核还会解析reason,存储另一个SystemProperties
大概流程是,lk中读到RTC的quiescent标志位,则不显示开机logo,并且在cmdline中添加androidboot.quiescent = 1; lk——》kernel——》init,init会解析cmdline,并把其中的androidboot.quiescent解析出来,并设置成ro.boot.quiescent=1;这样后续android所有地方都能知道此次是静默开机
sys.powerctl
平台reboot_mode寄存器配置:
bsp/bootloader/u-boot15/arch/arm/include/asm/arch-sharkl5pro/check_reboot.h
Reboot mode各模式定义:
bsp/bootloader/u-boot15/include/boot_mode.h
平台各模式注册:
bsp/bootloader/u-boot15/board/spreadtrum/ums512_1h10/ums512_1h10.c
从寄存器或者pmic RTC中获取各模式位和进入,记录mode到cmdline
check_mode驱动:
bsp/bootloader/u-boot15/drivers/misc/check_reboot.c
reboot时进入的模式:
bsp/bootloader/u-boot15/common/cmd_cboot.c
各模式函数代码:
bsp/bootloader/u-boot15/common/loader/boot_mode.c
reboot流程
system/core/bootstat/bootstat.cpp
system/core/libcutils/include/cutils/android_reboot.h
system/core/reboot/reboot.c:
property_set HandlePowerctlMessage DoReboot RebootSystem
system/core/init/reboot_utils.cpp :
RebootSystem 通过 syscall 系统调用转到内核层
由syscall到内核层之后调用的第一个函数是 SYSCALL_DEFINE4:
第一个参数为函数名后缀,如上图,则这个定义的函数名字为SyS_reboot。
第二个,第三个一起看,为类型加变量名。
可以发现一共有4组类型加变量名的 变量。所以DEFINE4 中的数字4就代表SyS_reboot有4个参数
首先对应用层中syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2,
LINUX_REBOOT_CMD_RESTART2, rebootTarget.c_str());传递进来的参数进行分析,判断校验,一些reboot命令没有重启,有可能这里解析错误
然后调用kerne_restart去做kernel的重启:
bsp/kernel/kernel4.14/kernel/reboot.c
这里去处理reboot原因:
bsp/kernel/kernel5.4/drivers/spi/spi-sprd-adi.c
sprd_adi_restart_handler
这里调用do_kernel_restart做系统复位,里面做的是发送一个通知,通知各个通过register_restart_handler注册的钩子函数,执行这个关机函数,最后我发现在我系统中是使用看门狗复位来实现重启的 bsp/kernel/kernel5.4/drivers/watchdog/watchdog_core.c
对watchdog函数做溢出写入触发restart
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/煮酒与君饮/article/detail/736921
推荐阅读
article
Android
通知栏
Notification
学习_
android
notification
set...
转自:http://blog.csdn.net/vipzjyno1/article/details/25248021楼主...
赞
踩
article
android
APP
monkey
测试_
android
monkey
测试...
Monkey 测试是通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对应用程序客户端的稳定性...
赞
踩
article
flutter
Android
Release
打包_running
gradle
task
'as...
https://blog.csdn.net/rznice/article/details/103169221电脑上需要安...
赞
踩
article
【
Android
】
SDK
安装
及配置_
android
sdk
下载
安装
_
下载
android
sdk
...
分别添加tools
安装
路径、platform-tools
安装
路径、
Android
新版API
安装
路径,均在
SDK
目录下。在...
赞
踩
article
Android
SDK
下载
安装
(_指定版本)_
android
sdk
的
下载
与
安装
...
切换
Android
SDK
工具这里选择24.4.1版本,页面下滑可以选择其他版本。_
android
sdk
的
下载
与
安装
a...
赞
踩
article
在
Linux
系统上
下载
Android
SDK_
android
sdk
linux
...
使用ubuntu系统进行车机开发,今天开始配置环境,首先是
下载
android
studio,然后
下载
android
sd...
赞
踩
article
Android
studio
Android
SDK
下载
安装_
android
studio
sdk下...
这里 我们要把左边的几个都打开 然后 右下角点击同意 不然 Finish 是点不了的。然后 如下图 选择一个空目录 做S...
赞
踩
article
android
sdk
tools
是
什么
意思,
android
sdk
tools
有
什么
用...
满意答案匿名人士524402017.04.20采纳率:40%等级:7已帮助:2959人platform-
tools
包含开...
赞
踩
article
基于
Android
的学校
会议
管理
系统
(
Android
studio
毕业设计
+Adroid课程设计+m...
功能1、实名制注册功能功能2、
会议
通知推送,收到通知(短信或APP广播)后,登录后可查看
会议
议程功能3、
会议
现场APP签...
赞
踩
article
Android
架构
MVC
MVP
MVVM
+实例_
android
mvvm
实例...
MVC
、MVP和
MVVM
是软件比较常用的三种软件架构,这三种架构的目的都是分离,避免将过多的逻辑全部堆积在一个类中。_a...
赞
踩
article
知物由学 |
插件
APK
保护
方案介绍,化解
Android
生态中的
安全漏洞
风险_
apk
保护
...
通过 Hook 系统 Framework 层与组件启动相关的接口,并在 Manifest 文件中注册预先占位组件,达到欺...
赞
踩
article
知物由学 |
Android
模拟
点击
研究,如何突围“
黑灰产
”的
自动化
作弊?_
adb
模拟
点击
权限
...
不论是破坏软件的营销策略,还是破坏游戏的生态体系,都会影响到正常用户的使用体验,影响游戏厂商的收益与口碑。_
adb
模拟
点...
赞
踩
article
Android
H5
调起
支付
宝
_
调起
支付
宝
支付
面板...
H5中
调起
支付
宝
支付
,处理方式比较简单,主要对url进行拦截,判断是否以alipay开头,则进行拦截,不在使用webvi...
赞
踩
article
Android
Studio
导入
Android
源码
(推荐)_
android
studio
导入
源码
...
实际项目开发中,FWK需要阅读全部的
源码
,如果直接用AS打开所有
源码
会很卡,大多数情况下会直接卡死(公司电脑配置如此),...
赞
踩
article
Android
Studio
导入安卓源码_
android
studio
导入
yy3568
-andro...
Android
Studio
导入安卓源码_
android
studio
导入
yy3568
-
android
11源码andro...
赞
踩
article
Android
Studio
导入
Android
系统源码_
android
studio
导入安卓系统源...
实现步骤非常简单:1:编译idegen模块源码要编过,不然idegen没法生成。检查out/host/linux-x86...
赞
踩
article
Android
Studio
导入源码_
android
stduo
...
1 全编译 2 mmm development/tools/idegen/3 sh development/tools/...
赞
踩
article
【
Android
】系统
源码
下载及
编译
和
android
studio
导入
_
android
studio
...
BUILD 指的是特定功能的组合的特定名称,即表示
编译
出的镜像可以运行在什么环境,例如 aosp_arm64-eng 中...
赞
踩
article
Android
studio
导入
Android
系统
源码
_android
studio
导入
安卓
源码
...
1.通常,从事
Android
开发相关的人员,都需要涉及到
Android
源码
的阅读,尤其是从事
Android
系统相关开发的...
赞
踩
article
Android
Media
Codec
简明教程(二):
使用
Media
Codec
Info.
Codec
...
在上一章
Android
Media
Codec
简明教程(一)我们学习了如何
使用
Media
Codec
List 查询本机支...
赞
踩
相关标签
android
python
sdk
adb
android studio
ide
android sdk tools是什么意思
课程设计
android jetpack
mvp
mvvm
移动开发
系统安全
自动化
运维
java
jdk