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

一種STM32微處理器程序架構(gòu)設(shè)計方法與流程

文檔序號:12664630閱讀:440來源:國知局

本發(fā)明涉及一種STM32微處理器程序架構(gòu)設(shè)計方法。



背景技術(shù):

嵌入式系統(tǒng)對于不同的應(yīng)用,出于開發(fā)成本,開發(fā)周期,可維護(hù)性等方面考慮,都會選擇不同的微控制器來進(jìn)行產(chǎn)品開發(fā)。在嵌入式系統(tǒng)的程序設(shè)計中,存儲架構(gòu)的設(shè)計是程序設(shè)計的關(guān)鍵因素之一。STM32F103RCT6是一款基于ARM 32位CORTEX-M3的高性能,高穩(wěn)定性,低功耗,最高工作頻率為72MHZ,1.25DIPS/MHZ單周期乘法與硬件除法的存儲器。存儲器片上集成了256KB的flash可在線擦除存儲器和48KB的SRAM靜態(tài)存儲器。其中,由于flash可在線擦除存儲器的256KB程序空間是連續(xù)的,因此在每次更新程序時,都只能整片擦除和燒寫,而燒寫又只能使用ISP模式進(jìn)行燒寫,操作起來及其不方便。



技術(shù)實現(xiàn)要素:

本發(fā)明要解決的技術(shù)問題,在于提供一種STM32微處理器程序架構(gòu)設(shè)計方法,通過對程序架構(gòu)的設(shè)計,實現(xiàn)在更新程序的時候,可以只更新對應(yīng)區(qū)域的內(nèi)容,而無需整片擦除和燒寫,可以降低開發(fā)成本,提高系統(tǒng)穩(wěn)定性,提高生產(chǎn)效率,縮短更新時間。

本發(fā)明是這樣實現(xiàn)的:一種STM32微處理器程序架構(gòu)設(shè)計方法,所述方法包括:將微處理器程序架構(gòu)劃分為四個區(qū),包括BOOT程序區(qū)、應(yīng)用程序區(qū)、配置信息區(qū)以及程序備份區(qū);且通過所述BOOT程序區(qū)實現(xiàn)在線燒寫程序和遠(yuǎn)程升級程序;通過所述應(yīng)用程序區(qū)實現(xiàn)外設(shè)模塊接口的調(diào)用;通過所述配置信息區(qū)存儲配置參數(shù);通過所述程序備份區(qū)實現(xiàn)APP程序或者配置信息的升級備份。

進(jìn)一步地,所述BOOT程序區(qū)分配有24KB的存儲空間,所述APP應(yīng)用程序區(qū)分配有100KB的存儲空間,所述信息配置區(qū)分配有100KB的存儲空間,所述程序備份區(qū)分配有32KB的存儲空間。

進(jìn)一步地,所述“通過所述BOOT程序區(qū)實現(xiàn)在線燒寫程序”具體包括:

系統(tǒng)上電后,所述BOOT程序區(qū)開始運行BOOT程序,并判斷是否進(jìn)入ISP模式,若是,則進(jìn)入ISP模式,并等待接收數(shù)據(jù)包;若否,則正常運行BOOT程序;進(jìn)入ISP模式后,PC端先向所述BOOT程序區(qū)發(fā)送一個握手命令判斷是否接收數(shù)據(jù)包信息,若BOOT程序區(qū)應(yīng)答是,則PC端開始向BOOT程序區(qū)發(fā)送數(shù)據(jù)包信息;若BOOT程序區(qū)應(yīng)答否,則PC端不向BOOT程序區(qū)發(fā)送數(shù)據(jù)包信息;所述數(shù)據(jù)包信息包含數(shù)據(jù)頭、數(shù)據(jù)長度、數(shù)據(jù)命令、數(shù)據(jù)內(nèi)容、CRC校驗碼以及包尾;

BOOT程序區(qū)在接收到完整的數(shù)據(jù)包信息后,判斷CRC校驗碼是否正確,若否,則返回重發(fā)指令給PC端,PC端重新發(fā)送數(shù)據(jù)包信息給BOOT程序區(qū);若是,則從數(shù)據(jù)包信息中解析出指定的燒寫地址以及燒寫的數(shù)據(jù),并將數(shù)據(jù)燒寫到指定的燒寫地址中。

進(jìn)一步地,所述“通過所述程序備份區(qū)實現(xiàn)APP程序或者配置信息的升級備份”具體包括:

