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

在線升級方法和在線升級系統(tǒng)的制作方法

文檔序號:6509438閱讀:209來源:國知局
在線升級方法和在線升級系統(tǒng)的制作方法
【專利摘要】本發(fā)明提出一種在線升級系統(tǒng)和在線升級方法,其中在線升級方法包括以下步驟:獲取在線升級程序;將在線升級程序?qū)懭胫链鎯ζ鞯膯右龑?dǎo)程序區(qū)中;ISP控制器通過主控制器接收在線升級指令,并執(zhí)行啟動引導(dǎo)程序區(qū)中的在線升級程序;主控制器從上位機(jī)獲取在線升級命令或數(shù)據(jù),并將在線升級命令或數(shù)據(jù)寫入至ISP控制器;ISP控制器暫停主控制器,并根據(jù)在線升級命令或數(shù)據(jù)對存儲器進(jìn)行相應(yīng)操作;當(dāng)ISP控制器對存儲器進(jìn)行在線升級操作完成之后,ISP控制器釋放對主控制器的暫停。本發(fā)明的在線升級方法可以由用戶自己定義在線升級的端口和軟件,并且通過主控制器CPU執(zhí)行程序來控制MCU中用戶程序的在線升級過程,該方法兼容性好,可靠性高,用戶使用方便。
【專利說明】在線升級方法和在線升級系統(tǒng)

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件【技術(shù)領(lǐng)域】,特別涉及一種在線升級方法以及一種在線升級系統(tǒng)。

【背景技術(shù)】
[0002]目前,現(xiàn)有的MCU(Micro Control Unit,微控制單元)中用戶程序的在線升級方法通常利用特定通信端口 IIC/SPI等和專用的命令(例如,通過通信端口發(fā)送Oxbb,表示切換進(jìn)入在線升級模式等,這些命令與內(nèi)部在線升級邏輯電路相匹配,一經(jīng)確定不可修改)來進(jìn)行在線升級。也就是說,通過這些通信端口發(fā)送專用的命令,以進(jìn)入在線編程。然后發(fā)送相應(yīng)的操作命令,以判斷是否進(jìn)入在線編程,在判斷進(jìn)入在線編程后,根據(jù)通信端口和內(nèi)部設(shè)計電路以及按照Flash讀寫數(shù)據(jù)的格式對Flash進(jìn)行在線升級。在完成在線編程后,發(fā)送結(jié)束在線編程的命令,并且判斷是否退出在線編程,從而完成一次在線升級過程。
[0003]但是,現(xiàn)有技術(shù)是通過特定通信端口、專用命令和對應(yīng)的內(nèi)部設(shè)計電路來對MCU中的用戶程序進(jìn)行在線升級,這種硬件邏輯控制升級的方式,局限于在線升級只能通過芯片定義的特定方式,不能作為通用的在線升級技術(shù),這將導(dǎo)致在線升級端口和在線升級軟件不能由用戶自己定義,而且在線升級過程完全不需要主控制器CPU的參與,因此開發(fā)在線升級軟件十分局限,極不方便用戶的使用。


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

[0004]本發(fā)明的目的旨在至少從一定程度上解決上述的技術(shù)缺陷。
[0005]為此,本發(fā)明的一個目的在于提出一種在線升級方法,該方法可以由用戶自己定義在線升級的端口和軟件,并且通過主控制器執(zhí)行程序來控制MCU中用戶程序的在線升級過程,因此兼容性好,可靠性高,便于需要自己定義在線升級軟件以及對MCU通信端口使用數(shù)量要求嚴(yán)格的用戶使用。
[0006]本發(fā)明的另一個目的在于提出一種在線升級系統(tǒng)。
[0007]為達(dá)到上述目的,根據(jù)本發(fā)明的一個方面,提供了一種在線升級方法,包括以下步驟:獲取在線升級程序;將所述在線升級程序?qū)懭胫链鎯ζ鞯膯右龑?dǎo)程序區(qū)中,其中,主控制器分別通過存儲控制器和ISP控制器與所述存儲器相連;所述ISP控制器通過所述主控制器接收在線升級指令,并執(zhí)行所述啟動引導(dǎo)程序區(qū)中的在線升級程序;所述主控制器從上位機(jī)獲取在線升級命令或數(shù)據(jù),并將所述在線升級命令或數(shù)據(jù)寫入至所述ISP控制器;所述ISP控制器暫停所述主控制器,并根據(jù)所述在線升級命令或數(shù)據(jù)對所述存儲器進(jìn)行相應(yīng)操作;以及當(dāng)所述ISP控制器對所述存儲器進(jìn)行在線升級操作完成之后,所述ISP控制器釋放對所述主控制器的暫停。
[0008]根據(jù)本發(fā)明實施例的在線升級方法,主控制器CPU與上位機(jī)之間的通信協(xié)議是由用戶的啟動引導(dǎo)程序來指定的,因此用戶可以自己定義在線升級的端口和在線升級的軟件以匹配上位機(jī),并且,該方法通過CPU從上位機(jī)獲取在線升級的命令或數(shù)據(jù)以及控制ISP控制器來控制在線升級過程,以實現(xiàn)對MCU中存儲器的在線升級,因此該方法兼容性好,可靠性高,靈活方便,可以作為通用的在線升級技術(shù),便于需要自己定義在線升級軟件以及對MCU通信端口使用數(shù)量要求嚴(yán)格的用戶使用。
[0009]為達(dá)到上述目的,根據(jù)本發(fā)明的另一個方面,提供了一種在線升級系統(tǒng),該系統(tǒng)包括:存儲器,設(shè)置有啟動引導(dǎo)程序區(qū);存儲控制器和ISP控制器;上位機(jī),用于獲取在線升級程序,并將所述在線升級程序?qū)懭胫链鎯ζ鞯膯右龑?dǎo)程序區(qū)中;主控制器,所述主控制器分別通過存儲控制器和ISP控制器與所述存儲器相連,所述主控制器與所述上位機(jī)進(jìn)行通信,用于從所述上位機(jī)獲取在線升級指令,并根據(jù)所述在線升級指令執(zhí)行所述啟動引導(dǎo)程序區(qū)中的在線升級程序,以及從所述上位機(jī)獲取在線升級命令或數(shù)據(jù),并將所述在線升級命令或數(shù)據(jù)寫入至所述ISP控制器,其中,所述ISP控制器,用于暫停所述主控制器,并根據(jù)所述在線升級命令或數(shù)據(jù)對所述存儲器進(jìn)行操作存儲器進(jìn)行相應(yīng)操作,以及當(dāng)所述ISP控制器對所述存儲器進(jìn)行在線升級操作完成之后,所述ISP控制器釋放對所述主控制器的暫停。
[0010]根據(jù)本發(fā)明實施例的在線升級系統(tǒng),主控制器CPU與上位機(jī)之間的通信協(xié)議是由用戶的啟動引導(dǎo)程序來指定的,因此用戶可以自己定義在線升級的端口和在線升級的軟件以匹配上位機(jī),同時,CPU從上位機(jī)獲取在線升級命令或數(shù)據(jù)以及控制ISP控制器來控制在線升級過程,以實現(xiàn)對MCU中存儲器的在線升級,因此該系統(tǒng)兼容性好,可靠性高,便于需要自己定義在線升級軟件以及對MCU通信端口使用數(shù)量要求嚴(yán)格的用戶使用。
[0011]本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。

