a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 8031+PSD813實現在線編程

8031+PSD813實現在線編程

作者: 時間:2012-01-30 來源:網絡 收藏

引言

  “在應用可再編程”(In-Application reProgrammable,簡稱IAP)通常稱為“在線編程”,已經不是陌生的概念了。要實現嵌入式微控制器/處理器系統的IAP功能,就意味著可以用主機(PC機或服務器)通過通信通道把固件(程序代碼)下載到應用系統的存儲器中去。具有了IAP功能的電子產品有諸多益處:縮短開發進程,搶先占領市場;在裝配線上即可編程和測試;現場甚至是遠程升級程序代碼,降低維護/升級成本。IAP技術對于通信、電力領域非常重要,如IC卡電話、分時計費電表等產品,通過遠程更新代碼能大大降低后期服務費用。

  目前最常用的微控制器仍是MCS-51系列,其有限的存儲空間、運行時不能更改程序代碼、程序/數據空間必須分開等條件限制了IAP功能的實現,其中要解決的關鍵問題有以下幾個方面:

 ?。?) 存儲器可在線再編程。
 ?。?) 增加第二個存儲器陣列,用于IAP期間MCU的運行。
 ?。?) 實現對程序存儲器的寫入。
 ?。?) 地址譯碼自動生成。

  Waferscale(WSI)公司推出的Easy FlashTM系列可編程外圍芯片產品PSD8XX是針對實現IAP問題而設計的,片內提供了IAP所必需的兩塊獨立的存儲器陣列和自動地址譯碼電路,與 80C51構成兩芯片的IAP完整解決方案。我們用到的F1芯片內部有:1MB Flash主存儲器、第二塊256KB EEPROM存儲器、16KB SRAM、復雜的可編程邏輯陣列CPLD,擴展I/O口及JTAG接口等功能模塊。

一、 方案說明

  在介紹方案之前,首先介紹將用到的PSD的兩個內部寄存器:頁寄存器(page)和VM寄存器。在PSD內部有一組控制寄存器用來對PSD進行設置,如I/O口方式、JTAG配置等。它們的地址是基址CSIOP加偏移地址。CSIOP地址可以在Able語言(見附錄)中設定。頁寄存器的偏移地址是E0H,VM寄存器的是E2H。當CSIOP被定義為0900H時,它們的訪問地址就是(0900+E0)H和(0900+E2)H。8位的頁寄存器可使MCU的尋址空間擴大256倍,它的內容可以由MCU來讀出和寫入。頁寄存器直接參與PSD內部存儲器的地址選擇。在作為頁尋址時寫入要訪問的頁地址, PSD內部地址譯碼邏輯就立刻選中目標存儲器空間。頁寄存器是可以按位使用的,在不用來作頁面選擇時,還可以作一般邏輯使用,如本方案中用到的swap、 enabledatahalf就是用頁尋址未用到的位來實現的。VM寄存器用來分開程序空間(PSEN信號使能)和數據空間(RD信號使能), F1中Flash和EEPROM、SRAM可設置在不同空間。VM寄存器內容定義如表1所列。

  如果VM=12H,則設置Flash和SRAM位于數據空間,EEPROM位于程序空間。

  使用頁寄存器實現分頁存儲時,應該設置一個公共存儲器區,即程序在任何位置執行時都能夠訪問到的空間(或者說是頁不相關的地址空間)。本方案中公共存儲器區占去了每一頁的低一半的存儲空間(如圖1~圖4所示),用于放置初始化程序、中斷服務程序、頁切換程序以及物理設備驅動程序等重要子程序。同樣,重要數據也應當在任何頁都可以訪問,如PSD控制寄存器、I/O、用于保存堆棧和全局變量的系統RAM等。

表1 VM寄存器
按此在新窗口瀏覽圖片

按此在新窗口瀏覽圖片
圖1 上電時(啟動/引導狀態)系統存儲器(VM=12H)

按此在新窗口瀏覽圖片
圖2 寫06H到VM,將Flash“移”到程序空間后系統存儲器

按此在新窗口瀏覽圖片
圖3 “swap”位寫1,“切換”Flash和EEPROM后系統存儲器

  本方案充分利用了F1中存儲器的獨特功能,突破了80C51MCU的最大64KB訪問空間的限制,PSD內部所有Flash存儲器可以由80C51使用。 IAP實現的基本原理是:系統從PSD的EEPROM啟動,執行引導/下載程序,如果需要的話從PC機或其他主機中通過UART下載固件(程序)到PSD 的Flash存儲器。然后,程序從EEPROM轉跳到Flash,再通過PSD中的一個特殊寄存器VM將原引導區(地址0000H)的EEPROM用 Flash替代,實現了通過UART對PSD中Flash存儲器的在線編程。

