<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 快速了解嵌入式Linux開(kāi)機(jī)啟動(dòng)流程

          快速了解嵌入式Linux開(kāi)機(jī)啟動(dòng)流程

          作者: 時(shí)間:2018-05-22 來(lái)源:網(wǎng)絡(luò) 收藏

            關(guān)于的開(kāi)機(jī)啟動(dòng)流程網(wǎng)上有很多資料,這里我們僅進(jìn)行一個(gè)簡(jiǎn)單的介紹,旨在讓人能快速了解整個(gè)啟動(dòng)流程。

          本文引用地址:http://www.ex-cimer.com/article/201805/380283.htm

            整個(gè)開(kāi)機(jī)流程可以歸結(jié)為以下幾點(diǎn):

          1.jpg

            首先分個(gè)介紹:

            ROM Code(芯片內(nèi)固化好的一段代碼),起最初的引導(dǎo)功能,包括初始化時(shí)鐘、片內(nèi)RAM、相關(guān)外設(shè)等,讀取引腳配置信息等;

            U-Boot(Universal Boot Loader),初始化相關(guān)硬件設(shè)備,引導(dǎo)系統(tǒng)加載內(nèi)核鏡像的一段程序;

            Kernel,負(fù)責(zé)存儲(chǔ)器、文件、外設(shè)等的管理,以及進(jìn)程通信、調(diào)度等;

            文件系統(tǒng),負(fù)責(zé)文件的管理;

            應(yīng)用,就是各個(gè)應(yīng)用程序。

            為形象點(diǎn)說(shuō)明,我們將整個(gè)流程比作開(kāi)一輛車(chē)子,我們把上面那幅圖進(jìn)行更改:

          2.jpg

            上電后CPU執(zhí)行內(nèi)部固化好的一段代碼(ROM Code),初始化相關(guān)外設(shè),根據(jù)外部引腳的信息,選擇從哪個(gè)存儲(chǔ)設(shè)備讀取U-Boot(emmc、TF卡......),然后將U-Boot加載到內(nèi)存上運(yùn)行,U-Boot完成相關(guān)外設(shè)配置后,將Kernel加載到內(nèi)存上,至此,由Kernel負(fù)責(zé)剩下的任務(wù)。

            這里ROM Code是上電后最先執(zhí)行的動(dòng)作,就相當(dāng)一個(gè)啟動(dòng)引導(dǎo)的過(guò)程;U-Boot除了初始外設(shè)外,還有很重要的一點(diǎn)就是為Kernel初始化相關(guān)內(nèi)存空間,為其加載做準(zhǔn)備,這其實(shí)就相當(dāng)于要使發(fā)動(dòng)機(jī)發(fā)動(dòng),要先為它提供能源;有了發(fā)動(dòng)機(jī)沒(méi)設(shè)備,空有動(dòng)力也做不了什么實(shí)質(zhì)的事,相反,沒(méi)有發(fā)動(dòng)機(jī)提供動(dòng)力,設(shè)備動(dòng)不起來(lái),這里其實(shí)就揭示著Kernel和文件系統(tǒng)密不可分的關(guān)系;當(dāng)一切準(zhǔn)備就緒后,我們就可以在上面編寫(xiě)、運(yùn)行應(yīng)用相關(guān)的程序(開(kāi)車(chē))。



          關(guān)鍵詞: 嵌入式Linux

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();