欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

以存儲(chǔ)技術(shù)抽象方式在文件內(nèi)創(chuàng)建文件系統(tǒng)的制作方法

文檔序號(hào):6445136閱讀:162來源:國知局
專利名稱:以存儲(chǔ)技術(shù)抽象方式在文件內(nèi)創(chuàng)建文件系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及諸如具有嵌入式操作系統(tǒng)的那些設(shè)備等計(jì)算設(shè)備,尤其涉及配置計(jì)算設(shè)備的非易失存儲(chǔ)。
背景技術(shù)
諸如個(gè)人數(shù)字助理、當(dāng)代移動(dòng)電話和手持式及袖珍計(jì)算機(jī)等移動(dòng)計(jì)算設(shè)備正在變?yōu)橹匾伊餍械挠脩艄ぞ摺R话愣?,它們變得足夠小,使得它們極度方便,而消耗較少的電池功率,且在同時(shí)變得能夠運(yùn)行更強(qiáng)大的應(yīng)用程序。
在制造這類設(shè)備的過程中,嵌入式操作系統(tǒng)映象通常被內(nèi)建到每一設(shè)備的單塊映象文件中,并儲(chǔ)存在非易失存儲(chǔ)中(如,NAND或NOR閃存、硬盤等等)。作為結(jié)果,必須從構(gòu)成操作系統(tǒng)的各種部件預(yù)配置單塊映象文件。此外,更新這一設(shè)備有時(shí)是必需或期望的,并需要對(duì)操作系統(tǒng)作出改變。
然而,當(dāng)處理單塊映象時(shí),有許多缺點(diǎn),包括為安裝任一更新,需要替換整個(gè)映象(或可能其預(yù)定的子集),這需要大量的資源,包括臨時(shí)存儲(chǔ)和帶寬。迄今為止,使用了單塊替換用于更新這類設(shè)備,因?yàn)楦虏僮飨到y(tǒng)的單獨(dú)組件是一項(xiàng)困難的任務(wù),這是由于各種沖突和依賴性。此外,任一這樣的組件化會(huì)導(dǎo)致另一問題,因?yàn)槿孕枰跏加诚笥糜谥圃?,但是迄今為止初始映象本質(zhì)上只是傳輸?shù)皆O(shè)備上的比特的單塊組。需要一種將操作系統(tǒng)映象組件轉(zhuǎn)換成適合用作初始映象的基于文件系統(tǒng)的制造映象,而仍被設(shè)計(jì)成方便設(shè)備的組件化更新的機(jī)制。

發(fā)明內(nèi)容
簡言之,本發(fā)明提供了一種一般針對(duì)創(chuàng)建包含分區(qū)和文件系統(tǒng)布局的單個(gè)制造映象文件的方法和系統(tǒng),在構(gòu)建時(shí),將個(gè)別的操作系統(tǒng)組件包安裝到該映象文件中。該過程以一種存儲(chǔ)技術(shù)抽象方式完成,使得該系統(tǒng)和方法無需關(guān)注底層存儲(chǔ)(如,閃存)的類型,和/或底層存儲(chǔ)強(qiáng)加在映象布局上的任何要求。相反,在單獨(dú)的步驟中,對(duì)結(jié)果映象文件進(jìn)行后處理(post-process),包括定制該映象文件用于存在的實(shí)際類型的存儲(chǔ)設(shè)備。
在一個(gè)實(shí)現(xiàn)中,在文件內(nèi)創(chuàng)建各種類型的分區(qū),每一分區(qū)對(duì)應(yīng)于一個(gè)文件系統(tǒng)。將操作系統(tǒng)映象組件的集合(稱為包)轉(zhuǎn)換成基于文件系統(tǒng)的制造映象的分區(qū)。從該文件,可在制造過程中以使得映象更新技術(shù)稍后可利用設(shè)備上的同樣的分區(qū)和文件模型的方式在設(shè)備上建立初始操作系統(tǒng)映象。
為將各種包轉(zhuǎn)換成初始制造映象,創(chuàng)建單個(gè)制造映象文件,其中,按分區(qū)和文件系統(tǒng)布局排列映象。然后在需要時(shí)對(duì)該文件進(jìn)行后處理,以在需要時(shí)添加用于在制造時(shí)安裝其內(nèi)容的元數(shù)據(jù)。
為構(gòu)建最終被寫入虛擬閃存中的該文件,創(chuàng)建各種分區(qū)。注意,總閃存的某些可由設(shè)備制造商為各種目的而保留,而讓剩余的存儲(chǔ)器可用,作為由操作系統(tǒng)組件和可任選用戶存儲(chǔ)使用的虛擬存儲(chǔ)器。每一分區(qū)具有某一目的,并可被認(rèn)為是其自己的文件系統(tǒng)。例如,可以有諸如用于更新加載器的二進(jìn)制分區(qū),以及用于內(nèi)核(NK)分區(qū)的RAMIMAGE/ROMIMAGE分區(qū)。IMGFS分區(qū)可包含操作系統(tǒng)文件,用戶存儲(chǔ)分區(qū)可被指定為用于用戶數(shù)據(jù)存儲(chǔ)。在文件中創(chuàng)建主引導(dǎo)記錄以指定分區(qū)??稍谖募邪硗獾臄?shù)據(jù)。
在一個(gè)實(shí)現(xiàn)中,盤映象實(shí)用程序創(chuàng)建該文件,并且映象后處理器添加元數(shù)據(jù)來準(zhǔn)備用于寫入期望的存儲(chǔ)媒質(zhì)中的文件。盤映象實(shí)用程序負(fù)責(zé)取出操作系統(tǒng)包,并基于如何在存儲(chǔ)中排列分區(qū)的存儲(chǔ)器描述(存儲(chǔ)器配置文件)以及包應(yīng)當(dāng)如何被映射到該分區(qū)結(jié)構(gòu)的描述(分區(qū)映射文件),生成包含各種分區(qū)的輸出文件,使每一包的內(nèi)容儲(chǔ)存在適當(dāng)?shù)姆謪^(qū)中。此外,將可執(zhí)行代碼修正到適當(dāng)?shù)幕谔摂M地址空間的地址。存儲(chǔ)器配置文件為非易失存儲(chǔ)和系統(tǒng)RAM都提供了操作系統(tǒng)運(yùn)行時(shí)虛擬地址空間存儲(chǔ)器映射。分區(qū)映射文件包含唯一地標(biāo)識(shí)的包的列表,并用于將包映射到指定的分區(qū)。
后處理過程在輸出文件上行動(dòng),以如特定存儲(chǔ)技術(shù)所需的引入對(duì)分區(qū)和文件系統(tǒng)布局的任何修改。例如,可需要作出調(diào)整以處理不同的閃存部分管理閃存中的扇區(qū)級(jí)信息的不同方式。
當(dāng)結(jié)合附圖閱讀以下詳細(xì)描述時(shí),可以清楚其它優(yōu)點(diǎn)。


