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

嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配方法和裝置的制作方法

文檔序號:6581652閱讀:228來源:國知局
專利名稱:嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,特別是嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配方法和裝置。
背景技術(shù)
在計算機(jī)技術(shù)中,內(nèi)存分配,包括連續(xù)物理內(nèi)存分配技術(shù)對于計算機(jī)性能的影響非常關(guān)鍵。其中,在嵌入式系統(tǒng)驅(qū)動上存在很多必須分配連續(xù)物理內(nèi)存的場合,如DMA內(nèi)存分配或分配連續(xù)內(nèi)存以提高系統(tǒng)性能等。而如果分配不到連續(xù)物理內(nèi)存,可能造成系統(tǒng)異常或者系統(tǒng)性能大大降低。但是,對于嵌入式計算機(jī)系統(tǒng),在其運(yùn)行一小段時間后,則很難在遍布內(nèi)存碎片的內(nèi)存中找到一塊指定大小的連續(xù)物理內(nèi)存。 為確保DMA連續(xù)內(nèi)存分配成功,一種現(xiàn)有技術(shù)是采用修改嵌入式系統(tǒng)內(nèi)核的內(nèi)存管理模塊來解決這個問題。比如,2009年7月1日公開的中國發(fā)明專利申請第200710306110. 0號。名稱為"Li皿x系統(tǒng)平臺上指定地址范圍分配物理內(nèi)存的方法"的該專利申請公開了分配指定地址范圍和指定大小的物理內(nèi)存的方法,但由于必須修改嵌入式系統(tǒng)內(nèi)核的內(nèi)存管理模塊,存在開發(fā)時間較長、較復(fù)雜的問題,且可能降低系統(tǒng)性能;又比如2005年7月6日公開的中國發(fā)明專利第200310110344.X號提出了一種新的內(nèi)存管理方案,
可減小內(nèi)存碎片的產(chǎn)生,提高大內(nèi)存申請的成功率,但同樣也存在開發(fā)時間較長、較復(fù)雜和不能確保分配大的物理內(nèi)存成功的缺陷;又比如2009年3月11日公開的中國發(fā)明專利申請第200710121449. 3號提出一種嵌入式系統(tǒng)內(nèi)存管理的方法,以回收內(nèi)存碎片,提高大內(nèi)存申請的成功率,但也同樣存在開發(fā)時間長、較復(fù)雜和不能確保分配大的物理內(nèi)存成功的缺陷。 而在非DMA內(nèi)存分配的場合,在分配連續(xù)物理內(nèi)存失敗后,現(xiàn)有技術(shù)提出采用非物理連續(xù)的內(nèi)存區(qū)分配方法,但這樣會造成計算機(jī)性能的略微下降。因為采用非物理連續(xù)的內(nèi)存區(qū)分配會大大降低頁表緩沖(TLB)命中的幾率,增加線性地址向物理地址轉(zhuǎn)換的時間。

