亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于BootLoader向內(nèi)核傳參數(shù)的方法及裝置與流程

文檔序號:11829597閱讀:241來源:國知局
基于BootLoader向內(nèi)核傳參數(shù)的方法及裝置與流程

本申請涉及計(jì)算機(jī)通信領(lǐng)域,尤其涉及基于BootLoader向內(nèi)核傳參數(shù)的方法及裝置。



背景技術(shù):

在嵌入式系統(tǒng)中,BootLoader(啟動(dòng)加載器)是在設(shè)備上電啟動(dòng)期間運(yùn)行的一段引導(dǎo)程序,主要用于初始化硬件設(shè)備,向內(nèi)核傳遞硬件參數(shù)以及建立內(nèi)存的空間映射等。尤其是BootLoader向內(nèi)核傳遞硬件參數(shù)的效率對嵌入式設(shè)備的啟動(dòng)速度起著至關(guān)重要的作用。

然而,在操作系統(tǒng)初始化階段,BootLoader傳遞硬件參數(shù)能力有限,并且在操作系統(tǒng)運(yùn)行期間,當(dāng)操作系統(tǒng)需要多次使用BootLoader傳遞的同一硬件參數(shù)時(shí),則需要頻繁訪問硬件芯片,從該芯片上讀取硬件參數(shù),因而降低了嵌入式設(shè)備啟動(dòng)和運(yùn)行的速率。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本申請?zhí)峁┮环N基于BootLoader向內(nèi)核傳參數(shù)的方法及裝置,用以提高嵌入式設(shè)備啟動(dòng)和運(yùn)行的速率。

根據(jù)本發(fā)明實(shí)施例的第一方面,提供一種基于BootLoader向內(nèi)核傳參數(shù)的方法,所述方法應(yīng)用于嵌入式設(shè)備,包括:

BootLoader將需要傳遞的硬件參數(shù)儲(chǔ)存在指定物理內(nèi)存中,并將所述物理內(nèi)存的地址信息發(fā)送給操作系統(tǒng);其中,所述物理內(nèi)存的長度不超過預(yù)設(shè)的長度閾值,所述長度閾值表征單次傳遞的硬件參數(shù)數(shù)量的最大值;

操作系統(tǒng)基于接收到的所述地址信息,將所述物理內(nèi)存限制為非可占用內(nèi)存;

操作系統(tǒng)讀取所述物理內(nèi)存中儲(chǔ)存的所述硬件參數(shù)執(zhí)行啟動(dòng),并建立所述物理內(nèi)存的物理地址與操作系統(tǒng)邏輯地址空間中的邏輯地址的映射關(guān)系。

根據(jù)本發(fā)明實(shí)施例的第二方面,提供一種基于BootLoader向內(nèi)核傳參數(shù)的裝置,所述裝置包括:

發(fā)送單元,用于BootLoader將需要傳遞的硬件參數(shù)儲(chǔ)存在指定物理內(nèi)存中,并將所述物理內(nèi)存的地址信息發(fā)送給操作系統(tǒng);其中,所述物理內(nèi)存的長度不超過預(yù)設(shè)的長度閾值,所述長度閾值表征單次傳遞的硬件參數(shù)數(shù)量的最大值;

限制單元,用于操作系統(tǒng)基于接收到的所述地址信息,將所述物理內(nèi)存限制為非可占用內(nèi)存;

創(chuàng)建單元,用于操作系統(tǒng)讀取所述物理內(nèi)存中儲(chǔ)存的所述硬件參數(shù)執(zhí)行啟動(dòng),并建立所述物理內(nèi)存的物理地址與操作系統(tǒng)邏輯地址空間中的邏輯地址的映射關(guān)系。

本發(fā)明實(shí)施例提出一種新的基于BootLoader向內(nèi)核傳參數(shù)的方法。通過對基于BootLoader傳參數(shù)機(jī)制的改進(jìn),BootLoader可以將需要傳遞的硬件參數(shù)儲(chǔ)存在指定物理內(nèi)存中,并可以將所述物理內(nèi)存的地址信息發(fā)送給操作系統(tǒng),該物理內(nèi)存的長度不超過預(yù)設(shè)的長度閾值所,并且該長度閾值表征單次傳遞的硬件參數(shù)大小的最大值。操作系統(tǒng)可以基于接收到的所述地址信息,將所述物理內(nèi)存限制為非可占用內(nèi)存,并且可以讀取所述物理內(nèi)存中儲(chǔ)存的所述硬件參數(shù)執(zhí)行啟動(dòng),并建立所述物理內(nèi)存的物理地址與操作系統(tǒng)邏輯地址空間中的邏輯地址的映射關(guān)系。

一方面,在操作系統(tǒng)啟動(dòng)前,由于物理內(nèi)存的長度由傳統(tǒng)的固定長度,改變?yōu)殚L度不超過預(yù)設(shè)的長度閾值,長度閾值表征單次傳遞的硬件參數(shù)數(shù)量的最大值,因此可以有效地?cái)U(kuò)大傳遞硬件參數(shù)的數(shù)量,提高操作系統(tǒng)的啟動(dòng)速率。

另一方面,由于操作系統(tǒng)將該物理內(nèi)存限制為非可占用內(nèi)存,當(dāng)操作系統(tǒng)啟動(dòng)后,該物理內(nèi)存不會(huì)被占用,物理內(nèi)存中儲(chǔ)存的硬件參數(shù)得以維護(hù)。當(dāng)操作系統(tǒng)需要多次使用該硬件參數(shù)時(shí),可以通過該物理內(nèi)存獲得,而不需要頻繁地從硬件中讀取。因此,提高了嵌入式設(shè)備的運(yùn)行速率。

