淺析嵌入式存儲系統設計方法
為此,將公共代碼段中的程序單獨編譯,并且在鏈接、定位目標代碼時(shí),給操作系統和公共庫函數的每個(gè)函數在0x0000~0x7FFFH內分別指定一個(gè)固定的首地址。鑒于用戶(hù)程序可能調用這些函數,需要為這些函數分別編寫(xiě)一個(gè)相同類(lèi)型的同名偽函數,每個(gè)偽函數僅包含一條到真實(shí)函數(入口地址已知)的轉移指令,所有這些函數都存放在一個(gè)被稱(chēng)為虛擬接口的頭文件中。虛擬接口文件與用戶(hù)程序一起編譯,完成用戶(hù)程序與操作系統兩次編譯的接口。顯然這種方法僅占用了用戶(hù)區的極少量代碼空間,而絲毫沒(méi)有浪費用戶(hù)數據區,同時(shí)又實(shí)現了地址復用。
公共代碼段和操作系統的數據區特殊的對應關(guān)系(見(jiàn)圖4),很容易通過(guò)P2端口線(xiàn)來(lái)指定。由單片機外部程序區訪(fǎng)問(wèn)時(shí)序(圖 5)可知,PSEN的上升沿后數據總線(xiàn)A0~A7上開(kāi)始出現指令或指令操作數,此時(shí)的地址線(xiàn)A15指示當前訪(fǎng)問(wèn)的是公共代碼段(對應數據區高64k)還是其他程序段(對應數據區低64k),因此在PSEN上升沿鎖存地址線(xiàn)A15,用它可以選擇不同的數據存儲器空間。
3 存儲系統的性能分析
本文基于虛擬存儲系統思想實(shí)現了嵌入式存儲系統中大容量存儲器的擴展。不難看出系統的擴展余地受端口線(xiàn)的限制。由于在同一塊芯片中構造圖2所示的結構,需要多使用一根端口線(xiàn),因此對于8051系列使用整個(gè)P1口可以將系統的程序虛擬空間擴展至8M字節。數據存儲區擴展的最大容量還與程序在編譯時(shí)所被分成塊的數目有關(guān),最大可達16M字節,這在單片機嵌入式存儲系統中已經(jīng)是足夠大了。
程序在調用不同頁(yè)面的函數時(shí)需要額外的軟件切換周期,頻繁的頁(yè)面切換會(huì )降低系統的性能,因此編譯時(shí)應仔細選擇函數,盡可能將相關(guān)的函數分配在同一頁(yè)中。
數據存儲區切換是由硬件實(shí)現的,頁(yè)面切換并不降低系統性能。由于操作系統與用戶(hù)程序數據區相互獨立,對用戶(hù)來(lái)說(shuō)整個(gè)64k空間都是可用的,這就增加了操作系統的透明性。
4結論
嵌入式存儲系統由于它的專(zhuān)用性和特殊性,系統的軟硬件設計都與傳統的計算機系統設計方法有所不同。但進(jìn)行嵌入式系統設計時(shí)仍然很有必要借鑒傳統計算機系統體系結構成熟的設計方法,“量體裁衣”為我所用。作者在進(jìn)行嵌入式存儲系統平臺設計時(shí)借鑒了傳統計算機虛擬存儲思想來(lái)擴展存儲系統,并在實(shí)際項目中得以應用,證明這種方法是非常有效的。
評論