[導(dǎo)讀]ROM和RAM是人盡皆知的概念。即: RAM(random access memory)隨機(jī)存儲內(nèi)存 ,這種bai存儲器在斷電時du將丟失其存儲內(nèi)容,故主要用于存儲短時間使用的程序。 ROM(Read-Only Memory)只讀內(nèi)存 ,是一種只能讀出事先所存數(shù)據(jù)的固態(tài)半導(dǎo)體存儲器。 而當(dāng)一個嵌入
RAM(random access memory)隨機(jī)存儲內(nèi)存
,這種bai存儲器在斷電時du將丟失其存儲內(nèi)容,故主要用于存儲短時間使用的程序。
ROM(Read-Only Memory)只讀內(nèi)存
,是一種只能讀出事先所存數(shù)據(jù)的固態(tài)半導(dǎo)體存儲器。
而當(dāng)一個嵌入式項目在立項時,其中有個重要的環(huán)節(jié)就是對系統(tǒng)所需的RAM和ROM用量進(jìn)行評估。
在滿足系統(tǒng)需求的前提下,盡量降低硬件成本,據(jù)說同等大小的RAM價格大概是ROM的6倍。
大部分的資料都宣稱程序分為RO、DATA、BSS等段,RO段應(yīng)該放在ROM里,DATA段放在RAM里云云。對于DATA、BSS,這些段因為有頻繁的寫操作,所肯定要放到RAM里,但是只讀數(shù)據(jù)(包括代碼段)必須放在ROM里嗎?答案是不一定。
RAM和ROM等存儲單元的物理地址映射是由做硬件的數(shù)字工程師確定,他們在劃分時主要會考慮電路的延遲,將這些儲存單元按照一定的方式掛在同一條AHB總線上。而嵌入式平臺軟件工程師可以通過修改鏈接腳本來設(shè)置哪些數(shù)據(jù)、代碼在程序運行時放在ROM里,哪些放在RAM里。
這里多說一句,RAM在系統(tǒng)剛上電的時候,其內(nèi)容是隨機(jī)的。所謂的數(shù)據(jù)、代碼放在RAM里,是指在初始化時,CPU從flash里讀下載的bin文件,也有的平臺下載的是hex文件,找出其中的ram段,以類似于memcpy的方式將數(shù)據(jù)從bin文件里的對應(yīng)位置拷貝到RAM映射到的物理地址里,這才是所謂的放在RAM里.
RAM分為很多種,關(guān)于SRAM、DRAM、SDRAM、PSRAM等等的概念。簡單來說就是:
SRAM : 靜態(tài)RAM,不用刷新,速度可以非??欤馛PU內(nèi)部的cache,都是靜態(tài)RAM,缺點是一個內(nèi)存
單元需要的晶體管數(shù)量多,因而價格昂貴,容量不大。
DRAM: 動態(tài)RAM,需要刷新,容量大。
SDRAM :同步動態(tài)RAM,需要刷新,速度較快,容量大。
DDR SDRAM: 雙通道同步動態(tài)RAM,需要刷新,速度快,容量大。
具體來說:
RAM(Random Access Memory) 隨機(jī)存儲器。存儲單元的內(nèi)容可按需隨意取出或存入,且存取的速度與存儲單元的位置無關(guān)的存儲器。這種存儲器在斷電時將丟失其存儲內(nèi)容,故主要用于存儲短時間使用的程序。
按照存儲信息的不同,隨機(jī)存儲器又分為靜態(tài)隨機(jī)存儲器(Static RAM,SRAM)和動態(tài)隨機(jī)存儲器(Dynamic RAM,DRAM)。
SRAM(Static RAM)不需要刷新電路即能保存它內(nèi)部存儲的數(shù)據(jù)。
SSRAM(Synchronous SRAM)即同步靜態(tài)隨機(jī)存取存儲器。同步是指Memory工作需要同步時鐘,內(nèi)部的命令的發(fā)送與數(shù)據(jù)的傳輸都以它為基準(zhǔn);隨機(jī)是指數(shù)據(jù)不是線性依次存儲,而是由指定地址進(jìn)行數(shù)據(jù)讀寫。
對于SSRAM的所有訪問都在時鐘的上升/下降沿啟動。地址、數(shù)據(jù)輸入和其它控制信號均于時鐘信號相關(guān)。
這一點與異步SRAM不同,異步SRAM的訪問獨立于時鐘,數(shù)據(jù)輸入和輸出都由地址的變化控制。
DRAM(Dynamic RAM)每隔一段時間,要刷新充電一次,否則內(nèi)部的數(shù)據(jù)即會消失。
因此SRAM具有較高的性能,但是SRAM也有它的缺點,即它的集成度較低,相同容量的DRAM內(nèi)存可以設(shè)計為較小的體積,但是SRAM卻需要很大的體積,且功耗較大。所以在主板上SRAM存儲器要占用一部分面積。
SRAM的速率高、性能好,它主要有如下應(yīng)用:
2)CPU內(nèi)部的L1/L2或外部的L2高速緩存。
SDRAM(Synchronous DRAM)即同步動態(tài)隨機(jī)存取存儲器。同步是指 Memory工作需要同步時鐘,內(nèi)部的命令的發(fā)送與數(shù)據(jù)的傳輸都以它為基準(zhǔn);動態(tài)是指存儲陣列需要不斷的刷新來保證數(shù)據(jù)不丟失;隨機(jī)是指數(shù)據(jù)不是線性依次存儲,而是自由指定地址進(jìn)行數(shù)據(jù)讀寫。
A.DRAM(Dynamic Random-Access Memory),即動態(tài)隨 機(jī)存儲器最為常見的系統(tǒng)內(nèi)存。DRAM 只能將數(shù)據(jù)保持很短的時間。為了保持?jǐn)?shù)據(jù),DRAM使用電容存儲,所以 必須隔一段時間刷新(refresh)一 次,如果存儲單元沒有被刷新,存儲的信息就會丟失。
B. SDRAM:Synchronous Dynamic Random Access Memory, 同步動態(tài)隨機(jī)存取存儲器,同步是指Memory工作需要步時鐘,內(nèi)部的命令的發(fā)送與數(shù)據(jù)的傳輸都以它為基準(zhǔn);動態(tài)是指存儲陣列需要不斷的刷新來保證數(shù)據(jù)不 丟失;隨機(jī)是指數(shù)據(jù)不是線性依次存儲,而是由指定地址進(jìn)行數(shù)據(jù)讀寫。
C. DDR: SDRAM從發(fā)展到現(xiàn)在已經(jīng)經(jīng)歷了四代,分別是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM。
第一代與第二代SDRAM均采用單端(Single-Ended)時鐘信號,第三代與第四代由于工作頻率比較快,所以采用可降低干擾的差分時鐘信號作為同步 時鐘。SDR SDRAM的時鐘頻率就是數(shù)據(jù)存儲的頻率,第一代內(nèi)存用時鐘頻率命名,如pc100,pc133則表明時鐘信號為100或 133MHz,數(shù)據(jù)讀寫速率也為100或133MHz。
之后的第二,三,四代DDR(Double Data Rate)內(nèi)存則采用數(shù)據(jù)讀寫速 率作為命名標(biāo)準(zhǔn),并且在前面加上表示其DDR代數(shù)的符號,PC-即DDR,PC2=DDR2,PC3=DDR3。如PC2700是DDR333,其工作頻 率是333/2=166MHz,2700表示帶寬為2.7G。
DDR的讀寫頻率從DDR200到DDR400,DDR2從DDR2-400到DDR2-800,DDR3從DDR3-800到DDR3-1666。
很多人將SDRAM錯誤的理解為第一代也就是 SDR SDRAM,并且作為名詞解釋,皆屬誤導(dǎo)。SDR不等于SDRAM。
從軟件的角度籠統(tǒng)一點,分為片內(nèi)和片外ram。
對于軟件工程師的來說,它們的區(qū)別就是訪問速度,片內(nèi)ram一般用TCM(Tightly Coupled Memory)的方式集成在CPU芯片內(nèi)部,有單獨的數(shù)據(jù)通道,它的訪問速度可以和cache相媲美,而片外ram的訪問要麻煩一些,CPU發(fā)出想訪問的地址給AHB總線控制器,它會知道對應(yīng)的地址是在片外RAM里,將訪問請求遞給RAM控制器,再由RAM控制器訪問RAM后將數(shù)據(jù)返回。
大體上片內(nèi)的訪問速度是片外RAM的1.5~2倍。片內(nèi)ram集成在CPU芯片內(nèi)部,它是在CPU設(shè)計時就加上的,它使用和CPU幾乎一樣的制作工藝和材料,而且增加了芯片的大小,所以成本比較高,一般也就只有幾十K字節(jié),好鋼當(dāng)然要用在刀刃上,片內(nèi)ram用來存放中斷處理handler、RTOS調(diào)度器、任務(wù)上下文切換、內(nèi)存分配釋放等使用頻率最高的代碼和中斷堆棧這種讀寫頻率極高的內(nèi)存區(qū),如果有多余的部分也可以放一些經(jīng)常被引用到的全局變量。
片外RAM一般就是采購的市面上的成品,如Samsung,Hynix,Apmemory等,價格相對便宜,其容量的可選范圍也較為寬松,從幾M到幾G的都有,它可以用來存儲全局變量,bss,以及我們常用到的malloc所分配的堆空間等。還有一點不同的是:片內(nèi)Ram上電就可以直接使用,而片外的RAM都需要一個硬件控制器完成對其時序的控制,軟件人員則需要對該控制器編寫專用的控制驅(qū)動
ROM一般是有兩種,一種是指集成在CPU芯片內(nèi)部的一塊只讀存儲區(qū)域,一般是幾K到幾十K字節(jié)大小,用來存儲系統(tǒng)剛上電時對cpu和一些核心外設(shè)(如時鐘,串口,MMU、DRAM、Flash等)
進(jìn)行初始化的代碼,它在程序運行中也是不可寫的,要對它執(zhí)行寫操作只能使用硬件燒寫器進(jìn)行,也就是一般所說的下載程序,這部分的代碼在芯片測試階段可以進(jìn)行編程器下載更新,量產(chǎn)后一般就會固化,不能做任何修改的。
另一種指的就是flash。首先需要說明的是,很多做嵌入式應(yīng)用開發(fā)的同學(xué)一直把flash比作PC上的硬盤,其實它們指的是Nand flash,而對于很多小型的嵌入式系統(tǒng),就只有一個2M或者4M的Nor Flash,它和硬盤有一個顯著的區(qū)別:flash里存放的代碼是可以由CPU直接取指并執(zhí)行的,而PC上硬盤里的程序都需要加載到內(nèi)存里才能運行。
flash并不是絕對的運行時不可寫,有時候應(yīng)用程序需要保存一些配置信息到flash里,類似于PC程序的配置文件,以保證掉電了之后它的內(nèi)容不會丟失,下次開機(jī)時可以直接從flash讀取到。
不過,flash的寫操作要比RAM麻煩的多了,flash在寫之前需要發(fā)送多個命令字來握手,還要先對即將要寫的地址所在的扇區(qū)進(jìn)行整體擦除,就是把該扇區(qū)里的內(nèi)容全設(shè)為1,所謂寫flash就是把其中的一些bit設(shè)為0;更要命的是,flash的每個獨立bit位的寫次數(shù)是有上限的,市面上大部分的產(chǎn)品都只能寫10~100萬次。多說一句,每個bit位的壽命是獨立的,如果一個bit位在擦除和寫的動作中,它的值始終為1,則不會有影響;例如反復(fù)對一個地址寫0xF0,則不會影響高4bit的壽命,而低4bit每次都要先擦成1,再寫入0,這樣就會降低其壽命。
現(xiàn)在我們討論一下RO、DATA、BSS到底應(yīng)該放在RAM里還是ROM里。
首先考慮一下,有沒有什么東西必須放在ROM里?當(dāng)然有,引導(dǎo)程序(系統(tǒng)的初始化代碼)就必須放到ROM里。在CPU剛上電時,只能去一個默認(rèn)的地址去取第一條指令,開始干活,這個地址都是映射到片內(nèi)的ROM里,原因很簡單,此時,作為外設(shè)的flash和DDR等都還沒有初始化,CPU根本無法從它們那里讀寫數(shù)據(jù),片內(nèi)ROM里的這些代碼就需要完成這些模塊的初始化。另外,一個項目的處理器和主要外設(shè)確定了以后,這部分初始化代碼在很長的時間里,都不需要做任何修改的。
那有沒有什么東西必須放RAM里?當(dāng)然也有,應(yīng)用程序經(jīng)常讀寫的全局變量,堆、棧等等,都需要放在RAM里,根據(jù)訪問的頻率,將頻率最高的少量數(shù)據(jù)放到片內(nèi)ram。
只讀數(shù)據(jù)(代碼段、程序里的const、字符串等)應(yīng)該放在哪?一般來說,這些數(shù)據(jù)應(yīng)該放在Flash里,因為它們不需要被修改,而且前面提到過,rom要比ram便宜的多。可能有人會有疑問,放在flash里,會不會讀取的速度很慢?讀ROM的速度是比讀RAM的數(shù)據(jù)要慢一點,但是不要忘了,現(xiàn)代CPU都有強(qiáng)大的cache,而且數(shù)據(jù)Dcache和指令I(lǐng)cache都是分開的,在系統(tǒng)運行中,cache的命中率可以高達(dá)80~90%,所以大部分時候CPU都可以在第一時間就拿到想要的指令和數(shù)據(jù)。
1、前面提到片內(nèi)Ram是一塊非常寶貴的空間,它的優(yōu)點就是CPU可以在第一時間取到里面的數(shù)據(jù)。但是處于成本考慮,它的空間往往都非常有限。如果用戶有兩種比較耗時的業(yè)務(wù),需要頻繁的大量取指,但重點是它們不會同時運行。這種情況下,就可以在鏈接腳本里開辟的片內(nèi)Ram空間,將該段的鏈接選項加上NOCROSSREFS,再將這片空間的大小定義為這兩個耗時業(yè)務(wù)代碼占空間較大的那個(例,業(yè)務(wù)一有1K代碼,業(yè)務(wù)二有2K代碼,這片空間就定義為2K),在業(yè)務(wù)一開始時,將其代碼拷貝到這塊片內(nèi)ram里(一般是用DMA的方式),運行業(yè)務(wù)一的代碼;當(dāng)業(yè)務(wù)二開始時,也是拷貝其代碼到片內(nèi)ram里。這樣,兩種業(yè)務(wù)的耗時操作在運行中都可以在第一時間里取到指令,對耗時業(yè)務(wù)做了很好的優(yōu)化。
2、曾經(jīng)遇到過這樣一個運行時死機(jī),查看CPU寄存器可以看到是報一個取指了令異常,可是查看PC寄存器對應(yīng)的地址,發(fā)現(xiàn)CPU正在取的一條指令是正常的,起初十分費解。后來通過仔細(xì)分析其死機(jī)前的運行情況才定位出原因,死機(jī)前一個task正在寫flash,這時候來了一個中斷,中斷里調(diào)用了一個函數(shù),其地址就在flash里,而此時flash處于一個不可讀的狀態(tài),CPU在執(zhí)行中斷里的函數(shù)就拿不到指令,只能死機(jī)。
解決問題的辦法有2種:一是在寫flash的過程中屏蔽所有中斷,這是一種很裸的方法,對于響應(yīng)時間很敏感的嵌入式系統(tǒng),一般都不允許隨便關(guān)中斷。二是將這個在flash里存儲的函數(shù)放到RAM里,避免訪問flash的沖突。
-END-
免責(zé)聲明:整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系刪除
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!
掃描二維碼,關(guān)注更多精彩內(nèi)容
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。
關(guān)鍵字:
驅(qū)動電源
在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。
關(guān)鍵字:
工業(yè)電機(jī)
驅(qū)動電源
LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...
關(guān)鍵字:
驅(qū)動電源
照明系統(tǒng)
散熱
根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。
關(guān)鍵字:
LED
設(shè)計
驅(qū)動電源
電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...
關(guān)鍵字:
電動汽車
新能源
驅(qū)動電源
在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...
關(guān)鍵字:
發(fā)光二極管
驅(qū)動電源
LED
在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...
關(guān)鍵字:
LED照明技術(shù)
電磁干擾
驅(qū)動電源
開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源
關(guān)鍵字:
LED
驅(qū)動電源
開關(guān)電源
LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。
關(guān)鍵字:
LED
隧道燈
驅(qū)動電源
LED驅(qū)動電源在LED照明系統(tǒng)中扮演著至關(guān)重要的角色。由于LED具有節(jié)能、環(huán)保、長壽命等優(yōu)點,使得LED照明在各個領(lǐng)域得到廣泛應(yīng)用。然而,LED的電流、電壓特性需要特定的驅(qū)動電源才能正常工作。本文將介紹常用的LED驅(qū)動電...
關(guān)鍵字:
LED驅(qū)動電源
led照明
LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電源轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。
關(guān)鍵字:
LED
驅(qū)動電源
高壓工頻交流
崧盛股份9日發(fā)布投資者關(guān)系活動記錄表,就植物照明發(fā)展趨勢、行業(yè)壁壘等問題進(jìn)行分享。植物照明未來市場需求廣闊崧盛股份指出,植物照明將會走向長期產(chǎn)業(yè)領(lǐng)域。主要原因有三:第一,LED植物照明賦能終端種植更具有經(jīng)濟(jì)價值。由于LE...
關(guān)鍵字:
崧盛股份
驅(qū)動電源
在當(dāng)今高度發(fā)展的技術(shù)中,電子產(chǎn)品的升級越來越快,LED燈技術(shù)也在不斷發(fā)展,這使我們的城市變得豐富多彩。 LED驅(qū)動電源將電源轉(zhuǎn)換為特定的電壓和電流,以驅(qū)動LED發(fā)光。通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流電(即...
關(guān)鍵字:
LED
驅(qū)動電源
高壓直流
人類社會的進(jìn)步離不開社會上各行各業(yè)的努力,各種各樣的電子產(chǎn)品的更新?lián)Q代離不開我們的設(shè)計者的努力,其實很多人并不會去了解電子產(chǎn)品的組成,比如LED電源。
關(guān)鍵字:
LED
驅(qū)動電源
低壓直流
隨著科學(xué)技術(shù)的發(fā)展,LED技術(shù)也在不斷發(fā)展,為我們的生活帶來各種便利,為我們提供各種各樣生活信息,造福著我們?nèi)祟?。LED驅(qū)動電源實際上是一種電源,但是它是一種特定的電源,用于驅(qū)動LED發(fā)射帶有電壓或電流的光。 因此,LE...
關(guān)鍵字:
LED
驅(qū)動電源
電流
LED燈作為一種新型節(jié)能和無污染光源,由于其特有的發(fā)光照明特性,在現(xiàn)代照明應(yīng)用中發(fā)揮著革命性的作用。作為 LED 照明產(chǎn)業(yè)鏈中最為核心的部件之一,LED 驅(qū)動電源的驅(qū)動控制技術(shù)所存在的可靠性低、成本高等典型問題一直制約著...
關(guān)鍵字:
多路
LED
驅(qū)動電源
隨著社會的快速發(fā)展,LED技術(shù)也在飛速發(fā)展,為我們的城市的燈光煥發(fā)光彩,讓我們的生活越來越有趣,那么你知道LED需要LED驅(qū)動電源嗎?那么你知道什么是LED驅(qū)動電源嗎?
關(guān)鍵字:
LED
開關(guān)電源
驅(qū)動電源
早前有新聞稱,Cree在2018年開始宣布轉(zhuǎn)型高科技半導(dǎo)體領(lǐng)域,并一邊逐漸脫離照明與LED相關(guān)業(yè)務(wù),一邊持續(xù)投資半導(dǎo)體。在今日,Cree宣布與SMART Global Holdings, Inc.達(dá)成最終協(xié)議,擬將LED...
關(guān)鍵字:
cree
led照明