色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 元件/連接器 > 設(shè)計(jì)應(yīng)用 > μPSD中存儲(chǔ)器系統(tǒng)的配置(圖)

          μPSD中存儲(chǔ)器系統(tǒng)的配置(圖)

          ——
          作者:空軍雷達(dá)學(xué)院科研部(430019) 孫樹印 時(shí)間:2007-02-06 來源: 收藏

            介紹μpsd的系統(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ù)空間與程序空間互相獨(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ǔ)器中,更新完成后,再切換回至用戶程序。基于mcs-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ǔ)器的內(nèi)容。主/次flash的#oe有兩個(gè)有效輸入項(xiàng),由vm位3/4控制#rd是否起作用,vm的1/2位來控制#psen是否起作用。在vm的各位確定后,可依圖1畫出簡(jiǎn)化的配置結(jié)構(gòu)。這里的#oe信號(hào)是對(duì)主/次flash的每一塊同時(shí)有效的。

            在實(shí)現(xiàn)iap時(shí),通過vm來實(shí)現(xiàn)對(duì)主/次flash的空間進(jìn)行換,例如,主flash作用戶程序,次flash用作升級(jí)程序;正常工作時(shí),主flash作程序空間,運(yùn)行用戶代碼,在進(jìn)行程序升級(jí)時(shí),將次flash切換作程序空間,并運(yùn)行次flash中的升級(jí)程序,再把主flash換到數(shù)據(jù)空間,對(duì)主flash中的用戶代碼進(jìn)行更新。

          μpsd存儲(chǔ)器的地址配置
            μpsd中對(duì)存儲(chǔ)器地址分配需遵守以下規(guī)則:
            規(guī)則1.主/次flash塊fs0~fs7,csboot0~csboot3的地址范圍不能大于其物理尺寸;

            規(guī)則2.主flash塊fs0~fs7之間地址不能重疊;

            規(guī)則3.次flash塊csboot0~csboot3之間地址不能重疊;

            規(guī)則4.sram、i/o、外設(shè)i/o地址不能重疊;

            規(guī)則5.主flash,次flash和sram,i/o,外設(shè)i/o,若地址重疊,存儲(chǔ)器有效優(yōu)先級(jí)為sram、i/o、外設(shè)i/o最高,次flash次之,主flash最低。

            在psdsoft設(shè)計(jì)中,若違反規(guī)則2、3、4會(huì)出現(xiàn)錯(cuò)誤,必須修改才能進(jìn)行下一步;而違反規(guī)則1只會(huì)發(fā)出警告,如果忽略一定要小心。規(guī)則5屬于解釋型規(guī)則,不會(huì)提出任何提示,注意地址重疊情況下優(yōu)先級(jí)低的存儲(chǔ)器不能被訪問。

            μpsd中通過dpld對(duì)每個(gè)存儲(chǔ)器的地址進(jìn)行分配,dpld的結(jié)構(gòu)如圖2所示。

          圖2 dpld的結(jié)構(gòu)

            dpld包括“與”陣列和“或”陣列,“與”陣中有輸入項(xiàng)共57項(xiàng),“或”陣中有輸出項(xiàng)共16項(xiàng)。輸入項(xiàng)表示可參于地址譯碼的信號(hào),輸出項(xiàng)即每個(gè)存儲(chǔ)器的cs信號(hào)。

            dpld的輸入項(xiàng)中最常用的是a0~a15,頁寄存器pgr0~pgr7,#rd、#psen、#wr、ale。pdn是在功率管理時(shí)使用,如果在地址中加入pdn,表示只有在電源有效時(shí)地址譯碼才有效,通常這項(xiàng)是自動(dòng)加入的,使用者可不用管。

            dpld的輸入項(xiàng)和輸出項(xiàng)不是必須全部配置的。在對(duì)μpsd的存儲(chǔ)器進(jìn)行地址配置時(shí),一個(gè)最重要的原則是“不超過64kb就不要分頁,沒有使用到的塊就不必配置”。對(duì)于小的項(xiàng)目中沒有使用到所有存儲(chǔ)器,不用去配置,這樣既簡(jiǎn)單,減少出錯(cuò),又方便調(diào)試和檢查。除csiop是必須配置的外,其他項(xiàng)均可根據(jù)需要進(jìn)行配置。

            psel由外設(shè)i/o模式控制,在pio模式下,pa口的所有i/o被設(shè)置為三態(tài)、雙向mcu數(shù)據(jù)緩沖器方式,與mcu的p0口有些類似。dpld中必須聲明psel0和/或psel1的有效地址范圍,在訪問此地址時(shí),pa口進(jìn)入pio方式。前面所述的vm寄存器中第7位是pio模式允許/禁止控制,pio模式的內(nèi)部控制結(jié)構(gòu)如圖3所示。為避免psel0和psel1所指定的范圍在程序/數(shù)據(jù)空間都有效,應(yīng)在psel0和psel1中加入“!#psen”信號(hào),以保證pio模式僅在訪問數(shù)據(jù)空間時(shí)有效。

          圖3 pio模式內(nèi)部控制結(jié)構(gòu)

          使用psdsoft對(duì)μpsd進(jìn)行配置和編程
            μpsd中page是一個(gè)8位寄存器,最多可實(shí)現(xiàn)256個(gè)頁面,page寄存器與地址范圍的配置是同時(shí)起作用的。如果你的系統(tǒng)中不論是程序還是數(shù)據(jù)存儲(chǔ)器的設(shè)計(jì)超出了64k,必須要分頁。   μpsd的page寄存器的8位可以獨(dú)立使用,在psdsoft中可定義為兩種方式,即paging和logic。paging就是作為分頁使用,logic是作為一般邏輯輸入功能,類似于pld中的節(jié)點(diǎn)node,或者cpld中的宏macro。作為paging時(shí),必須從最低位開始,使用n位作為paging,可實(shí)現(xiàn)2n個(gè)頁面的分配,即存儲(chǔ)器的地址配置中有2n個(gè)頁面可選擇。使用作為logig時(shí)必須從高位開始使用,可以為之定義一個(gè)名字,可用作dpld的輸入項(xiàng)。mcu在運(yùn)行時(shí)可以對(duì)page的進(jìn)行讀/寫操作,但是不能按位操作,也就是說必須先屏蔽再修改。

            在程序和數(shù)據(jù)均不超過64k時(shí),不必分頁,pgr0~pgr7不參加譯碼?,F(xiàn)在的psdsoft軟件中不要求用戶再寫地址方程式,只需要填寫地址范圍可以了。不使用分頁時(shí),片選的pgae number就不能填任何值,如果填“0”則表示位于頁0。在psdsoft中對(duì)公共區(qū)的設(shè)置方法很簡(jiǎn)單,只要不填作為公共區(qū)的存儲(chǔ)器的片選中的“page numbe”就可以了。

          μpsd存儲(chǔ)器配置實(shí)例
             作為本文的結(jié)束,舉一個(gè)典型的 μpsd應(yīng)用實(shí)例,讀者可參考其存儲(chǔ)器的配置方案。

             使用μpsd3234a-40u6器件,將fs0~fs7用作程序/數(shù)據(jù)存儲(chǔ)器,地址在8000h~0ffffh,分別位于頁0至頁7;csboot0~csboot3作為程序存儲(chǔ)器,作為公共區(qū),地址是0000h~7ffffh。擴(kuò)展sram位于0000h~1fffh,csiop位于7f00h~7fffh,用戶i/o空間定義為7e00h~7effh。

            這樣的存儲(chǔ)器配置能夠滿足大多數(shù)分頁項(xiàng)目的設(shè)計(jì)要求,使用了μpsd的所有存儲(chǔ)器,不僅最大化了程序空間和數(shù)據(jù)空間,也能實(shí)現(xiàn)iap功能。此方案中程序空間可達(dá)256k+32k,數(shù)據(jù)空間是256k(flash)+8k(sram)。用戶可根據(jù)實(shí)際應(yīng)用項(xiàng)目對(duì)配置進(jìn)行簡(jiǎn)單修改,去掉沒有使用的存儲(chǔ)器配置。

            如果用戶項(xiàng)目中要求實(shí)現(xiàn)iap或者對(duì)主flash數(shù)據(jù)存儲(chǔ)器進(jìn)行擦除/修改,請(qǐng)一定要注意,升級(jí)代碼或?qū)lash進(jìn)行擦除/修改操作的程序必須放于公共區(qū),即次flash中。

          參考文獻(xiàn)
          1 st 公司. data sheet of upsd3234a—
           flash programmable system devices with 8032
           microcontroller core and 64 kbit sram,2004
          2 st公司. an1816—configuring the keil
           compiler and psdsoft to handle multi-paged
           memory in μpsd application software,2004
          3 st公司.  um0050——psdsoft express
           design software tool for psd and upsd
           families,2004



          關(guān)鍵詞: 存儲(chǔ)器

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