基于上述兩方面的原因,使用本發(fā)明實(shí)施例提供的方法可以提高嵌入式設(shè)備啟動(dòng)和運(yùn)行的速率。

附圖說明

圖1是本申請一示例性實(shí)施例示出的一種基于BootLoader向內(nèi)核傳參數(shù)的相關(guān)技術(shù)方案的流程圖;

圖2是本申請一示例性實(shí)施例示出的一種基于BootLoader向內(nèi)核傳參數(shù)的方法的流程圖;

圖3是本申請一示例性實(shí)施例示出的另一種基于BootLoader向內(nèi)核傳參數(shù)的方法的流程圖;

圖4是本申請一示例性實(shí)施例示出的一種基于BootLoader向內(nèi)核傳參數(shù)的裝置所在設(shè)備的一種硬件結(jié)構(gòu)圖;

圖5是本申請一示例性實(shí)施例示出的一種基于BootLoader向內(nèi)核傳參數(shù)的裝置的框圖。

具體實(shí)施方式

這里將詳細(xì)地對示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本申請相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。

在本申請使用的術(shù)語是僅僅出于描述特定實(shí)施例的目的,而非旨在限制本申請。在本申請和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指并包含一個(gè)或多個(gè)相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。

應(yīng)當(dāng)理解,盡管在本申請可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時(shí)”或“當(dāng)……時(shí)”或“響應(yīng)于確定”。

參見圖1,圖1是本申請一示例性實(shí)施例示出的一種基于BootLoader向內(nèi)核傳遞硬件參數(shù)的相關(guān)技術(shù)方案的流程圖。

在嵌入式設(shè)備中,BootLoader是操作系統(tǒng)啟動(dòng)前的一段引導(dǎo)程序。類似于PC機(jī)的引導(dǎo)加載程序BIOS。

嵌入式設(shè)備啟動(dòng)后,在操作系統(tǒng)內(nèi)核初始化階段,BootLoader可以向操作系統(tǒng)內(nèi)核傳遞硬件參數(shù)、初始化硬件設(shè)備以及建立內(nèi)存的空間映射圖等。尤其是,BootLoader向操作系統(tǒng)內(nèi)核傳遞硬件參數(shù)的數(shù)量,決定了嵌入式設(shè)備的啟動(dòng)速度。BootLoader向操作系統(tǒng)內(nèi)核傳遞硬件參數(shù)的數(shù)量越多,操作系統(tǒng)和其他應(yīng)用程序可以直接使用的硬件參數(shù)的數(shù)量也越多,嵌入式設(shè)備的啟動(dòng)速度就越快。

在相關(guān)的基于BootLoader向內(nèi)核傳遞硬件參數(shù)的機(jī)制中,BootLoader可以將需要傳遞的硬件參數(shù)保存在一段固定的物理內(nèi)存中,并可以將該段物理內(nèi)存的起始物理地址和長度發(fā)送給操作系統(tǒng)。操作系統(tǒng)可以基于接收到的該起始物理地址和長度,查找該段物理內(nèi)存,并且使用該物理內(nèi)存中儲(chǔ)存的硬件參數(shù),執(zhí)行系統(tǒng)啟動(dòng)。

在實(shí)現(xiàn)時(shí),如圖1所示,BootLoader可以申請一段固定長度物理內(nèi)存,用于儲(chǔ)存需要傳遞的硬件參數(shù)。BootLoader將需要傳遞的內(nèi)存儲(chǔ)存在該物理內(nèi)存中,并可以計(jì)算該硬件參數(shù)的CRC校驗(yàn)值,并將該CRC校驗(yàn)值預(yù)存在該物理內(nèi)存中。當(dāng)將該硬件參數(shù)儲(chǔ)存后,BootLoader可以將該物理內(nèi)存的起始物理地址和長度發(fā)送給操作系統(tǒng)。操作系統(tǒng)在接收到該起始物理地址和長度后,可以查找與之對應(yīng)的物理內(nèi)存,并可以基于與預(yù)存在該物理內(nèi)存中的CRC校驗(yàn)值對應(yīng)的算法,計(jì)算物理內(nèi)存中保存的硬件參數(shù)的CRC值。操作系統(tǒng)可以比較計(jì)算出的CRC校驗(yàn)值和預(yù)存的CRC校驗(yàn)值,當(dāng)兩個(gè)CRC值一致時(shí),操作系統(tǒng)可以確定該硬件參數(shù)通過了CRC校驗(yàn)。在通過CRC校驗(yàn)之后,操作系統(tǒng)可以讀取該物理內(nèi)存中儲(chǔ)存的該硬件參數(shù),執(zhí)行系統(tǒng)啟動(dòng)操作。

然而,一方面,由于BootLoader是將需要傳遞的硬件參數(shù)儲(chǔ)存在固定長度的物理內(nèi)存中,由于該物理內(nèi)存的長度固定,所以BootLoader在該物理內(nèi)存中儲(chǔ)存的硬件參數(shù)的數(shù)量受到了限制,進(jìn)而影響了BootLoader向操作系統(tǒng)內(nèi)核傳遞硬件參數(shù)的數(shù)量,降低了嵌入式設(shè)備的啟動(dòng)速率。

另一方面,由于在操作系統(tǒng)啟動(dòng)之后,該段物理內(nèi)存的硬件參數(shù)將會(huì)被其他內(nèi)容覆蓋。如果在操作系統(tǒng)運(yùn)行階段,需要多次使用上述硬件參數(shù)時(shí),操作系統(tǒng)只能通過頻繁地訪問硬件芯片,讀取該硬件參數(shù)。由于操作系統(tǒng)需要頻繁地訪問上述嵌入式設(shè)備中的硬件芯片,因此降低了該嵌入式設(shè)備的運(yùn)行速率。