圖1是一般表示可結(jié)合本發(fā)明的計(jì)算機(jī)系統(tǒng)的框圖;圖2所示是依照本發(fā)明的一個(gè)方面,用文件中用于維護(hù)作為映象寫入嵌入式設(shè)備或其它媒質(zhì)中的數(shù)據(jù)的相異分區(qū)構(gòu)建的輸出文件的框圖;圖3所示是依照本發(fā)明的一個(gè)方面用于配置輸出文件的各種組件的框圖;圖4所示是依照本發(fā)明的一個(gè)方面配置輸出文件的盤映象實(shí)用程序的總體流程的流程圖;圖5所示是依照本發(fā)明的一個(gè)方面確認(rèn)存儲(chǔ)器配置文件的邏輯的流程圖;圖6所示是依照本發(fā)明的一個(gè)方面負(fù)責(zé)核實(shí)包-分區(qū)映射文件并負(fù)責(zé)將指定的分區(qū)與包匹配的過程的流程圖;圖7所示是依照本發(fā)明的一個(gè)方面處理閃存元件的過程的流程圖;圖8所示是依照本發(fā)明的一個(gè)方面用于構(gòu)造基于ROM/RAM的分區(qū)的過程的流程圖;圖9所示是依照本發(fā)明的一個(gè)方面用于寫系統(tǒng)分區(qū)的過程的流程圖;以及圖10A和10B所示是依照本發(fā)明的一個(gè)方面,如由后處理過程所處理的在閃存中排列扇區(qū)和塊的不同方法的框圖。
具體實(shí)施例方式
示例性操作環(huán)境圖1示出了一個(gè)這樣的手持式計(jì)算設(shè)備120的功能組件,包括處理器122、存儲(chǔ)器124、顯示屏126和鍵盤128(可以是物理或虛擬鍵盤,或表示兩者)。可存在麥克風(fēng)129以接收音頻輸入。存儲(chǔ)器124一般包括易失存儲(chǔ)器(如,RAM)和非易失存儲(chǔ)器(如,ROM、PCMCIA卡等等)。操作系統(tǒng)130駐留在存儲(chǔ)器124中,并在處理器122上執(zhí)行,如微軟公司的Windows操作系統(tǒng)或另一操作系統(tǒng)。
一個(gè)或多個(gè)應(yīng)用程序132被加載到存儲(chǔ)器124中,并在操作系統(tǒng)130上運(yùn)行。應(yīng)用程序的示例包括電子郵件程序、調(diào)度程序、PIM(個(gè)人信息管理)程序、文字處理程序、電子表格程序、因特網(wǎng)瀏覽器程序等等。手持式個(gè)人計(jì)算機(jī)120也可包括加載到存儲(chǔ)器124中的通知管理器134,它在處理器122上執(zhí)行。通知管理器134處理如來自應(yīng)用程序132的通知請(qǐng)求。同樣,如下所述,手持式個(gè)人計(jì)算機(jī)120包括適用于將手持式個(gè)人計(jì)算機(jī)120連接到網(wǎng)絡(luò)(包括作出電話呼叫)的網(wǎng)絡(luò)軟件136(如,硬件驅(qū)動(dòng)程序等)和網(wǎng)絡(luò)組件138(如,無線電和天線)。
手持式個(gè)人計(jì)算機(jī)120具有電源140,它被實(shí)現(xiàn)為一個(gè)或多個(gè)電池。電源140還可包括忽略內(nèi)置電池或?qū)ζ渲匦鲁潆姷耐獠侩娫?,如AC適配器或加電對(duì)接托架。
圖1所示的示例性手持式個(gè)人計(jì)算機(jī)120被示出為具有三種類型的外部通知機(jī)制一個(gè)或多個(gè)發(fā)光二極管(LED)142和音頻生成器144。這些設(shè)備可直接耦合至電源140,使得當(dāng)被激活時(shí),即使手持式個(gè)人計(jì)算機(jī)處理器122或其它組件被關(guān)閉以保存電池能量時(shí),它們也保留一段由通知機(jī)制指示的持續(xù)時(shí)間。LED 142較佳地不限時(shí)間地持亮,直到用戶采取行動(dòng)。注意,音頻生成器144的當(dāng)代版本使用當(dāng)今手持式個(gè)人計(jì)算機(jī)電池的太多能量,因此它被配置成當(dāng)系統(tǒng)的剩余部分被關(guān)閉時(shí),或者在激活后的一段確定的持續(xù)時(shí)間之后被關(guān)閉。
注意,盡管示出了基本手持式個(gè)人計(jì)算機(jī),然而,為實(shí)現(xiàn)本發(fā)明的目的,實(shí)際上能夠以可由程序使用的某一方式接收數(shù)據(jù)通信和處理數(shù)據(jù)的任何設(shè)備都是等效的。
在文件內(nèi)創(chuàng)建文件系統(tǒng)本發(fā)明一般針對(duì)安裝和/或更新儲(chǔ)存在基于微軟WindowsCE.NET的便攜式設(shè)備等小型移動(dòng)計(jì)算設(shè)備上的軟件,這些設(shè)備包括在其中將初始軟件或軟件更新寫入諸如閃存等嵌入式設(shè)備的非易失存儲(chǔ)器的那些設(shè)備。盡管如此,本發(fā)明提供了在總體上計(jì)算的益處,并由此可應(yīng)用到其它計(jì)算設(shè)備和其它類型的存儲(chǔ),包括各種類型的存儲(chǔ)器和/或其它類型的存儲(chǔ)媒質(zhì),如硬盤驅(qū)動(dòng)器。為簡化目的,術(shù)語“閃存”在后文參考設(shè)備的可更新存儲(chǔ)來使用,盡管可以理解,任一存儲(chǔ)機(jī)制都是等效的。此外,術(shù)語“映象”一般包括初始軟件安裝映象以及對(duì)該映象的隨后的軟件更新的概念,即使僅更新該映象的一部分。
包含可執(zhí)行代碼和數(shù)據(jù)兩者的映象可被應(yīng)用到存儲(chǔ)??蓤?zhí)行代碼在安裝時(shí)被定制到嵌入式設(shè)備的虛擬地址空間。依照本發(fā)明的一個(gè)方面,一般而言,映象更新技術(shù)將操作系統(tǒng)映象分裂成可單獨(dú)更新的可更新組件,而維持任何跨組件的依賴性。如可以理解的,以方便對(duì)設(shè)備的初始安裝以及對(duì)其隨后的更新的方式排列初始映象。
依照本發(fā)明的一個(gè)方面,提供了一種將操作系統(tǒng)映象組件的集合(稱為包)轉(zhuǎn)換成基于文件系統(tǒng)的制造映象的系統(tǒng)和方法。這通過分區(qū)和文件系統(tǒng)模型來完成,使得能夠創(chuàng)建一輸出文件。從該文件,可在制造過程中以使得映象更新技術(shù)可稍后利用設(shè)備上同樣的分區(qū)和文件系統(tǒng)模型的方式在設(shè)備上建立初始操作系統(tǒng)映象。這方便了對(duì)個(gè)別組件、對(duì)整個(gè)分區(qū)或如需要時(shí)對(duì)整個(gè)映象的安全且故障保險(xiǎn)的更新。
為將各種包轉(zhuǎn)換成初始制造映象,提供了一種一般針對(duì)創(chuàng)建單個(gè)制造映象文件的方法和系統(tǒng),該映象文件進(jìn)而包含按分區(qū)和文件系統(tǒng)布局排列的映象。然后如需要對(duì)該文件進(jìn)行后處理,來準(zhǔn)備用于在構(gòu)建時(shí)安裝的內(nèi)容。由此,個(gè)別的操作系統(tǒng)組件包被寫入這一制造文件。整個(gè)文件構(gòu)造過程以存儲(chǔ)(如,閃存)技術(shù)抽象的方式完成,使得該系統(tǒng)和方法無需關(guān)注底層存儲(chǔ)的類型,和/或底層存儲(chǔ)在映象的布局上強(qiáng)加的要求。相反,在單獨(dú)的步驟中,對(duì)結(jié)果映象文件進(jìn)行后處理,包括定制映象文件用于所存在的實(shí)際類型的存儲(chǔ)設(shè)備,使得隨后可如期望的將初始映象應(yīng)用到任何設(shè)備。
圖2提供了設(shè)備存儲(chǔ)(如,閃存)的一個(gè)實(shí)例,在該存儲(chǔ)中,以由本發(fā)明的各個(gè)方面方便的方式布局制造映象,如后文所描述的。在圖2中,總閃存202的某一些(如,總共64兆字節(jié)中的32兆字節(jié))由設(shè)備制造商為各種目的而保留,(如,用于涉及設(shè)備無線電的代碼)。剩余部分(如,32兆字節(jié))是可作為由操作系統(tǒng)和(可任選的)用戶存儲(chǔ)使用的虛擬存儲(chǔ)器204的閃存。如后文所描述的,該文件將考慮保留的分段。
依照本發(fā)明的一個(gè)方面,如后文所描述的,在文件206中創(chuàng)建各種分區(qū),文件206是要寫入虛擬閃存204的文件。每一分區(qū)具有某一目的,并且(或可被認(rèn)為是)包含其自己的文件系統(tǒng)。例如,在圖2的示例中,有用于更新加載器的分區(qū)209、內(nèi)核(NK)分區(qū)210、系統(tǒng)分區(qū)211和用戶存儲(chǔ)分區(qū)212(如,為用戶數(shù)據(jù)存儲(chǔ)格式化的)。在文件中創(chuàng)建主引導(dǎo)記錄(MBR)213來指定分區(qū),如后文所描述的。此外,如圖2所示,為完整性目的,可如通過預(yù)先向其掛起數(shù)據(jù)在文件206中包括另外的數(shù)據(jù),如預(yù)先存在的引導(dǎo)加載器214(用于舊設(shè)備,盡管可任選地用于新設(shè)備),以及初始程序加載器(IPL)215。如可容易地理解的,這一另外的數(shù)據(jù)的某些或全部可被閃存到獨(dú)立于其它分區(qū)的設(shè)備中,由此,可將文件206閃存到剩余的虛擬閃存中,然而,在制造文件206中包括這些比特消除了這一額外的制造步驟。注意,圖2的分區(qū)并非按比例示出的,并且還應(yīng)當(dāng)注意,總存儲(chǔ)器和/或可用存儲(chǔ)器的量僅為示例。
如可以理解的,本發(fā)明提供了在單個(gè)文件中使用標(biāo)準(zhǔn)文件系統(tǒng)概念且以存儲(chǔ)抽象的方式創(chuàng)建制造映象的能力。結(jié)果,可以直接的方式并在對(duì)核心過程只有極少/沒有影響的情況下,令嵌入式或其它解決方案在變?yōu)榭捎脮r(shí)適用于任何新存儲(chǔ)技術(shù)。例如,通過后處理,閃存文件系統(tǒng)映象可適用于變?yōu)橛脖P映象。
另外,能夠在構(gòu)建時(shí)在個(gè)別的文件內(nèi)創(chuàng)建文件系統(tǒng)意味著不需要在制造時(shí)環(huán)境中實(shí)現(xiàn)復(fù)雜的分區(qū)、格式化和其它文件系統(tǒng)邏輯。相反,當(dāng)今用于將映象寫入存儲(chǔ)的標(biāo)準(zhǔn)方法(如,閃存群程序員、JTAG或字節(jié)流復(fù)制)仍能夠起作用,即使底層映象可能是復(fù)雜的分區(qū)以及稍后可由操作系統(tǒng)映象在構(gòu)建時(shí)使用的基于文件系統(tǒng)的模式。
為實(shí)現(xiàn)本發(fā)明的各方面,在一個(gè)示例實(shí)現(xiàn)中(參考圖2在上文一般描述的),提供了兩個(gè)主要組件,即盤映象實(shí)用程序230和映象后處理器232。盤映象實(shí)用程序230負(fù)責(zé)取出包裝的操作系統(tǒng)組件的集合(或包)234,以及用戶(如,制造商)希望分區(qū)/文件系統(tǒng)如何在存儲(chǔ)中布局的描述(文件236),和應(yīng)當(dāng)如何將包234映射到該分區(qū)結(jié)構(gòu)的描述(文件238,也稱為包-分區(qū)映射文件和/或映象清單文件)。根據(jù)這一信息,盤映象實(shí)用程序230生成包含各種分區(qū)209-212的單個(gè)輸出文件206,使得每一包的內(nèi)容儲(chǔ)存在適當(dāng)?shù)姆謪^(qū)中,并且使可執(zhí)行代碼被修正到適當(dāng)?shù)幕谔摂M地址空間的地址上。
一旦在這一輸出文件狀態(tài)中,后處理器232在這一輸出文件上行動(dòng),以引入特定的存儲(chǔ)技術(shù)所需的對(duì)分區(qū)和文件系統(tǒng)布局的任何修改。例如,可需要作出調(diào)整以處理不同的閃存部分管理閃存中的扇區(qū)級(jí)信息的不同方式,如后文參考后處理過程一般描述的。
在圖2的示例中,由此,盤映象實(shí)用程序230由兩個(gè)輸入文件236和238驅(qū)動(dòng),即,存儲(chǔ)器配置文件236(如,memory.cfg.xml)和包-分區(qū)映射文件238(如,*.sku.xml,其中,*表示有效文件名)。一般而言,分區(qū)映射文件238包含將每一特定操作系統(tǒng)組件(如,包)映射到存儲(chǔ)器配置文件236中指示的特定分區(qū)的信息。
分區(qū)209-212可以是(并通常是)不同的類型。例如,在一個(gè)實(shí)現(xiàn)中,可以有BINARY分區(qū)(BINARY分區(qū)具有簡單地照原樣復(fù)制到其上的比特),如壓縮的更新加載器分區(qū)209;一個(gè)或多個(gè)RAMIMAGE或ROMIMAGE分區(qū),如NK分區(qū)210;一個(gè)或多個(gè)IMGFS(映象更新文件系統(tǒng))分區(qū),如系統(tǒng)分區(qū)211;和/或USERSTORE分區(qū),如TFAT或其它分區(qū)212。盡管對(duì)分區(qū)和/或分區(qū)類型可以有任意的數(shù)量,然而一個(gè)當(dāng)前的實(shí)現(xiàn)為保持該機(jī)制容易配置的目的將總數(shù)限制到四,如在圖2中所示的更新加載器(BINARY)、NK分區(qū)(RAMIMAGE或ROMIMAGE)、系統(tǒng)分區(qū)(IMGFS)和用戶分區(qū)(USERSTORE)。注意,即使采用了這一任意的限制,也可以有重復(fù)的類型,如,采用四個(gè)分區(qū)的限制,三個(gè)二進(jìn)制類型和一個(gè)IMGFS也是可接受的,并且還應(yīng)當(dāng)注意,其它類型的分區(qū)是可行的。
存儲(chǔ)器配置文件236表示用于非易失存儲(chǔ)和系統(tǒng)RAM的操作系統(tǒng)運(yùn)行時(shí)虛擬地址空間存儲(chǔ)器映射。數(shù)據(jù)表示實(shí)用程序的用戶希望如何通過指定可在其上儲(chǔ)存信息的一個(gè)或多個(gè)分區(qū),并向儲(chǔ)存在分區(qū)中的數(shù)據(jù)分配特征來利用指定的存儲(chǔ)資源。
在一個(gè)實(shí)現(xiàn)中,存儲(chǔ)器配置文件228是對(duì)照以下XSD確認(rèn)的XML格式的文件

