国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于P89C51RD2 IAP功能的數據存取與軟件升級

發布時間:2010-11-3 12:53    發布者:eetech
關鍵詞: IAP , P89C51RD2 , 軟件 , 升級 , 數據存取
1 概述  

P89C51RD2是Philips公司的80C51系列單片機中的佼佼者,具有1KB的片上RAM和64KB的片上內存;具有3種編程方式,即在系統編程ISP(InSystem Programming)、在應用中編程IAP(In-Application Programming)以及通過商用編程器的并行編程。ISP是指電路板上的空白器件可以編程寫入最終用戶代碼,而不需要從電路板上取下器件,已經編程的器件也可以用ISP方式擦除或再編程;ISP是指在用戶的應用程序中獲取新代碼對Flash塊、Flash寄存器、Boot向量等進行擦除和重新編程,即可以用程序來改變程序。IAP對于儀器儀表的智能化意義重大。高檔的智能化儀器都具有自診斷、自修復、自組織、自適應和自學習等功能,而這些功能實現的物質基礎,就是儀器的程序可以根據實際情況進行改變和調整。  

Philips公司在P89C51RD2中提供了Boot ROM固件,位于0FC00H~0FFFFH空間,與閃存空間重疊,如圖1所示。Philips公司提供了尋址該器件的方法,因此可以通過讀取其目標代碼進行分析研究。有關Boot ROM的讀出方法以及Boot ROM與ISP功能的實現在參考文獻3已有所論述。  

P89C51RD2的IAP功能的實現了是靠Philips公司提供的Boot ROM固件來實現的。Boot ROM固件中已經固化有上述擦除和編程等子程序,只要應用程序來調用即可。通過對Boot ROM反匯編內容進一步的分析可以看出:ISP和IAP是一脈相承的,ISP功能的實現調用IAP功能的子程序。本文將分析Boot ROM中有關IAP及IAP和ISP的相互關系,以達到深入了解和利用IAP功能的目的。



2 對Boot ROM中有關IAP功能代碼的分析  

3 對Boot ROM中ISP和IAP的相互關系分析  