因此,基于上述兩方面原因,使用基于BootLoader向內(nèi)核傳遞硬件參數(shù)的相關(guān)技術(shù),會(huì)降低嵌入式設(shè)備的啟動(dòng)和運(yùn)行速率。

本發(fā)明實(shí)施例提出一種新的基于BootLoader向內(nèi)核傳參數(shù)的方法。通過對基于BootLoader傳參數(shù)機(jī)制的改進(jìn),BootLoader可以將需要傳遞的硬件參數(shù)儲(chǔ)存在指定物理內(nèi)存中,并可以將所述物理內(nèi)存的地址信息發(fā)送給操作系統(tǒng),該物理內(nèi)存的長度不超過預(yù)設(shè)的長度閾值所,并且該長度閾值表征單次傳遞的硬件參數(shù)大小的最大值。操作系統(tǒng)可以基于接收到的所述地址信息,將所述物理內(nèi)存限制為非可占用內(nèi)存,并且可以讀取所述物理內(nèi)存中儲(chǔ)存的所述硬件參數(shù)執(zhí)行啟動(dòng),并建立所述物理內(nèi)存的物理地址與操作系統(tǒng)邏輯地址空間中的邏輯地址的映射關(guān)系。

一方面,在操作系統(tǒng)啟動(dòng)前,由于物理內(nèi)存的長度由傳統(tǒng)的固定長度,改變?yōu)殚L度不超過預(yù)設(shè)的長度閾值,長度閾值表征單次傳遞的硬件參數(shù)數(shù)量的最大值,因此可以有效地?cái)U(kuò)大傳遞硬件參數(shù)的數(shù)量,提高操作系統(tǒng)的啟動(dòng)速率。

另一方面,由于操作系統(tǒng)將該物理內(nèi)存限制為非可占用內(nèi)存,當(dāng)操作系統(tǒng)啟動(dòng)后,該物理內(nèi)存不會(huì)被占用,物理內(nèi)存中儲(chǔ)存的硬件參數(shù)得以維護(hù)。當(dāng)操作系統(tǒng)需要多次使用該硬件參數(shù)時(shí),可以通過該物理內(nèi)存獲得,而不需要頻繁地從硬件中讀取。因此,提高了嵌入式設(shè)備的運(yùn)行速率。

基于上述兩方面的原因,使用本發(fā)明實(shí)施例提供的方法可以提高嵌入式設(shè)備啟動(dòng)和運(yùn)行的速率。

參見圖2,圖2是本申請一示例性實(shí)施例示出的一種基于BootLoader向內(nèi)核傳參數(shù)的方法的流程圖,該方法應(yīng)用于嵌入式設(shè)備,包括以下步驟:

步驟201:BootLoader將需要傳遞的硬件參數(shù)儲(chǔ)存在指定物理內(nèi)存中,并將所述物理內(nèi)存的地址信息發(fā)送給操作系統(tǒng);其中,所述物理內(nèi)存的長度不超過預(yù)設(shè)的長度閾值,所述長度閾值表征單次傳遞的硬件參數(shù)數(shù)量的最大值。

在嵌入式設(shè)備中,BootLoader是操作系統(tǒng)啟動(dòng)前運(yùn)行的一段引導(dǎo)程序,主要用于向操作系統(tǒng)內(nèi)核傳遞硬件參數(shù),初始化硬件設(shè)備以及建立內(nèi)存的空間映射等。

在相關(guān)的基于BootLoader向內(nèi)核傳參數(shù)的機(jī)制中,嵌入式設(shè)備啟動(dòng)后,在操作系統(tǒng)初始化階段,BootLoader可以向操作系統(tǒng)內(nèi)核傳遞硬件參數(shù)。在實(shí)現(xiàn)時(shí),BootLoader可以將需要傳遞的硬件參數(shù)儲(chǔ)存在一段固定長度的物理內(nèi)存中,并將該物理內(nèi)存的地址信息傳遞給操作系統(tǒng)。操作系統(tǒng)基于接收到的該地址信息,獲取該物理內(nèi)存中儲(chǔ)存的硬件參數(shù),執(zhí)行系統(tǒng)啟動(dòng)。

由于上述儲(chǔ)存硬件參數(shù)的物理內(nèi)存的長度固定,因此限制了BootLoader向操作系統(tǒng)內(nèi)核傳遞硬件參數(shù)的數(shù)量,降低了嵌入式設(shè)備的啟動(dòng)速率。

在本實(shí)施例中,BootLoader將需要傳遞的硬件參數(shù)儲(chǔ)存在一段物理內(nèi)存中,該物理內(nèi)存的長度不超過預(yù)設(shè)的長度閾值,該長度閾值表征單次傳遞的硬件參數(shù)數(shù)量的最大值。由于在本實(shí)施例中,預(yù)設(shè)的長度閾值大于上述的固定長度,所以BootLoader在申請物理內(nèi)存時(shí),可以依據(jù)所傳遞硬件參數(shù)數(shù)量的多少來確定所要申請的物理內(nèi)存的長度。由于儲(chǔ)存硬件參數(shù)的物理內(nèi)存的長度由固定長度變?yōu)椴怀^預(yù)設(shè)的長度閾值,在一定程度上,增大了該物理內(nèi)存的長度,也擴(kuò)大了BootLoader向操作系統(tǒng)內(nèi)核傳遞硬件參數(shù)的數(shù)量,提高了嵌入式設(shè)備的啟動(dòng)速率。

