進(jìn)行數(shù)據(jù)緩存。第二模式即寄存器控制模式,其中中央處理器101可以對程序存儲器200進(jìn)行讀、寫和擦除操作。例如,在第二模式中,中央處理器101讀取內(nèi)存105,獲得升級文件并將其寫入程序存儲器200,從而實(shí)現(xiàn)程序存儲器200的升級。
[0056]中央處理器101不僅可以經(jīng)由高速緩沖存儲器102和接口控制器103訪問程序存儲器200,還可以經(jīng)由程序存儲器控制裝置104以及接口控制器103訪問程序存儲器200。
[0057]采用該架構(gòu)的處理器系統(tǒng)可以使得系統(tǒng)的程序存儲器接口除了指令之外,還能夠支持到程序存儲器升級。該方案可以兼容原有的處理器系統(tǒng),并且低成本地提供新增功能。
[0058]在優(yōu)選的實(shí)施例中,程序存儲器200的接口為可編程復(fù)用的接口。因此,程序存儲器200可復(fù)用為數(shù)據(jù)存儲器。程序存儲器能夠復(fù)用為數(shù)據(jù)存儲器,程序存儲器接口能夠復(fù)用為某些標(biāo)準(zhǔn)的控制總線,使得系統(tǒng)的應(yīng)用靈活性增加。
[0059]圖3示出根據(jù)本實(shí)用新型的一個實(shí)施例的程序存儲器控制裝置的示意性框圖,其中采用虛線框表示程序存儲器控制裝置外部的模塊,以便于描述程序存儲器控制裝置與外部模塊之間的關(guān)系。程序存儲器控制裝置104包括控制寄存器1041和選擇器1042。
[0060]控制寄存器1041包括總線端口和數(shù)據(jù)端口,分別作為程序存儲器控制裝置104的第一端口和第三數(shù)據(jù)端口,與中央處理器101和接口控制器103相連接。例如,控制寄存器1041的總線端口與標(biāo)準(zhǔn)的寄存器讀寫總線相連接??刂萍拇嫫?041還包括選擇端口,與選擇器1042的選擇端口相連接,從而向后者提供選擇信號。
[0061]選擇器1042還包括第一至第三控制端口。選擇器1042的第一控制端口作為程序存儲器控制裝置104的第二端口,與高速緩沖存儲器102相連接。選擇器1042的第二控制端口與控制寄存器1041相連接。選擇器1042的第三控制端口作為程序存儲器控制裝置104的第三控制端口,與接口控制器103相連接。
[0062]根據(jù)控制寄存器1041的選擇端口的選擇信號Spimux,選擇器1042將第一和第二控制端口之一與第三控制端口相連接,選擇上述的第一控制信號路徑和第二控制信號路徑之一,從而實(shí)現(xiàn)控制信號的路由功能。在選擇第一信號路徑時,接口控制器103為CPU控制模式。在選擇第二信號路徑時,接口控制器103為寄存器控制模式。
[0063]由于控制寄存器1041的數(shù)據(jù)端口與接口控制器103相連接,因此,在寄存器控制模式中,中央處理器101可以經(jīng)由控制寄存器1041的數(shù)據(jù)端口傳送升級文件,從而在接口控制器103的控制下,將升級文件寫入程序存儲器200。
[0064]圖4示出根據(jù)本實(shí)用新型的第二實(shí)施例的處理器系統(tǒng)的示意性框圖。根據(jù)第二實(shí)施例的片上系統(tǒng)包括片上系統(tǒng)(SoC)100、SPI FLASH 210和SPI接口設(shè)備220。在第二實(shí)施例中采用的片上系統(tǒng)100與在第一實(shí)施例中采用的片上系統(tǒng)100的結(jié)構(gòu)相同,因而省略其細(xì)
-K-
T O
[0065]片上系統(tǒng)100與SPI FLASH 210和SPI接口設(shè)備220之間的接口采用公共的SPI(Serial Peripheral Interface,即串行外設(shè)接口)總線系統(tǒng)。該總線系統(tǒng)是一種同步串行外設(shè)接口,使得處理器可以與各種外圍設(shè)備以串行方式進(jìn)行通信以交換信息。
[0066]在第二實(shí)施例中,程序存儲器的實(shí)例是SPIFLASH 210。由于片上系統(tǒng)100與程序存儲器之間采用SPI總線連接,因此,該處理器系統(tǒng)可以兼容SPI接口設(shè)備220。通過片選信號CSl和CS2的分時控制,來實(shí)現(xiàn)SPI FLASH 210和SPI接口設(shè)備220的復(fù)用控制。
[0067]圖5是根據(jù)本實(shí)用新型的實(shí)施例的程序存儲器升級方法的流程圖,圖7至9示出不同步驟的存儲器操作示意性框圖。所述程序存儲器升級方法包括以下多個步驟。
[0068]程序存儲器200的存儲區(qū)可以分為不同的區(qū)域,即程序區(qū)和保留區(qū)。程序區(qū)是中央處理器101的尋址空間,根據(jù)功能可示意性的分為A、B、C三塊,如圖7所示。在程序存儲器200的區(qū)域A、B、C中分別存儲第一復(fù)制程序、升級驅(qū)動程序和第二復(fù)制程序。
[0069]在步驟SlOO中,在接口控制器的第一模式,將升級驅(qū)動程序復(fù)制到高速緩沖存儲器中。第一模式即接口控制器的CHJ控制模式,其中在高速緩沖存儲器102與程序存儲器200之間,自動進(jìn)行數(shù)據(jù)緩存。
[0070]升級驅(qū)動程序用于執(zhí)行升級時針對接口控制器103的各種操作,例如包括接口狀態(tài)切換程序和讀寫擦除等控制程序。在優(yōu)選的實(shí)施例中,在復(fù)制升級驅(qū)動程序之后進(jìn)行地址鎖定,使得升級驅(qū)動程序處于高速緩沖存儲器鎖定的地址空間中。
[0071]圖7示出步驟SlOO的存儲器操作示意性框圖,其中,用于執(zhí)行升級驅(qū)動程序復(fù)制操作的第一復(fù)制程序表示為A程序,而升級驅(qū)動程序自身表示為B程序。
[0072]在步驟S200中,中央處理器101執(zhí)行接口狀態(tài)切換程序,將接口控制器從第一模式切換至第二模式。第二模式即接口控制器的寄存器控制模式。
[0073]如上所述,只有當(dāng)程序存儲器200的接口控制器103被切換為寄存器控制模式,才能對接口進(jìn)行讀寫和擦除等操作,否則會與中央處理器101接口沖突。
[0074]在步驟S300中,在接口控制器的第二模式,將升級文件寫入程序存儲器200。如果數(shù)據(jù)存儲器不能一次性讀取升級文件的情況時,則分塊讀取升級文件。該升級文件寫入步驟將結(jié)合圖6進(jìn)一步詳細(xì)說明。
[0075]在優(yōu)選的實(shí)施例中,在步驟S300之后,系統(tǒng)重新上電,或者在高速緩沖存儲器中運(yùn)行復(fù)位程序,使得系統(tǒng)將執(zhí)行新升級的程序。
[0076]圖6示出圖5中升級文件寫入步驟的流程圖。為了執(zhí)行圖5中的步驟S300,可以執(zhí)行以下多個步驟。
[0077]在步驟S301中,中央處理器101執(zhí)行高速緩沖存儲器102中的升級驅(qū)動程序,對程序存儲器200進(jìn)行擦除操作,從而擦除程序存儲器200的保留區(qū),準(zhǔn)備下一步升級文件數(shù)據(jù)的寫入。
[0078]在步驟S302中,判斷升級文件是否大于內(nèi)存空間。
[0079]如果升級文件小于內(nèi)存空間,則執(zhí)行步驟S303至S305。
[0080]在步驟S303中,中央處理器101執(zhí)行程序存儲器200中的第二復(fù)制程序,將外設(shè)設(shè)備內(nèi)的升級文件全部讀入到內(nèi)存。
[0081]在步驟S304中,中央處理器101執(zhí)行高速緩沖存儲器102中的升級驅(qū)動程序,對程序存儲器200進(jìn)行擦除操作,從而擦除程序存儲器的程序區(qū)。
[0082]在步驟S305中,中央處理器101執(zhí)行高速緩沖存儲器102中的升級驅(qū)動程序,對程序存儲器200進(jìn)行寫入操作,從而將內(nèi)存數(shù)據(jù)寫入到程序存儲器的程序區(qū)。
[0083]如果升級文件大于內(nèi)存空間,則執(zhí)行步驟S306至S311。
[0084]在步驟S306中,中央處理器101執(zhí)行程序存儲器200中的第二復(fù)制程序,將外設(shè)設(shè)備內(nèi)的升級文件的一部分讀入到內(nèi)存。
[0085]在步驟S307中,中央處理器101執(zhí)行高速緩沖存儲器102中的升級驅(qū)動程序,對程序存儲器200進(jìn)行寫入操作,從而將內(nèi)存數(shù)據(jù)寫入到程序存儲器的保留區(qū)。
[00