當(dāng)前位置:首頁 > 芯聞號(hào) > 充電吧
[導(dǎo)讀]盡可能快的啟動(dòng)系統(tǒng),對(duì)于自動(dòng)化設(shè)備是非常重要的。系統(tǒng)能夠在用戶無法感知的時(shí)間內(nèi)啟動(dòng),也就意味著在不需要工作時(shí),可以完全切斷電源,而不是掛起進(jìn)入休眠狀態(tài)。本文基于Atmel AT91系列片上系統(tǒng)和NAND閃存,經(jīng)過一

盡可能快的啟動(dòng)系統(tǒng),對(duì)于自動(dòng)化設(shè)備是非常重要的。系統(tǒng)能夠在用戶無法感知的時(shí)間內(nèi)啟動(dòng),也就意味著在不需要工作時(shí),可以完全切斷電源,而不是掛起進(jìn)入休眠狀態(tài)。本文基于Atmel AT91系列片上系統(tǒng)和NAND閃存,經(jīng)過一系列的優(yōu)化,將Linux系統(tǒng)啟動(dòng)時(shí)間,從最初的11秒,降低到最終的656毫秒。

背景知識(shí)

系統(tǒng)從上電到完全啟動(dòng),需要經(jīng)過許多過程。一個(gè)簡(jiǎn)化的啟動(dòng)流程大概包含:

• 硬件重置

• 啟動(dòng)引導(dǎo)程序(bootloader)

• 操作系統(tǒng)初始化

應(yīng)用程序執(zhí)行

其中硬件非常關(guān)鍵,但是硬件一般難以更改。后續(xù)的優(yōu)化,主要針對(duì)引導(dǎo)程序、Linux內(nèi)核和應(yīng)用程序展開。

引導(dǎo)程序優(yōu)化

引導(dǎo)程序主要完成對(duì)CPU的基礎(chǔ)設(shè)置,處理ARM標(biāo)記(ATAGS,ARM TAGS)或設(shè)備樹(device trees),切換存儲(chǔ)管理單元(MMU,Memory Management Unit)等工作。

對(duì)于U-Boot,常用的優(yōu)化方式有

• 刪除不不要的功能:如網(wǎng)絡(luò)加載等,如果不需要,那么直接移除這些代碼吧

• 關(guān)閉不需要的功能

• 關(guān)閉內(nèi)核鏡像驗(yàn)證

• 關(guān)閉引導(dǎo)程序輸出

• 關(guān)閉啟動(dòng)延遲

將通用功能的引導(dǎo)程序修改成一個(gè)優(yōu)化后的初始程序加載器(Initial Program Loader,IPL),對(duì)于U-Boot,可以通過SPL(Second Program Loader,第二階段程序加載器)來實(shí)現(xiàn)。

內(nèi)核優(yōu)化

Linux內(nèi)核被設(shè)計(jì)的非常靈活,可以針對(duì)需要的功能做各種配置優(yōu)化。因此,優(yōu)化內(nèi)核對(duì)于系統(tǒng)啟動(dòng)速度是至關(guān)重要的。

首先,移除一切不要的驅(qū)動(dòng),盡可能的減少內(nèi)核加載的內(nèi)容,能夠大大縮短系統(tǒng)啟動(dòng)時(shí)間。其次,還有很多內(nèi)核選擇可能需要進(jìn)一步嘗試,比如內(nèi)核壓縮方式,對(duì)于嵌入式系統(tǒng)來說,LZO壓縮方式,通常會(huì)是一個(gè)不錯(cuò)的選擇。最后,還可以通過定制一些啟動(dòng)參數(shù),達(dá)到加快啟動(dòng)的目的。例如可以通過“lpj=”參數(shù),預(yù)設(shè)每個(gè)循環(huán)需要的節(jié)拍數(shù)(loops per jiffy,lpj)的值,避免系統(tǒng)在啟動(dòng)時(shí)自動(dòng)推算。這樣在基于ARMv5的系統(tǒng)中,可以節(jié)省100ms以上的時(shí)間。