在實(shí)現(xiàn)時(shí),BootLoader可以根據(jù)需要傳遞的硬件參數(shù)數(shù)量,申請一段物理內(nèi)存,該物理內(nèi)存的長度不超過預(yù)設(shè)的長度閾值。BootLoader可以計(jì)算需要傳遞的硬件參數(shù)的CRC校驗(yàn)值,并可以將該計(jì)算出的CRC校驗(yàn)值預(yù)存在該物理內(nèi)存的起始前4個(gè)字節(jié)中,并將該硬件參數(shù)儲(chǔ)存在該物理內(nèi)存中。BootLoader將需要傳遞的硬件參數(shù)的CRC校驗(yàn)值預(yù)存在該物理內(nèi)存的目的,是為了操作系統(tǒng)可以進(jìn)行硬件參數(shù)的CRC校驗(yàn),保證傳遞的硬件參數(shù)的可靠性。

其中,BootLoader在計(jì)算硬件參數(shù)的CRC校驗(yàn)和操作系統(tǒng)計(jì)算從物理內(nèi)存中讀取的硬件參數(shù)的CRC校驗(yàn)值時(shí),所使用的算法相同。

在將需要傳遞的硬件參數(shù)以及CRC校驗(yàn)值預(yù)存在上述物理內(nèi)存之后,BootLoader可以將該物理內(nèi)存的地址信息發(fā)送給操作系統(tǒng)。

其中,所述地址信息包括物理內(nèi)存的起始物理地址、物理內(nèi)存的長度等,在此,不一一贅述。

步驟202:操作系統(tǒng)基于接收到的所述地址信息,將所述物理內(nèi)存限制為非可占用內(nèi)存。

步驟203:操作系統(tǒng)讀取所述物理內(nèi)存中儲(chǔ)存的所述硬件參數(shù)執(zhí)行啟動(dòng),并建立所述物理內(nèi)存的物理地址與操作系統(tǒng)邏輯地址空間中的邏輯地址的映射關(guān)系。

在相關(guān)的基于BootLoader向內(nèi)核傳參數(shù)的機(jī)制中,操作系統(tǒng)在接收到BootLoader傳遞的上述物理內(nèi)存的地址信息后,可以通過該地址信息,使用上述物理內(nèi)存中的硬件參數(shù)。但是,操作系統(tǒng)啟動(dòng)之后,該物理內(nèi)存中的硬件參數(shù)將會(huì)被其他內(nèi)容覆蓋,該硬件參數(shù)不能得以維護(hù)。如果操作系統(tǒng)需要多次使用該硬件參數(shù),操作系統(tǒng)只能頻繁地訪問嵌入式設(shè)備的硬件芯片,讀取該硬件參數(shù)。由于操作系統(tǒng)訪問硬件芯片過于頻繁,所以會(huì)降低該嵌入式設(shè)備的運(yùn)行速率。

而在本實(shí)施例中,操作系統(tǒng)在接收到BootLoader傳遞的上述物理內(nèi)存的地址信息后,可以基于該地址信息,將該物理內(nèi)存限制為非可占用內(nèi)存,使得該物理內(nèi)存中的硬件參數(shù)不會(huì)被其他內(nèi)容覆蓋。操作系統(tǒng)可以基于該物理地址信息讀取該物理內(nèi)存中的硬件參數(shù),執(zhí)行系統(tǒng)啟動(dòng)操作。在操作系統(tǒng)啟動(dòng)后,如果該操作系統(tǒng)需要使用該硬件參數(shù),操作系統(tǒng)可以從這段物理內(nèi)存中讀取該硬件參數(shù),而不需要頻繁地訪問嵌入式設(shè)備的硬件芯片,讀取該硬件參數(shù)。因此,提高嵌入式設(shè)備的運(yùn)行速率。

在實(shí)現(xiàn)時(shí),操作系統(tǒng)可以接收BootLoader傳遞的上述物理內(nèi)存的地址信息,并且可以基于該地址信息,將該段物理內(nèi)存限制為非可占用內(nèi)存。

操作系統(tǒng)可以將該物理內(nèi)存的地址信息從可占用內(nèi)存白名單中刪除。在操作系統(tǒng)運(yùn)行的過程中,如果操作系統(tǒng)需要申請物理內(nèi)存進(jìn)行其他工作,只會(huì)依據(jù)可占用內(nèi)存白名單中記錄的物理內(nèi)存進(jìn)行申請,而不會(huì)占用上述儲(chǔ)存有硬件參數(shù)的物理內(nèi)存,因此,上述物理內(nèi)存中的硬件參數(shù)不會(huì)被其他內(nèi)容覆蓋,硬件參數(shù)得以維護(hù)。

操作系統(tǒng)可以基于該物理內(nèi)存的物理地址信息,讀取該物理內(nèi)存中儲(chǔ)存的硬件參數(shù),執(zhí)行系統(tǒng)啟動(dòng)操作。

在操作系統(tǒng)啟動(dòng)后,為了可以多次訪問該物理內(nèi)存中的硬件參數(shù),在對該物理內(nèi)存進(jìn)行限制之后,操作系統(tǒng)可以建立該物理內(nèi)存的內(nèi)存映射。

操作系統(tǒng)可以建立該物理內(nèi)存的物理地址和操作系統(tǒng)邏輯地址空間中的邏輯地址的映射關(guān)系。建立映射關(guān)系后,在操作系統(tǒng)啟動(dòng)后,如果操作系統(tǒng)需要使用上述硬件參數(shù),操作系統(tǒng)可以基于該邏輯地址和映射關(guān)系,獲取該邏輯地址對應(yīng)的物理地址,并可以基于該物理地址找到該物理內(nèi)存,獲得該物理內(nèi)存中儲(chǔ)存的硬件參數(shù)。

