吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Android系統啟動流程

麥辣雞腿堡 ? 來源:嵌入式Linux系統開發 ? 作者:Jasonangel ? 2023-10-07 14:58 ? 次閱讀

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,此進程會創建安卓所需要的所有進程。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5092

    文章

    19177

    瀏覽量

    307682
  • Android
    +關注

    關注

    12

    文章

    3945

    瀏覽量

    127934
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210397
  • 系統
    +關注

    關注

    1

    文章

    1019

    瀏覽量

    21429
收藏 人收藏

    評論

    相關推薦

    TL3588--系統啟動卡制作及系統固化

    TL3588--系統啟動卡制作及系統固化
    的頭像 發表于 01-25 09:50 ?1675次閱讀
    TL3588--<b class='flag-5'>系統啟動</b>卡制作及<b class='flag-5'>系統</b>固化

    android--系統啟動--init進程啟動過程如何

    android--系統啟動--init進程啟動過程
    發表于 05-29 10:35

    IAR系統啟動流程及修改方法

    默認情況下,直接進入調試狀態后程序將停在main函數的開頭位置,但其實在進入main函數之前,IAR已經進行了一個系統初始化的過程,本文將介紹在IAR環境中,系統啟動流程中將執行哪些步驟,主要包含
    發表于 08-06 13:57

    請問怎樣去設計嵌入式系統啟動程序?

    如何去編寫嵌入式系統啟動程序?設計嵌入式系統啟動程序的步驟流程有哪些?設計嵌入式系統啟動程序有哪些技術難點?
    發表于 04-25 09:18

    關于Android系統啟動的理解

    雖然第2章Android系統啟動看得比較暈,但還是想把一些總結性的內容做個筆記,加深自己對Android系統啟動的理解。1. init進程啟動
    發表于 07-28 07:05

    Android系統啟動流程總結

    Android系統是如何啟動的?Android系統啟動過程是怎樣的?
    發表于 10-22 07:14

    詳細分析嵌入式Linux系統啟動流程

    在嵌入式Linux專題(一)中已經對嵌入式Linux系統的架構及啟動流程有了初步的介紹,本文將詳細分析嵌入式Linux系統啟動流程
    發表于 11-05 09:25

    Linux文件系統啟動流程

    與 Linux 命令的結合使用Linux 文件系統啟動流程sysvinit服務的管理與裁剪systemd服務的管理與裁剪了解 qt4、qt5 的移植了解 yocto構建文件系統常規 Linux 應用
    發表于 12-17 06:00

    為什么RK3288系統啟動時會卡在Android字樣呢

    為什么RK3288系統啟動時會卡在Android字樣呢?有何解決辦法?
    發表于 03-10 08:08

    系統啟動過程

    系統啟動過程系統啟動過程主要由一下幾步組成(以硬盤啟動為例):1. 開機2. BIOS 加電自檢 ( Power On Self Test -- POST ),內存地址為 0ffff:00003. 將硬盤第一個
    發表于 10-11 12:17 ?2275次閱讀

    Android系統啟動所必須加載的文件bootimage免費下載

    本文檔的主要內容詳細介紹的是Android系統啟動所必須加載的文件bootimage免費下載。
    發表于 03-21 08:00 ?1次下載

    UM2012_osxMotionXX系統啟動

    UM2012_osxMotionXX系統啟動
    發表于 11-22 19:24 ?0次下載
    UM2012_osxMotionXX<b class='flag-5'>系統啟動</b>

    一張圖了解嵌入式系統啟動流程

    如下圖所示是嵌入式系統啟動流程圖,圖中紅色的數字圓點表示啟動的先后順序。主要分為4個階段,分別是第一階段 bootloader,第二階段uboot,第三階段內核啟動,第四階段app
    發表于 03-07 09:44 ?912次閱讀

    Rockchip 系統啟動流程

    Rockchip 系統啟動流程,包括 Boot ROM、Mask ROM、U-Boot、Linux 內核等。 Boot ROM 階段: 在 Rockchip 系統啟動的第一階段,處
    的頭像 發表于 01-04 15:54 ?1445次閱讀

    Rockchip 3588 系統啟動流程

    Rockchip 3588是一款高性能、低功耗的ARM處理器,廣泛應用于智能電視、智能音箱和車載娛樂系統等領域。在本文中,我們將深入探討Rockchip 3588的系統啟動流程系統啟動
    的頭像 發表于 01-07 16:08 ?2935次閱讀
    百家乐官网3宜3忌| 威尼斯人娱乐注册| 乐天堂百家乐娱乐| 黄金城百家乐苹果版| 大发888娱乐方下载| 澳门百家乐赌客| 百家乐永利娱乐场开户注册| 威尼斯人娱乐场开户| 大发888娱乐场下载地址| 金宝博百家乐娱乐城| 汇丰百家乐的玩法技巧和规则| 大发888游戏优惠| 桐乡市| 百家乐官网模拟投注器| 百家乐官网五湖四海娱乐| 百家乐开户送彩金28| 水果老虎机的程序| 蒙城县| 牌九百家乐官网的玩法技巧和规则| 百家乐娱乐城新闻| 百家乐德州桌| 大发888真钱娱乐下载| 明溪县| 万宝路百家乐官网的玩法技巧和规则 | 网上玩百家乐官网会出签吗| 百家乐真人娱乐注册| 新全讯网carrui| 百家乐官网缆的打法| 淘金百家乐官网的玩法技巧和规则| 百家乐龙虎台布作弊技巧| bet365网址搜索器| 网络百家乐官网漏洞| 游戏房百家乐赌博图片| 济州岛娱乐场小伊| 百家乐官网赌场怎么玩| 澳门百家乐会出千吗| 澳门网上赌场| 缅甸百家乐官网娱乐场开户注册| 百家乐桌子轮盘| 二八杠小游戏| 博久百家乐官网论坛|