發(fā)明內(nèi)容
本發(fā)明主要解決的技術(shù)問題是提供一種嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配方法和裝置,能夠確保嵌入式系統(tǒng)驅(qū)動中連續(xù)物理內(nèi)存分配成功,并且避免由于申請連續(xù)物理內(nèi)存失敗而出現(xiàn)系統(tǒng)異常的情況。
為解決上述技術(shù)問題,本發(fā)明采用的一個技術(shù)方案是提供一種嵌入式系統(tǒng)中連
續(xù)物理內(nèi)存分配方法,包括在所述嵌入式系統(tǒng)的引導(dǎo)加載程序中,將全部物理內(nèi)存數(shù)量與
需分配的連續(xù)物理內(nèi)存數(shù)量之差作為參數(shù)值設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù);在所
述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi)存數(shù)量分配所述連續(xù)物理內(nèi)存。 其中,所述嵌入式系統(tǒng)是Li皿X嵌入式系統(tǒng);所述設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核
啟動參數(shù)的步驟包括在Li皿X嵌入式系統(tǒng)的引導(dǎo)加載程序中設(shè)置的內(nèi)核啟動參數(shù)中加入如下信息mem = C,其中所述C為全部物理內(nèi)存數(shù)量與需分配的連續(xù)物理內(nèi)存數(shù)量之差。
其中,在所述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi)存數(shù)量分配所述連續(xù)物理內(nèi)存的步驟包括在所述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi)存數(shù)量指定所述連續(xù)物理內(nèi)存的物理地址;在所述嵌入式系統(tǒng)的驅(qū)動中重映射所述連續(xù)物理內(nèi)存的物理地址為虛擬地址。 其中,在所述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi)存數(shù)量指定所述連續(xù)物理內(nèi)存的物理地址的步驟包括在所述嵌入式系統(tǒng)的驅(qū)動中通過如下語句來指定所述連續(xù)物理內(nèi)存的物理地址#define REAL_MEM_SIZE 0x2000000 ;u8 *pp_virt_buf = NULL ; dma_addr_t pp_phys_buf ;unsigned int t_size = 0x100000 ;pp_phys_buf = PHYS_OFFSET+(REAL_MEM_SIZE-t_size); 在所述嵌入式系統(tǒng)的驅(qū)動中重映射所述連續(xù)物理內(nèi)存的物理地址為虛擬地址的步驟包括在所述嵌入式系統(tǒng)的驅(qū)動中通過如下語句來重映射所述連續(xù)物理內(nèi)存的物理地址為虛擬地址 pp_virt_buf = ioremap_nocache(pp_phys_buf,t_size); 其中,在分配所述連續(xù)物理內(nèi)存的步驟之后,包括通過所述引導(dǎo)加載程序的命令修改所述設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù)的參數(shù)值,以改變所述需分配的連續(xù)物理內(nèi)存數(shù)量。 其中,在分配所述連續(xù)物理內(nèi)存的步驟之后,包括通過所述引導(dǎo)加載程序的命令去掉所述設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù),以釋放所述分配的連續(xù)物理內(nèi)存時。
其中,在分配所述連續(xù)物理內(nèi)存的步驟之后,包括將TO_virt_buf作為DMA內(nèi)存地址發(fā)送給所述驅(qū)動。 為解決上述技術(shù)問題,本發(fā)明采用的另一個技術(shù)方案是提供一種嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配裝置,包括參數(shù)設(shè)置單元,用于在所述嵌入式系統(tǒng)的引導(dǎo)加載程序中,將全部物理內(nèi)存數(shù)量與需分配的連續(xù)物理內(nèi)存數(shù)量之差作為參數(shù)值設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù);內(nèi)存分配單元,用于在所述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi)存數(shù)量分配所述連續(xù)物理內(nèi)存。
其中,進(jìn)一步包括內(nèi)存改變單元,用于通過所述引導(dǎo)加載程序的命令修改所述設(shè)
置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù)的參數(shù)值,以改變所述需分配的連續(xù)物理內(nèi)存數(shù)量。 其中,進(jìn)一步包括內(nèi)存釋放單元,用于通過所述引導(dǎo)加載程序的命令去掉所述設(shè)
置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù),以釋放所述分配的連續(xù)物理內(nèi)存時。 本發(fā)明的有益效果是區(qū)別于現(xiàn)有技術(shù)采用修改嵌入式系統(tǒng)內(nèi)核的內(nèi)存管理模
塊、或非物理連續(xù)的內(nèi)存區(qū)分配方法來獲得連續(xù)物理內(nèi)存而導(dǎo)致開發(fā)時間較長、較復(fù)雜的
問題、且可能降低系統(tǒng)性能的情況,本發(fā)明實施例主要利用大多數(shù)嵌入式系統(tǒng)的內(nèi)核能接
收其引導(dǎo)加載程序傳入的內(nèi)核啟動參數(shù)、并根據(jù)該參數(shù)配置內(nèi)核的特點(diǎn),在所述嵌入式系
統(tǒng)的引導(dǎo)加載程序中設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù),以方便按所述需分配的連續(xù)
物理內(nèi)存數(shù)量分配所述連續(xù)物理內(nèi)存,由于內(nèi)核啟動參數(shù)中設(shè)置的內(nèi)核管理內(nèi)存數(shù)量之外的剩余內(nèi)存不會被嵌入式系統(tǒng)的內(nèi)核使用到,因此能保證連續(xù)物理內(nèi)存分配的成功,巧妙地、根本地解決現(xiàn)有技術(shù)長期無法確保進(jìn)行連續(xù)物理內(nèi)存分配成功的技術(shù)問題,使申請者可以隨時申請到指定大小的連續(xù)物理內(nèi)存,并且避免由于申請連續(xù)物理內(nèi)存失敗而出現(xiàn)系統(tǒng)異常的情況以及系統(tǒng)性能的下降。 此外,對于各種嵌入式系統(tǒng),其大部分引導(dǎo)加載程序都有提供設(shè)置內(nèi)核啟動參數(shù)的命令,也就是說,通過本發(fā)明一個實施例,只要使用引導(dǎo)加載程序提供的設(shè)置內(nèi)核啟動參數(shù)的命令,不需要修改任何引導(dǎo)加載程序或嵌入式系統(tǒng)內(nèi)核的源碼,就可以實現(xiàn)隨時分配指定大小的連續(xù)物理內(nèi)存、改變內(nèi)存大小或釋放已分配內(nèi)存的目的。


