新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM與不同位寬存儲(chǔ)器的地址線錯(cuò)位接口

ARM與不同位寬存儲(chǔ)器的地址線錯(cuò)位接口

作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
ARM是32位,地址空間是2的32次冪,4G地址空間。所有的外設(shè)(FLASH,RAM,SD卡等等)都映射到這4G的空間上。比如大部分ARM7都把RAM映射到0x40000000,所以對RAM的操作就在0X40000000開始的地址上。FLASH從0X0開始。使用FLASH還要考慮地址重映射,就是選擇片內(nèi)FLASH或片外FLASH。

FLASH一般是8位或16位,當(dāng)它接到32位的ARM上時(shí),地址位就會(huì)錯(cuò)位。對于16位FLASH,F(xiàn)LASH的A0要接ARM的A1。對于8位FLASH,F(xiàn)LASH的A0要接ARM的A0。ARM的A0對應(yīng)8位,ARM的A1對應(yīng)16位,ARM的A2對應(yīng)32位,如果FLASH是32位,那么FLASH的A0接ARM的A2


32位的FLASH,F(xiàn)LASH的A0要接ARM的A2,因?yàn)?2位地址表示4個(gè)字節(jié),每次要跳4個(gè)字節(jié)的話,那么就是從A2開始才變化,A1 A0不變化

本文引用地址:http://m.butianyuan.cn/article/201611/321046.htm

16位的FLASH,F(xiàn)LASH的A0要接ARM的A1,因?yàn)?6位地址表示2個(gè)字節(jié),每次要跳2個(gè)字節(jié)的話,那么就是從A1開始才變化,A0不變化

8位的FLASH,F(xiàn)LASH的A0要接ARM的A0,因?yàn)?位地址表示1個(gè)字節(jié),每次要跳1個(gè)字節(jié)的話,那么就是從A0開始才變化。

對于 16位的FLASH ,我們可以這樣認(rèn)為:16位存儲(chǔ)器的設(shè)計(jì)者將低位A[0]省掉了,我們只要讀取一次就可以得到兩個(gè)字節(jié),讀取的

這個(gè)地址對應(yīng)于ARM發(fā)出的地址的A[21..1],即實(shí)際上是存儲(chǔ)器需要的偶地址(偶地址是針對ARM發(fā)出的地址而言的)。
LPC2200,S3C2410A,S3C2440等都是上述這樣的,當(dāng)然也有不同的。
IMX27和BF537這兩款CPU都是不管存儲(chǔ)器是多少位的的,都是直接A0-B0,沒有任何考慮錯(cuò)位的情況,是因?yàn)樗麄兊拇鎯?chǔ)控制器已經(jīng)內(nèi)部作了處理
了,三星的如S3C2443S3C2450S3C6410等后續(xù)的也都是這樣子了
再來看看外部總線配置EMC和外部總線功能引腳的關(guān)系:
OE:輸出使能 OUT EABLE
WE:WRITE EABLE 寫入使能
CE:chip EABLE 片選
ALE:地址鎖存使能(ADRESS LOCK EABLE)
BLS:字節(jié)選擇信號(hào)
重點(diǎn)看 WE BLS 的關(guān)系
在LPC2200系列ARM中,為了適應(yīng)外部存儲(chǔ)器組的寬度和類型,EMC提供了一組字節(jié)選擇信號(hào),要實(shí)現(xiàn)這些功能,需要對相應(yīng)存儲(chǔ)器配置寄存器中的RBLE位進(jìn)行設(shè)定。
對外部存儲(chǔ)器組進(jìn)行寫訪問時(shí),RBLE位決定WE信號(hào)是否有效;
對外部存儲(chǔ)器組進(jìn)行讀訪問時(shí),RBLE位決定BLSn信號(hào)是否有效。
外部存儲(chǔ)器的接口取決于存儲(chǔ)器組的寬度(32位、16位、8位,由BCFG的MW位決定)。而且,存儲(chǔ)器芯片的選擇也需要對BCFG寄存器的RBLE位進(jìn)行適當(dāng)?shù)脑O(shè)置。選擇8位或者不按字節(jié)區(qū)分的的存儲(chǔ)器的時(shí)候,RBLE位應(yīng)該為0,在讀訪問期間EMC將BLS[3:0]拉高。當(dāng)存儲(chǔ)器組為含有字節(jié)選擇選擇輸入的16位或32位存儲(chǔ)器組成的時(shí)候,RBLE位應(yīng)該為1,在讀訪問期間EMC將BLS[3:0]拉低。注意這里沒有對RBLE為0或1的時(shí)候,寫訪問期間BLS[3:0]引腳的電平作出交代。
以16位寬的存儲(chǔ)器組連接16位的存儲(chǔ)器芯片為例(這種情況比較常見,周立功的easyarm2200就是這樣的)。很顯然這里RBLE位應(yīng)該為1。
BLS[1]、BLS[0]分別接到了存儲(chǔ)器芯片的UB、LB腳。作為16位的存儲(chǔ)器芯片,要取得16位寬度的字,無論是讀訪問還是寫訪問,UB和LB位都必須為低電平0。作為16位的ram,程序中不可避免的存在對它的寫操作。程序能正常運(yùn)行就說明對它的寫操作是成功的??梢赃M(jìn)一步推斷在寫訪問期間,BLS[1] 、BLS[0]是低電平的。當(dāng)存儲(chǔ)器組為含有字節(jié)選擇選擇輸入的16位或32位存儲(chǔ)器組成的時(shí)候,RBLE位應(yīng)該為1,在讀訪問期間EMC將BLS[3:0]拉低。在寫訪問周期EMC同樣是將BLS[3:0]拉低。
上一頁 1 2 下一頁

評論


技術(shù)專區(qū)

關(guān)閉