一種嵌入式系統中內存資源的使用方法及裝置的製作方法
2023-06-06 04:32:06 1
專利名稱:一種嵌入式系統中內存資源的使用方法及裝置的製作方法
技術領域:
本發明涉及數據存儲設備,特別涉及一種嵌入式系統中內存資源的使用方 法及裝置。
背景技術:
現有技術在嵌入式系統的資源使用中,內存資源通常都比較緊張,目前都 是採用動態分配內存的方式,當應用程式需要使用內存資源時進行申請,當使 用完畢後釋放內存資源。動態分配內存是指程序要求的基本內存空間是在目標 模塊連接裝入內存時確定並分配的,但是在程序運行過程中允許申請附加的內 存空間或在內存中移動,即分配工作可以在程序運行前及程序運行過程中逐步 完成。動態內存分配比較靈活,給程序的實現帶來很大的方便,可以較好的避 免內存的浪費。如果嵌入式系統中的內存只有一種並且使用過程中的內存地址連續的話,使用標準C語言提供的Malloc和Free函數就可以實現。標準C語言提供的 Malloc是動態分配內存的函數,Free是和Malloc配對使用的釋放Malloc分配 的內存函數, 一般的實時作業系統中的內存管理函數都可以在某種程度上實現 這種內存分配及釋放的功能。 一般來說,malloc函數是分配給定的字節數,並 返回一個指向它們的指針。如果沒有足夠的可用內存,那麼它返回一個空指針; free函數是指獲得指向由malloc分配的內存片段的指針,並將其釋放,以便 以後的程序或作業系統使用。實時作業系統是指能及時響應外部事件的請求, 在規定的嚴格時間內完成對該事件的處理的系統。對於實時系統來說最重要的 要求就是實時作業系統必須有滿足在一個事先定義好的時間限制中對外部或 內部的事件進行響應和處理的能力。但現有技術的不足在於,嵌入式系統中的內存常常並不僅僅只有一種,並且內存地址也通常不連續,例如在有的嵌入式系統中既有SRAM (Static Random Access Memory,靜態隨機存儲器),又有SDRAM (Synchronous Dynamic Random Access Memory,同步動態隨機存儲器),此時會出現有的內 存區域需要把Cache (高速緩存)打開,有的內存區域需要把Cache關閉,並 且使用過程中的內存地址也不連續。因此,當存在多種不同特性的內存時,利 用類似標準C語言提供的Malloc和Free的函數就無法滿足對內存資源的使用 需求。發明內容本發明解決的技術問題是提供了 一種嵌入式系統中內存資源的使用方法 及裝置,用以當存在多種多種特性的內存時,實現動態內存管理。本發明提供了 一種嵌入式系統中內存資源的使用方法,包括如下步驟 對每一塊不同特性的內存創建內存池; 針對每一塊內存池封裝分配/釋放內存的函數;在使用內存時,根據所需使用的內存特性通過相應的分配/釋放內存的函數 對內存進行使用。較佳地,所述對每一塊不同特性的內存創建內存池,具體為在作業系統初始化時,對每一塊不同特性的內存創建內存池。較佳地,所述分配/釋放內存的函數是Malloc/Free函數。較佳地,所述特性包括物理介質屬性和/或相同物理介質下的軟體配置屬性。較佳地,所述物理介質屬性是靜態隨機存儲器屬性和同步動態隨機存儲器 屬性。較佳地,所述軟體配置屬性是軟體配置對高速緩存的打開/關閉與軟體配置 寫緩衝區的打開/關閉。本發明還提供了 一種嵌入式系統中內存資源的使用裝置,包括 池創建模塊,用於對每一塊不同特性的內存創建內存池; 函數封裝模塊,用於針對每一塊內存池封裝分配/釋放內存的函數; 接口模塊,用於在程序使用內存時,根據程序所需使用的內存特性通過相應的分配/釋放內存的函數給程序提供可使用的內存。較佳地,所述池創建模塊進一步用於在作業系統初始化時,對每一塊不同特性的內存創建內存池。較佳地,所述池創建模塊包括特性識別單元,用於根據包括物理介質屬性和/或相同物理介質下的軟體配 置屬性對內存特性進行識別;創建單元,用於根據識別出的內存特性對每一塊不同特性的內存創建內存池。較佳地,所述特性識別單元進一步用於根據物理介質屬性中的靜態隨機存 儲器屬性和同步動態隨機存儲器屬性,和/或軟體配置屬性中的軟體配置對高速 緩存的打開/關閉與軟體配置寫緩衝區的打開/關閉進行識別。本發明有益效果如下本發明實施中對每一塊不同特性的內存創建內存池,根據不同內存的特 性,抽象成不同的內存池;並針對每一塊內存池封裝分配/釋放內存的函數;在 使用內存時,根據所需使用的內存特性通過相應的分配/釋放內存的函數對內存 進行使用;從而能夠利用實時作業系統提供的內存管理函數實現了內存的動態 分配管理。
圖1為本發明實施例中所述嵌入式系統中內存資源使用方法的實施流程示 意圖;圖2為本發明實施例中所述嵌入式系統中內存資源的使用裝置結構示意圖。
具體實施方式
下面結合附圖對本發明的具體實施方式
進行說明。圖1為嵌入式系統中內存資源使用方法的實施流程示意圖,如圖所示,在內存使用時可以包括如下步驟步驟IOI、對每一塊不同特性的內存創建內存池;步驟102、針對每一塊內存池封裝分配/釋放內存的函數;步驟103、在使用內存時,根據所需使用的內存特性通過相應的分配/釋放內存的函數對內存進行使用。下面對各步驟的具體實施進行說明。步驟101中可以視為創建內存分區,在使用內存之前,開發者可以首先調 用類似OSMemCreate 函數等功能的函數來創建相應的內存分區,在創建內 存分區成功後,就可以在系統中存在一個以開發者指定內存大小,指定內存塊 數目的內存池。在此過程中,開發者也就明確的知道系統的內存分布,並可以 指明內存池的基址。在創建內存池時,可以通過系統的內存分配調用預先一次性申請適當大小 的內存作為一個內存池,之後,對內存的分配和釋放則可以通過這個內存池來 完成。當內存池大小需要動態擴展時,可以根據需要再調用系統的內存分配函 數,其他時間對內存的一切操作都可以根據需要使用。對每一塊不同特性的內存創建內存池時,可以是在作業系統初始化時對內 存進行創建,實施中,初始化可以是系統上電時軟體的初始化階段。內存池的 管理在不同作業系統裡面略有不同,不過都可以實現動態申請和釋放功能,本 發明實施例中主要是在初始化內存池的時候,根據系統得內存差異情況,初始 化多個內存池。實施中,特性可以包括物理介質屬性、和/或相同物理介質下的軟體配置屬性。如物理介質屬性可以是SRAM和SDRAM屬性的,物理介質不同,如 SRAM與SDRAM的物理性質不同,其也將會導致各種性質上的不同,如訪 問的速度不同;而軟體配置屬性可以是軟體配置對Cache的打開/關閉與軟體配 置寫Buffer (緩衝區)的打開/關閉。步驟102中,針對每一塊內存池封裝分配/釋放內存的函數,分配/釋放內 存的函數一般可以是Malloc/Free函數。即,動態分配的是針對創建的不同的 內存池,提供不同的Malloc和Free函數,比如SRAM—Malloc和 SDRAM—Malloc。當系統內存分區創建好了後,系統就可以從相應的內存分區 中獲取內存,應用程式可以根據所需要內存的大小,從開發者指定的內存池中 申請內存。因為內存是系統的緊缺資源,當應用不再需要使用所申請的內存時, 應該及時釋》文該內存。當進行動態內存分配時,可以利用Malloc/Free函數接口來實現。在嵌入 式系統中,可以在運行的期間用malloc申請內存,這部分內存可以由程式設計師管 理,其生存期由開發者決定,並可以使用free來釋放該內存。也就是說,實施 中通過本步驟封裝了 malloc/free函數,從而可以進行動態內存管理,且為開發 者提供了一個統一的開發環境。當在步驟102封裝了分配釋放函數後,當應用程式需要使用內存時,便可 以執行步驟103,根據所需使用的內存特性通過相應的分配/釋放內存的函數對 內存進行使用。即,當設置內存池以後,當程序調用時,便可以根據需要調用 不同的內存池的Malloc函數確定所需的內存在那個內存池;同樣,在程序調 用時,可以根據需要調用不同的內存池的Malloc函數來識別其需要的是那個 內存。本發明還提供了 一種嵌入式系統中內存資源的使用裝置,下面結合附圖進 行說明。圖2為嵌入式系統中內存資源的使用裝置結構示意圖,如圖所示,裝置中可以包括池創建模塊201,用於對每一塊不同特性的內存創建內存池; 函數封裝模塊202,用於針對每一塊內存池封裝分配/釋放內存的函數; 接口模塊203,用於在程序使用內存時,根據程序所需使用的內存特性通過相應的分配/釋放內存的函數給程序提供可使用的內存。其中,池創建模塊可以進一步用於在作業系統初始化時,對每一塊不同特性的內存創建內存池。池創建衝莫塊201具體還可以包括特性識別單元2011,用於根據包括物理介質屬性和/或相同物理介質下的 軟體配置屬性對內存特性進行識別;創建單元2012,用於根據識別出的內存特性對每一塊不同特性的內存創建 內存池。實施中,特性識別單元2011可以根據物理介質屬性中的靜態隨機存儲器 屬性和同步動態隨衝幾存儲器屬性,和/或軟體配置屬性中的軟體配置對高速緩存 的打開/關閉與軟體配置寫緩衝區的打開/關閉進行識別。功能。本發明實施中可以根據不同內存的特性,抽象成不同的內存池,利用實 時作業系統提供的內存管理函數實現了內存的動態分配管理。本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或計 算機程序產品。因此,本發明可採用完全硬體實施例、完全軟體實施例、或結 合軟體和硬體方面的實施例的形式。而且,本發明可採用在一個或多個其中包 含有計算機可用程序代碼的計算機可用存儲介質(包括但不限於磁碟存儲器、 CD-ROM、光學存儲器等)上實施的電腦程式產品的形式。本發明是參照根據本發明實施例的方法、設備(系統)、和電腦程式產 品的流程圖和/或方框圖來描述的。應理解可由電腦程式指令實現流程圖和 /或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些電腦程式指令到通用計算機、專用計算機、嵌入 式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算 機或其他可編程數據處理設備的處理器執行的指令產生用於實現在流程圖一 個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些電腦程式指令也可存儲在能引導計算機或其他可編程數據處理設 備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中 的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖 一個流程或多個 流程和/或方框圖一個方框或多個方框中指定的功能。這些電腦程式指令也可裝載到計算機或其他可編程數據處理設備上,使 得在計算機或其他可編程設備上執行一 系列操作步驟以產生計算機實現的處 理,從而在計算機或其他可編程設備上執行的指令提供用於實現在流程圖一個 流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。儘管已描述了本發明的優選實施例,但本領域內的技術人員 一旦得知了基 本創造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要 求意欲解釋為包括優選實施例以及落入本發明範圍的所有變更和修改。
權利要求
1、一種嵌入式系統中內存資源的使用方法,其特徵在於,包括如下步驟對每一塊不同特性的內存創建內存池;針對每一塊內存池封裝分配/釋放內存的函數;在使用內存時,根據所需使用的內存特性通過相應的分配/釋放內存的函數對內存進行使用。
2、 如權利要求1所述的方法,其特徵在於,所述對每一塊不同特性的內 存創建內存池,具體為在作業系統初始化時,對每一塊不同特性的內存創建內存池。
3、 如權利要求l所述的方法,其特徵在於,所述分配/釋放內存的函數是 Malloc/Free函數。
4、 如權利要求1或2所述的方法,其特徵在於,所述特性包括物理介質 屬性,和/或,相同物理介質下的軟體配置屬性。
5、 如權利要求4所述的方法,其特徵在於,所述物理介質屬性是靜態隨 機存儲器屬性和同步動態隨^L存儲器屬性。
6、 如權利要求4所述的方法,其特徵在於,所述軟體配置屬性是軟體配 置對高速緩存的打開/關閉與軟體配置寫緩沖區的打開/關閉。
7、 一種嵌入式系統中內存資源的使用裝置,其特徵在於,包括 池創建模塊,用於對每一塊不同特性的內存創建內存池; 函數封裝模塊,用於針對每一塊內存池封裝分配/釋放內存的函數; 接口模塊,用於在程序使用內存時,根據程序所需使用的內存特性通過相應的分配/釋放內存的函數給程序提供可使用的內存。
8、 如權利要求7所述的裝置,其特徵在於,所述池創建模塊進一步用於 在作業系統初始化時,對每一塊不同特性的內存創建內存池。
9、 如權利要求7或8所述的裝置,其特徵在於,所述池創建模塊包括 特性識別單元,用於根據包括物理介質屬性和/或相同物理介質下的軟體配置屬性對內存特性進行識別;創建單元,用於根據識別出的內存特性對每一塊不同特性的內存創建內存池。
10、如權利要求9所述的裝置,其特徵在於,所述特性識別單元進一步用 於根據物理介質屬性中的靜態隨機存儲器屬性和同步動態隨機存儲器屬性,和 /或,軟體配置屬性中的軟體配置對高速緩存的打開/關閉與軟體配置寫緩衝區 的打開/關閉進行識別。
全文摘要
本發明公開了一種嵌入式系統中內存資源的使用方法及裝置,包括對每一塊不同特性的內存創建內存池;針對每一塊內存池封裝分配/釋放內存的函數;在使用內存時,根據所需使用的內存特性通過相應的分配/釋放內存的函數對內存進行使用。使用本發明可以根據不同內存的特性,抽象成不同的內存池,利用實時作業系統提供的內存管理函數實現了內存的動態分配管理,實現了多種不同特性內存同時動態分配的功能。
文檔編號G06F12/02GK101303666SQ200810115590
公開日2008年11月12日 申請日期2008年6月25日 優先權日2008年6月25日
發明者李志剛 申請人:北京中星微電子有限公司