μPSD中存儲(chǔ)器系統(tǒng)的配置(圖)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
介紹μPSD的存儲(chǔ)器系統(tǒng)內(nèi)部結(jié)構(gòu)和配置方法,討論了相關(guān)PSDSOFT軟件的使用方法。
背景
如果對(duì)ST公司的μPSD器件有一定了解,熟悉MCS-51系列單片機(jī)的內(nèi)部結(jié)構(gòu)及原理,使用過PSDSOFT EXPRESS和KEIL開發(fā)設(shè)計(jì),將對(duì)理解本文有很大的幫助。
MCS-51單片機(jī)采用哈佛結(jié)構(gòu)的系統(tǒng)結(jié)構(gòu),即數(shù)據(jù)存儲(chǔ)器空間與程序存儲(chǔ)器空間互相獨(dú)立。它有16根地址總線,最大尋址能力為64K,這決定程序或數(shù)據(jù)空間不能超過64K。以上兩點(diǎn)是本文所有討論的前提基礎(chǔ)。
μPSD的存儲(chǔ)器系統(tǒng)結(jié)構(gòu)
μPSD由標(biāo)準(zhǔn)8032核和ST公司的PSD(可編程系統(tǒng)器件)構(gòu)成,存儲(chǔ)器系統(tǒng)包含兩個(gè)主要部分,一是8032的內(nèi)部存儲(chǔ)器資源:256B內(nèi)部RAM和128B內(nèi)部特殊功能寄存器SFR;二是PSD中的存儲(chǔ)器模塊:主/次FLASH存儲(chǔ)器,擴(kuò)展的SRAM及控制PSD的CSIOP(Chip-Select I/O Port,類似于8051的SFR)。μPSD的主/次FLASH是完全相同的存儲(chǔ)介質(zhì)(早期的PSD813F1中的次存儲(chǔ)器是EEPROM結(jié)構(gòu)的),是兩個(gè)獨(dú)立的存儲(chǔ)器。主FLASH通常分4~8塊,每塊16~32kb;次FLASH通常分2~4塊,一般每塊為8kb。μPSD中使用譯碼可編程譯碼邏輯陣列(DPLD),頁寄存器PAGE,存儲(chǔ)器控制寄存器VM,聯(lián)合實(shí)現(xiàn)對(duì)存儲(chǔ)器系統(tǒng)的配置。
關(guān)于IAP和分頁技術(shù)
為什么μPSD中要有兩個(gè)FLASH?簡(jiǎn)單地說,這是為了實(shí)現(xiàn)IAP而設(shè)計(jì)的。IAP就是 “在應(yīng)用中編程或升級(jí)代碼”,其原理是:?jiǎn)纹瑱C(jī)中裝有一套用戶程序和一套代碼更新程序。正常情況下,單片機(jī)運(yùn)行的是用戶程序;在需要程序升級(jí)時(shí),系統(tǒng)會(huì)切換到代碼更新程序,通過串口或其他通信口下載新的用戶程序代碼,并寫入到原來的用戶程序存儲(chǔ)器中,更新完成后,再切換回至用戶程序?;贛CS-51系統(tǒng)結(jié)構(gòu)特點(diǎn),在同一個(gè)存儲(chǔ)器中運(yùn)行主程序和改寫程序是不可能實(shí)現(xiàn)的。所有用MCS-51來實(shí)現(xiàn)IAP功能的系統(tǒng)都必須有兩個(gè)獨(dú)立的存儲(chǔ)器。實(shí)現(xiàn)IAP的難點(diǎn)在于存儲(chǔ)器的切換控制,體現(xiàn)在μPSD中主要就是如何使用VM寄存器以及如何對(duì)存儲(chǔ)器的片選控制。
此外,隨著應(yīng)用要求越來越高,代碼長(zhǎng)度不斷增加,64K的限制已經(jīng)成為設(shè)計(jì)中的瓶頸。許多軟/硬件供應(yīng)商都竭力推出自己的方案以實(shí)現(xiàn)MCS-51對(duì)大于64K的支持,分頁技術(shù)應(yīng)運(yùn)而生。
分頁設(shè)計(jì)中最重要的就是公共區(qū)和分頁區(qū)的設(shè)置,所謂公共區(qū)就是在所有的頁面中均為有效的一塊存儲(chǔ)器區(qū)。在程序空間中,64K范圍(1頁)內(nèi)的程序是連續(xù)的,一旦超過此范圍,只保留低16位,最高位將被丟棄,程序會(huì)跳回開始處運(yùn)行。保證程序在頁面切換時(shí)不會(huì)“跑飛”就是通過公共區(qū)實(shí)現(xiàn)的。分頁技術(shù)的實(shí)現(xiàn)方法是:當(dāng)程序在調(diào)用位于分頁區(qū)的程序時(shí),首先保存返回地址,然后轉(zhuǎn)跳到公共區(qū)執(zhí)行,再修改頁寄存器到新的頁號(hào)實(shí)現(xiàn)頁面的切換,調(diào)用程序,返回到公共區(qū),恢復(fù)原來頁號(hào),最后從保存的返回地址返回。
公共區(qū)的大小由用戶自行設(shè)定,在μPSD中通常使用主/次FLASH中的一塊或多塊作為公共區(qū),如使用1塊次FLASH即8KB,2塊次FLSAH即16KB,1塊主FLASH則是32KB,若只想使用主FLASH中的20KB作公共區(qū)也是可行的,只要將主FLASH的地址范圍只定義為20K的范圍就可以了。當(dāng)然,公共區(qū)的大小不能超過64K。公共區(qū)必須設(shè)在64K范圍的低端,這是因?yàn)镸CS-51中斷入口地址的原因。公共區(qū)中保存所有的公用子程序,中斷服務(wù)程序,全局常數(shù)表以及系統(tǒng)的初始化部分及頁面切換程序。
μPSD存儲(chǔ)器的空間配置
μPSD中存儲(chǔ)器系統(tǒng)配置主要是對(duì)程序空間的設(shè)置,相對(duì)而言數(shù)據(jù)空間的配置稍微簡(jiǎn)單一點(diǎn)。μPSD中主/次FLASH可設(shè)置為程序或數(shù)據(jù)空間,這是由VM寄存器決定的,VM寄存器的作用如表1所示。VM的內(nèi)容可在運(yùn)行時(shí)由MCU進(jìn)行修改,這是實(shí)現(xiàn)IAP的關(guān)鍵。在PSDSOFT軟件流程中可設(shè)置主/次FLASH為程序、數(shù)據(jù)存儲(chǔ)器或程序/數(shù)據(jù)混合存儲(chǔ)器,實(shí)際上就是對(duì)VM寄存器上電時(shí)的默認(rèn)值進(jìn)行設(shè)置,換句話說,就是確定上電時(shí)主/次FLASH分別位于什么空間。
表1 VM寄存器各位作用
表中,“#RD可以/不能訪問”是指此存儲(chǔ)器是否位于數(shù)據(jù)空間,“#PSEN可以/不能訪問”是指此存儲(chǔ)器是否位于數(shù)據(jù)空間,因?yàn)樵贛CS-51系統(tǒng)中對(duì)外部數(shù)據(jù)/程序空間的訪問就是通過#RD和#PSEN進(jìn)行區(qū)分的。舉例說明:
VM=0CH,表示主FLASH位于程序空間,次FLASH位于數(shù)據(jù)空間;
VM=16H,表示主FLASH位于數(shù)據(jù)和程序空間,次FLASH位于程序間。
位0用來指定SRAM是否位于程序空間,因?yàn)镾RAM只在數(shù)據(jù)空間有效。位7用來指示外設(shè)IO模式的允許與禁止,具體將在后面介紹。圖1可幫助對(duì)VM寄存器作用的理解。
圖1 μPSD中存儲(chǔ)器系統(tǒng)結(jié)構(gòu)
如圖1所示,VM位0~4與#RD、#PSEN聯(lián)合實(shí)現(xiàn)對(duì)主/次FLASH及SRAM的選擇。這里是通過輸出允許#OE信號(hào)進(jìn)行控制的,也就是說即使存儲(chǔ)器的地址有效(CS有效),如果#OE無效,也不能訪問到此存儲(chǔ)器的