專利名稱:一種非易失性數(shù)據(jù)的存儲和檢索方法及裝置的制作方法
技術領域:
本發(fā)明涉及通信系統(tǒng)中的數(shù)據(jù)存儲技術,尤其涉及一種非易失性數(shù)據(jù)的存 儲和檢索方法及裝置。
背景技術:
隨著移動通信技術的發(fā)展,終端的更新速度也越來越快,各終端制造商為 了吸引更多的用戶在不斷研制具備多種業(yè)務功能的終端產品。終端制造商在研 制過程中借助于終端軟件平臺進行終端功能的開發(fā),在開發(fā)過程中將涉及到多
種不同種類的非易失性數(shù)據(jù),例如終端的出廠參數(shù)、物理層參數(shù)、通信協(xié)議 和網(wǎng)絡參數(shù)等,細分其數(shù)量大概有十萬個,因此,對終端非易失性數(shù)據(jù)的組織 管理很重要。
對非易失性數(shù)據(jù)的組織方法包括存儲和檢索。目前,對非易失性數(shù)據(jù) 的組織方法為采用數(shù)組結構進行存儲,采用Id索引訪問方法進行檢索。但 是,由于數(shù)組自身線性結構的限制,即數(shù)組中的每個數(shù)據(jù)項按照對應的編號 排列,所述編號按由小到大、或由大到小順序排列,如1、 2、 3、 4、 5等等, 如果要在數(shù)組中插入或刪除數(shù)據(jù)項,則需重新對數(shù)組中的數(shù)據(jù)項進行編號,因 此,數(shù)組中的非易失性數(shù)據(jù)難以擴展、移植過程繁瑣、可嵌套性差;由于非易 失性數(shù)據(jù)的^f企索是依據(jù)不同數(shù)據(jù)項對應的編號進行的,因此檢索方法不夠直觀; 此外,非易失性數(shù)據(jù)存儲時數(shù)據(jù)項的存儲空間大小需相同,這樣,導致部分數(shù) 據(jù)項對應的存儲空間沒有得到充分利用,浪費了很多存儲空間,使得存儲空間 的利用率不高。
發(fā)明內容
有鑒于此,本發(fā)明的主要目的在于提供一種非易失性數(shù)據(jù)的存儲和檢索方
4法及裝置,使得存儲的終端非易失性數(shù)據(jù)易于擴展、可深層嵌套,提高存儲空 間利用率,且檢索方法直觀。
為達到上述目的,本發(fā)明的技術方案是這樣實現(xiàn)的 本發(fā)明提出了一種非易失性數(shù)據(jù)的存儲和檢索方法,該方法包括 將已分類的非易失性數(shù)據(jù)定義為樹形結構,并對樹中節(jié)點賦值; 對節(jié)點已被賦值的樹形結構進行編譯鏈接,燒寫編譯鏈接的結果并存儲燒 寫時的基地址;
根據(jù)編譯鏈接的結果及燒寫時的基地址計算待檢索的非易失性數(shù)據(jù)的偏 移和大小,根據(jù)燒寫時的基地址和對待檢索非易失性數(shù)據(jù)的偏移和大小的計算 結果檢索非易失性數(shù)據(jù)。
其中,所述將已分類的非易失性數(shù)據(jù)定義為樹形結構之前,還包括
將非易失性數(shù)據(jù)按需求進行分類。
其中,所述將已分類的非易失性數(shù)據(jù)定義為樹形結構時采用C語言;相應
的,
所述根據(jù)編譯鏈接的結果及燒寫時的基地址計算待檢索的非易失性數(shù)據(jù) 的偏移和大小,具體為
以編譯鏈接的結果及燒寫時的基地址為依據(jù),運用C語言所提供的數(shù)據(jù)偏 移的計算方法offsetof和數(shù)據(jù)大小的計算方法sizeof計算待檢索的非易失性數(shù)據(jù) 的偏移和大小。
上述方案中,需對所述非易失性數(shù)據(jù)進行擴展時,該方法進一步包括將 新增加的非易失性數(shù)據(jù)進行分類,并接入原已定義的樹形結構中形成新的節(jié) 點,對整個新的樹形結構重新進行編譯鏈接及燒寫操作。
其中,所述將非易失性數(shù)據(jù)按需求進行分類,為按非易失性數(shù)據(jù)的不同 應用業(yè)務領域、或按非易失性數(shù)據(jù)的不同數(shù)據(jù)類型對非易失性數(shù)據(jù)進行分類。
本發(fā)明還提出了一種非易失性數(shù)據(jù)的存儲和檢索裝置,該裝置包括定義 模塊、編譯模塊、燒寫模塊、計算模塊和檢索模塊;其中,
所述定義模塊,用于將已分類的非易失性數(shù)據(jù)定義為樹形結構,并對樹中節(jié)點賦值,將定義及賦值的結果發(fā)送到編譯模塊;
所述編譯模塊,用于根據(jù)定義模塊所定義的并對節(jié)點已賦值的樹形結構執(zhí) 行編譯鏈接操作,并將編譯鏈接的結果通知燒寫模塊;
所述燒寫模塊,用于燒寫編譯模塊所發(fā)的編譯鏈接的結果,并存儲燒寫時 的基地址;
所述計算模塊,用于根據(jù)燒寫模塊燒寫的編譯鏈接的結果及燒寫時的基地 址計算待檢索的非易失性數(shù)據(jù)的偏移和大小,并將計算結果發(fā)送到檢索模塊;
所述檢索模塊,用于根據(jù)燒寫模塊燒寫時的基地址和計算模塊對待檢索非 易失性數(shù)據(jù)的偏移和大小的計算結果檢索非易失性數(shù)據(jù)。
該裝置進一步包括分類模塊,用于將非易失性數(shù)據(jù)按需求進行分類,并將 分類結果通知定義^t塊。
其中,所述定義模塊將已分類的非易失性數(shù)據(jù)定義為樹形結構時采用C語 言;相應的,
所述計算模塊根據(jù)燒寫模塊燒寫的編譯鏈接的結果及燒寫時的基地址計算 待檢索的非易失性數(shù)據(jù)的偏移和大小,具體為
以燒寫模塊燒寫的編譯鏈接的結果及燒寫時的基地址為依據(jù),運用C語言 所提供的數(shù)據(jù)偏移的計算方法offsetof和數(shù)據(jù)大小的計算方法sizeof計算待檢索 的非易失性數(shù)據(jù)的偏移和大小。
上述方案中,所述分類模塊將非易失性數(shù)據(jù)按需求進行分類,為按非易 失性數(shù)據(jù)的不同應用業(yè)務領域、或按非易失性數(shù)據(jù)的不同數(shù)據(jù)類型對非易失性 數(shù)據(jù)進行分類。
本發(fā)明提供的非易失性數(shù)據(jù)的存儲和檢索方法及裝置,將已分類的非易失 性數(shù)據(jù)定義為樹形結構,并對樹中節(jié)點f武值;對節(jié)點已凈皮賦值的樹形結構進行 編譯鏈接,燒寫編譯鏈接的結果并存儲燒寫時的基地址;根據(jù)編譯鏈接的結果 及燒寫時的基地址計算待檢索的非易失性數(shù)據(jù)的偏移和大小,根據(jù)燒寫時的基 地址和對待檢索非易失性數(shù)據(jù)的偏移和大小的計算結果檢索非易失性數(shù)據(jù)。本
發(fā)明中的非易失性數(shù)據(jù)定義為樹形結構,如要增加樹形結構中某一層的分支或
6增加樹形結構的層數(shù),只需增加相應的代碼行即可,而不需修改原有代碼,相
對數(shù)組結構來說易于擴展和深層嵌套;非易失性數(shù)據(jù)的存儲過程中,由于樹形 結構中的不同節(jié)點對應的存儲空間大小可以不相同,節(jié)點的大小與存儲空間的 大小一致,因此節(jié)省了存儲空間,利用率得到了提高;此外,檢索過程是以非 易失性數(shù)據(jù)對應的參數(shù)名稱為依據(jù)進行的,因此檢索方法相對現(xiàn)有技術具有良 好的直觀性。
圖1為本發(fā)明非易失性數(shù)據(jù)的存儲和檢索方法實現(xiàn)流程示意圖; 圖2為各非易失性數(shù)據(jù)組成的樹形結構示意圖; 圖3為編譯鏈接所得的樹形結構中各節(jié)點的存儲布局結構示意圖; 圖4為本發(fā)明非易失性數(shù)據(jù)的存儲和檢索裝置結構示意圖。
具體實施例方式
本發(fā)明的基本思想是將已分類的非易失性數(shù)據(jù)定義為樹形結構,并對樹 中節(jié)點賦值;對節(jié)點已被賦值的樹形結構進行編譯鏈接,燒寫編譯鏈接的結果 并存儲燒寫時的基地址;根據(jù)編譯鏈接的結果及燒寫時的基地址計算待檢索的 非易失性數(shù)據(jù)的偏移和大小,根據(jù)燒寫時的基地址和對待檢索非易失性數(shù)據(jù)的 偏移和大小的計算結果檢索非易失性數(shù)據(jù)。
本發(fā)明方案在實施過程中所釆用的編譯語言可為C、 VB或Java等;對于 不同的設備所述非易失性數(shù)據(jù)可為不同種類,如終端非易失性數(shù)據(jù)、或測控 設備非易失性數(shù)據(jù)等。
下面以編譯語言為C,非易失性數(shù)據(jù)為終端非易失性數(shù)據(jù)為例對本發(fā)明作 進一步詳細說明。
圖1為本發(fā)明非易失性數(shù)據(jù)的存儲和檢索方法實現(xiàn)流程示意圖,如圖1所 示,該流程包括以下步驟
步驟101:將非易失性數(shù)據(jù)按需求進行分類;這里,可按非易失性數(shù)據(jù)的不同應用業(yè)務領域、或按非易失性數(shù)據(jù)的不同 數(shù)據(jù)類型等需求對終端非易失性數(shù)據(jù)進行分類,例如,如果按非易失性數(shù)據(jù)的
不同數(shù)據(jù)類型進4亍分類,方法可為將終端非易失性數(shù)據(jù)對應的參數(shù)分為只讀 參數(shù)和可讀寫參數(shù);所述只讀參數(shù)又分為校準參數(shù)CLIB和固定參數(shù)FIXED等, 用于對終端功能參數(shù)進行校準;將所述可讀寫參數(shù)又分為MMI參數(shù)、AFC參 數(shù)、RTC參數(shù)及CSD參數(shù)等,用于表示終端的不同功能特性。 步驟102:定義已分類的非易失性數(shù)據(jù)樹的結構;
具體為采用C語言的數(shù)據(jù)結構(struct)的定義方式將已分類的非易失性 數(shù)據(jù)定義為樹形結構,可用偽代碼表示如下
首先,定義樹形結構根節(jié)點下的第一層,這里,根節(jié)點nvjaram下的第一 層包括兩個節(jié)點,分別為非易失性數(shù)據(jù)中的可讀寫參數(shù)nv—dynamic和非易失 性數(shù)據(jù)中的只讀參數(shù)nv—static,代碼為
Struct nv_param
nv_static;/* read only parameters */ nv_dynamic; /* read/write parameters */
這里,所述根節(jié)點nvj)aram,表示所定義初t形結構中的任一節(jié)點為非易失 性數(shù)據(jù)。
再定義樹形結構的第二層,即第 一層節(jié)點nv_static和nv—dynamic下的分支, 第一層節(jié)點nv_static下的分支包括三個節(jié)點,分別為校準參數(shù)clib、空余空 間參數(shù)spare和固定參數(shù)fixed,代碼為
Struct nv—static
clib; / * Calibration parameters */ spare; /* Spare area */ fixed; /* Fixed parameters */
8第一層節(jié)點nv—dynamic下的分支包括四個節(jié)點,分別為界面接入?yún)?shù) mmi、自動屏蔽控制參數(shù)afc、實時傳輸控制參數(shù)rtc和csd,代碼為 Struct nv一dynamic
mmi; / * mmi parameters */ afc; /* afc parameters */ rtc; /* rtc parameters */ csd; /* csd parameters */
}
這里,從根節(jié)點開始逐層定義非易失性數(shù)據(jù)樹的結構,所生成的樹形結構 如圖2所示,可以看出,如果要增加樹形結構中某一層的分支或增加樹形結構 的層數(shù),只需增加相應的代碼行即可,不需修改原有代碼。
步驟103:對定義的非易失性數(shù)據(jù)樹中的節(jié)點進行賦值;
具體為對非易失性數(shù)據(jù)組成的樹形結構中的每個節(jié)點進行初始化賦值, 即分別為樹形結構中的每個節(jié)點賦初始值,在樹形結構中每個節(jié)點的對應位 置寫入相應的非易失性數(shù)據(jù)。
這里,根據(jù)節(jié)點設置的不同,所述初始值在終端的應用過程中可固定不變 也可根據(jù)實際應用進行相應修改。
步驟104:對節(jié)點已被賦值的樹形結構進行編譯鏈接,燒寫編譯鏈接的結 果并存儲燒寫時的基地址;
具體為樹形結構定義及賦值完成后開始運行代碼,C語言編譯器對生成 的樹形結構進行編譯鏈接,得到樹形結構中各節(jié)點的存儲布局,此時,經編譯 鏈接所得的存儲布局存儲于內存中,需將所述存儲布局燒寫到非易失性存儲器, 如可擦除可編程只讀內存(EPROM)或閃存(flash)中,即從EPROM或 flash的某個位置開始燒寫樹形結構中所有非易失性數(shù)據(jù)的節(jié)點,其中,所述 EPROM或flash的某個位置,即為燒寫時的基地址、或稱為首地址,存儲該基地址以便后續(xù)檢索過程中使用。
圖3為編譯鏈接所得的樹形結構中各節(jié)點的存儲布局,可以看出,不同的 節(jié)點對應的存^f渚空間大小也不相同,節(jié)點的大小與存^f渚空間的大小一致,即 節(jié)點較大時對應較大的存儲空間,節(jié)點較小時對應較小的存儲空間,因此存儲 空間利用率高。
這里,所述C語言編譯器的編譯鏈接過程和所述的燒寫過程為現(xiàn)有技術, 不再進一步詳述。
步驟105:根據(jù)編譯鏈接的結果及燒寫時的基地址計算待檢索的非易失性 數(shù)據(jù)的偏移和大??;
具體為如果要檢索某個非易失性數(shù)據(jù),可將待檢索的非易失性數(shù)據(jù)對應 的參數(shù)名稱,如spare通知編譯器,之后編譯器結合編譯鏈接所得的樹形結構 中各節(jié)點的存儲布局和燒寫時的基地址,運用C語言所提供的數(shù)據(jù)大小的計算 方法sizeof和數(shù)據(jù)偏移的計算方法offsetof計算非易失性數(shù)據(jù) spare的大小和偏 移。關于sizeof和offsetof兩種算法的具體實現(xiàn)過程為現(xiàn)有技術,這里不再詳迷。
這里可以看出,本發(fā)明在對非易失性數(shù)據(jù)進行檢索的過程中,只需將待片企 索的非易失性數(shù)據(jù)對應的參數(shù)名稱通知編譯器實現(xiàn)后續(xù)的檢索操作,即檢索 操作是依據(jù)非易失性數(shù)據(jù)對應的參數(shù)名稱進行的,沒有借助中間參數(shù),如編號 執(zhí)行檢索操作,因此檢索方法達到了直觀性要求。
步驟106:根據(jù)燒寫時的基地址和對待檢索非易失性數(shù)據(jù)的偏移和大小的 計算結果4企索非易失性數(shù)據(jù)。
這里,如果要對原有的非易失性數(shù)據(jù)進行調整,如擴展等,則重新執(zhí)行 步驟101至步驟104,將新增加的非易失性數(shù)據(jù)對應的參數(shù)進行分類,之后在 原有代碼的基礎上增加代碼行,并進行初始化賦值,再對更改后的整個樹形結 構重新進行編譯鏈接,并燒寫編譯鏈接的結果。
圖4為本發(fā)明非易失性數(shù)據(jù)的存儲和檢索裝置結構示意圖,如圖4所示, 該裝置包括定義模塊、編譯模塊、燒寫模塊、計算模塊和檢索模塊;其中,
所述定義^=莫塊,用于將已分類的非易失性數(shù)據(jù)定義為樹形結構,并對樹中節(jié)點賦值,將定義及賦值的結果發(fā)送到編譯模塊;
所述編譯模塊,用于根據(jù)定義模塊所定義的并對節(jié)點已賦值的樹形結構執(zhí) 行編譯鏈接操作,并將編譯鏈接的結果通知燒寫模塊;
所述燒寫模塊,用于燒寫編譯模塊所發(fā)的編譯鏈接的結果,并存儲燒寫時 的基地址;
所述計算模塊,用于根據(jù)燒寫模塊燒寫的編譯鏈接的結果及燒寫時的基地 址計算待檢索的非易失性數(shù)據(jù)的偏移和大小,并將計算結果發(fā)送到檢索模塊;
所述檢索模塊,用于根據(jù)燒寫模塊燒寫時的基地址和計算模塊對待檢索非 易失性數(shù)據(jù)的偏移和大小的計算結果檢索非易失性數(shù)據(jù)。
該裝置進一步包括分類模塊,用于將非易失性數(shù)據(jù)按需求進行分類,并將 分類結果通知定義^t塊。
所述定義模塊將已分類的非易失性數(shù)據(jù)定義為樹形結構時采用C語言;相 應的,
所述計算模塊根據(jù)燒寫模塊燒寫的編譯鏈接的結果及燒寫時的基地址計算 待檢索的非易失性數(shù)據(jù)的偏移和大小,具體為
以燒寫模塊燒寫的編譯鏈接的結果及燒寫時的基地址為依據(jù),運用C語言 所提供的數(shù)據(jù)偏移的計算方法offsetof和數(shù)據(jù)大小的計算方法sizeof計算待檢索 的非易失性數(shù)據(jù)的偏移和大小。
所述分類模塊將非易失性數(shù)據(jù)按需求進行分類,為按非易失性數(shù)據(jù)的不 同應用業(yè)務領域、或按非易失性數(shù)據(jù)的不同數(shù)據(jù)類型對非易失性數(shù)據(jù)進行分 類。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范 圍,凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換和改進等,均應 包含在本發(fā)明的保護范圍之內。
權利要求
1、一種非易失性數(shù)據(jù)的存儲和檢索方法,其特征在于,該方法包括將已分類的非易失性數(shù)據(jù)定義為樹形結構,并對樹中節(jié)點賦值;對節(jié)點已被賦值的樹形結構進行編譯鏈接,燒寫編譯鏈接的結果并存儲燒寫時的基地址;根據(jù)編譯鏈接的結果及燒寫時的基地址計算待檢索的非易失性數(shù)據(jù)的偏移和大小,根據(jù)燒寫時的基地址和對待檢索非易失性數(shù)據(jù)的偏移和大小的計算結果檢索非易失性數(shù)據(jù)。
2、 根據(jù)權利要求1所述的非易失性數(shù)據(jù)的存儲和檢索方法,其特征在于, 所述將已分類的非易失性數(shù)據(jù)定義為樹形結構之前,還包括將非易失性數(shù)據(jù)按需求進行分類。
3、 根據(jù)權利要求1或2所述的非易失性數(shù)據(jù)的存儲和檢索方法,其特征在 于,所述將已分類的非易失性數(shù)據(jù)定義為樹形結構時采用C語言;相應的,所述根據(jù)編譯鏈接的結果及燒寫時的基地址計算待檢索的非易失性數(shù)據(jù) 的偏移和大小,具體為以編譯鏈接的結果及燒寫時的基地址為依據(jù),運用C語言所提供的數(shù)據(jù)偏 移的計算方法offsetof和數(shù)據(jù)大小的計算方法sizeof計算待檢索的非易失性數(shù)據(jù) 的偏移和大小。
4、 根據(jù)權利要求2所述的非易失性數(shù)據(jù)的存儲和檢索方法,其特征在于, 需對所述非易失性數(shù)據(jù)進行擴展時,該方法進一步包括將新增加的非易失性 數(shù)據(jù)進行分類,并接入原已定義的樹形結構中形成新的節(jié)點,對整個新的樹形 結構重新進行編譯鏈接及燒寫操作。
5、 根據(jù)權利要求2或4所述的非易失性數(shù)據(jù)的存儲和檢索方法,其特征在 于,所述將非易失性數(shù)據(jù)按需求進行分類,為按非易失性數(shù)據(jù)的不同應用業(yè) 務領域、或按非易失性數(shù)據(jù)的不同數(shù)據(jù)類型對非易失性數(shù)據(jù)進行分類。
6、 一種非易失性數(shù)據(jù)的存儲和檢索裝置,其特征在于,該裝置包括定義模塊、編譯模塊、燒寫模塊、計算模塊和檢索模塊;其中,所述定義模塊,用于將已分類的非易失性數(shù)據(jù)定義為樹形結構,并對樹中 節(jié)點賦值,將定義及賦值的結果發(fā)送到編譯模塊;v所述編譯模塊,用于根據(jù)定義模塊所定義的并對節(jié)點已賦值的樹形結構執(zhí) 行編譯鏈接操作,并將編譯鏈接的結果通知燒寫沖莫塊;所述燒寫模塊,用于燒寫編譯模塊所發(fā)的編譯鏈接的結果,并存儲燒寫時 的基地址;所述計算模塊,用于根據(jù)燒寫模塊燒寫的編譯鏈接的結果及燒寫時的基地 址計算待檢索的非易失性數(shù)據(jù)的偏移和大小,并將計算結果發(fā)送到檢索模塊;所述檢索模塊,用于根據(jù)燒寫模塊燒寫時的基地址和計算模塊對待檢索非 易失性數(shù)據(jù)的偏移和大小的計算結果檢索非易失性數(shù)據(jù)。
7、 根據(jù)權利要求6所述的非易失性數(shù)據(jù)的存儲和檢索裝置,其特征在于, 該裝置進一步包括分類模塊,用于將非易失性數(shù)據(jù)按需求進行分類,并將分類 結果通知定義模塊。
8、 根據(jù)權利要求6或7所述的非易失性數(shù)據(jù)的存儲和檢索裝置,其特征在 于,所述定義模塊將已分類的非易失性數(shù)據(jù)定義為樹形結構時采用C語言;相 應的,所述計算模塊根據(jù)燒寫模塊燒寫的編譯鏈接的結果及燒寫時的基地址計算 待檢索的非易失性數(shù)據(jù)的偏移和大小,具體為以燒寫模塊燒寫的編譯鏈接的結果及燒寫時的基地址為依據(jù),運用C語言 所提供的數(shù)據(jù)偏移的計算方法offsetof和數(shù)據(jù)大小的計算方法sizeof計算待檢索的非易失性數(shù)據(jù)的偏移和大小。
9、 根據(jù)權利要求7所述的非易失性數(shù)據(jù)的存儲和檢索裝置,其特征在于, 所述分類模塊將非易失性數(shù)據(jù)按需求進行分類,為按非易失性數(shù)據(jù)的不同應 用業(yè)務領域、或按非易失性數(shù)據(jù)的不同數(shù)據(jù)類型對非易失性數(shù)據(jù)進行分類。
全文摘要
本發(fā)明公開了一種非易失性數(shù)據(jù)的存儲和檢索方法,包括將已分類的非易失性數(shù)據(jù)定義為樹形結構,并對樹中節(jié)點賦值;對節(jié)點已被賦值的樹形結構進行編譯鏈接,燒寫編譯鏈接的結果并存儲燒寫時的基地址;根據(jù)編譯鏈接的結果及燒寫時的基地址計算待檢索的非易失性數(shù)據(jù)的偏移和大小,根據(jù)燒寫時的基地址和對待檢索非易失性數(shù)據(jù)的偏移和大小的計算結果檢索非易失性數(shù)據(jù)。本發(fā)明還同時公開了一種非易失性數(shù)據(jù)的存儲和檢索裝置,運用該方法和裝置使得存儲的非易失性數(shù)據(jù)易于擴展、可深層嵌套,提高存儲空間利用率,且檢索方法直觀。
文檔編號G06F12/02GK101650689SQ200910171878
公開日2010年2月17日 申請日期2009年9月16日 優(yōu)先權日2009年9月16日
發(fā)明者黨茂昌 申請人:中興通訊股份有限公司