為了確定BootLoader傳遞的硬件參數(shù)是否正確,操作系統(tǒng)可以對該內(nèi)存中的硬件參數(shù)進(jìn)行CRC校驗(yàn)。在實(shí)現(xiàn)時(shí),操作系統(tǒng)可以基于與預(yù)存的CRC校驗(yàn)值對應(yīng)的算法,計(jì)算該物理內(nèi)存的CRC校驗(yàn)值,并且可以比較計(jì)算出的CRC校驗(yàn)值與預(yù)存在該物理內(nèi)存起始前4個(gè)字節(jié)中的CRC校驗(yàn)值是否一致,當(dāng)兩個(gè)CRC校驗(yàn)值一致時(shí),硬件參數(shù)的CRC校驗(yàn)通過。

在通過硬件參數(shù)的CRC校驗(yàn)后,操作系統(tǒng)在運(yùn)行期間,可以多次使用該物理內(nèi)存的硬件參數(shù),而不需要多次從硬件中獲取,提高了該嵌入式設(shè)備的運(yùn)行速度。

其中,上述可占用內(nèi)存白名單,包括可占用物理內(nèi)存的地址信息。上述地址信息包括物理內(nèi)存的起始物理地址和物理內(nèi)存的長度等,在此,不一一贅述。上述操作系統(tǒng)建立該物理內(nèi)存的內(nèi)存映射和對硬件參數(shù)進(jìn)行CRC校驗(yàn),不受時(shí)序限制。

本發(fā)明實(shí)施例提出一種新的基于BootLoader向內(nèi)核傳參數(shù)的方法。通過對基于BootLoader向內(nèi)核傳參數(shù)機(jī)制的改進(jìn),BootLoader可以將需要傳遞的硬件參數(shù)儲(chǔ)存在指定物理內(nèi)存中,并可以在該物理內(nèi)存中預(yù)存該參數(shù)的CRC校驗(yàn)值。該物理內(nèi)存的長度不超過預(yù)設(shè)的長度閾值,并且該長度閾值表征單次傳遞的硬件參數(shù)大小的最大值。BootLoader可以將所述物理內(nèi)存的起始物理地址和長度發(fā)送給操作系統(tǒng)。操作系統(tǒng)可以基于接收到的該起始物理地址和長度,將所述物理內(nèi)存限制為非可占用內(nèi)存,并可以建立操作系統(tǒng)建立所述物理內(nèi)存的物理地址與操作系統(tǒng)邏輯地址空間中的邏輯地址的映射關(guān)系,并可以基于該預(yù)存的CRC校驗(yàn)值,對該硬件參數(shù)進(jìn)行CRC校驗(yàn)。在通過該硬件參數(shù)的CRC校驗(yàn)之后,在操作系統(tǒng)運(yùn)行階段,操作系統(tǒng)可以基于所述映射關(guān)系和所述邏輯地址,多次讀取所述物理內(nèi)存中儲(chǔ)存的參數(shù)。

一方面,在操作系統(tǒng)啟動(dòng)前,由于物理內(nèi)存的長度由傳統(tǒng)的固定長度,改變?yōu)殚L度不超過預(yù)設(shè)的長度閾值,長度閾值表征單次傳遞的硬件參數(shù)數(shù)量的最大值,因此可以有效地?cái)U(kuò)大傳遞硬件參數(shù)的數(shù)量,提高操作系統(tǒng)的啟動(dòng)速率。

另一方面,由于操作系統(tǒng)將該物理內(nèi)存限制為非可占用內(nèi)存,當(dāng)操作系統(tǒng)啟動(dòng)后,該物理內(nèi)存不會(huì)被占用,物理內(nèi)存中儲(chǔ)存的硬件參數(shù)得以維護(hù)。當(dāng)操作系統(tǒng)需要多次使用該硬件參數(shù)時(shí),可以通過該物理內(nèi)存獲得,而不需要頻繁地從硬件中讀取。因此,提高了嵌入式設(shè)備的運(yùn)行速率。

此外,操作系統(tǒng)對參數(shù)進(jìn)行CRC校驗(yàn)可以確定傳遞的參數(shù)是否正確,增強(qiáng)了BootLoader向操作系統(tǒng)內(nèi)核傳參數(shù)的可靠性。

基于上述因素,使用本發(fā)明實(shí)施例提供的方法可以提高嵌入式設(shè)備啟動(dòng)和運(yùn)行的速率。

參見圖3,圖3是本申請一示例性實(shí)施例示出的另一種基于BootLoader向內(nèi)核傳參數(shù)的方法的流程圖,所述方法應(yīng)用于嵌入式設(shè)備,包括以下步驟:

步驟301:BootLoader將需要傳遞的硬件參數(shù)儲(chǔ)存在一段物理內(nèi)存中,該物理內(nèi)存的長度不超過預(yù)設(shè)的長度閾值。

步驟302:BootLoader計(jì)算該硬件參數(shù)的CRC值,并將該CRC值預(yù)存在該物理內(nèi)存的起始前4個(gè)字節(jié)中。

步驟303:BootLoader將物理內(nèi)存的起始物理地址和長度發(fā)送給操作系統(tǒng)。

在嵌入式設(shè)備中,BootLoader是操作系統(tǒng)啟動(dòng)前運(yùn)行的一段引導(dǎo)程序,主要用于向操作系統(tǒng)內(nèi)核傳遞硬件參數(shù),初始化硬件設(shè)備以及建立內(nèi)存的空間映射等。

