本發(fā)明屬于涉及嵌入式技術(shù)領(lǐng)域,涉及一種嵌入式實時操作系統(tǒng)的補丁文件系統(tǒng)實現(xiàn)方法。
背景技術(shù):在嵌入式實時操作系統(tǒng)中,如果需要實現(xiàn)動態(tài)更新功能,就會涉及到補丁文件系統(tǒng)的設(shè)計和實現(xiàn)。現(xiàn)在的嵌入式開發(fā)板外部存儲大部分是采用NandFlash。NandFlash有這么一個特點,寫數(shù)據(jù)的最小單位是頁(page,2KB),擦除數(shù)據(jù)的最小單位是塊(block,128KB,一個塊一般由64個頁組成)。傳統(tǒng)的補丁文件系統(tǒng)為了在寫入補丁數(shù)據(jù)之前方便實現(xiàn)存儲空間的清空,使用一個塊來存放單個補丁文件,這極大的造成了Flash存儲空間的浪費。其次,NandFlash塊擦除次數(shù)有限制,超過最大擦除次數(shù)就會報廢,傳統(tǒng)的補丁文件系統(tǒng)涉及頻繁的擦除塊,這將對系統(tǒng)帶來嚴(yán)重的損耗。另外,所有補丁文件按照寫入NandFlash時間順序存儲,當(dāng)需要使用某一補丁時,需要遍歷整個補丁系統(tǒng)表,導(dǎo)致時間復(fù)雜度高。針對上述現(xiàn)有技術(shù)存在的缺陷,實有必要進(jìn)行開發(fā)研究,以提供一種方案,克服傳統(tǒng)補丁文件系統(tǒng)空間開銷大、系統(tǒng)損耗大和時間復(fù)雜度高的缺點。
技術(shù)實現(xiàn)要素:為解決上述問題,本發(fā)明的目的在于提供一種嵌入式實時操作系統(tǒng)的補丁文件系統(tǒng)實現(xiàn)方法,可快速完成補丁文件的存放和讀取操作,大幅度減少了存儲空間的浪費,且最大化減少NandFlash的擦除次數(shù),延長使用壽命。為實現(xiàn)上述目的,本發(fā)明的技術(shù)方案為:一種嵌入式實時操作系統(tǒng)的補丁文件系統(tǒng)實現(xiàn)方法,包括如下步驟:S10:根據(jù)可更新模塊數(shù)建立補丁系統(tǒng)表,并根據(jù)每個模塊最多補丁版本數(shù)建立補丁集合表,建立補丁信息表;S11:選取補丁文件存放基地址;S12:根據(jù)補丁文件的大小分配頁空間數(shù);S13:分配頁空間數(shù)完成之后,檢查頁空間的位置信息;S14:往分配的空間中寫入補丁文件;S15:寫入補丁文件后,更新該補丁對應(yīng)模塊的補丁集合表。進(jìn)一步地,步驟S11中,所述補丁文件存放基地址為NandFlash一個塊的起始地址。進(jìn)一步地,步驟S12中,所述頁空間數(shù)為能存放補丁文件的最小頁數(shù)。進(jìn)一步地,步驟S13中,若新分配的頁空間都在當(dāng)前塊,此時不需要擦除下一個塊;若新分配的頁空間在前后空間都有,此時需要擦除下一個塊;若新分配的頁空間全部在下一個塊,此時需要擦除下一個塊。進(jìn)一步地,當(dāng)需要使用某版本補丁時,首先通過補丁系統(tǒng)表快速定位到該補丁對應(yīng)模塊的補丁集合表,接著根據(jù)補丁集合表快速定位到該版本補丁的補丁信息表,然后通過補丁信息表獲取到該版本補丁在NandFlash中的存放首地址,最后調(diào)用讀操作讀取該補丁文件相較于現(xiàn)有技術(shù),本發(fā)明一種嵌入式實時操作系統(tǒng)的補丁文件系統(tǒng)實現(xiàn)方法通過上述嵌入式實時操作系統(tǒng)補丁文件系統(tǒng)可以快速完成補丁文件的存放和讀取操作;其中,補丁文件按頁大小分配空間,大幅度減少了存儲空間的浪費;而且按照需要進(jìn)行塊擦除,最大化減少NandFlash的擦除次數(shù),延長使用壽命。附圖說明圖1是本發(fā)明的流程圖示。圖2是本發(fā)明的分配的頁空間都在當(dāng)前塊的示意圖。圖3是本發(fā)明的分配的頁空間前后兩個塊都有的示意圖。圖4是本發(fā)明的分配的頁空間都在后一個塊的示意圖。具體實施方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。如圖1所示,本發(fā)明一種嵌入式實時操作系統(tǒng)的補丁文件系統(tǒng)實現(xiàn)方法,包括如下步驟:S10:根據(jù)可更新模塊數(shù)建立補丁系統(tǒng)表,并根據(jù)每個模塊最多補丁版本數(shù)建立補丁集合表,建立補丁信息表;S11:選取補丁文件存放基地址,其中,該地址為NandFlash一個塊的起始地址;S12:根據(jù)補丁文件的大小分配NandFlash的頁空間數(shù),該頁空間數(shù)為能存放補丁文件的最小頁數(shù);S13:分配頁空間數(shù)完成之后,檢查頁空間的位置信息;其中,當(dāng)新分配的頁空間都在當(dāng)前塊,此時不需要擦除下一個塊;若新分配的頁空間在前后空間都有,此時需要擦除下一個塊;若新分配的頁空間全部在下一個塊,此時需要擦除下一個塊;S14:往分配的NandFlash空間中寫入補丁文件;S15:寫入補丁文件后,更新該補丁對應(yīng)模塊的補丁集合表。當(dāng)需要使用某版本補丁時,首先通過補丁系統(tǒng)表快速定位到該補丁對應(yīng)模塊的補丁集合表,接著根據(jù)補丁集合表快速定位到該版本補丁的補丁信息表,然后通過補丁信息表獲取到該版本補丁在NandFlash中的存放首地址,最后調(diào)用讀操作讀取該補丁文件。作為本發(fā)明一實施例,如表1所示,根據(jù)可更新模塊數(shù)建立補丁系統(tǒng)表,包括有可更新模塊編號以及該模塊補丁集合表。如表2所示,根據(jù)每個模塊最多補丁版本數(shù)建立補丁集合表,包括有補丁版本號以及該版本補丁信息。如表3所示,建立補丁信息表,包括字段以及該字段的含義。選取補丁文件存放基地址,該地址必須為一個塊的起始地址。當(dāng)需要存放補丁文件時,根據(jù)補丁文件的大小分配NandFlash的頁空間數(shù),該頁空間數(shù)為能存放補丁文件的最小頁數(shù)。比如當(dāng)補丁文件為3.5KB時,就需要分配2個頁空間。分配完成之后,檢查頁空間的位置信息,其中,分以下三種情況:如圖2所示,新分配的頁空間都在當(dāng)前塊,此時不需要擦除下一個塊;如圖3所示,新分配的頁空間在前后空間都有,此時需要擦除下一個塊;如圖4所示,新分配的頁空間全部在下一個塊,此時需要擦除下一個塊。往分配的NandFlash空間中寫入補丁文件,寫入補丁文件數(shù)據(jù)之后,需要更新該補丁對應(yīng)模塊的補丁集合表。若需要使用某版本補丁,首先補丁系統(tǒng)表快速定位到該補丁對應(yīng)模塊的補丁集合表,接著根據(jù)補丁集合表快速定位到該版本補丁的補丁信息表,然后通過補丁信息表獲取到該版本補丁在NandFlash中的存放首地址,最后調(diào)用讀操作讀取該補丁文件。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。