一種out文件加載方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及嵌入式技術(shù)領(lǐng)域,特別是涉及一種out文件加載方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]嵌入式vxWorks操作系統(tǒng)的模塊可執(zhí)行文件為out文件,類似于Windows環(huán)境下的exe可執(zhí)行文件,out文件為嵌入式vxWorks操作系統(tǒng)環(huán)境下的目標(biāo)文件格式。嵌入式vxfforks操作系統(tǒng)使用out文件模塊來(lái)進(jìn)行軟件發(fā)布,這樣做有利于代碼保密、系統(tǒng)裁剪等。
[0003]傳統(tǒng)的嵌入式vxWorks操作系統(tǒng)中,out文件的加載依賴于基于嵌入式vxWorks操作系統(tǒng)構(gòu)建的文件系統(tǒng),out文件的加載是將各個(gè)OUt文件放在文件系統(tǒng)下,啟動(dòng)的時(shí)候根據(jù)配置文件加載OUt文件或者在啟動(dòng)代碼里將out文件的加載和順序固定設(shè)置好。
[0004]通常情況下,嵌入式vxWorks操作系統(tǒng)的資源有限,并不是所有的嵌入式vxWorks操作系統(tǒng)都有大容量的存儲(chǔ)器用于構(gòu)建文件系統(tǒng),因此out文件的加載會(huì)受到存儲(chǔ)器的容量限制,并且基于嵌入式vxWorks操作系統(tǒng)構(gòu)建的文件系統(tǒng)本身存在著容易損壞的風(fēng)險(xiǎn),因此加載在文件系統(tǒng)中的out文件也容易丟失或者損壞。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本申請(qǐng)?zhí)峁┮环Nout文件加載方法、裝置及系統(tǒng),以有效的解決嵌入式vxfforks操作系統(tǒng)中的out文件加載受到存儲(chǔ)器的容量限制、以及加載在文件系統(tǒng)中的out文件容易丟失或損壞的問(wèn)題。
[0006]為了實(shí)現(xiàn)上述目的,本申請(qǐng)實(shí)施例提供的技術(shù)方案如下:
[0007]一種out文件加載方法,包括:
[0008]將需要加載的out文件從存儲(chǔ)器中讀取到內(nèi)存;
[0009]調(diào)用vxWorks系統(tǒng)函數(shù)memDrvCreate O將所述內(nèi)存中的所述out文件構(gòu)造成偽1/0設(shè)備文件;
[0010]調(diào)用vxWorks系統(tǒng)函數(shù)1adModuleO加載所述偽1/0設(shè)備文件,實(shí)現(xiàn)對(duì)所述out文件的加載。
[0011]優(yōu)選地,所述將需要加載的out文件從存儲(chǔ)器中讀取到內(nèi)存,包括:
[0012]對(duì)所述存儲(chǔ)器中的out文件的數(shù)據(jù)結(jié)構(gòu)進(jìn)行初始化;
[0013]將文件指針指向所述存儲(chǔ)器中的out文件的起始地址;
[0014]獲取所述起始地址在所述存儲(chǔ)器中相對(duì)于存儲(chǔ)器基地址的偏移地址和大小。
[0015]優(yōu)選地,在所述調(diào)用vxWorks系統(tǒng)函數(shù)1adModuleO加載所述偽1/0設(shè)備文件之前,還包括:
[0016]調(diào)用接口函數(shù)openO打開(kāi)所述偽內(nèi)存1/0設(shè)備文件,并獲取文件描述符;
[0017]貝丨」,所述調(diào)用vxWorks系統(tǒng)函數(shù)1adModuleO加載所述偽1/0設(shè)備文件,包括:
[0018]調(diào)用vxWorks系統(tǒng)函數(shù)1adModuleO根據(jù)所述文件描述符加載所述偽內(nèi)存1/0設(shè)備文件。
[0019]—種out文件加載裝置,包括:
[0020]讀取模塊,與所述讀取模塊相連接的構(gòu)造模塊,與所述構(gòu)造模塊相連接的加載模塊;
[0021]所述讀取模塊將需要加載的out文件從存儲(chǔ)器中讀取到內(nèi)存;
[0022]所述構(gòu)造模塊調(diào)用vxWorks系統(tǒng)函數(shù)memDrvCreate O將所述內(nèi)存中的所述out文件構(gòu)造成偽I/O設(shè)備文件;
[0023]所述加載模塊調(diào)用vxWorks系統(tǒng)函數(shù)1adModule O加載所述偽1/0設(shè)備文件,實(shí)現(xiàn)對(duì)所述out文件的加載。
[0024]優(yōu)選地,所述讀取模塊,包括:
[0025]初始化單元,所述初始化單元對(duì)所述存儲(chǔ)器中的out文件的數(shù)據(jù)結(jié)構(gòu)進(jìn)行初始化;
[0026]指向單元,所述指向單元將文件指針指向所述存儲(chǔ)器中的out文件的起始地址;
[0027]獲取單元,所述獲取單元獲取所述起始地址在所述存儲(chǔ)器中相對(duì)于存儲(chǔ)器基地址的偏移地址和大小。
[0028]優(yōu)選地,所述加載模塊,包括:
[0029]獲取單元,所述獲取單元調(diào)用接口函數(shù)open O打開(kāi)所述偽內(nèi)存1/0設(shè)備文件,并獲取文件描述符;
[0030]加載單元,所述獲取單元調(diào)用vxWorks系統(tǒng)函數(shù)1adModule O根據(jù)所述文件描述符加載所述偽內(nèi)存1/0設(shè)備文件。
[0031]—種out文件加載系統(tǒng),包括:out文件加載裝置,與所述out文件加載裝置相連的存儲(chǔ)器,所述存儲(chǔ)器用于存儲(chǔ)out文件;
[0032]所述out文件加載裝置包括:
[0033]讀取模塊,與所述讀取模塊相連接的構(gòu)造模塊,與所述構(gòu)造模塊相連接的加載模塊;
[0034]所述讀取模塊將需要加載的out文件從所述存儲(chǔ)器中讀取到內(nèi)存;
[0035]所述構(gòu)造模塊調(diào)用vxWorks系統(tǒng)函數(shù)memDrvCreate O將所述內(nèi)存中的所述out文件構(gòu)造成偽1/0設(shè)備文件;
[0036]所述加載模塊調(diào)用vxWorks系統(tǒng)函數(shù)1adModule O加載所述偽1/0設(shè)備文件,實(shí)現(xiàn)對(duì)所述out文件的加載。
[0037]優(yōu)選地,所述讀取模塊,包括:
[0038]初始化單元,所述初始化單元對(duì)所述存儲(chǔ)器中的out文件的數(shù)據(jù)結(jié)構(gòu)進(jìn)行初始化;
[0039]指向單元,所述指向單元將文件指針指向所述存儲(chǔ)器中的out文件的起始地址;
[0040]獲取單元,所述獲取單元獲取所述起始地址在所述存儲(chǔ)器中相對(duì)于存儲(chǔ)器基地址的偏移地址和大小。
[0041]優(yōu)選地,所述加載模塊,包括:
[0042]獲取單元,所述獲取單元調(diào)用接口函數(shù)open O打開(kāi)所述偽內(nèi)存1/0設(shè)備文件,并獲取文件描述符;
[0043]加載單元,所述獲取單元調(diào)用vxWorks系統(tǒng)函數(shù)1adModule O根據(jù)所述文件描述符加載所述偽內(nèi)存I/O設(shè)備文件。
[0044]由以上本申請(qǐng)?zhí)峁┑募夹g(shù)方案,將需要加載的out文件從存儲(chǔ)器中讀取到內(nèi)存;調(diào)用vxWorks系統(tǒng)函數(shù)memDrvCreate O將所述內(nèi)存中的所述out文件構(gòu)造成偽I/O設(shè)備文件;調(diào)用vxWorks系統(tǒng)函數(shù)1adModuleO加載所述偽I/O設(shè)備文件,實(shí)現(xiàn)對(duì)所述out文件的加載。這樣,直接從存儲(chǔ)器讀取out文件到內(nèi)存,并利用系統(tǒng)函數(shù)memDevCreateO將內(nèi)存中的out文件制作成一個(gè)偽I/O設(shè)備文件,使其能夠被1adModuleO函數(shù)調(diào)用,完成out文件的加載,該方案不需要使用文件系統(tǒng),可以有效的節(jié)省存儲(chǔ)器的存儲(chǔ)空間,并且由于在加載out文件時(shí)不使用文件系統(tǒng),可以避免文件系統(tǒng)損壞時(shí)導(dǎo)致的out文件丟失或者損壞等問(wèn)題,提高了嵌入式系統(tǒng)的整體可靠性。
【附圖說(shuō)明】
[0045]為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0046]圖1為本申請(qǐng)?zhí)峁┑囊环Nout文件加載方法的流程示意圖;
[0047]圖2為本申請(qǐng)?zhí)峁┑囊环Nout文件加載裝置的結(jié)構(gòu)示意圖;
[0048]圖3為本申請(qǐng)?zhí)峁┑囊环Nout文件加載系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0049]相關(guān)術(shù)語(yǔ)解釋:
[0050]vxfforks:vxfforks操作系統(tǒng)是美國(guó)WindRiver公司于1983年設(shè)計(jì)開(kāi)發(fā)的一種嵌入式實(shí)習(xí)操作系統(tǒng)(RTOS),是嵌入式開(kāi)發(fā)環(huán)境的關(guān)鍵組成部分,該操作系統(tǒng)具有良好的持續(xù)發(fā)展能力、高性能的內(nèi)核以及友好的用戶開(kāi)發(fā)環(huán)境,在嵌入式實(shí)時(shí)操作系統(tǒng)領(lǐng)域占據(jù)一席之地;
[0051]out文件:屬于ELF文件類型,可通過(guò)ftp工具將它加載到文件系統(tǒng)(比如使用copy命令加載到RAM盤)中,再調(diào)用Id或者1adModule函數(shù)加載到操作系統(tǒng)中運(yùn)行;
[0052]1adModule:vxfforks操作系統(tǒng)提供的系統(tǒng)接口函數(shù),用于目標(biāo)文件的加載;
[0053]Id:vxfforks操作系統(tǒng)提供的系統(tǒng)接口函數(shù),用于目標(biāo)文件的加載。
[0054]為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合附圖,對(duì)本申請(qǐng)的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。
[0055]下面結(jié)合附圖,對(duì)本申請(qǐng)的實(shí)施方案進(jìn)行詳細(xì)描述。
[0056]圖1為本申請(qǐng)?zhí)峁┑囊环Nout文件加載方法的流程示意圖。
[0057]請(qǐng)參照?qǐng)D1所示,本申請(qǐng)實(shí)施例提供的out文件加載方法,包括:
[0058]步驟SlOO:將需要加載的out文件從存儲(chǔ)器中讀取到內(nèi)存;
[0059]在本申請(qǐng)實(shí)施例中,將需要加載的out文件從存儲(chǔ)器中讀取到內(nèi)存,可以包括:對(duì)所述存儲(chǔ)器中的OUt文件的數(shù)據(jù)結(jié)構(gòu)進(jìn)行初始化;將文件指針指向所述存儲(chǔ)器中的out文件的起始地址;獲取所述起始地址在所述存儲(chǔ)器中相對(duì)于存儲(chǔ)器基地址的偏移地址和大小。
[0060]out文件是直接存儲(chǔ)在存儲(chǔ)器上的,本申請(qǐng)實(shí)施例不使用文件系統(tǒng),無(wú)需打開(kāi)文件,而是通過(guò)文件指針訪問(wèn)存儲(chǔ)器中的絕對(duì)地址讀取out文件到內(nèi)存,并獲取OUt文件相對(duì)于存儲(chǔ)器基地址的偏移量和文件大小。
[0061]步驟S200:調(diào)用vxWorks系統(tǒng)函數(shù)memDrvCreate ()將所述內(nèi)存中的所述out文件構(gòu)造成偽1/0設(shè)備文件;
[0062]在本申請(qǐng)實(shí)施例中,調(diào)用系統(tǒng)函數(shù)memDevCreateO將加載到內(nèi)存的out