日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

嵌入式Linux初始化硬件RTC,嵌入式Linux系统中的快速启动技术研究

發(fā)布時間:2025/3/11 linux 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式Linux初始化硬件RTC,嵌入式Linux系统中的快速启动技术研究 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

嵌入式Linux系統(tǒng)主要特點(diǎn)在于使用Bootloader替代了桌面系統(tǒng)的BIOS,同時對系統(tǒng)進(jìn)行了規(guī)模上的裁剪,但硬件上的劣勢往往導(dǎo)致系統(tǒng)啟動速度較慢,而嵌入式產(chǎn)品使用者又對系統(tǒng)的開機(jī)速度比較敏感,樣就產(chǎn)生了對于提高嵌入式Linux系統(tǒng)啟動速度的需求。本文對系統(tǒng)啟動時執(zhí)行哪些階段的操作CONTROL ENGINEERING China版權(quán)所有,以及縮短這些操作時間的方法進(jìn)行了探討。

1 嵌入式Linux系統(tǒng)啟動時序

目前,嵌入式系統(tǒng)的硬件平臺和應(yīng)用方向區(qū)別很大,但總體啟動流程一致的。這里的系統(tǒng)啟動是指從用戶執(zhí)行上電/復(fù)位操作,到系統(tǒng)開始提供用戶可接收的服務(wù)水平所需要的過程。典型的上電/復(fù)位時序如表1所列。

表1 嵌入式Linux系統(tǒng)啟動時序

2 Linux快速啟動方法

目前,一些Linux的發(fā)行版本已經(jīng)對啟動速度進(jìn)行了優(yōu)化。如果利用標(biāo)準(zhǔn)Linux進(jìn)行開發(fā),則啟動速度的提高主要是通過內(nèi)核配置和各種補(bǔ)丁包來實(shí)現(xiàn)的。下面分析快速啟動的一些關(guān)鍵技術(shù)。

2.1 Firmware和Bootloader階段

目標(biāo)板一旦確定,Firmware運(yùn)行的時間就無法改變了,Flash和RAM的讀寫速度也就隨之確定了。但如果復(fù)位時能夠繞過Firmware和Bootloader,即允許運(yùn)行中的內(nèi)核加載以及運(yùn)行另一個內(nèi)核,可以縮短啟動的時間。典型的實(shí)現(xiàn)有Kexec,它有2個組件,即用戶空間組件kexectools和內(nèi)核補(bǔ)丁。另外一種辦法是在內(nèi)核命令行中加入reboot=soft數(shù)www.cechina.cn,同樣可以跳過Firmware,但是缺點(diǎn)在于無法從用戶空間調(diào)用。

對于正常啟動,可以選擇速度比較快的Bootloader,并對內(nèi)核進(jìn)行小型化處理;還可以使用高速的映像復(fù)制技術(shù)(如DMA2RAM),從而縮短復(fù)制的時間。為了縮短解壓消耗的時間,可尋求比較高效的壓縮算法。但一般情況下,壓縮比越高,算法越復(fù)雜,解壓速度就越慢,從而造成復(fù)制時間(與壓縮比成反比)和解壓時間(一般與壓縮比成正比)之間的矛盾。

2.2 內(nèi)核階段

內(nèi)核初始化時要對RealTime Clock (RTC)進(jìn)行同步。此過程要占用1s的時間www.cechina.cn,可去掉以節(jié)約時間,但這樣CPU會與正確的時間有1s的偏差,如果關(guān)機(jī)時CPU時鐘又要保存在RTC中,偏差就會不斷累積。但對于使用外部時鐘源進(jìn)行同步的系統(tǒng),則可安全地跳過這個階段。

Preset LPJ可以用來縮短每次啟動時調(diào)用calibrate_delay()來校準(zhǔn)loops_per_jiffy消耗的時間。這個時間開銷與CPU頻率無關(guān),在典型的嵌入式硬件環(huán)境下會消耗300ms左右。LPJ值對于固定硬件平臺應(yīng)該是一致的,可以只計算一次,在后續(xù)的啟動中就可以在啟動參數(shù)中強(qiáng)制指定LPJ值,而跳過實(shí)際的計算過程。具體方法是:在正常啟動后記錄下內(nèi)核啟動信息中的"Calibrating Delay"數(shù)值,在啟動參數(shù)中以"lpj=xxxxxx"的形式強(qiáng)制指定。

啟動過程默認(rèn)打開控制臺輸出啟動消息,但是控制臺尤其是基于幀緩沖的控制臺會減慢啟動速度。因此在嵌入式Linux產(chǎn)品中,將啟動過程中的控制臺設(shè)為靜默狀態(tài),方法是在內(nèi)核啟動參數(shù)中加入"quiet"。

設(shè)備搜索和驅(qū)動安裝是比較耗時的操作,因此要在編譯內(nèi)核時確定需要安裝哪些驅(qū)動模塊,以免系統(tǒng)搜索那些根本不存在的設(shè)備,尤其是多余的IDE設(shè)備。對于啟動時暫時不用安裝的設(shè)備,盡量將驅(qū)動編譯成模塊,在以后空閑時或者使用設(shè)備時加載,而不是全部放在啟動階段。

2.3 用戶空間階段

傳統(tǒng)Linux的初始化腳本是由bash執(zhí)行的,在內(nèi)核引導(dǎo)后啟動init進(jìn)程(/sbin/init)。它使用一個ASCII文件(/etc/inittab)來改變運(yùn)行級別控制工程網(wǎng)版權(quán)所有,這個文件中又會調(diào)用RCSript,由RCSript查找/etc/rc.d/rc5.d/并啟動相應(yīng)鏈接指向的系統(tǒng)服務(wù)。

消費(fèi)電子類Linux系統(tǒng)需要啟用圖形界面等必要的服務(wù),未經(jīng)優(yōu)化的系統(tǒng)在這個過程中會默認(rèn)啟動很多根本用不到或者當(dāng)前用不到的系統(tǒng)服務(wù),這一部分會花去較大的時間開銷。最簡單的優(yōu)化辦法就是根據(jù)實(shí)際需要,通過改寫服務(wù)配置文件定制系統(tǒng)服務(wù)。另外控制工程網(wǎng)版權(quán)所有,init腳本的執(zhí)行是串行的,在腳本量大時會導(dǎo)致引導(dǎo)過程非常,因此可以考慮并行運(yùn)行各種服務(wù)以加快啟動的速度。現(xiàn)在已經(jīng)出現(xiàn)了一些初始化程序來替代init進(jìn)程,下面介紹initng和upstart。

initng(init nextgerneration)能夠并行啟動服務(wù)從而快速完成初始化工作。initng認(rèn)為滿足了依賴關(guān)系的服務(wù)就可以啟動。在從外存加載一個腳本或等待硬件設(shè)備啟動的同時,可以運(yùn)行另一個腳本來啟動別的服務(wù),使系統(tǒng)在CPU 和 I/O 之間實(shí)現(xiàn)較好的平衡。作為一個基于依賴關(guān)系的解決方案,initng使用自己的初始化腳本集,它

總結(jié)

以上是生活随笔為你收集整理的嵌入式Linux初始化硬件RTC,嵌入式Linux系统中的快速启动技术研究的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。