【專利附圖】

【附圖說明】
[0012]本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對實施例的描述中將變得明顯和容易理解,其中:
[0013]圖1為根據(jù)本發(fā)明實施例的在線升級系統(tǒng)的結(jié)構(gòu)框圖;
[0014]圖2為根據(jù)本發(fā)明一個實施例的存儲器的結(jié)構(gòu)示意圖;
[0015]圖3A為根據(jù)本發(fā)明一個實施例的存儲器的用戶程序區(qū)空白時的在線升級模式示意圖;
[0016]圖3B為根據(jù)本發(fā)明另一個實施例的檢測到ISP命令時的在線升級模式示意圖;
[0017]圖4A為根據(jù)本發(fā)明一個實施例的CPU從BLROM啟動時的啟動地址映射示意圖;
[0018]圖4B為根據(jù)本發(fā)明另一個實施例的CPU從APPROM啟動時的啟動地址映射示意圖;
[0019]圖5為根據(jù)本發(fā)明一個實施例的在線升級系統(tǒng)的硬件原理框圖;
[0020]圖6為根據(jù)本發(fā)明一個實施例的ISP控制器對存儲器的操作過程控制時序圖;
[0021]圖7為根據(jù)本發(fā)明實施例的在線升級方法的流程圖;
[0022]圖8為根據(jù)本發(fā)明一個具體實施例的在線升級方法的流程圖;以及
[0023]圖9為根據(jù)本發(fā)明一個實施例的CPU控制ISP控制器以對FLASH進(jìn)行讀、擦除、寫操作的具體控制流程圖。

