在嵌入式系統(tǒng)設(shè)計(jì)中經(jīng)常用大容量的SDRAM,存放RTOS和數(shù)據(jù)。這時(shí)用戶可以有兩種選擇:一種是選用合適的內(nèi)存芯片自己布線,把整個(gè)SDRAM做到嵌入式系統(tǒng)的PCB板上,這種方法在小系統(tǒng)中經(jīng)常采用;另一種就是選用現(xiàn)成的內(nèi)存條(如筆記本電腦上常用的DIMM內(nèi)存),現(xiàn)成的內(nèi)存條不僅容量大,而且由于用量大,價(jià)格也相對便宜。另外現(xiàn)成的內(nèi)存條還節(jié)省了PCB布線空間,縮小嵌入式系統(tǒng)的內(nèi)存體積,提高系統(tǒng)的穩(wěn)定性,方便更換和檢測。筆記本內(nèi)存的型號(hào)和種類很多,采購時(shí)也可能來自多個(gè)廠家。為了使各種內(nèi)存條在嵌入式系統(tǒng)都能正常使用,就需要系統(tǒng)的BOOT程序能進(jìn)行自動(dòng)識(shí)別和配置,按照SPD(SDRAM Serial Presence Detect Specification)規(guī)范正確讀取內(nèi)存參數(shù),另外根據(jù)內(nèi)存參數(shù)配置SDRAM控制器。
圖1 數(shù)據(jù)傳輸時(shí)序
1 SPD規(guī)范及數(shù)據(jù)格式
內(nèi)存的SPD規(guī)范是SDRAM控制器參數(shù)配置的主要依據(jù),在SPD規(guī)范中定義了單面或雙面DRAM的詳細(xì)參數(shù),如內(nèi)存的大小、數(shù)據(jù)位、行列地址的寬度、邏輯Bank數(shù)和物理Bank等。這些數(shù)據(jù)存放在EEPROM芯片中,詳細(xì)描述了內(nèi)存條的各種參數(shù)。
存放內(nèi)存參數(shù)的是一個(gè)兩線制的串行EEPROM芯片,接口類型符合I2C協(xié)議。I2C協(xié)議是Philips公司制定的兩線制的串行數(shù)據(jù)傳輸標(biāo)準(zhǔn),數(shù)據(jù)的讀寫通過一根時(shí)鐘線和一根數(shù)據(jù)線實(shí)現(xiàn)。數(shù)據(jù)傳輸有其嚴(yán)格的格式,一個(gè)數(shù)據(jù)幀由起始位、器件地址、應(yīng)答位、數(shù)據(jù)地址、傳輸數(shù)據(jù)和結(jié)束位構(gòu)成,可以允許多個(gè)器件分主從模式進(jìn)行傳輸。其數(shù)據(jù)傳輸時(shí)序如圖1所示。主控制器讀寫數(shù)據(jù)的格式如圖2所示。
圖2 主控制讀寫數(shù)據(jù)的格式
內(nèi)存的SPD一般要求EEPROM帶有2Kbit的存儲(chǔ)空間,用于存放內(nèi)存的配置參數(shù),而硬件電路接口是I2C接口。要讀取內(nèi)存參數(shù),主控制器必須能按照I2C協(xié)議進(jìn)行通信,進(jìn)行數(shù)據(jù)的讀操作。另外還需知道EEPROM的數(shù)據(jù)存放格式及其含義。SPD規(guī)范中對存放的數(shù)據(jù)進(jìn)行了詳細(xì)的說明和定義。以PC133-333為例詳細(xì)說明挑選配置時(shí)用到的參數(shù),如表1所示。用戶只需把相應(yīng)地址中的值讀出來,對照規(guī)范中的說明即可知道內(nèi)存的詳細(xì)參數(shù)。
表1 PC133-333配置時(shí)用到的參數(shù)
| 字節(jié)地址 | 定 義 | PC133參數(shù)值 | 備 注 |
| 0 | 廠商使用的字節(jié)數(shù) | 80h | 使用了128字節(jié) |
| 1 | EEPROM存儲(chǔ)容量 | 08h | 256字節(jié) |
| 2 | 內(nèi)存類型 | 04h | SDRAM |
| 3 | 行地址位數(shù) | 0ch | 12位行地址 |
| 4 | 列地址位數(shù) | 09h | 9位列地址 |
| 5 | 排數(shù) | 02h | 兩排 |
| 6 | 數(shù)據(jù)寬度(低字節(jié)) | 40h | 64位寬度 |
| 7 | 數(shù)據(jù)寬度(高字節(jié)) | 00h | |
| 8 | 信號(hào)電平 | 01h | LVTTL |
| 9 | SDRAM最高時(shí)鐘頻率 | 75h | Tclk=7.5ns |
| 10 | SDRAM訪問時(shí)間 | 54h | Tac=5.4nc |
| 11 | 配置類型 | 00h | 不支持校驗(yàn)糾錯(cuò) |
| 12 | 刷行率/類型 | 80h | 15.6μs/自刷新 |
| 13 | 最小SDRAM顆粒數(shù)據(jù)寬度 | 08h | 8位 |
| 16 | 支持地猝發(fā)傳輸長度 | 8Fh | 1,2,4,8 |
| 17 | 邏輯bank數(shù) | 04h | 4banks |
| 18 | CAS延遲 | 06h | CL=2,3 |
| 23 | SDRAM時(shí)鐘(2的最大指數(shù)倍) | A0h | Tclk=10ns |
| 24 | SDRAM訪問時(shí)間(2的最大指數(shù)倍) | 60h | Tac=6ns |
| 34 | 輸入數(shù)據(jù)建立時(shí)間 | 15h | 1.5ns |
| 35 | 輸入數(shù)據(jù)保持時(shí)間 | 08h | 0.8ns |
| 62 | SPD版本號(hào) | 12h | Rev.1.2 |
| 其它 | 不詳述(見SPD規(guī)范手冊) |
2 卡的自動(dòng)識(shí)別和配置過程
下面以Motorola公司的MPC824XCPU為例介紹內(nèi)存的識(shí)別和配置過程。MPC824X是一款功能強(qiáng)大的嵌入式處理器,它由603E核107橋構(gòu)成。107橋有很豐富的控制接口模塊,如SDRAM控制器、EPIC、UART、I2C控制器等,很方便與外圍電路接口。嵌入式系統(tǒng)板中數(shù)據(jù)量很大,至少要用到256MB內(nèi)存。為了方便各種廠家的內(nèi)存型號(hào)進(jìn)行混插使用,需要編寫內(nèi)存自動(dòng)識(shí)別和配置程序,把需要配置的數(shù)據(jù)從EEPROM讀出,然后根據(jù)SPD協(xié)議轉(zhuǎn)換成內(nèi)存的配置參數(shù)。這個(gè)配置過程必須在系統(tǒng)上電后立即運(yùn)行,為后面的RTOS運(yùn)行做準(zhǔn)備。內(nèi)存初始化參數(shù)包括行列地址寬度、邏輯Bank數(shù)、物理Bank的大小。因?yàn)椋停校茫福玻矗貎?nèi)有I2C控制器,所以可以直接與SPD連接,通過軟件的初始化,配置好I2C控制器,程序流程如圖3。
相關(guān)代碼及注釋:
/*配置分頻系數(shù)、模塊使能*/
mpc107_i2c_start();
/*設(shè)置控制器為發(fā)送模式*/
sysEUMBBARWrite(MPC107_I2CCR,MPC107_CCR_MEN
| MPC107_CCR_MSTA | MPC107_CCR_MTX );
/*送器件地址,置寫標(biāo)志*/
sysEUMBBARWrite(MPC107_I2CDR, 0xa0);
/*等待傳輸結(jié)束*/
i2c_wait();
/*送數(shù)據(jù)地址*/
sysEUMBBARWrite(MPC107_I2CDR, 0x0);
/*等待傳輸結(jié)束*/
i2c_wait();
/*再次發(fā)送start位*/
sysEUMBBARWrite(MPC107_I2CCR, MPC107_CCR_MEN
|MPC107_CCR_MSTA|MPC107_CCR_MTX|MPC107_CCR_RSTA);
/*送器件地址,置讀標(biāo)志*/
sysEUMBBARWrite(MPC107_I2CDR, 0xa1);
/*等待傳輸結(jié)束*/
i2c_wait();
/*發(fā)送應(yīng)答位*/
sysEUMBBARWrite(MPC107_I2CCR,MPC107_CCR_MEN
|MPC107_CCR_MSTA | MPC107_CCR_TXAK);
/*做一次假讀操作*/
sysEUMBBARRead(MPC107_I2CDR);
/*發(fā)送應(yīng)答*/
sysEUMBBARWrite(MPC107_I2CCR,MPC107_CCR_MEN |
MPC107_CCR_TXAK);
/*讀數(shù)據(jù)*/
data = sysEUMBBARRead(MPC107_I2CDR);
/*配置MCCR寄存器*/
sys107RegWrite(MCCR_ADD,T_DATA);
其它寄存器按此順序配置。
- 利用SP(5219)
- 別和配置(4971)
嵌入式指紋識(shí)別系統(tǒng)USB接口電路設(shè)計(jì)
2272
利用SD卡實(shí)現(xiàn)嵌入式Linux系統(tǒng)的自動(dòng)升級(jí)
嵌入式系統(tǒng)內(nèi)存優(yōu)化使用
嵌入式系統(tǒng)內(nèi)存管理
嵌入式系統(tǒng)實(shí)時(shí)交互的手勢識(shí)別方法是什么?
嵌入式系統(tǒng)有什么安全技巧?
嵌入式自動(dòng)售貨機(jī)能實(shí)現(xiàn)什么功能?
嵌入式FIFO怎么配置和使用?
嵌入式Internet通信的安全怎么保障?
嵌入式Linux平臺(tái)怎么實(shí)現(xiàn)視頻采集發(fā)送端?
嵌入式Web訪問時(shí)的內(nèi)存丟失的問題怎么解決?
嵌入式實(shí)時(shí)操作系統(tǒng)如何簡化應(yīng)用軟件的設(shè)計(jì)
嵌入式網(wǎng)絡(luò)接入怎么實(shí)現(xiàn)?
嵌入式語音識(shí)別技術(shù)在80251內(nèi)核中該如何去實(shí)現(xiàn)呢
嵌入式語音識(shí)別系統(tǒng)中的電路設(shè)計(jì)是如何的
嵌入式語音識(shí)別系統(tǒng)在生活中的應(yīng)用有哪些呢
嵌入式邊界掃描系統(tǒng)是什么?怎樣去實(shí)現(xiàn)它?
IP2022在嵌入式牌照識(shí)別系統(tǒng)中的應(yīng)用是什么?
RFID汽車號(hào)牌自動(dòng)識(shí)別系統(tǒng)安全如何保證?
”ARM嵌入式系統(tǒng)與PC機(jī)圖像傳輸?shù)?b class="flag-6" style="color: red">實(shí)現(xiàn)“
什么是嵌入式操作系統(tǒng)內(nèi)存管理技術(shù)?
在嵌入式系統(tǒng)中怎樣對內(nèi)存進(jìn)行分配?
在分布式嵌入式系統(tǒng)的過程中利用Jini技術(shù)有什么優(yōu)勢?
基于嵌入式系統(tǒng)硬件平臺(tái)的軟件PLC實(shí)現(xiàn)設(shè)計(jì)
基于ARM嵌入式系統(tǒng)的自動(dòng)化配送系統(tǒng)
基于ARM嵌入式系統(tǒng)的自動(dòng)化配送系統(tǒng)
基于ARM的嵌入式系統(tǒng)中從串配置FPGA的實(shí)現(xiàn),不看肯定后悔
基于MBD的嵌入式系統(tǒng)設(shè)計(jì)
基于RT-Thread和N32G457的嵌入式目標(biāo)識(shí)別系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)
如何利用SPD實(shí)現(xiàn)內(nèi)存自動(dòng)識(shí)別和配置?
如何利用ARM7設(shè)計(jì)嵌入式工控網(wǎng)絡(luò)?
如何利用ARM實(shí)現(xiàn)嵌入式語音識(shí)別模塊的設(shè)計(jì)
如何利用Allegro實(shí)現(xiàn)嵌入式系統(tǒng)高速電路布線設(shè)計(jì)?
如何利用FPGA和嵌入式系統(tǒng)設(shè)計(jì)遠(yuǎn)程監(jiān)控系統(tǒng)?
如何利用單片機(jī)實(shí)現(xiàn)嵌入式WebServer?
如何實(shí)現(xiàn)嵌入式里串口(UART)自動(dòng)波特率識(shí)別程序設(shè)計(jì)?
如何去實(shí)現(xiàn)嵌入式多媒體導(dǎo)游系統(tǒng)的設(shè)計(jì)?
如何在Nexar上實(shí)現(xiàn)基于RTOS51的嵌入式系統(tǒng)設(shè)計(jì)?
怎么設(shè)計(jì)基于嵌入式系統(tǒng)的語音口令識(shí)別系統(tǒng)?
怎樣去設(shè)計(jì)一種基于嵌入式架構(gòu)的指紋識(shí)別系統(tǒng)呢
智能交通系統(tǒng)中的車牌自動(dòng)識(shí)別技術(shù)有哪些應(yīng)用呢
生活中嵌入式系統(tǒng)實(shí)例
車輛自動(dòng)識(shí)別稱重系統(tǒng)是怎樣組成的?
車輛自動(dòng)識(shí)別稱重系統(tǒng)的工作原理
嵌入式系統(tǒng)中FPGA 的被動(dòng)串行配置方式
13可生存嵌入式OS內(nèi)存管理設(shè)計(jì)與實(shí)現(xiàn)
9嵌入式鐵路車號(hào)自動(dòng)識(shí)別系統(tǒng)研究設(shè)計(jì)
15基于SAW技術(shù)的車輛自動(dòng)識(shí)別系統(tǒng)的實(shí)現(xiàn)
22嵌入式系統(tǒng)中的內(nèi)存壓縮技術(shù)
1513
嵌入式系統(tǒng)內(nèi)存管理方案研究
1506
河道垃圾自動(dòng)識(shí)別監(jiān)測系統(tǒng) 燧機(jī)科技
作業(yè)人員護(hù)目鏡佩戴自動(dòng)識(shí)別系統(tǒng) 燧機(jī)科技
充電樁煙火自動(dòng)識(shí)別預(yù)警系統(tǒng)
設(shè)備漏油檢測識(shí)別系統(tǒng)漏油自動(dòng)識(shí)別系統(tǒng) 燧機(jī)科技
嵌入式Web訪問時(shí)的內(nèi)存丟失問題
756
嵌入式人體步態(tài)自動(dòng)識(shí)別系統(tǒng)
1308
DSP嵌入式說話人識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
748
DSP嵌入式說話人識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
722
基于RTOS的嵌入式系統(tǒng)在Nexar中的實(shí)現(xiàn)
1154
自動(dòng)指紋識(shí)別算法在嵌入式系統(tǒng)上的實(shí)現(xiàn)
96基于ARM和VxWorks實(shí)現(xiàn)自動(dòng)彩信發(fā)送的嵌入式系統(tǒng)
2213
基于FreeRTOS的嵌入式實(shí)時(shí)操作系統(tǒng)的原理和實(shí)現(xiàn)
7303基于嵌入式系統(tǒng)設(shè)計(jì)中查找內(nèi)存丟失的策略方
1317
指紋識(shí)別在嵌入式IoT系統(tǒng)中的實(shí)現(xiàn)和設(shè)計(jì)要點(diǎn)
6612
利用單片機(jī)實(shí)現(xiàn)嵌入式攝像機(jī)二進(jìn)制命令配置系統(tǒng)的設(shè)計(jì)
2620
嵌入式系統(tǒng)內(nèi)存管理機(jī)制詳解
4933嵌入式RTOS的內(nèi)存管理機(jī)制的實(shí)現(xiàn)方案和進(jìn)行改善設(shè)計(jì)
3142
基于UniSpeech芯片和語音識(shí)別算法實(shí)現(xiàn)嵌入式語音識(shí)別系統(tǒng)的設(shè)計(jì)
4822
嵌入式系統(tǒng)裸機(jī)編程的內(nèi)存管理簡介
3814
嵌入式指紋自動(dòng)識(shí)別系統(tǒng)USB接口的設(shè)計(jì)與實(shí)現(xiàn)資料下載
7基于DSP的嵌入式圖像識(shí)別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)總結(jié)
25基于嵌入式圖像處理的儀表自動(dòng)識(shí)別技術(shù)研究
6嵌入式系統(tǒng)的內(nèi)存指針操作
6860嵌入式linux+io+優(yōu)化,嵌入式Linux系統(tǒng)內(nèi)存優(yōu)化使用方法研究
10淺談嵌入式系統(tǒng)裸機(jī)編程的內(nèi)存管理
1990使用微型嵌入式設(shè)備實(shí)現(xiàn)嵌入式語音識(shí)別應(yīng)用程序
0變電站自動(dòng)化系統(tǒng)中嵌入式Web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)
0
電子發(fā)燒友App



評(píng)論