新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 淺析嵌入式存儲(chǔ)系統(tǒng)設(shè)計(jì)方法

淺析嵌入式存儲(chǔ)系統(tǒng)設(shè)計(jì)方法

作者: 時(shí)間:2010-01-21 來(lái)源:網(wǎng)絡(luò) 收藏

為提高器利用率可采用圖2所示的結(jié)構(gòu),其中公共段中存放了高32k段之間相互調(diào)用所需要


的跳轉(zhuǎn)表。各段相互調(diào)用之前應(yīng)先跳轉(zhuǎn)到公共段,執(zhí)行頁(yè)面切換后再跳轉(zhuǎn)到被調(diào)用程序的入口,這就實(shí)現(xiàn)了18位虛擬地址到16位主存地址的變換。不妨以P1.0,P1.1,P1.2作為頁(yè)面基址來(lái)指定不同的頁(yè),相應(yīng)的跳轉(zhuǎn)表程序結(jié)構(gòu)如下:

ADDR:CLR EA ;關(guān)中斷

SETB/CLR P1.0 ;切換頁(yè)面

SETB/CLR P1.1

SETB/CLR P1.2

SETB EA ;開中斷

JMP REAL_ADDR ;跳轉(zhuǎn)

在公共段(256k芯片的低32k)中存放操作和提供給用戶的其他庫(kù)函數(shù),其他各段用來(lái)存放的用戶程序。采用圖2結(jié)構(gòu)的單片機(jī)與存儲(chǔ)器接口原理圖如圖3所示。其中A0~A15地址線接法與普通存儲(chǔ)器擴(kuò)展相同。


以上考慮了復(fù)位時(shí)頁(yè)面應(yīng)切換到公共代碼區(qū)。

Keil C51編譯器是單片機(jī)開發(fā)應(yīng)用中非常流行的一種高效編譯器,它支持上述頁(yè)面分組技術(shù)。

2.3 單片機(jī)存儲(chǔ)數(shù)據(jù)存儲(chǔ)區(qū)擴(kuò)展

存儲(chǔ)系統(tǒng)中引入操作系統(tǒng)需要增加一定的數(shù)據(jù)存儲(chǔ)器開銷,必要時(shí)仍可以采用分頁(yè)技術(shù)擴(kuò)展數(shù)據(jù)存儲(chǔ)區(qū)容量。

引入操作系統(tǒng)以后,數(shù)據(jù)區(qū)有兩種組織,比較簡(jiǎn)單的一種是操作系統(tǒng)與用戶程序共用一個(gè)數(shù)據(jù)區(qū),編譯器將整個(gè)程序一起編譯,不必區(qū)分是系統(tǒng)程序還是用戶程序。但這樣對(duì)用戶來(lái)說(shuō)操作系統(tǒng)變得不透明了,而且不良的用戶程序可能會(huì)破壞系統(tǒng)的數(shù)據(jù)區(qū),導(dǎo)致整個(gè)系統(tǒng)崩潰。

相對(duì)應(yīng)的另一種方法是給操作系統(tǒng)與用戶程序分別分配獨(dú)立的數(shù)據(jù)區(qū),譬如將128k 數(shù)據(jù)存儲(chǔ)器給操作系統(tǒng)和用戶程序各分配64k。不幸地是,當(dāng)操作系統(tǒng)與用戶程序一起編譯時(shí),編譯器會(huì)自動(dòng)給它們分配不同的地址,這樣即使存儲(chǔ)器物理上是分開的,操作系統(tǒng)與用戶程序的數(shù)據(jù)區(qū)還是無(wú)法地址復(fù)用,這極大地浪費(fèi)了地址空間;而且對(duì)傳統(tǒng)的單片機(jī), Keil C 編譯器最大只支持64k數(shù)據(jù)區(qū),幸運(yùn)地是,這個(gè)矛盾可以通過(guò)采用虛擬接口的方法加以解決。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評(píng)論


相關(guān)推薦

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

關(guān)閉