對(duì)于內(nèi)核啟動(dòng)的優(yōu)化,可以通過bootgraph.pl腳本(位于內(nèi)核源碼的 script/bootgraph.pl)來繪制內(nèi)核啟動(dòng)耗時(shí)圖表,用以分析啟動(dòng)最耗時(shí)的地方。這個(gè)腳本使用非常簡(jiǎn)單,直接將dmesg的輸出作為其輸入,即可生成svg圖表:

dmesg perl scripts/bootgraph.pl > output.svg

生成的圖表如下圖:

圖中每一個(gè)色段表示一個(gè)功能的初始化耗時(shí)。可以簡(jiǎn)單的關(guān)閉不需要的功能,或者針對(duì)功能進(jìn)行特定的優(yōu)化。

除了內(nèi)核本身之外,內(nèi)核所在的文件系統(tǒng)也對(duì)系統(tǒng)啟動(dòng)有著非常大的影響。對(duì)于使用閃存芯片作為存儲(chǔ)的系統(tǒng)來說,UbiFS 是一個(gè)很好的選擇。它能夠容忍意外斷電,有著出色的掛載速度,以確保系統(tǒng)快速啟動(dòng)。

應(yīng)用程序優(yōu)化

內(nèi)核完成系統(tǒng)啟動(dòng)之后,接來下就是執(zhí)行應(yīng)用程序。對(duì)于應(yīng)用程序的優(yōu)化,主要有兩部分,一部分是由應(yīng)用程序來接管啟動(dòng)的INIT進(jìn)程,另一部分是優(yōu)化應(yīng)用程序的鏈接方式。

標(biāo)準(zhǔn)的SystemV INIT程序,需要執(zhí)行一堆啟動(dòng)腳本。對(duì)于嵌入式系統(tǒng)來說,大部分是沒有意義的。另一部分(比如掛載文件系統(tǒng)),可以由應(yīng)用程序自己來實(shí)現(xiàn)。然后,可以在內(nèi)核啟動(dòng)參數(shù)中通過“init=”參數(shù),將INIT進(jìn)程直接指定為應(yīng)用程序。

應(yīng)用依賴的動(dòng)態(tài)鏈接庫,會(huì)按照以下順序查找:

• LD_PRELOAD環(huán)境變量指定的路徑(一般對(duì)應(yīng)文件/etc/ld.so.preload);

• ELF .dynamic節(jié)中DT_RPATH入口指定的路徑,若DT_RUNPATH入口不存在的話;

• 環(huán)境變量LD_LIBRARY_PATH指定的路徑,但如果可執(zhí)行文件有setuid/setgid權(quán)限,則忽略這個(gè)路徑;編譯時(shí)指定–library-path會(huì)覆蓋這個(gè)路徑;

• ELF .dynamic節(jié)中DT_RUNPATH入口指定的路徑;

• ldconfig緩存中的路徑(一般對(duì)應(yīng)/etc/ld.so.cache文件),若編譯時(shí)使用了-z nodeflib的鏈接選項(xiàng),則此步跳過;

• /lib,然后/usr/lib路徑,若使用了-z nodeflib鏈接選項(xiàng),則此步亦跳過;

因此,盡可能的將應(yīng)用程序依賴的動(dòng)態(tài)鏈接庫放到優(yōu)先查找的路徑,可以加快鏈接速度。對(duì)于交叉編譯環(huán)境特別需要注意,主機(jī)上的動(dòng)態(tài)鏈接庫位置和目標(biāo)系統(tǒng)上的位置可能不一致,這會(huì)增加應(yīng)用程序執(zhí)行時(shí)動(dòng)態(tài)鏈接庫的加載時(shí)間。

總結(jié)

基于上面提到的三個(gè)優(yōu)化點(diǎn),可以將系統(tǒng)的啟動(dòng)時(shí)間,從最初的11s降低到656ms(數(shù)據(jù)參考Jan Altenberg在都柏林舉行的嵌入式Linux會(huì)議上的演講稿)。從硬件到引導(dǎo)程序再到內(nèi)核最后到應(yīng)用程序,每個(gè)啟動(dòng)步驟都有自己可優(yōu)化的地方,經(jīng)過一些簡(jiǎn)單的優(yōu)化,就可以減少系統(tǒng)的啟動(dòng)時(shí)間。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