專利名稱:用于刷新多處理器設(shè)備的方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及將軟件下載到多處理器電子設(shè)備的非易失性(non-volatile)可編程存儲器上。本發(fā)明更適用于(但不限于)刷新雙處理器蜂窩電話。
背景技術(shù):
諸如蜂窩電話、個人數(shù)字助理(PDA)和膝上型電腦的個人電子設(shè)備變得越來越小和越來越尖端。這些設(shè)備的廣泛流行進一步使得很多人在出行的時候要攜帶大量的設(shè)備。例如,對于出差的人來說,他們總是隨身攜帶著蜂窩電話、一個或多個PDA以及膝上型電腦,這種情況并不罕見。同時攜帶這么多的設(shè)備是很不方便的。因此,現(xiàn)在在努力將多種設(shè)備的功能結(jié)合到單一的、多功能的設(shè)備中。
多功能的設(shè)備包括整合了與PDA相關(guān)的大部分或全部功能的先進的蜂窩電話。例如,現(xiàn)在一些蜂窩電話中包含有約會日歷、通訊錄、計算器和游戲。
電子工業(yè)現(xiàn)在面臨的挑戰(zhàn)是要開發(fā)出高性能的微處理器,它們要能夠有效地管理這種多功能設(shè)備的所有功能。有一個問題是,如果將處理器設(shè)計成專門用來完成特定的任務(wù),那么通常只有在完成這種任務(wù)的時候它才能夠更有效的工作。例如,要將只專用于處理蜂窩電話的高速數(shù)字通信信號的微處理器設(shè)計成帶有電源(power)、存儲器和散熱器結(jié)構(gòu)的,這與為處理PDA所需的任務(wù)而設(shè)計的處理器是不同的。如果將單個的處理器設(shè)計成用于管理蜂窩電話和PDA的兩種功能的話,就需要采用折中的處理器結(jié)構(gòu)。
避免上述處理器結(jié)構(gòu)中的折中設(shè)計的一個方法是在多功能設(shè)備中結(jié)合進多個處理器。那么每個專門為某種任務(wù)所設(shè)計的處理器就可以專門用于執(zhí)行這種任務(wù)。因此,在雙處理器的蜂窩電話中就存在一個專門用于處理通信信號的處理器和另一個專門用于處理PDA功能的處理器。
然而,雙處理器電話所帶來的復(fù)雜性使得完成某些具體的任務(wù)變得更加困難。例如,雙處理器電話中的兩個處理器可能都包括可編程的、非易失性的存儲器(諸如閃存器(falsh memory))。可編程存儲器可以讓用戶下載(或“刷新(flash)”)新的或升級的軟件功能(諸如,地址薄、鈴聲、游戲等等)。但是某些雙處理器平臺只包括一個通過其接收軟件更新的外部通信信道,并且這個信道往往只與兩個處理器中的一個相連。另一個處理器只能通過使用處理器間的通信信道(諸如,通用異步收發(fā)器(UART))的第一處理器,間接地通過外部通信信道通信。因此在某些雙處理器的設(shè)計中還不能同時將軟件下載到兩個處理器上。
發(fā)明內(nèi)容
因此,在一種形式上,本發(fā)明是一種用于刷新多處理器設(shè)備中的兩個處理器的方法。這個方法包括從第一處理器向第二處理器發(fā)送狀態(tài)檢測啟動(boot)命令;根據(jù)第一處理器是否接收到對狀態(tài)檢測啟動命令的響應(yīng)來判斷第二處理器的狀態(tài);和在判斷出第一和第二處理器都處于刷新模式狀態(tài)時刷新第一和第二處理器。
可以將計時器設(shè)置成在經(jīng)過一個給定的計時周期之后終止計時,這樣就可以在給定的計時周期內(nèi)判斷出當?shù)谝惶幚砥鹘邮盏綄顟B(tài)檢測啟動命令的響應(yīng)時,第一和第二處理器都處于刷新模式狀態(tài)。
當計時器終止計時的時候,可以判斷出第二處理器不處于刷新模式。
第一處理器還可以判斷第二處理器是空白的還是已編程的。
本發(fā)明的進程可以通過連接到雙處理器設(shè)備的主機PC來初始化。
第一和第二處理器可以通過URAT來連接。
第一處理器可以通過USB電纜連接到主機PC。
當?shù)谝惶幚砥髋袛喑龅诙幚砥魇且丫幊痰臅r,可以重新設(shè)置第二處理器。
可以強行讓第二處理器進入刷新模式。
第一處理器可以是附屬處理器,第二處理器可以是基帶處理器。
本發(fā)明的方法可以重新配置連接到第一處理器的外部通信信道驅(qū)動器以包括兩個接口,一個接口用于刷新第一處理器,一個接口用于刷新第二處理器。
數(shù)據(jù)可能先刷新到第一處理器,然后再到第二處理器。
在包括權(quán)利要求書在內(nèi)的本說明中,術(shù)語“包括(comprises、comprising)”或類似的術(shù)語是指非排它的(non-exclusive)包含(inclusion),這樣包含一系列元素的方法和裝置就不是僅僅包括這些元素,而是可能還包括其它沒有列出的元素。此外,術(shù)語“刷新(flash)”的使用通常是指對非易失性可編程存儲器編程,而不局限于對閃存器編程。
為了更容易理解本發(fā)明并付諸實施,現(xiàn)在將參考優(yōu)選的實施例并結(jié)合附圖來進行說明,附圖中類似的序號表示類似的元素,在這些附圖中圖1是用于刷新雙處理器電話的相關(guān)軟件組件的示意性方框圖;圖2是用于刷新空白的電話的相關(guān)軟件組件的示意性方框圖;圖3是用于刷新已編程的電話的相關(guān)軟件組件的示意性方框圖;圖4是本發(fā)明的方法的通用流程圖;和圖5A是本發(fā)明的方法的詳細流程圖;圖5B是圖5A的詳細流程圖的延續(xù)。
具體實施例方式
參看圖1,其中示出了用于刷新雙處理器蜂窩電話100的相關(guān)軟件組件。應(yīng)當理解,電話100僅僅是可在其上實現(xiàn)本發(fā)明的各種多處理器電子設(shè)備的一個例子。電話100通過外部通信信道105與主機PC110相連。外部通信信道105(諸如,通用串行總線(USB)電纜)的用途是讓軟件能夠從PC 110下載到電話100上。因此PC 110包括下載工具115和通信信道驅(qū)動器120,通信信道105的一端與通信信道驅(qū)動器120相接。
電話100包括附屬處理器125和基帶處理器130,它們通過處理器間通信信道135相連。位于信道135各端的驅(qū)動器140和145(諸如,UART驅(qū)動器)管理通過信道135傳輸?shù)臄?shù)據(jù)。附屬處理器125包括諸如USB設(shè)備驅(qū)動器的外部通信信道驅(qū)動器150,它可以讓附屬處理器125與主機PC 110直接通信。數(shù)據(jù)從PC 110刷新到附屬處理器125,從而穿過驅(qū)動器150,并在刷新閃存器160之前由數(shù)據(jù)驗證軟件155直接處理。然而,從PC 110刷新到基帶處理器130的數(shù)據(jù),在由數(shù)據(jù)驗證軟件165處理并再次刷新閃存器170之前,必須首先通過驅(qū)動器150并穿過處理器間通信信道135。
在再次刷新各個閃存器160、170之前,主機PC 110必須要知道每個處理器125、130的狀態(tài)。這是因為在由主機PC110刷新之前,每個處理器125、130必須要處于刷新模式。附屬處理器可以通過信道105直接將它的狀態(tài)傳達給PC 110。然而基帶處理器130不能直接與PC 110進行通信,因此附屬處理器125就必須檢測基帶處理器130的狀態(tài),然后將狀態(tài)報告給PC 110。
基帶處理器130可能處于兩種狀態(tài)中的一種。第一狀態(tài)是未編程的“空白”電話100的刷新模式(即,引導(dǎo)程序(bootstrap)軟件正在運行)。第二狀態(tài)是已編程的電話100的刷新模式(即,引導(dǎo)裝入程序(bootloader)軟件正在運行)。同時,基帶處理器130可能在運行標準的電話代碼,在這種情況下,附屬處理器125將強行使基帶處理器130進入刷新模式。由于基帶處理器130并不是與主機PC 110直接相連的,因此附屬處理器125就必須檢測基帶處理器130的狀態(tài),然后將狀態(tài)傳達給主機PC110。
參看圖2,其中示出了用于刷新空白的電話100的相關(guān)軟件組件。在這里,附屬處理器125包括普通的引導(dǎo)程序軟件210和RAM下載軟件220。基帶處理器130包括IROM引導(dǎo)程序軟件230和用于引導(dǎo)程序的RAM下載軟件240。
參看圖3,其中示出了用于再次刷新已編程的電話100的相關(guān)軟件組件。在這里,附屬處理器125包括引導(dǎo)裝入程序(Blob)軟件310和RAM下載軟件220。基帶處理器130包括刷新引導(dǎo)裝入程序軟件320和用于引導(dǎo)裝入程序的RAM下載軟件330。
通常在某一時刻、某一處理器上,只有一種類型的上述電話啟動軟件組件(即,引導(dǎo)程序、引導(dǎo)裝入程序和RAM下載程序)可以激活。
根據(jù)本發(fā)明,附屬處理器125通過稱為“ENUM”的狀態(tài)檢測啟動命令來檢測基帶處理器130的狀態(tài)。當附屬處理器的RAM下載程序220開始運行后,它首先發(fā)出ENUM命令。這個命令沒有數(shù)據(jù),因此它的格式可以簡單地將ENUM命令與開始文字和結(jié)束文字標志捆綁在一起
如果基帶處理器130的狀態(tài)是未編程的“空白”電話100的刷新模式,基帶處理器130對ENUM命令的響應(yīng)可能是如下格式的
在另一種情況下,如果基帶處理器130的狀態(tài)是已編程的電話100的刷新模式,基帶處理器130對ENUM命令的響應(yīng)可能就是如下格式的
然而,如果基帶處理器130正在運行標準的電話代碼,最好不向附屬處理器125發(fā)送對ENUM命令的響應(yīng)。
應(yīng)當將上述命令幀的格式設(shè)計成與啟動命令格式相同的格式。因此,只需要對基帶處理器的引導(dǎo)裝入程序和引導(dǎo)程序組件做很少的修改。
參看圖4,其中示出了用于判斷諸如電話100的雙處理器設(shè)備的狀態(tài)并隨后刷新設(shè)備的方法400的通用流程圖。方法400在步驟405處被調(diào)用。步驟410將狀態(tài)檢測啟動命令從第一處理器(諸如,附屬處理器125)發(fā)送到第二處理器(諸如,基帶處理器130)。接著在步驟415處可以將可選的計時器設(shè)置成在一個給定的周期后終止計時。然后在步驟420處,根據(jù)第一處理器是否接收到對狀態(tài)檢測啟動命令的響應(yīng)來判斷第二處理器的狀態(tài)。當計時器計時終止時,可以判斷出第二處理器沒有處于刷新模式。最后,在步驟425處,當判斷出兩個處理器都處于刷新模式狀態(tài)時,將兩個處理器都進行刷新。然后方法400在步驟430處結(jié)束。
參看圖5A,其中示出了用于判斷基帶處理器130的狀態(tài)、向PC 110報告這個狀態(tài)以及隨后刷新電話100的方法500的詳細流程圖。方法500在步驟505處被調(diào)用。步驟510初始化電話100。然后,在步驟515處,附屬處理器125向基帶處理器130發(fā)送ENUM命令并設(shè)置計時器。
在步驟520處,附屬處理器125可接收來自基帶處理器130的響應(yīng)。如果是這樣,那么計時器就停止計時。附屬處理器125在步驟525處判斷計時器是否計時終止。如果計時器沒有計時終止,那么附屬處理器125就知道在步驟520處接收到了響應(yīng)。然后方法500就繼續(xù)執(zhí)行到步驟530處,在這里附屬處理器125知道基帶處理器130處于刷新模式。附屬處理器125讀取對ENUM命令的響應(yīng),這個響應(yīng)標識了電話100是空白的還是已編程的。如果基帶處理器130是空白的,方法500就進行到步驟535處,在這里將用于USB驅(qū)動器150的接口字符串描述符設(shè)置成“空白”。如果在步驟530處基帶處理器130是已編程的,那么在步驟540處就將用于USB驅(qū)動器150的接口字符串描述符設(shè)置成“刷新”。然后在步驟545處附屬處理器125就選擇一種用于USB驅(qū)動器150的配置,它將建立可以刷新附屬處理器125和基帶處理器130的兩個接口。接著在步驟585處,現(xiàn)在主機PC 110知道附屬處理器125和基帶處理器130都處于刷新模式,因此主機PC 110開始向電話100刷新數(shù)據(jù)。
但是,如果在步驟525處計時器計時終止了,那么附屬處理器125就知道沒有接收到對ENUM命令的響應(yīng)。然后方法500就進行到步驟550和555,在這里設(shè)置標志以強行讓基帶處理器130重新進入刷新模式。接著在步驟560處,基帶處理器130進入刷新模式,并且運行刷新引導(dǎo)裝入程序軟件320和用于引導(dǎo)裝入程序的RAM下載軟件330。
在重置基帶處理器130之后,附屬處理器125就在步驟565處重新設(shè)置計時器并向基帶處理器130重發(fā)ENUM命令以確認刷新引導(dǎo)裝入程序軟件320和用于引導(dǎo)裝入程序的RAM下載軟件330正在運行。
然后在步驟570處,附屬處理器125應(yīng)當接收來自基帶處理器130的響應(yīng)并停止計時器。在步驟575處,附屬處理器125再次判斷計時器是否計時終止。和前面一樣,如果計時器沒有計時終止,那么附屬處理器125就知道在步驟570處接收到了響應(yīng)。然后方法500就繼續(xù)執(zhí)行到步驟580處,在這里附屬處理器125知道基帶處理器130處于刷新模式。然后在步驟545處,附屬處理器125選擇一種用于USB驅(qū)動器150的雙接口配置,它可以讓附屬處理器125和基帶處理器130都得到刷新。接著在步驟585處,現(xiàn)在主機PC 110就再次知道附屬處理器125和基帶處理器130都處于刷新模式,因此主機PC 110開始向電話100刷新數(shù)據(jù)。
圖5B是圖5A中所示方法500的延續(xù)。在主機PC 110在步驟585處開始向電話100刷新數(shù)據(jù)之后,方法500就進行到步驟586,在這里附屬處理器125判斷是否將從外部通信信道驅(qū)動器150的附屬處理器接口接收數(shù)據(jù)。如果是的話,那么就在步驟587處分析和分發(fā)數(shù)據(jù)。接著,附屬處理器125就在步驟588處判斷它是否收到斷電或重新啟動的命令。如果接收到了這樣的命令,那么電話100就在步驟589處斷電或重新啟動。否則方法500返回到步驟586。
如果在步驟586處附屬處理器125沒有需要接收的數(shù)據(jù),那么方法500就進行到步驟590處,在這里附屬處理器125判斷是否需要從外部通信信道驅(qū)動器150的基帶處理器接口接收數(shù)據(jù)。如果在基帶處理器接口有數(shù)據(jù),那么就在步驟591處接收數(shù)據(jù)并將數(shù)據(jù)通過處理器間通信信道135發(fā)送到基帶處理器130。然后方法500返回步驟586。但是如果沒有要為基帶處理器130接收的數(shù)據(jù),在步驟592處,附屬處理器125就判斷是否有要從基帶處理器130接收的數(shù)據(jù)。如果有數(shù)據(jù),附屬處理器125就在步驟593處通過處理器間通信信道135接收基帶處理器130的數(shù)據(jù),并將它發(fā)送給主機PC 110。在將來自基帶處理器130的數(shù)據(jù)發(fā)送給PC 110之后,或者如果在步驟592處沒有來自基帶處理器130的數(shù)據(jù)需要發(fā)送,那么方法500就再次返回步驟586。
因此本發(fā)明可以讓雙處理器電話(其中只有一個處理器125包括外部通信信道驅(qū)動器150)向主機PC 110報告另一個處理器130的狀態(tài)。然后主機PC 110就能夠刷新兩個處理器125、130。本發(fā)明的方法500可以管理包括雙處理器電話100在內(nèi)的所有處理器的狀態(tài)。此外,本發(fā)明只需要對主機PC 110的下載工具115和基帶處理器引導(dǎo)裝入程序軟件320、330進行最少的修改。這是因為本發(fā)明的大部分步驟都可以通過使用附屬處理器RAM下載軟件220來完成。
這里的詳細描述只提供了優(yōu)選的典型實施例,這并不是為了限制本發(fā)明的范圍、應(yīng)用性或者配置。更確切地說,對本發(fā)明的優(yōu)選的典型實施例的詳細描述為本領(lǐng)域的一般技術(shù)人員提供了一種可以實現(xiàn)本發(fā)明的優(yōu)選的典型實施例的描述。應(yīng)當理解,在不背離如所附權(quán)利要求書中提出的本發(fā)明的精神和范圍的前提下,可以對本發(fā)明的元素和步驟的功能和安排進行各種修改。
權(quán)利要求
1.一種刷新多處理器設(shè)備的兩個處理器的方法,其包括如下步驟從第一處理器向第二處理器發(fā)送狀態(tài)檢測啟動命令;根據(jù)所述第一處理器是否接收到對所述狀態(tài)檢測啟動命令的響應(yīng)來判斷所述第二處理器的狀態(tài);在判斷出所述第一和第二處理器都處于刷新模式狀態(tài)時,刷新所述第一和第二處理器。
2.如權(quán)利要求1中所述方法,其進一步包括將計時器設(shè)置成在給定的時間周期之后終止計時的步驟,其中,在所述給定的計時器周期內(nèi)所述第一處理器接收到對所述狀態(tài)檢測啟動命令的響應(yīng)時,就判斷出所述第一和第二處理器都處于刷新模式狀態(tài)。
3.如權(quán)利要求2中所述方法,其中當所述計時器計時終止時,就判斷出所述第二處理器不處于刷新模式。
4.如權(quán)利要求1中所述方法,其中所述的判斷所述第二處理器的狀態(tài)的步驟將判斷所述第二處理器是空白的還是已編程的。
5.如權(quán)利要求1中所述方法,其中所述方法通過有效連接到所述雙處理器設(shè)備的主機PC來初始化。
6.如權(quán)利要求1中所述方法,其中所述第一和第二處理器通過UART有效連接。
7.如權(quán)利要求5中所述方法,其中所述第一處理器通過USB電纜與所述主機PC有效連接。
8.如權(quán)利要求1中所述方法,其進一步包括當所述第一處理器判斷出所述第二處理器是已編程的時重置所述第二處理器的步驟。
9.如權(quán)利要求1中所述方法,其進一步包括強行使所述第二處理器進入刷新模式的步驟。
10.如權(quán)利要求1中所述方法,其中所述第一處理器是附屬處理器,所述第二處理器是基帶處理器。
11.如權(quán)利要求1中所述方法,其進一步包括重新配置有效連接到所述第一處理器的外部通信信道驅(qū)動器以包括第一和第二接口的步驟,其中所述第一接口刷新所述第一處理器,所述第二接口刷新所述第二處理器。
12.如權(quán)利要求1中所述方法,其中數(shù)據(jù)先刷新到所述第一處理器上,然后再到所述第二處理器上。
全文摘要
本發(fā)明公開了一種用于刷新多處理器設(shè)備(100)的兩個處理器的方法。所述方法包括從第一處理器(125)向第二處理器(130)發(fā)送狀態(tài)檢測啟動命令。(步驟410。)根據(jù)所述第一處理器(125)是否接收到對所述狀態(tài)檢測啟動命令的響應(yīng)來判斷所述第二處理器(130)的狀態(tài)。(步驟420。)當判斷出所述第一處理器(125)和所述第二處理器(130)都處于刷新模式狀態(tài)時,刷新所述第一處理器(125)和所述第二處理器(130)。(步驟425。)可選地,可以設(shè)置計時器,其中如果所述計時器計時終止,就判斷所述第二處理器不處于刷新模式。(步驟415) 。
文檔編號G06F15/16GK1601466SQ0312496
公開日2005年3月30日 申請日期2003年9月23日 優(yōu)先權(quán)日2003年9月23日
發(fā)明者周頎, 鹿偉 申請人:摩托羅拉公司