中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于dsPIC33F系列單片機(jī)的應(yīng)用程序升級(jí)方法

        基于dsPIC33F系列單片機(jī)的應(yīng)用程序升級(jí)方法

        作者: 時(shí)間:2011-04-12 來源:網(wǎng)絡(luò) 收藏

        實(shí)際應(yīng)用中,將外部非易失性存儲(chǔ)器(如E2PROM)的某些存儲(chǔ)單元值當(dāng)作是否進(jìn)行程序的標(biāo)志(以下簡稱程序標(biāo)志)。上電或復(fù)位后首先執(zhí)行“GOTO0x400”指令,即跳轉(zhuǎn)到引導(dǎo)程序。默認(rèn)情況下程序標(biāo)志是處于“正常運(yùn)行”狀態(tài)下的,引導(dǎo)程序調(diào)用跳轉(zhuǎn)指令將用戶程序引導(dǎo)到區(qū),若運(yùn)行過程中發(fā)現(xiàn)服務(wù)器有新的版本或接收到服務(wù)器發(fā)來的升級(jí)程序命令時(shí),將程序升級(jí)標(biāo)志設(shè)置為“程序升級(jí)”狀態(tài),然后軟件復(fù)位。這時(shí)程序再次跳轉(zhuǎn)到引導(dǎo)程序,根據(jù)程序升級(jí)標(biāo)志,單片機(jī)進(jìn)入程序升級(jí)狀態(tài),接收新的程序,并更新程序存儲(chǔ)器的內(nèi)容,升級(jí)完成后,單片機(jī)將程序升級(jí)標(biāo)志設(shè)置為“正常運(yùn)行”狀態(tài),然后再次軟件復(fù)位,此時(shí)單片機(jī)運(yùn)行于新的中。
        由于引導(dǎo)程序和應(yīng)用程序都可能用到中斷,因此應(yīng)用程序采用中斷向量表,引導(dǎo)程序采用備用中斷向量表,以執(zhí)行各自相應(yīng)的中斷服務(wù)子程序。值得注意的是,在圖2(a)中引導(dǎo)程序的首址為0x000400,這是因?yàn)?a class="contentlabel" href="http://www.antipu.com.cn/news/listbylabel/label/dsPIC33F">dsPIC33F單片機(jī)執(zhí)行一次擦除指令會(huì)擦除512條指令空間(即1“ 塊”,占用1 024個(gè)地址單元),這意味著程序升級(jí)必須以1 024(即0x400)為單位。同理,應(yīng)用程序的首址必須為0x400的整數(shù)倍,本文采用0x00C800。
        從以上基本原理的分析可看出,程序升級(jí)功能的實(shí)現(xiàn)主要就是引導(dǎo)程序的實(shí)現(xiàn)。

        2 引導(dǎo)程序的實(shí)現(xiàn)
        2.1 程序流程
        進(jìn)入引導(dǎo)程序后,程序的執(zhí)行流程如下:
        (1)初始化電路板,包括單片機(jī)的工作頻率、外圍接口等,尤其要注意啟用單片機(jī)的“備用中斷向量表”。因?yàn)?a class="contentlabel" href="http://www.antipu.com.cn/news/listbylabel/label/dsPIC33F">dsPIC33F單片機(jī)復(fù)位后默認(rèn)啟用“中斷向量表”,而由基本原理的說明可看出,引導(dǎo)程序必須采用“備用中斷向量表”。
        (2)判斷程序走向,通過程序升級(jí)標(biāo)志判斷是跳轉(zhuǎn)到應(yīng)用程序,還是執(zhí)行程序升級(jí)流程。
        (3)若程序升級(jí)標(biāo)志為“正常運(yùn)行”,則調(diào)用GOTO指令跳轉(zhuǎn)到應(yīng)用程序。
        (4)若程序升級(jí)標(biāo)志為“程序升級(jí)”,則執(zhí)行程序升級(jí)流程,這是引導(dǎo)程序的重點(diǎn)。
        程序升級(jí)按“塊”更新,每“塊”包含1 024個(gè)存儲(chǔ)單元(以字為單位),即每幀數(shù)據(jù)需包含2 048個(gè)字節(jié)的程序代碼。在更新程序時(shí)并不是簡單地用接收到的新程序代碼覆蓋舊程序,對(duì)于一些特殊幀需特殊處理,通過對(duì)比應(yīng)用程序編譯后的程序存儲(chǔ)器結(jié)構(gòu)與實(shí)際應(yīng)用中的程序存儲(chǔ)器結(jié)構(gòu)可以很好地理解這點(diǎn)。圖2(a)所示為實(shí)際應(yīng)用中的程序存儲(chǔ)器內(nèi)部結(jié)構(gòu);(b)為應(yīng)用程序編譯后的程序存儲(chǔ)器結(jié)構(gòu)。通過對(duì)比這兩張圖可以看出,“GOTO指令”、“備用中斷向量表”、“引導(dǎo)程序”這些區(qū)間的程序不能直接覆蓋,若“GOTO指令”被覆蓋,則程序升級(jí)后程序直接跳轉(zhuǎn)到應(yīng)用程序,不會(huì)執(zhí)行引導(dǎo)程序;若“備用中斷向量表”被覆蓋,則引導(dǎo)程序中的中斷服務(wù)程序無法執(zhí)行;若“引導(dǎo)程序”區(qū)間的內(nèi)容被覆蓋,則引導(dǎo)程序被清空,顯然會(huì)帶來災(zāi)難性的后果。因此對(duì)于第1幀數(shù)據(jù)需特別處理,該幀數(shù)據(jù)對(duì)應(yīng)程序存儲(chǔ)器第1塊(地址為0~0x3FF)的內(nèi)容,包含“GOTO指令”、“復(fù)位地址”、“中斷向量表”和“備用中斷向量表”的內(nèi)容,為了保證GOTO指令”和“備用中斷向量表”的內(nèi)容不被修改,需要先讀出原“GOTO指令”和“備用中斷向量表”的內(nèi)容,替代接收數(shù)據(jù)緩沖區(qū)中對(duì)應(yīng)位置的內(nèi)容,然后寫入程序存儲(chǔ)區(qū)的第1塊;對(duì)于第2幀到第50幀(0xe800/0x400),這些是引導(dǎo)程序的內(nèi)容,顯然不能做任何修改,因此這幾幀數(shù)據(jù)接收后直接丟棄;從第51幀到最后一幀,這是應(yīng)用程序的內(nèi)容,也是真正要升級(jí)的內(nèi)容,所以可直接覆蓋舊內(nèi)容。程序升級(jí)后,將程序更新標(biāo)志恢復(fù)為“正常運(yùn)行”狀態(tài),然后復(fù)位CPU,則經(jīng)引導(dǎo)程序又進(jìn)入了新的應(yīng)用程序,從而實(shí)現(xiàn)了應(yīng)用程序的升級(jí)。
        以上說明可得引導(dǎo)程序的詳細(xì)流程如圖3所示。

        本文引用地址:http://www.antipu.com.cn/article/172868.htm



        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