2、3內容請見本刊網絡補充版(http://www.dpj.com.cn)。  

4 IAP功能的使用  

4.1 程序空間用作數據空間  

在一個實際的應用系統中,往往有一些關鍵性的數據需要保存,例如用戶設置數據或重要的過程數據。目前的通過做法有兩種:一種是在電路中擴展非易失性SRAM,多用在對時間要求比較苛刻的場合;另一種做法是擴展EEPROM(并行或串行)或類似存儲器,多用在對時間要求不太荷刻的場合。這兩種方法可達到掉電后數據不丟失的目的。  

P89C51RD2具有64KB的片上閃存,這對于一般的應用來說足夠大,往往會有剩余的閃存空間。在通常狀況下,MCU的編程只能通過商用編程器來進行,那么剩余的閃存空間只能作為程序升級的備用空間,而不能作為數據空間;另一方面,如果需要保存數據,還要另外擴展存儲器,這樣不但增加了電路板的面積,而且增加了調試難度。  

而P89C51RD2是一種具有IAP功能的單片機,其內存結構具有如下特點(見圖1):  

①閃存空間是分塊的。64KB的內存空間共分5塊,由低到高分別為8KB(BLOCK0)、8KB(BLOCK1)、16KB(BLOCK2)、16KB(BLOCK3)、16KB(BLOCK4);  
②每一塊都可以單獨擦除;  
③在程序中可以調用IAP功能,對閃存中的每一字節進行單獨編程。  

正是由于上述3個特點,在一些對時間要求不是很荷刻的場合,都可以將剩余的閃存空間作為數據空間來使用。例如,作者在海洋氣象監測儀器的研制中,有些關鍵數據需要存儲,如整點的風速、風向、溫度、濕度、氣壓和降水量的瞬時值和十分鐘平均值,以及最值、極值、大風段等。而數據的采集要求3s采集1次,采集處理時間大約需要0.5s,則剩余的時間內就可以利用IAP功能來存儲數據。這些存儲的數據可以通過串口被上位機調用。

由于整個軟件經匯編后大約20KB,因此,將地址為0000H~7FFFH的32KB內存空間作為程序空間,則可以儀器的升級預留足夠的空間;而將8000H~0FFFFH的32KB閃存空間留作數據存儲空間。由圖1可以看出,從8000H~0FFFFH的32KB閃存空間由BLOCK3和BLOCK4兩塊組成,每一塊為16KB,足可以存儲10天的數據量。在實際操作中,將BLOCK3和BLOCK4輪流使用,當10天的數據量存滿其中一塊時,通過程序跳轉到另一塊中,在使用前先將該塊擦除。這樣BLOCK3和BLOCK4每過20天便分別被擦除和重寫1次。對有關地址定義如下:  

ADDR_L EQU 30H ;被編程數據的低8位地址  
ADDR_L EQU 31H ;被編程數據的高8位地址  
DATA_TEMP EQU 32H ;被編程數據  
ADDR_L,ADDR_H和DATA_TEMP的具體地址可以根據用戶程序的實際情況進行定義;AUXR1,PGM_MTP的定義同前。有關子程序為:  
擦除BL0CK3  
ERSBLOCK3: ;BLOCK3擦除  
MOV AUXR1,#20H ;AUXR1的位ENBOOT=1,尋址到固件  
MOV R0,#11 ;晶振為11.0592MHz,取11  
MOV R1,#01H ;R1=01H,塊擦除  
MOV DPTR,#8000H ;擦除BLOCK3  
LCALL PGM_MTP ;調用,無返回參數  
RET  
擦除BL0CK4  
EPSBLOCK4: ;BLOCK4擦除  
MOV AUXR1,#20 ;AUXR1的位ENBOOT=1,尋址到固件  
MOV R0,#11 ;晶振為11.0592MHz,取11  
MOV R1,#01H ;RI=01H,塊擦除  
MOV DPTR,#0C000H ;擦除BLOCK4  
LCALL PGM_MTP ;調用,無返回參數  
RET  
字節編程  
WRDATA:  
MOV AUXR1,#20H ;AUXR1的位ENBOOT=1,尋址到固件  
MOV R0,#11 ;晶振為11.0592MHz,取11  
MOV R1,#02H ;R1=02H,字節編程功能  
MOV DPH,ADDR_H ;高8位地址  
MOV DPL,ADDR_L ;低8位地址  
MOV A,DATA_TEMP ;被編程數據  
LCALL PGM_MTP ;調用,返回參數ACC=0,調用成功,非0調用失敗  
RET  
讀閃存字節內容  
RDDATA:  
MOV AUXR1,#20H ;AUXR1的位ENBOOT=1,尋址到固件  
MOV R0,#11 ;晶振為11.0592MHz,取11  
MOV R1,#03H ;R1=03H,讀閃存字節內容  
MOV DPL,ADDR_L ;低8位地址  
MOV DPH,ADDR_H ;高8位地址  
LCALL PGM_TEMP ;調用,返回參數ACC中為讀出字節內容  
RET  

將上述4個子程序結合實際情況靈活運用,便可以實現數據的有效存儲,而且這些數據在掉電后是不丟失的,完全達到系統要求。

4.2 IAP功能應用于儀器升級  

利用P89C51RD2固有的ISP功能,在所設計的儀器中增加1個撥碼開關,便可以實現智能儀器的軟件升級。對操作人員的要不高,原理簡單易行。具體方法請見參考文獻4。  

文獻4所討論的ISP功能與遠程升級,實質上是在復位過程中,用相應的硬件控制使程序指針跳轉到Boot ROM空間的0FC00H處。整個過程由ISP程序模塊來控制,而用戶程序由于是被升級程序,故完全失去了控制權,編程完畢,需要人工復位并使指針切換到用戶程序空間中方可使新程序起作用。這給智能儀器升級帶來了麻煩,如果巧妙地利用P89C51RD2的IAP功能,則可以使儀器升級變得更加簡單。  

前面已經指出,ISP和IAP是一脈相承的,ISP功能的實現調用了IAP功能的子程序。所以完全可以利用IAP功能來設計自己的ISP程序,這樣,就可以不必在閃存空間和Boot ROM空間之間跳來跳去。  

由于用戶程序一般不會超過48KB,故可將BLOCK4留出,作為用戶自編ISP功能區空間。在下面的自編ISP程序中,如果上位機誤傳來擦除BLOCK4的指令,將被認為是錯誤指令而不予執行,這樣就可以保證該部分程序不會被擦除。


  
整個ISP功能程序的編制可以參照參考文獻3分析的Boot ROM中ISP功能的有關程序。不過,可以將波特率自動跟蹤去掉,使用固定波特率,并且將整個協議進行簡化,將所有功能規劃為擦除、編程、讀出、校驗4大模塊,而且這些模塊的執行直接使用Philips公司的有關協議,這樣Boot ROM中的有關程序就可以作為用戶編程的參考。  

規定ISP功能的啟動命令為“[ISP START]”。當下位機收到上位機傳輸的該條指令時,便跳轉到用戶自編的ISP程序中,此時上下位機通過用戶的協議就可完成用戶空間程序的擦除、查空、編程、校驗等功能,直到上位機傳來“[ISP END]”指令為止。這就表示所有的程序已經傳輸完畢并校驗成功。此時跳出ISP,使指針指向0000H單元,則系統根據升級正常運行。有關流程如圖2所示。  

自編ISP程序具有以下特點:  

*自編ISP程序與上位機的協議參考Philips公司的有關協議并予以簡化,啟動和結合命令由自己定義,開發比較容易;  
*自編ISP程序不必在復位時開始執行,升級完成后,可以將程序指針轉向新程序,不必重新啟動系統;  
*可以使用固定的波特率,并且T1和T2都可以作為波特率發生器;  
*觸發條件規定為一條普通的串口指令,當下位機接收到該條指令后,即跳轉到自編的ISP程序空間中。  

使用這種方法也存在一定的缺點,由于自編ISP程序相當于一塊固化程序,不能輕易擦除,因此,這種方法一般不能對整片進行升級。但考慮到P89C51RD2具有64KB的Flash ROM,用戶程序空間很少能使用到BLOCK4,所以該方案在一般情況下是切實可行的。
本文地址:http://m.qingdxww.cn/thread-35988-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 手机在线看视频| 手机看片一区二区| 日韩 国产 在线| 欧美中文日韩| 又粗又黄又猛又爽大片app| 亚洲图片综合| 亚洲色图欧美色| 国产成人在线视频播放| 亚洲va精品中文字幕| 亚洲国产一区在线精选| 日韩欧美一区二区三区不卡视频| 青娱乐自拍视频| 手机看片国产精品| gay台湾无套男同志xnxⅹ| 久久热在线视频精品| 日韩一级在线| 青青在线观看视频| 桃色视频在线| 波多久久亚洲精品AV无码| 微福利92合集| 亚洲国产精品免费| 亚洲欧美成人完整版在线| 亚洲色图p| 精品无人区麻豆乱码1区2| 亚洲第一页在线播放| 欧洲精品一卡2卡三卡4卡乱码| 深夜在线观看免费看视频| 亚洲精品久久久久综合网| 国产日韩欧美另类| 宅男午夜大片又黄又爽大片| 欧美一区2区三区4区公司| 色偷偷影院| 啊轻点灬大JI巴又大又粗| 蜜桃传媒视频| 夜晚美女高清视频在线观看| 视频在线观看免费网址| 色夜影院| 中文字幕在线二区| 久久国产视频网站| 欧美日韩国产另类一区二区三区 | 亚洲色色色色|