專(zhuān)利名稱(chēng):一種嵌入式系統(tǒng)中內(nèi)存大小的自動(dòng)識(shí)別方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種內(nèi)存大小自動(dòng)檢測(cè)適應(yīng)的方法,具體地說(shuō)是一種嵌入式系統(tǒng)中內(nèi)存大小的自動(dòng)識(shí)別方法。
背景技術(shù):
嵌入式系統(tǒng)的特點(diǎn)就是可以靈活滿(mǎn)足各種特殊的應(yīng)用場(chǎng)景,在硬件技術(shù)高速發(fā)展的今天,軟件可以充分利用硬件提供的資源進(jìn)行各種特定功能的開(kāi)發(fā)。為了更高效的適應(yīng)產(chǎn)品的多樣性,在有限的時(shí)間內(nèi)開(kāi)發(fā)的軟件應(yīng)該最大程度的進(jìn)行復(fù)用,在硬件初始化階段, 硬件的差異性會(huì)導(dǎo)致一系列的問(wèn)題,在此階段,除了各個(gè)硬件特有的參數(shù)設(shè)置外,能實(shí)現(xiàn)自動(dòng)檢測(cè)的應(yīng)該盡最大可能進(jìn)行自動(dòng)檢測(cè)適應(yīng)。內(nèi)存大小自動(dòng)檢測(cè)適應(yīng)就是基于此目的而開(kāi)發(fā)的新功能。
專(zhuān)利CN1564130A公開(kāi)了一種判別嵌入式系統(tǒng)內(nèi)存大小的方法,該方法存在缺陷, 即采用的第一地址必須為實(shí)際內(nèi)存大小的2的N次方分之一,但在未知內(nèi)存大小的情況下, 這個(gè)初始地址無(wú)法確定,即如果需要同時(shí)判斷1.5M及2M的內(nèi)存,是無(wú)法判斷的;再者上述專(zhuān)利提供的方法只能適用于有一個(gè)邏輯bank的情況,在有多個(gè)邏輯bank的情況下,該專(zhuān)利的方法是不適用的;總之,專(zhuān)利CN1564130A所采用的判斷方法局限性高、適用范圍狹窄,且判斷方法繁瑣、效率低下。發(fā)明內(nèi)容
本發(fā)明為了提供一種能夠適用內(nèi)存芯片存在多個(gè)邏輯bank的情況、使用范圍廣泛、方法便捷的內(nèi)存大小的自動(dòng)識(shí)別方法,設(shè)計(jì)了一種嵌入式系統(tǒng)中內(nèi)存大小的自動(dòng)識(shí)別方法,本發(fā)明方法簡(jiǎn)單、可靠、實(shí)用;使用范圍廣泛,可以進(jìn)一步擴(kuò)展。
本發(fā)明采用的技術(shù)方案是一種嵌入式系統(tǒng)中內(nèi)存大小的自動(dòng)識(shí)別方法,是基于具有k個(gè)相同邏輯BANK的內(nèi)存芯片的嵌入式系統(tǒng)中實(shí)現(xiàn)的,其中k為正整數(shù),關(guān)鍵在于在嵌入式系統(tǒng)中增設(shè)與主控芯片連接的內(nèi)存判別模塊,在此基礎(chǔ)上,內(nèi)存判別模塊進(jìn)行內(nèi)存大小的自動(dòng)識(shí)別的方法步驟中包括I)、內(nèi)存判別模塊將內(nèi)存芯片的內(nèi)存大小初始化為內(nèi)存控制器所能訪問(wèn)的最大的內(nèi)存地址空間,并指定該內(nèi)存芯片所需匹配的最小內(nèi)存大小為22)、內(nèi)存判別模塊從內(nèi)存起始地址(T2ft/k M地址范圍內(nèi)隨機(jī)選取一個(gè)地址,作為標(biāo)志地址S,在標(biāo)志地址S處寫(xiě)入特定標(biāo)志數(shù)據(jù)P ;3)、內(nèi)存判別模塊在S+2m M的地址處去讀特定標(biāo)志數(shù)據(jù)P,其中m=n-log a k,若讀到特定標(biāo)志數(shù)據(jù),則判定內(nèi)存大小為kX2 Λ Μ,跳至步驟4);若讀不到,則η=η+1,跳至步驟3);4)、內(nèi)存判別模塊將判定結(jié)果反饋至主控芯片,識(shí)別過(guò)程結(jié)束。
以主控芯片RTL8196E、內(nèi)存芯片為SDRAM為例說(shuō)明本發(fā)明的具體原理在于1、在RTL8196E上提供了MA12引腳串接O歐電阻接54pin SDRAM的36引腳,SDRAM的邏輯bank固定為4個(gè);2、對(duì)16M的SDRAM來(lái)說(shuō)AO到All為行地址引腳,AO到A8為列地址引腳,與行地址引腳分時(shí)復(fù)用,其中A12引腳為NC腳;3、對(duì)32M的SDRAM來(lái)說(shuō)AO到A12為行地址引腳,AO到A8為列地址引腳,與行地址引腳分時(shí)復(fù)用;4、如上描述的三點(diǎn)就具備了我們進(jìn)行內(nèi)存大小自動(dòng)檢測(cè)的條件,簡(jiǎn)而言之就是不同大小的內(nèi)存使用的引腳數(shù)目相同,并有相同數(shù)目的邏輯bank,其中有部分引腳在小內(nèi)存的尋址中未用到,即為NC腳;5、具體現(xiàn)象表現(xiàn)為用最大內(nèi)存大小進(jìn)行相關(guān)初始化,如果實(shí)際物理內(nèi)存較之小的話(huà)就會(huì)在相應(yīng)內(nèi)存區(qū)域出現(xiàn)重疊尋址,通過(guò)重疊尋址的范圍及次數(shù)可以判斷出實(shí)際內(nèi)存的大小。
本發(fā)明的有益效果是1、原理簡(jiǎn)單,方法可靠,實(shí)現(xiàn)了軟件的可復(fù)用。2、使用范圍廣泛,不僅限于SDRAM,對(duì)DDR等各種系列內(nèi)存也適用,只要具備尋址規(guī)格統(tǒng)一并存在NC腳的特點(diǎn)。3、可以進(jìn)一步擴(kuò)展該方法不僅適用于網(wǎng)絡(luò)終端通訊設(shè)備,對(duì)其他嵌入式設(shè)備也適用,并可對(duì)可更換不同大小內(nèi)存進(jìn)行支持。對(duì)不同型號(hào)的內(nèi)存可以分型號(hào)依據(jù)標(biāo)準(zhǔn)處理,如 SDRAM 一般邏輯 bank 為 4,DDR-1I 為 8 等。
具體實(shí)施方式
一種嵌入式系統(tǒng)中內(nèi)存大小的自動(dòng)識(shí)別方法,是基于具有k個(gè)相同邏輯BANK的內(nèi)存芯片的嵌入式系統(tǒng)中實(shí)現(xiàn)的,其中k為正整數(shù),重要的是在嵌入式系統(tǒng)中增設(shè)與主控芯片連接的內(nèi)存判別模塊,在此基礎(chǔ)上,內(nèi)存判別模塊進(jìn)行內(nèi)存大小的自動(dòng)識(shí)別的方法步驟中包括1)、內(nèi)存判別模塊將內(nèi)存芯片的內(nèi)存大小初始化為內(nèi)存控制器所能訪問(wèn)的最大的內(nèi)存地址空間,并指定該內(nèi)存芯片所需匹配的最小內(nèi)存大小為2 n M ;2)、內(nèi)存判別模塊從內(nèi)存起始地址(T2n/k M地址范圍內(nèi)隨機(jī)選取一個(gè)地址,作為標(biāo)志地址S,在標(biāo)志地址S處寫(xiě)入特定標(biāo)志數(shù)據(jù)P ;3)、內(nèi)存判別模塊在S+2^ M的地址處去讀特定標(biāo)志數(shù)據(jù)P,其中m=n-log 2 k,若讀到特定標(biāo)志數(shù)據(jù),則判定內(nèi)存大小為kX2 Λ Μ,跳至步驟4);若讀不到,則η=η+1,跳至步驟3);4)、內(nèi)存判別模塊將判定結(jié)果反饋至主控芯片,識(shí)別過(guò)程結(jié)束。
所述的主控芯片的型號(hào)為RTL8196E。
所述的內(nèi)存芯片是SDRAM芯片、或是DDR芯片、或是DDR-1I芯片。
所述的SDRAM芯片與主控芯片的接口是54pin。
在具體實(shí)施時(shí),以SDRAM內(nèi)存芯片,邏輯BANK數(shù)目為4,SDRAM芯片的內(nèi)存控制器的最大尋址空間為32M為例,進(jìn)行內(nèi)存大小自動(dòng)識(shí)別時(shí)的步驟為1)、內(nèi)存判別模塊指定該內(nèi)存芯片所需匹配的最小內(nèi)存大小為23 M,此時(shí),n=3 ;2)、從內(nèi)存起始地址(Γ2Μ地址范圍內(nèi)隨機(jī)選取一個(gè)地址,作為標(biāo)志地址S,在標(biāo)志地址 S處寫(xiě)特定標(biāo)志數(shù)據(jù)P ;3)、a、如果在S+2M地址處都能讀到特定標(biāo)志數(shù)據(jù)P,則判定內(nèi)存大小為4*2=8M,跳至步驟4);如果讀不到,則將n+1,即n=4,再在S+4M地址處去讀特定標(biāo)志數(shù)據(jù)P,如果讀到,則內(nèi)存大小為4*4=16M,跳至步驟4);如果讀不到,則再將η加1,即η=5,再在S+8M地址處去讀特定標(biāo)志數(shù)據(jù)P,如果讀到,則判定內(nèi)存大小為4*8=32Μ,跳至步驟4);如果讀不到,則再將 η+1,繼續(xù)依上述方法判斷,直至讀到特定標(biāo)志數(shù)據(jù)P為止;4)內(nèi)存判別模塊將判定結(jié)果反饋至主控芯片,識(shí)別過(guò)程結(jié)束。
本自動(dòng)識(shí)別方法原理簡(jiǎn)單,方法可靠,實(shí)現(xiàn)了軟件的可復(fù)用,且使用范圍廣泛,不僅限于SDRAM,對(duì)DDR等各種系列內(nèi)存也適用。
權(quán)利要求
1.一種嵌入式系統(tǒng)中內(nèi)存大小的自動(dòng)識(shí)別方法,是基于具有k個(gè)相同邏輯BANK的內(nèi)存芯片的嵌入式系統(tǒng)中實(shí)現(xiàn)的,其中k為正整數(shù),其特征在于在嵌入式系統(tǒng)中增設(shè)與主控芯片連接的內(nèi)存判別模塊,在此基礎(chǔ)上,內(nèi)存判別模塊進(jìn)行內(nèi)存大小的自動(dòng)識(shí)別的方法步驟中包括 1)、內(nèi)存判別模塊將內(nèi)存芯片的內(nèi)存大小初始化為內(nèi)存控制器所能訪問(wèn)的最大的內(nèi)存地址空間,并指定該內(nèi)存芯片所需匹配的最小內(nèi)存大小為2n M ; 2)、內(nèi)存判別模塊從內(nèi)存起始地址(Γ2n /k M地址范圍內(nèi)隨機(jī)選取一個(gè)地址,作為標(biāo)志地址S,在標(biāo)志地址S處寫(xiě)入特定標(biāo)志數(shù)據(jù)P ; 3)、內(nèi)存判別模塊在M的地址處去讀特定標(biāo)志數(shù)據(jù)P,其中m=n-logk,若讀到特定標(biāo)志數(shù)據(jù),則判定內(nèi)存大小為kX2 - M,跳至步驟4);若讀不到,則n=n+l,跳至步驟3); 4)、內(nèi)存判別模塊將判定結(jié)果反饋至主控芯片,識(shí)別過(guò)程結(jié)束。
2.根據(jù)權(quán)利要求I所述的一種嵌入式系統(tǒng)中內(nèi)存大小的自動(dòng)識(shí)別方法,其特征在于所述的主控芯片的型號(hào)為RTL8196E。
3.根據(jù)權(quán)利要求I所述的一種嵌入式系統(tǒng)中內(nèi)存大小的自動(dòng)識(shí)別方法,其特征在于所述的內(nèi)存芯片是SDRAM芯片、或是DDR芯片、或是DDR- II芯片。
4.根據(jù)權(quán)利要求3所述的一種嵌入式系統(tǒng)中內(nèi)存大小的自動(dòng)識(shí)別方法,其特征在于所述的SDRAM芯片與主控芯片的接口是54pin。
全文摘要
一種嵌入式系統(tǒng)中內(nèi)存大小的自動(dòng)識(shí)別方法,是基于具有k個(gè)相同邏輯BANK的內(nèi)存芯片的嵌入式系統(tǒng)中實(shí)現(xiàn)的,在系統(tǒng)中增設(shè)內(nèi)存判別模塊,自動(dòng)識(shí)別的方法步驟中包括1)將內(nèi)存芯片的內(nèi)存初始化為最大的內(nèi)存地址空間,指定該內(nèi)存芯片所需匹配的最小內(nèi)存大小為2M;2)內(nèi)存判別模塊從內(nèi)存起始地址0~2/kM地址范圍內(nèi)選取一個(gè)地址,作為標(biāo)志地址S,在S處寫(xiě)入特定標(biāo)志數(shù)據(jù)P;3)在S+2M的地址處去讀特定標(biāo)志數(shù)據(jù)P,其中m=n-logk,若讀到特定標(biāo)志數(shù)據(jù),則判定內(nèi)存大小為k×2M,跳至步驟4);若讀不到,則n=n+1,跳至步驟3);4)內(nèi)存判別模塊將判定結(jié)果反饋至主控芯片,識(shí)別過(guò)程結(jié)束。本方法能夠適用內(nèi)存芯片存在多個(gè)邏輯bank的情況、使用范圍越廣泛、且便捷、效率高。
文檔編號(hào)G06F12/06GK102981974SQ20121044603
公開(kāi)日2013年3月20日 申請(qǐng)日期2012年11月9日 優(yōu)先權(quán)日2012年11月9日
發(fā)明者藍(lán)清廉 申請(qǐng)人:深圳市共進(jìn)電子股份有限公司