在相關(guān)的基于BootLoader向內(nèi)核傳參數(shù)的機(jī)制中,嵌入式設(shè)備啟動(dòng)后,在操作系統(tǒng)初始化階段,BootLoader可以向操作系統(tǒng)內(nèi)核傳遞硬件參數(shù)。在實(shí)現(xiàn)時(shí),BootLoader可以將需要傳遞的硬件參數(shù)儲(chǔ)存在一段固定長度的物理內(nèi)存中,并將該物理內(nèi)存的起始物理地址和長度傳遞給操作系統(tǒng)。操作系統(tǒng)基于接收到的該起始物理地址和長度,獲取該物理內(nèi)存中儲(chǔ)存的硬件參數(shù),執(zhí)行系統(tǒng)啟動(dòng)。

由于上述儲(chǔ)存硬件參數(shù)的物理內(nèi)存的長度固定,因此限制了BootLoader向操作系統(tǒng)內(nèi)核傳遞硬件參數(shù)的數(shù)量,降低了嵌入式設(shè)備的啟動(dòng)速率。

在本實(shí)施例中,BootLoader將需要傳遞的硬件參數(shù)儲(chǔ)存在一段物理內(nèi)存中,該物理內(nèi)存的長度不超過預(yù)設(shè)的長度閾值,該長度閾值表征單次傳遞的硬件參數(shù)數(shù)量的最大值。由于在本實(shí)施例中,預(yù)設(shè)的長度閾值大于上述的固定長度,所以BootLoader在申請物理內(nèi)存時(shí),可以依據(jù)所傳遞硬件參數(shù)數(shù)量的多少來確定所要申請的物理內(nèi)存的長度。由于儲(chǔ)存硬件參數(shù)的物理內(nèi)存的長度由固定長度變?yōu)椴怀^預(yù)設(shè)的長度閾值,在一定程度上,增大了該物理內(nèi)存的長度,也擴(kuò)大了BootLoader向操作系統(tǒng)內(nèi)核傳遞硬件參數(shù)的數(shù)量,提高了嵌入式設(shè)備的啟動(dòng)速率。

在實(shí)現(xiàn)時(shí),BootLoader可以根據(jù)需要傳遞的硬件參數(shù)數(shù)量,申請一段物理內(nèi)存,該物理內(nèi)存的長度不超過預(yù)設(shè)的長度閾值。BootLoader可以計(jì)算需要傳遞的硬件參數(shù)的CRC校驗(yàn)值,并可以將該計(jì)算出的CRC校驗(yàn)值預(yù)存在該物理內(nèi)存的起始前4個(gè)字節(jié)中,并將該硬件參數(shù)儲(chǔ)存在該物理內(nèi)存中。BootLoader將需要傳遞的硬件參數(shù)的CRC校驗(yàn)值預(yù)存在該物理內(nèi)存的目的,是為了操作系統(tǒng)可以進(jìn)行硬件參數(shù)的CRC校驗(yàn),保證傳遞的硬件參數(shù)的可靠性。

其中,BootLoader在計(jì)算硬件參數(shù)的CRC校驗(yàn)和操作系統(tǒng)計(jì)算從物理內(nèi)存中讀取的硬件參數(shù)的CRC校驗(yàn)值時(shí),所使用的算法相同。

在將需要傳遞的硬件參數(shù)以及CRC校驗(yàn)值預(yù)存在上述物理內(nèi)存之后,BootLoader可以將該物理內(nèi)存的起始物理地址和該物理內(nèi)存的長度發(fā)送給操作系統(tǒng)。

步驟304.操作系統(tǒng)基于接收到的起始物理地址和長度,將該物理內(nèi)存限制為非可占用內(nèi)存。

在相關(guān)的基于BootLoader向內(nèi)核傳參數(shù)的機(jī)制中,操作系統(tǒng)在接收到BootLoader傳遞的上述物理內(nèi)存的起始物理地址和長度后,可以通過該起始物理地址和長度,使用上述物理內(nèi)存中的硬件參數(shù)。但是,操作系統(tǒng)啟動(dòng)之后,該物理內(nèi)存中的硬件參數(shù)將會(huì)被其他內(nèi)容覆蓋,該硬件參數(shù)不能得以維護(hù)。如果操作系統(tǒng)需要多次使用該硬件參數(shù),操作系統(tǒng)只能頻繁地訪問嵌入式設(shè)備的硬件芯片,讀取該硬件參數(shù)。由于操作系統(tǒng)訪問硬件芯片過于頻繁,所以會(huì)降低該嵌入式設(shè)備的運(yùn)行速率。

而在本實(shí)施例中,操作系統(tǒng)在接收到BootLoader傳遞的上述物理內(nèi)存的起始物理地址和長度后,可以基于該起始物理地址和長度,將該物理內(nèi)存限制為非可占用內(nèi)存,使得該物理內(nèi)存中的硬件參數(shù)不會(huì)被其他內(nèi)容覆蓋。在操作系統(tǒng)啟動(dòng)后,如果該操作系統(tǒng)需要使用該硬件參數(shù),操作系統(tǒng)可以從這段物理內(nèi)存中讀取該硬件參數(shù),而不需要通過頻繁地訪問嵌入式設(shè)備的硬件芯片,讀取該硬件參數(shù)。因此,可以提高嵌入式設(shè)備的運(yùn)行速率。

在實(shí)現(xiàn)時(shí),操作系統(tǒng)可以接收BootLoader傳遞的上述物理內(nèi)存的起始物理地址和長度,并且可以基于該起始物理地址和長度,將該段物理內(nèi)存限制為非可占用內(nèi)存。

