新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 淺析嵌入式存儲系統(tǒng)設計方法

淺析嵌入式存儲系統(tǒng)設計方法

作者: 時間:2010-01-21 來源:網(wǎng)絡 收藏

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


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

ADDR:CLR EA ;關中斷

SETB/CLR P1.0 ;切換頁面

SETB/CLR P1.1

SETB/CLR P1.2

SETB EA ;開中斷

JMP REAL_ADDR ;跳轉(zhuǎn)

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


以上考慮了復位時頁面應切換到公共代碼區(qū)。

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

2.3 單片機存儲數(shù)據(jù)存儲區(qū)擴展

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

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

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

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


評論


相關推薦

技術專區(qū)

關閉