<p>然后,通過與實(shí)施例16相同的過程制備一種鋰二次電池,并用與實(shí)施例16相同的方法測(cè)試。結(jié)果,沒有發(fā)現(xiàn)放電容量的降低。對(duì)于評(píng)價(jià)快速充放電性能,在0.3mA/cm2的恒定電流下進(jìn)行充電,然后在0.5、2.0、4.0和6.0mA/cm2的變化的放電電流下進(jìn)行放電。所說的放電容量表示于表5。
實(shí)施例21通過與實(shí)施例16的過程制備一種試樣電極,但是把壓制時(shí)的壓力改變?yōu)?40MPa。在這樣獲得試樣電極中,所說的石墨顆粒和PVDF的混合物的厚度為80μm,其密度為1.93g/cm3。
然后,通過與實(shí)施例16相同的過程制備一種鋰二次電池,并用與實(shí)施例16相同的方法測(cè)試。結(jié)果,觀察到15.7%的放電容量的降低。對(duì)于評(píng)價(jià)快速充放電性能,在0.3mA/cm2的恒定電流下進(jìn)行充電,然后在0.5、2.0、4.0和6.0mA/cm2的變化的放電電流下進(jìn)行放電。所說的放電容量表示于圖5。
表5

如表5所示,可以明顯看出,使用本發(fā)明的第二種用于鋰二次電池的負(fù)極的鋰二次電池的放電容量高,快速充放電性能優(yōu)異。
在實(shí)施例22~29中,研究了使用本發(fā)明的第三種用于鋰二次電池的


一個(gè)示例存儲(chǔ)器配置描述如下

如可從本示例見到的,存儲(chǔ)器配置文件的硬件段提供了RAM位置和所保留的每一閃存部分的完整描述,并也用于要由盤映象實(shí)用程序作為存儲(chǔ)來管理的每一閃存部分。NOR和NAND標(biāo)簽一般用于分別指線性(類似RAM)或基于塊的存儲(chǔ)。向每一存儲(chǔ)部分提供唯一的標(biāo)識(shí)符/名字。分區(qū)段表示應(yīng)當(dāng)如何在基于分區(qū)的抽象中使用指定的存儲(chǔ)部分。
例如,ROMIMAGE意味著分區(qū)的內(nèi)容應(yīng)當(dāng)被修正/重定位(如后文所描述的),以從存儲(chǔ)部分實(shí)際執(zhí)行,(原地執(zhí)行,或XIP),這是線性類型存儲(chǔ)設(shè)備的特征。注意,如果使用ROMIMAGE,則盤映象實(shí)用程序確保任何原地執(zhí)行代碼不被壓縮,還確保模塊的各個(gè)代碼段在物理空間中是連續(xù)的,即,原地執(zhí)行代碼的這些代碼段將不跨越保留的區(qū)域。RAMIMAGE標(biāo)簽指示內(nèi)容應(yīng)當(dāng)被修正/重定位,以用盡RAM(假定加載器在適當(dāng)?shù)臅r(shí)刻將代碼從存儲(chǔ)移至RAM)。除映象存儲(chǔ)之外,可表示額外的分區(qū)類型;在上述示例中,將用戶存儲(chǔ)定義為用于數(shù)據(jù)存儲(chǔ)的分區(qū)。
分區(qū)映射文件(或SKU)238包含唯一地標(biāo)識(shí)的包的列表,并用于將包映射到指定的分區(qū)中。分區(qū)映射文件是對(duì)照以下XSD確認(rèn)的XML文件


一個(gè)示例分區(qū)映射(SKU)文件238如以下XML格式的數(shù)據(jù)