操作系統(tǒng)可以將該物理內(nèi)存的起始物理地址和長度從可占用內(nèi)存白名單中刪除。在操作系統(tǒng)運(yùn)行的過程中,如果操作系統(tǒng)需要申請物理內(nèi)存進(jìn)行其他工作,只會(huì)依據(jù)可占用內(nèi)存白名單中記錄的物理內(nèi)存進(jìn)行申請,而不會(huì)占用上述儲(chǔ)存有硬件參數(shù)的物理內(nèi)存,因此,上述物理內(nèi)存中的硬件參數(shù)不會(huì)被其他內(nèi)容覆蓋,硬件參數(shù)得以維護(hù)。

操作系統(tǒng)可以基于該物理地址信息讀取該物理內(nèi)存中的硬件參數(shù),執(zhí)行系統(tǒng)啟動(dòng)操作。

其中,上述可占用內(nèi)存白名單,包括可占用物理內(nèi)存的起始物理地址和長度。

步驟305:操作系統(tǒng)建立該物理內(nèi)存的物理地址與操作系統(tǒng)邏輯地址空間中的邏輯地址的映射關(guān)系

在本實(shí)施例中,操作系統(tǒng)可以建立該物理內(nèi)存的物理地址和操作系統(tǒng)邏輯地址空間中的邏輯地址的映射關(guān)系。建立映射關(guān)系后,在操作系統(tǒng)啟動(dòng)后,如果操作系統(tǒng)需要使用上述硬件參數(shù),操作系統(tǒng)可以基于該邏輯地址和映射關(guān)系,獲取該邏輯地址對應(yīng)的物理地址,并可以基于該物理地址找到該物理內(nèi)存,獲得該物理內(nèi)存中儲(chǔ)存的硬件參數(shù)。

步驟306.操作系統(tǒng)判斷硬件參數(shù)的是否通過CRC校驗(yàn)。

步驟307.操作系統(tǒng)使用該硬件參數(shù)。

步驟308.操作系統(tǒng)結(jié)束該流程。

為了確定BootLoader傳遞的硬件參數(shù)是否正確,操作系統(tǒng)可以對該內(nèi)存中的硬件參數(shù)進(jìn)行CRC校驗(yàn)。在實(shí)現(xiàn)時(shí),操作系統(tǒng)可以基于與預(yù)存的CRC校驗(yàn)值對應(yīng)的算法,計(jì)算該物理內(nèi)存的CRC校驗(yàn)值,并且可以比較計(jì)算出的CRC校驗(yàn)值與預(yù)存在該物理內(nèi)存起始前4個(gè)字節(jié)中的CRC校驗(yàn)值是否一致,當(dāng)兩個(gè)CRC校驗(yàn)值一致時(shí),硬件參數(shù)的CRC校驗(yàn)通過。

在通過硬件參數(shù)的CRC校驗(yàn)后,執(zhí)行步驟307,操作系統(tǒng)在運(yùn)行期間,可以多次使用該物理內(nèi)存的硬件參數(shù),而不需要多次從硬件中獲取,提高了該嵌入式設(shè)備的運(yùn)行速度。如果沒有通過硬件參數(shù)的CRC校驗(yàn),執(zhí)行步驟308,操作系統(tǒng)確定該傳遞的硬件參數(shù)不正確,并結(jié)束該流程。

上述操作系統(tǒng)建立該物理內(nèi)存的內(nèi)存映射和對硬件參數(shù)進(jìn)行CRC校驗(yàn),不受時(shí)序限制。

本發(fā)明實(shí)施例提出一種新的基于BootLoader向內(nèi)核傳參數(shù)的方法。通過對基于BootLoader向內(nèi)核傳參數(shù)機(jī)制的改進(jìn),BootLoader可以將需要傳遞的硬件參數(shù)儲(chǔ)存在指定物理內(nèi)存中,并可以在該物理內(nèi)存中預(yù)存該參數(shù)的CRC校驗(yàn)值。該物理內(nèi)存的長度不超過預(yù)設(shè)的長度閾值,并且該長度閾值表征單次傳遞的硬件參數(shù)大小的最大值。BootLoader可以將所述物理內(nèi)存的起始物理地址和長度發(fā)送給操作系統(tǒng)。操作系統(tǒng)可以基于接收到的該起始物理地址和長度,將所述物理內(nèi)存限制為非可占用內(nèi)存,并可以建立操作系統(tǒng)建立所述物理內(nèi)存的物理地址與操作系統(tǒng)邏輯地址空間中的邏輯地址的映射關(guān)系,并可以基于該預(yù)存的CRC校驗(yàn)值,對該硬件參數(shù)進(jìn)行CRC校驗(yàn)。在通過該硬件參數(shù)的CRC校驗(yàn)之后,在操作系統(tǒng)運(yùn)行階段,操作系統(tǒng)可以基于所述映射關(guān)系和所述邏輯地址,多次讀取所述物理內(nèi)存中儲(chǔ)存的參數(shù)。

一方面,在操作系統(tǒng)啟動(dòng)前,由于物理內(nèi)存的長度由傳統(tǒng)的固定長度,改變?yōu)殚L度不超過預(yù)設(shè)的長度閾值,長度閾值表征單次傳遞的硬件參數(shù)數(shù)量的最大值,因此可以有效地?cái)U(kuò)大傳遞硬件參數(shù)的數(shù)量,提高操作系統(tǒng)的啟動(dòng)速率。