二、 系統存儲器映射

  系統啟動過程中存儲器的映射變換如圖1~圖4所示,其中FSx、EESx是PSD813F1內部存儲器塊。FSx對應8個Flash塊,每塊16KB;EESx對應4個EEPROM塊,每塊8KB。

按此在新窗口瀏覽圖片
圖4 寫0CH到VM,將EEPROM“移”到數據空間后系統存儲器映射

  MCU的運行有兩個基本模式:一個是引導/下載模式;另一個是正常運行模式。圖1~圖4顯示了上電啟動后從引導/下載模式到正常運行模式轉換過程中系統存儲器的變化。

  圖1顯示了上電時系統存儲器的映射情況。系統從EEPROM開始,檢查是否要通過80C51的UART對Flash中的程序進行升級。此時, PSD中全部Flash存儲器都處于80C51的數據空間,而EEPROM則處于80C51的程序空間。這是在WSI的PSDSOFT開發系統第二個步驟的“PSD Configuration”中設置的。在“Set VM Register Configuration at Power Up”框內,設置Flash為“Data Space”,EEPROM為“Program Space”。此時,VM寄存器在上電時自動被設置為12H。PSD813F1允許在程序執行中改變VM寄存器的內容,這對于實現IAP也是非常重要的。

  在完成對Flash中程序升級或不需要升級時,寫VM寄存器為06H,將Flash從80C51的數據空間“移”到程序空間(此時系統仍在EEPROM中運行)。圖2顯示了Flash被移到程序空間后的情況,這是在VM寄存器被寫后立刻產生的。

  下一步,80C51運行程序從PSD EEPROM中“跳”到Flash。在程序寫1到“swap”位(上電時“swap”的值是0)進行地址“切換”,程序就進入Flash中運行了。注意:如果在EEPROM中運行時對“swap”寫1,結果會立刻發生(就好像抽掉了你正坐的椅子一樣)。所以,在此之前最好將程序轉跳到“切換”影響不到的段(即公共訪問區,如FS1)。現在,供MCU上電時引導(地址0000H)的EEPROM被Flash替代,如圖3所示。

  最后一步,程序已經在PSD的Flash中運行,寫0CH到VM寄存器,把EEPROM從80C51的程序空間“移”到數據空間。并且,MCU 跳轉到在PSD的FLSAH FS0塊中的復位入口0000H,用戶的程序開始真正執行。此時,系統存儲器映射如圖4所示(正常工作模式)。所有PSD的128KB Flash都在程序空間,其中32KB是公共訪問區,96KB采用分頁訪問。同時,EEPROM全部位于數據空間,且可在任何頁進行訪問。請注意: EES2和EES3(地址是C000H至FFFFH)可以被用戶當作一般數據存儲器使用,而EES0和EES1則保留為系統引導代碼區(地址是8000H 至BFFFH)。

  這一方案還可以實現對PSD中EEPROM的引導程序進行升級,此時程序在PSD的Flash中運行。這對于使用EPROM作為引導的IAP系統是不可能實現的。

  為了避免處于程序空間EES0、EES1中的引導代碼被意外更改,還可以通過未用到的頁寄存器位實現另外一個功能,對引導代碼進行保護。定義 “enabledatahalf”位,將它寫為1,一方面保護ESS0、ESS1,另一方面把EES2、EES3作為一般數據存儲器使用。如果要升級引導代碼,則須先將“enabledatahalf”置為0,下載新的引導代碼到EES0、EES1,然后再將“enabledatahalf”置為1。必須保護好引導代碼,因為引導程序一旦被破壞,系統就徹底崩潰;如果僅僅是用戶程序被破壞,還可以通過UART重新下載。

三、 軟件設計

  通過上面的介紹可知,實現IAP的軟件要包括系統啟動和用戶系統的載入兩個部分。其中的關鍵是程序在Flash與EEPROM之間的切換。

  系統啟動的引導程序是放在EEPROM中的;用戶程序則放到Flash中。如果用戶僅希望實現對Flash中的用戶程序的IAP功能,而不要對 EEPROM中引導程序的升級,那么用戶程序可以像一般80C51程序一樣,不用作任何修改,直接放入Flash。如果用戶還要對引導程序進行升級,還要在用戶程序模塊中嵌入一個啟動模塊(詳見第四節)。

  引導程序(boot)和用戶程序啟動模塊(startup)的流程圖如圖5和圖6所示。

按此在新窗口瀏覽圖片
圖5 EEPROM引導程序(boot)

按此在新窗口瀏覽圖片
圖6 Flash引導程序(startup)

  與之配合使用的PC機程序是RS-232接口通信程序,可參考相關例程,或直接使用Windows中的“超級終端”工具。