在這一特定的示例中,一個(gè)示例包文件(“oem”)被映射到名為“NK”的分區(qū),在以上存儲(chǔ)器配置文件236中,它被定義為具有修正/重定位的代碼以在閃存本身上原地執(zhí)行的ROMIMAGE分區(qū),這與RAM相反。如從本示例可見到的,指定的分區(qū)在硬盤扇區(qū)中記錄的單個(gè)NOR閃存部分上存在,它在虛擬地址0x8000.0000處,并且長度為0x380.0000字節(jié)。如同樣可從本示例中見到的,名為“l(fā)ang”的包被映射到IMGFS分區(qū)(由稱為“IMGFS”文件系統(tǒng)驅(qū)動(dòng)程序管理的分區(qū))中的被稱為“OS”的第二分區(qū),并也駐留在硬件扇區(qū)中指定的單個(gè)NOR部分上(但是不與前一NK分區(qū)重疊)。
基于兩個(gè)輸入文件236和238中提供的配置信息,盤映象實(shí)用程序230處理記錄的包的內(nèi)容。位于給定包中的每一可執(zhí)行碼通過修正或重定位過程被適當(dāng)?shù)囟ㄎ坏揭晃ㄒ坏奶摂M地址空間范圍。根據(jù)分區(qū)內(nèi)容是意味著在RAM外執(zhí)行還是在閃存中原地執(zhí)行,盤映象實(shí)用程序230使用該地址空間信息以及關(guān)于在總體的虛擬地址空間上可將可執(zhí)行文件的子段置于何處的已知的限制(如,基于CPU體系結(jié)構(gòu)等),來處理每一可執(zhí)行文件并將其內(nèi)容定位到非重疊的虛擬地址空間范圍。
如在圖3中一般表示的,修正過程由稱為Romimage的組件(如,鏈接到盤映象實(shí)用程序230或在其之內(nèi),或與其相關(guān)聯(lián))302處理。在示例實(shí)現(xiàn)中,Romimage302是DLL(動(dòng)態(tài)鏈接庫),它也在包安裝過程中在設(shè)備上使用以在安裝時(shí)將代碼修正/重定位到設(shè)備上。在被構(gòu)建時(shí),使用運(yùn)行時(shí)在設(shè)備上使用的相同的文件系統(tǒng)代碼,將結(jié)果文件206儲(chǔ)存在構(gòu)建文件的臺(tái)式機(jī)上所儲(chǔ)存的文件內(nèi)的適當(dāng)?shù)姆謪^(qū)中。注意,該代碼對(duì)設(shè)備以及主機(jī)構(gòu)建系統(tǒng)都是可構(gòu)建的,以將不兼容問題最小化。
在構(gòu)建文件之前,盤映象實(shí)用程序230請(qǐng)求某一大小的文件的創(chuàng)建,如大小為64兆字節(jié)。在FSDMGR 304創(chuàng)建了文件之后,盤映象實(shí)用程序230處理存儲(chǔ)器配置文件236,以令FSDMGR 304劃分出保留的分段,使得它們保持完整。剩余的存儲(chǔ)器,如32MB現(xiàn)在通過FSDMGR 304可用。在這一時(shí)刻,該文件也準(zhǔn)備好用需要的分區(qū)來構(gòu)建。
如可從以上示例存儲(chǔ)器配置文件中所見到的,期望一BINARY分區(qū)。更具體地,圖3示出了盤映象實(shí)用工具230如何與romimage.dll功能以及文件系統(tǒng)設(shè)備驅(qū)動(dòng)程序管理器304(FSDMGR.dll)一起工作來構(gòu)建文件206的示例。為在文件中創(chuàng)建分區(qū),盤映象實(shí)用程序230結(jié)合FSDMGR 304一起工作,以創(chuàng)建一主引導(dǎo)記錄(因?yàn)檫€沒有該記錄)。將數(shù)據(jù)添加到主引導(dǎo)記錄以指示之后為BINARY分區(qū),即,數(shù)據(jù)創(chuàng)建該分區(qū)。在這一實(shí)現(xiàn)中,不指定大小,由此,對(duì)于現(xiàn)在,剩余的閃存的整個(gè)大小用于該BINARY分區(qū)。
在本示例中,盤映象實(shí)用程序230將通過Romimage 302請(qǐng)求FSDMGR 304將更新加載器寫入BINARY分區(qū)中,由圖3中通過用帶圈的一(1)標(biāo)簽的箭頭所一般表示的。如上述名為“以故障保險(xiǎn)方式向非易失存儲(chǔ)應(yīng)用自定義軟件映象更新”的相關(guān)專利申請(qǐng)中所描述的,更新加載器本質(zhì)上是操作系統(tǒng)代碼的一個(gè)特殊分段,當(dāng)設(shè)備被更新時(shí),設(shè)備啟動(dòng)到該分段(而非正常的操作系統(tǒng)代碼)。由于從盤映象實(shí)用程序的觀點(diǎn)來看,更新加載器是比特的二進(jìn)制大數(shù)據(jù)塊(binary blob),因此安裝該分區(qū),并且FSDMGR 304使用rawFS dll 308將這些二進(jìn)制比特寫入BINARY分區(qū)209中(寫入主引導(dǎo)記錄213之后的空間中)。
一旦被寫入,通過調(diào)用FSDMGR 304獲取實(shí)際寫入的數(shù)據(jù)量。在自動(dòng)確定大小的操作中,下一分區(qū)的起點(diǎn)的新偏移基于該實(shí)際大小,由此,更新加載器分區(qū)209本質(zhì)上僅消耗文件中它所需要的空間量。
盤映象實(shí)用程序230再次以類似的方式調(diào)用以在文件中創(chuàng)建NK分區(qū)(即,通過將數(shù)據(jù)寫入主引導(dǎo)記錄213中),然后通過以將數(shù)據(jù)寫入NK分區(qū)的請(qǐng)求調(diào)用romimage.dll寫NK分區(qū)。注意,romimage.dll用于構(gòu)建NK分區(qū)所需的從盤映象實(shí)用程序230發(fā)送的參數(shù)包括要構(gòu)建的文件列表以及用于分配閃存空間和虛擬地址空間的分配器,如后文所描述的。romimage.dll 302將該數(shù)據(jù)修正到一組比特中,然后將它們提供給FSDMGR 304,F(xiàn)SDMGR 304然后通過rawFS dll 308寫NK分區(qū),如在圖3中由用帶圈的數(shù)字二(2)標(biāo)簽的箭頭所表示的。注意,該物理修正以及虛擬修正可為任何原地執(zhí)行代碼所需。
再次,不指定大小,因此整個(gè)剩余空間用于該NK分區(qū),直到被調(diào)整大小。然而,在本示例中,并非基于對(duì)NK分區(qū)所寫的確切大小將偏移從文件的末端移回,而是可將NK比特之后的某些額外空間量(緩沖區(qū))留在NK分區(qū)中,如由圖3中的陰影區(qū)所表示的。這一空閑空間緩沖區(qū)在存儲(chǔ)器XML文件中指定,并本質(zhì)上將偏移稍微移至實(shí)際所寫入的字節(jié)量之前,并由此令對(duì)NK分區(qū)的未來更新能夠消耗比當(dāng)前NK分區(qū)所消耗的更多的空間,即,允許隨后的更新的增長。
如在圖3中由用帶圈的數(shù)字三(3)標(biāo)簽的箭頭所表示的,通過romimage.dll,下一步創(chuàng)建并寫IMGFS分區(qū)(再次延伸到文件的末尾)。注意,在這一時(shí)刻,這是IMGFS分區(qū),而非二進(jìn)制分區(qū),如由FSDMGR 304所識(shí)別的。由此,使用imgfs.dll308來寫入系統(tǒng)分區(qū),因?yàn)檫@是在運(yùn)行時(shí)在設(shè)備上處理該特定分區(qū)的驅(qū)動(dòng)程序。此外,注意,通過imgfs.dll 308抽象任何物理修正,由此,對(duì)于系統(tǒng)分區(qū),romimage過程302僅如指定的執(zhí)行虛擬地址修正。然后如上所述地執(zhí)行自動(dòng)調(diào)整大小,以將下一分區(qū)的偏移移至寫入的數(shù)據(jù)量(加上任一期望等空閑空間緩沖區(qū),盡管在當(dāng)前的示例中沒有空閑空間緩沖區(qū))。
下一分區(qū)是USERSTORE,它可以是任何類型的分區(qū),在本示例中為類型4的分區(qū)。USERSTORE分區(qū)通過寫入主引導(dǎo)記錄中來創(chuàng)建,并被擴(kuò)展到文件的末端。然而,注意,在這一時(shí)刻不寫入任何數(shù)據(jù),由此,該分區(qū)未被安裝。當(dāng)用戶稍后希望訪問該分區(qū)時(shí),F(xiàn)SDMGR將通過適當(dāng)?shù)尿?qū)動(dòng)程序來完成這一過程,如,如果分區(qū)對(duì)應(yīng)于該特定的文件系統(tǒng)格式,則通過TFAT.dll 310來完成。由此,不需要TFAT.dll 310來構(gòu)建初始文件,但是在圖3中作為可用于在運(yùn)行時(shí)訪問用戶分區(qū)數(shù)據(jù)的驅(qū)動(dòng)程序的示例示出。
轉(zhuǎn)向本發(fā)明的操作的解釋,作為概述,盤映象實(shí)用程序230是采用平臺(tái)存儲(chǔ)器配置文件236(如memory.cfg.xml)和映象清單文件238(如,platform.sku.xml)作為輸入,并輸出表示設(shè)備的完整ROM映象的數(shù)據(jù)文件206的臺(tái)式機(jī)實(shí)用程序。由于盤映象實(shí)用程序230負(fù)責(zé)重定位模塊數(shù)據(jù),一個(gè)設(shè)計(jì)目標(biāo)是能夠與設(shè)備側(cè)更新應(yīng)用程序共享代碼。
除其它操作之外,盤映象實(shí)用程序230分析定義設(shè)備的存儲(chǔ)器布局的存儲(chǔ)器配置文件236、任何保留的區(qū)域、以及包含預(yù)構(gòu)建BIN/NB0文件(其中,NB0文件是所有.bin文件如它們?cè)赗OM中所出現(xiàn)的布局)的一個(gè)或多個(gè)閃存分區(qū)的位置和大小。盤映象實(shí)用程序230也分析聲明基于包的分區(qū)及其內(nèi)容的映象清單文件238。
在圖3中一般表示的實(shí)現(xiàn)中,盤映象實(shí)用程序230能夠構(gòu)造各種類型的分區(qū),包括BINARY、RAMIMAGE、ROMIMAGE、IMGFS和USERSTORE分區(qū)。BINARY分區(qū)包括包含任意數(shù)據(jù),但不包含包的預(yù)構(gòu)建NB0文件。如由名字所暗示的,RAMIMAGE分區(qū)被修正到RAM,而ROMIMAGE分區(qū)被修正以從儲(chǔ)存它們的NOR部分原地執(zhí)行。IMGFS分區(qū)包括由盤映象實(shí)用程序230支持的分區(qū)類型,并可簡單地通過作出對(duì)IMGFS.dll 308的合適版本的調(diào)用(通過FSDMGR 304)來構(gòu)造。USERSTORE分區(qū)可以是任何自定義分區(qū)類型,并且當(dāng)前用作主引導(dǎo)記錄213中用于在啟動(dòng)時(shí)創(chuàng)建的分區(qū)的占位符。
下表概述了盤映象實(shí)用程序230的輸入文件和輸出文件

