全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

Android系统启动流程

时间:2023-10-07 14:58

人气:

作者:admin

标签: Android  嵌入式 

导读:Andorid 系统是在嵌入式行业中广泛应用的系统,手机、平板、机器人、汽车中控系统都有使用安卓系统的,在应用方面的优势是安卓系统自带 UI,使用Linux 需要自己用 QT 开发界面,并且...

Andorid 系统是在嵌入式行业中广泛应用的系统,手机、平板、机器人、汽车中控系统都有使用安卓系统的,在应用方面的优势是安卓系统自带 UI,使用Linux 需要自己用 QT 开发界面,并且界面没那么好看。

Linux 之上有一个 HAL 层,这一层出现的原因:Linux 是开源的,基于它的修改也必须开源,所以 Andorid 在这里加了一个 HAL层,这样硬件厂商可以不公布自己的代码。

Native 层由 C++ 语言实现,Framework 层和 app 层由 java 语言实现,也就是说,你想搞懂 Android系统需要精通三种语言:C、C++、java。

上一篇文章分析了Linux 系统的启动流程,Android 系统的启动流程和 Linux 相似,只是 init 进程起来后,做了不一样的事情。

Android 系统启动流程如下:

图片

1)Boot ROM 是固化在硬件中的一段代码,它一般是固定的,它的作用是检测基本的硬件是否存在,比如检测 EMMC 是否存在,存在的话,把bootloader 从EMMC 拷贝到 SRAM ,启动系统,后面交给 bootloader 。

2)Andorid 系统的启动引导程序 bootloader 不是 uboot,是 LK(little kernel),专门用来启动安卓系统。

3)bootloader 初始化完成后跳转到 Linux 内核的 start_kernel 函数,此函数最后产生了 kernel_init 和kthreadd,kernel_init 后面会从内核空间跳转到用户空间,变成用户空间的 init 进程,PID=1,而
kthreadd(PID=2)是内核进程,专门用来监听创建内核进程的请求,它维护了一个链表,如果有创建内核进程的需求,就会在链表上创建。

当然你可以看到图中还有一个swapper(PID=0)进程,它是系统中唯一一个不使用 fork 创建的进程,kernel_init 和kthreadd 就是由它创建的,swapper 也叫 idle 进程,空闲进程,它运行的时候就是系统处于空闲状态的时候。

4)当 kernel_init 转变为用户空间的 init 进程以后,会在 Andorid系统中创建一个最重要的进程:Zygote,此进程会创建安卓所需要的所有进程。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信