久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

RK29機型之Android系統(tǒng)啟動流程

 tracyf 2014-05-09

/********************************************************************************************
 * author:conowen@大鐘                                                                                                                          
 * E-mail:[email protected]                                                                                                             
 * http://blog.csdn.net/conowen                                                                                                              
 * 注:本文為原創(chuàng),僅作為學(xué)習(xí)交流使用,轉(zhuǎn)載請標(biāo)明作者及出處,。     

 ********************************************************************************************/


第一步:系統(tǒng)引導(dǎo)bootloader,,即RK29xxLoaderXXX.bin文件

       加電后,CPU將先執(zhí)行 bootloader程序,然后bootloader首先會讀寄存器地址base + APP_DATA1的內(nèi)容, 根據(jù)這個地址的值決定是否進(jìn)入recovery模式或者其它模式。bootloader還會讀取MISC分區(qū)第一塊的內(nèi)容,, 決定進(jìn)入recovery模式還是升級基帶Baseband Processor(BP)或做其它事情

而上述寄存器與分區(qū)的值是有按鍵觸發(fā)或者軟件觸發(fā)的,。

a)       開機按reset+返回鍵,系統(tǒng)進(jìn)入recovery模式,,加載recovery.img,,recovery.img包含內(nèi)核,基本的文件系統(tǒng),,用于工程模式的燒寫

b)       開機按Power,,正常啟動系統(tǒng),加載boot.img,,boot.img包含內(nèi)核,,基本文件系統(tǒng),用于正常啟動機器(以下只分析正常啟動的情況)


第二步: 啟動內(nèi)核kernel

1)       源碼:kernel/*

2)       說明:kernel由bootloader加載

第三步:    文件系統(tǒng)(rootfs)及應(yīng)用初始化(init)

1)       源碼:system/core/init/*

2)       配置文件:system/rootdir/init.rc,,

3)       說明:init是一個由內(nèi)核啟動的用戶級進(jìn)程,,它按照init.rc中的設(shè)置執(zhí)行:啟動服務(wù)(這里的服務(wù)指linux底層服務(wù),如adbd提供adb支持,,vold提供SD卡掛載等),,執(zhí)行命令和按其中的配置語句執(zhí)行相應(yīng)功能

第四步:   重要的后臺程序zygote

1)       源碼:frameworks/base/cmds/app_main.cpp等

2)       說明:zygote是一個在init.rc中被指定啟動的服務(wù),該服務(wù)對應(yīng)的命令是/system/bin/app_process

a)       建立Java Runtime,,建立虛擬機

b)       建立Socket接收ActivityManangerService的請求,,用于Fork應(yīng)用程序

c)       啟動SystemServer

第五步: 系統(tǒng)服務(wù)system server

1)       源碼:frameworks/base/services/java/com/android/server/SystemServer.java

2)       說明:被zygote啟動,通過System Manager管理android的服務(wù)(這里的服務(wù)指frameworks/base/services下的服務(wù),,如衛(wèi)星定位服務(wù),,剪切板服務(wù)等)

第六步:桌面launcher

1)       源碼:ActivityManagerService.java為入口,packages/apps/launcher*實現(xiàn)

2)       說 明:系統(tǒng)啟動成功后SystemServer使用xxx.systemReady()通知各個服務(wù),,系統(tǒng)已經(jīng)就緒,,桌面程序Home就是在 ActivityManagerService.systemReady()通知的過程中建立的,最終調(diào)用 ()啟launcher

第七步:   解鎖

1)       源碼:
frameworks/policies/base/phone/com/android/internal/policy/impl/*lock*

2)       說 明:系統(tǒng)啟動成功后SystemServer調(diào)用wm.systemReady()通知WindowManagerService,,進(jìn)而調(diào)用 PhoneWindowManager,,最終通過LockPatternKeyguardView顯示解鎖界面,跟蹤代碼可以看到解鎖界面并不是一個 Activity,,這是只是向特定層上繪圖,,其代碼了存放在特殊的位置

第八步:   開機自啟動的第三方應(yīng)用程序

1)       源碼:
frameworks/base/services/java/com/android/server/am/ActivityManagerService.java

2)       說 明:系統(tǒng)啟動成功后SystemServer調(diào)用ActivityManagerNative.getDefault().systemReady()通知ActivityManager啟動成功,ActivityManager會通過置變量mBooting,,通知它的另一線程,該線程會發(fā)送廣播android.intent.action.BOOT_COMPLETED以告知已注冊的第三方程序在開機時自動啟動,。

第九步: 總結(jié)
綜上所述,,系統(tǒng)層次關(guān)于啟動最核心的部分是zygote(即app_process)和system server,zygote它負(fù)責(zé)最基本的虛擬機的建立,,以支持各個應(yīng)用程序的啟動,,而systemserver用于管理android后臺服務(wù),,啟動步驟及順序。

10. 參考

http://blog.csdn.net/basonjiang_sz/category/648399.aspx



    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多