專利名稱:用于嵌入式微控制單元的更新程序碼方法
技術(shù)領(lǐng)域:
本發(fā)明有關(guān)一種燒錄(writer)程序的方法,特別是有關(guān)一種直接在應(yīng)用系統(tǒng)中進(jìn)行燒錄程序的方法。
一般計算機系統(tǒng)依其特性可分為可重新編程式(reprogrammable)及嵌入式(embedded)系統(tǒng)??芍匦戮幊淌较到y(tǒng)就像一般使用的個人電腦,含有可儲存大量數(shù)據(jù)的硬盤,使用者可通過鍵盤及屏幕顯示器等輸出入元件在硬盤內(nèi)存放各種不同程序,并隨時叫出來使用或更改。嵌入式系統(tǒng)即一般所稱的單芯片微處理器,是將少量的存儲器及輸出入元件都嵌入在一顆芯片里,一般都是使用燒錄器將將程序機器碼燒寫到存儲器內(nèi),使其作某一特定工作,例如工業(yè)上的微程序控制等,所以單芯片微處理器也稱為微程序控制器(microcontroller)或嵌入式微控制單元(Embedded MicrocontrollerUnit,Embedded MCU),因此,當(dāng)設(shè)計一種簡單的微電腦系統(tǒng),使用此種嵌入式微控制單元,因為省略存儲器及輸出入元件接口的界接,可簡化設(shè)計節(jié)省成本。
參閱
圖1所示的嵌入式微控制單元100的基本方塊圖,內(nèi)含微處理器(micro processor)102、程序存儲器(program memory)104和多個功能方塊(functlon block)106。數(shù)據(jù)的輸入與輸出、處理與運算,都由微處理器102依軟件程序循序執(zhí)行。一般而言,在數(shù)據(jù)載入后,微處理器102利用總線,由程序存儲器104讀取所儲存的數(shù)據(jù)與程序,經(jīng)各種指令運算,將處理結(jié)果傳送至微處理器102,再輸出至輸出裝置或驅(qū)動多個功能方塊106。
參閱圖2所示的嵌入式微控制單元應(yīng)用系統(tǒng)200的基本方塊圖,其中周邊輸入裝置202接受輸入數(shù)據(jù)后,輸入的數(shù)據(jù)經(jīng)由嵌入式微控制單元100處理與分析后,將得到的結(jié)果傳輸給功能元件204進(jìn)行操作。由于一些重要數(shù)據(jù)或程序與基本輸入、輸出(Basic Input Output Operating System,BIOS)操作系統(tǒng)等程序碼(Program code),不可隨著電源關(guān)閉而消逝,但在軟件發(fā)展或系統(tǒng)更新功能時,常需修改其中程序存儲器104的程序碼,產(chǎn)業(yè)上一般是使用快閃式可抹除且可編程只讀存儲器(Flash Eraseable andProgrammable Read Only Memory,F(xiàn)lash EPROM)來作為程序的存儲器裝置。
一般將程序碼寫入此快閃式可抹除且可編程只讀存儲器的方法有兩種,一種是將嵌入式微控制單元從系統(tǒng)中拆下并放置于燒錄器(EPROMWriter)上,將程序機器碼燒錄到此快閃式可抹除且可編程只讀存儲器,如果一切順利,將燒錄好程序碼的嵌入式微控制單元插入硬件線路中即可完成。當(dāng)發(fā)現(xiàn)所燒錄的程序碼有錯誤時,必須再重新將新的程序燒寫進(jìn)去,如此地?zé)龑懣扉W式可抹除且可編程只讀存儲器將極為不便,且燒寫過程中,需將嵌入式微控制單元拆下,勢必要停機才能進(jìn)行更新程序碼的動作,會造成生產(chǎn)線上困擾。
另外一種是在嵌入式微控制單元的應(yīng)用系統(tǒng)上直接將程序碼寫入快閃式可抹除且可編程只讀存儲器,所以并不需要將嵌入式微控制單元拆下,在燒錄過程中,應(yīng)用系統(tǒng)尚可維持基本功能;但由于在燒錄過程中,嵌入式微控制單元內(nèi)的微處理機仍繼續(xù)從程序存儲器中讀取數(shù)據(jù),若此時微處理器所讀取的數(shù)據(jù)恰好正在更新或更新至一半,微處理器所讀取到的這些數(shù)據(jù)將會造成錯誤,所以通常在進(jìn)行程序碼更新動作時,微處理機會跳出需被更新的程序存儲器,而至另一程序存儲器執(zhí)行程序,并接收燒錄數(shù)據(jù),寫入需更新的程序存儲器。由于在燒錄過程中微處理機需要參與執(zhí)行,所以會降低燒錄速度,同時因為需要另一程序存儲器供微處理機跳出時使用,因此會增加制造成本。另外一種在應(yīng)用系統(tǒng)上直接將程序碼寫入的方法,是當(dāng)嵌入式微控制單元內(nèi)的微處理器收到更新程序碼的要求后,即將嵌入式微控制單元設(shè)于復(fù)位狀態(tài)下,此時微處理器的輸出口及功能方塊無法工作,易造成整個系統(tǒng)損壞。
為解決上述燒錄過程中所發(fā)生的問題,本發(fā)明的主要目的是提供一種嵌入式微控制單元的更新程序碼方法,也就是提供一種在嵌入式微控制單元應(yīng)用系統(tǒng)上直接將程序碼寫入快閃式可抹除可編程只讀存儲器的燒錄方法。
本發(fā)明的方法是這樣實現(xiàn)的該方法至少包括下列步驟由一輸出單元輸出燒錄請求信號,通過一接口將該要求信號傳輸給一微處理器;當(dāng)該微處理器收到該請求信號后,該微處理器會進(jìn)入閑置(ldle)或暫停(Halt)狀態(tài),并將控制權(quán)交給該接口;接著,由該輸出單元通過該接口對一存儲器進(jìn)行數(shù)據(jù)直接燒錄,同時該接口會存儲該數(shù)據(jù)的校驗碼;當(dāng)燒錄完成后,該輸出單元會將該接口所存儲的該校驗碼與該輸出單元所存儲的校驗碼進(jìn)行比較;若檢查無誤,該輸出單元會經(jīng)由該接口輸出一復(fù)位(Reset)信號給該微處理器進(jìn)行復(fù)位;以及若檢查有錯誤發(fā)生,該輸出單元會重新進(jìn)行燒錄工作。
上述的輸出單元為一燒錄控制裝置,為燒錄新程序碼控制主體。上述接口為一個兩支管腳(2 Pin)的串行接口。上述的存儲器為一可抹除且可編程只讀存儲器。上述的校驗碼為一循環(huán)冗余字校驗碼,是將所要傳送或儲存的二進(jìn)制數(shù)據(jù)除以一個固定的二進(jìn)位數(shù),所得到的余數(shù)。
本發(fā)明是在嵌入式微控制單元中加入一個兩支管腳(2 Pin)的串行接口,并在嵌入式微控制單元應(yīng)用系統(tǒng)上,外接一燒錄控制裝置(ProgramControl Device)直接將程序碼寫入快閃式可抹除且可編程只讀存儲器內(nèi)。本發(fā)明應(yīng)用一串行接口進(jìn)行燒錄工作,無須經(jīng)由微處理器再將程序碼燒錄至程序存儲器中,而是直接經(jīng)由串行接口燒錄至程序存儲器中,因此燒錄所需花費的時間大大降低。此外,本發(fā)明通過一個兩支管腳的串行接口,來對程序存儲器進(jìn)行直接燒錄,由于僅使用兩支管腳,因此,控制方法極為簡單,且使用上也極為方便。
下面結(jié)合本發(fā)明的較佳實施例并輔以附圖對本發(fā)明作更詳細(xì)的闡述,其中為說明方便起見,各圖所示的相同數(shù)字代表相同的裝置。
圖1是傳統(tǒng)的嵌入式微控制單元方塊圖。
圖2是傳統(tǒng)的嵌入式微控制單元應(yīng)用系統(tǒng)方塊圖。
圖3是依據(jù)本發(fā)明的嵌入式微控制單元應(yīng)用系統(tǒng)方塊圖。
圖4是依據(jù)本發(fā)明的嵌入式微控制單元方塊圖。
本發(fā)明提供了一種解決嵌入式微控制單元在燒錄程序過程中,需要復(fù)位或停止系統(tǒng),以避免嵌入式微控制單元內(nèi)的微處理器讀取到錯誤信息的方法。本方法使得系統(tǒng)在進(jìn)行更新程序碼的燒錄處理時,仍可以確保系統(tǒng)在新舊程序碼交替更換之間不會發(fā)生錯誤。事實上,由于本發(fā)明的方法無須在燒錄處理過程中進(jìn)行復(fù)位或停止系統(tǒng),因此該應(yīng)用系統(tǒng)比較不易發(fā)生損壞。本發(fā)明是利用在嵌入式微控制單元中加入一個兩支管腳(2 Pin)的串行接口,并在嵌入式微控制單元應(yīng)用系統(tǒng)上,外接一燒錄控制裝置,當(dāng)需要進(jìn)行程序碼更新時,可經(jīng)由此外接的燒錄控制裝置,通過兩支管腳的串行接口,來對程序存儲器進(jìn)行直接燒錄,由于只使用兩支管腳,因此控制方法極為簡單,提升了燒錄的方便性。
依據(jù)本發(fā)明的較佳實施例中,本發(fā)明增加了一個兩支管腳的串行接口(2Pin Serial Interface),以隨時在需要進(jìn)行程序存儲器的機器程序碼燒錄更新工作時,由外接燒錄控制裝置(Program control Device)經(jīng)由此串行接口通知微處理系統(tǒng)即將進(jìn)行燒錄工作,此時微處理機會暫時進(jìn)入閑置(ldle)或暫停(Halt)狀態(tài),所以可以在進(jìn)行燒錄過程中避免微處理機繼續(xù)讀取程序存儲器,且由于僅使用兩支管腳,因此控制方法極為簡單,故本發(fā)明較一般利用傳統(tǒng)的嵌入式微控制單元,在進(jìn)行程序存儲器的機器程序碼燒錄更新工作時,具有較佳的效率。
依據(jù)本發(fā)明的較佳實施例,用于傳送并接收更新機器程序碼以進(jìn)行燒錄的系統(tǒng)架構(gòu)圖如圖3所示,該系統(tǒng)架構(gòu)包括應(yīng)用系統(tǒng)300,和一燒錄控制裝置(Program Control Device)302外接此應(yīng)用系統(tǒng)300,其中應(yīng)用系統(tǒng)300包括一嵌入式微控制單元(Embedded Micro controller Unit)304,一功能元件(Function Device)204,一周邊輸入裝置202。本發(fā)明使用兩支管腳串行接口(圖中未標(biāo)示出)來燒錄嵌入式微控制單元100的新程序碼。其中嵌入式微控制單元304在系統(tǒng)電源開啟后,會執(zhí)行原有程序存儲器的程序碼,可控制應(yīng)用系統(tǒng)中其他功能元件204的工作模式。應(yīng)用系統(tǒng)300外部有一燒錄控制裝置302,作為燒錄新程序碼的控制主體(Host)。周邊輸入裝置202接受輸入數(shù)據(jù)后,輸入數(shù)據(jù)經(jīng)由嵌入式微控制單元304處理與分析后,將得到的結(jié)果傳輸給功能元件204進(jìn)行運作,當(dāng)需要更新程序碼時,燒錄控制裝置302會輸出一請求(Request)給嵌入式微控制單元304,當(dāng)嵌入式微控制單元304接受后,即可進(jìn)行機器程序碼的更新動作。
嵌入式微控制單元304的系統(tǒng)架構(gòu)圖如圖4所示,包括微處理器(microprocessor)102、程序存儲器(programmemory)104,多個功能方塊(functionblock)106和串行接口(Serial Interface)402,其中串行接口402使用兩支管腳(2 Pin)與外部的燒錄控制裝置302連接。數(shù)據(jù)的輸入與輸出、處理與運算,都由微處理器102依軟件程序循序執(zhí)行。一般而言,在數(shù)據(jù)載入后,微處理器102利用總線,由程序存儲器104讀取所儲存的數(shù)據(jù)與程序,經(jīng)微處理器102各種指令運算,將處理結(jié)果傳送至輸出裝置或驅(qū)動多個功能方塊106。當(dāng)串行接口402收到外界燒錄控制裝置302的更新程序碼燒錄請求后,串行接口402會送一個請求信號給微處理器102,微處理器102收到該請求信號后,會進(jìn)入閑置(ldle)或暫停(Halt)狀態(tài),并將程序存儲器控制權(quán)交給串行接口402,此時燒錄裝置302即可將新機器程序碼經(jīng)由串行接口402直接寫入程序存儲器中,并不需要再經(jīng)由微處理器102,因此燒錄速度可提升;且不像一般系統(tǒng)在查知燒錄請求時,微處理器102會跳出需被更新的程序存儲器,而至另一程序存儲器執(zhí)行程序,并接收燒錄數(shù)據(jù),寫入需更新的程序存儲器,因為在此系統(tǒng)架構(gòu)下需要另一程序存儲器供微處理機102跳出時使用,所以會增加制造成本。
在程序碼數(shù)據(jù)傳輸過程中,串行接口402并計算接收數(shù)據(jù)的循環(huán)冗余字元校驗碼(Cyclic Redundancy Check code),在數(shù)據(jù)傳輸完成后,燒錄控制裝置302只需比較串行接口402中的循環(huán)冗余字元校驗碼與燒錄控制裝置302中的循環(huán)冗余字元校驗碼,即可獲知傳輸是否成功。在所有機器程序碼寫入成功后,燒錄控制裝置302即可要求嵌入式微控制單元304進(jìn)行復(fù)位(Reset),復(fù)位完成后即執(zhí)行新機器程序碼,本發(fā)明是在燒錄完成后,再對嵌入式微控制單元304進(jìn)行復(fù)位動作,不同于一般系統(tǒng)在查知燒錄要求時,即將整個嵌入式微控制單元304設(shè)于復(fù)位狀態(tài),因此可避免因微處理器102輸出口及功能方塊106無法工作所造成的損害。其中,循環(huán)冗余字校驗碼是將所要傳送或儲存的二進(jìn)位數(shù)據(jù)除以一個固定的二進(jìn)位數(shù),所得到的余數(shù)稱為循環(huán)冗余字元校驗碼;隨著數(shù)據(jù)一起傳送或儲存,在接收或讀出數(shù)據(jù)時,再次形成這種校驗碼,并作兩次校驗比較,從而檢測出是否存在誤碼現(xiàn)象。
權(quán)利要求
1.一種嵌入式微控制單元更新程序碼的方法,其特征在于該方法至少包括下列步驟由一輸出單元輸出燒錄請求信號,通過一接口將該請求信號傳輸給一微處理器;當(dāng)該微處理器收到該請求信號后,該微處理器會進(jìn)入閑置(1dle)或暫停(Halt)狀態(tài),并將控制權(quán)交給該接口;接著由該輸出單元通過該接口對一存儲器進(jìn)行數(shù)據(jù)直接燒錄,同時該接口會存儲該數(shù)據(jù)的校驗碼;當(dāng)燒錄完成后,該輸出單元會將該接口所存儲的該校驗碼與該輸出單元所存儲的校驗碼進(jìn)行比較;若檢查無誤,該輸出單元會經(jīng)由該接口輸出一復(fù)位(Reset)信號給該微處理器進(jìn)行復(fù)位;以及若檢查有錯誤發(fā)生,該輸出單元會重新進(jìn)行燒錄工作。
2.如權(quán)利要求1所述的嵌入式微控制單元更新程序碼的方法,其特征在于上述的輸出單元為一燒錄控制裝置,為燒錄新程序碼控制主體。
3.如權(quán)利要求1所述的嵌入式微控制單元更新程序碼的方法,其特征在于上述接口為一個兩支管腳(2Pin)的串接接口。
4.如權(quán)利要求1所述的嵌入式微控制單元更新程序碼的方法,其特征在于上述的存儲器為一可抹除且可編程只讀存儲器。
5.如權(quán)利要求1所述的嵌入式微控制單元更新程序碼的方法,其特征在于上述的校驗碼為一循環(huán)冗余字校驗碼,是將所要傳送或儲存的二進(jìn)制數(shù)據(jù)除以一個固定的二進(jìn)位數(shù),所得到的余數(shù)。
全文摘要
一種嵌入式微控制單元更新程序碼的方法,是在一嵌入式微控制單元加入一串行接口,在進(jìn)行程序碼更新時,外接一燒錄控制裝置,當(dāng)串行接口會送一個請求信號給嵌入式微控制單元內(nèi)的微處理器,微處理器收到該請求信號后,會進(jìn)入閑置或暫停狀態(tài),并將程序存儲器控制權(quán)交給串行接口,此時燒錄裝置即可將要更新的程序碼經(jīng)由串行接口直接寫入程序存儲器中,同時該接口會存儲該程序碼數(shù)據(jù)的校驗碼;在燒錄完成后,輸出單元會將接口所存儲的校驗碼與該輸出單元所存儲的校驗碼進(jìn)行比較。
文檔編號G06F9/22GK1346085SQ0012462
公開日2002年4月24日 申請日期2000年9月26日 優(yōu)先權(quán)日2000年9月26日
發(fā)明者袁中平, 陳吉田, 湯炳發(fā) 申請人:民生科技股份有限公司