亚洲日本成本线在观看,最新国自产拍在线,免费性爱视频日本,久久精品国产亚洲精品国产精品

            現(xiàn)在位置:范文先生網(wǎng)>理工論文>電子通信論文>基于P89C51RD2 IAP功能的數(shù)據(jù)存取與軟件升級

            基于P89C51RD2 IAP功能的數(shù)據(jù)存取與軟件升級

            時間:2022-12-05 14:00:42 電子通信論文 我要投稿
            • 相關(guān)推薦

            基于P89C51RD2 IAP功能的數(shù)據(jù)存取與軟件升級

              摘要:分析BootROM中的部分源代碼,重點是IAP功能以及ISP和IAP的相互關(guān)系;應用IAP功能將剩余程序空間轉(zhuǎn)化為數(shù)據(jù)空間,以及自編ISP程序來實現(xiàn)儀器的軟件升級。
              
              關(guān)鍵詞:P89C51RD2BootROMIAP(ISP)功能軟件升級
              
              1概述
              
              P89C51RD2是Philips公司的80C51系列單片機中的佼佼者,具有1KB的片上RAM和64KB的片上內(nèi)存;具有3種編程方式,即在系統(tǒng)編程ISP(InSystemProgramming)、在應用中編程IAP(In-ApplicationProgramming)以及通過商用編程器的并行編程。ISP是指電路板上的空白器件可以編程寫入最終用戶代碼,而不需要從電路板上取下器件,已經(jīng)編程的器件也可以用ISP方式擦除或再編程;ISP是指在用戶的應用程序中獲取新代碼對Flash塊、Flash寄存器、Boot向量等進行擦除和重新編程,即可以用程序來改變程序。IAP對于儀器儀表的智能化意義重大。高檔的智能化儀器都具有自診斷、自修復、自組織、自適應和自學習等功能,而這些功能實現(xiàn)的物質(zhì)基礎,就是儀器的程序可以根據(jù)實際情況進行改變和調(diào)整。
              
              Philips公司在P89C51RD2中提供了BootROM固件,位于0FC00H——0FFFFH空間,與閃存空間重疊,如圖1所示。Philips公司提供了尋址該器件的方法,因此可以通過讀取其目標代碼進行分析研究。有關(guān)BootROM的讀出方法以及BootROM與ISP功能的實現(xiàn)在參考文獻3已有所論述。
              
              P89C51RD2的IAP功能的實現(xiàn)了是靠Philips公司提供的BootROM固件來實現(xiàn)的。BootROM固件中已經(jīng)固化有上述擦除和編程等子程序,只要應用程序來調(diào)用即可。通過對BootROM反匯編內(nèi)容進一步的分析可以看出:ISP和IAP是一脈相承的,ISP功能的實現(xiàn)調(diào)用IAP功能的子程序。本文將分析BootROM中有關(guān)IAP及IAP和ISP的相互關(guān)系,以達到深入了解和利用IAP功能的目的。
              
              2對BootROM中有關(guān)IAP功能代碼的分析
              
              3對BootROM中ISP和IAP的相互關(guān)系分析
              
              2、3內(nèi)容請見本刊網(wǎng)絡補充版
              
              4IAP功能的使用
              
              4.1程序空間用作數(shù)據(jù)空間
              
              在一個實際的應用系統(tǒng)中,往往有一些關(guān)鍵性的數(shù)據(jù)需要保存,例如用戶設置數(shù)據(jù)或重要的過程數(shù)據(jù)。目前的通過做法有兩種:一種是在電路中擴展非易失性SRAM,多用在對時間要求比較苛刻的場合;另一種做法是擴展EEPROM(并行或串行)或類似存儲器,多用在對時間要求不太荷刻的場合。這兩種方法可達到掉電后數(shù)據(jù)不丟失的目的。
              
              P89C51RD2具有64KB的片上閃存,這對于一般的應用來說足夠大,往往會有剩余的閃存空間。在通常狀況下,MCU的編程只能通過商用編程器來進行,那么剩余的閃存空間只能作為程序升級的備用空間,而不能作為數(shù)據(jù)空間;另一方面,如果需要保存數(shù)據(jù),還要另外擴展存儲器,這樣不但增加了電路板的面積,而且增加了調(diào)試難度。
              
              而P89C51RD2是一種具有IAP功能的單片機,其內(nèi)存結(jié)構(gòu)具有如下特點(見圖1):
              
             、匍W存空間是分塊的。64KB的內(nèi)存空間共分5塊,由低到高分別為8KB(BLOCK0)、8KB(BLOCK1)、16KB(BLOCK2)、16KB(BLOCK3)、16KB(BLOCK4);
              
             、诿恳粔K都可以單獨擦除;
              
             、墼诔绦蛑锌梢哉{(diào)用IAP功能,對閃存中的每一字節(jié)進行單獨編程。
              
              正是由于上述3個特點,在一些對時間要求不是很荷刻的場合,都可以將剩余的閃存空間作為數(shù)據(jù)空間來使用。例如,作者在海洋氣象監(jiān)測儀器的研制中,有些關(guān)鍵數(shù)據(jù)需要存儲,如整點的風速、風向、溫度、濕度、氣壓和降水量的瞬時值和十分鐘平均值,以及最值、極值、大風段等。而數(shù)據(jù)的采集要求3s采集1次,采集處理時間大約需要0.5s,則剩余的時間內(nèi)就可以利用IAP功能來存儲數(shù)據(jù)。這些存儲的數(shù)據(jù)可以通過串口被上位機調(diào)用。
              
              由于整個軟件經(jīng)匯編后大約20KB,因此,將地址為0000H——7FFFH的32KB內(nèi)存空間作為程序空間,則可以儀器的升級預留足夠的空間;而將8000H——0FFFFH的32KB閃存空間留作數(shù)據(jù)存儲空間。由圖1可以看出,從8000H——0FFFFH的32KB閃存空間由BLOCK3和BLOCK4兩塊組成,每一塊為16KB,足可以存儲10天的數(shù)據(jù)量。在實際操作中,將BLOCK3和BLOCK4輪流使用,當10天的數(shù)據(jù)量存滿其中一塊時,通過程序跳轉(zhuǎn)到另一塊中,在使用前先將該塊擦除。這樣BLOCK3和BLOCK4每過20天便分別被擦除和重寫1次。對有關(guān)地址定義如下:
              
              ADDR_LEQU30H;被編程數(shù)據(jù)的低8位地址
              
              ADDR_LEQU31H;被編程數(shù)據(jù)的高8位地址
              
              DATA_TEMPEQU32H;被編程數(shù)據(jù)
              
              ADDR_L,ADDR_H和DATA_TEMP的具體地址可以根據(jù)用戶程序的實際情況進行定義;AUXR1,PGM_MTP的定義同前。有關(guān)子程序為:
              
              擦除BL0CK3
              
              ERSBLOCK3:;BLOCK3擦除
              
              MOVAUXR1,#20H;AUXR1的位ENBOOT=1,尋址到固件
              
              MOVR0,#11;晶振為11.0592MHz,取11
              
              MOVR1,#01H;R1=01H,塊擦除
              
              MOVDPTR,#8000H;擦除BLOCK3
              
              LCALLPGM_MTP;調(diào)用,無返回參數(shù)
              
              RET
              
              擦除BL0CK4
              
              EPSBLOCK4:;BLOCK4擦除
              
              MOVAUXR1,#20;AUXR1的位ENBOOT=1,尋址到固件
              
              MOVR0,#11;晶振為11.0592MHz,取11
              
              MOVR1,#01H;RI=01H,塊擦除
              
              MOVDPTR,#0C000H;擦除BLOCK4
              
              LCALLPGM_MTP;調(diào)用,無返回參數(shù)
              
              RET
              
              字節(jié)編程
              
              WRDATA:
              
              MOVAUXR1,#20H;AUXR1的位ENBOOT=1,尋址到固件
              
              MOVR0,#11;晶振為11.0592MHz,取11
              
              MOVR1,#02H;R1=02H,字節(jié)編程功能
              
              MOVDPH,ADDR_H;高8位地址
              
              MOVDPL,ADDR_L;低8位地址
              
              MOVA,DATA_TEMP;被編程數(shù)據(jù)
              
              LCALLPGM_MTP;調(diào)用,返回參數(shù)ACC=0,調(diào)用成功,非0調(diào)用失敗
              
              RET
              
              讀閃存字節(jié)內(nèi)容
              
              RDDATA:
              
              MOVAUXR1,#20H;AUXR1的位ENBOOT=1,尋址到固件
              
              MOVR0,#11;晶振為11.0592MHz,取11
              
              MOVR1,#03H;R1=03H,讀閃存字節(jié)內(nèi)容
              
              MOVDPL,ADDR_L;低8位地址
              
              MOVDPH,ADDR_H;高8位地址
              
              LCALLPGM_TEMP;調(diào)用,返回參數(shù)ACC中為讀出字節(jié)內(nèi)容
              
              RET
              
              將上述4個子程序結(jié)合實際情況靈活運用,便可以實現(xiàn)數(shù)據(jù)的有效存儲,而且這些數(shù)據(jù)在掉電后是不丟失的,完全達到系統(tǒng)要求。
              
              4.2IAP功能應用于儀器升級
              
              利用P89C51RD2固有的ISP功能,在所設計的儀器中增加1個撥碼開關(guān),便可以實現(xiàn)智能儀器的軟件升級。對操作人員的要不高,原理簡單易行。具體方法請見參考文獻4.
              
              文獻4所討論的ISP功能與遠程升級,實質(zhì)上是在復位過程中,用相應的硬件控制使程序指針跳轉(zhuǎn)到BootROM空間的0FC00H處。整個過程由ISP程序模塊來控制,而用戶程序由于是被升級程序,故完全失去了控制權(quán),編程完畢,需要人工復位并使指針切換到用戶程序空間中方可使新程序起作用。這給智能儀器升級帶來了麻煩,如果巧妙地利用P89C51RD2的IAP功能,則可以使儀器升級變得更加簡單。
              
              前面已經(jīng)指出,ISP和IAP是一脈相承的,ISP功能的實現(xiàn)調(diào)用了IAP功能的子程序。所以完全可以利用IAP功能來設計自己的ISP程序,這樣,就可以不必在閃存空間和BootROM空間之間跳來跳去。
              
              由于用戶程序一般不會超過48KB,故可將BLOCK4留出,作為用戶自編ISP功能區(qū)空間。在下面的自編ISP程序中,如果上位機誤傳來擦除BLOCK4的指令,將被認為是錯誤指令而
              
              不予執(zhí)行,這樣就可以保證該部分程序不會被擦除。
              
              整個ISP功能程序的編制可以參照參考文獻3分析的BootROM中ISP功能的有關(guān)程序。不過,可以將波特率自動跟蹤去掉,使用固定波特率,并且將整個協(xié)議進行簡化,將所有功能規(guī)劃為擦除、編程、讀出、校驗4大模塊,而且這些模塊的執(zhí)行直接使用Philips公司的有關(guān)協(xié)議,這樣BootROM中的有關(guān)程序就可以作為用戶編程的參考。
              
              規(guī)定ISP功能的啟動命令為“[ISPSTART]”.當下位機收到上位機傳輸?shù)脑摋l指令時,便跳轉(zhuǎn)到用戶自編的ISP程序中,此時上下位機通過用戶的協(xié)議就可完成用戶空間程序的擦除、查空、編程、校驗等功能,直到上位機傳來“[ISPEND]”指令為止。這就表示所有的程序已經(jīng)傳輸完畢并校驗成功。此時跳出ISP,使指針指向0000H單元,則系統(tǒng)根據(jù)升級正常運行。有關(guān)流程如圖2所示。
              
              自編ISP程序具有以下特點:
              
              *自編ISP程序與上位機的協(xié)議參考Philips公司的有關(guān)協(xié)議并予以簡化,啟動和結(jié)合命令由自己定義,開發(fā)比較容易;
              
              *自編ISP程序不必在復位時開始執(zhí)行,升級完成后,可以將程序指針轉(zhuǎn)向新程序,不必重新啟動系統(tǒng);
              
              *可以使用固定的波特率,并且T1和T2都可以作為波特率發(fā)生器;
              
              *觸發(fā)條件規(guī)定為一條普通的串口指令,當下位機接收到該條指令后,即跳轉(zhuǎn)到自編的ISP程序空間中。
              
              使用這種方法也存在一定的缺點,由于自編ISP程序相當于一塊固化程序,不能輕易擦除,因此,這種方法一般不能對整片進行升級。但考慮到P89C51RD2具有64KB的FlashROM,用戶程序空間很少能使用到BLOCK4,所以該方案在一般情況下是切實可行的。

            【基于P89C51RD2 IAP功能的數(shù)據(jù)存取與軟件升級】相關(guān)文章:

            如何用VB存取SQL Server中的圖像數(shù)據(jù)04-12

            基于ASP的Web數(shù)據(jù)庫訪問08-06

            基于數(shù)據(jù)庫的JPG圖像處理08-06

            基于USB總線的高速數(shù)據(jù)采集系統(tǒng)08-06

            基于USB接口的數(shù)據(jù)采集系統(tǒng)設計08-06

            基于PHP的Web數(shù)據(jù)庫訪問08-06

            基于DSP的 USB 口數(shù)據(jù)采集分析系統(tǒng)08-06

            基于Verilog HDL設計的自動數(shù)據(jù)采集系統(tǒng)04-12

            基于DSP的USB口數(shù)據(jù)采集分析系統(tǒng)08-06