C8051F單片機的軟件IAP技術(shù)

發(fā)布時(shí)間:2010-4-6 10:33    發(fā)布者:李寬
關(guān)鍵詞: IAP , 單片機 , 技術(shù) , 軟件
引言

C8051Fxxx系列高速SoC單片機是由美國Cygnal公司開(kāi)發(fā)的完全集成的混合信號系統級芯片,具有與8051兼容的微處理器內核。C8051Fxxx單片機有大容量的Flash存儲器,用于存儲程序代碼和非易失性數據,可在應用編程。以 C8051F120為例,C8051F120x 和C8051F13x 系列MCU 內部有128 KB(C8051F12x 和C8051F130/1)或64 KB(C8051F132/3)的在應用可編程Flash 存儲器,用于程序代碼和非易失性數據存儲;另外還有256字節的Flash頁(yè),可以用于數據存儲?梢酝ㄟ^(guò)JTAG接口對Flash存儲器進(jìn)行在應用編程,或由應用軟件使用MOVX 指令編程。用C8051F120 MCU做成的產(chǎn)品到了用戶(hù)處之后,用軟件通過(guò)串口就可以為產(chǎn)品進(jìn)行Flash程序的更新。筆者通過(guò)實(shí)驗,在用戶(hù)操作界面的PC機及C8051F120的單片機控制系統之間,通過(guò)串行口進(jìn)行C8051F120 單片機控制程序的自動(dòng)升級及程序加密。用戶(hù)只要從互聯(lián)網(wǎng)上下載控制程序,即可實(shí)現單片機程序的自動(dòng)升級。該方案解決了升級過(guò)程意外中斷、遠程升級傳輸誤碼等關(guān)鍵技術(shù)問(wèn)題,避免了傳統固件升級需要更換主機、主板或芯片等問(wèn)題,節約了人力和資金等資源,已在實(shí)際系統中應用并受到用戶(hù)好評。以下以64 KB Flash為例,簡(jiǎn)要介紹單片機目標程序的準備及自動(dòng)升級的制作過(guò)程。

1  自動(dòng)升級的實(shí)現方法

C8051Fxxx系列單片機將Flash程序區按512字節為一頁(yè)(page)來(lái)組織。在刪除控制程序區時(shí),首先屏蔽所有中斷,使能程序刪除位 PSEE(PSCTL.1),同時(shí)使能PSWE(PSCTL=0x03, 即PSWE = 1, PSEE = 1,頁(yè)擦除模式) ,用C51語(yǔ)言的一個(gè)指針指向Falsh程序區。如:

  char xdata * data address=0x0000;

每擦除一頁(yè)地址指針加512,依此操作可刪除所有的程序頁(yè)。刪除部分程序如下:

  while(address<0x0F800) {//0xF800=62KB
    *address = 0x00; //向扇區空寫(xiě),啟動(dòng)擦除操作
    for (i=0;i<10;i++);
    address =address +512;
  }

這樣就把62 KB的Flash的舊程序刪除了。實(shí)際上就是應用匯編語(yǔ)言中MOVX指令在每一頁(yè)的任一地址寫(xiě)0FFH,就可以將該頁(yè)的所有字節都置為0FFH,從而實(shí)現了該頁(yè)的刪除。

擦除掉所選的區域后要關(guān)掉對Flash的寫(xiě)操作,否則可因其他環(huán)境造成程序的丟失:

  PSCTL &= ~0x03;// PSWE = 0; PSEE = 0
  FLSCL&=~0x01;//關(guān)閉Flash寫(xiě)/擦除

1.1  更新程序的方法

在接收新程序部分,寫(xiě)入一握手程序塊,以保證程序的可靠性。握手的協(xié)議可自己定義,其中包括一些需要知道的信息,如長(cháng)度、頭部、尾部等。

同樣,“char xdata *data address=0x0000;”指向要寫(xiě)的區域。

   FLSCL |= 0x01;//使能Flash寫(xiě)/擦除
  PSCTL |= 0x01; // PSWE = 1

然后通過(guò)串口用查詢(xún)的方法獲得新的程序代碼。

  while(len--) {
    *address++= Get_COM_Code();
  }
  PSCTL=00; // PSWE = 0; PSEE = 0
  FLSCL =00;

1.2  運行新程序

在更新完程序后,有兩種方法可以重新運行程序;斷電再上電和軟件復位。 C8051F120內部有復位寄存器,通過(guò)使能該寄存器,可以實(shí)現軟件復位。

   RSTSRC=0x10;//實(shí)現軟件復位
  Jmpmain();

