亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種實現(xiàn)單片機閃存動態(tài)更新的方法

文檔序號:6526132閱讀:251來源:國知局
專利名稱:一種實現(xiàn)單片機閃存動態(tài)更新的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種用于對單片機應(yīng)用系統(tǒng)的閃存(Flash)進行遠程動態(tài)更新的方法。尤其涉及適用于8051單片機應(yīng)用領(lǐng)域的Flash更新。
背景技術(shù)
8051及與其兼容的系列單片機作為工業(yè)的標準地位,廣泛應(yīng)用于各類電器及通訊產(chǎn)品中。一般說來單片機使用內(nèi)部的Flash來裝載BOOT程序和應(yīng)用程序,并且這兩部分都分配有獨立的空間。其中BOOT是引導程序存儲在BOOT區(qū),它的主要作用是對版本區(qū)的應(yīng)用程序進行更新,以適應(yīng)每次應(yīng)用程序升級的需要;而BOOT程序的更新通常是通過燒錄器將其直接燒錄到Flash的BOOT區(qū)中的。由于BOOT程序?qū)儆谲浖懂?,因此不可避免的存在一些不完善的地方,這就需要更新BOOT程序來解決問題。如果程序代碼存放在外部Flash中,實現(xiàn)程序代碼升級直接對Flash進行操作即可;但對于單片機內(nèi)部的程序代碼,則需要通過IAP(In-Application-Programming)或ISP(In-System-Programming)方式實現(xiàn)。傳統(tǒng)意義上的BOOT更新方式是將單片機從設(shè)備中取出,在燒錄器上重新進行燒錄,這樣就涉及到設(shè)備的多次拆裝,同時影響設(shè)備的穩(wěn)定性也浪費了大量的人力和物力;并且對于應(yīng)用程序的更新通常采用的是芯片自帶的BOOT程序不具有通用性。

發(fā)明內(nèi)容
本發(fā)明目的在于提供一種實現(xiàn)對單片機Flash進行遠程動態(tài)更新的方法,用以克服目前情況下更新BOOT或應(yīng)用程序需要將單片機從設(shè)備中取出然后通過燒錄器來更新的弊端。
本發(fā)明的技術(shù)方案為將下載啟動模塊,狀態(tài)切換模塊,狀態(tài)控制模塊,F(xiàn)lash操作模塊,程序獲取模塊,數(shù)據(jù)接收模塊各功能模塊分別封裝到單片機的源Flash區(qū);由下載啟動模塊啟動下載模式并通知狀態(tài)切換模塊;狀態(tài)切換模塊根據(jù)收到的下載指令來切換到單片機的不同運行狀態(tài);由狀態(tài)控制模塊設(shè)置待更新的目的Flash區(qū)域,由數(shù)據(jù)接收模塊獲取更新的分組數(shù)據(jù),再由程序獲取模塊從數(shù)據(jù)接收模塊中取出分組數(shù)據(jù)讀入緩存,然后調(diào)用Flash操作模塊中的Flash操作指令將數(shù)據(jù)寫入到目的Flash中,完成更新。
這種Flash雙向動態(tài)更新的方法,采用模塊化的思想將實現(xiàn)過程各步驟進行封裝,在不同的地方使用時只需要將模塊嵌入即可,具有很強的通用性、可擴展性和可移植性。它可以應(yīng)用于任何可以提供IAP或ISP操作的單片機系統(tǒng)。