遠(yuǎn)程PC端通過升級協(xié)議向APP應(yīng)用程序區(qū)推送升級文件,所述升級協(xié)議中包含文件大小、文件類型、文件CRC校驗碼、文件內(nèi)容以及文件的數(shù)據(jù)包個數(shù),所述升級文件為APP程序升級文件或者配置信息升級文件;APP應(yīng)用程序區(qū)在接收到完整的升級文件后,判斷文件CRC校驗碼是否正確,若否,則返回重發(fā)指令給遠(yuǎn)程PC端,遠(yuǎn)程PC端重新發(fā)送升級文件給APP應(yīng)用程序區(qū);若是,則將升級文件備份到程序備份區(qū),且若升級文件為APP程序升級文件,則生成一對應(yīng)的APP程序升級標(biāo)志;若升級文件為配置信息升級文件,則生成一對應(yīng)的配置信息升級標(biāo)志。

進(jìn)一步地,所述“通過所述BOOT程序區(qū)實現(xiàn)遠(yuǎn)程升級程序”具體包括:

BOOT程序正常運行后,BOOT程序區(qū)檢測程序備份區(qū)是否存在APP程序升級標(biāo)志或者配置信息升級標(biāo)志,若存在,則將APP程序升級文件拷貝到應(yīng)用程序區(qū)進(jìn)行升級并運行APP程序,或者將配置信息升級文件拷貝到配置信息區(qū)進(jìn)行升級,且刪除APP程序升級標(biāo)志或者配置信息升級標(biāo)志;若不存在,則直接運行應(yīng)用程序區(qū)中的APP程序;

同時,在運行APP程序的過程中,若出現(xiàn)程序損壞,則從程序備份區(qū)拷貝APP程序升級文件至應(yīng)用程序區(qū),并重新運行APP程序。

進(jìn)一步地,所述“通過所述應(yīng)用程序區(qū)實現(xiàn)外設(shè)模塊接口的調(diào)用”具體包括:客戶端向應(yīng)用程序區(qū)發(fā)送調(diào)用命令數(shù)據(jù)包,所述調(diào)用命令數(shù)據(jù)包中包含數(shù)據(jù)頭、調(diào)用的外設(shè)模塊、數(shù)據(jù)長度、CRC校驗碼、數(shù)據(jù)內(nèi)容以及包尾;應(yīng)用程序區(qū)在接收到完整的調(diào)用命令數(shù)據(jù)包后,判斷CRC校驗碼是否正確,若否,則返回重發(fā)指令給客戶端,客戶端重新向應(yīng)用程序區(qū)發(fā)送調(diào)用命令數(shù)據(jù)包;若是,則解析出調(diào)用的外設(shè)模塊,并調(diào)用相應(yīng)的接口。

進(jìn)一步地,所述“通過所述配置信息區(qū)存儲配置參數(shù)”具體包括:

系統(tǒng)上電后,通過所述BOOT程序區(qū)將基本配置參數(shù)燒寫到所述配置信息區(qū)中,所述基本配置參數(shù)至少包含廠家的協(xié)議版本以及外設(shè)模塊的使能情況;且在系統(tǒng)第一次上電時,應(yīng)用程序區(qū)先從該配置信息區(qū)獲取微處理器芯片的唯一ID,并利用加密算法生成一加密數(shù)據(jù),之后將加密數(shù)據(jù)寫入到配置信息區(qū)中;

在運行APP程序時,APP程序從配置信息區(qū)讀取基本配置參數(shù),并根據(jù)基本配置參數(shù)確定廠家的協(xié)議版本以及外設(shè)模塊的使能情況;同時,APP程序讀取微處理器芯片的唯一ID,利用加密算法生成一加密結(jié)果,并將加密結(jié)果與配置信息區(qū)中的加密數(shù)據(jù)進(jìn)行比對,且若比對結(jié)果一致,則正常運行APP程序;若比對結(jié)果不一致,則執(zhí)行開機自銷毀操作。

進(jìn)一步地,所述“通過所述配置信息區(qū)存儲配置參數(shù)”還包括:

BOOT程序正常運行后,通過PC端向應(yīng)用程序區(qū)下發(fā)配置指令,應(yīng)用程序區(qū)從配置信息區(qū)讀取基本配置參數(shù),并將讀取的基本配置參數(shù)返回到PC端進(jìn)行修改,之后將修改后的基本配置參數(shù)寫入到配置信息區(qū)中。

