欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種實(shí)現(xiàn)程序備份的方法

文檔序號(hào):9826165閱讀:1681來源:國知局
一種實(shí)現(xiàn)程序備份的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及嵌入式軟件領(lǐng)域,尤其涉及一種利用單片機(jī)片內(nèi)FLASH實(shí)現(xiàn)程序備份的方法。
【背景技術(shù)】
[0002]嵌入式設(shè)備中往往使用FLASH存儲(chǔ)設(shè)備來存儲(chǔ)程序,一旦當(dāng)FLASH存儲(chǔ)的程序被破壞,嵌入式設(shè)備將無法正常運(yùn)行。為了提高嵌入式設(shè)備的可靠性,絕大多數(shù)廠商都把存儲(chǔ)在FLASH中的程序進(jìn)行了備份,當(dāng)其中一份程序被破壞時(shí)、可以使用備份程序繼續(xù)運(yùn)行,提高設(shè)備的可靠性。
[0003]在傳統(tǒng)技術(shù)中,申請(qǐng)?zhí)枮?01310034458.4,名稱為《基于單個(gè)flash存儲(chǔ)芯片的雙啟動(dòng)方法》的專利提供了一種利用主備BOOT提高設(shè)備可靠性的方法,在FLASH存儲(chǔ)芯片的不同位置上分別存儲(chǔ)主用BOOT和備用B00T,CPU的地址線通過CPLD邏輯模塊與FLASH存儲(chǔ)芯片的地址線連接;CPLD邏輯模塊上設(shè)有啟動(dòng)成功標(biāo)志寄存器,所述啟動(dòng)成功標(biāo)志寄存器根據(jù)主用BOOT或備用BOOT啟動(dòng)是否成功進(jìn)行相應(yīng)的職位;CPLD邏輯模塊根據(jù)所述啟動(dòng)成功標(biāo)志寄存器的狀態(tài)進(jìn)行主用BOOT和備用BOOT輪轉(zhuǎn),如果需要從主用BOOT啟動(dòng),則將CPU地址信息透?jìng)鹘oFLASH存儲(chǔ)芯片,并從主用BOOT引導(dǎo)系統(tǒng)啟動(dòng);如果需要從備用BOOT啟動(dòng),則根據(jù)備用BOOT程序在FLASH存儲(chǔ)器中的位置鎖住響應(yīng)的地址線,并從備用BOOT引導(dǎo)啟動(dòng)。
[0004]上述專利通過CPLD來屏蔽主備程序存儲(chǔ)在不同位置帶來的對(duì)啟動(dòng)程序的影響。啟動(dòng)程序就好像兩次在同一個(gè)位置去加載啟動(dòng)程序。但是對(duì)于單片機(jī)來說、往往CPU自帶片內(nèi)FLASH,并且為了節(jié)約成本,也不會(huì)為單片機(jī)外掛FLASH芯片。
[0005]申請(qǐng)?zhí)枮?01210225631.4,名稱為《一種實(shí)現(xiàn)自動(dòng)雙FLASH啟動(dòng)CPU系統(tǒng)的方法》的專利提供了一種實(shí)現(xiàn)自動(dòng)雙FLASH啟動(dòng)CPU系統(tǒng)的方法,采用兩片F(xiàn)LASH啟動(dòng)CPU,當(dāng)其中主FLASH啟動(dòng)失敗后,CPLD將備份FLASH選中并輸出復(fù)位信號(hào)到CPU,讓CPU啟動(dòng)。該專利使用兩片F(xiàn)LASH、成本較高。

【發(fā)明內(nèi)容】