圖1是本發(fā)明嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配方法實施例一的流程 圖2是本發(fā)明嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配方法實施例二的流程 圖3是本發(fā)明嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配裝置實施例一的原理框 圖4是本發(fā)明嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配裝置實施例二的原理框圖。
具體實施例方式
在一些嵌入式系統(tǒng)應(yīng)用中,由于驅(qū)動分配不到連續(xù)物理內(nèi)存,其結(jié)果可能就是系統(tǒng)異?;蛘呦到y(tǒng)性能大大降低。傳統(tǒng)上,系統(tǒng)開發(fā)者可能會采用其他降低性能的方法來規(guī)避這個問題或采用修改內(nèi)核中內(nèi)存管理模塊代碼來徹底解決這個問題。本發(fā)明提供的方法具有如下優(yōu)點(diǎn)能徹底解決該問題、不會降低系統(tǒng)性能,更重要的是在嵌入式系統(tǒng)上實施時簡單易行,且更具有靈活性。 下面以嵌入式Linux系統(tǒng)為例進(jìn)行詳細(xì)說明,但本發(fā)明實施例所稱的嵌入式系統(tǒng)并不限于Li皿x系統(tǒng),在其他如Windows類型的嵌入式系統(tǒng)中,也同理可以實現(xiàn),其差異在于各嵌入式系統(tǒng)的系統(tǒng)設(shè)置、軟件設(shè)計等方面,但這些差異不影響本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明精神將本發(fā)明實施例進(jìn)行廣泛應(yīng)用于這些嵌入式系統(tǒng)中。 嵌入式Linux系統(tǒng)一般由引導(dǎo)加載程序(Bootloader) 、 Linux內(nèi)核(kernel)、驅(qū)
動(加載后也屬于內(nèi)核的一部分)、根文件系統(tǒng)以及應(yīng)用程序幾部分構(gòu)成。 在本發(fā)明一個實施例中,主要利用Li皿x內(nèi)核能接收Bootloader傳入的內(nèi)核啟動
參數(shù),并根據(jù)該參數(shù)配置內(nèi)核的特征,包括使用的物理內(nèi)存大小進(jìn)行系統(tǒng)設(shè)置。但據(jù)了解,
現(xiàn)有技術(shù)一般都采用該特征來傳入根文件系統(tǒng)所在分區(qū)、初始化程序所在路徑等信息,面
對長期無法確保進(jìn)行連續(xù)物理內(nèi)存的分配的技術(shù)問題,現(xiàn)有技術(shù)未能巧妙利用上述特征,
以解決分配連續(xù)物理內(nèi)存出錯的問題。 對于各種嵌入式系統(tǒng),其大部分Bootloader都有提供設(shè)置內(nèi)核啟動參數(shù)的命令,也就是說,通過本發(fā)明一個實施例,不需要修改任何Bootloader或Linux內(nèi)核的源碼,就可以實現(xiàn)隨時分配指定大小的連續(xù)物理內(nèi)存的目的。當(dāng)需要的內(nèi)存大小發(fā)生改變時,只需要通過Bootloader提供的命令,修改內(nèi)核啟動參數(shù)并修改驅(qū)動就可以達(dá)到目的。
以下詳細(xì)描述本發(fā)明各個實施例 參閱圖l,本發(fā)明嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配方法實施例包括 步驟101 :在所述嵌入式系統(tǒng)的引導(dǎo)加載程序中,將全部物理內(nèi)存數(shù)量與需分配的連續(xù)物理內(nèi)存數(shù)量之差作為參數(shù)值設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù); 所述全部物理內(nèi)存數(shù)量可以是系統(tǒng)總內(nèi)存數(shù)量,而全部物理內(nèi)存數(shù)量與需分配的
連續(xù)物理內(nèi)存數(shù)量之差即為嵌入式系統(tǒng)內(nèi)核能夠管理的內(nèi)存數(shù)量;也就是說,在分配內(nèi)存
時,內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù)并不設(shè)置為全部內(nèi)存數(shù)量,而是設(shè)一個較小的值,而
全部物理內(nèi)存數(shù)量與內(nèi)核管理內(nèi)存數(shù)量之差即為需分配的連續(xù)物理內(nèi)存數(shù)量; 步驟102 :在所述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi)存數(shù)量分配所
述連續(xù)物理內(nèi)存。 這里利用嵌入式系統(tǒng)的內(nèi)核能接收其引導(dǎo)加載程序傳入的內(nèi)核啟動參數(shù)的特點(diǎn), 根據(jù)該內(nèi)核啟動參數(shù)配置連續(xù)物理內(nèi)存。 區(qū)別于現(xiàn)有技術(shù)采用修改嵌入式系統(tǒng)內(nèi)核的內(nèi)存管理模塊、或非物理連續(xù)的內(nèi)存 區(qū)分配方法來獲得連續(xù)物理內(nèi)存而導(dǎo)致開發(fā)時間較長、較復(fù)雜的問題、且可能降低系統(tǒng)性 能的情況,本發(fā)明實施例主要利用大多數(shù)嵌入式系統(tǒng)的內(nèi)核能接收其引導(dǎo)加載程序傳入的 內(nèi)核啟動參數(shù)、并根據(jù)該參數(shù)配置內(nèi)核的特點(diǎn),在所述嵌入式系統(tǒng)的引導(dǎo)加載程序中設(shè)置 內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù),以方便按所述需分配的連續(xù)物理內(nèi)存數(shù)量分配所述連 續(xù)物理內(nèi)存,由于內(nèi)核啟動參數(shù)中設(shè)置的內(nèi)核管理內(nèi)存數(shù)量之外的剩余內(nèi)存不會被嵌入式 系統(tǒng)的內(nèi)核使用到,因此能保證連續(xù)物理內(nèi)存分配的成功,巧妙地、根本地解決現(xiàn)有技術(shù)長 期無法確保進(jìn)行連續(xù)物理內(nèi)存分配成功的技術(shù)問題,使申請者可以隨時申請到指定大小的 連續(xù)物理內(nèi)存,并且避免由于申請連續(xù)物理內(nèi)存失敗而出現(xiàn)系統(tǒng)異常的情況以及系統(tǒng)性能 的下降。 在本發(fā)明一實施例中,所述嵌入式系統(tǒng)是Li皿x嵌入式系統(tǒng);所述設(shè)置內(nèi)核管理 內(nèi)存數(shù)量的內(nèi)核啟動參數(shù)的步驟包括在Li皿X嵌入式系統(tǒng)的引導(dǎo)加載程序中設(shè)置的內(nèi)核 啟動參數(shù)中加入如下信息mem = C,其中所述C為全部物理內(nèi)存數(shù)量與需分配的連續(xù)物理 內(nèi)存數(shù)量之差。 如設(shè)置內(nèi)核啟動參數(shù)為"noinitrd root = /dev/mtdblock3 init = / li皿xrcmem = 31M console = ttySAC0"。其中31M即為內(nèi)核管理內(nèi)存數(shù)量。
在本發(fā)明另一實施例中,在所述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi) 存數(shù)量分配所述連續(xù)物理內(nèi)存的步驟可以包括 1)在所述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi)存數(shù)量指定所述連續(xù) 物理內(nèi)存的物理地址; 2)在所述嵌入式系統(tǒng)的驅(qū)動中重映射所述連續(xù)物理內(nèi)存的物理地址為虛擬地址。
詳細(xì)如下 1)在所述嵌入式系統(tǒng)的驅(qū)動中通過如下語句來指定所述連續(xù)物理內(nèi)存的物理地 址 #define REAL_MEM_SIZE 0x2000000 ; u8 *pp_virt_buf = NULL ; dma_addr_t pp_phys_buf ;unsigned int t_size = 0x100000 ;pp_phys_buf = PHYS_OFFSET+(REAL_MEM_SIZE-t_size); 2)在所述嵌入式系統(tǒng)的驅(qū)動中通過如下語句來重映射所述連續(xù)物理內(nèi)存的物理地址為虛擬地址 pp_virt_buf = ioremap_nocache(pp_phys_buf,t_size); 在本發(fā)明一實施例中,在分配所述連續(xù)物理內(nèi)存的步驟之后,可以進(jìn)一步包括步 驟 通過所述引導(dǎo)加載程序的命令修改所述設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù) 的參數(shù)值,以改變所述需分配的連續(xù)物理內(nèi)存數(shù)量。 同樣是在不修改內(nèi)核和驅(qū)動源碼的情況下,簡單方便地改變連續(xù)物理內(nèi)存的大 小。 在本發(fā)明一實施例中,在分配所述連續(xù)物理內(nèi)存的步驟之后,可以進(jìn)一步包括步 驟 通過所述引導(dǎo)加載程序的命令去掉所述設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù), 以釋放所述分配的連續(xù)物理內(nèi)存時。 同樣是在不修改內(nèi)核和驅(qū)動源碼的情況下,簡單方便地對已分配連續(xù)物理內(nèi)存進(jìn) 行釋放。 分配了連續(xù)物理內(nèi)存之后,就可以為驅(qū)動等程序利用了,比如在分配所述連續(xù)物 理內(nèi)存的步驟之后,包括步驟 將TO_virt_buf作為DMA內(nèi)存地址發(fā)送給所述驅(qū)動。 參閱圖2,下面以在一塊32MByte的內(nèi)存上實現(xiàn)一種隨時都能成功分配一塊 1MByte的連續(xù)物理內(nèi)存的方法為例來描述本發(fā)明的其中一個具體實施方式
。
首先,在u-boot、 vivi等嵌入式引導(dǎo)加載程序中設(shè)置的內(nèi)核啟動參數(shù)中加入如 下信息mem = 31M,如"noinitrd root = /dev/mtdblock3init = /li皿xrcmem = 31M console = ttySAC0"。內(nèi)核接收到該啟動參數(shù)后將會只會管理32M內(nèi)存中的前31M內(nèi)存, 最后的1M內(nèi)存將會一直為需要的程序保留著;其次,在驅(qū)動中通過如下語句來分配上述的1Mbyte的內(nèi)存,由于這1M內(nèi)存Linux
內(nèi)核不會使用到,故能保證分配的成功。 #define REAL_MEM_SIZE 0x2000000〃32M u8 *pp_virt_buf = NULL ; dma_addr_t pp_phys_buf ;unsigned int t_size = 0x100000 ;〃32M i)p_phys_buf = PHYS_0FFSET+(REAL_MEM_SIZE_t_size) ;〃PHYS_0FFSET為物理 內(nèi)存的起始物理地址,TO_phys_buf為分配的物理地址 pp_virt_buf = ioremap _nocache (pp_phys_buf , t_size);〃重映射為虛擬地址
最后,可以將卯—virt—buf作為DMA內(nèi)存地址用于驅(qū)動中需要IM的連續(xù)內(nèi)存的地 方。 由整個實施過程可見,此方法相當(dāng)簡單靈活。當(dāng)不需要分配連續(xù)物理內(nèi)存時,可通 過Bootloader的命令修改內(nèi)核啟動參數(shù)(去掉mem = *),而不需要修改任何代碼,且不影 響系統(tǒng)的性能。 參閱圖3,本發(fā)明還提供一種嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配裝置實施例,包括
參數(shù)設(shè)置單元,用于在所述嵌入式系統(tǒng)的引導(dǎo)加載程序中,將全部物理內(nèi)存數(shù)量
8與需分配的連續(xù)物理內(nèi)存數(shù)量之差作為參數(shù)值設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù);
內(nèi)存分配單元,用于在所述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi)存數(shù) 量分配所述連續(xù)物理內(nèi)存。 同理,利用大多數(shù)嵌入式系統(tǒng)的內(nèi)核能接收其引導(dǎo)加載程序傳入的內(nèi)核啟動參 數(shù)、并根據(jù)該參數(shù)配置內(nèi)核的特點(diǎn),本發(fā)明嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配裝置實施例能 夠在不需要修改任何代碼、且不影響系統(tǒng)的性能的前提下簡單靈活地進(jìn)行連續(xù)物理內(nèi)存分 配,由于內(nèi)核啟動參數(shù)中設(shè)置的內(nèi)核管理內(nèi)存數(shù)量之外的剩余內(nèi)存不會被嵌入式系統(tǒng)的內(nèi) 核使用到,因此保證其分配成功。 參閱圖4,在其他實施例中,還可以進(jìn)一步包括 內(nèi)存改變單元,用于通過所述引導(dǎo)加載程序的命令修改所述設(shè)置內(nèi)核管理內(nèi)存數(shù) 量的內(nèi)核啟動參數(shù)的參數(shù)值,以改變所述需分配的連續(xù)物理內(nèi)存數(shù)量。
以及進(jìn)一步包括 內(nèi)存釋放單元,用于通過所述引導(dǎo)加載程序的命令去掉所述設(shè)置內(nèi)核管理內(nèi)存數(shù) 量的內(nèi)核啟動參數(shù),以釋放所述分配的連續(xù)物理內(nèi)存時。 所述嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配裝置可以是嵌入式計算機(jī)的主機(jī)或主機(jī)中 的處理器。 以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā) 明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技 術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
9
權(quán)利要求
一種嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配方法,其特征在于,包括在所述嵌入式系統(tǒng)的引導(dǎo)加載程序中,將全部物理內(nèi)存數(shù)量與需分配的連續(xù)物理內(nèi)存數(shù)量之差作為參數(shù)值設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù);在所述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi)存數(shù)量分配所述連續(xù)物理內(nèi)存。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于 所述嵌入式系統(tǒng)是Li皿X嵌入式系統(tǒng);所述設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù)的步驟包括在Li皿X嵌入式系統(tǒng)的引導(dǎo)加載程序中設(shè)置的內(nèi)核啟動參數(shù)中加入如下信息mem = C,其中所述C為全部物理內(nèi)存數(shù) 量與需分配的連續(xù)物理內(nèi)存數(shù)量之差。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于在所述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi)存數(shù)量分配所述連續(xù)物理內(nèi)存的步驟包括在所述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi)存數(shù)量指定所述連續(xù)物理內(nèi)存的物理地址;在所述嵌入式系統(tǒng)的驅(qū)動中重映射所述連續(xù)物理內(nèi)存的物理地址為虛擬地址。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于在所述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi)存數(shù)量指定所述連續(xù)物理內(nèi) 存的物理地址的步驟包括在所述嵌入式系統(tǒng)的驅(qū)動中通過如下語句來指定所述連續(xù)物理 內(nèi)存的物理地址#define REAL_MEM_SIZE 0x2000000 ;u8 *pp_virt_buf = NULL ;dma_addr_t pp_phys_buf ;unsigned int t_size = 0x100000 ;pp_phys_buf = PHYS_OFFSET+(REAL_MEM_SIZE-t_size);在所述嵌入式系統(tǒng)的驅(qū)動中重映射所述連續(xù)物理內(nèi)存的物理地址為虛擬地址的步驟 包括在所述嵌入式系統(tǒng)的驅(qū)動中通過如下語句來重映射所述連續(xù)物理內(nèi)存的物理地址為虛擬地址pp_virt_buf = ioremap_nocache(pp_phys_buf, t_size)。
5. 根據(jù)權(quán)利要求1至4任一項所述的方法,其特征在于,在分配所述連續(xù)物理內(nèi)存的步驟之后,包括通過所述引導(dǎo)加載程序的命令修改所述設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù)的參 數(shù)值,以改變所述需分配的連續(xù)物理內(nèi)存數(shù)量。
6. 根據(jù)權(quán)利要求1至4任一項所述的方法,其特征在于,在分配所述連續(xù)物理內(nèi)存的步驟之后,包括通過所述引導(dǎo)加載程序的命令去掉所述設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù),以釋 放所述分配的連續(xù)物理內(nèi)存時。
7. 根據(jù)權(quán)利要求4所述的方法,其特征在于,在分配所述連續(xù)物理內(nèi)存的步驟之后,包括將TO_virt_buf作為DMA內(nèi)存地址發(fā)送給所述驅(qū)動。
8. —種嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配裝置,其特征在于,包括 參數(shù)設(shè)置單元,用于在所述嵌入式系統(tǒng)的引導(dǎo)加載程序中,將全部物理內(nèi)存數(shù)量與需分配的連續(xù)物理內(nèi)存數(shù)量之差作為參數(shù)值設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù);內(nèi)存分配單元,用于在所述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi)存數(shù)量分 配所述連續(xù)物理內(nèi)存。
9. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,進(jìn)一步包括內(nèi)存改變單元,用于通過所述引導(dǎo)加載程序的命令修改所述設(shè)置內(nèi)核管理內(nèi)存數(shù)量的 內(nèi)核啟動參數(shù)的參數(shù)值,以改變所述需分配的連續(xù)物理內(nèi)存數(shù)量。
10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,進(jìn)一步包括內(nèi)存釋放單元,用于通過所述引導(dǎo)加載程序的命令去掉所述設(shè)置內(nèi)核管理內(nèi)存數(shù)量的 內(nèi)核啟動參數(shù),以釋放所述分配的連續(xù)物理內(nèi)存時。
全文摘要
本發(fā)明公開了一種嵌入式系統(tǒng)中連續(xù)物理內(nèi)存分配方法和裝置。所述方法包括在所述嵌入式系統(tǒng)的引導(dǎo)加載程序中,將全部物理內(nèi)存數(shù)量與需分配的連續(xù)物理內(nèi)存數(shù)量之差作為參數(shù)值設(shè)置內(nèi)核管理內(nèi)存數(shù)量的內(nèi)核啟動參數(shù);在所述嵌入式系統(tǒng)的驅(qū)動中按所述需分配的連續(xù)物理內(nèi)存數(shù)量分配所述連續(xù)物理內(nèi)存。本發(fā)明能夠確保嵌入式系統(tǒng)驅(qū)動中連續(xù)物理內(nèi)存分配成功,并且避免由于申請連續(xù)物理內(nèi)存失敗而出現(xiàn)系統(tǒng)異常的情況。
文檔編號G06F9/445GK101706754SQ200910192199
公開日2010年5月12日 申請日期2009年9月8日 優(yōu)先權(quán)日2009年9月8日
發(fā)明者施金前, 蔡懷琳 申請人:廈門敏訊信息技術(shù)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
沾益县| 逊克县| 嵊州市| 山西省| 鄯善县| 绥德县| 曲周县| 丰城市| 土默特右旗| 阿拉善盟| 涿鹿县| 康定县| 鄄城县| 香格里拉县| 梓潼县| 手游| 屯昌县| 神木县| 新竹县| 平南县| 宜川县| 华宁县| 林口县| 调兵山市| 东丰县| 阳新县| 拜城县| 临沭县| 荥阳市| 邳州市| 汉阴县| 庄河市| 临武县| 金昌市| 吴忠市| 吐鲁番市| 宁安市| 昌乐县| 新泰市| 裕民县| 广宗县|