盤映象實(shí)用程序230負(fù)責(zé)在基于包的分區(qū)的任一個(gè)中重定位模塊。為實(shí)現(xiàn)這一功能,盤映象實(shí)用程序230采用一虛擬地址(VA)分配器。盤映象實(shí)用程序230也能夠?yàn)樵谠O(shè)備的每一閃存部分中包含分區(qū)的每一閃存部分輸出BIN/NB0文件(后文描述),以及主引導(dǎo)記錄(MBR)。輸出文件可通過使用MSPart臺(tái)式機(jī)組件來創(chuàng)建。此外,盤映象實(shí)用程序230中的大多數(shù)代碼(如,VA分配器、IMGFS交互、模塊重定位)也可用于設(shè)備側(cè)更新應(yīng)用程序,由此,盤映象實(shí)用程序230考慮到設(shè)備限制和代碼可移植性。
圖4表示盤映象實(shí)用程序230的整體流程。注意,盤映象實(shí)用程序230可包括臺(tái)式機(jī)組件,也可包括用于執(zhí)行各種操作的單獨(dú)組件。例如,盤映象實(shí)用程序可通過命令行來運(yùn)行,由此,為如塊400所示地處理命令行自變量,盤映象實(shí)用程序230可包括一命令行處理器。單獨(dú)的CFG文件分析器可處理存儲(chǔ)器配置文件(塊402),單獨(dú)的sku/包分析器可如塊404所示地處理分區(qū)映象(SKU)文件。組件及其功能在圖4中由BINARY分區(qū)構(gòu)建器/過程(塊406)、RAMIMAGE/ROMIMAGE分區(qū)構(gòu)建器/過程(塊408)、IMGFS分區(qū)構(gòu)建器/過程(塊412)和后處理器(塊414)表示。盤映象實(shí)用程序230使用的后處理器和數(shù)據(jù)結(jié)構(gòu)在后文單獨(dú)的小節(jié)中描述。
如如上所述,盤映象實(shí)用程序230(如,dskimage.exe)可通過命令行自變量來調(diào)用,如命令行dskimage CFGfile SKUfile如應(yīng)當(dāng)容易地清楚的,CFGfile參數(shù)是到存儲(chǔ)器配置文件236的路徑,如上所述,該輸入文件詳細(xì)描述當(dāng)前平臺(tái)的RAM和閃存布局,并定義分區(qū)。SKUfile參數(shù)是到分區(qū)映射/映象清單文件238的路徑,如上所述,該文件列出了包的集合并將它們分配到分區(qū)。在一個(gè)實(shí)現(xiàn)中,盤映象實(shí)用程序230在分析輸入文件時(shí)不考慮文件擴(kuò)展名,但是在被調(diào)用時(shí)(如,通過腳本)期望具有以下名字的輸入CFGFile=Memory.cfg.xmlSKUFile=%_TGTPLAT%.sku.xml當(dāng)前,命令行處理器僅檢查CFGfile和SKUfile命令行自變量的存在,并將它們傳遞到其各自的(如,XSD)確認(rèn)器。如果用相對(duì)路徑指定了自變量,則盤映象實(shí)用程序230相對(duì)于從其調(diào)用盤映象實(shí)用程序230的目錄查找文件。如果用絕對(duì)路徑指定了自變量,則盤映象實(shí)用程序230使用絕對(duì)路徑查找該文件。在盤映象實(shí)用程序230中,path1是Environment.CurrentDirectory,path2是CFGfile或SKUfile。如果自變量不存在,則命令行處理器采取適當(dāng)?shù)男袆?dòng)(如,在C#中拋出異常、打印使用消息和退出)。
memory.cfg.xml分析器/過程被設(shè)計(jì)成給予制造商描述硬件和向閃存部分分配分區(qū)的很大的靈活性。在一個(gè)當(dāng)前的實(shí)現(xiàn)中,存儲(chǔ)器配置分析器/過程分析器(圖4的塊402)在memory.cfg.xml文件上采用兩級(jí)確認(rèn),如圖5中一般表示的。首先,通過C# XMLValidatingReader類,核實(shí)memory.cfg.xml文件正確句法;如由步驟500所示的,XML ValidatingReader確保momory.cfg.xml包含有效的XML和需要的標(biāo)簽,否則步驟502分支到輸出錯(cuò)誤條件。第二級(jí)確認(rèn)由盤映象實(shí)用程序230執(zhí)行。在第二級(jí)確認(rèn)中,創(chuàng)建RAM、閃存部分和分區(qū)的內(nèi)部表示。使用XML串行化來創(chuàng)建內(nèi)部表示,然后在該內(nèi)部結(jié)構(gòu)上執(zhí)行確認(rèn)(如在圖5中由步驟504和506所示的),以檢測(cè)無效的配置,如將分區(qū)映射到不存在的閃存部分。
在一個(gè)實(shí)現(xiàn)中,(如,基于WindowsCE的實(shí)現(xiàn)),為使硬件配置有效,文件中的RAM START屬性需要引用有效的高速緩存內(nèi)核虛擬地址(0x80000000-0x9FFFFFFF);START+LENGTH也需要有效。任意RAM RESERVE分段需要在由父RAM元素的START和LENGTH屬性所指定的內(nèi)核虛擬地址范圍內(nèi)開始和結(jié)束。RAM_RESERVE元素?zé)o法重疊(START到START+LENGTH應(yīng)當(dāng)對(duì)每一RAM_RESERVE是唯一的),并需要具有唯一的、非空的ID串。
在本示例實(shí)現(xiàn)中,可實(shí)施各種規(guī)則,包括NOR/NAND(被總稱為FLASH)需要具有唯一的“ID”屬性,并不能被命名為“RAM”。FLASH RESERVE元素需要唯一的“ID”,并不能具有長于8個(gè)字符的名字。FLASH元素LENGTH屬性需要被BLOCKSIZE均勻可分,BLOCKSIZE進(jìn)而需要被SECTORSIZE均勻可分。對(duì)于NOR元素,VASTART需要是塊對(duì)齊的。FLASH RESERVE元素LENGTH屬性需要被父FLASH BLOCKSIZE均勻可分。對(duì)于NOR_RESERVE元素,VASTART是塊對(duì)齊的,NOR VASTART和VASTART+LENGTH應(yīng)當(dāng)不與RAM或任意其它NOR元素重疊,并且應(yīng)當(dāng)是有效的高速緩存內(nèi)核虛擬地址。
此外,為有效,NOR_RESERVE元素需要在由父NOR元素的VASTART和LENGTH屬性指定的高速緩存內(nèi)核虛擬地址范圍內(nèi)開始和結(jié)束??墒褂肁llocator(分配器)類分層結(jié)構(gòu)來核實(shí)HARDWARE條件,如后文所描述的。為有效的高速緩存內(nèi)核地址范圍創(chuàng)建一全局分配器,將其用于檢測(cè)RAM和NOR標(biāo)簽的有效地址,以及RAM和NOR部分之間的任何沖突。類似地,對(duì)每一RAM和FLASH部分創(chuàng)建分配器,以檢測(cè)有效的RESERVE區(qū)域。分配器可儲(chǔ)存在關(guān)聯(lián)的RAM/FLASH對(duì)象中,用于容易的檢索。
分區(qū)數(shù)據(jù)也儲(chǔ)存在MemoryCFG分層結(jié)構(gòu)中。PARTITONS確認(rèn)的規(guī)則包括分區(qū)具有唯一ID屬性、PARTITION的STORAGE_ID屬性需要匹配FLASH部分的ID屬性、以及ROMIMAGE分區(qū)的STORAGE_ID屬性不能引用NAND閃存。對(duì)于RAMIMAGE/BINARY,COMPRESS屬性是布爾類型,并由此只能是以下之一{0,1,true,false}。
也確認(rèn)RAMIMAGE/ROMIMAGE/IMGFS(總稱為PACKAGE分區(qū)),并且在當(dāng)前的實(shí)現(xiàn)中,只能有一個(gè)RAMIMAGE/ROMIMAGE分區(qū)。如果指定了兩個(gè),則確認(rèn)失敗。FSRAMPERCENT和ROMFLAGS屬性對(duì)應(yīng)于RAMIMAGE/ROMIMAG分區(qū)的目錄中的字段(如,在基于WindowsCE的實(shí)現(xiàn)中)。RAMIMAGE分區(qū)的FIXUP_ADDRESS涉及該分區(qū)應(yīng)當(dāng)在RAM中何處開始。該屬性需要指向RAM中的有效位置,其后緊跟至少空閑的0x1000字節(jié)。當(dāng)前,每一FLASH部分上不能有一個(gè)以上USERSTORE分區(qū)。
如上所述,映象清單(包-分區(qū)映射或SKU)文件238包含由分區(qū)組織的包的列表。XML模式(上文示出)相對(duì)直接。映象清單文件分析器/過程負(fù)責(zé)核實(shí)SKU文件包含有效XML,并負(fù)責(zé)將PACKAGE_LIST中指定的分區(qū)與memory.cfg.xml中的PACKAGE分區(qū)ID進(jìn)行匹配。PACKAGE_LIST標(biāo)簽的PARTITION_ID屬性需要與PACKAGE分區(qū)元素的ID屬性相匹配;如果無法找到匹配,則SKU分析器將拋出異常。圖6的步驟600、602和604概述了這些各種操作。
每一PACKAGE_LIST標(biāo)簽具有需要的PARTITION_ID屬性。將包與分區(qū)進(jìn)行匹配包括取出PARTITION_ID并使用它作為對(duì)C#散列表的查找。如果找到匹配,則將子PACKAGE_FILE標(biāo)簽轉(zhuǎn)化成數(shù)組列表,并與PACKAGE分區(qū)的現(xiàn)有包列表合并。提取包可以以下方式完成

注意,盤映象實(shí)用程序230檢查FLATRELEASEDIR環(huán)境變量的存在,并且如果找到,則使用它作為當(dāng)前的工作目錄。這與傳統(tǒng)的構(gòu)建系統(tǒng)的行為相一致,它允許用戶從任一目錄執(zhí)行“makeimg(制造映象)”,而僅在FLATRELEASEDIR中處理文件。
分區(qū)由MSPart的臺(tái)式機(jī)(構(gòu)建系統(tǒng))版本創(chuàng)建并管理,(如在傳統(tǒng)的WindowsCE構(gòu)建系統(tǒng)中)。MSPart接口允許盤映象實(shí)用程序230從分區(qū)的實(shí)際構(gòu)造中抽象關(guān)于底層硬件的細(xì)節(jié)。對(duì)由MSPart創(chuàng)建的NB0文件的任何硬件專用調(diào)整在后處理過程中完成。MSPart可由盤映象實(shí)用程序230工具的剩余部分使用,如果是這樣,則在創(chuàng)建任何分區(qū)之前,對(duì)每一FLASH部分創(chuàng)建一MSPart卷,并且劃分出任何RESERVE分段,如后文所描述的。盤映象實(shí)用程序230維護(hù)一單獨(dú)的類fsdmgr.cs,它包裝所需要的未管理的功能。該過程維護(hù)閃存部分的一全局散列表,使得其每一個(gè)可由名字訪問并通過其重復(fù)。上述過程通過在每一FLASH部分的FLASHREXERVE元素上重復(fù)并調(diào)用fsdmgr.dll來完成,如圖7中一般表示的。RESERVE區(qū)域在實(shí)際被創(chuàng)建時(shí)用數(shù)據(jù)來填充。為此,F(xiàn)SDMgr類將來自盤映象的數(shù)據(jù)匯集到fsdmgr_nt.dll以填充RESERVE區(qū)域。
構(gòu)建NB0的第一個(gè)步驟是向MSPart安裝的卷添加BINARY分區(qū)。首先處理BINARY分區(qū),因?yàn)樗鼈兪峭耆园?即,它們不需要修正,也不需要NOR上的SectorData元數(shù)據(jù))。如上文一般描述的,構(gòu)建BINARY分區(qū)相對(duì)較直接;該過程重復(fù)通過BinaryPartitions(二進(jìn)制分區(qū))數(shù)組,并調(diào)用其Create()方法。由于每一分區(qū)對(duì)象指向其父閃存部分,檢索正確的卷句柄也是非常直接的。
在一個(gè)實(shí)現(xiàn)中,PartitionInfo(分區(qū)信息)類(MemoryCFG分層結(jié)構(gòu)的一部分)包含名為CreateAllPartitions(創(chuàng)建所有分區(qū))的函數(shù),它通過在BinaryPartition對(duì)象上重復(fù),并調(diào)用其Create()方法來開始。BinaryPartition.Create()函數(shù)在指定的閃存塊上創(chuàng)建并安裝新的分區(qū)、打開memory.cfg.xml的DATAFILE屬性中指定的文件、并調(diào)用FSDMgr以將數(shù)據(jù)寫入該分區(qū)。這一特征的偽代碼描述如下(使用某些MSPartAPI)