圖1是本發(fā)明單片機Flash更新方法結(jié)構(gòu)示意2是本發(fā)明單片機Flash更新方法實施例實現(xiàn)流程圖具體實施方式
本發(fā)明的要點是將下載啟動模塊,狀態(tài)切換模塊,狀態(tài)控制模塊,F(xiàn)lash操作模塊,程序獲取模塊,數(shù)據(jù)接收模塊分別封裝到單片機源Flash區(qū)域。如圖1所示下載啟動模塊負責單片機下載模式的啟動,這里主要是指啟動下載BOOT還是下載應(yīng)用程序,它以消息的形式通知狀態(tài)切換模塊。通常它的實現(xiàn)方式是以后臺界面的形式出現(xiàn)。
對狀態(tài)切換模塊,在這里我們首先定義單片機運行的兩種狀態(tài)。第一是BOOT態(tài),它是指單片機從BOOT區(qū)啟動,從裝載BOOT的Flash的起始地址開始取指令執(zhí)行BOOT程序;第二是應(yīng)用態(tài),指單片機上電后從應(yīng)用程序的Flash的起始地址開始取指令運行應(yīng)用程序代碼。這兩種狀態(tài)對單片機來說是可控的,狀態(tài)切換模塊完成的主要工作是在收到啟動模塊發(fā)來的相應(yīng)的下載指令來切換到單片機的不同運行狀態(tài)。當前單片機狀態(tài)與下載狀態(tài)相同是時,不切換;如果不同,則切換。
狀態(tài)控制模塊,該模塊主要是設(shè)置不同的待更新的目的Flash區(qū)域。如果是BOOT態(tài),需要更新應(yīng)用程序部分,如果是應(yīng)用態(tài),需要更新BOOT部分。
數(shù)據(jù)接收模塊,在狀態(tài)確定后就可以啟動數(shù)據(jù)接收模塊來獲取分組數(shù)據(jù)了,該模塊可以根據(jù)不同的協(xié)議來完成,它提供的是一個通用的對外接口,主要用來獲得更新的分組數(shù)據(jù)。
程序獲取模塊,該模塊的作用是從數(shù)據(jù)接收模塊中取出一分組數(shù)據(jù)讀入緩存,然后調(diào)用Flash操作模塊中的Flash操作指令將數(shù)據(jù)寫入到待更新的目的Flash區(qū)域中,完成更新。
Flash操作模塊負責根據(jù)不同型號的單片機,來封裝Flash操作的指令,包括Flash的讀、寫、擦除和校驗等。以實現(xiàn)對目的Flash區(qū)域的更新。
下面在3G無線通信系統(tǒng)中以應(yīng)用8051系列單片機的單板為例描述用本專利方法進行Flash更新的過程。這里以SST89V564RD單片機為例,這款單片機內(nèi)部Flash分為Block0和Block1兩部分,Block0是用來保存應(yīng)用程序的64k區(qū)域,Block1是用來保存BOOT程序的8k區(qū)域。。
單板的主要硬件包括8051單片機SST89V564RD和一些相關(guān)的外圍電路和器件。單片機第一次使用時需要進行燒錄。一般是將BOOT區(qū)和應(yīng)用程序區(qū)都進行燒錄。默認的工作狀態(tài)是單片機上電后先進入BOOT態(tài)等待10秒鐘后進入應(yīng)用態(tài),正常運行時候是處在應(yīng)用態(tài)的。
如圖2所示1、10秒后,首先進行單片機的上電后的系統(tǒng)初始化。
2、運行正常應(yīng)用程序,如果收到下載啟動消息,根據(jù)啟動消息類型判斷是哪種下載,BOOT下載或應(yīng)用程序下載。
3、進行單片機狀態(tài)切換,如果進行BOOT下載,保持當前狀態(tài);如果進行應(yīng)用程序下載,則切換到BOOT態(tài)下運行。
4、狀態(tài)切換完成后,保持當前狀態(tài)并進行待更新的目的Flash區(qū)寄存器的設(shè)置,同時進入數(shù)據(jù)監(jiān)聽串口數(shù)據(jù)狀態(tài)。
5、監(jiān)聽下載數(shù)據(jù),在數(shù)據(jù)接收模塊進行分組處理。
6、獲取分組數(shù)據(jù)存入緩存中,并調(diào)用Flash操作模塊的指令,將該緩存中的分組數(shù)據(jù)刷新到待更新的目的Flash區(qū)域中。
7、檢查下載文件是否下發(fā)完畢,如果完畢并且寫入成功則返回成功結(jié)果,否則返回失敗結(jié)果;如果未發(fā)送完畢重復5、6步驟直到結(jié)束。
開始下載的時候,也可以啟動定時器,如果下載時間超過預先設(shè)定的時間,可以返回失敗結(jié)果,結(jié)束下載。
本發(fā)明提出了一種單片機Flash動態(tài)更新的方法,它可以對單片機不同的Flash區(qū)域進行動態(tài)更新。BOOT區(qū)和應(yīng)用程序區(qū)是經(jīng)常用到并且需要更新的區(qū)域,通過BOOT區(qū)完成對應(yīng)用程序存儲區(qū)Flash的動態(tài)更新;通過在應(yīng)用程序區(qū)來完成BOOT區(qū)的更新。同時獨立封裝數(shù)據(jù)接收模塊,這樣可以通過各種方式來獲取下載的文件數(shù)據(jù)方便在各個系統(tǒng)中的實現(xiàn)。該方法提出了一種雙BOOT更新模式,即用原有的BOOT區(qū)來更新應(yīng)用程序區(qū),同時又在應(yīng)用程序區(qū)中的應(yīng)用程序中嵌入下載BOOT功能的模式,實現(xiàn)了單片機所有Flash的動態(tài)更新并且解決了傳統(tǒng)單片機的BOOT更新不能下載的弊端。
權(quán)利要求
1.一種實現(xiàn)單片機閃存動態(tài)更新的方法,將下載啟動模塊,狀態(tài)切換模塊,狀態(tài)控制模塊,閃存操作模塊,程序獲取模塊,數(shù)據(jù)接收模塊各功能模塊分別封裝到單片機的源閃存區(qū)域;由下載啟動模塊啟動下載模式并通知狀態(tài)切換模塊;狀態(tài)切換模塊根據(jù)收到的下載指令來切換到單片機的不同運行狀態(tài);由狀態(tài)控制模塊設(shè)置待更新的目的閃存區(qū)域,由數(shù)據(jù)接收模塊獲取更新的分組數(shù)據(jù),再由程序獲取模塊從數(shù)據(jù)接收模塊中取出分組數(shù)據(jù)讀入緩存,然后調(diào)用閃存操作模塊中的閃存操作指令將數(shù)據(jù)寫入到目的閃存區(qū)域中,完成更新。
2.權(quán)利要求1所述的實現(xiàn)單片機閃存動態(tài)更新的方法,其特征在于,所述狀態(tài)切換模塊切換到不同運行狀態(tài),是指判斷當前單片機狀態(tài)是否與下載狀態(tài)相同,如果不同,則切換。
3.權(quán)利要求1所述的實現(xiàn)單片機閃存動態(tài)更新的方法,其特征在于,在下載數(shù)據(jù)后檢查數(shù)據(jù)是否下載完畢,若未下載完畢,則繼續(xù)下載過程直到下載完畢后返回下載結(jié)果并進行狀態(tài)切換。
全文摘要
一種實現(xiàn)單片機閃存動態(tài)更新的方法,將下載啟動模塊,狀態(tài)切換模塊,狀態(tài)控制模塊,F(xiàn)lash操作模塊,程序獲取模塊,數(shù)據(jù)接收模塊分別封裝到單片機的源Flash區(qū);由下載啟動模塊啟動下載模式并通知狀態(tài)切換模塊;狀態(tài)切換模塊根據(jù)收到的下載指令來切換到不同運行狀態(tài);由狀態(tài)控制模塊設(shè)置待更新的目的Flash區(qū)域,由數(shù)據(jù)接收模塊獲取更新的分組數(shù)據(jù),再由程序獲取模塊取出分組數(shù)據(jù)讀入緩存,然后調(diào)用Flash操作模塊中的Flash操作指令將數(shù)據(jù)寫入到目的Flash中,完成更新。本發(fā)明將實現(xiàn)過程各步驟進行封裝,在不同的地方使用時只需要將模塊嵌入即可,具有很強的通用性、可擴展性和可移植性。
文檔編號G06F12/00GK1811708SQ20051003307
公開日2006年8月2日 申請日期2005年1月28日 優(yōu)先權(quán)日2005年1月28日
發(fā)明者謝志雄, 崔卓 申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1