熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > dsPIC33F單片機的程序升級探討

dsPIC33F單片機的程序升級探討

作者: 時間:2011-09-19 來源:網(wǎng)絡 收藏

2 引導程序的實現(xiàn)

  2.1 程序流程

  進入引導程序后,程序的執(zhí)行流程如下:

  (1)初始化電路板,包括單片機的工作頻率、外圍接口等,尤其要注意啟用單片機的“備用中斷向量表”。因為單片機復位后默認啟用“中斷向量表”,而由基本原理的說明可看出,引導程序必須采用“備用中斷向量表”。

  (2)判斷程序走向,通過標志判斷是跳轉(zhuǎn)到應用程序,還是執(zhí)行流程。

  (3)若標志為“正常運行”,則調(diào)用GOTO指令跳轉(zhuǎn)到應用程序。

  (4)若程序升級標志為“程序升級”,則執(zhí)行程序升級流程,這是引導程序的重點。

  程序升級按“塊”更新,每“塊”包含1 024個存儲單元(以字為單位),即每幀數(shù)據(jù)需包含2 048個字節(jié)的程序代碼。在更新程序時并不是簡單地用接收到的新程序代碼覆蓋舊程序,對于一些特殊幀需特殊處理,通過對比應用程序編譯后的程序存儲器結構與實際應用中的程序存儲器結構可以很好地理解這點。圖2(a)所示為實際應用中的程序存儲器內(nèi)部結構;(b)為應用程序編譯后的程序存儲器結構。通過對比這兩張圖可以看出,“GOTO指令”、“備用中斷向量表”、“引導程序”這些區(qū)間的程序不能直接覆蓋,若“GOTO指令”被覆蓋,則程序升級后程序直接跳轉(zhuǎn)到應用程序,不會執(zhí)行引導程序;若“備用中斷向量表”被覆蓋,則引導程序中的中斷服務程序無法執(zhí)行;若“引導程序”區(qū)間的內(nèi)容被覆蓋,則引導程序被清空,顯然會帶來災難性的后果。因此對于第1幀數(shù)據(jù)需特別處理,該幀數(shù)據(jù)對應程序存儲器第1塊(地址為0~0x3FF)的內(nèi)容,包含“GOTO指令”、“復位地址”、“中斷向量表”和“備用中斷向量表”的內(nèi)容,為了保證"GOTO指令”和“備用中斷向量表”的內(nèi)容不被修改,需要先讀出原“GOTO指令”和“備用中斷向量表”的內(nèi)容,替代接收數(shù)據(jù)緩沖區(qū)中對應位置的內(nèi)容,然后寫入程序存儲區(qū)的第1塊;對于第2幀到第50幀(0xe800/0x400),這些是引導程序的內(nèi)容,顯然不能做任何修改,因此這幾幀數(shù)據(jù)接收后直接丟棄;從第51幀到最后一幀,這是應用程序的內(nèi)容,也是真正要升級的內(nèi)容,所以可直接覆蓋舊內(nèi)容。程序升級后,將程序更新標志恢復為“正常運行”狀態(tài),然后復位CPU,則經(jīng)引導程序又進入了新的應用程序,從而實現(xiàn)了應用程序的升級。

  基于以上說明可得引導程序的詳細流程如圖3所示。

  

引導程序的詳細流程

  2.2 關鍵細節(jié)的實現(xiàn)

  (1)啟用“備用中斷向量表”。設置INTCON2寄存器中ALTIVT控制位的值,其值設置為“1”則啟用“備用中斷向量表”;設置為“0”則啟用“中斷向量表”。

  (2)程序首址的設置。在以上流程的說明中談到引導程序的首址為0x400,而應用程序的首址為0xc800,則設置程序的首址可通過修改鏈接描述文件(.gld文件)實現(xiàn)。以J256GP710單片機為例,將引導程序首址改為0x400,其實現(xiàn)步驟為:打開p33FJ256GP710.gld文件,將其中的“program(xr):ORIGIN=0x200,LENGTH=0x2AA00”改為“pro-gram(xr) :ORIGIN=0x400,LENGTH=0x2A900”;將“_ _CODE_ BASE=0x200”改為“_ _CODE_BASE=0x400”。應用程序首址的修改也采用相同方法。

  (3)讀/寫程序存儲器。在參考文獻中有很完整的原理說明,也有完整的源代碼,可直接使用。

  (4)軟件復位CPU。在應用程序運行過程中發(fā)現(xiàn)需升級程序或在引導程序中升級程序完畢時,均需對CPU進行軟件復位,這可通過單片機提供的“reset”指令實現(xiàn),可在程序相應位置執(zhí)行“reset”指令即可。



關鍵詞: dsPIC33F 程序升級

評論


相關推薦

技術專區(qū)

關閉