本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種微控制器以及用于微控制器的代碼燒錄方法。
背景技術(shù):
微控制單元(Microcontroller Unit;MCU),又稱單片微型計算機或者單片機,是把中央處理器的頻率與規(guī)格做適當縮減,并將內(nèi)存、計數(shù)器、USB、A/D轉(zhuǎn)換、UART、PLC、DMA等周邊接口,甚至LCD驅(qū)動電路都整合在單一芯片上,形成芯片級的計算機,為不同的應(yīng)用場合做不同組合控制。諸如手機、PC外圍、遙控器、汽車電子、工業(yè)上的步進馬達、機器手臂的控制等,都可見到MCU的身影。MCU包括內(nèi)置的程序存儲器,用于存儲MCU執(zhí)行的程序。程序存儲器可以是只讀存儲器,也可以是閃存,目前閃存應(yīng)用的很廣泛,現(xiàn)有的燒錄軟件,在燒錄時將代碼燒錄到flash的一個位置,在閃存經(jīng)過多次重復(fù)擦寫或者處于惡劣環(huán)境中時,很容易損壞,而內(nèi)置閃存的良率是直接影響MCU良率的重要因素。為了提高MCU的良率,需要降低內(nèi)置閃存的不良率對MCU的影響。
技術(shù)實現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的微控制器以及用于該微控制器的燒錄方法。
根據(jù)本發(fā)明的一個方面,提供一種微控制器,包括:
通信接口,用于與外部處理單元進行通信;
第一程序存儲單元,用于存儲運行代碼文件;
第二程序存儲單元,用于存儲與上述代碼文件相同的代碼文件;
程序存儲控制單元,用于控制通信接口與所述第一程序存儲單元連接或者與所述第二程序存儲單元連接。
可選的,所述程序存儲控制單元包括:
檢測子單元,用于在所述微控制器上電時,檢測所述第一程序存儲單元存儲的字節(jié)數(shù)量;
比較單元,用于將所檢測的字節(jié)數(shù)量與預(yù)定閾值進行比較,如果兩者一致,則控制所述通信接口與所述第一程序存儲單元連接,如果不一致,則控制所述通信接口與所述第二程序存儲單元連接。
本發(fā)明還提供一種用于所述微控制器的代碼燒錄方法,其特征在于,該方法包括:
發(fā)送代碼文件至微控制器;
通過程序存儲控制單元將代碼文件中的字節(jié)燒錄到第一程序存儲單元;
通過程序存儲控制單元將代碼文件中的字節(jié)燒錄到第二程序存儲單元。
可選的,將代碼文件中的字節(jié)燒錄到第一程序存儲單元;將代碼文件中的字節(jié)燒錄到第一程序存儲單元具體包括:S1將代碼文件中預(yù)定數(shù)量的字節(jié)燒錄到第一程序存儲單元,同時將預(yù)定數(shù)量的字節(jié)燒錄到第二程序存儲單元;S2.重復(fù)所述步驟S1,按照順序燒錄直到所述代碼文件中的代碼都燒錄到第一程序存儲單元以及第二程序存儲單元。
可選的,所述預(yù)定數(shù)量的字節(jié)為1個字節(jié)。
可選的,將代碼文件中的字節(jié)燒錄到第一程序存儲單元;將代碼文件中的字節(jié)燒錄到第二程序存儲單元,具體包括:將代碼文件中的字節(jié)燒錄到第一程序存儲單元;在將所述代碼文件中的字節(jié)均燒錄到第一程序存儲單元后,再將代碼文件中的字節(jié)燒錄到第二程序存儲單元。
本申請實施例中提供的技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點:
通過在MCU內(nèi)置的閃存設(shè)計成雙存儲器結(jié)構(gòu),從而第一程序存儲單元單元壞掉時,自動切換到第二程序存儲單元單元,從而降低MCU芯片的不良率。
通過一次燒錄,形成備用的第二程序存儲單元,在第一程序存儲單元壞掉時,不需要重新燒錄,減少了燒錄次數(shù)。
在本申請實施例中,上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了本發(fā)明提出的微控制器的結(jié)構(gòu)圖;
圖2示出了本發(fā)明提出的代碼燒錄方法的流程圖;
圖3示出了本發(fā)明提出的一種具體的代碼燒錄方式;
圖4示出了本發(fā)明提出的一種具體實施方案的代碼燒錄方式。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
本申請?zhí)峁┮环N微控制器,如圖1所示,其包括:
通信接口100,用于與外部處理單元進行通信;
第一程序存儲單元200,用于存儲運行代碼文件;
第二程序存儲單元300,用于存儲與上述代碼文件相同的代碼文件;
程序存儲控制單元400,用于控制通信接口與所述第一程序存儲單元連接或者與所述第二程序存儲單元連接。
JTAG最初是用來對芯片進行測試的,JTAG的基本原理是在器件內(nèi)部定義一個TAP(Test Access Port;測試訪問口)通過專用的JTAG測試工具對內(nèi)部節(jié)點進行測試。JTAG測試允許多個器件通過JTAG接口串聯(lián)在一起,形成一個JTAG鏈,能實現(xiàn)對各個器件分別測試。如今,JTAG接口還常用于實現(xiàn)ISP(In-System Programmer,在系統(tǒng)編程),對FLASH等器件進行燒錄??紤]到在MCU芯片制造時對所述程序存儲器進行代碼的燒錄,MCU上電時對程序存儲器的測試,上述通信接口優(yōu)選JTAG接口,當然其他通信接口也可使用。
每次MCU上電時,程序存儲控制單元對第一程序存儲單元進行檢測,根據(jù)檢測結(jié)果確定是否將所述通信接口切換至與第二程序存儲單元連接。本申請通過將微控制器內(nèi)部的程序存儲器設(shè)計成雙存儲器結(jié)構(gòu),從而在內(nèi)部硬件檢測到第一個程序存儲器換掉時,自動切換到第二程序存儲單元。這種雙存儲器的結(jié)構(gòu)設(shè)計可以降低芯片生產(chǎn)的不良率。
在實際的程序存儲單元中存儲的代碼的字節(jié)數(shù)一般是固定的,如果程序存儲單元中存儲的字節(jié)數(shù)量發(fā)生變化,可以認為代碼已經(jīng)損壞。作為一種優(yōu)選是實施方式,所述程序存儲控制單元包括:
檢測子單元,用于在所述微控制器上電時,檢測所述第一程序存儲單元存儲的字節(jié)數(shù)量;
比較單元,用于將所檢測的字節(jié)數(shù)量與預(yù)定閾值進行比較,如果兩者一致,則控制所述通信接口與所述第一程序存儲單元連接,如果不一致,則控制所述通信接口與所述第二程序存儲單元連接。
通過該實施方案,可以很快捷、高效地確定第一程序存儲單元是否發(fā)生不良,在發(fā)生不良的情況下,自動地切換至第二程序存儲單元,從而保證MCU芯片正常工作。
為了實現(xiàn)上述微控制器的雙程序存儲結(jié)構(gòu),如圖2所示,本申請還提出了一種代碼燒錄方法,具體包括:
S01.發(fā)送代碼文件至所述微控制器;
S02.通過程序存儲控制單元將代碼文件中的字節(jié)燒錄到第一程序存儲單元;
S03.通過程序存儲控制單元將代碼文件中的字節(jié)燒錄到第二程序存儲單元。
該燒錄方法可通過燒錄軟件實現(xiàn),燒錄軟件運行在PC機上。
作為一種燒錄方式,將代碼文件中的字節(jié)燒錄到第一程序存儲單元;將代碼文件中的字節(jié)燒錄到第一程序存儲單元具體可包括:S1將代碼文件中預(yù)定數(shù)量的字節(jié)燒錄到第一程序存儲單元,同時將預(yù)定數(shù)量的字節(jié)燒錄到第二程序存儲單元;S2.重復(fù)所述步驟S1,按照順序燒錄直到所述代碼文件中的代碼都燒錄到第一程序存儲單元以及第二程序存儲單元。
按照該燒錄方式實現(xiàn)的一個具體實施例如圖4所示:
S21.運行燒錄軟件;
S22.打開BIN文件;
S23.指令從BIN文件中讀取一個字節(jié);
S24.判斷是否讀取成功;
S25.如果讀取成功,則將所讀取的這個字節(jié)燒錄到第一程序存儲單元;
S26.如果沒有讀取成功,則關(guān)閉所述燒錄軟件;
S27.在所述步驟S25后,將所述字節(jié)燒錄到第二程序存儲單元,再重復(fù)執(zhí)行步驟S3,直到關(guān)閉所述燒錄軟件。
在該實施例中,采用逐個字節(jié)燒錄的方式,而且第一程序存儲單元與第二程序存儲單元交叉著進行燒錄,第一程序存儲單元燒錄完畢,接著第二程序存儲單元也就燒錄完畢,通過該實施例可以節(jié)省燒錄時間。在變形的實施例中也可以利用每幾個字節(jié)燒錄的方式來代替逐個字節(jié)燒錄的方式,這可由設(shè)備的硬件條件進行確定。
作為另一種燒錄方式,將代碼文件中的字節(jié)燒錄到第一程序存儲單元;將代碼文件中的字節(jié)燒錄到第二程序存儲單元,具體包括:將代碼文件中的字節(jié)燒錄到第一程序存儲單元;在將所述代碼文件中的字節(jié)均燒錄到第一程序存儲單元后,再將代碼文件中的字節(jié)燒錄到第二程序存儲單元。
這種燒錄方式燒錄的時間稍長,但是不需要燒錄硬件在第一程序存儲單元和第二程序存儲單元之間來回切換,減少燒錄硬件的耗損。
通過本申請?zhí)岢龅臒浀姆椒ǎ梢砸淮尉幊?,同時將代碼燒錄到2個存儲單元,這樣在第一個程序存儲單元損壞時,不需要重新進行燒錄,直接切換到第二程序存儲單元即可。
基于本申請實施例中所介紹的微控制器和用于該微控制器的燒錄方法,本領(lǐng)域所屬技術(shù)人員能夠了解本實施例的微控制器的其他具體實施方式以及其各種變化形式,都屬于本申請所欲保護的范圍。
本申請實施例中提供的技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點:
在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應(yīng)當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的網(wǎng)關(guān)、代理服務(wù)器、系統(tǒng)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。