四、 系統實現

  第一步,設計用戶程序。

  如果不需要對引導程序升級則不作修改,直接將程序代碼下載到Flash中;反之,則要在用戶程序模塊中加入一個啟動(startup)模塊。方法是用L51(Franklin公司產品)將用戶模塊和startup模塊鏈接在一起。方法如下:

  L51 用戶OBJ文件>, startup.obj

  第二步,使用PSDsoft開發系統進行設計。

  在PSDsoft開發系統中建立一個新項目,將PSD器件選定為PSD813F1。在流程圖設計“degin entry”中增加新Abel模塊,進行硬件描述設計,除用戶的自定義功能外還應包括IAP部分(參見附錄)。并且,在“device config”中設置MCU總線方式、JTAG、用戶碼等選項。特別注意的是在MCU總線中,設控制信號為“WR,RD,PSEN”,Flash為數據存儲器,EEPROM為程序存儲器。然后,對以上部分進行編譯和裝配。

  第三步,把編譯好的模塊和MCU程序模塊合并成一個文件。這里重要的是EEPROM中的引導程序。Flash中的程序可以同時裝入,也可以在應用中通過UART裝入。

  最后一步,用DK800開發工具的Flash Link電纜或芯片編程工具(PSDpro)對PSD813進行編程。

  將按上述方法編程好的PSD813芯片裝到用戶電路板(包含RS-232接口通信電路)上,用串行電纜與PC機串口相連,在PC機上運行 PSDload程序或Windows通信附件“超級終端”。加電復位用戶板,IAP系統啟動,與PC機連接成功后,就能通過PC機下載或升級PSD中的用戶程序。如果沒有PC連接或沒有下載要求時,系統會自動進入用戶程序運行。

  PSD813中主Flash存儲器和第二個存儲器陣列EEPROM在物理上是獨立的,不存在任何邏輯上的區別。也就是說,可以用Flash存放用戶系統,也可以用EEPROM。如果用戶程序很?。‥EPROM的空間就夠用),而用到的數據空間又很大,可以把上述方案中的Flash和EEPROM 交換使用。并且,我們舉出的Flash、EEPROM、SRAM的地址映射也僅是PSD813F1的多種地址映射方案中的一個,使用頁寄存器可以靈活設計用戶自己的地址映射方案。

  這里用的是UART通信,用戶同樣可以選擇其他通信方式,如IR、RF、CAN、LAN、WAN,甚至是Internet。從一般性考慮,本方案同樣可適用于其他單片機系統中,只要通過簡單修改提供的程序即可使用。另外,本方案中的PSD813F1可以用WSI公司其他PSD8XX產品或最新的 PSD9XX系列產品替換,僅需要在附錄文件中稍加修改。

附錄 Abel硬件描述語言文件

//定義‘swap’位至頁寄存器位pgr7,
//定義‘enabledatahalf’位至頁寄存器位pgr7:
swap node 117; (pgr7)
enable_data_half node 116; (pgr6)
//Flash片選方程如下:
fs0=((address>=^h8000) (address=^hBFFF) (page==3) !swap ) #((address>=^h0000) (address=^h3FFF) (page==X) swap );
fs1=(address>=^h4000) (address=^h7FFF) (page==X);
fs2=(address>=^h8000) (address=^hBFFF) (page==0);
fs3=(address>=^hC000) (address=^hFFFF) (page==0);
fs4=(address>=^h8000) (address=^hBFFF) (page==1);
fs5=(address>=^hC000) (address=^hFFFF) (page==1);
fs6=(address>=^h8000) (address=^hBFFF) (page==2);
fs7=(address>=^hC000) (address=^hFFFF) (page==2);
//EEPROM片選方程如下:
ees0=((address>=^h0000) (address=^h1FFF) (page==X) !swap) #((address>=^h8000) (address=^h9FFF) (page==X) swap !enabledatahalf);
ees1=((address>=^h2000) (address=^h3FFF) (page==X) !swap) #((address>=^hA000) (address=^hBFFF) (page==X) swap !enabledatahalf);
ees2=(address>=^hC000) (address=^hDFFF) (page==X) enabledatahalf;
ees3=(address>=^hE000) (address=^hFFFF) (page==X) enabledatahalf;
//定義SRAM片選 rs0=(address>=^h0100) (address=^08FF) (page==X); //定義PSD控制寄存器CSIOP地址
csiop=(address>=^h0900) (address=^09FF) (page==X);

參考資料

1 PSD8XXF系列數據手冊及應用筆記.武漢力源,1998(8)
2 PSDsoft User Manual. 美國WSI公司,1998

存儲器相關文章:存儲器原理


電能表相關文章:電能表原理


評論


相關推薦

技術專區

關閉