本發(fā)明涉及計(jì)算機(jī)操作系統(tǒng)領(lǐng)域,具體地說(shuō)是一種U-Boot下基于鏈表的多設(shè)備快速啟動(dòng)系統(tǒng)及其方法。
背景技術(shù):
U-Boot,全稱(chēng) Universal Boot Loader,是基于GPL條款的開(kāi)放源碼項(xiàng)目,是GPL下資源代碼最完整的一個(gè)通用Boot Loader;U-Boot有引導(dǎo)啟動(dòng)和下載運(yùn)行兩種模式,并具有大型Boot Loader所應(yīng)該具備的所有功能;U-Boot支持的處理器架構(gòu)包括power PC、ARM、MIPs和X86等;U-Boot支持大量的外設(shè)驅(qū)動(dòng),支持多種不同的文件系統(tǒng)。
當(dāng)前使用U-Boot作為Boot Loader的系統(tǒng)中,由于U-Boot本身功能限制,無(wú)法像X86平臺(tái)BIOS的引導(dǎo)啟動(dòng)功能一樣,實(shí)現(xiàn)根據(jù)設(shè)置,按順序從多種介質(zhì)引導(dǎo)操作系統(tǒng)。因此使用U-Boot作為Boot-Loader的平臺(tái)中,對(duì)于引導(dǎo)設(shè)備有一定的限制,在實(shí)際使用過(guò)程中可用性和易用性較差。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對(duì)以上不足,提供一種U-Boot下基于鏈表的多設(shè)備快速啟動(dòng)系統(tǒng)及其方法,來(lái)解決使用U-Boot作為Boot-Loader的平臺(tái)中,對(duì)于引導(dǎo)設(shè)備有一定的限制,在實(shí)際使用過(guò)程中可用性和易用性較差的問(wèn)題。
本發(fā)明的技術(shù)任務(wù)是按以下方式實(shí)現(xiàn)的,一種U-Boot下基于鏈表的多設(shè)備快速啟動(dòng)系統(tǒng),該系統(tǒng)包括設(shè)備信息模塊和引導(dǎo)功能執(zhí)行模塊,設(shè)備信息模塊用于存儲(chǔ)引導(dǎo)設(shè)備的啟動(dòng)設(shè)備信息和參數(shù)信息,引導(dǎo)功能執(zhí)行模塊用于根據(jù)設(shè)備信息模塊存儲(chǔ)的啟動(dòng)設(shè)備信息和參數(shù)信息,完成操作系統(tǒng)引導(dǎo)。
作為優(yōu)選,所述設(shè)備信息模塊包括啟動(dòng)設(shè)備信息鏈表、啟動(dòng)順序選項(xiàng)鏈表和數(shù)據(jù)處理模塊;數(shù)據(jù)處理模塊用于在設(shè)備初始化過(guò)程中將可引導(dǎo)設(shè)備的啟動(dòng)設(shè)備信息和參數(shù)信息存儲(chǔ)至啟動(dòng)設(shè)備信息鏈表;設(shè)備初始化完成后,從Flash芯片中讀取保存的用戶(hù)設(shè)置,與啟動(dòng)設(shè)備信息鏈表中的節(jié)點(diǎn)對(duì)比確認(rèn)設(shè)備信息有效后,將啟動(dòng)順序設(shè)置存儲(chǔ)至啟動(dòng)順序選項(xiàng)鏈表;引導(dǎo)功能執(zhí)行模塊根據(jù)啟動(dòng)順序選項(xiàng)鏈表記錄的啟動(dòng)設(shè)備信息和參數(shù)信息,完成操作系統(tǒng)引導(dǎo)。
一種U-Boot下基于鏈表的多設(shè)備快速啟動(dòng)的方法,該方法包括如下步驟:
(1)、在設(shè)備啟動(dòng)的初始化階段,設(shè)備信息模塊中的數(shù)據(jù)處理模塊將掃描到的能夠引導(dǎo)啟動(dòng)的設(shè)備信息記錄到啟動(dòng)設(shè)備信息鏈表中,每個(gè)設(shè)備對(duì)應(yīng)一個(gè)鏈表節(jié)點(diǎn);
(2)、設(shè)備初始化完成后,讀取Flash中保存的啟動(dòng)順序選項(xiàng)鏈表,并與啟動(dòng)設(shè)備信息鏈表中的節(jié)點(diǎn)進(jìn)行對(duì)比,查看設(shè)備信息是否有效:
①、若設(shè)備信息有效,則把該設(shè)備的啟動(dòng)設(shè)備信息和參數(shù)信息寫(xiě)入啟動(dòng)順序選項(xiàng)鏈表中;
②、若設(shè)備信息無(wú)效,則丟棄該節(jié)點(diǎn);
(3)、全部完成Flash中保存的啟動(dòng)順序選項(xiàng)鏈表與啟動(dòng)設(shè)備信息鏈表中節(jié)點(diǎn)的對(duì)比后,使用新的啟動(dòng)順序選項(xiàng)鏈表更新Flash中存儲(chǔ)的設(shè)備信息;
(4)、引導(dǎo)功能執(zhí)行模塊從步驟(3)中更新后的啟動(dòng)順序選項(xiàng)鏈表首節(jié)點(diǎn)開(kāi)始,調(diào)取保存的引導(dǎo)設(shè)備信息和操作系統(tǒng)引導(dǎo)參數(shù)信息,并嘗試進(jìn)行操作系統(tǒng)引導(dǎo):
①、若引導(dǎo)失敗,跳轉(zhuǎn)到下一節(jié)點(diǎn),重復(fù)進(jìn)行嘗試引導(dǎo)操作系統(tǒng),以此類(lèi)推,直至遍歷整個(gè)啟動(dòng)順序選項(xiàng)鏈表,若依然無(wú)法完成操作系統(tǒng)引導(dǎo),則輸出錯(cuò)誤信息。
本發(fā)明的U-Boot下基于鏈表的多設(shè)備快速啟動(dòng)系統(tǒng)及其方法具有以下優(yōu)點(diǎn):
1、本發(fā)明通過(guò)增加設(shè)備信息模塊和引導(dǎo)功能執(zhí)行模塊,實(shí)現(xiàn)了與X86平臺(tái)BIOS一致的功能,可根據(jù)用戶(hù)設(shè)置,按照順序依次嘗試通過(guò)不同介質(zhì)進(jìn)行操作系統(tǒng)的引導(dǎo)工作,從而提高了整個(gè)產(chǎn)品的可用性和易用性;
2、本發(fā)明通過(guò)修改函數(shù)調(diào)用,使用引導(dǎo)功能執(zhí)行模塊直接替換現(xiàn)有操作系統(tǒng)引導(dǎo)函數(shù);因此,引導(dǎo)功能執(zhí)行模塊被U-Boot現(xiàn)有接口直接調(diào)用,在保證實(shí)現(xiàn)功能的前提下,做到影響范圍最小化。
故本發(fā)明具有設(shè)計(jì)合理、結(jié)構(gòu)簡(jiǎn)單、使用方便、一物多用等特點(diǎn),因而,具有很好的推廣使用價(jià)值。
附圖說(shuō)明
下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步說(shuō)明。
附圖1為U-Boot下基于鏈表的多設(shè)備快速啟動(dòng)系統(tǒng)結(jié)構(gòu)框圖。
圖中:1、設(shè)備信息模塊,2、引導(dǎo)功能執(zhí)行模塊,3、啟動(dòng)設(shè)備信息鏈表,4、啟動(dòng)順序選項(xiàng)鏈表,5、數(shù)據(jù)處理模塊。
具體實(shí)施方式
參照說(shuō)明書(shū)附圖和具體實(shí)施例對(duì)本發(fā)明的U-Boot下基于鏈表的多設(shè)備快速啟動(dòng)系統(tǒng)及其方法作以下詳細(xì)地說(shuō)明。
實(shí)施例1:
如附圖1所示,本發(fā)明的U-Boot下基于鏈表的多設(shè)備快速啟動(dòng)系統(tǒng), 該系統(tǒng)包括設(shè)備信息模塊1和引導(dǎo)功能執(zhí)行模塊2,設(shè)備信息模塊1用于存儲(chǔ)引導(dǎo)設(shè)備的啟動(dòng)設(shè)備信息和參數(shù)信息,引導(dǎo)功能執(zhí)行模塊2用于根據(jù)設(shè)備信息模塊存儲(chǔ)的啟動(dòng)設(shè)備信息和參數(shù)信息,完成操作系統(tǒng)引導(dǎo)。設(shè)備信息模塊1包括啟動(dòng)設(shè)備信息鏈表3、啟動(dòng)順序選項(xiàng)鏈表4和數(shù)據(jù)處理模塊5;數(shù)據(jù)處理模塊5用于在設(shè)備初始化過(guò)程中將可引導(dǎo)設(shè)備的啟動(dòng)設(shè)備信息和參數(shù)信息存儲(chǔ)至啟動(dòng)設(shè)備信息鏈表3;設(shè)備初始化完成后,從Flash芯片中讀取保存的用戶(hù)設(shè)置,與啟動(dòng)設(shè)備信息鏈表中的節(jié)點(diǎn)對(duì)比確認(rèn)設(shè)備信息有效后,將啟動(dòng)順序設(shè)置存儲(chǔ)至啟動(dòng)順序選項(xiàng)鏈表4;引導(dǎo)功能執(zhí)行模塊2根據(jù)啟動(dòng)順序選項(xiàng)鏈表4記錄的啟動(dòng)設(shè)備信息和參數(shù)信息,完成操作系統(tǒng)引導(dǎo)。
實(shí)施例2:
本發(fā)明的U-Boot下基于鏈表的多設(shè)備快速啟動(dòng)的方法,該方法包括如下步驟:
(1)、在設(shè)備啟動(dòng)的初始化階段,設(shè)備信息模塊中的數(shù)據(jù)處理模塊將掃描到的能夠引導(dǎo)啟動(dòng)的設(shè)備信息記錄到啟動(dòng)設(shè)備信息鏈表中,每個(gè)設(shè)備對(duì)應(yīng)一個(gè)鏈表節(jié)點(diǎn);
(2)、設(shè)備初始化完成后,讀取Flash中保存的啟動(dòng)順序選項(xiàng)鏈表,并與啟動(dòng)設(shè)備信息鏈表中的節(jié)點(diǎn)進(jìn)行對(duì)比,查看設(shè)備信息是否有效:
①、若設(shè)備信息有效,則把該設(shè)備的啟動(dòng)設(shè)備信息和參數(shù)信息寫(xiě)入啟動(dòng)順序選項(xiàng)鏈表中;
②、若設(shè)備信息無(wú)效,則丟棄該節(jié)點(diǎn);
(3)、全部完成Flash中保存的啟動(dòng)順序選項(xiàng)鏈表與啟動(dòng)設(shè)備信息鏈表中節(jié)點(diǎn)的對(duì)比后,使用新的啟動(dòng)順序選項(xiàng)鏈表更新Flash中存儲(chǔ)的設(shè)備信息;
(4)、引導(dǎo)功能執(zhí)行模塊從步驟(3)中更新后的啟動(dòng)順序選項(xiàng)鏈表首節(jié)點(diǎn)開(kāi)始,調(diào)取保存的引導(dǎo)設(shè)備信息和操作系統(tǒng)引導(dǎo)參數(shù)信息,并嘗試進(jìn)行操作系統(tǒng)引導(dǎo):
①、若引導(dǎo)失敗,跳轉(zhuǎn)到下一節(jié)點(diǎn),重復(fù)進(jìn)行嘗試引導(dǎo)操作系統(tǒng),以此類(lèi)推,直至遍歷整個(gè)啟動(dòng)順序選項(xiàng)鏈表,若依然無(wú)法完成操作系統(tǒng)引導(dǎo),則輸出錯(cuò)誤信息。
通過(guò)上面具體實(shí)施方式,所述技術(shù)領(lǐng)域的技術(shù)人員可容易的實(shí)現(xiàn)本發(fā)明。但是應(yīng)當(dāng)理解,本發(fā)明并不限于上述的兩種具體實(shí)施方式。在公開(kāi)的實(shí)施方式的基礎(chǔ)上,所述技術(shù)領(lǐng)域的技術(shù)人員可任意組合不同的技術(shù)特征,從而實(shí)現(xiàn)不同的技術(shù)方案。
除說(shuō)明書(shū)所述的技術(shù)特征外,均為本專(zhuān)業(yè)技術(shù)人員的已知技術(shù)。