【具體實施方式】
[0024]下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
[0025]下文的公開提供了許多不同的實施例或例子用來實現(xiàn)本發(fā)明的不同結(jié)構(gòu)。為了簡化本發(fā)明的公開,下文中對特定例子的部件和設(shè)置進(jìn)行描述。當(dāng)然,它們僅僅為示例,并且目的不在于限制本發(fā)明。此外,本發(fā)明可以在不同例子中重復(fù)參考數(shù)字和/或字母。這種重復(fù)是為了簡化和清楚的目的,其本身不指示所討論各種實施例和/或設(shè)置之間的關(guān)系。此夕卜,本發(fā)明提供了的各種特定的工藝和材料的例子,但是本領(lǐng)域普通技術(shù)人員可以意識到其他工藝的可應(yīng)用于性和/或其他材料的使用。另外,以下描述的第一特征在第二特征之“上”的結(jié)構(gòu)可以包括第一和第二特征形成為直接接觸的實施例,也可以包括另外的特征形成在第一和第二特征之間的實施例,這樣第一和第二特征可能不是直接接觸。
[0026]在本發(fā)明的描述中,需要說明的是,除非另有規(guī)定和限定,術(shù)語“安裝”、“相連”、“連接”應(yīng)做廣義理解,例如,可以是機(jī)械連接或電連接,也可以是兩個元件內(nèi)部的連通,可以是直接相連,也可以通過中間媒介間接相連,對于本領(lǐng)域的普通技術(shù)人員而言,可以根據(jù)具體情況理解上述術(shù)語的具體含義。
[0027]參照下面的描述和附圖,將清楚本發(fā)明的實施例的這些和其他方面。在這些描述和附圖中,具體公開了本發(fā)明的實施例中的一些特定實施方式,來表示實施本發(fā)明的實施例的原理的一些方式,但是應(yīng)當(dāng)理解,本發(fā)明的實施例的范圍不受此限制。相反,本發(fā)明的實施例包括落入所附加權(quán)利要求書的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同物。
[0028]下面參照附圖來描述根據(jù)本發(fā)明實施例提出的在線升級方法和在線升級系統(tǒng)。
[0029]如圖1所示,本發(fā)明實施例提出的在線升級系統(tǒng)包括:存儲器10、存儲控制器20和ISP控制器201、上位機(jī)30、主控制器40,其中,存儲器10設(shè)置有啟動引導(dǎo)程序區(qū),上位機(jī)30用于獲取在線升級程序,并將在線升級程序?qū)懭胫链鎯ζ?0的啟動引導(dǎo)程序區(qū)101中;主控制器40分別通過存儲控制器20和ISP控制器201與存儲器10相連,主控制器40與上位機(jī)30進(jìn)行通信,主控制器40用于從上位機(jī)30獲取在線升級指令,并根據(jù)在線升級指令執(zhí)行啟動引導(dǎo)程序區(qū)101中的在線升級程序,以及從上位機(jī)30獲取在線升級命令或數(shù)據(jù),并將在線升級命令或數(shù)據(jù)寫入至ISP控制器201。其中,ISP控制器201用于暫停主控制器40,并根據(jù)在線升級命令或數(shù)據(jù)對存儲器10進(jìn)行操作,以及當(dāng)ISP控制器201對存儲器10操作完成之后,ISP控制器201釋放對主控制器40的暫停。
[0030]在本發(fā)明的一個實施例中,如圖1所示,存儲控制器20中集成有ISP控制器201,這是由于ISP控制器201是對存儲器10進(jìn)行在線升級,也就是對存儲器10進(jìn)行擦除和讀寫操作,該功能與存儲控制器20的功能類似,故在存儲控制器20中集成ISP控制器201可以共用存儲控制器20的部分操作功能,兼容性更好。
[0031]在本發(fā)明的一個實施例中,如圖2所示,存儲器10包括啟動引導(dǎo)程序區(qū)(BLR0M,Bootloader ROM) 101 以及用戶程序區(qū)(APPROM,Applicat1n R0M)102。可選地,存儲器 10還可以包括RAM (Random Access Memory,隨機(jī)存儲器)。其中,BLROM可以為4KB,APPROM可以為60KB,RAM可以為4KB。
[0032]在本發(fā)明的一個實施例中,如圖2所示,在存儲器10的用戶程序區(qū)102中設(shè)置有標(biāo)志位區(qū)1021,標(biāo)志位區(qū)1021中的標(biāo)志位用于標(biāo)志從啟動引導(dǎo)程序區(qū)101或用戶程序區(qū)102啟動。標(biāo)志位區(qū)1021可以設(shè)置在APPROM的末端。
[0033]其中,BLROM用于存儲啟動引導(dǎo)程序(Boot Program)以及在線升級程序(ISPProgram) ,APPROM用于存儲用戶程序(Applicat1n Program)、ISP檢測程序(ISP DetectorProgram)以及標(biāo)志位,啟動引導(dǎo)程序可用BOOT表示,在線升級程序可用ISP表示。
[0034]可選地,在本發(fā)明的一個實施例中,主控制器40與上位機(jī)30間的通信端口可以為UART通信端口或CAN通信端口,也可以為其它通信端口,例如,調(diào)試接口 JTAG (Joint TestAct1n Group)。
[0035]可選地,在本發(fā)明的一個實施例中,標(biāo)志位區(qū)1021中的標(biāo)志位可以為CBF(ChipBoot Flag,芯片啟動標(biāo)志位)和ISP升級標(biāo)志位(ISPS),其中CBF標(biāo)志位用于標(biāo)志在線升級系統(tǒng)上電復(fù)位以及系統(tǒng)復(fù)位以后的啟動方式,并且當(dāng)CBF=I時,在線升級系統(tǒng)在上電復(fù)位以及系統(tǒng)復(fù)位后將從BLROM啟動;當(dāng)CBF=O時,在線升級系統(tǒng)在上電復(fù)位以及系統(tǒng)復(fù)位后將從APPROM啟動。
[0036]ISPS標(biāo)志位用于標(biāo)志在線升級系統(tǒng)當(dāng)前是否需要升級以及升級是否完成等狀態(tài),可選地,ISPS可用2個二進(jìn)制位來表示,其中:
[0037]當(dāng)BOOT程序檢測到ISPS=Il時,標(biāo)志系統(tǒng)的APPROM當(dāng)前空白,當(dāng)前需要ISP程序下載用戶程序到APPROM中,其在線升級模式如圖3A所示;
[0038]當(dāng)BOOT程序檢測到ISPS=Ol時,標(biāo)志系統(tǒng)上次的在線升級未完成,當(dāng)前需要升級,即需要ISP程序更新用戶程序,CPU調(diào)用ISP程序來更新APPROM中的用戶程序和ISP檢測程序,其在線升級模式如圖3B所示;
[0039]當(dāng)BOOT程序檢測到ISPS=1時,標(biāo)志系統(tǒng)當(dāng)前無需在線升級;
[0040]當(dāng)BOOT程序檢測到ISPS=OO時,標(biāo)志狀態(tài)錯誤,CPU將向主程序報錯,并且由用戶程序處理,系統(tǒng)當(dāng)前無需在線升級。
[0041]也就是說,在ISPS=Il或ISPS=Ol時,系統(tǒng)當(dāng)前需要在線升級,以及在ISPS=1或ISPS=OO時,系統(tǒng)當(dāng)前無需在線升級,并且當(dāng)系統(tǒng)有在線升級需求時,需要在更新用戶程序前將標(biāo)志位ISPS置為01,以確保當(dāng)系統(tǒng)出現(xiàn)異常情況而不能完成當(dāng)前在線升級過程時,下一次系統(tǒng)上電復(fù)位或者系統(tǒng)復(fù)位后仍然能夠正常進(jìn)入在線升級過程,例如,如果在更新用戶程序的過程中意外斷電,由于在更新用戶程序前已將標(biāo)志位ISPS置為01,因此在系統(tǒng)重上電后仍然能夠重新進(jìn)入在線升級過程,從而再次進(jìn)行用戶程序更新;同時,在系統(tǒng)通過通信端口(例如JTAG)完成在線升級后,需要將標(biāo)志位ISPS置為10以及標(biāo)志位CBF置為0,以防止系統(tǒng)重上電后從BLROM啟動和再次在線更新用戶程序。
[0042]進(jìn)一步地,在本發(fā)明的一個實施例中,在線升級系統(tǒng)還設(shè)置升級標(biāo)志保護(hù)位以防止升級標(biāo)志位被誤操作,而且,當(dāng)升級標(biāo)志保護(hù)位有效時,不能對升級標(biāo)志位進(jìn)行擦除和寫入等操作。
[0043]此外,在本發(fā)明的一個實施例中,在線升級系統(tǒng)還包括BF (Boot Flag,啟動標(biāo)志位)標(biāo)志位,用于標(biāo)志軟件復(fù)位SRST (Software Reset,即除上電復(fù)位和系統(tǒng)復(fù)位以外的其它復(fù)位)后的啟動方式,其中,BF標(biāo)志位在BF寄存器中,并且,當(dāng)BF=I時,在線升級系統(tǒng)在軟件復(fù)位后從APPROM啟動;當(dāng)BF=O時,在線升級系統(tǒng)在軟件復(fù)位后從BLROM啟動。
[0044]具體地,在本發(fā)明的一個實施例中,在線升級系統(tǒng)上電復(fù)位以及系統(tǒng)復(fù)位后,將清除BF寄存器,存儲控制器20將CBF位讀出,進(jìn)行取反之后寫入至BF寄存器中以標(biāo)志系統(tǒng)從BLROM啟動或從APPROM啟動,系統(tǒng)在在線升級系統(tǒng)進(jìn)行軟件復(fù)位后,軟件寫入的BF標(biāo)志位用于標(biāo)志系統(tǒng)從BLROM啟動或從APPROM啟動,并且此時的BF標(biāo)志位不能根據(jù)CBF取反之后的值來改變,因此,可以說,整個在線升級系統(tǒng)都是通過BF標(biāo)志位來標(biāo)志系統(tǒng)從BLROM啟動或從APPROM啟動。
[0045]進(jìn)一步地,在線升級系統(tǒng)通過將0x0000_0000地址映射到BLROM或APPROM的起始地址,并且,系統(tǒng)從0x0000_0000開始啟動,其中,當(dāng)BF=0,CPU從BLROM啟動時,其地址映射如圖4A所示,當(dāng)BF=1,CPU從APPROM啟動時,其地址映射如圖4B所示。
[0046]在本發(fā)明的一個實施例中,如圖5所示,ISP控制器201包括ISP控制寄存器(ISP_CTRL Register) 2011、ISP 地址寄存器(ISP_ADDR Register) 2012、ISP 數(shù)據(jù)寄存器(ISP_DATA Register) 2013、ISP 命令寄存器(ISP_CMD Register) 2014 和 ISP 觸發(fā)寄存器(ISP_TRIG Register) 2015,其中,ISP控制寄存器2011用于使能ISP控制器201,ISP地址寄存器2012用于寫入操作地址,ISP數(shù)據(jù)寄存器2013用于寫入操作數(shù)據(jù),ISP命令寄存器2014用于寫入操作命令,ISP觸發(fā)寄存器2015用于觸發(fā)ISP控制器201對存儲器10進(jìn)行在線升級操作。ISP控制器201通過ISP觸發(fā)寄存器2015控制主控制器40暫停,在對存儲器10進(jìn)行在線升級操作完成之后,清空ISP觸發(fā)寄存器2015。
[0047]優(yōu)選地,在本發(fā)明的一個實施例中,如圖5所示,ISP控制器201還包括處理器2016,用于處理ISP控制器201各寄存器中數(shù)據(jù)的讀、寫以及擦除。
[0048]具體地,如圖5所示,當(dāng)ISP控制器201開始操作存儲器10的時候,CPU向ISP觸發(fā)寄存器2015中的GO位寫1,從而強(qiáng)制性拉低主控制器40的管腳HREADY的電位以暫停主控制器40,此時主控制器40停止所有的取指、響應(yīng)中斷(包括匪I中斷)等操作,以防止主控制器40從存儲器10中取不到指令而產(chǎn)生嚴(yán)重的錯誤,同時在在線升級程序中插入ISB指令;以及
[0049]當(dāng)ISP命令寄存器2014在對存儲器10的操作完成后,將對GO硬件清零,即清空ISP觸發(fā)寄存器2015使G0=0,并執(zhí)行ISB指令清空流水線以恢復(fù)主控制器40暫停前的進(jìn)程,以上操作過程如圖6所示。
[0050]進(jìn)一步地,在本發(fā)明的實施例中,存儲器10可以為FLASH存儲器??蛇x地,主控制器40可以為Cortex M系列心片。
[0051]本發(fā)明實施例的在線升級系統(tǒng),與傳統(tǒng)技術(shù)不同的是,用戶可以完全根據(jù)需要的在線升級端口,自己編寫在線升級軟件以定義CPU與上位機(jī)之間的通信協(xié)議,從而匹配上位機(jī),而不是固定的通信端口和專用的命令,并且,通過CPU執(zhí)行在線升級程序以及與上位機(jī)進(jìn)行通信以獲取在線升級的命令或數(shù)據(jù)以控制ISP控制器來控制在線升級的過程,同時在在線升級過程中的每一步都設(shè)置相應(yīng)的標(biāo)志位,以確保正確執(zhí)行每個步驟,提高在線升級的可靠性,即便是在更新用戶程序的過程中意外斷電的情況下,也能夠保證系統(tǒng)在重新上電后,仍然能夠再次進(jìn)入在線升級過程,以保證系統(tǒng)的正常運(yùn)行,因此該系統(tǒng)兼容性好,可靠性高,便于需要自己定義在線升級軟件以及對MCU通信端口使用數(shù)量要求嚴(yán)格的用戶使用。
[0052]此外,如圖7所示,本發(fā)明的實施例提出一種在線升級方法,包括如下步驟:
[0053]SI,獲取在線升級程序。
[0054]S2,將在線升級程序?qū)懭胫链鎯ζ鞯膯右龑?dǎo)程序區(qū)中,其中,主控制器分別通過存儲控制器和系統(tǒng)編程ISP控制器與存儲器相連。
[0055]S3,ISP控制器通過主控制器接收在線升級指令,并執(zhí)行啟動引導(dǎo)程序區(qū)中的在線升級程序。
[0056]S4,主控制器從上位機(jī)獲取在線升級命令或數(shù)據(jù),并將在線升級命令或數(shù)據(jù)寫入至ISP控制器。
[0057]S5,ISP控制器暫停主控制器,并根據(jù)在線升級命令或數(shù)據(jù)對存儲器進(jìn)行相應(yīng)操作。
[0058]S6,當(dāng)ISP控制器對存儲器進(jìn)行在線升級操作完成之后,ISP控制器釋放對主控制器的暫停。
[0059]在本發(fā)明的一個實施例中,根據(jù)二次開發(fā)用戶需要升級的通信端口和需要升級的軟件生成啟動引導(dǎo)程序BOOT以及ISP在線升級程序,即完成步驟SI。
[0060]在進(jìn)入步驟S2后,將以上啟動引導(dǎo)程序BOOT以及ISP在線升級程序通過通信端口寫入存儲器的啟動引導(dǎo)程序區(qū)BLROM中,完成步驟S2。
[0061]在進(jìn)入步驟S3后,主控制器CPU根據(jù)標(biāo)志位CBF和BF進(jìn)行地址映射以從BLROM啟動或從APPROM啟動,若需要在線升級,CPU將調(diào)用ISP在線升級程序,從而進(jìn)入步驟S4。
[0062]在進(jìn)入步驟S4后,CPU將與上位機(jī)進(jìn)行通信以獲取在線升級命令或數(shù)據(jù),并且將在線升級命令或數(shù)據(jù)寫入至ISP控制器中。
[0063]在進(jìn)入步驟S5后,CPU向ISP觸發(fā)寄存器中的GO位寫I以暫停CPU對存儲器的操作,同時添加ISB指令,并且觸發(fā)ISP控制器以根據(jù)在線升級命令或數(shù)據(jù)對存儲器進(jìn)行相應(yīng)操作,當(dāng)操作完成后,硬件清零GO信號并執(zhí)行ISB指令,以釋放對CPU的暫停,恢復(fù)CPU暫停前的進(jìn)程。
[0064]此外,在本發(fā)明的一個實施例中,存儲控制器中集成有ISP控制器,這是由于ISP控制器是對存儲器進(jìn)行在線升級,也就是對存儲器進(jìn)行擦除和讀寫操作,該功能與存儲控制器的功能類似,故在存儲控制器中集成ISP控制器可以共用存儲控制器的部分操作功能,兼容性更好。
[0065]在本發(fā)明的一個實施例中,存儲器包括啟動引導(dǎo)程序區(qū)(BLR0M,Bootloader ROM)以及用戶程序區(qū)(APPROM, Applicat1n ROM)。可選地,存儲器還可以包括RAM (RandomAccess Memory,隨機(jī)存儲器)。其中,BLROM可以為4KB,APPROM可以為60KB,RAM可以為4KB。
[0066]在本發(fā)明的一個實施例中,在存儲器的用戶程序區(qū)中設(shè)置有標(biāo)志位區(qū),標(biāo)志位區(qū)中的標(biāo)志位用于標(biāo)志從啟動引導(dǎo)程序區(qū)或用戶程序區(qū)啟動。標(biāo)志位區(qū)可以設(shè)置在APPROM的末端。
[0067]其中,BLROM用于存儲啟動引導(dǎo)程序(Boot Program)以及在線升級程序(ISPProgram) ,APPROM用于存儲用戶程序(Applicat1n Program)、ISP檢測程序(ISP DetectorProgram)以及標(biāo)志位,啟動引導(dǎo)程序可用BOOT表示,在線升級程序可用ISP表示。
[0068]可選地,在本發(fā)明的一個實施例中,主控制器與上位機(jī)間的通信端口可以為UART通信端口或CAN通信端口,也可以為其它通信端口,例如,調(diào)試接口 JTAG (Joint TestAct1n Group)。
[0069]可選地,在本發(fā)明的一個實施例中,標(biāo)志位區(qū)中的標(biāo)志位可以為CBF(Chip BootFlag,芯片啟動標(biāo)志位)標(biāo)志位和ISP升級標(biāo)志位(ISPS),其中CBF標(biāo)志位用于標(biāo)志在線升級系統(tǒng)上電復(fù)位以及系統(tǒng)復(fù)位以后的啟動方式,并且當(dāng)CBF=I時,在線升級系統(tǒng)在上電復(fù)位以及系統(tǒng)復(fù)位后將從BLROM啟動;當(dāng)CBF=O時,在線升級系統(tǒng)在上電復(fù)位以及系統(tǒng)復(fù)位后將從APPROM啟動。
[0070]ISPS標(biāo)志位用于標(biāo)志在線升級系統(tǒng)當(dāng)前是否需要升級以及升級是否完成等狀態(tài),可選地,ISPS可用2個二進(jìn)制位來表示,其中:
[0071]當(dāng)BOOT程序檢測到ISPS=Il時,標(biāo)志系統(tǒng)的APPROM當(dāng)前空白,當(dāng)前需要ISP程序下載用戶程序到APPROM中,其在線升級模式如圖3 (I)所示;
[0072]當(dāng)BOOT程序檢測到ISPS=Ol時,標(biāo)志系統(tǒng)的上次的在線升級未完成,當(dāng)前需要升級,即需要ISP程序更新用戶程序,CPU調(diào)用ISP程序來更新APPROM中的用戶程序和ISP檢測程序,其在線升級模式如圖3 (2)所示;
[0073]當(dāng)BOOT程序檢測到ISPS=1時,標(biāo)志系統(tǒng)當(dāng)前無需在線升級;
[0074]當(dāng)BOOT程序檢測到ISPS=OO時,標(biāo)志狀態(tài)錯誤,CPU將向主程序報錯,并且由用戶程序處理,系統(tǒng)當(dāng)前無需在線升級。
[0075]也就是說,在ISPS=Il或ISPS=Ol時,系統(tǒng)當(dāng)前需要在線升級,以及
[0076]在ISPS=1或ISPS=OO時,系統(tǒng)當(dāng)前無需在線升級,并且當(dāng)系統(tǒng)有在線升級需求時,需要在更新用戶程序前將標(biāo)志位ISPS置為01,以確保當(dāng)系統(tǒng)出現(xiàn)異常情況而不能完成當(dāng)前在線升級過程時,下一次系統(tǒng)上電復(fù)位或者系統(tǒng)復(fù)位后仍然能夠正常進(jìn)入在線升級過程,例如,如果在更新用戶程序的過程中意外斷電,由于在更新用戶程序前已將標(biāo)志位ISPS置為01,因此在系統(tǒng)重上電后仍然能夠重新進(jìn)入在線升級過程,從而再次進(jìn)行用戶程序更新;同時,在系統(tǒng)通過通信端口(例如JTAG)完成在線升級后,需要將標(biāo)志位ISPS置為10以及標(biāo)志位CBF置為O,以防止系統(tǒng)重上電后從BLROM啟動和再次在線更新用戶程序。
[0077]進(jìn)一步地,在本發(fā)明的一個實施例中,在線升級系統(tǒng)還設(shè)置升級標(biāo)志保護(hù)位以防止升級標(biāo)志位被誤操作,而且,當(dāng)升級標(biāo)志保護(hù)位有效時,不能對升級標(biāo)志位進(jìn)行擦除和寫入等操作。
[0078]此外,在本發(fā)明的一個實施例中,在線升級系統(tǒng)還包括BF (Boot Flag,啟動標(biāo)志位)標(biāo)志位,用于標(biāo)志軟件復(fù)位SRST (Software Reset,即除上電復(fù)位和系統(tǒng)復(fù)位以外的其它復(fù)位)后的啟動方式,其中,BF標(biāo)志位在BF寄存器中,并且,當(dāng)BF=I時,在線升級系統(tǒng)在軟件復(fù)位后從APPROM啟動;當(dāng)BF=O時,在線升級系統(tǒng)在軟件復(fù)位后從BLROM啟動。
[0079]具體地,在本發(fā)明的一個實施例中,在線升級系統(tǒng)上電復(fù)位以及系統(tǒng)復(fù)位后,將清除BF寄存器,存儲控制器將CBF位讀出,進(jìn)行取反之后寫入至BF寄存器中以標(biāo)志系統(tǒng)從BLROM啟動或從APPROM啟動,系統(tǒng)在在線升級系統(tǒng)進(jìn)行軟件復(fù)位后,軟件寫入的BF標(biāo)志位用于標(biāo)志系統(tǒng)從BLROM啟動或從APPROM啟動,并且此時的BF標(biāo)志位不能根據(jù)CBF取反之后的值來改變,因此,可以說,整個在線升級系統(tǒng)都是通過BF標(biāo)志位來標(biāo)志系統(tǒng)從BLROM啟動或從APPROM啟動。
[0080]進(jìn)一步地,在線升級系統(tǒng)通過將0x0000_0000地址映射到BLROM或APPROM的起始地址,并且,系統(tǒng)從0x0000_0000開始啟動。
[0081]在本發(fā)明的一個實施例中,ISP控制器包括ISP控制寄存器(ISP_CTRLRegister)、ISP 地址寄存器(ISP_ADDR Register)、ISP 數(shù)據(jù)寄存器(ISP_DATA Register)、ISP 命令寄存器(ISP_CMD Register)和 ISP 觸發(fā)寄存器(ISP_TRIG Register),其中,ISP控制寄存器用于使能ISP控制器,ISP地址寄存器用于寫入操作地址,ISP數(shù)據(jù)寄存器用于寫入操作數(shù)據(jù),ISP命令寄存器用于寫入操作命令,ISP觸發(fā)寄存器用于觸發(fā)ISP控制器對存儲器進(jìn)行在線升級操作,ISP控制器通過ISP觸發(fā)寄存器控制主控制器暫停,在對存儲器進(jìn)行在線升級操作完成之后,清空ISP觸發(fā)寄存器。
[0082]優(yōu)選地,在本發(fā)明的一個實施例中,ISP控制器還包括處理器,用于處理ISP控制器各寄存器中數(shù)據(jù)的讀、寫以及擦除。
[0083]具體地,當(dāng)ISP控制器開始操作存儲器的時候,CPU向ISP觸發(fā)寄存器中的GO位寫I,從而強(qiáng)制性拉低CPU的管腳HREADY的電位以暫停CPU,此時CPU停止所有的取指、響應(yīng)中斷(包括WI中斷)等操作,以防止CPU從存儲器中取不到指令而產(chǎn)生嚴(yán)重的錯誤,同時在在線升級程序中插入ISB指令;以及
[0084]當(dāng)ISP命令寄存器在對存儲器的操作完成后,將對GO硬件清零,即清空ISP觸發(fā)寄存器使G0=0,并執(zhí)行ISB指令以恢復(fù)CPU暫停前的進(jìn)程。
[0085]進(jìn)一步地,在本發(fā)明的實施例中,存儲器可以為FLASH存儲器。可選地,主控制器CPU可以為Cortex M系列芯片。
[0086]如圖8所示,根據(jù)本發(fā)明實施例的在線升級方法的具體過程包括如下步驟:
[0087]S801,上電復(fù)位。在上電復(fù)位結(jié)束后,在線升級系統(tǒng)的硬件將自動從FLASH中將CBF啟動標(biāo)志位讀出,并且,取反后寫入BF寄存器;
[0088]S802:判斷BF標(biāo)志位。如果BF=0,則執(zhí)行步驟S803,如果BF=1,則執(zhí)行步驟S814 ;
[0089]S803, CPU從BLROM啟動,并且運(yùn)行BLROM里面的BOOT程序以及讀取升級標(biāo)志位ISPS,進(jìn)入下一步驟S804。
[0090]S804,判斷升級標(biāo)志位ISPS,如果升級標(biāo)志位ISPS=1或00,表示本次不需要升級APPR0M,進(jìn)入步驟S805。如果升級標(biāo)志位ISPS=Il或01,表示本次需要升級APPR0M,進(jìn)入步驟 S806。
[0091]S805,設(shè)置 BF=I,寫 SRST=I,軟件復(fù)位。
[0092]S806,執(zhí)行BLROM中的ISP在線升級程序,初始化通信端口,進(jìn)入下一步驟S807。
[0093]S807,與上位機(jī)通信,從通信端口 CAN/UART接收命令或數(shù)據(jù),接收到的命令或數(shù)據(jù)存放在RAM中,進(jìn)入下一步驟S808。
[0094]S808, CPU控制ISP控制器,對FLASH進(jìn)行讀、擦除、寫操作。
[0095]S809,判斷失敗標(biāo)志位FF,如果FF=0,則進(jìn)入步驟S810,如果FF=1,則進(jìn)入步驟S814。
[0096]S810,判斷升級是否完成,如果是,則進(jìn)入步驟S811,如果否,則進(jìn)入步驟S807。
[0097]S811,CPU控制ISP控制器,置升級標(biāo)志位ISPS為完成狀態(tài)和從APPROM啟動(ISPS=1 和 CBF=O),進(jìn)入下一步驟 S812。
[0098]S812,設(shè)置 BF=1,進(jìn)入下一步驟 S813。
[0099]S813,寫 SRST=I,軟件復(fù)位。
[0100]S814,報告上位機(jī),進(jìn)入步驟S813。
[0101]S815, CPU 從 APPROM 啟動,進(jìn)入下一步驟 S815。
[0102]S816,運(yùn)行用戶程序,進(jìn)入下一步驟S816。
[0103]S817,檢測是否需要在線升級。如果是,則進(jìn)入步驟S818,如果否,則進(jìn)入步驟S817。
[0104]S818,CPU操控ISP控制器,置升級標(biāo)志位ISPS為完成狀態(tài)和從APPROM啟動(ISPS=Ol 和 CBF=I),進(jìn)入下一步驟 S819。
[0105]S819,設(shè)置 BF=I,寫 SRST=I,軟件復(fù)位。
[0106]具體地,在本發(fā)明的一個實施例中,如圖9所示,步驟S808中,CPU控制ISP控制器以對FLASH進(jìn)行讀、擦除、寫操作,具體控制流程如下:
[0107]S90LCPU向ISP控制器中的ISP控制寄存器中的ISPEN寫1,使能ISP控制器,進(jìn)入下一步驟S902。
[0108]S902,CPU分別向ISP地址寄存器中寫入操作地址,向ISP數(shù)據(jù)寄存器中寫入操作數(shù)據(jù),向ISP命令寄存器中寫入操作命令,以及向ISP觸發(fā)寄存器的GO位寫I以暫停CPU并添加ISB指令,進(jìn)入下一步驟S903。
[0109]S903,ISP控制器根據(jù)命令對FLASH存儲體執(zhí)行擦除、讀寫等相關(guān)操作,如果當(dāng)前在線升級失敗,硬件置ISP狀態(tài)寄存器中的升級失敗標(biāo)志位FF(Failed Flag,失敗標(biāo)志位)為1,進(jìn)入下一步驟S904。
[0110]S904,判斷GO信號。如果G0=0,則進(jìn)入步驟S905,如果GO=I,則進(jìn)入步驟S903。
[0111]S905,對 FLASH 操作完成。
[0112]S906,讀取ISP數(shù)據(jù)寄存器的數(shù)據(jù)和失敗標(biāo)志位FF。
[0113]S907,判斷ISP控制器的操作是否完成。如果是,則進(jìn)入步驟S908,如果否,則進(jìn)入步驟S902。
[0114]S908,ISP控制器的操作完成。
[0115]綜上所述,本發(fā)明實施例提出的在線升級方法,可以由用戶自己定義在線升級的端口和軟件,并且通過CPU執(zhí)行程序來控制MCU中用戶程序的在線升級過程,同時設(shè)置相應(yīng)的標(biāo)志位以確保正確執(zhí)行每個步驟,因此兼容性好,可靠性高,便于需要自己定義在線升級軟件以及對MCU通信端口使用數(shù)量要求嚴(yán)格的用戶使用。
[0116]根據(jù)本發(fā)明實施例的在線升級方法,用戶可以完全根據(jù)需要的在線升級端口和在線升級軟件定義CPU與上位機(jī)之間的通信協(xié)議,以匹配現(xiàn)有的上位機(jī),從而進(jìn)行在線升級,并且該升級方法通過CPU接收上位機(jī)的在線升級指令或數(shù)據(jù)以及控制ISP控制器來控制MCU中用戶程序的在線升級過程,同時在用戶程序區(qū)設(shè)置有標(biāo)志位區(qū)以標(biāo)志升級過程中的每個狀態(tài),可以確保在線升級的每個步驟得以正確執(zhí)行,提高在線升級的可靠性,因此該方法兼容性好,可靠性高,便于需要自己定義在線升級軟件以及對MCU通信端口使用數(shù)量要求嚴(yán)格的用戶使用。
[0117]在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何的一個或多個實施例或示例中以合適的方式結(jié)合。
[0118]盡管已經(jīng)示出和描述了本發(fā)明的實施例,對于本領(lǐng)域的普通技術(shù)人員而言,可以理解在不脫離本發(fā)明的原理和精神的情況下可以對這些實施例進(jìn)行多種變化、修改、替換和變型,本發(fā)明的范圍由所附權(quán)利要求及其等同限定。
【權(quán)利要求】
1.一種在線升級方法,其特征在于,包括以下步驟: 獲取在線升級程序; 將所述在線升級程序?qū)懭胫链鎯ζ鞯膯右龑?dǎo)程序區(qū)中,其中,主控制器分別通過存儲控制器和ISP (In System Program,在系統(tǒng)編程)控制器與所述存儲器相連; 所述ISP控制器通過所述主控制器接收在線升級指令,并執(zhí)行所述啟動引導(dǎo)程序區(qū)中的在線升級程序; 所述主控制器從上位機(jī)獲取在線升級命令或數(shù)據(jù),并將所述在線升級命令或數(shù)據(jù)寫入至所述ISP控制器; 所述ISP控制器暫停所述主控制器,并根據(jù)所述在線升級命令或數(shù)據(jù)對所述存儲器進(jìn)行相應(yīng)操作;以及 當(dāng)所述ISP控制器對所述存儲器進(jìn)行在線升級操作完成之后,所述ISP控制器釋放對所述主控制器的暫停。
2.如權(quán)利要求1所述的方法,其特征在于,所述存儲控制器中集成有所述ISP控制器。
3.如權(quán)利要求1所述的方法,其特征在于,在所述存儲器的用戶程序區(qū)中設(shè)置有標(biāo)志位區(qū),所述標(biāo)志位區(qū)中的標(biāo)志位用于標(biāo)志從所述啟動引導(dǎo)程序區(qū)或所述用戶程序區(qū)啟動。
4.如權(quán)利要求1所述的方法,其特征在于,所述ISP控制器包括ISP控制寄存器、ISP地址寄存器、ISP數(shù)據(jù)寄存器、ISP命令寄存器和ISP觸發(fā)寄存器,其中,所述ISP控制寄存器用于使能所述ISP控制器,所述ISP地址寄存器用于寫入操作地址,所述ISP數(shù)據(jù)寄存器用于寫入操作數(shù)據(jù),所述ISP命令寄存器用于寫入操作命令,所述ISP觸發(fā)寄存器用于觸發(fā)所述ISP控制器對所述存儲器進(jìn)行在線升級操作。
5.如權(quán)利要求4所述的方法,其特征在于,所述ISP控制器通過所述ISP觸發(fā)寄存器控制所述主控制器暫停,在對所述存儲器進(jìn)行在線升級操作完成之后,清空所述ISP觸發(fā)寄存器。
6.如權(quán)利要求1所述的方法,其特征在于,所述存儲器為FLASH存儲器。
7.—種在線升級系統(tǒng),其特征在于,包括: 存儲器,設(shè)置有啟動引導(dǎo)程序區(qū); 存儲控制器和ISP控制器; 上位機(jī),用于獲取在線升級程序,并將所述在線升級程序?qū)懭胫链鎯ζ鞯膯右龑?dǎo)程序區(qū)中; 主控制器,所述主控制器分別通過存儲控制器和ISP控制器與所述存儲器相連,所述主控制器與所述上位機(jī)進(jìn)行通信,用于從所述上位機(jī)獲取在線升級指令,并根據(jù)所述在線升級指令執(zhí)行所述啟動引導(dǎo)程序區(qū)中的在線升級程序,以及從所述上位機(jī)獲取在線升級命令或數(shù)據(jù),并將所述在線升級命令或數(shù)據(jù)寫入至所述ISP控制器, 其中,所述ISP控制器,用于暫停所述主控制器,并根據(jù)所述在線升級命令或數(shù)據(jù)對所述存儲器進(jìn)行操作存儲器進(jìn)行相應(yīng)操作,以及當(dāng)所述ISP控制器對所述存儲器進(jìn)行在線升級操作完成之后,所述ISP控制器釋放對所述主控制器的暫停。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述存儲控制器中集成有所述ISP控制器。
9.如權(quán)利要求7所述的系統(tǒng),其特征在于,在所述存儲器的用戶程序區(qū)中設(shè)置有標(biāo)志位區(qū),所述標(biāo)志位區(qū)中的標(biāo)志位用于標(biāo)志從所述啟動引導(dǎo)程序區(qū)或所述用戶程序區(qū)啟動。
10.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述ISP控制器包括ISP控制寄存器、ISP地址寄存器、ISP數(shù)據(jù)寄存器、ISP命令寄存器和ISP觸發(fā)寄存器,其中,所述ISP控制寄存器用于使能所述ISP控制器,所述ISP地址寄存器用于寫入操作地址,所述ISP數(shù)據(jù)寄存器用于寫入操作數(shù)據(jù),所述ISP命令寄存器用于寫入操作命令,所述ISP觸發(fā)寄存器用于觸發(fā)所述ISP控制器對所述存儲器進(jìn)行在線升級操作,所述ISP控制器通過所述ISP觸發(fā)寄存器控制所述主控制器暫停,在對所述存儲器進(jìn)行在線升級操作完成之后,清空所述ISP觸發(fā)寄存器。
【文檔編號】G06F9/445GK104423984SQ201310386007
【公開日】2015年3月18日 申請日期:2013年8月29日 優(yōu)先權(quán)日:2013年8月29日
【發(fā)明者】陸青, 郭平日, 楊云 申請人:比亞迪股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
丽水市| 阳东县| 兴海县| 亚东县| 临海市| 邳州市| 三台县| 格尔木市| 荥经县| 黑水县| 延庆县| 罗城| 恭城| 安宁市| 繁昌县| 如东县| 贡山| 梓潼县| 农安县| 石柱| 罗源县| 江陵县| 锦屏县| 绥德县| 沧州市| 定远县| 贺州市| 青川县| 台南县| 金门县| 肇源县| 忻州市| 金山区| 嵊州市| 长兴县| 隆林| 台南市| 栾川县| 丁青县| 辛集市| 桓台县|