對RSTSRC的寫(xiě)操作均用直接賦值方式完成(如RSTSRC = 0x02),不能用讀/寫(xiě)指令(如ORL或ANL)來(lái)完成。例如,代碼“RSTSRC |= 0x02”就是非法的。為保證完美的復位,在設置了復位寄存器后筆者還添加了匯編復位程序,以做到萬(wàn)無(wú)一失。

  Jmpmain:
  LJMP 0000H
  RET

這樣通過(guò)一條長(cháng)跳轉指令跳到程序區最開(kāi)始的位置。在C中調用匯編程序的方法請參考其他文檔。

2  引導區的編譯

作為程序引導區的程序,平時(shí)不參與主程序的執行。而主程序主要用于和用戶(hù)操作界面PC 機部分進(jìn)行握手,當接收到PC 機部分要進(jìn)行軟件升級的命令時(shí),程序跳至引導程序區,執行如下流程:

發(fā)送準備升級字節到PC 機→刪除Flash 程序區→發(fā)送開(kāi)始下載命令到PC 機→接收且放到相應地址。


圖1  主程序流程

主程序流程如圖1所示。引導區的程序要固定在一個(gè)位置,并單獨編譯,由 JTAG下載到MCU中。引導區的程序不能編譯分配Flash地址。筆者使用的Keil編譯器是一個(gè)很簡(jiǎn)單、易用的編譯器。在Keil中,定位升級程序位置的實(shí)現方法非常簡(jiǎn)單,通過(guò)修改其Project菜單下的Options for target一項就可以了。

在本程序中,引導區的程序定義在62 KB之后的位置。

編者注: 硬件接口和主從機程序見(jiàn)本刊網(wǎng)站www.mesnet.com.cn。

3  注意的問(wèn)題

① 使用內部振蕩器,這樣能提高系統時(shí)鐘的抗干擾能力。
② 使用Flash時(shí)會(huì )限制執行寫(xiě)操作的速度。完成1個(gè)字節的操作最長(cháng)需要40 μs ,所以最好選用9 600的波特率。
③ 減少將PSWE置1的指令操作。理想的情況是只有2個(gè)操作會(huì )將PSWE置1,即寫(xiě)1個(gè)Flash字節和擦除1個(gè)Flash字節。
④ 將Flash寫(xiě)/擦除指針指向data或idata區。
⑤ 引導區的程序應該以512字節為邊界。
⑥ 升級用的HEX程序必須由PC機上的軟件轉化為BIN文件。
⑦ C8051F120 MCU程序的操作最大特點(diǎn)是:在配置寄存器時(shí)能切換到該寄存器所在的頁(yè)。
⑧ 引導區的程序在擦除或者寫(xiě)時(shí),不可以開(kāi)中斷,且要關(guān)掉所有中斷。

結語(yǔ)

本文中的軟硬件模塊已被嵌入到相關(guān)的應用系統之中,提高了系統的性?xún)r(jià)比。該方案解決了升級過(guò)程中的一些關(guān)鍵技術(shù)問(wèn)題,節約了資源,將會(huì )在一些高端控制中得到更為廣泛的應用。軟件IAP 技術(shù)不但適用于C8051F單片機,而且對使用其他單片機的產(chǎn)品設計也具有重要的參考價(jià)值。

參考文獻

[1] 姜曉梅,李祥和.基于ARM的IAP在線(xiàn)及遠程升級技術(shù)[J].計算機應用,2008(2):519521.
[2] 周立功,張華.深入淺出ARM7[M].北京:北京航空航天大學(xué)出版社, 2005: 426438.
[3] 劉憶輝,魏銀庫,等.片外Flash存儲器IAP的一種方案[J].單片機與嵌入式系統應用, 2006(2).
[4] 王颯.用C8051F020的SPI接口擴展大容量數據存儲器[J].微計算機信息, 2006(22).
[5] 李光飛,陽(yáng)富民,樓然苗.基于K9F2808UOC的FAT16文件系統[J].浙江海洋學(xué)院學(xué)報:自然科學(xué)版,2006(6).
[6] K9F2808UOC datasheets[OL]. http: //www. samsung. com /Prod?ucts/datasheets. htm.

作者:廣東技術(shù)師范學(xué)院 向丹  楊永
來(lái)源:?jiǎn)纹瑱C與嵌入式系統應用 2009 (3)
本文地址:http://selenalain.com/thread-10189-1-1.html     【打印本頁(yè)】

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

相關(guān)在線(xiàn)工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页