[0006]本發(fā)明所要解決的技術(shù)問題是:提出一種實(shí)現(xiàn)程序備份的方法,解決傳統(tǒng)技術(shù)中無法在單片機(jī)片內(nèi)FLASH實(shí)現(xiàn)程序備份,采用雙FLASH進(jìn)行程序備份成本高的問題。
[0007]本發(fā)明解決上述技術(shù)問題所采用的方案是,一種實(shí)現(xiàn)程序備份的方法,包括:
[0008]a.在單片機(jī)片內(nèi)FLASH的主、備分區(qū)中存入兩份執(zhí)行邏輯相同的可執(zhí)行程序;
[0009]b.在程序啟動(dòng)的時(shí)候判斷當(dāng)前執(zhí)行的是主分區(qū)中的程序,還是執(zhí)行的備份分區(qū)中的程序,并檢測(cè)程序代碼是否發(fā)生故障;
[0010]c.若檢測(cè)到執(zhí)行的為主分區(qū)中的程序且程序代碼發(fā)生故障時(shí),切換至備份分區(qū)運(yùn)行程序。
[0011]進(jìn)一步的,步驟a中,所述在單片機(jī)片內(nèi)FLASH的主、備分區(qū)中存入兩份相同的可執(zhí)行程序的方法是:
[0012]使用兩個(gè)鏈接腳本將嵌入式源代碼編譯成兩個(gè)執(zhí)行邏輯相同但代碼段的起始地址不同的可執(zhí)行程序,然后將兩個(gè)可執(zhí)行程序分別放于片內(nèi)FLASH的主備分區(qū)中,所述代碼段的起始地址分別為片內(nèi)FLASH主備分區(qū)的起始地址。
[0013]進(jìn)一步的,步驟a中還包括:將需要對(duì)FLASH進(jìn)行擦除、寫入、讀取操作的函數(shù)鏈接到RAM地址空間。
[0014]進(jìn)一步的,步驟b中,在程序啟動(dòng)的時(shí)候通過異常向量表中的值判斷當(dāng)前執(zhí)行的是主分區(qū)中的程序,還是執(zhí)行的備份分區(qū)中的程序。
[0015]上述具體判斷方法為:如果異常向量表中的值小于0x10000,則判定當(dāng)前執(zhí)行的是主分區(qū)中的程序;如果異常向量表中的值大于0x10000,則判定當(dāng)前執(zhí)行的是備份分區(qū)中的程序。
[0016]進(jìn)一步的,步驟b中,通過CRC校驗(yàn)來檢測(cè)程序代碼是否發(fā)生故障。
[0017]進(jìn)一步的,步驟b中,若檢測(cè)到程序代碼未發(fā)生故障,則繼續(xù)執(zhí)行該分區(qū)內(nèi)的程序代碼。
[0018]進(jìn)一步的,步驟c中若檢測(cè)到執(zhí)行的為主分區(qū)中的程序且程序代碼發(fā)生故障時(shí),通過修改異常向量表后并重啟單片機(jī)切換至備份分區(qū)運(yùn)行程序。
[0019]具體的,所述修改異常向量表的方法為:
[0020]將異常向量表中的地址修改為當(dāng)前地址加上備份分區(qū)的起始地址。
[0021]進(jìn)一步的,步驟c中還包括:
[0022]若檢測(cè)到執(zhí)行的為備份分區(qū)中的程序且程序代碼發(fā)生故障時(shí),則告警程序遭到破壞,并掛起單片機(jī)。
[0023]本發(fā)明的有益效果是:可以實(shí)現(xiàn)單片機(jī)片內(nèi)FLASH主備程序切換:在片內(nèi)FLASH的主分區(qū)程序出現(xiàn)故障時(shí),自動(dòng)檢測(cè)并切換至備份分區(qū)執(zhí)行,可以延長單片機(jī)使用壽命;由于只需要一個(gè)FLASH即可實(shí)現(xiàn)主備程序切換,也節(jié)約了硬件成本。
【附圖說明】
[0024]圖1為本發(fā)明實(shí)現(xiàn)程序備份方法流程圖;
[0025]圖2為程序鏈接后在FLASH中存儲(chǔ)結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0026]本發(fā)明旨在提出一種利用單片機(jī)片內(nèi)FLASH實(shí)現(xiàn)程序備份的方法,解決傳統(tǒng)技術(shù)中無法在單片機(jī)片內(nèi)FLASH實(shí)現(xiàn)程序備份,采用雙FLASH進(jìn)行程序備份成本高的問題。
[0027]如圖1所示,本發(fā)明中的利用單片機(jī)片內(nèi)FLASH實(shí)現(xiàn)程序備份的方法,包括以下實(shí)現(xiàn)步驟:
[0028]a.在單片機(jī)片內(nèi)FLASH的主、備分區(qū)中存入兩份執(zhí)行邏輯相同的可執(zhí)行程序;
[0029]b.在程序啟動(dòng)的時(shí)候判斷當(dāng)前執(zhí)行的是主分區(qū)中的程序,還是執(zhí)行的備份分區(qū)中的程序,并檢測(cè)程序代碼是否發(fā)生故障;
[0030]c.若檢測(cè)到執(zhí)行的為主分區(qū)中的程序且程序代碼發(fā)生故障時(shí),切換至備份分區(qū)運(yùn)行程序。
[0031]在具體實(shí)現(xiàn)上,步驟a中,所述在單片機(jī)片內(nèi)FLASH的主、備分區(qū)中存入兩份執(zhí)行邏輯相同的可執(zhí)行程序的方法是:
[0032]使用兩個(gè)鏈接腳本將嵌入式源代碼編譯成兩個(gè)執(zhí)行邏輯相同但代碼段的起始地址不同的可執(zhí)行程序,然后將兩個(gè)可執(zhí)行程序分別放于片內(nèi)FLASH的主備分區(qū)中,所述代碼段的起始地址分別為片內(nèi)FLASH主備分區(qū)的起始地址。
[0033]此外,將需要對(duì)FLASH進(jìn)行擦除、寫入、讀取操作的函數(shù)鏈接到RAM地址空間,以防止對(duì)FLASH進(jìn)行擦除操作時(shí),擦除掉正在執(zhí)行擦除操作的代碼,導(dǎo)致系統(tǒng)異常;程序鏈接后在FLASH中存儲(chǔ)結(jié)構(gòu)如圖2所示,在程序運(yùn)行時(shí),這部分代碼會(huì)拷貝到RAM中。
[0034]步驟b中,在程序啟動(dòng)的時(shí)候通過異常向量表中的值判斷當(dāng)前執(zhí)行的是主分區(qū)中的程序,還是執(zhí)行的備份分區(qū)中的程序:
[0035]具體為:如果異常向量表中的值小于0x10000,則判定當(dāng)前執(zhí)行的是主分區(qū)中的程序;如果異常向量表中的值大于0x10000,則判定當(dāng)前執(zhí)行的是備份分區(qū)中的程序。
[0036]此外,步驟b中是通過CRC校驗(yàn)來檢測(cè)程序代碼是否發(fā)生故障。
[0037]步驟c中若檢測(cè)到執(zhí)行的為主分區(qū)中的程序且程序代碼發(fā)生故障時(shí),通過修改FLASH起始地址處的異常向量表后并重啟單片機(jī)切換至備份分區(qū)運(yùn)行程序。修改異常向量表的方法為:將異常向量表中的地址修改為當(dāng)前地址加上備份分區(qū)的起始地址。
[0038]如果主分區(qū)中的程序代碼未遭到破壞,則繼續(xù)執(zhí)行主分區(qū)中的程序代碼。若檢測(cè)到執(zhí)行的為備份分區(qū)中的程序且程序代碼發(fā)生故障時(shí),則告警程序遭到破壞,并掛起單片機(jī)。
[0039]如果檢測(cè)到當(dāng)前執(zhí)行的是備份分區(qū)中的程序代碼,而程序代碼未發(fā)生破壞,則繼續(xù)執(zhí)行備份分區(qū)中的程序代碼。
[0040]通過上述手段,在片內(nèi)FLASH的主分區(qū)程序出現(xiàn)故障時(shí),自動(dòng)檢測(cè)并切換至備份分區(qū)執(zhí)行,可以延長單片機(jī)使用壽命。
【主權(quán)項(xiàng)】
1.一種實(shí)現(xiàn)程序備份的方法,其特征在于,包括: a.在單片機(jī)片內(nèi)FLASH的主、備分區(qū)中存入兩份執(zhí)行邏輯相同的可執(zhí)行程序; b.在程序啟動(dòng)的時(shí)候判斷當(dāng)前執(zhí)行的是主分區(qū)中的程序,還是執(zhí)行的備份分區(qū)中的程序,并檢測(cè)程序代碼是否發(fā)生故障; c.若檢測(cè)到執(zhí)行的為主分區(qū)中的程序且程序代碼發(fā)生故障時(shí),切換至備份分區(qū)運(yùn)行程序。2.如權(quán)利要求1所述的方法,其特征在于,步驟a中,所述在單片機(jī)片內(nèi)FLASH的主、備分區(qū)中存入兩份執(zhí)行邏輯相同的可執(zhí)行程序的方法是: 使用兩個(gè)鏈接腳本將嵌入式源代碼編譯成兩個(gè)執(zhí)行邏輯相同但代碼段的起始地址不同的可執(zhí)行程序,然后將兩個(gè)可執(zhí)行程序分別放于片內(nèi)FLASH的主備分區(qū)中,所述代碼段的起始地址分別為片內(nèi)FLASH主備分區(qū)的起始地址。3.如權(quán)利要求1所述的方法,其特征在于,步驟a中還包括:將需要對(duì)FLASH進(jìn)行擦除、寫入、讀取操作的函數(shù)鏈接到RAM地址空間。4.如權(quán)利要求1所述的方法,其特征在于,步驟b中,在程序啟動(dòng)的時(shí)候通過異常向量表中的值判斷當(dāng)前執(zhí)行的是主分區(qū)中的程序,還是執(zhí)行的備份分區(qū)中的程序。5.如權(quán)利要求4所述的方法,其特征在于,如果異常向量表中的值小于0x10000,則判定當(dāng)前執(zhí)行的是主分區(qū)中的程序;如果異常向量表中的值大于0x10000,則判定當(dāng)前執(zhí)行的是備份分區(qū)中的程序。6.如權(quán)利要求1所述的方法,其特征在于,步驟b中,通過CRC校驗(yàn)來檢測(cè)程序代碼是否發(fā)生故障。7.如權(quán)利要求1所述的方法,其特征在于,步驟b中,若檢測(cè)到程序代碼未發(fā)生故障,則繼續(xù)執(zhí)行該分區(qū)內(nèi)的程序代碼。8.如權(quán)利要求1所述的方法,其特征在于,步驟c中若檢測(cè)到執(zhí)行的為主分區(qū)中的程序且程序代碼發(fā)生故障時(shí),通過修改異常向量表后并重啟單片機(jī)切換至備份分區(qū)運(yùn)行程序。9.如權(quán)利要求8所述的方法,其特征在于,所述修改異常向量表的方法為: 將異常向量表中的地址修改為當(dāng)前地址加上備份分區(qū)的起始地址。10.如權(quán)利要求1-9任意一項(xiàng)所述的方法,其特征在于,步驟c中還包括: 若檢測(cè)到執(zhí)行的為備份分區(qū)中的程序且程序代碼發(fā)生故障時(shí),則告警程序遭到破壞,并掛起單片機(jī)。
【專利摘要】本發(fā)明涉及嵌入式軟件領(lǐng)域,其公開了一種實(shí)現(xiàn)程序備份的方法解決傳統(tǒng)技術(shù)中無法在單片機(jī)片內(nèi)FLASH實(shí)現(xiàn)程序備份,采用雙FLASH進(jìn)行程序備份成本高的問題。該方法包括:a.在單片機(jī)片內(nèi)FLASH的主、備分區(qū)中存入兩份執(zhí)行邏輯相同的可執(zhí)行程序;b.在程序啟動(dòng)的時(shí)候判斷當(dāng)前執(zhí)行的是主分區(qū)中的程序,還是執(zhí)行的備份分區(qū)中的程序,并檢測(cè)程序代碼是否發(fā)生故障;c.若檢測(cè)到執(zhí)行的為主分區(qū)中的程序且程序代碼發(fā)生故障時(shí),切換至備份分區(qū)運(yùn)行程序。本發(fā)明適用于單片機(jī)程序備份。
【IPC分類】G06F11/14
【公開號(hào)】CN105589765
【申請(qǐng)?zhí)枴緾N201510955701
【發(fā)明人】湛松濤, 郭峰, 張曉東
【申請(qǐng)人】邁普通信技術(shù)股份有限公司
【公開日】2016年5月18日
【申請(qǐng)日】2015年12月17日
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
陆川县| 疏勒县| 合阳县| 丹江口市| 堆龙德庆县| 炉霍县| 平舆县| 古田县| 阳东县| 泸溪县| 辉县市| 宝清县| 微山县| 临漳县| 鸡西市| 泽州县| 措勤县| 洞头县| 兴和县| 越西县| 阿瓦提县| 略阳县| 珠海市| 广德县| 盐山县| 东平县| 察隅县| 友谊县| 彭山县| 文昌市| 抚远县| 藁城市| 荃湾区| 九寨沟县| 北海市| 开封市| 阜平县| 平原县| 杂多县| 兰州市| 名山县|