本發(fā)明具有如下優(yōu)點:通過對程序架構(gòu)的劃分,使得在更新程序的時候,可以只更新對應(yīng)區(qū)域的內(nèi)容,而無需整片擦除和燒寫,比如只要更新應(yīng)用程序區(qū)中的APP程序,或者只修改配置信息區(qū)中的基本配置參數(shù),這可以縮短軟件的更新時間。且在不增加額外存儲集成電路的情況下,實現(xiàn)遠(yuǎn)程升級程序和更新配置參數(shù),可以降低開發(fā)成本,提高系統(tǒng)穩(wěn)定性,提高生產(chǎn)效率,并增加芯片的使用壽命,提高軟件售后維護(hù)、升級的方便性。

附圖說明

下面參照附圖結(jié)合實施例對本發(fā)明作進(jìn)一步的說明。

圖1為本發(fā)明中程序架構(gòu)的示意圖。

具體實施方式

請參照圖1,一種STM32微處理器程序架構(gòu)設(shè)計方法,所述方法包括:將微處理器程序架構(gòu)劃分為四個區(qū),包括BOOT程序區(qū)(即圖1中的BOOT區(qū))、應(yīng)用程序區(qū)(即圖1中的APP區(qū))、配置信息區(qū)(即圖1中的BACK區(qū))以及程序備份區(qū)(即圖1中的BASE_INFO_CONF區(qū));且通過所述BOOT程序區(qū)實現(xiàn)在線燒寫程序和遠(yuǎn)程升級程序;通過所述應(yīng)用程序區(qū)實現(xiàn)外設(shè)模塊接口的調(diào)用;通過所述配置信息區(qū)存儲配置參數(shù);通過所述程序備份區(qū)實現(xiàn)APP程序或者配置信息的升級備份。

其中,所述BOOT程序區(qū)分配有24KB的存儲空間,分配給BOOT程序區(qū)的地址為:0x08000000--0x8006000;所述APP應(yīng)用程序區(qū)分配有100KB的存儲空間,分配給APP應(yīng)用程序區(qū)的地址為:0x08006000--0x0801F000;所述信息配置區(qū)分配有100KB的存儲空間,分配給信息配置區(qū)的地址為:0x0801F000--0x08038000;所述程序備份區(qū)分配有32KB的存儲空間,分配給程序備份區(qū)的地址為:0x08038000--0x0803FFFF。

所述“通過所述BOOT程序區(qū)實現(xiàn)在線燒寫程序”具體包括:

系統(tǒng)上電后,所述BOOT程序區(qū)開始運行BOOT程序,并判斷是否進(jìn)入ISP模式,若是,則進(jìn)入ISP模式,并等待接收數(shù)據(jù)包;若否,則正常運行BOOT程序;進(jìn)入ISP模式后,通過PC端先向所述BOOT程序區(qū)發(fā)送一個握手命令判斷是否接收數(shù)據(jù)包信息,若BOOT程序區(qū)應(yīng)答是,則PC端開始向BOOT程序區(qū)發(fā)送數(shù)據(jù)包信息;若BOOT程序區(qū)應(yīng)答否,則PC端不向BOOT程序區(qū)發(fā)送數(shù)據(jù)包信息;所述數(shù)據(jù)包信息包含數(shù)據(jù)頭、數(shù)據(jù)長度、數(shù)據(jù)命令、數(shù)據(jù)內(nèi)容、CRC校驗碼以及包尾。以傳輸十六進(jìn)制的數(shù)據(jù)為例,判斷是否進(jìn)入ISP模式命令:04(數(shù)據(jù)頭)06 00(數(shù)據(jù)長度)00 00 01(數(shù)據(jù)命令)53(數(shù)據(jù)內(nèi)容)46D4(CRC校驗)06(包尾);應(yīng)答進(jìn)入ISP模式命令:04(包頭)06 00(數(shù)據(jù)長度兩個字節(jié))00 00 01(數(shù)據(jù)命令)00(數(shù)據(jù)內(nèi)容)D0BE(CRC校驗)06(包尾)。

BOOT程序區(qū)在接收到完整的數(shù)據(jù)包信息后(即BOOT程序區(qū)在燒寫時,會傳輸一個數(shù)據(jù)包,數(shù)據(jù)包的大小最大為4k,以減少內(nèi)存的使用情況),判斷CRC校驗碼是否正確,若否,則返回重發(fā)指令給PC端,PC端重新發(fā)送數(shù)據(jù)包信息給BOOT程序區(qū);若是,則從數(shù)據(jù)包信息中解析出指定的燒寫地址以及燒寫的數(shù)據(jù),其中,燒寫地址包含在數(shù)據(jù)內(nèi)容中,并將數(shù)據(jù)燒寫到指定的燒寫地址中,例如,指定的燒寫地址為0x08006000,此時就將數(shù)據(jù)燒寫到這個地址中。