另一方面,由于操作系統(tǒng)將該物理內(nèi)存限制為非可占用內(nèi)存,當(dāng)操作系統(tǒng)啟動(dòng)后,該物理內(nèi)存不會(huì)被占用,物理內(nèi)存中儲(chǔ)存的硬件參數(shù)得以維護(hù)。當(dāng)操作系統(tǒng)需要多次使用該硬件參數(shù)時(shí),可以通過該物理內(nèi)存獲得,而不需要頻繁地從硬件中讀取。因此,提高了嵌入式設(shè)備的運(yùn)行速率。

此外,操作系統(tǒng)對參數(shù)進(jìn)行CRC校驗(yàn)可以確定傳遞的參數(shù)是否正確,增強(qiáng)了BootLoader向操作系統(tǒng)內(nèi)核傳參數(shù)的可靠性。

基于上述因素,使用本發(fā)明實(shí)施例提供的方法可以提高嵌入式設(shè)備啟動(dòng)和運(yùn)行的速率。

本申請基于BootLoader向內(nèi)核傳參數(shù)的裝置的實(shí)施例可以應(yīng)用在嵌入式設(shè)備上。裝置實(shí)施例可以通過軟件實(shí)現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為一個(gè)邏輯意義上的裝置,是通過其所在嵌入式設(shè)備的處理器將非易失性存儲(chǔ)器中對應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。從硬件層面而言,如圖4所示,為本申請基于BootLoader向內(nèi)核傳參數(shù)的裝置所在嵌入式設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖4所示的處理器、內(nèi)存、網(wǎng)絡(luò)接口、以及非易失性存儲(chǔ)器之外,實(shí)施例中裝置所在的嵌入式設(shè)備通常根據(jù)該基于BootLoader向內(nèi)核傳參數(shù)的裝置的實(shí)際功能,還可以包括其他硬件,對此不再贅述。

參見圖5,圖5是本申請一示例性實(shí)施例示出的一種基于BootLoader向內(nèi)核傳參數(shù)的裝置的框圖,所述裝置應(yīng)用于嵌入式設(shè)備,所述裝置包括:發(fā)送單元510、限制單元520和創(chuàng)建單元530。

其中,發(fā)送單元510,用于BootLoader將需要傳遞的硬件參數(shù)儲(chǔ)存在指定物理內(nèi)存中,并將所述物理內(nèi)存的地址信息發(fā)送給操作系統(tǒng);其中,所述物理內(nèi)存的長度不超過預(yù)設(shè)的長度閾值,所述長度閾值表征單次傳遞的硬件參數(shù)數(shù)量的最大值;

限制單元520,用于操作系統(tǒng)基于接收到的所述地址信息,將所述物理內(nèi)存限制為非可占用內(nèi)存;

創(chuàng)建單元530,用于操作系統(tǒng)讀取所述物理內(nèi)存中儲(chǔ)存的所述硬件參數(shù)執(zhí)行啟動(dòng),并建立所述物理內(nèi)存的物理地址與操作系統(tǒng)邏輯地址空間中的邏輯地址的映射關(guān)系。

在一個(gè)可選的實(shí)現(xiàn)方式中:

所述裝置還包括(圖5中未示出):確定單元,用于當(dāng)所述操作系統(tǒng)啟動(dòng)后,查找所述映射關(guān)系,確定與所述邏輯地址對應(yīng)的所述物理地址;讀取單元,用于操作系統(tǒng)基于所述物理地址,從對應(yīng)的所述物理內(nèi)存中讀取所述硬件參數(shù)。

在另一個(gè)可選的實(shí)現(xiàn)方式中:

所述限制單元520還包括:刪除子單元,用于操作系統(tǒng)基于所述地址信息,在可占用內(nèi)存白名單中刪除所述物理內(nèi)存的地址信息,其中,所述可占用內(nèi)存白名單包括可占用物理內(nèi)存的地址信息。

在另一個(gè)可選的實(shí)現(xiàn)方式中:

所述裝置還包括(圖5中未示出):儲(chǔ)存單元,用于BootLoader將所述物理內(nèi)存的地址信息發(fā)送給操作系統(tǒng)之前,將預(yù)先計(jì)算出的針對所述硬件參數(shù)的CRC校驗(yàn)值預(yù)存在所述物理內(nèi)存中的指定字節(jié);校驗(yàn)單元,用于操作系統(tǒng)基于所述物理地址,讀取所述物理內(nèi)存中儲(chǔ)存的所述CRC校驗(yàn)值,并基于所述CRC校驗(yàn)值,針對從所述物理內(nèi)存中讀取到的硬件參數(shù)進(jìn)行CRC校驗(yàn)。

在另一個(gè)可選的實(shí)現(xiàn)方式中:

所述校驗(yàn)單元包括:計(jì)算子單元,用于操作系統(tǒng)計(jì)算所述硬件參數(shù)的CRC校驗(yàn)值;比較子單元,用于比較所述計(jì)算出的CRC校驗(yàn)值與所述物理內(nèi)存中儲(chǔ)存的CRC校驗(yàn)值是否一致;當(dāng)所述計(jì)算出的CRC校驗(yàn)值與所述物理內(nèi)存中儲(chǔ)存的CRC校驗(yàn)值一致時(shí),確定所述CRC校驗(yàn)通過。

上述裝置中各個(gè)單元的功能和作用的實(shí)現(xiàn)過程具體詳見上述方法中對應(yīng)步驟的實(shí)現(xiàn)過程,在此不再贅述。

對于裝置實(shí)施例而言,由于其基本對應(yīng)于方法實(shí)施例,所以相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本申請方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。

以上所述僅為本申請的較佳實(shí)施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請保護(hù)的范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1