如上所述,盤映象實(shí)用程序提供了用于分別創(chuàng)建ROMIMAGE和RAMIMAGE類型的分區(qū)-從ROM和RAM原地執(zhí)行的分區(qū)的“romimage”。這些分區(qū)通常包含構(gòu)成IMGFS文件系統(tǒng)所需的系統(tǒng)組件的最小組nk、coredll、filesys、fsdmgr、mspart、imgfs和任何需要的塊驅(qū)動(dòng)程序。
ROMIMAGE/RAMIMAGE過程一般可被分裂成各種步驟(其中八個(gè)在當(dāng)前實(shí)現(xiàn)中列出,如也由圖8的步驟801-808所示的)構(gòu)建并排序模塊和文件的列表(步驟801);
向所有模塊分配虛擬地址空間(步驟802);執(zhí)行模塊修正(步驟803);壓縮所有數(shù)據(jù)段和文件(步驟804);執(zhí)行物理布局(步驟805);分配復(fù)制分段(步驟806);執(zhí)行內(nèi)核模塊修正(步驟807);以及輸出實(shí)際分區(qū)(步驟808)。
上述每一步驟可通過對(duì)romimage.dll作出調(diào)用來執(zhí)行,允許容易地訪問各種(如,C和C#)應(yīng)用程序的分配和重定位功能。盤映象實(shí)用程序可通過稱為ROMImage.cs的包裝類與romimage.dll接口。
romimage.dll包含用于創(chuàng)建并管理多個(gè)分配器的Allocator類分層結(jié)構(gòu)和功能、用于創(chuàng)建并管理文件列表的File(文件)類和功能、以及用于執(zhí)行ROMIMAGE/RAMIMAGE分區(qū)構(gòu)建過程的步驟的函數(shù)。
Allocator類分層結(jié)構(gòu)用于管理RAM和FLASH中的可用物理空間。它展現(xiàn)作出任意分配和固定保留的功能。Allocator類(和子AllocNode)定義如下


romimage.dll導(dǎo)出用于操縱分配器的以下功能


Allocate函數(shù)的有效標(biāo)志包括BOTTOMUP_ALLOC和TOPDOWN_ALLOC。如名字所暗示的,這些都是分別查找從當(dāng)前分配窗的底部和頂部開始的空閑空間的首次滿足(first-fit)算法。它們需要線性搜索(并由此可在請(qǐng)求大量的分配時(shí)產(chǎn)生性能瓶頸)。
File類分層結(jié)構(gòu)用于儲(chǔ)存關(guān)于文件或模塊的所有元數(shù)據(jù),并定義如下



在構(gòu)建文件的臺(tái)式機(jī)中,每一文件的內(nèi)容由File和Section類的數(shù)據(jù)成員作出存儲(chǔ)器映射和指向它。定義以下數(shù)據(jù)結(jié)構(gòu)用于操作File類分層結(jié)構(gòu)


提供以下函數(shù)用于構(gòu)建RAMIMAGE/ROMIMAGE分區(qū)HRESULT BuildNKPartition(HANDLE hFileList,HANDLE hVolume,HANDLE hSlot0Alloc,
HANDLE hSlot1 Alloc,HANDLE hPhysAlloc,DWORD dwReserved);其中hFileList是到FileList對(duì)象的句柄-FileList對(duì)象的創(chuàng)建在下一節(jié)中討論;hVolume是到MSPart卷的句柄,由DskImage在分區(qū)創(chuàng)建過程中創(chuàng)建;hSlot0Alloc是到起點(diǎn)為0x600000,長度為0x1A00000的分配器的句柄;hSlot1Alloc是到起點(diǎn)為0x2100000,長度為0x1F00000的分配器的句柄;hPhysAlloc是物理分配器(對(duì)ROMIMAGE分區(qū)為閃存部分,對(duì)RAMIMAGE分區(qū)為RAM);hRAMAlloc是RAM分配器,它對(duì)應(yīng)于memory.cfg.xml中的RAM元素;以及dwReserved是到MiscNKInfo結(jié)構(gòu)的指針,定義如下typedef struct_MiscNKInfo{USHORT cbSize;USHORT usCPUType;DWORD dwROMFlags;DWORD dwFSRAMPercent;BOOL fCompressPartition;}MiscNKInfo;為構(gòu)建并排序模塊和文件的列表,(圖8的步驟801),romimage.dll管理文件和模塊的多個(gè)鏈接的列表。為構(gòu)建列表,romiimage.dll提供以下函數(shù)HRESULT CreateFileList(PHANDLE phFileList);HRESULT DestroyFileList(HANDLE hFileList);HRESULT AddFileToList(Handle hFileList,wchar_t*szFileName,DWORD dwFlags,wchar_t *szPathToFile,BOOL fLoadData,
PHANDLE phFile);也可以有將File對(duì)象從一個(gè)文件對(duì)象移動(dòng)到另一個(gè)的API。這一函數(shù)可為以下形式HRESULT SpliceFile(HANDLE hSrcList,HANDLE hDstList,HANDLE hFile);為向模塊分配虛擬地址空間,(圖8的步驟802),插槽0/1虛擬地址分配需要文件列表、用于插槽0的分配器和用于插槽1的分配器。文件列表已以正確的順序排序-內(nèi)部DoVAAlloc方法然后需要依照以下邏輯執(zhí)行分配


對(duì)除內(nèi)核模塊之外的每樣?xùn)|西執(zhí)行模塊修正,如圖8的步驟803所示的。為此,提供了FileList類中的以下函數(shù)HRESULT DoVAFixups(BOOL fReverse);fReverse自變量指定了模塊應(yīng)當(dāng)是被修正還是返回重新基于其原始值。這一功能為設(shè)備側(cè)更新應(yīng)用程序所需,但是在構(gòu)建該文件的臺(tái)式機(jī)上,fReverse總為FALSE(調(diào)用者僅需指定文件列表)。注意,較早的romimage.exe重復(fù)通過.rel文件,并立即修正整個(gè)模塊,然而,采用組件化的更新,需要僅修正分段的指定頁的能力。Module(模塊)類中的FixupBlob函數(shù)支持取出到模塊數(shù)據(jù)的任意指針,并通過重復(fù)通過creloc分段和僅找出應(yīng)用到該數(shù)據(jù)的修正來修正它。盤映象實(shí)用程序230在每一模塊分段上僅調(diào)用一次該函數(shù)。設(shè)備側(cè)更新應(yīng)用程序?qū)⒃谒亟ǖ拿恳欢M(jìn)制差頁之后調(diào)用它。注意,在這一點(diǎn)上,模塊的重定位信息儲(chǔ)存在模塊內(nèi)(在.creloc分段中)。結(jié)果,對(duì)于設(shè)備側(cè)更新,不再需要重復(fù)通過重定位文件,因?yàn)樾枰男畔⒃谀K中自包含。
在圖8的步驟808執(zhí)行物理布局之前,如圖8的步驟804所示的壓縮模塊數(shù)據(jù)段。注意,盤映象實(shí)用程序230不支持模塊的代碼段的壓縮,因?yàn)镽OMIMAGE和RAMIMAGE分區(qū)打算原地執(zhí)行。然而,如有需要,可容易地添加代碼壓縮。
提供了FileList(文件列表)類中的以下函數(shù)用于壓縮目的HRESULT DoCompression();DoCompression在指定的文件列表上重復(fù),并壓縮除內(nèi)核模塊之外的所有東西的數(shù)據(jù)段。更新儲(chǔ)存在Section(分段)類中的o32rom頭部的psize成員以反映壓縮的數(shù)據(jù)長度??墒褂萌我缓线m的壓縮算法,如一個(gè)當(dāng)前的romimage.exe實(shí)現(xiàn)使用被優(yōu)化用于解壓的算法。然而,由于romimage.dll由設(shè)備側(cè)更新應(yīng)用程序使用,可使用其它算法作為替代。
一旦壓縮了數(shù)據(jù)段,過程具有執(zhí)行物理布局所需的信息。為此,提供了FileList類中的以下函數(shù)HRESULT DoPhysicalLayout(Allocator &amp;Alloc);圖8的步驟805表示輸出分區(qū)。對(duì)于ROMIMAGE分區(qū),使用關(guān)聯(lián)的FLASH部分的分配器。該分區(qū)的起始位置通過查詢MSPart來確定。對(duì)于RAMIMAGE分區(qū),使用物理布局的RAM分配器。該分區(qū)的起始位置由分區(qū)的RAMIMAGE元素的FIXUP_ADDRESS屬性來確定。
DoPhysicalLayout使用首次滿足算法并以以下順序重復(fù)通過文件列表的內(nèi)容1.代碼段(頁對(duì)齊的)2.數(shù)據(jù)段(包括.creloc和所有文件)3.TOC(目錄,包括所有TOC條目)4.所有e32頭部5.所有o32頭部塊6.復(fù)制段塊7.文件名在這一階段,生成目錄(TOC)的大部分內(nèi)容。這對(duì)儲(chǔ)存模塊頭部的物理位置的地方是必需的。通過在布局模塊頭部時(shí)生成TOC,避免了創(chuàng)建另一數(shù)據(jù)結(jié)構(gòu)來保留該元數(shù)據(jù)的需要。
為向kdata分配復(fù)制段(圖8的步驟807)和空間,使用RAM分配器。注意,對(duì)于ROMIIMAGE分區(qū),該步驟可較早執(zhí)行,但是不順序執(zhí)行,以保持ROMIMAGE和RAMIMAGE過程盡可能地相似。類似于插槽0/1分配,在FileList類中提供了一個(gè)函數(shù)HRESULT DoCopySectionAlloc(Allocator &amp;Alloc);一旦該步驟完成,過程可填滿pToc的RAMStart、RAMFree和RAMEnd屬性。
一旦分配了復(fù)制段,修正內(nèi)核和內(nèi)核模塊,如圖8的步驟806所示的。類似于插槽0/1修正,在FileList類中提供了以下函數(shù)HRESULT DoKemelVAFixups(BOOL fReverse);DoKemelVAFixups重復(fù)通過內(nèi)核模塊的列表,并通過調(diào)用每一Module(模塊)對(duì)象的DoKemelFixups方法來執(zhí)行必需的修正。
在這一點(diǎn)上,已修正了所有東西,并且已執(zhí)行了物理分配。盤映象實(shí)用程序230已與MSPart通信,并具有到分區(qū)搜尋數(shù)據(jù)的句柄。為輸出最終的映象,提供了用于寫分區(qū)的函數(shù)HRESULT DoWriteNKPartition(HVOL hVolume,Allocator &amp;Alloc);對(duì)于RAMIMAGE和ROMIMAGE分區(qū),DoWriteNKPartition創(chuàng)建RAM中分區(qū)的表示,然后將該存儲(chǔ)器塊作為單個(gè)文件輸出,類似于盤映象實(shí)用程序230本身處理BINARY分區(qū)的方法。Alloc自變量對(duì)ROMIMAGE分區(qū)是必需的,它需要在寫出時(shí)跳過RESERVE區(qū)域。
在ROMIMAGE和RAMIMAGE分區(qū)之間只有相對(duì)較小的差異,包括RAMIMAGE分區(qū)的物理布局使用RAM分配器,而ROMIMAGE的物理布局使用父閃存部分的分配器。同樣,對(duì)于RAMIMAGE分區(qū),DoWriteNKPartition也可能失敗,因?yàn)樵陂W存部分上可能沒有足夠的空間。由于ROMIMAGE分區(qū)使用父閃存部分的分配器,對(duì)于ROMIMAGE分區(qū),DoWriteNKPartition應(yīng)當(dāng)從不失敗??梢杂肅和C#來實(shí)現(xiàn),令管理的dskimage.exe作出對(duì)未管理的romimage.dll的調(diào)用。
盤映象實(shí)用程序230負(fù)責(zé)重復(fù)通過FLATRELEASEDIR\DskImage\Partition中的清單(DSM)文件,并將DSM文件條目(和DSM文件本身)添加到文件列表,以由romimage.dll處理。對(duì)于ROMIMAGE分區(qū),盤映象實(shí)用程序230調(diào)用MSPart以在嘗試物理布局之前創(chuàng)建新分區(qū);(對(duì)于RAMIMAGE,它可在任何時(shí)刻創(chuàng)建分區(qū))。在輸出分區(qū)之后,盤映象實(shí)用程序230如上所述地調(diào)整其大小。其它操作由romimage.dll處理。
如上所述,構(gòu)建的另一包分區(qū)類型是IMGFS。鑒于多種原因,這在其它分區(qū)之后構(gòu)建,包括由于Windows CE內(nèi)核強(qiáng)加的限制,對(duì)RAMIMAGE/ROMIMAGE區(qū)域的分配需要首先出現(xiàn),以及IMGFS分區(qū)需要NOR上的SectorInfo。樣本NOR閃存媒體驅(qū)動(dòng)程序假定組織閃存使得包含SectorInfo的分區(qū)在沒有SectorInfo的分區(qū)之后到來。構(gòu)建IMGFS分區(qū)的步驟類似于ROMIMAGE/RAMIMAGE分區(qū)的步驟。以下步驟本質(zhì)上從ROMIMAGE/RAMIMAGE分區(qū)構(gòu)建器中重復(fù)利用構(gòu)建并排序模塊和文件的列表;向所有模塊分配虛擬地址空間;執(zhí)行模塊修正;以及輸出實(shí)際分區(qū)。
IMGFS的物理布局由IMGFS和MSPart處理。類似于RAMIMAGE/ROMIMAGE分區(qū),存在用于寫IMGFS分區(qū)的BuildIMGFSPartitionAPIHRESULT BuildIMGFSPartition(HANDLE hFileList,HANDLE hVolume,HANDLE hSlot0Alloc,HANDLE hSlot1Alloc,DWORD dwReserved);期望指定的插槽0和插槽1分配器與早先用于構(gòu)建RAMIMAGE/ROMIMAGE分區(qū)的分配器相同。
IMGFS負(fù)責(zé)壓縮。默認(rèn)地,壓縮文件和模塊數(shù)據(jù)段。
注意,IMGFS分區(qū)服務(wù)不能包含內(nèi)核模塊(在ce.bib中具有K標(biāo)志的模塊)。由此,在執(zhí)行VA分配之前,BuildIMGFSPartition核實(shí)指定的FileList不包含任何內(nèi)核模塊。
接下來,調(diào)用以下FileList成員函數(shù)1.DoVAAlloc2.DoVAFixups3.DoWriteIMGFSPartition(圖9)如圖9中一般表示的,在執(zhí)行模塊修正之后,過程重復(fù)(步驟900和918)通過指定的文件列表,為每一條目創(chuàng)建IMGFS中的新文件。注意,如果當(dāng)前列表項(xiàng)目是模塊(步驟902),則它在各個(gè)分段上依次處理(步驟904到912)。否則,創(chuàng)建文件(步驟914),并寫數(shù)據(jù)(步驟916)。
構(gòu)建的另一分區(qū)類型是USERSTORE,它本質(zhì)上是用戶期望的任一類型的文件系統(tǒng)。它理想地被設(shè)計(jì)成用于FAT或擴(kuò)展分區(qū)(PART_TYPE 0x04和0x05)。由于在一個(gè)當(dāng)前實(shí)現(xiàn)中,memorycfg.xsd不允許用戶為USERSTORE指定長度,該分區(qū)跨越剩余的閃存。為構(gòu)建USERSTORE,過程調(diào)用FSDMGR來創(chuàng)建指定PART_TYPE的分區(qū),并指令FSDMGR使用閃存部分上的剩余空間,即,通過指定它應(yīng)當(dāng)被自動(dòng)確定大小(由此,在一個(gè)實(shí)現(xiàn)中,有每一閃存部分一個(gè)USERSTORE的限制)。
后處理過程依照本發(fā)明的一個(gè)方面,當(dāng)完成時(shí),盤映象實(shí)用程序已在構(gòu)建系統(tǒng)(如,臺(tái)式機(jī))上生成了單個(gè)文件206,它包含對(duì)應(yīng)于不同文件系統(tǒng)的一個(gè)或多個(gè)分區(qū)。在那些分區(qū)內(nèi),將安裝包內(nèi)容,在適當(dāng)時(shí)在虛擬地址空間修正可執(zhí)行模塊。注意,在這一點(diǎn)上,用戶僅指示硬件的某些細(xì)節(jié),即RAM和存儲(chǔ)位置(地址)、其大小和該存儲(chǔ)是線性還是基于塊的。尚未指定的是閃存是NOR閃存還是NAND閃存,或硬盤驅(qū)動(dòng)器或某些其它類型的存儲(chǔ)的細(xì)節(jié)。存儲(chǔ)技術(shù)可在映象上施加影響,取決于它如何被管理。
例如,閃存通常被劃分成塊,并進(jìn)一步被細(xì)分成頁或扇區(qū),如圖10A和10B中一般表示的。這些子組件的每一個(gè)的大小和存儲(chǔ)技術(shù)標(biāo)識(shí)其每一個(gè)的方式(如數(shù)字地),以及管理每一頁或扇區(qū)的壞/保留/只讀狀態(tài)的方式是存儲(chǔ)技術(shù)專用的。
后處理過程步驟的目的是將這一管理信息以不違反映象布局的要求的方式引入到映象中,如在盤映象實(shí)用程序的輸入文件中所指定的。例如,如果分區(qū)之一要在NOR閃存外執(zhí)行,則有指定它能夠以CPU頁增量被映射到CPU的CPU要求,并且由于存儲(chǔ)管理要求,這無法被改變。
盤映象實(shí)用程序230工具的后處理過程階段用于對(duì)MSPart生成的NB0文件作出存儲(chǔ)硬件專用調(diào)整。例如,如圖10A中所示的,NAND閃存具有在單獨(dú)的空間內(nèi)伴隨扇區(qū)的扇區(qū)信息(每一扇區(qū)的元數(shù)據(jù)m)。然而,NOR硬件需要修改IMGFS分區(qū)以在每一扇區(qū)的塊內(nèi)包括SectorInfo,如在圖10B中由在每一塊的剩余扇區(qū)中維護(hù)的四扇區(qū)塊的三個(gè)扇區(qū)的元數(shù)據(jù)(m)所一般表示的。注意,為進(jìn)行塊對(duì)齊,某些空間未使用,如由圖10B的陰影區(qū)所表示的。具有成對(duì)閃存的設(shè)備制造商也可希望將NB0分離成用于每一閃存部分的單獨(dú)的文件。
后處理器232(圖2,如postproc.exe)可由盤映象實(shí)用程序230在memory.cfg.xml的任一NOR閃存元素上自動(dòng)執(zhí)行。給定NOR元素的ID、VASTART、BLOCKSIZE和SECTORSIZE屬性,后處理器輸出ID.nb0.postproc和ID.bin。為進(jìn)一步后處理盤映象實(shí)用程序230的輸出,用戶(如,OEM)可創(chuàng)建一postdiskimage.bat文件,它由buildpkg腳本在盤映象實(shí)用程序230過程完成之后調(diào)用。
在操作中,后處理器232打開NB0,并找出主引導(dǎo)記錄,并使用其中的數(shù)據(jù)來查找IMGFS分區(qū)。后處理器232然后以(例如,NOR)塊驅(qū)動(dòng)程序能夠理解的格式向每一扇區(qū)添加扇區(qū)數(shù)據(jù)。后處理器232也移動(dòng)USERSTORE(如果存在的話)的起始,并保存修改的NB0,因?yàn)樵谙騃MGFS添加了扇區(qū)數(shù)據(jù)之后,它不再對(duì)應(yīng)于閃存塊的起始。后處理器232還可將修改的NB0轉(zhuǎn)換成用于傳統(tǒng)引導(dǎo)加載器的二進(jìn)制文件。
如可從以上詳細(xì)描述所見到的,提供了一種將操作系統(tǒng)映象組件轉(zhuǎn)換成基于文件系統(tǒng)的制造映象的機(jī)制。該映象文件獨(dú)立于任一特定的存儲(chǔ)技術(shù),并適合用作初始映象,同時(shí)方便了設(shè)備的組件化更新,盡管本發(fā)明易受各種修改和替換構(gòu)造的影響,仍在附圖中示出了某些說明的實(shí)施例并在上文詳細(xì)描述了它們。然而應(yīng)當(dāng)理解,這并非將本發(fā)明限于所揭示的具體形式,而是相反,本發(fā)明覆蓋落入本發(fā)明的精神和范圍之內(nèi)的所有修改、替換構(gòu)造和等效技術(shù)方案。
權(quán)利要求
1.在計(jì)算環(huán)境中,一種方法,其特征在于,它包括訪問包含要安裝到第一存儲(chǔ)媒質(zhì)上的映象數(shù)據(jù)的包;訪問將向其寫入所述包內(nèi)容的分區(qū)的描述;以及生成一向第二存儲(chǔ)媒質(zhì)的輸出文件,所述輸出文件包含分區(qū),使所述每一包的內(nèi)容基于所述描述儲(chǔ)存在所述分區(qū)之一中。
2.如權(quán)利要求1所述的方法,其特征在于,它還包括訪問一存儲(chǔ)器配置文件以確定所述輸出文件內(nèi)所述分區(qū)的至少一個(gè)的位置。
3.如權(quán)利要求1所述的方法,其特征在于,所述至少一個(gè)包的內(nèi)容對(duì)應(yīng)于一操作系統(tǒng)組件,其中,所述分區(qū)之一包括一系統(tǒng)分區(qū),且所述方法還包括基于所述描述將所述操作系統(tǒng)組件寫入所述系統(tǒng)分區(qū)中。
4.如權(quán)利要求1所述的方法,其特征在于,所述至少一個(gè)包的內(nèi)容對(duì)應(yīng)于一內(nèi)核組件,其中,所述分區(qū)之一包括一基于RAM的映象分區(qū),且所述方法還包括基于所述描述將所述內(nèi)核組件寫入所述基于RAM的映象分區(qū)中。
5.如權(quán)利要求1所述的方法,其特征在于,所述至少一個(gè)包的內(nèi)容對(duì)應(yīng)于一內(nèi)核組件,其中,所述分區(qū)之一包括一基于ROM的映象分區(qū),并且所述方法還包括基于所述描述將所述內(nèi)核組件寫入所述基于ROM的映象分區(qū)中。
6.如權(quán)利要求1所述的方法,其特征在于,所述至少一個(gè)包的內(nèi)容對(duì)應(yīng)于一更新加載器組件,其中,所述分區(qū)之一包括一二進(jìn)制映象分區(qū),且所述方法還包括基于所述描述將所述更新加載器組件寫入所述二進(jìn)制映象分區(qū)中。
7.如權(quán)利要求1所述的方法,其特征在于,生成所述輸出文件包括向擴(kuò)展到所述文件的末端的分區(qū)寫入數(shù)據(jù)、以及基于所寫入的實(shí)際數(shù)據(jù)量調(diào)整所述分區(qū)的大小。
8.如權(quán)利要求1所述的方法,其特征在于,生成所述輸出文件包括向擴(kuò)展到所述文件的末端的分區(qū)寫入數(shù)據(jù)、在所寫入的數(shù)據(jù)的末端之后添加一空閑空間緩沖區(qū)、以及基于所寫入的實(shí)際數(shù)據(jù)量和所述空閑空間緩沖區(qū)調(diào)整所述分區(qū)的大小。
9.如權(quán)利要求1所述的方法,其特征在于,它還包括向所述文件中的一主引導(dǎo)記錄寫入數(shù)據(jù)以定義分區(qū)。
10.如權(quán)利要求1所述的方法,其特征在于,向主引導(dǎo)記錄寫入數(shù)據(jù)包括定義一用戶存儲(chǔ)分區(qū)。
11.如權(quán)利要求1所述的方法,其特征在于,它還包括向所述輸出文件寫入額外的數(shù)據(jù)。
12.如權(quán)利要求1所述的方法,其特征在于,它還包括執(zhí)行一后處理過程以準(zhǔn)備將數(shù)據(jù)從所述輸出文件傳輸?shù)剿龅谝淮鎯?chǔ)媒質(zhì)中。
13.如權(quán)利要求12所述的方法,其特征在于,所述第一存儲(chǔ)媒質(zhì)包括閃存,其中的代碼可原地執(zhí)行,且所述方法還包括訪問一存儲(chǔ)器配置文件以修正所述分區(qū)的至少一個(gè),使得其中的代碼將在原地執(zhí)行。
14.如權(quán)利要求1所述的方法,其特征在于,它還包括訪問一存儲(chǔ)器配置文件以確定所述第一存儲(chǔ)媒質(zhì)的哪些區(qū)段被保留。
15.一個(gè)或多個(gè)具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒質(zhì),當(dāng)所述指令被執(zhí)行時(shí),執(zhí)行權(quán)利要求1所述的方法。
16.在計(jì)算環(huán)境中,一種方法,其特征在于,它包括訪問一包含分區(qū)的文件,所述分區(qū)包含要安裝到一存儲(chǔ)媒質(zhì)的映象數(shù)據(jù);以及處理所述文件以在所述分區(qū)和文件系統(tǒng)布局中引入一特定存儲(chǔ)技術(shù)所要求的任何修改。
17.如權(quán)利要求16所述的方法,其特征在于,它還包括將數(shù)據(jù)從所述文件傳輸?shù)綄?duì)應(yīng)于所述特定存儲(chǔ)技術(shù)的存儲(chǔ)媒質(zhì)中。
18.如權(quán)利要求16所述的方法,其特征在于,它還包括訪問一存儲(chǔ)器配置文件以確定所述輸出文件內(nèi)所述分區(qū)的至少一個(gè)的位置。
19.如權(quán)利要求16所述的方法,其特征在于,所述映象數(shù)據(jù)對(duì)應(yīng)于包,并且所述方法還包括根據(jù)一分區(qū)—包映射文件和一存儲(chǔ)器配置文件生成所述文件。
20.一個(gè)或多個(gè)具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒質(zhì),當(dāng)所述指令被執(zhí)行時(shí),執(zhí)行權(quán)利要求17所述的方法。
21.在計(jì)算環(huán)境中,一種系統(tǒng),其特征在于,它包括一個(gè)盤映象實(shí)用程序過程,它輸入一包含分區(qū)信息和包信息的分區(qū)—包映射文件,并基于所述文件中的數(shù)據(jù),使用所述包信息中標(biāo)識(shí)的包輸出一映象文件,所述映象文件包括所述分區(qū)信息中標(biāo)識(shí)的多個(gè)分區(qū),使所述每一包的內(nèi)容基于所述描述儲(chǔ)存在所述分區(qū)之一中;以及一后處理過程,它處理所述映象文件以在所述映象中引入一特定存儲(chǔ)技術(shù)所要求的任何修改。
22.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述盤映象實(shí)用程序過程還輸入一包含指示如何配置設(shè)備的存儲(chǔ)器的數(shù)據(jù)的存儲(chǔ)器配置文件。
23.如權(quán)利要求22所述的系統(tǒng),其特征在于,所述設(shè)備用其代碼可在原地執(zhí)行的存儲(chǔ)器來配置,并且其中,訪問所述存儲(chǔ)器配置文件以修正所述分區(qū)的至少一個(gè),使得其中的代碼將在原地執(zhí)行。
24.如權(quán)利要求22所述的系統(tǒng),其特征在于,訪問所述存儲(chǔ)器配置文件以確定設(shè)備存儲(chǔ)器的哪些區(qū)段被保留。
25.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述至少一個(gè)包的內(nèi)容對(duì)應(yīng)于一操作系統(tǒng)組件,其中,所述分區(qū)之一包括一系統(tǒng)分區(qū),并且其中,所述盤映象實(shí)用程序基于所述描述將所述操作系統(tǒng)組件寫入所述系統(tǒng)分區(qū)中。
26.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述至少一個(gè)包的內(nèi)容對(duì)應(yīng)于一內(nèi)核組件,其中,所述分區(qū)之一包括一基于RAM的映象分區(qū),并且其中,所述盤映象實(shí)用程序基于所述描述將所述內(nèi)核組件寫入所述基于RAM的映象分區(qū)中。
27.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述至少一個(gè)包的內(nèi)容對(duì)應(yīng)于一內(nèi)核組件,其中,所述分區(qū)之一包括一基于ROM的映象分區(qū),并且其中,所述盤映象實(shí)用程序基于所述描述將所述內(nèi)核組件寫入所述基于ROM的映象分區(qū)中。
28.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述至少一個(gè)包的內(nèi)容對(duì)應(yīng)于一更新加載器組件,其中,所述分區(qū)之一包括一二進(jìn)制映象分區(qū),并且其中,所述盤映象實(shí)用程序基于所述描述將所述更新加載器寫入所述二進(jìn)制映象分區(qū)中。
29.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述盤映象實(shí)用程序向擴(kuò)展到所述文件的末端的分區(qū)寫入數(shù)據(jù),并基于所寫入的實(shí)際數(shù)據(jù)量調(diào)整所述分區(qū)的大小。
30.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述盤映象使用程序向擴(kuò)展到所述文件的末端的分區(qū)寫入數(shù)據(jù)、在所寫入的數(shù)據(jù)的末端之后添加一空閑空間緩沖區(qū)、并基于所寫入的實(shí)際數(shù)據(jù)量和所述空閑空間緩沖區(qū)調(diào)整所述分區(qū)的大小。
31.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述盤映象實(shí)用程序向所述文件中的一主引導(dǎo)記錄寫入數(shù)據(jù),以定義分區(qū)。
32.如權(quán)利要求31所述的系統(tǒng),其特征在于,所述盤映象實(shí)用程序通過向所述主引導(dǎo)記錄寫入數(shù)據(jù)定義一用戶存儲(chǔ)分區(qū)。
33.在其上儲(chǔ)存了一數(shù)據(jù)結(jié)構(gòu)的至少一個(gè)計(jì)算機(jī)可讀媒質(zhì),其特征在于,它包括包括定義所述數(shù)據(jù)結(jié)構(gòu)中的分區(qū)的一主引導(dǎo)記錄的第一組數(shù)據(jù),每一分區(qū)對(duì)應(yīng)于一文件系統(tǒng);包括一二進(jìn)制分區(qū)的第二組數(shù)據(jù);包括一基于存儲(chǔ)的分區(qū)的第三組數(shù)據(jù);包括一系統(tǒng)分區(qū)的第四組數(shù)據(jù);以及其中,處理所述數(shù)據(jù)結(jié)構(gòu)以在一存儲(chǔ)媒質(zhì)上創(chuàng)建一操作系統(tǒng)映象。
34.如權(quán)利要求33所述的在其上儲(chǔ)存了所述數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述二進(jìn)制分區(qū)包含更新加載器代碼。
35.如權(quán)利要求34所述的在其上儲(chǔ)存了所述數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述更新加載器代碼在所述二進(jìn)制分區(qū)中被壓縮。
36.如權(quán)利要求33所述的在其上儲(chǔ)存了所述數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述基于存儲(chǔ)的分區(qū)包括一包含內(nèi)核代碼的RAM映象分區(qū)。
37.如權(quán)利要求36所述的在其上儲(chǔ)存了所述數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述內(nèi)核代碼在所述RAM映象分區(qū)中被壓縮。
38.如權(quán)利要求33所述的在其上儲(chǔ)存了所述數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述基于存儲(chǔ)的分區(qū)包括一包含內(nèi)核代碼的ROM映象分區(qū)。
39.如權(quán)利要求33所述的在其上儲(chǔ)存了所述數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述系統(tǒng)分區(qū)包含操作系統(tǒng)組件。
40.如權(quán)利要求33所述的在其上儲(chǔ)存了所述數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述第一組數(shù)據(jù)中的主引導(dǎo)記錄將一用戶存儲(chǔ)分區(qū)定義為所定義的分區(qū)之一。
41.如權(quán)利要求33所述的在其上儲(chǔ)存了所述數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀媒質(zhì),其特征在于,它還包括包含初始程序加載器代碼的第五組數(shù)據(jù)。
全文摘要
所描述的是一種用于制造計(jì)算機(jī)設(shè)備的系統(tǒng)和方法,其中,單個(gè)制造映象文件包含可向其寫入個(gè)別的操作系統(tǒng)組件包的內(nèi)部分區(qū)和文件系統(tǒng)布局。該映象文件獨(dú)立于任何特定的存儲(chǔ)技術(shù)。為生成該文件,盤映象實(shí)用程序輸入一存儲(chǔ)器配置文件和一包—分區(qū)映射文件,以在該映象文件內(nèi)創(chuàng)建該分區(qū)/文件系統(tǒng)。操作系統(tǒng)組件(包)被寫入分區(qū)中。為在一特定存儲(chǔ)設(shè)備上儲(chǔ)存(如,閃存)該映象文件的數(shù)據(jù),后處理過程該映象文件以定制用于特定存儲(chǔ)設(shè)備的數(shù)據(jù)。
文檔編號(hào)G06F9/445GK1645323SQ20041010201
公開日2005年7月27日 申請(qǐng)日期2004年12月16日 優(yōu)先權(quán)日2003年12月16日
發(fā)明者A·羅杰斯, J·格勞姆, M·同科洛維茨 申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
泸西县| 宜黄县| 抚松县| 通州区| 宜昌市| 登封市| 隆林| 怀柔区| 汕尾市| 大竹县| 图片| 保德县| 中卫市| 乐山市| 铁岭县| 湘乡市| 华安县| 台北县| 青河县| 连云港市| 昔阳县| 滦平县| 永登县| 金秀| 讷河市| 洱源县| 时尚| 田东县| 凤山县| 万全县| 义马市| 轮台县| 阳朔县| 礼泉县| 贡山| 张家川| 浙江省| 中超| 江达县| 北安市| 义马市|