所述“通過所述程序備份區(qū)實現(xiàn)APP程序或者配置信息的升級備份”具體包括:

遠(yuǎn)程PC端通過升級協(xié)議向APP應(yīng)用程序區(qū)推送升級文件,所述升級協(xié)議中包含文件大小、文件類型、文件CRC校驗碼、文件內(nèi)容以及文件的數(shù)據(jù)包個數(shù),以推送一個十六進(jìn)制的文件數(shù)據(jù)為例:04(包頭)30 00(數(shù)據(jù)長度)00a0 01(命令號)[29 00(文件大小)01(文件類型)1C 00(文件命令)53 65 72 76 5F 72 66 69 64 5F 32 30 31 35 2D 31 30 2D 31 35 2E 62 69 6E 2E 62 69 6E(文件名稱)FC 46 00 00(文件大小)00 08(傳輸文件包數(shù)兩個字節(jié))6E DA FF FF(文件校驗4個字節(jié))](文件包內(nèi)容)70 8D(數(shù)據(jù)包校驗兩個字節(jié))06(包尾)。所述升級文件為APP程序升級文件或者配置信息升級文件;APP應(yīng)用程序區(qū)在接收到完整的升級文件后,例如升級文件中包含有5個數(shù)據(jù)包,則APP應(yīng)用程序區(qū)需要接收到5個數(shù)據(jù)包才算完整,且只有接收到完整的升級文件后才可以進(jìn)行升級,判斷文件CRC校驗碼是否正確,若否,則返回重發(fā)指令給遠(yuǎn)程PC端,遠(yuǎn)程PC端重新發(fā)送升級文件給APP應(yīng)用程序區(qū);若是,則將升級文件備份到程序備份區(qū),且若升級文件為APP程序升級文件,則生成一對應(yīng)的APP程序升級標(biāo)志;若升級文件為配置信息升級文件,則生成一對應(yīng)的配置信息升級標(biāo)志。其中,APP程序升級標(biāo)志和配置信息升級標(biāo)志用于BOOT程序區(qū)進(jìn)行升級時使用。

所述“通過所述BOOT程序區(qū)實現(xiàn)遠(yuǎn)程升級程序”具體包括:

BOOT程序正常運行后,BOOT程序區(qū)檢測程序備份區(qū)是否存在APP程序升級標(biāo)志或者配置信息升級標(biāo)志,若存在,則將APP程序升級文件拷貝到應(yīng)用程序區(qū)進(jìn)行升級并運行APP程序,或者將配置信息升級文件拷貝到配置信息區(qū)進(jìn)行升級,且刪除APP程序升級標(biāo)志或者配置信息升級標(biāo)志;若不存在,則直接運行應(yīng)用程序區(qū)中的APP程序;

同時,在運行APP程序的過程中,若出現(xiàn)程序損壞(例如讀卡器在非正常操作的情況,就可能導(dǎo)致APP程序損壞,使APP程序無法正常啟動),則從程序備份區(qū)拷貝APP程序升級文件至應(yīng)用程序區(qū),并重新運行APP程序。

所述“通過所述應(yīng)用程序區(qū)實現(xiàn)外設(shè)模塊接口的調(diào)用”具體包括:客戶端向應(yīng)用程序區(qū)發(fā)送調(diào)用命令數(shù)據(jù)包,所述調(diào)用命令數(shù)據(jù)包中包含數(shù)據(jù)頭、調(diào)用的外設(shè)模塊、數(shù)據(jù)長度、CRC校驗碼、數(shù)據(jù)內(nèi)容以及包尾,例如探測卡片命令:04(數(shù)據(jù)頭)06 00(數(shù)據(jù)長度)00 03 01(命令號)00(數(shù)據(jù)內(nèi)容)25 66(校驗碼)06(包尾)。應(yīng)用程序區(qū)在接收到完整的調(diào)用命令數(shù)據(jù)包后,判斷CRC校驗碼是否正確,若否,則返回重發(fā)指令給客戶端,客戶端重新向應(yīng)用程序區(qū)發(fā)送調(diào)用命令數(shù)據(jù)包;若是,則解析出調(diào)用的外設(shè)模塊,并調(diào)用相應(yīng)的接口。

