包括顯示器11、主控裝置12、存儲(chǔ)裝置13以及輸入裝置14。
[0046]參看圖2,本申請(qǐng)所述方法包括:
[0047]S1、將分別保存在至少兩個(gè)可斷電保存介質(zhì)中的切分映像文件并行加載到內(nèi)存,所述切分映像文件為根據(jù)可斷電保存介質(zhì)數(shù)量切分的操作系統(tǒng)映像文件。
[0048]具體地,所述嵌入式裝置上電啟動(dòng),即電源為MCU芯片供電,各電路板進(jìn)行復(fù)位等。本申請(qǐng)將至少兩個(gè)可斷電保存介質(zhì)中保存的映像文件(OS Image),并行加載到內(nèi)存。所述可斷電保存介質(zhì)為eMMC、NAND Flash、SPI Flash中至少一種。
[0049]目前操作系統(tǒng)啟動(dòng)都是通過(guò)eMMC、NAND Flash、SPI Flash等慢速可掉電保存的設(shè)備中啟動(dòng),以常見(jiàn)的eMMC 4.1啟動(dòng),時(shí)鐘頻率為501,讀取速度為5011 bytes/s,大的android操作系統(tǒng)的顯示界面需要300M,讀取時(shí)間近6S。而操作系統(tǒng)啟動(dòng)的映像文件通常都較大,因此,本申請(qǐng)將一個(gè)映像文件分成至少兩個(gè)切分映像文件,設(shè)計(jì)至少兩個(gè)相同或者不同的可斷電保存介質(zhì)分別存儲(chǔ)所分成的至少兩個(gè)切分映像文件。例如,采用一 eMMC和一NAND Flash共同存儲(chǔ)一映像文件。從而,并行的從多個(gè)相同或者不同的可斷電保存介質(zhì)存儲(chǔ)復(fù)制映像文件,以增加操作啟動(dòng)時(shí)向內(nèi)存加載映像文件的帶寬。本申請(qǐng)加載過(guò)程可以通過(guò)DMA(直接內(nèi)存存取)完成,設(shè)定多個(gè)DMA對(duì)應(yīng)多個(gè)相同或者不同的可斷電保存介質(zhì),或者設(shè)定多個(gè)DMA對(duì)應(yīng)同一個(gè)可斷電保存介質(zhì)。其中,設(shè)定DMA中的burst值為并行操作的關(guān)鍵。
[0050]S2、將無(wú)依賴關(guān)系的硬件初始化操作分成至少兩個(gè)作業(yè),提交到加載工具中。
[0051]由于硬件初始化操作都是I/O密集型的作業(yè),所謂的I/O密集型是指需要等待I/O操作完成,因此在硬件初始化操作過(guò)程中的很多時(shí)間是在等待中。
[0052]所述無(wú)依賴關(guān)系的硬件初始化操作是指其運(yùn)行彼此沒(méi)有影響的操作,例如USB接口的wifi模組,wifi模組需要等待USB協(xié)議棧初始化完成后再初始化。因此USB協(xié)議棧初始化和wifi模組初始化為具有依賴關(guān)系的硬件初始化操作。再例如,觸摸屏(TouchPannel)的初始化,由于其使用了 I2C接口,需要等待I2C接口初始化完成后方可進(jìn)行初始化。因此觸摸屏初始化和I2C接口初始化為具有依賴關(guān)系的硬件初始化操作。而USB接口初始化和I2C接口初始化則為無(wú)依賴關(guān)系的硬件初始化操作。
[0053]對(duì)于嵌入式裝置中的很多硬件可以同時(shí)執(zhí)行初始化的操作,因此本申請(qǐng)分析系統(tǒng)中的硬件的關(guān)系,將無(wú)依賴關(guān)系的硬件初始化操作分成至少兩個(gè)作業(yè)(Job)。硬件初始化操作的依賴關(guān)系是指需要等待前一個(gè)硬件完成初始化后才能夠進(jìn)行下一個(gè)硬件的初始化操作。本申請(qǐng)將分成的作業(yè)提交到加載工具(loader)中。
[0054]S3、所述加載工具并行處理所述至少兩個(gè)作業(yè)的初始化操作。
[0055]加載工具(loader)并行執(zhí)行(Mult1-thread)所述至少兩個(gè)作業(yè)的初始化操作,從而減少了各無(wú)依賴關(guān)系的硬件完成初始化操作的時(shí)間,減少了等待時(shí)間。
[0056]S4、運(yùn)行所述映像文件,完成啟動(dòng)程序。
[0057]本申請(qǐng)將分別保存在至少兩個(gè)可斷電保存介質(zhì)中的切分映像文件并行加載到內(nèi)存。所述切分映像文件為根據(jù)可斷電保存介質(zhì)數(shù)量切分的操作系統(tǒng)映像文件。從而,避免了由于映像文件過(guò)大造成的映像文件的加載速度慢,提高了映像文件加載到內(nèi)存的速度。同時(shí),本申請(qǐng)將無(wú)依賴關(guān)系的硬件初始化操作分成至少兩個(gè)作業(yè),提交到加載工具中,所述加載工具并行處理所述至少兩個(gè)作業(yè)的初始化操作。這種硬件初始化的并行處理,進(jìn)一步加快了硬件初始化的速度,從而實(shí)現(xiàn)嵌入式操作系統(tǒng)的快速啟動(dòng),其實(shí)現(xiàn)簡(jiǎn)單,成本低廉。
[0058]在本申請(qǐng)另一具體實(shí)現(xiàn)中,所述方法包括上述步驟SI—一S4,所述步驟SI中所述將至少兩個(gè)可斷電保存介質(zhì)中保存的切分映像文件并行加載到內(nèi)存的內(nèi)存布局同所述步驟S3中加載工具并行處理所述至少兩個(gè)作業(yè)的初始化操作的內(nèi)存布局不重疊。
[0059]由于本申請(qǐng)保存的OS映像文件為由一個(gè)映像文件切分成的至少兩個(gè)切分文件,而加載映像文件到內(nèi)存,也是I/o密集型的操作,主要是受可斷電保存介質(zhì)的輸出帶寬的影響。而將切分映像文件加載到內(nèi)存,也受目標(biāo)地址的一些限制。因此,將至少兩個(gè)可斷電保存介質(zhì)中保存的切分映像文件并行加載到內(nèi)存與加載工具并行處理所述至少兩個(gè)作業(yè)的初始化操作的目標(biāo)地址不可相互重疊,否則后面執(zhí)行的作業(yè)可能會(huì)覆蓋前面的執(zhí)行的作業(yè)。
[0060]在本申請(qǐng)另一具體實(shí)現(xiàn)中,所述方法包括上述步驟SI—一S4,參看圖3,所述步驟SI之前還包括步驟:
[0061]S0、關(guān)機(jī)前將內(nèi)存中的操作系統(tǒng)映像文件根據(jù)可斷電保存介質(zhì)的數(shù)量切分成切分映像文件,并將所述切分映像文件復(fù)制到至少兩個(gè)可斷電保存介質(zhì)中保存為映像文件。
[0062]具體地,本申請(qǐng)嵌入式裝置關(guān)機(jī)前將內(nèi)存中的一個(gè)OS映像文件切分成至少兩個(gè)切分映像文件,復(fù)制到至少兩個(gè)可斷電保存介質(zhì)作為映像文件進(jìn)行保存,用于后續(xù)的快速啟動(dòng)。
[0063]在本申請(qǐng)另一具體實(shí)現(xiàn)中,所述方法包括上述步驟SI一一S4,所述步驟SO還包括:
[0064]將切分映像文件進(jìn)行壓縮,并將壓縮后的切分映像文件復(fù)制到至少兩個(gè)可斷電保存介質(zhì)中保存。
[0065]所述步驟SI還包括:
[0066]對(duì)加載的所述切分映像文件進(jìn)行解壓縮。
[0067]本申請(qǐng)通過(guò)對(duì)切分映像文件進(jìn)行壓縮,進(jìn)一步提高復(fù)制速度以及并行處理能力,進(jìn)一步提高了嵌入式操作系統(tǒng)的啟動(dòng)速度。
[0068]對(duì)應(yīng)于上述方法,本申請(qǐng)?zhí)峁┮环N嵌入式操作系統(tǒng)的快速啟動(dòng)裝置,應(yīng)用于嵌入式裝置,比如車(chē)載終端、TV、STB等。參看圖1,所述嵌入式裝置I,在硬件上通常包括顯示器
11、主控裝置12、存儲(chǔ)裝置13以及輸入裝置14。
[0069]參看圖4,本申請(qǐng)所述裝置包括:
[0070]文件加載模塊41,用于將分別保存在至少兩個(gè)可斷電保存介質(zhì)中的切分映像文件并行加載到內(nèi)存,所述切分映像文件為根據(jù)可斷電保存介質(zhì)數(shù)量切分的操作系統(tǒng)映像文件。
[0071]作業(yè)分配模塊42,用于將無(wú)依賴關(guān)系的硬件初始化操作分成至少兩個(gè)作業(yè),提交到加載工具中。
[0072]操作處理模塊43,用于利用所述加載工具并行處理所述至少兩個(gè)作業(yè)的初始化操作。
[0073]文件運(yùn)行模塊44,用于運(yùn)行所述映像文件,完成啟動(dòng)程序。
[0074]具體地,所述嵌入式裝置上電啟動(dòng),即電源為MCU芯片供電,各電路板進(jìn)行復(fù)位等。本申請(qǐng)將至少兩個(gè)可斷電保存介質(zhì)中保存的映像文件(OS Image),并行加載到內(nèi)存。所述可斷電保存介質(zhì)為eMMC、NAND Flash、SPI Flash中至少一種。
[0075]目前操作系統(tǒng)啟動(dòng)都是通過(guò)eMMC、NAND Flash、SPI Flash等慢速可掉電保存的設(shè)備中啟動(dòng),以常見(jiàn)的eMMC 4.1啟動(dòng),時(shí)鐘頻率為501,讀取速度為5011 bytes/s,大的android操作系統(tǒng)的顯示界面需要300M,讀取時(shí)間近6S。而操作系統(tǒng)啟動(dòng)的映像文件通常都較大,因此,本申請(qǐng)將一個(gè)映像文件分成至少兩個(gè)切分映像文件,設(shè)計(jì)至少兩個(gè)相同或者不同的可斷電保存介質(zhì)分別存儲(chǔ)所分成的至少兩個(gè)切分映像文件。例如,采用一 eMMC和一NAND Flash共同存儲(chǔ)一映像文件。從而,并行的從多個(gè)相同或者不同的可斷電保存介質(zhì)存儲(chǔ)復(fù)制映像文件,以增加操作啟動(dòng)時(shí)向內(nèi)存加載映像文件的帶寬。本申請(qǐng)加載過(guò)程可以通過(guò)DMA(直接內(nèi)存存取)完成,設(shè)定多個(gè)DMA對(duì)應(yīng)多個(gè)相同或者不同的可斷電保存介質(zhì),或者設(shè)定多個(gè)DMA對(duì)應(yīng)同一個(gè)可斷電保存介質(zhì)。其中,設(shè)定DMA中的burst值為并行操作的關(guān)鍵。
[0076]由于硬件初始化操作都是I/O密集型的作業(yè),所謂的I/O密集型是指需要等待I/O操作完成,因此在硬件初始化操作過(guò)程中的很多時(shí)間是在等待中。
[0077]所述無(wú)依賴關(guān)系的硬件初始化操作是指其運(yùn)行彼此沒(méi)有影響的操作,例如USB接口的wifi模組,wifi模組需要等待USB協(xié)議棧初始化完成后再初始化。因此USB協(xié)議棧初始化和wifi模組初始化為具有依賴關(guān)系的硬件初始化操作。再例如,觸摸屏(TouchPannel)的初始化,由于其使用了 I2C接口,需要等待I2C接口初始化完成后方可進(jìn)行初始化。因此觸摸屏初始化和I2C接口初始化為具有依賴關(guān)系的硬件初始化操作。而USB接口初始化和I2C接口初始化則為無(wú)依賴關(guān)系的硬件初始化操作。
[0078]對(duì)于嵌入式裝置中的很多硬件可以同時(shí)執(zhí)行初始化的操作,因此本申請(qǐng)分析系統(tǒng)中的硬件的關(guān)系,將無(wú)依賴關(guān)系的硬件初始化操作分成至少兩個(gè)作業(yè)(Job)。硬件初始化操作的依賴關(guān)系是指需要等待前一個(gè)硬件完成初始化后才能夠進(jìn)行下一個(gè)硬件的初始化操作。本申請(qǐng)將分成的作業(yè)提交到加載工具(loader)中。
[0079]加載工具