專利名稱:電子設(shè)備診斷方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及電子設(shè)備,特別地,涉及在電子設(shè)備上執(zhí)行診斷測試。
背景技術(shù):
根據(jù)傳統(tǒng)的電子設(shè)備診斷測試技術(shù),電子設(shè)備在制造過程中受到功能的硬件測試,并在配置之后受到不同的現(xiàn)場診斷測試。在制造過程中的功能測試(FT)通常在電子設(shè)備離開裝配線時,提供電子設(shè)備的基本硬件健全的評估。在功能測試期間進行的診斷測試實際上非常詳細(xì)和低級?,F(xiàn)場診斷測試常常不及制造診斷測試的范圍廣。
制造測試和現(xiàn)場測試可因多種原因而不同。例如,測試可由不同的部門進行。例如,制造測試可由生產(chǎn)人員進行,而現(xiàn)場測試可由研究和開發(fā)人員進行。每當(dāng)電子設(shè)備通電時,現(xiàn)場診斷測試就正常進行,因此現(xiàn)場測試最好被設(shè)計成快速地進行。在制造階段的測試時間通常不是很嚴(yán)格,因為制造測試是在電子設(shè)備被配置和投入使用之前進行。另外,制造診斷測試常常需要在電子設(shè)備使用時可能不可用的外部裝置。
不管不同的原因是什么,最終的結(jié)果是相同的?,F(xiàn)場診斷測試與制造診斷測試具有不同的范圍,特別是更窄的范圍。診斷測試不同的一個結(jié)果是當(dāng)電子設(shè)備在現(xiàn)場或“在原處”時,可能導(dǎo)致故障隔離和分析更困難,并由于所謂的根本原因分析或其他類型的故障和錯誤分析而導(dǎo)致電子設(shè)備不必要地返回到制造商。
正如本領(lǐng)域技術(shù)人員所知的,返回電子設(shè)備對設(shè)備所有者來說是不方便的,并且對返回的電子設(shè)備的分析對于制造商通常是耗費時間和金錢的。例如,從現(xiàn)場設(shè)備中移走電子設(shè)備,如從電子裝置中拔出電路卡,將改變曾出現(xiàn)故障或錯誤的運行環(huán)境,并因此導(dǎo)致故障或錯誤很難或甚至不可能再現(xiàn)。在處理電子設(shè)備和向制造商運送電子設(shè)備的過程中,還有靜電釋放(ESD)的危險或者其他對電子設(shè)備的損害。然而,如上所述,當(dāng)前的診斷技術(shù)提供的現(xiàn)場診斷測試比制造診斷測試的范圍小得多。因此許多硬件或其它低級故障或錯誤不能在現(xiàn)場檢測,這使得向制造商返回電子設(shè)備進行測試和分析成為必要。
發(fā)明內(nèi)容
專用診斷軟件代碼不同于電子設(shè)備的運行軟件代碼,并且在電子設(shè)備的診斷模式中執(zhí)行,其支持更廣泛的電子設(shè)備離線現(xiàn)場診斷測試,而無需將電子設(shè)備從其正常的運行環(huán)境中移走?,F(xiàn)場診斷測試可具有與用于特定電子設(shè)備的制造功能測試實質(zhì)上相同的覆蓋范圍,從而與其相關(guān)。
根據(jù)本發(fā)明的一個實施例,制造診斷測試組和現(xiàn)場診斷測試組的結(jié)合提供一種原型化、調(diào)試和應(yīng)用程序診斷開發(fā)的共享方法。
根據(jù)一個主要的方面,本發(fā)明提供一種運行電子設(shè)備的方法,在該電子設(shè)備上存儲專用診斷軟件代碼和運行軟件代碼,該方法包括確定該電子設(shè)備是將運行在診斷模式中還是在運行模式中的操作,當(dāng)該電子設(shè)備將運行在診斷模式中時,在該電子設(shè)備上執(zhí)行專用診斷軟件代碼,當(dāng)該電子設(shè)備將運行在運行模式中時,在該電子設(shè)備上執(zhí)行運行軟件代碼。
進行模式確定可以例如根據(jù)電子設(shè)備的存儲器中存儲位置內(nèi)的值,或者電子設(shè)備上存在跳線,或者電子設(shè)備上開關(guān)的位置,或者用戶輸入。
在一個實施例中,模式確定在電子設(shè)備的引導(dǎo)操作期間執(zhí)行。
可提供多個診斷模式,包括一個或者多個交互式或非交互式模式。還可以提供具有各自的診斷測試組的現(xiàn)場診斷模式和制造診斷模式,其中,現(xiàn)場診斷模式測試組包括制造診斷模式測試組的子集。
優(yōu)選地,在診斷軟件代碼控制下執(zhí)行的診斷測試的結(jié)果存儲在電子設(shè)備的存儲器中,優(yōu)選地,是非易失性存儲器。例如,在執(zhí)行命令前,電子設(shè)備的狀態(tài)也可存儲在存儲器中。然后,存儲的處理器狀態(tài)可用于恢復(fù)在命令正在執(zhí)行時出現(xiàn)錯誤的地方的電子設(shè)備的狀態(tài)。
在一個實施例中,運行軟件代碼在運行模式中執(zhí)行在線診斷測試,并響應(yīng)在線診斷測試檢測到錯誤執(zhí)行專用診斷軟件代碼。
本發(fā)明的實施例可在單處理器或者多處理器電子設(shè)備中實現(xiàn)。在多處理器電子設(shè)備中,在每個處理器中執(zhí)行運行軟件代碼或診斷軟件代碼。處理器中的一個可被指定為主處理器,并可運行在透明模式中,以在接口和一個或者多個從處理器之間傳遞信息。因此,透明模式通過與主處理器的接口,有效地提供對從處理器的訪問。
另一方面,還可以提供一種電子設(shè)備,其包括存儲器和處理器。存儲器存儲專用診斷軟件代碼和運行軟件代碼,處理器被配置為在電子設(shè)備的診斷模式下執(zhí)行專用診斷軟件代碼或在電子設(shè)備的運行模式下執(zhí)行運行軟件代碼。
診斷軟件代碼可包括多個軟件代碼模塊,軟件代碼模塊包括單任務(wù)命令調(diào)度程序內(nèi)核、測試應(yīng)用編程接口、命令軟件模塊、一個或者多個測試功能軟件模塊、一個或者多個硬件接口模塊和一個或者多個用戶接口模塊的任何一個。
還提供一種運行電子設(shè)備的方法,包括將專用診斷軟件代碼加載到電子設(shè)備的存儲器中,通過執(zhí)行專用診斷軟件代碼在電子設(shè)備上執(zhí)行功能測試,將運行軟件代碼加載到電子設(shè)備的存儲器中,在加載了運行軟件代碼后,在電子設(shè)備的診斷模式中執(zhí)行專用診斷軟件代碼。加載運行軟件代碼可根據(jù)電子設(shè)備是否通過功能測試。
例如,如果電子設(shè)備通過功能測試,則專用診斷軟件代碼可首先加載到易失性存儲設(shè)備中,接著加載到非易失性存儲設(shè)備中。
根據(jù)本發(fā)明的另一個方面,電子設(shè)備包括接口、存儲器和處理器。處理器被配置為將通過接口收到的專用診斷軟件代碼加載到存儲器中,通過執(zhí)行專用診斷軟件代碼在電子設(shè)備上執(zhí)行多個功能測試,將通過接口收到的運行軟件代碼加載到存儲器中,以及在加載了運行軟件后,在電子設(shè)備的診斷模式中執(zhí)行專用診斷軟件代碼。
本發(fā)明的另一個方面提供一種運行電子設(shè)備的方法,在電子設(shè)備上存儲診斷軟件代碼和運行軟件代碼,該方法包括通過在電子設(shè)備的診斷模式中執(zhí)行診斷軟件代碼來在電子設(shè)備上執(zhí)行診斷測試的操作,以及提供對診斷測試結(jié)果的訪問。雖然診斷測試的結(jié)果對于運行軟件代碼也可訪問,但是訪問診斷測試結(jié)果獨立于運行軟件代碼。
還提供一種電子設(shè)備,包括存儲診斷軟件代碼和運行軟件代碼的存儲器和處理器。處理器被配置為在電子設(shè)備的診斷模式中執(zhí)行診斷軟件代碼,診斷軟件代碼在電子設(shè)備上執(zhí)行診斷測試,并提供對診斷測試結(jié)果的訪問。同上,訪問診斷測試結(jié)果獨立于運行軟件代碼。
在本發(fā)明的另一個方面,提供另一種運行電子設(shè)備的方法,在電子設(shè)備上存儲專用診斷軟件代碼和運行軟件代碼。運行軟件代碼在電子設(shè)備的運行模式中在電子設(shè)備上執(zhí)行,并且包括用于在運行模式中執(zhí)行在線診斷測試的軟件代碼。運行軟件代碼響應(yīng)在線診斷測試檢測到錯誤,調(diào)用專用診斷軟件代碼,從而將控制轉(zhuǎn)移給診斷軟件代碼。然后,診斷軟件代碼在診斷模式中在電子設(shè)備上執(zhí)行離線診斷測試。
在相關(guān)的方面中,提供一種電子設(shè)備,包括存儲專用診斷軟件代碼和運行軟件代碼的存儲器和處理器,處理器被配置為在電子設(shè)備的運行模式中執(zhí)行運行軟件代碼,運行軟件代碼包括用于在運行模式中執(zhí)行在線診斷測試的軟件代碼,以及被配置為響應(yīng)在線診斷測試檢測錯誤,從運行軟件代碼中調(diào)用診斷軟件代碼,從而將控制轉(zhuǎn)移給診斷軟件代碼,診斷軟件代碼在電子設(shè)備的診斷模式中在電子設(shè)備上執(zhí)行離線診斷測試。
通過閱讀后面本發(fā)明特定實施例的描述,對本領(lǐng)域普通技術(shù)人員來說,本發(fā)明的實施例的其它方面和特征變得顯而易見。
參照附圖,現(xiàn)在將更詳細(xì)地描述本發(fā)明的實施例的例子,其中圖1是根據(jù)本發(fā)明的一個實施例的方法的流程圖;圖2是根據(jù)本發(fā)明的另一個實施例的方法的流程圖;
圖3是根據(jù)本發(fā)明的又一個實施例的方法的流程圖;圖4是可實現(xiàn)本發(fā)明的實施例的電子設(shè)備的框圖;圖5是包括多個存儲設(shè)備的示例性存儲器的框圖;圖6是包括多個接口設(shè)備的示例性接口的框圖;圖7是可實現(xiàn)本發(fā)明的實施例的多處理器電子設(shè)備的例子;圖8是根據(jù)本發(fā)明的一個實施例的用于圖7的多處理器電子設(shè)備的示例性數(shù)據(jù)結(jié)構(gòu)的框圖;圖9是根據(jù)本發(fā)明的一個實施例的診斷軟件代碼體系結(jié)構(gòu)的框圖。
具體實施例方式
根據(jù)本發(fā)明的一個實施例的離線診斷運行時間環(huán)境(ODRE)被設(shè)計為能夠在目標(biāo)電子設(shè)備未使用時在該電子設(shè)備上執(zhí)行低級診斷測試。然而,當(dāng)進行測試時,被測試的設(shè)備可以仍然在系統(tǒng)中。ODRE和一組完整的硬件診斷一起,也可以覆蓋用于制造電子設(shè)備期間的功能測試的嵌入式診斷要求。因此,根據(jù)本發(fā)明的實施例的ODRE可以提供制造平臺和現(xiàn)場平臺,其中制造平臺用于在制造期間或者當(dāng)不合格或者有缺陷的電子設(shè)備返回制造商時原型化和調(diào)試電子設(shè)備時使用;現(xiàn)場平臺用于在現(xiàn)場查明并排除故障電子設(shè)備時獨立使用。現(xiàn)場診斷特別有用,例如,對于可在現(xiàn)場被替換的電子設(shè)備的故障或錯誤分析,這種電子設(shè)備通常也被稱為現(xiàn)場可替換單元或FRU。
如下面更詳細(xì)的描述,優(yōu)選地,ODRE提供例如在電子設(shè)備通電時執(zhí)行一組詳盡的診斷的能力,測試電子設(shè)備原型或者為現(xiàn)場配置新預(yù)定的電子設(shè)備的能力,以及在制造或修理車間或現(xiàn)場幫助調(diào)試有問題的電子設(shè)備的能力。在一個實施例中,至少現(xiàn)場診斷測試結(jié)果存儲在電子設(shè)備的存儲器中,例如作為故障日志,以方便在現(xiàn)場和在稍后時間在制造/修理車間識別故障。
圖1是根據(jù)本發(fā)明的一個實施例的方法的流程圖。應(yīng)當(dāng)知道,圖1中所示的方法和其他附圖的內(nèi)容僅僅是示例性的目的,與本發(fā)明的實施例有關(guān)。本發(fā)明的其它實施例可包括比附圖中明確示出的更多、更少或者不同的方法步驟或者不同排列或連接的組件。
例如,在圖1所示的本發(fā)明的實施例中,現(xiàn)場診斷測試可在電子設(shè)備啟動時(步驟10),在電子設(shè)備重啟后,執(zhí)行。在步驟12進行關(guān)于電子設(shè)備是將運行在診斷模式中還是在運行模式中的確定。該方法根據(jù)步驟12的確定轉(zhuǎn)向步驟14或者步驟16。
優(yōu)選地,診斷軟件代碼適合于以較少的電子設(shè)備資源啟動,以允許故障電子設(shè)備的低級調(diào)試。對于現(xiàn)場診斷在啟動時執(zhí)行的實施例,如圖1所示,優(yōu)選地,在引導(dǎo)操作的初始階段中進行步驟12的確定。盡管電子設(shè)備的正常運行可需要許多設(shè)備組件的初始化,但診斷軟件代碼可用較少的組件執(zhí)行。
例如,現(xiàn)場診斷可被配置為測試電子設(shè)備的特定組件或者功能,其被要求在電子設(shè)備上正確運行軟件程序。雖然特定組件或者功能本身由診斷軟件代碼測試,但是不要求執(zhí)行診斷軟件代碼。在這種情況下,如果該組件或者功能沒有在啟動過程中正確地初始化,則軟件應(yīng)用程序?qū)⒉荒苷_地運行。在軟件應(yīng)用程序?qū)嵸|(zhì)上支持電子設(shè)備的全部功能時,例如在電路卡中,這種情形可導(dǎo)致不能啟動的不起作用的或者“死的”電子設(shè)備。然而,由于故障組件或功能不需要現(xiàn)場診斷,因此,即使電子設(shè)備在正常的啟動或引導(dǎo)程序中被造成不起作用,也在組件或功能初始化之前執(zhí)行步驟12的確定,并當(dāng)電子設(shè)備將啟動為診斷模式時轉(zhuǎn)到步驟14,使故障組件或功能可以被檢測。
因此,優(yōu)選地,只要診斷軟件代碼可以執(zhí)行,就進行步驟12的確定。如本領(lǐng)域技術(shù)人員所知的,這個啟動程序可在引導(dǎo)軟件代碼中實現(xiàn),該引導(dǎo)軟件代碼在電子設(shè)備啟動時執(zhí)行。任何與正常運行軟件或功能相關(guān)的進一步的啟動運行,例如附加組件或功能的初始化,可接著在步驟16執(zhí)行。
步驟12的確定可以例如基于標(biāo)記進行,該標(biāo)記指出電子設(shè)備是將運行在診斷模式中還是在運行模式中。在一個實施例中,存儲器中的存儲位置存儲指出電子設(shè)備是將運行在診斷模式中還是在運行模式中的標(biāo)記。根據(jù)另一個實施例,標(biāo)記存儲在處理器的寄存器中。在又一個實施例中,在引導(dǎo)操作期間執(zhí)行的引導(dǎo)加載程序訪問存儲在存儲器中的標(biāo)記,以確定電子設(shè)備是將運行在診斷模式中還是在運行模式中。然后引導(dǎo)加載程序據(jù)此在處理器寄存器中設(shè)置值。處理器寄存器中的值還可指出電子設(shè)備將運行在多個診斷模式中的哪一個,這將在后面詳細(xì)描述。
例如,模式標(biāo)記或類似的指示器可通過與電子設(shè)備的用戶接口設(shè)置。在上面的電路卡作為電子設(shè)備的例子中,這個功能可通過命令行接口提供。
優(yōu)選地,當(dāng)電子設(shè)備將運行在診斷模式中時,在步驟14執(zhí)行的診斷軟件代碼是主要支持與電子設(shè)備的診斷測試有關(guān)的功能的專用軟件代碼。例如,這些功能可包括執(zhí)行診斷測試,存儲和/或報告測試結(jié)果,生成錯誤或故障消息,或執(zhí)行恢復(fù)或者其它可能的錯誤或故障處理操作。因此,在這里,有關(guān)專用診斷軟件代碼應(yīng)該據(jù)此解釋。雖然診斷軟件代碼功能與診斷測試和結(jié)果有關(guān),例如與上述最小化啟動運行有關(guān),但是應(yīng)當(dāng)知道診斷軟件代碼沒必要僅限于執(zhí)行診斷測試。
相反,運行軟件代碼可支持電子設(shè)備的任何正常運行功能。運行軟件代碼可包括,例如操作系統(tǒng)軟件、應(yīng)用軟件、軟件模塊和軟件應(yīng)用程序的任何一個。當(dāng)電子設(shè)備是電路卡或某些其它類型的特定應(yīng)用設(shè)備時,運行軟件代碼可以是單個軟件應(yīng)用程序。在其它電子設(shè)備中,操作系統(tǒng)軟件提供多個軟件應(yīng)用程序的任何一個可與其協(xié)同執(zhí)行的平臺。運行軟件代碼支持的體系結(jié)構(gòu)和功能取決于電子設(shè)備的類型及其想要的操作。本發(fā)明決不局限于運行軟件代碼的任何特定實現(xiàn)。
根據(jù)本發(fā)明的一個實施例,診斷軟件代碼和運行軟件代碼是在步驟14和16分別和單獨執(zhí)行的。因此診斷軟件代碼和運行軟件代碼不需要相互兼容或者使用相同的編程語言來實現(xiàn)。然而,在診斷軟件代碼和運行軟件代碼間的某些級別的交互或者在診斷軟件代碼和運行軟件代碼間的某些軟件模塊的共享可節(jié)省代碼空間,這對將在下面更加詳細(xì)描述的具有有限的存儲器或處理資源的電子設(shè)備來說是重要的。
優(yōu)選地,在診斷模式中,只有那些診斷軟件代碼支持的功能是可用的。同樣地,在運行模式中,運行軟件代碼支持的功能是可用的,優(yōu)選地,只由診斷軟件代碼支持的功能不可用。由診斷軟件代碼和運行軟件代碼支持的共同功能或共享軟件模塊在兩種模式中都是可用的。
然而,優(yōu)選地,診斷模式和診斷軟件代碼獨立于運行模式和運行軟件代碼。特別地,優(yōu)選地,診斷軟件代碼不依賴運行軟件代碼的正確運行,這和傳統(tǒng)的診斷技術(shù)不同。這種診斷運行和正常運行的分離還可以使診斷軟件代碼甚至在運行軟件代碼的正確執(zhí)行所需要的組件或功能故障時也能執(zhí)行。
在電子設(shè)備上提供分別可執(zhí)行的專用診斷軟件代碼和運行軟件代碼的另一個優(yōu)點與可執(zhí)行的測試的范圍和類型有關(guān)。例如,根據(jù)傳統(tǒng)技術(shù)的現(xiàn)場診斷測試必須在不影響電子設(shè)備組件的運行和存儲器內(nèi)容的情況下執(zhí)行,以確保運行軟件代碼保持可運行。傳統(tǒng)的通電現(xiàn)場診斷在電子設(shè)備的正常運行模式中運行,因此,想要在不造成電子設(shè)備錯誤或故障的情況下執(zhí)行。根據(jù)本發(fā)明的實施例的分別獨立的診斷模式和軟件代碼允許執(zhí)行廣泛的現(xiàn)場診斷,包括從運行立場來看是破壞性的測試。然后,在完成診斷后重啟的電子設(shè)備可以適當(dāng)?shù)爻跏蓟魏问芷茐男栽\斷測試影響的組件,從而使運行軟件代碼隨后能執(zhí)行。
雖然優(yōu)選的是分別可執(zhí)行的,但是診斷軟件代碼和運行軟件代碼可以存儲在電子設(shè)備的公共存儲器中。例如,許多電子設(shè)備包括非易失性程序存儲器,其存儲處理器將執(zhí)行的軟件代碼。典型地,軟件代碼從非易失性存儲器中加載到隨機存儲器RAM或者其他易失性存儲器中執(zhí)行。在這種類型的設(shè)備中,診斷軟件代碼和運行軟件代碼,在本例中是軟件應(yīng)用程序,都存儲在程序存儲器中,診斷軟件代碼或者運行軟件代碼被加載到RAM中執(zhí)行。
根據(jù)本發(fā)明的另一個實施例,在診斷軟件代碼控制下執(zhí)行的診斷測試的結(jié)果存儲在電子設(shè)備的存儲器中。存儲的結(jié)果記錄可包括,例如,特定診斷測試的標(biāo)識,識別測試檢測到的錯誤或者故障的類型的測試錯誤代碼,電子設(shè)備的壽命計數(shù)或者其他的時間指示器,在該時間執(zhí)行了測試并且采集了測試結(jié)果,以及校驗和或者其他數(shù)據(jù)完整性校驗信息。在其它實施例中,可以存儲更多或者更少的測試結(jié)果字段或信息。
測試結(jié)果連同其它信息可存儲在共享存儲器中或者分離的存儲設(shè)備中。在一個實施例中,使用單閃存設(shè)備存儲上面所述的模式標(biāo)記和診斷測試的結(jié)果。優(yōu)選地,測試結(jié)果日志存儲在非易失性存儲設(shè)備中,該日志可包括與所有測試有關(guān)的信息,或者只包括那些不成功或者沒有識別的錯誤或故障的測試的信息的故障日志。在非易失性存儲設(shè)備中存儲測試結(jié)果方便了在現(xiàn)場和在稍后的時間在修理車間識別故障。存儲在被測試的電子設(shè)備的存儲器中的本地測試結(jié)果日志對于運行軟件代碼也可訪問,從而在隨后的正常電子設(shè)備運行期間提供對測試結(jié)果的訪問。
圖2是根據(jù)本發(fā)明的另一個實施例的方法的流程圖。和圖1中一樣,為了示例性的目的,在圖2中給出了啟動或引導(dǎo)時間診斷模式。圖2還示出多個診斷模式。
在步驟20執(zhí)行的初始化操作可包括初始化足夠的電子設(shè)備寄存器、組件和功能,用于執(zhí)行診斷軟件代碼,如上所述。在步驟22,確定多個診斷模式中的一個,例如通過讀取數(shù)據(jù)存儲器或者處理器寄存器中的標(biāo)記或值,或者通過檢測跳線的存在、開關(guān)的位置或者用戶輸入進行。在一個實施例中,當(dāng)診斷測試將在電子設(shè)備上執(zhí)行時,由維護或維修人員設(shè)置模式標(biāo)記,然后,電子設(shè)備被重新啟動。引導(dǎo)加載程序或其它引導(dǎo)軟件代碼訪問存儲器中的模式標(biāo)記,以確定電子設(shè)備是將在診斷模式中還是在運行模式中啟動,并據(jù)此在處理器寄存器中設(shè)置值。該值指定所選擇的診斷模式,診斷軟件代碼包括用于檢查處理器寄存器的指令。在其它實施例中,可使用單獨的標(biāo)記或指示器選擇或設(shè)置診斷模式,該方法可實際上直接從步驟20處理到步驟24,而無需額外的干預(yù)模式設(shè)置操作。
在步驟24和28中確定所選擇的診斷模式。在步驟24和28中示出了分別的確定,以明確說明診斷模式間的相同和不同。然而,應(yīng)當(dāng)知道在其它實施例中,可實現(xiàn)單獨的確定操作。例如,在另一個實施例中,實現(xiàn)了基于模式標(biāo)記值的一對多分支操作,例如C switch語句。
在已設(shè)置了非交互式現(xiàn)場模式時,如在步驟24確定的,在步驟26執(zhí)行不需要任何與用戶的交互的診斷測試。非交互式現(xiàn)場模式提供無人看管的診斷,這在維護或維修人員在遠(yuǎn)程點或者診斷將在多個電子設(shè)備上運行時是首選。
還提供制造診斷模式。例如,當(dāng)制造診斷模式已被設(shè)置并在步驟28檢測到時,在步驟30,在位于制造或修理車間的測試或控制終端上顯示用戶接口。通過用戶接口,特定測試或者測試組和/或命令可以在例如命令行上選擇或另外輸入,并在步驟34執(zhí)行。在制造模式中執(zhí)行的診斷測試可涉及外部測試裝置,該裝置通常在現(xiàn)場設(shè)備中不可用。因此,制造模式可適用于配置前的電子設(shè)備,例如當(dāng)其離開裝配線時,或者在電子設(shè)備已被返回到制造商或賣主來進行故障分析之后。雖然希望在配置前或修理診斷期間通常首選交互式診斷模式,但是本發(fā)明的其它實施例也提供非交互式制造模式。
在圖2的示例性方法中,提供了三個診斷模式,包括上面所述的非交互式現(xiàn)場模式和制造模式,以及交互式現(xiàn)場模式。在步驟24和28中的否定確定表明交互式現(xiàn)場模式已被設(shè)置。在步驟32顯示現(xiàn)場用戶接口,通過該接口可以選擇特定的測試和命令。制造用戶接口和現(xiàn)場用戶接口可以實質(zhì)上相似,具有可能不同的可用測試和命令。例如,涉及外部測試裝置的測試和命令對于現(xiàn)場用戶接口的選擇可能不可用。
雖然交互式現(xiàn)場模式是現(xiàn)場診斷模式,但是應(yīng)當(dāng)知道現(xiàn)場用戶接口沒必要顯示在物理上與被測試的電子設(shè)備位于一處的終端或系統(tǒng)上。在支持遠(yuǎn)程控制診斷的實施例中,現(xiàn)場用戶接口可顯示在位于遠(yuǎn)程點的終端上。
在步驟36,在診斷完成后,被測試的電子設(shè)備被重新啟動。對于基于標(biāo)記的模式選擇,優(yōu)選地,模式標(biāo)記被清除或設(shè)置為表明運行模式,以使電子設(shè)備在下次引導(dǎo)操作中重新開始正常的運行??蛇x擇地,電子設(shè)備的重啟可以是對用戶或者沒有錯誤或故障的診斷測試的完成的重啟命令或功能的輸入或選擇的響應(yīng)。
根據(jù)上面圖2的說明,很顯然,現(xiàn)場診斷模式和制造診斷模式具有各自的相關(guān)診斷測試組。在優(yōu)選的實施例中,現(xiàn)場診斷模式測試組包括制造診斷模式測試組的子集。例如,制造診斷模式測試組可包括與電子設(shè)備的內(nèi)部組件相關(guān)的內(nèi)部診斷測試和與外部測試裝置相關(guān)的外部診斷測試,而現(xiàn)場診斷模式測試組可包括內(nèi)部診斷測試。同樣地,非交互式模式測試組可以是完整的現(xiàn)場診斷模式測試組的子集,包括無需任何用戶輸入或交互就能運行的現(xiàn)場診斷模式測試。
圖2的方法的變形對于本領(lǐng)域技術(shù)人員來說是顯而易見的。例如,圖2中現(xiàn)場交互模式實際上是缺省模式,這時非交互式現(xiàn)場模式和制造模式都沒有被設(shè)置。在另一個實施例中,錯誤或故障處理在沒有任何可用模式被設(shè)置的情況下執(zhí)行。在這種情況下,在圖2中可提供現(xiàn)場交互式模式的第三確定步驟,或者在一對多的分支實現(xiàn)中可提供另一個分支路徑,例如錯誤處理是顯示錯誤信息,以響應(yīng)在所有模式確定步驟的否定確定。
如果沒有確定有效的模式,則其它錯誤處理功能也是可設(shè)想的。例如,如果從處理器寄存器或其他裝置傳遞的啟動模式值丟失或者無效,則診斷軟件代碼可嘗試自動檢測被測試的電子設(shè)備上的接口,或者更嚴(yán)格地說,自動檢測另一個設(shè)備或者系統(tǒng)當(dāng)前是否連接在接口上。在一個實施例中,這通過向接口發(fā)送預(yù)定的字符或者其他數(shù)據(jù)樣式,然后等待響應(yīng)來實現(xiàn)。外部設(shè)備,例如在外部計算機系統(tǒng)上運行的測試執(zhí)行體,識別這些字符并向被測試的設(shè)備返回響應(yīng)。優(yōu)選地,響應(yīng)包括使診斷軟件代碼可以在合適的模式中啟動的標(biāo)識符。當(dāng)沒有接收到響應(yīng)時,診斷軟件代碼可接著在預(yù)定的缺省模式中啟動。缺省模式是現(xiàn)有的有效模式中的一個,例如在編譯時指定。
優(yōu)選地,診斷軟件代碼是基于命令調(diào)度模型的單線程、運行到完成任務(wù)。為了防止故障硬件損壞診斷軟件,在每次調(diào)用命令或功能之前保存電子設(shè)備的狀態(tài),或者至少電子設(shè)備的處理器的狀態(tài)。如果例如在命令執(zhí)行、訪問無效的存儲位置期間出現(xiàn)可恢復(fù)的處理器異?;蛘咂渌e誤,那么異常的原因可被識別,并且可恢復(fù)之前的電子設(shè)備或者處理器狀態(tài)。根據(jù)本發(fā)明的另一個實施例的方法在圖3的流程圖中示出,該方法支持這種類型的狀態(tài)恢復(fù)。
該方法從步驟40開始,這時接收到命令或功能調(diào)用。本領(lǐng)域技術(shù)人員可知道,命令或功能調(diào)用可在步驟40從診斷軟件代碼本身、從通過診斷軟件代碼提供的用戶接口,或者通過另一個電子設(shè)備發(fā)送的消息接收。圖3的方法決不局限于命令或功能調(diào)用的特定來源。
接收到的命令或功能調(diào)用在步驟42被解析或者另外處理成一種格式,該格式可由診斷軟件代碼段或者負(fù)責(zé)執(zhí)行實際命令或功能的電子設(shè)備組件識別。在圖3的方法中,在步驟44檢查命令或功能的有效性。命令或功能的有效性可以例如基于預(yù)定的語法、命令中的數(shù)據(jù)完整性校驗信息、或者一組定義的或可用的命令或功能來確定。在步驟46,無效的命令或功能導(dǎo)致錯誤被顯示。還可執(zhí)行其他的錯誤處理。
如果命令有效,如在步驟44確定的,那么在步驟48,將電子設(shè)備或者其處理器的當(dāng)前狀態(tài)存儲在存儲器中。在步驟48保存處理器的狀態(tài)可包括將一組特定的處理器寄存器的內(nèi)容保存在存儲器(通常是RAM)中,使得如果代碼執(zhí)行錯誤產(chǎn)生軟件代碼不能再安全運行的反?;虍惓G闆r,則可以從存儲器中恢復(fù)處理器的內(nèi)容?;謴?fù)處理器狀態(tài)可使處理器返回完全相同的指令,該指令在存儲器狀態(tài)被保存時正在執(zhí)行,但是優(yōu)選地,具有某些方式來表明處理器剛剛從反常的狀態(tài)返回,以使處理器能在不同的路徑上繼續(xù)。
由于在步驟48存儲狀態(tài)的一個目的是在異常和可能其它的錯誤或故障后提供恢復(fù),因此優(yōu)選地,將狀態(tài)存儲在非易失性存儲設(shè)備中。處理器狀態(tài)可代替存儲在易失性存儲器中,與軟件產(chǎn)生的大部分其它數(shù)據(jù)一樣。如果錯誤損壞了存儲處理器狀態(tài)的易失性存儲區(qū)域,則它也可能損壞軟件代碼本身或運行軟件代碼所需的其它數(shù)據(jù),使得不可能從錯誤中恢復(fù)。因此,將處理器狀態(tài)存儲在非易失性存儲器中不能在軟件執(zhí)行期間提供實質(zhì)的優(yōu)點,但是可在隨后用于危險故障的根本原因分析。和這里所描述的其它數(shù)據(jù)存儲一樣,狀態(tài)信息存儲可在專用存儲設(shè)備中提供或者作為共享存儲設(shè)備中的多個數(shù)據(jù)存儲中的一個提供。
在步驟50,將命令發(fā)送到組件或者代碼段,并執(zhí)行。執(zhí)行命令或功能的特定單元可取決于電子設(shè)備的硬件和軟件體系結(jié)構(gòu)。
如果在執(zhí)行命令或功能時,在步驟52檢測到錯誤,那么存儲的狀態(tài)信息在步驟54用于恢復(fù)錯誤前的電子設(shè)備或處理器的狀態(tài),并且在步驟46顯示錯誤消息。根據(jù)前述的內(nèi)容,明顯地,命令或功能可與檢測錯誤或故障的診斷測試有關(guān)。然而,應(yīng)當(dāng)知道,在圖3的環(huán)境中,與使用診斷軟件代碼檢測的錯誤相對,在步驟52的錯誤是在診斷軟件代碼執(zhí)行中的錯誤。雖然這些類型的錯誤可以有些相關(guān),但是由于在診斷模式中檢測到的硬件組件故障也可導(dǎo)致執(zhí)行錯誤,因此本發(fā)明的實施例主要用于檢測診斷錯誤或故障(不必是執(zhí)行錯誤),并盡可能地將其記入日志。然而,在某些實施例中,執(zhí)行錯誤也被記入日志,這樣的錯誤可指出特定的設(shè)備不能再被訪問,或者指出測試已經(jīng)影響了診斷軟件代碼的完整性。
在錯誤恢復(fù)或者完成沒有錯誤的命令或功能后,該方法返回步驟40,接收另一個命令或功能調(diào)用。因此,診斷軟件代碼可支持多個命令或功能調(diào)用,優(yōu)選地,在每個命令或功能執(zhí)行前存儲電子設(shè)備或處理器的狀態(tài),如上面充分說明的。
前面的說明主要涉及根據(jù)本發(fā)明的實施例的方法。圖4是可實現(xiàn)本發(fā)明的實施例的電子設(shè)備的框圖。圖4中示例性的電子設(shè)備65包括相互連接的存儲器60、接口62和處理器64。
優(yōu)選地,存儲器60包括固態(tài)存儲設(shè)備,并可包括多個存儲設(shè)備和多個不同類型的存儲設(shè)備,如將在下文參照圖5更詳細(xì)地描述的。至少專用診斷軟件代碼和運行軟件代碼存儲在存儲器60中,例如存儲在存儲器60的各自的存儲區(qū)域或存儲設(shè)備中。
處理器64是用于執(zhí)行軟件代碼的微處理器或者其它類型的處理設(shè)備。根據(jù)本發(fā)明的一個實施例,處理器64在電子設(shè)備65的診斷模式和運行模式中分別執(zhí)行診斷軟件代碼或者運行軟件代碼。在其它實施例中,處理器64還可執(zhí)行其它軟件代碼。
在運行中,處理器64確定電子設(shè)備65是將運行在診斷模式中還是在運行模式中,并執(zhí)行存儲在存儲器60中的診斷軟件代碼或者運行軟件代碼。診斷軟件代碼和運行軟件代碼的特征和功能已經(jīng)在上面詳細(xì)地描述過。
圖5是包括多個存儲設(shè)備的示例性存儲器的框圖。存儲器66包括非易失性存儲設(shè)備68和72,以及易失性存儲設(shè)備70。非易失性存儲設(shè)備68示例性地是串行電可擦除可編程ROM(SEEP)設(shè)備,易失性存儲設(shè)備70示例性地是RAM,非易失性存儲設(shè)備72示例性地是閃存設(shè)備。
在一個實施例中,SEEP設(shè)備68是相對較小的閃存設(shè)備,用于存儲標(biāo)記,包括上面所述的模式標(biāo)記。然后,處理器64可以通過訪問SEEP設(shè)備68中的標(biāo)記來確定是執(zhí)行專用診斷軟件代碼還是運行軟件代碼。
根據(jù)另一個實施例,在診斷模式中生成的診斷測試的結(jié)果也存儲在SEEP設(shè)備68中。在這種情況下,SEEP設(shè)備68中預(yù)定的各個部分可專門用于測試結(jié)果和專門用于模式標(biāo)記和其它可能的標(biāo)記或數(shù)據(jù)。根據(jù)一個實施例,SEEP設(shè)備是1024字的存儲設(shè)備,其中前64個字被保留用于模式標(biāo)記和其它引導(dǎo)參數(shù),其它960個字被保留用于包括測試結(jié)果的診斷數(shù)據(jù)。在本發(fā)明的另一個實施例中,處理器或設(shè)備狀態(tài)信息同樣存儲在SEEP設(shè)備68中,以允許隨后的基于處理器狀態(tài)的根本原因或其它故障分析。可選地,一個或者多個單獨的存儲設(shè)備可用于存儲診斷測試結(jié)果和狀態(tài)信息。
在許多電子設(shè)備中,軟件代碼被處理器加載到易失性存儲器中執(zhí)行。在圖5中,閃存設(shè)備72是存儲診斷軟件代碼和運行軟件代碼的應(yīng)用程序存儲庫,軟件代碼可被處理器64從閃存設(shè)備72中加載到RAM 70中執(zhí)行。這個加載功能可以例如在引導(dǎo)操作中由引導(dǎo)加載程序執(zhí)行。RAM 70也可用于存儲其它數(shù)據(jù),例如包括由診斷軟件代碼或運行軟件代碼生成的數(shù)據(jù)。根據(jù)本發(fā)明的一個實施例,處理器狀態(tài)存儲在RAM 70中用于錯誤恢復(fù)。
對于本領(lǐng)域的技術(shù)人員來說,除了圖5中所示的示例性裝置外,其它功能、數(shù)量和類型的存儲設(shè)備是顯而易見的。例如,至少引導(dǎo)軟件代碼的重啟代碼部分通常存儲在與應(yīng)用程序存儲器分開的專用存儲設(shè)備中。某些類型的電子設(shè)備,例如電路卡,結(jié)合雙閃存庫來存儲軟件程序代碼的鏡像。雙閃存庫通常用于冗余和升級。一個庫是活動的,即當(dāng)前正在使用的,而另一個是不活動的。當(dāng)進行升級時,新的軟件被復(fù)制到不活動的閃存庫,該閃存庫的活動性狀態(tài)被交換,設(shè)備使用新升級的閃存庫重啟。如果閃存庫的一個受到損壞,則先前活動的包括舊的軟件的閃存庫用新的軟件固件重寫,從而提供冗余。
也設(shè)想不同程度的存儲設(shè)備共享,從每個數(shù)據(jù)(per-data)存儲專用存儲設(shè)備到將所有數(shù)據(jù)存儲實現(xiàn)為單個存儲設(shè)備中的存儲區(qū)域的單獨共享存儲設(shè)備。許多電子設(shè)備實現(xiàn)共享和專用存儲設(shè)備的一些組合。
雖然在圖4中作為單個組件示出,但是接口62可包括一個或者多個接口設(shè)備。單個接口設(shè)備也可向多于一個的用戶或者外部設(shè)備提供接口。例如,串行端口可用于與能夠通過串行連接發(fā)送和/或接收數(shù)據(jù)的任何設(shè)備交換數(shù)據(jù)。通過接口62,用戶可如上所述的在制造或交互式現(xiàn)場診斷模式中控制電子設(shè)備65的診斷測試,或者提供對如存儲在存儲器60中的診斷測試結(jié)果的數(shù)據(jù)的訪問。
圖6是包括多個接口設(shè)備的示例性接口的框圖。圖6中的接口80包括串行接口設(shè)備82,顯示器接口設(shè)備84,鍵盤接口設(shè)備86,和鼠標(biāo)接口設(shè)備88,其實例對于本領(lǐng)域技術(shù)人員來說是顯而易見的。在圖6中示出的特定接口是為了示例性的目的。根據(jù)電子設(shè)備的類型和它具有的組件,電子設(shè)備可包括除了圖6中所示的接口之外更多、更少或者不同的接口。例如,電路卡可只包括用于和外部控制終端或計算機系統(tǒng)進行通信的串行接口設(shè)備82,如串行端口。具有顯示器的電子設(shè)備也可包括顯示器接口設(shè)備84。
串行接口設(shè)備82是一種接口的一個示例性的例子,通過該接口可與其它電子設(shè)備或者系統(tǒng)交換信息。其它可能的接口包括那些與各種類型的通信信道和/或協(xié)議有關(guān)的接口,如以太網(wǎng)鏈路,通用串行總線(USB)鏈路或者實際上任何其它類型的標(biāo)準(zhǔn)或私有接口。接口也可實現(xiàn)為通過通信信道向另一個電子設(shè)備傳送的專用端口或數(shù)據(jù)分組(例如TCP/IP,ATM信元)。
在交互式診斷模式中,信息通過接口62或者接口80中的接口設(shè)備82,84,86,88進行傳輸。在交互式診斷模式中,信息也可通過多于一個的接口設(shè)備進行傳輸。例如,用戶接口可通過顯示器接口設(shè)備84向用戶顯示,用于命令或功能輸入或選擇的用戶輸入可通過鍵盤接口設(shè)備86或鼠標(biāo)接口設(shè)備88接收。
根據(jù)另一個實施例,信息在電子設(shè)備接口62和外部計算機系統(tǒng)或者終端之間交換,該外部計算機系統(tǒng)或者終端通過單個接口設(shè)備向輸入和輸出設(shè)備提供接口。在上面具有串行端口的電路卡的例子中,信息可通過串行端口和串行連接傳送到控制終端,并且在控制終端向用戶顯示。然后,通過控制終端上的鍵盤、鼠標(biāo)或者其它輸入設(shè)備接收到的用戶輸入通過串行連接和串行端口傳送到電子設(shè)備。由于這種類型的交互式操作結(jié)合了外部設(shè)備或系統(tǒng),因此用戶輸入可通過串行接口設(shè)備82或者另一個提供與外部設(shè)備或系統(tǒng)交換數(shù)據(jù)的接口接收。
因此,很顯然,用戶接口可使用電子設(shè)備組件在本地提供,或者使用在遠(yuǎn)程系統(tǒng)或設(shè)備上實現(xiàn)的組件遠(yuǎn)程提供。
接口62或者具有多個接口的電子設(shè)備的一個或多個接口設(shè)備的另一個功能是提供對存儲的診斷測試結(jié)果的訪問。根據(jù)一個實施例,接口62提供對存儲在存儲器60中的測試結(jié)果數(shù)據(jù)的直接訪問。直接存儲器訪問有效地繞過處理器64來進行存儲器訪問操作,并因此甚至在電子設(shè)備不能正確地啟動時或者在主電源不能應(yīng)用于電子設(shè)備時,也提供對測試結(jié)果的訪問。例如,在一個實施例中,電源被本地應(yīng)用于存儲器60中的存儲設(shè)備,然后,使用專用端口取回存儲在存儲設(shè)備中的信息。這無需必須啟動或者甚至將主電源應(yīng)用于電子設(shè)備就能實現(xiàn)。例如,在電子設(shè)備已出現(xiàn)故障或者因為某個其它原因已經(jīng)從正常的運行環(huán)境中移走并返回到制造商或賣主分析后,診斷日志因此可保持可用。本領(lǐng)域技術(shù)人員熟悉許多合適的直接存儲器訪問協(xié)議和機制,通過這些協(xié)議和機制,可提供以這種方式訪問診斷測試結(jié)果。
電子設(shè)備65中的接口62也可以使診斷測試結(jié)果能夠傳輸?shù)酵獠吭O(shè)備或系統(tǒng)。雖然在電子設(shè)備上存儲測試結(jié)果可更好地提供后來的分析,但是測試結(jié)果也可以或替代地在收集測試結(jié)果時或者在診斷測試完成后,通過接口62傳送到例如一個或多個遠(yuǎn)程點分析。
本發(fā)明的實施例也可以在包含多個處理器的電子設(shè)備中實現(xiàn)。圖7是多處理器電子設(shè)備的例子。電子設(shè)備99包括存儲器90,接口92,和處理器94,96,98,其實質(zhì)上可以與上面參照圖4-6所述的存儲器、接口和處理器組件相似。
在多處理器電子設(shè)備的情況下,當(dāng)電子設(shè)備運行在診斷模式中時,每個處理器94,96,98運行它們自己的診斷軟件代碼實例。在運行模式中,每個處理器94,96,98可同樣地執(zhí)行運行軟件代碼。用于多處理器電子設(shè)備99的運行軟件代碼可包括由所有處理器94,96,98執(zhí)行的公共軟件代碼,由處理器94,96,98或者它們的組合執(zhí)行的各自的軟件代碼,例如不同的軟件應(yīng)用程序。
處理器中的一個,電子設(shè)備99中的處理器94,可被指定為主處理器。優(yōu)選地,主處理器94確定電子設(shè)備99是將運行在診斷模式中還是在運行模式中,從處理器96和98被配置為在主處理器94的控制下執(zhí)行診斷軟件代碼。在運行模式下的主/從處理器的運行可實質(zhì)上相似,用主處理器94控制從處理器96、98的運行或者某些方面的運行。然而,用于診斷模式的主/從處理器指定對于運行模式不需要維持。例如,處理器94,96,98中不同的一個可以是運行模式中的主處理器,或者處理器94,96,98可以對等運行在運行模式中。
如圖所示,接口92連接到主處理器94。在一個實施例中,所有通過接口92的信息傳送由主處理器94處理,并且處理器間的消息傳送用于提供用于在主處理器94和從處理器96,98之間的信息傳送的公共協(xié)議。還可提供超時值,以使處理器,例如主處理器94,能夠確定另一個處理器不響應(yīng)的時間。
主/從通信路徑的一個可能的實現(xiàn)是通過共享介質(zhì)的虛擬的通用異步接收機/發(fā)送機(UART)信道。這個虛擬信道的實現(xiàn)是依賴硬件的。例如,緩存器描述符可位于存儲器90中的存儲區(qū)域或設(shè)備中,該存儲器90在處理器94,96,98之間共享,以管理輸入和輸出緩存器,并在診斷模式下提供從處理器96,98的標(biāo)準(zhǔn)I/O支持運行。
處理器間的通信也可通過除了共享存儲器之外的其它類型的介質(zhì)實現(xiàn)。在每個處理器都具有相關(guān)的通信端口或接口時,通信可以通過這些端口或接口之間的連接建立。本發(fā)明決不局限于任何特定類型的處理器間介質(zhì)、通信鏈路或者協(xié)議。
在另一個實施例中,診斷軟件代碼可在透明交互模式中在主處理器94上執(zhí)行,在該模式中,例如通過接口92接收到的命令或功能輸入被傳送到從處理器96,98。來自從處理器96,98的消息同樣通過接口92被中繼傳送回用戶接口。這個特征使用戶能夠控制任何好象直接連接到接口的從處理器96,98。如上所述的在處理器94,96,98之間的共享存儲器或其它介質(zhì)可方便透明主處理器模式。
例如,主處理器94可通過經(jīng)由上面所述的任何接口接收到的命令被置于透明模式中。根據(jù)一個實施例,透明模式是將發(fā)往和來自從處理器96,98的所有通信直接中繼傳送到接口92的軟件功能。
也可以設(shè)想多級的等級體系,其中一個處理器對于某個處理器來說作為從處理器,而對一個或多個其它處理器來說作為主處理器。在這種情況下,用于“中間”處理器的透明模式,例如在圖7中的處理器96,涉及將發(fā)往和來自其從處理器98的消息中繼傳送到其歸于的主處理器94。
優(yōu)選地,從處理器在初始化期間使用標(biāo)記或其它設(shè)置配置,使其表現(xiàn)為從處理器,并使用正確的接口和消息傳送協(xié)議以與其主處理器進行通信。
在多處理器電子設(shè)備99中的診斷模式功能和運行實質(zhì)上可如上所述。然而,對于多處理器電子設(shè)備,處理器間診斷功能的分配也是可能的。例如,在處理器94,96,98在電子設(shè)備中不同的互連的電路卡中實現(xiàn)時,每個處理器可執(zhí)行各自的診斷軟件代碼或診斷軟件代碼的各自的段。
處理器94,96,98也可具有專用資源,包括存儲器90中的存儲設(shè)備或區(qū)域和/或在接口92中的接口設(shè)備。處理器94,96,98可在存儲器90中具有各自的相關(guān)存儲資源,以存儲例如診斷測試結(jié)果或狀態(tài)信息。同樣地,由各個處理器執(zhí)行的不同的診斷軟件代碼或運行軟件代碼也可以存儲在與每個處理器相關(guān)的存儲設(shè)備或區(qū)域內(nèi)。存儲器90和接口92中共享和專用資源的組合也是可以的。例如,在處理器94,96,98設(shè)置在電子裝置的不同組件中(如上面所述的例子中的電路卡)的實施例中,可能希望專用資源。
圖8是根據(jù)本發(fā)明的一個實施例的示例性數(shù)據(jù)結(jié)構(gòu)的框圖,用于圖7的多處理器電子設(shè)備99。圖8的數(shù)據(jù)結(jié)構(gòu)可存儲在例如應(yīng)用程序存儲器中,如閃存設(shè)備。
標(biāo)頭(header)100可包括如指向其它存儲內(nèi)容的存儲器地址的指針的信息,例如,加載程序102,104,106,應(yīng)用程序108,110,112和診斷軟件代碼114的任何一個的啟始位置。
主加載程序102,從加載程序#1104,從加載程序#2106代表當(dāng)電子設(shè)備啟動時由主處理器和兩個從處理器執(zhí)行的引導(dǎo)軟件代碼。初始化和其它啟動運行在加載程序102,104,106的控制下執(zhí)行。
如上所述,多處理器電子設(shè)備中的每個處理器可被配置為執(zhí)行各自不同的運行軟件代碼,在圖8中用軟件應(yīng)用程序108,110,112表示。因此,很顯然,圖8給出了共享存儲器裝置,其中單個存儲設(shè)備存儲與多個處理器相關(guān)的信息。
圖8的數(shù)據(jù)結(jié)構(gòu)還包括診斷軟件代碼114。使用位于應(yīng)用程序存儲器中的專用診斷軟件代碼,就可以執(zhí)行更詳盡的現(xiàn)場診斷。在圖8所示的實施例中,即使主處理器和從處理器在運行模式下執(zhí)行不同的運行軟件代碼108,110,112,相同的診斷軟件代碼114也可在診斷模式下由所有的處理器執(zhí)行。根據(jù)另一個實施例,為每個處理器提供不同的診斷軟件代碼。
根據(jù)本發(fā)明一個實施例的主加載程序102的一個功能是確定電子設(shè)備是將運行在診斷模式中還是在正常的運行模式中,并將診斷軟件代碼114或主應(yīng)用程序108從應(yīng)用程序存儲器加載到執(zhí)行存儲器(例如RAM)中執(zhí)行。每個從加載程序104,106可同樣地將診斷軟件代碼114或應(yīng)用程序110,112加載到各自的執(zhí)行存儲器或存儲區(qū)域中,由其處理器執(zhí)行。在一個實施例中,診斷模式或運行模式的確定由在主加載程序102控制下的主處理器進行,而從加載程序104,106響應(yīng)主處理器的模式確定。主處理器可以在存儲位置中設(shè)置例如指明設(shè)備將運行在何種模式中的標(biāo)記或值,該存儲位置隨后被從加載程序104,106訪問。可選擇地,模式標(biāo)記由每個加載程序102,104,106訪問以確定電子設(shè)備的模式。
圖8的數(shù)據(jù)結(jié)構(gòu)代表本發(fā)明的一個特定實施例,其中診斷軟件代碼由加載程序加載,并在多處理器電子設(shè)備啟動時執(zhí)行。也可以設(shè)想其它的實施例。例如在單處理器電子設(shè)備中,通常只提供一個加載程序。根據(jù)電子設(shè)備的類型,一個或者多個軟件應(yīng)用程序可存儲在應(yīng)用程序存儲器中。
圖9是根據(jù)本發(fā)明的一個實施例的診斷軟件代碼體系結(jié)構(gòu)的框圖。診斷軟件代碼包括多個軟件代碼模塊,軟件代碼模塊包括現(xiàn)場接口120,制造接口122,ODRE內(nèi)核124,測試應(yīng)用編程接口(API)126,命令模塊128,測試功能130,硬件初始化模塊132,硬件抽象模塊134,和設(shè)備驅(qū)動器136。雖然嚴(yán)格地說電子設(shè)備硬件138不是軟件模塊,但是通常示出電子設(shè)備硬件138以指出診斷軟件代碼和電子設(shè)備硬件之間的交互。
在圖9中示出的體系結(jié)構(gòu)是基于簡單軟件基礎(chǔ)結(jié)構(gòu)的,其通過將硬件依賴性分離成特定的軟件模塊132,134來方便軟件代碼的重復(fù)使用。從而提供一種靈活和便攜的體系結(jié)構(gòu),其中基本ODRE內(nèi)核124可以在各種類型的目標(biāo)電子設(shè)備上實現(xiàn),包括單處理器電子設(shè)備,多處理器電子設(shè)備,或電子裝置中的主電子設(shè)備和從電子設(shè)備。
ODRE內(nèi)核124是ODRE體系結(jié)構(gòu)的核心,優(yōu)選地,其獨立于硬件。當(dāng)訪問基于內(nèi)核的業(yè)務(wù)如顯示信息或報告錯誤時,ODRE內(nèi)核124向所有測試功能130提供編程接口126使用,優(yōu)選地,該內(nèi)核是基于命令調(diào)度程序模式的單任務(wù)環(huán)境。這種模式的特征在于固有的簡單性和小的代碼大小。優(yōu)選地,也可作為單線程運行低級診斷,以防止由其它線程產(chǎn)生的異常干擾當(dāng)前的測試。這種情況不必使故障分離和識別進程復(fù)雜。
在ODRE內(nèi)核中的命令調(diào)度程序提供上面所述的命令解析功能。有效的命令被發(fā)到命令模塊128,在這里例如如果存在任何參數(shù)時,則每個命令功能負(fù)責(zé)檢查相關(guān)的參數(shù)。
在多處理器電子設(shè)備的情況下,位于主處理器上的ODRE內(nèi)核124也管理處理器間的通信,并在某些實施例中,被設(shè)置在上面所述的透明模式中。
優(yōu)選地,測試功能130在ODRE內(nèi)核124中的簡單測試排序模塊的控制下執(zhí)行。該模塊允許用戶控制例如運行哪個測試和在什么條件(循環(huán)、錯誤時暫停等等)下。
在電子設(shè)備上用于軟件代碼的全部代碼空間需求可通過支持例如本發(fā)明實施例中的在診斷軟件代碼和運行軟件代碼之間的代碼共享減少。然而,在如上所述的本發(fā)明的優(yōu)選實施例中,診斷軟件可無需完整的電子設(shè)備的初始化或引導(dǎo)就執(zhí)行。因此,任何共享代碼,例如設(shè)備驅(qū)動器136,可在兩個分開和不同的環(huán)境中,在應(yīng)用程序或運行模式和ODRE中或在診斷模式中調(diào)用。因此,只在這些環(huán)境中的一個中可用的任何依賴數(shù)據(jù)結(jié)構(gòu)的代碼和/或?qū)嵱霉δ芸稍谄渌h(huán)境中不正確地編譯或執(zhí)行。
因此,測試API 126提供例行程序和結(jié)構(gòu),其使共享代碼可以在診斷模式環(huán)境中編譯、鏈接和執(zhí)行,而無需重新生成共享代碼另外可依賴的所有運行模式數(shù)據(jù)結(jié)構(gòu)或功能。因此,當(dāng)為設(shè)備驅(qū)動器136生成依賴某種類型的運行模式時,對共享功能的訪問可通過測試API 126提供。然后,共享功能可在兩個環(huán)境中的任一個中實現(xiàn),進而設(shè)備驅(qū)動器136和ODRE診斷是便攜的。代碼存根(code stubbing)技術(shù)也可用于特定例行程序以在診斷模式和運行模式中共享。
對于代碼存根不充分的例行程序,依附于測試API 126的通電診斷也與ODRE內(nèi)核124兼容。測試API 126可提供雙重功能的功能例子包括通電診斷報告,存儲器管理,和基于任務(wù)的計時器。
測試功能130是軟件模塊的集合,這些模塊包括可在ODRE和應(yīng)用程序環(huán)境之間共享的實際內(nèi)嵌測試。優(yōu)選地,只要可能,測試功能130被設(shè)計為相關(guān)設(shè)備驅(qū)動器136的一部分。該方法提高了代碼共享,并可減少與新的設(shè)備驅(qū)動器和測試功能相關(guān)的“學(xué)習(xí)曲線”。測試功能130基于測試API 126與ODRE內(nèi)核124相連,測試API 126例如規(guī)定參數(shù)列表和返回值的定義。
通常,測試功能130嘗試獨立驗證其它硬件的特定硬件功能模塊,以方便故障分離。優(yōu)選地,測試功能不依賴任何在測試功能本身之外調(diào)用的例行程序的執(zhí)行。
例如,在每次測試之前和之后調(diào)用的一般啟動和清除環(huán)境功能代表該總指導(dǎo)方針的兩個可能的異常。這些功能的一個目的在于通過在運行測試前適當(dāng)?shù)爻跏蓟蛘吡硗馀渲秒娮釉O(shè)備或者其任何組件,以及在測試已經(jīng)執(zhí)行后向電子設(shè)備返回預(yù)定狀態(tài),使每次測試可以獨立運行。因此,被測試的電子設(shè)備可在測試中保持處于預(yù)定的狀態(tài),由此不是診斷軟件代碼的運行必需的所有組件可以不起作用。然后,每個測試從已知的運行條件開始。
然而,應(yīng)當(dāng)知道,預(yù)定的測試開始狀態(tài)并不總是理想的。例如,某些組件會花費相對長的時間來初始化,因此如果這些組件中的任何組件在測試中重新初始化,那么就潛在地大大增加了運行一組測試所花費的時間。因此,本發(fā)明的實施例可用或者不用這種類型的測試運行環(huán)境控制功能實現(xiàn)。
根據(jù)一個實施例,測試功能130提供詳細(xì)模式和調(diào)試模式,其中詳細(xì)模式在測試執(zhí)行期間提供狀態(tài)信息,以指出活動的測試的進展;調(diào)試模式提供詳細(xì)的錯誤信息,以幫助故障目標(biāo)電子設(shè)備的調(diào)試。
硬件初始化模塊132和硬件抽象模塊134代表圖9體系結(jié)構(gòu)中的硬件依賴模塊。
硬件初始化模塊132是ODRE基礎(chǔ)結(jié)構(gòu)中的入口點,并使最少的需求功能能夠支持ODRE內(nèi)核124。由硬件初始化模塊132執(zhí)行的初始化功能可包括例如設(shè)置特定編程語言的寄存器,例如C語言環(huán)境;在這些寄存器的最后位置安置異常向量;執(zhí)行附加電子設(shè)備和/或處理器的初始化;以及用C標(biāo)準(zhǔn)庫函數(shù)重新初始化UART進行使用。
硬件抽象模塊134向ODRE內(nèi)核124提供硬件依賴支持功能和特定運行時間服務(wù)。這些服務(wù)可包括異常和不確定中斷的處理、低級UART接口功能、定時器和軟件看門狗。優(yōu)選地,該模塊還包括兩個補充功能一個是在每次測試前建立目標(biāo)電子設(shè)備,另一個是在每次測試后進行清除,使得電子設(shè)備在每次測試之前和之后總是處于已知的狀態(tài)。
優(yōu)選地,所有不需要外部測試裝置或者回環(huán)的診斷在現(xiàn)場是可使用現(xiàn)場接口模塊120訪問的。在交互式現(xiàn)場診斷模式中,現(xiàn)場接口模塊120使用戶接口(例如標(biāo)準(zhǔn)的VT終端接口)在電子設(shè)備上或者在上面所述的遠(yuǎn)程系統(tǒng)或設(shè)備上顯示。該運行模式使用戶可以觀看基于文本的菜單和在需要時執(zhí)行例如特定的測試或低級調(diào)試命令。交互式現(xiàn)場模式還在硬件或者軟件設(shè)計者對電子設(shè)備的硬件完整性懷疑時有用。
制造診斷模式可利用基于PC的測試執(zhí)行體或者其他測試裝置提供的便利。在這種模式下,用戶與測試執(zhí)行體進行交互,該執(zhí)行體依次向目標(biāo)電子設(shè)備發(fā)送適當(dāng)?shù)拿?。該模式也可以例如通過向顯示用戶消息窗口發(fā)送格式化的命令串,利用該測試執(zhí)行體的附加測試和圖形能力。制造接口模塊122代表駐留在電子設(shè)備上的軟件代碼,以支持與遠(yuǎn)程系統(tǒng)或設(shè)備的交互。
雖然這種類型的外部設(shè)備交互被認(rèn)為是最經(jīng)常與制造診斷模式結(jié)合使用,但是應(yīng)當(dāng)知道,相似的顯示和控制功能可在交互式現(xiàn)場診斷模式中擴展到遠(yuǎn)程系統(tǒng)。
從而,本發(fā)明的實施例提供相對于傳統(tǒng)的電子設(shè)備診斷技術(shù)改進的功能測試。在優(yōu)選的實施例中,用于現(xiàn)場診斷的診斷軟件代碼與用于制造或修理功能測試的代碼的子集實質(zhì)上相同。
當(dāng)制造電子設(shè)備時,專用診斷軟件代碼可被加載到電子設(shè)備的存儲器中,并被執(zhí)行以進行功能測試。用于在制造后第一次啟動電子設(shè)備的初始引導(dǎo)軟件代碼可被配置為確定物理跳線是否存在,以及當(dāng)檢測到跳線時,通過串行端口或其它接口將診斷軟件代碼從外部資源中加載到存儲器中。
有可能在電子設(shè)備已經(jīng)通過所有功能測試并且上述跳線(如果存在)已經(jīng)移開之后,運行軟件代碼接著也被加載到存儲器中。診斷軟件代碼和運行軟件代碼可以使用相同的接口或者不同的接口加載到電子設(shè)備的存儲器中。
從那以后,專用診斷軟件代碼或運行軟件代碼在電子設(shè)備的診斷模式和運行模式中執(zhí)行。如上所述,一組完整的功能測試在制造診斷模式中可用,而該組完整的功能測試的子集在現(xiàn)場診斷模式中可用。
根據(jù)一個實施例,診斷軟件代碼首先被加載到易失性存儲設(shè)備中執(zhí)行。然后,如果電子設(shè)備通過功能測試,那么運行軟件代碼和診斷軟件代碼被加載到非易失性存儲設(shè)備中。
如這里所述的分別可執(zhí)行的診斷軟件代碼和運行軟件代碼提供另一個優(yōu)點,即允許診斷測試結(jié)果獨立于運行軟件代碼生成和訪問。不管運行軟件代碼能否在設(shè)備上執(zhí)行,診斷可以在電子設(shè)備上運行,并且通過例如在存儲器中存儲用于隨后的訪問的結(jié)果提供對結(jié)果的訪問。雖然在正常的運行模式下,診斷測試結(jié)果也可以在電子設(shè)備隨后的運行期間由運行軟件代碼訪問,但是本發(fā)明的實施例提供了一種交替的訪問機制,例如通過電子設(shè)備的接口。
所述的內(nèi)容僅僅是本發(fā)明原理的應(yīng)用示例。不脫離本發(fā)明,本領(lǐng)域技術(shù)人員可以實現(xiàn)其它的裝置和方法。
例如,診斷軟件代碼和運行軟件代碼可以包括不同類型的軟件代碼。在一個實施例中,診斷軟件代碼本身包括不同類型的軟件代碼,具有在裝配線和隨后的初始化和C代碼支持的診斷運行中編程的寄存器操作、數(shù)據(jù)段操作和依賴硬件的初始化操作。對于本領(lǐng)域技術(shù)人員來說,其它的特定軟件代碼實現(xiàn)是顯而易見的。
另外,這里公開的方法可以實現(xiàn)為計算機可讀介質(zhì)上的指令。專用診斷軟件代碼和運行軟件代碼中的一個或兩者也可存儲在同一個介質(zhì)上。
雖然上面已經(jīng)描述了存儲在電子設(shè)備上的軟件代碼的執(zhí)行,但是應(yīng)當(dāng)知道,本發(fā)明的實施例可包括其它可執(zhí)行的軟件代碼。例如,根據(jù)上面圖9的描述,診斷軟件代碼可包括在執(zhí)行前編譯的軟件模塊。對于本領(lǐng)域技術(shù)人員來說,其它形式的在執(zhí)行前處理的軟件代碼是顯而易見的,并且可用于實現(xiàn)本發(fā)明的實施例。因此,有關(guān)軟件代碼的執(zhí)行應(yīng)據(jù)此說明。
如上所述,診斷軟件代碼可在電子設(shè)備啟動時執(zhí)行。然而,當(dāng)在電子設(shè)備的正常運行期間檢測到故障后,運行軟件代碼也可以或替代地自動啟動診斷軟件代碼的執(zhí)行。盡管診斷軟件代碼是在電子設(shè)備的獨立離線模式中執(zhí)行的專用軟件代碼,但運行軟件代碼可支持除了電子設(shè)備的正常運行功能之外的其它功能。這些其它功能可包括在線診斷,其在運行軟件代碼的環(huán)境中作為后臺任務(wù)或者以某些其它方式執(zhí)行,以致不明顯影響運行軟件代碼的執(zhí)行。如果在線診斷檢測到錯誤或者故障,那么隨后的錯誤處理可掛起或終止運行軟件代碼的執(zhí)行和其它正常操作,但是實際的在線診斷可在運行軟件代碼的正常執(zhí)行期間執(zhí)行。
在在線診斷檢測到錯誤或者故障的情況下,運行軟件代碼可將控制傳遞給診斷軟件代碼而無需重新引導(dǎo)電子設(shè)備。因此,雖然上面主要在啟動或者引導(dǎo)運行的環(huán)境中描述診斷軟件代碼的執(zhí)行,但是應(yīng)當(dāng)知道,診斷軟件代碼的執(zhí)行可以例如通過運行軟件代碼在電子設(shè)備運行的其它時間啟動。
權(quán)利要求
1.一種運行電子設(shè)備的方法,在所述電子設(shè)備上存儲專用診斷軟件代碼和運行軟件代碼,所述方法包括確定所述電子設(shè)備是將運行在診斷模式中還是在運行模式中;當(dāng)所述電子設(shè)備將運行在診斷模式中時,在所述電子設(shè)備上執(zhí)行所述專用診斷軟件代碼;以及當(dāng)所述電子設(shè)備將運行在運行模式中時,在所述電子設(shè)備上執(zhí)行所述運行軟件代碼。
2.如權(quán)利要求1的方法,其中,所述確定步驟包括從操作組中選擇的操作,所述操作組包括訪問所述電子設(shè)備的存儲器中的存儲位置;在所述電子設(shè)備上檢測跳線的存在;在電子設(shè)備上檢測開關(guān)的位置;以及接收用戶輸入。
3.如權(quán)利要求1的方法,其中,所述確定步驟在所述電子設(shè)備的引導(dǎo)操作期間執(zhí)行。
4.如權(quán)利要求1至3中任一的方法,其中,所述專用診斷軟件代碼和所述運行軟件代碼存儲在所述電子設(shè)備的公共存儲器中。
5.如權(quán)利要求1至3中任一的方法,其中,執(zhí)行專用診斷軟件代碼包括將所述專用診斷軟件代碼加載到存儲器中執(zhí)行。
6.如權(quán)利要求5的方法,其中,執(zhí)行運行軟件代碼包括將所述運行軟件代碼加載到存儲器中執(zhí)行。
7.如權(quán)利要求1的方法,其中,所述確定步驟包括確定所述電子設(shè)備是否已選擇了多個診斷模式中的一個。
8.如權(quán)利要求7的方法,其中,所述多個診斷模式包括交互式模式和非交互式模式。
9.如權(quán)利要求7的方法,其中,所述多個診斷模式包括具有各自的診斷測試組的現(xiàn)場診斷模式和制造診斷模式,其中,所述現(xiàn)場診斷模式測試組包括所述制造診斷模式測試組的子集。
10.如權(quán)利要求1至3和7至9中任一的方法,其中,所述診斷軟件代碼包括用于在所述電子設(shè)備上執(zhí)行診斷測試的軟件代碼和用于將診斷測試的結(jié)果存儲在所述電子設(shè)備的存儲器中的軟件代碼。
11.如權(quán)利要求1至3和7至9中任一的方法,其中,所述專用診斷軟件代碼包括用于執(zhí)行命令的軟件代碼和用于在執(zhí)行所述命令前將所述電子設(shè)備的狀態(tài)存儲在存儲器中的軟件代碼。
12.如權(quán)利要求11的方法,其中,所述專用診斷軟件代碼還包括用于根據(jù)存儲的當(dāng)命令正在執(zhí)行時發(fā)生錯誤的地方的狀態(tài)恢復(fù)所述電子設(shè)備的狀態(tài)的軟件代碼。
13.如權(quán)利要求1至3和7至9中任一的方法,其中,所述運行軟件代碼包括用于在運行模式期間執(zhí)行在線診斷測試的軟件代碼和用于響應(yīng)在線診斷測試檢測到錯誤執(zhí)行所述專用診斷軟件代碼的軟件代碼。
14.如權(quán)利要求1至3和7至9中任一的方法,其中,所述電子設(shè)備是包括多個處理器的多處理器電子設(shè)備,其中,執(zhí)行所述專用診斷軟件代碼包括在所述多個處理器的每一個中執(zhí)行所述專用診斷軟件代碼,執(zhí)行所述運行軟件代碼包括在多個處理器的每一個中執(zhí)行所述運行軟件代碼。
15.如權(quán)利要求14的方法,其中,所述多個處理器包括主處理器,其中確定由所述主處理器執(zhí)行。
16.一種存儲指令的計算機可讀介質(zhì),其中所述指令在執(zhí)行時執(zhí)行權(quán)利要求1至3和7至9中任一的方法。
17.如權(quán)利要求16的計算機可讀介質(zhì),所述介質(zhì)還存儲所述專用診斷軟件代碼和所述運行軟件代碼中的至少一個。
18.一種電子設(shè)備,包括存儲專用診斷軟件代碼和運行軟件代碼的存儲器;以及處理器,其被配置為在所述電子設(shè)備的診斷模式中執(zhí)行所述專用診斷軟件代碼或在所述電子設(shè)備的運行模式中執(zhí)行所述運行軟件代碼。
19.如權(quán)利要求18的電子設(shè)備,其中,所述存儲器包括各自用于存儲所述專用診斷軟件代碼和所述運行軟件代碼的存儲設(shè)備。
20.如權(quán)利要求18或19的電子設(shè)備,其中,所述存儲器進一步被配置為存儲指出所述電子設(shè)備是將運行在診斷模式下還是在運行模式下的標(biāo)記,所述處理器進一步被配置為通過訪問所述標(biāo)記確定是將執(zhí)行所述專用診斷軟件代碼還是所述運行軟件代碼。
21.如權(quán)利要求20的電子設(shè)備,其中,所述存儲器包括多個存儲設(shè)備,所述多個存儲設(shè)備包括用于存儲所述標(biāo)記的存儲設(shè)備。
22.如權(quán)利要求18或19的電子設(shè)備,其中,所述存儲器包括用于存儲所述專用診斷軟件代碼和所述運行軟件代碼的非易失性存儲設(shè)備和易失性存儲設(shè)備,所述處理器進一步被配置為從所述非易失性存儲設(shè)備中將所述專用診斷軟件代碼或所述運行軟件代碼加載到所述易失性存儲設(shè)備中執(zhí)行。
23.如權(quán)利要求18或19的電子設(shè)備,其中,所述存儲器進一步被配置為存儲引導(dǎo)軟件代碼,所述處理器進一步被配置為在所述電子設(shè)備的引導(dǎo)操作期間執(zhí)行所述引導(dǎo)軟件代碼,所述引導(dǎo)軟件代碼包括用于確定所述電子設(shè)備是將運行在診斷模式中還是在運行模式中的軟件代碼。
24.如權(quán)利要求18或19的電子設(shè)備,其中,所述專用診斷軟件代碼包括用于支持多個診斷模式的軟件代碼。
25.如權(quán)利要求24的電子設(shè)備,其中,電子設(shè)備還包括接口,其中,所述多個診斷模式包括信息通過所述接口傳送的交互式模式。
26.如權(quán)利要求24的電子設(shè)備,其中,所述多個診斷模式包括具有各自的診斷測試組的現(xiàn)場診斷模式和制造診斷模式,其中,所述制造診斷模式測試組包括與所述電子設(shè)備的內(nèi)部組件相關(guān)的內(nèi)部診斷測試和與外部測試裝置有關(guān)的外部診斷測試,所述現(xiàn)場診斷模式測試組包括所述內(nèi)部診斷測試。
27.如權(quán)利要求18或19的電子設(shè)備,其中,所述診斷軟件代碼包括用于在所述電子設(shè)備上執(zhí)行診斷測試的軟件代碼和用于將診斷測試的結(jié)果存儲在所述存儲器中的軟件代碼。
28.如權(quán)利要求27的電子設(shè)備,其中,所述存儲器包括多個存儲設(shè)備,所述多個存儲設(shè)備包括用于存儲診斷測試結(jié)果的存儲設(shè)備。
29.如權(quán)利要求27的電子設(shè)備,其中,所述運行軟件代碼包括用于訪問診斷測試結(jié)果的軟件代碼。
30.如權(quán)利要求18或19的電子設(shè)備,其中,所述診斷軟件代碼包括多個軟件代碼模塊。
31.如權(quán)利要求30的電子設(shè)備,其中,所述多個軟件代碼模塊包括單任務(wù)命令調(diào)度程序內(nèi)核。
32.如權(quán)利要求31的電子設(shè)備,其中,所述多個軟件代碼模塊進一步包括從軟件模塊組選擇的至少一個軟件模塊,所述軟件模塊組包括測試應(yīng)用編程接口,命令軟件模塊,一個或多個測試功能軟件模塊,一個或多個硬件接口模塊,以及一個或多個用戶接口模塊。
33.如權(quán)利要求18或19的電子設(shè)備,其中,所述專用診斷軟件代碼包括用于執(zhí)行多個命令的軟件代碼和用于在執(zhí)行多個命令中的任何一個命令之前將所述處理器的狀態(tài)存儲在所述存儲器中的軟件代碼。
34.如權(quán)利要求33的電子設(shè)備,其中,所述專用診斷軟件代碼還包括用于根據(jù)存儲的當(dāng)命令正在執(zhí)行時發(fā)生錯誤的地方的狀態(tài)恢復(fù)所述電子設(shè)備的狀態(tài)的軟件代碼。
35.如權(quán)利要求18或19的電子設(shè)備,其中,所述運行軟件代碼包括用于在運行模式中執(zhí)行在線診斷測試的軟件代碼和用于響應(yīng)在線診斷測試檢測到錯誤執(zhí)行所述專用診斷軟件代碼的軟件代碼。
36.如權(quán)利要求18或19的電子設(shè)備,其中,所述處理器是多個處理器中的一個,所述多個處理器中的每一個都被配置為在所述電子設(shè)備的診斷模式中執(zhí)行所述專用診斷軟件代碼或在所述電子設(shè)備的運行模式中執(zhí)行所述運行軟件代碼。
37.如權(quán)利要求36的電子設(shè)備,其中,所述多個處理器包括主處理器,其被配置為確定所述電子設(shè)備是將運行在診斷模式中還是在運行模式中。
38.如權(quán)利要求37的電子設(shè)備,其中,所述多個處理器還包括至少一個從處理器,其被配置為受到所述主處理器的控制。
39.如權(quán)利要求37的電子設(shè)備,進一步包括與所述主處理器的接口,其中,所述多個處理器還包括至少一個從處理器,所述專用診斷軟件代碼包括用于提供所述主處理器的透明模式的軟件代碼,在所述透明模式中,每個從處理器可以通過所述接口被訪問。
40.如權(quán)利要求36的電子設(shè)備,其中,所述診斷軟件代碼包括用于在所述電子設(shè)備上執(zhí)行診斷測試的軟件代碼和用于將診斷測試的結(jié)果存儲在所述存儲器中的軟件代碼。
41.一種運行電子設(shè)備的方法,包括將專用診斷軟件代碼加載到所述電子設(shè)備的存儲器中;通過執(zhí)行所述專用診斷軟件代碼,在所述電子設(shè)備上執(zhí)行功能測試;將運行軟件代碼加載到所述電子設(shè)備的存儲器中;以及在加載了所述運行軟件代碼之后,在所述電子設(shè)備的診斷模式中執(zhí)行所述專用診斷軟件代碼。
42.如權(quán)利要求41的方法,進一步包括確定所述電子設(shè)備是否通過功能測試,其中,加載運行軟件代碼包括在所述電子設(shè)備通過功能測試后加載所述運行軟件代碼。
43.如權(quán)利要求42的方法,其中,所述存儲器包括易失性存儲設(shè)備和非易失性存儲設(shè)備,其中,加載所述專用診斷軟件代碼包括將所述專用診斷軟件代碼加載到所述易失性存儲設(shè)備中,加載所述運行軟件代碼包括將所述運行軟件代碼加載到所述非易失性存儲設(shè)備中,所述方法還包括當(dāng)所述電子設(shè)備通過功能測試時,將所述專用診斷軟件代碼加載到所述非易失性存儲設(shè)備中。
44.如權(quán)利要求41至43中任一的方法,其中,在所述電子設(shè)備的診斷模式中執(zhí)行所述專用診斷軟件代碼包括執(zhí)行所述專用診斷軟件代碼以在所述電子設(shè)備上執(zhí)行功能測試的子集。
45.一種電子設(shè)備,包括接口;存儲器;和處理器,其被配置為將通過所述接口接收到的專用診斷軟件代碼加載到所述存儲器中,通過執(zhí)行所述專用診斷軟件代碼在所述電子設(shè)備上執(zhí)行多個功能測試,將通過所述接口接收到的運行軟件代碼加載到所述存儲器中,以及在加載了所述運行軟件代碼后,在所述電子設(shè)備的診斷模式中執(zhí)行所述專用診斷軟件代碼。
46.如權(quán)利要求45的電子設(shè)備,其中,所述接口包括多個接口設(shè)備,所述多個接口設(shè)備包括被配置為接收所述診斷軟件代碼的第一接口設(shè)備和被配置為接收所述運行軟件代碼的第二接口設(shè)備。
47.如權(quán)利要求45或46的電子設(shè)備,其中,所述處理器進一步被配置為確定所述電子設(shè)備是否通過多個功能測試,并在所述電子設(shè)備通過功能測試時將所述運行軟件代碼加載到所述存儲器中。
48.如權(quán)利要求47的電子設(shè)備,其中,所述存儲器包括易失性存儲設(shè)備和非易失性存儲設(shè)備,所述處理器被配置為將所述專用診斷軟件代碼加載到所述易失性存儲設(shè)備中,在所述電子設(shè)備通過功能測試時將所述專用診斷軟件代碼和所述運行軟件代碼加載到所述非易失性存儲設(shè)備中。
49.一種運行電子設(shè)備的方法,在所述電子設(shè)備上存儲專用診斷軟件代碼和運行軟件代碼,所述方法包括通過在所述電子設(shè)備的診斷模式中執(zhí)行所述診斷軟件代碼,在所述電子設(shè)備上執(zhí)行診斷測試;以及提供對診斷測試結(jié)果的訪問;其中,對診斷測試結(jié)果的訪問獨立于所述運行軟件代碼。
50.如權(quán)利要求49的方法,其中,所述提供步驟包括將診斷測試結(jié)果存儲在所述電子設(shè)備的存儲器中。
51.如權(quán)利要求50的方法,其中,所述存儲器可通過所述電子設(shè)備的接口訪問。
52.如權(quán)利要求49至51中任一的方法,進一步包括在所述電子設(shè)備的運行模式中執(zhí)行所述運行軟件代碼;其中,診斷測試結(jié)果還可以被所述運行軟件代碼訪問。
53.如權(quán)利要求49至51中任一的方法,進一步包括確定所述電子設(shè)備是否將運行在診斷模式中;當(dāng)所述電子設(shè)備將運行在診斷模式中時,在所述電子設(shè)備上執(zhí)行診斷測試;以及當(dāng)所述電子設(shè)備將不運行在診斷模式中時,在所述電子設(shè)備上執(zhí)行所述運行軟件代碼。
54.一種電子設(shè)備,包括存儲器,存儲診斷軟件代碼和運行軟件代碼;處理器,被配置為在所述電子設(shè)備的診斷模式中執(zhí)行所述診斷軟件代碼,所述診斷軟件代碼在所述電子設(shè)備上執(zhí)行診斷測試并提供對診斷測試結(jié)果的訪問;其中,對診斷測試結(jié)果的訪問是獨立于所述運行軟件代碼提供的。
55.如權(quán)利要求54的電子設(shè)備,其中,所述診斷軟件代碼使所述處理器將診斷測試的結(jié)果存儲在所述存儲器中,從而提供對診斷測試結(jié)果的訪問。
56.如權(quán)利要求55的電子設(shè)備,其中,所述存儲器包括用于存儲所述診斷軟件代碼和所述運行軟件代碼的第一非易失性存儲設(shè)備和用于存儲診斷測試結(jié)果的第二非易失性存儲設(shè)備。
57.如權(quán)利要求54至56中任一的電子設(shè)備,其中,所述處理器進一步被配置為在所述電子設(shè)備的運行模式中執(zhí)行所述運行軟件代碼,診斷測試的結(jié)果還可被所述運行軟件代碼訪問。
58.如權(quán)利要求54至56中任一的電子設(shè)備,其中,所述處理器進一步被配置為確定所述電子設(shè)備是否將運行在診斷模式中,在所述電子設(shè)備將運行在診斷模式中時執(zhí)行所述診斷軟件代碼,在所述電子設(shè)備將不運行在診斷模式中時執(zhí)行所述運行軟件代碼。
59.一種運行電子設(shè)備的方法,在所述電子設(shè)備上存儲專用診斷軟件代碼和運行軟件代碼,所述方法包括在所述電子設(shè)備的運行模式中,在所述電子設(shè)備上執(zhí)行所述運行軟件代碼,所述運行軟件代碼包括用于在運行模式中執(zhí)行在線診斷測試的軟件代碼;以及響應(yīng)在線診斷測試檢測到錯誤從所述運行軟件代碼中調(diào)用所述診斷軟件代碼,從而將控制轉(zhuǎn)移給所述診斷軟件代碼,所述診斷軟件代碼在所述電子設(shè)備的診斷模式中在所述電子設(shè)備上執(zhí)行離線診斷測試。
60.一種電子設(shè)備,包括存儲器,存儲專用診斷軟件代碼和運行軟件代碼;以及處理器,其被配置為在所述電子設(shè)備的運行模式中執(zhí)行所述運行軟件代碼,所述運行軟件代碼包括用于在運行模式中執(zhí)行在線診斷測試的軟件代碼,以及響應(yīng)在線診斷測試檢測到錯誤從所述運行軟件代碼中調(diào)用所述診斷軟件代碼,從而將控制轉(zhuǎn)移給所述診斷軟件代碼,所述診斷軟件代碼在所述電子設(shè)備的診斷模式中在所述電子設(shè)備上執(zhí)行離線診斷測試。
全文摘要
公開了電子設(shè)備的診斷方法和系統(tǒng)。分開的專用診斷軟件代碼和運行軟件代碼分別在電子設(shè)備的診斷模式和運行模式中執(zhí)行。例如,當(dāng)電子設(shè)備啟動時,對于電子設(shè)備是將運行在診斷模式還是在運行模式中進行確定。還可以進行從運行模式到診斷模式的轉(zhuǎn)換,以響應(yīng)在運行模式中執(zhí)行的在線診斷測試檢測的錯誤。優(yōu)選地,診斷測試的結(jié)果存儲在非易失性存儲器中用于隨后的獨立于運行軟件代碼的訪問。
文檔編號G01R31/28GK1704763SQ20051007315
公開日2005年12月7日 申請日期2005年5月31日 優(yōu)先權(quán)日2004年6月1日
發(fā)明者R·莫頓, H·萊韋斯克 申請人:阿爾卡特公司