本技術(shù)涉及嵌入式系統(tǒng),特別是指一種嵌入式系統(tǒng)的啟動方法、裝置、設(shè)備及介質(zhì)。
背景技術(shù):
1、在嵌入式系統(tǒng)領(lǐng)域,操作系統(tǒng)(operating?system,os)與硬件平臺之間的交互主要依賴于板級支持包(board?support?package,bsp),它包含了針對特定硬件平臺的初始化代碼和設(shè)備驅(qū)動程序。傳統(tǒng)的bsp與os的集成方式是將bsp源碼編譯成靜態(tài)庫文件(通常為.a文件),然后與os源碼進行鏈接,生成可執(zhí)行的os二進制代碼,或者直接將bsp源碼與os源碼一同編譯。
2、這一方法實現(xiàn)了bsp與os的緊密集成,但同時也帶來了以下問題:
3、第一、由于bsp靜態(tài)鏈接至os內(nèi)核,導(dǎo)致兩者高度耦合。這表明任何bsp的修改都將觸發(fā)整個os的重新編譯,即使修改僅涉及bsp局部,也會影響全局,增加了編譯時間,降低了開發(fā)效率和靈活性。
4、第二、當os需要適配多個不同廠商的bsp時,每個bsp的更新都會導(dǎo)致整個os的重新編譯和測試,顯著增加了維護工作的復(fù)雜度和成本。
5、因此,有待提供一種bsp與os松散耦合度下的嵌入式系統(tǒng)的啟動方法,以解決因bsp與os集成導(dǎo)致的上述技術(shù)問題。
技術(shù)實現(xiàn)思路
1、鑒于現(xiàn)有技術(shù)的以上問題,本技術(shù)提供一種嵌入式系統(tǒng)的啟動方法、裝置、設(shè)備及介質(zhì),通過驅(qū)動橋的方式,實現(xiàn)了bsp與os的有效分離,降低了bsp與os之間的依賴度。
2、為達到上述目的,本技術(shù)第一方面提供了一種嵌入式系統(tǒng)的啟動方法,包括:
3、所述嵌入式系統(tǒng)啟動時,跳轉(zhuǎn)至所述bsp驅(qū)動可執(zhí)行文件的bsp入口地址,執(zhí)行bsp初始化,獲取驅(qū)動列表,所述驅(qū)動列表記錄有各驅(qū)動的序號和對應(yīng)的驅(qū)動函數(shù);
4、將所述驅(qū)動列表的首地址傳遞至所述os可執(zhí)行文件的os入口地址,并執(zhí)行os初始化;
5、所述os從所述os入口地址接收所述驅(qū)動列表的首地址,根據(jù)預(yù)先約定的驅(qū)動序號,調(diào)用所述驅(qū)動列表中的相應(yīng)序號對應(yīng)的驅(qū)動函數(shù)。
6、如此,在本技術(shù)中,bsp不再直接編譯進os中,而是通過一個驅(qū)動列表,驅(qū)動列表首地址作為橋梁,連接bsp和os,使得bsp與os之間不再需要直接依賴對方的代碼進行編譯和鏈接,實現(xiàn)了兩者的解耦,也就是說,通過驅(qū)動橋的方式實現(xiàn)了bsp與os的有效分離,降低了bsp與os之間的依賴度。由于bsp與os之間的獨立性增強,開發(fā)人員可以獨立地對bsp和os進行開發(fā)和測試,無需每次修改bsp后都重新編譯整個系統(tǒng),降低了調(diào)試成本,提高了開發(fā)效率和靈活性。另一方面,當os需要適配多個不同廠商的bsp時,由于bsp與os的分離,bsp的更新不會導(dǎo)致os的重新編譯與測試,降低了維護工作的復(fù)雜度和成本。
7、作為第一方面的一種可能的實現(xiàn)方式,所述bsp驅(qū)動可執(zhí)行文件中預(yù)先編譯有所述驅(qū)動列表;和/或,
8、所述os可執(zhí)行文件中預(yù)先定義有全局指針變量以及調(diào)用驅(qū)動函數(shù)的預(yù)設(shè)參數(shù),其中,所述調(diào)用驅(qū)動函數(shù)的預(yù)設(shè)參數(shù)包括傳遞給驅(qū)動函數(shù)的參數(shù)和所述驅(qū)動函數(shù)返回的參數(shù)。
9、如此,通過預(yù)先編譯驅(qū)動列表,可以在嵌入式系統(tǒng)啟動時直接獲取,而不需要再進行額外的構(gòu)建驅(qū)動列表的過程。預(yù)先定義有全局指針變量使得os能夠快速定位驅(qū)動列表的首地址,避免了不必要的搜索過程。調(diào)用驅(qū)動函數(shù)的預(yù)設(shè)參數(shù)明確了驅(qū)動函數(shù)的輸入和輸出格式,有利于后續(xù)實現(xiàn)快速調(diào)用驅(qū)動函數(shù)。
10、作為第一方面的一種可能的實現(xiàn)方式,所述os從所述os入口地址接收所述驅(qū)動列表的首地址,根據(jù)預(yù)先約定的驅(qū)動序號,調(diào)用所述驅(qū)動列表中的相應(yīng)序號對應(yīng)的驅(qū)動函數(shù),包括:
11、所述os根據(jù)所述全局指針變量,從所述os入口地址接收所述驅(qū)動列表的首地址;
12、根據(jù)所要調(diào)用的驅(qū)動序號,確定對應(yīng)的驅(qū)動函數(shù);
13、將所述要傳遞給驅(qū)動函數(shù)的參數(shù),傳遞給所述驅(qū)動函數(shù),并接收所述驅(qū)動函數(shù)返回的參數(shù)。
14、如此,os能夠根據(jù)實際所需,靈活地調(diào)用所需的驅(qū)動函數(shù),而無需了解驅(qū)動的具體實現(xiàn)細節(jié),簡化了os調(diào)用驅(qū)動函數(shù)的過程。
15、作為第一方面的一種可能的實現(xiàn)方式,當啟用了mmu時,所述驅(qū)動函數(shù)地址為所述驅(qū)動函數(shù)的物理地址所映射的虛擬地址。
16、如此,當啟用mmu時,通過將所有bsp驅(qū)動中用到的地址(包括驅(qū)動函數(shù)地址及外設(shè)寄存器地址等)進行虛擬地址映射,可以確保bsp驅(qū)動能夠完整且正確地訪問這些硬件資源,從而發(fā)揮其全功能,也即,啟用mmu并合理映射地址是確保系統(tǒng)穩(wěn)定運行和高效管理資源的重要措施。
17、作為第一方面的一種可能的實現(xiàn)方式,所述執(zhí)行bsp初始化包括:從bsp入口地址運行該地址為起始地址存儲的bsp驅(qū)動可執(zhí)行文件;
18、所述執(zhí)行os初始化包括:從os入口地址運行該地址為起始地址存儲的os可執(zhí)行文件。
19、如此,通過將bsp和os分別存儲為獨立的可執(zhí)行文件(即二進制文件),并從各自的入口地址開始執(zhí)行,因此,可以獨立地更新和維護bsp與os。當需要升級或更換os時,只需修改os入口地址和相關(guān)的os可執(zhí)行文件,而無需對bsp進行重大更改;同樣,當硬件平臺發(fā)生變化時,也可以通過修改bsp入口地址和bsp驅(qū)動可執(zhí)行文件來適應(yīng)新的硬件環(huán)境。
20、為達到上述目的,本技術(shù)第二方面提供了一種嵌入式系統(tǒng)的啟動裝置,所述嵌入式系統(tǒng)在不同的地址固化有bsp驅(qū)動可執(zhí)行文件和os可執(zhí)行文件,包括:
21、第一執(zhí)行單元,用于所述嵌入式系統(tǒng)啟動時,跳轉(zhuǎn)至所述bsp驅(qū)動可執(zhí)行文件的bsp入口地址,執(zhí)行bsp初始化,獲取驅(qū)動列表,所述驅(qū)動列表記錄有各驅(qū)動的序號和對應(yīng)的驅(qū)動函數(shù);
22、第二執(zhí)行單元,用于將所述驅(qū)動列表的首地址傳遞至所述os可執(zhí)行文件的os入口地址,并執(zhí)行os初始化;
23、調(diào)用單元,用于所述os從所述os入口地址接收所述驅(qū)動列表的首地址,根據(jù)預(yù)先約定的驅(qū)動序號,調(diào)用所述驅(qū)動列表中的相應(yīng)序號對應(yīng)的驅(qū)動函數(shù)。
24、作為第二方面的一種可能的實現(xiàn)方式,所述bsp驅(qū)動可執(zhí)行文件中預(yù)先編譯有所述驅(qū)動列表;和/或,
25、所述os可執(zhí)行文件中預(yù)先定義有全局指針變量以及調(diào)用驅(qū)動函數(shù)的預(yù)設(shè)參數(shù),其中,所述調(diào)用驅(qū)動函數(shù)的預(yù)設(shè)參數(shù)包括傳遞給驅(qū)動函數(shù)的參數(shù)和所述驅(qū)動函數(shù)返回的參數(shù)。
26、作為第二方面的一種可能的實現(xiàn)方式,所述調(diào)用單元,用于:
27、所述os根據(jù)所述全局指針變量,從所述os入口地址接收所述驅(qū)動列表的首地址;
28、根據(jù)所要調(diào)用的驅(qū)動序號,確定對應(yīng)的驅(qū)動函數(shù);
29、將所述要傳遞給驅(qū)動函數(shù)的參數(shù),傳遞給所述驅(qū)動函數(shù),并接收所述驅(qū)動函數(shù)返回的參數(shù)。
30、為達到上述目的,本技術(shù)第三方面提供了一種計算設(shè)備,包括:
31、處理器,以及
32、存儲器,其上存儲有程序指令,所述程序指令當被所述處理器執(zhí)行時使得所述處理器執(zhí)行上述第一方面任一項所述的啟動方法。
33、為達到上述目的,本技術(shù)第四方面提供了一種計算機可讀存儲介質(zhì),其上存儲有程序指令,所述程序指令當被計算機執(zhí)行時使得所述計算機實現(xiàn)上述第一方面任一項所述的啟動方法。