所述“通過所述配置信息區(qū)存儲配置參數(shù)”具體包括:

系統(tǒng)上電后,通過所述BOOT程序區(qū)將基本配置參數(shù)燒寫到所述配置信息區(qū)中,所述基本配置參數(shù)至少包含廠家的協(xié)議版本以及外設(shè)模塊的使能情況,當(dāng)然,還可以包含特殊數(shù)據(jù)命令的加密方式,系統(tǒng)使用時間,開機次數(shù),產(chǎn)品的客戶類型,產(chǎn)品的生產(chǎn)日期等相關(guān)參數(shù);且在系統(tǒng)第一次上電時,應(yīng)用程序區(qū)先從該配置信息區(qū)獲取微處理器芯片的唯一ID(每塊微處理器芯片都具有一個唯一ID),并利用加密算法(可以是對稱加密算法或者非對稱加密算法)生成一加密數(shù)據(jù),之后將加密數(shù)據(jù)寫入到配置信息區(qū)中;通過將加密數(shù)據(jù)寫入配置信息區(qū),可以防止外面的硬件暴力破解程序,所謂暴力破解方式就是直接讀取用戶的芯片數(shù)據(jù)信息并拷貝程序。

在運行APP程序時,APP程序從配置信息區(qū)讀取基本配置參數(shù),并根據(jù)基本配置參數(shù)確定廠家的協(xié)議版本以及外設(shè)模塊的使能情況;同時,APP程序讀取微處理器芯片的唯一ID,利用加密算法生成一加密結(jié)果,并將加密結(jié)果與配置信息區(qū)中的加密數(shù)據(jù)進(jìn)行比對,且若比對結(jié)果一致,則正常運行APP程序;若比對結(jié)果不一致,則執(zhí)行開機自銷毀操作,有效的防止了程序的硬破解。

所述“通過所述配置信息區(qū)存儲配置參數(shù)”還包括:

BOOT程序正常運行后,通過PC端向應(yīng)用程序區(qū)下發(fā)配置指令,應(yīng)用程序區(qū)從配置信息區(qū)讀取基本配置參數(shù),并將讀取的基本配置參數(shù)返回到PC端進(jìn)行修改,之后將修改后的基本配置參數(shù)寫入到配置信息區(qū)中。在具體實施時,可以在不修改應(yīng)用程序的情況下,通過修改基本配置參數(shù)來實現(xiàn)終端產(chǎn)品的應(yīng)用程序,并可以對接多個客戶(例如,原有的基本配置參數(shù)只能夠?qū)涌蛻鬉,通過修改基本配置參數(shù)后,就可以實現(xiàn)同時對接客戶A、客戶B等多個客戶),這有助于減少軟件的維護(hù)成本。

總之,本發(fā)明具有如下優(yōu)點:通過對程序架構(gòu)的劃分,使得在更新程序的時候,可以只更新對應(yīng)區(qū)域的內(nèi)容,而無需整片擦除和燒寫,比如只要更新應(yīng)用程序區(qū)中的APP程序,或者只修改配置信息區(qū)中的基本配置參數(shù),這可以縮短軟件的更新時間。且在不增加額外存儲集成電路的情況下,實現(xiàn)遠(yuǎn)程升級程序和更新配置參數(shù),可以降低開發(fā)成本,提高系統(tǒng)穩(wěn)定性,提高生產(chǎn)效率,并增加芯片的使用壽命,提高軟件售后維護(hù)、升級的方便性。

雖然以上描述了本發(fā)明的具體實施方式,但是熟悉本技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,我們所描述的具體的實施例只是說明性的,而不是用于對本發(fā)明的范圍的限定,熟悉本領(lǐng)域的技術(shù)人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應(yīng)當(dāng)涵蓋在本發(fā)明的權(quán)利要求所保護(hù)的范圍內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
万载县| 邹平县| 玛沁县| 新兴县| 潢川县| 宝鸡市| 民权县| 荣昌县| 甘泉县| 通化县| 新密市| 谷城县| 讷河市| 瑞安市| 兴隆县| 巴彦淖尔市| 华池县| 昭觉县| 隆德县| 牡丹江市| 沙河市| 开原市| 丁青县| 嫩江县| 汝城县| 双流县| 嘉义县| 木里| 英吉沙县| 祁连县| 浦北县| 金坛市| 南漳县| 中西区| 抚松县| 阜阳市| 泌阳县| 景谷| 宜良县| 万山特区| 龙门县|