專利名稱:照相機固件的自動更新的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到成像領(lǐng)域,進(jìn)一步說,本發(fā)明涉及到更新成像裝置和主機系統(tǒng)之間的固件。
背景技術(shù):
成像裝置,如照相機,都是將靜止的或活動的(視頻)圖象存儲到膠片、錄像帶或其它的媒體上。數(shù)字相機以數(shù)字形式捕捉圖像信息并存儲到存儲中,如閃存儲器,或其它的數(shù)字存儲媒體中。數(shù)字圖像信息可以下栽到主機系統(tǒng),如個人計算機中。然后可以通過主機系統(tǒng)中的應(yīng)用軟件對數(shù)字圖像進(jìn)行旋轉(zhuǎn)、剪切、或修改操作。
成像裝置包括能使成像裝置與主機軟件通信的固件。這種固件包括不同操作功能的指令。例如,固件可以被用于決定圖像的曝光程度、以某種特定的方式檢測顏色、壓縮圖像數(shù)據(jù)、保存能量、自檢、和/或規(guī)定照相機存儲媒體的存取和格式化協(xié)議。
經(jīng)常,需要用新發(fā)布的軟件或固件來更新主機軟件和照相機固件,或其中一。通常的軟件更新的方法是通過使用補丁程序或維護(hù)軟件包來完成。該方法是通過軟盤、CD-ROM或通過萬維網(wǎng)來提供一套程序。維護(hù)軟件包在運行時修改主機軟件所需更新的部分。
固件的更新有很多問題。一般的更新方法是由用戶通過手工來完成的。這可能涉及到運行一個執(zhí)行程序,然后重新設(shè)置成像裝置。固件的手工更新是不方便的,可能會導(dǎo)致因固件和主機系統(tǒng)軟件版本的不兼容而引起的錯誤。
發(fā)明概述本發(fā)明公開了一種與主機系統(tǒng)相連接的成像裝置的固件更新方法。主機系統(tǒng)可以檢測到成像裝置的固件與主機系統(tǒng)的配置不兼容。當(dāng)檢測到不兼容時,就會從主機傳輸一個更新的固件映像到成像裝置。在一個實施方案中,被更新的固件映像是一個比替換的固件映像更早的版本。
本發(fā)明的其它特點和優(yōu)越性將在附圖及隨后的詳細(xì)說明中陳述。
附圖簡述
圖1示出一個典型的可以與主機系統(tǒng)連接的成像裝置。
圖2示出成像裝置10首次連接到主機系統(tǒng)20時主機系統(tǒng)部件中的信息流動一個實施方案。
圖3示出主機應(yīng)用軟件60被初始化后主機系統(tǒng)部件中的信息流動一個實施方案。
圖4示出查詢初始化過程的一個實施方案。
圖5示出照相機API62和主機應(yīng)用軟件60之間的查詢過程的一個實施方案。
圖6示出檢測有否兼容的成像裝置連接到主機系統(tǒng)的一個實施例的流程圖。
圖7示出更新固件一個實施方案的流程圖。
圖8示出固件引導(dǎo)過程的狀態(tài)轉(zhuǎn)換的一個實施方案的框圖。
圖9示出存儲固件的典型的非易失性的存儲器400的框圖。
圖10示出初始化主機應(yīng)用軟件建立與照相機之間通信過程的一個實施方案的流程圖。
圖11示出檢測有無成像裝置,如照相機,連接到主機系統(tǒng)的過程的一個實施方案的流程圖。
發(fā)明詳述本發(fā)明公開了一種更新成像裝置和主機系統(tǒng)之間的固件的方法。固件包括了用于控制嵌入系統(tǒng),如成像裝置,的指令。在一個實施方案中,固件的更新是通過將成像裝置連接到主機系統(tǒng)來自動實現(xiàn)的。這一對用戶而言簡化了操作,同時保證了成像裝置和主機軟件的兼容。固件更新可以提供“錯誤”修正、改進(jìn)運算、改進(jìn)顏色傳感、改進(jìn)數(shù)據(jù)壓縮,采用新的訪問和格式化存儲介質(zhì)的協(xié)議等等。正如后面將要介紹的,當(dāng)多個不同固件版本的成像裝置連同擁有不同軟件版本的主機系統(tǒng)一起使用時,固件的自動更新特別地有用。
下面的描述通過一個系統(tǒng)來說明固件的更新,該系統(tǒng)把成像裝置連于主機系統(tǒng)來實現(xiàn)圖象信息在成像裝置和主機系統(tǒng)之間的自動傳輸。但是,固件的更新并不局限于這樣的系統(tǒng)。
成像裝置可以是一種圖像捕捉裝置,如照相機。另外,這項公開的技術(shù)可以適用于任何能夠存儲圖像信息的裝置。主機系統(tǒng)可以是任何可以處理圖像信息的系統(tǒng)。例如,主機系統(tǒng)可以是一臺個人計算機,如采用Pentium或PentiumⅡ處理器的IBM兼容個人計算機。不僅如此,主機系統(tǒng)還可以是打印機、繪圖機、傳真機、顯示裝置或存儲裝置。
為清楚起見,在下面的說明中把圖像捕獲裝置用照相機,主機系統(tǒng)用計算機來描述。但應(yīng)知道,也可以采用其他的成像裝置和主機系統(tǒng)。
圖1圖示的是一臺可連接到主機系統(tǒng)20的成像裝置10。在一個實施方案中,成像裝置10通過電纜22連接到主機系統(tǒng)20的端口26。成像裝置10最好用一個支持高數(shù)據(jù)傳輸率的數(shù)據(jù)傳輸協(xié)議來與主機系統(tǒng)20相連接。在一個實施方案中,成像裝置10通過一條通用串行總線(USB)連接到主機系統(tǒng)20。USB連接能提供高達(dá)12Mb/s的數(shù)據(jù)傳輸率。也可采用其它的連接和數(shù)據(jù)傳輸協(xié)議,如1394協(xié)議。(更多的USB信息可以通過互聯(lián)網(wǎng)從網(wǎng)址http://www.usb.org/上獲取。1394標(biāo)準(zhǔn)是由電氣和電子工程師協(xié)會即IEEE來維護(hù)和發(fā)布的。Fireware,是由IEEE標(biāo)準(zhǔn)1394-1995定義的一種1394實施方式。)圖2和3所示的實施方案是主機系統(tǒng)20的部件和成像裝置(照相機)10之間的關(guān)系和消息傳遞。圖2示出的是成像裝置10首次和主機系統(tǒng)20連接時主機系統(tǒng)部件的信息流動的一個實施方案。主機系統(tǒng)20包括一個操作系統(tǒng)(O/S)40和主機系統(tǒng)應(yīng)用軟件60。主機系統(tǒng)20檢測成像裝置如照相機10何時連接到主機系統(tǒng)20。在一個實施方案中,操作系統(tǒng)40通過查詢端口26來檢測照相機10是否連接到系統(tǒng)中。端口驅(qū)動程序42可以用來提供操作系統(tǒng)40和端口26之間的接口。在一個實施方案中,端口26是一個USB端口,并且端口驅(qū)動程序是一個USB驅(qū)動程序。
操作系統(tǒng)可以是各種不同的操作系統(tǒng)其中之一。在一個實施方案中,操作系統(tǒng)為Windows*操作系統(tǒng),如微軟的Windows*95和Windows*98系統(tǒng)。Windows*98包含可以查詢端口的鉤程序。其它的操作系統(tǒng)可以在改進(jìn)后進(jìn)行類似的端口查詢。端口查詢最好在后臺進(jìn)行,這樣用戶無需察覺這一過程。也可采用主機應(yīng)用軟件60來進(jìn)行端口26的查詢。但通過操作系統(tǒng)40(而不是用主機應(yīng)用軟件60)進(jìn)行端口查詢具有性能上的優(yōu)勢,這是由于操作系統(tǒng)已經(jīng)設(shè)定好不同的查詢功能,如鍵盤的按動、鼠標(biāo)的移動等等。為說明起見,以下的描述假定由操作系統(tǒng)來完成查詢。本領(lǐng)域的熟練技術(shù)人員可以通過改進(jìn),使應(yīng)用軟件實現(xiàn)查詢功能。
當(dāng)照相機10連接到主機系統(tǒng)20的端口26時,端口驅(qū)動程序42發(fā)出信號通知操作系統(tǒng)40照相機已連接到主機系統(tǒng)20。圖1中標(biāo)號(1)的箭頭圖示了這一過程。操作系統(tǒng)40確認(rèn)裝置為照相機并將相應(yīng)的驅(qū)動軟件44調(diào)入內(nèi)存,如圖中箭頭(2)所示。在一個實施方案中,操作系統(tǒng)40詢問照相機10得到一個標(biāo)識符。根據(jù)標(biāo)識符調(diào)入驅(qū)動軟件44。該例中,照相機驅(qū)動程序是通過操作系統(tǒng)40調(diào)入的。
然后,操作系統(tǒng)40調(diào)入一個和多個與照相機相應(yīng)的應(yīng)用軟件。在一個實施方案中,操作系統(tǒng)允許軟件應(yīng)用注冊。在遇到預(yù)先確定的情況(如檢測到帶有特定標(biāo)示的照相機),注冊過的主機應(yīng)用軟件即被調(diào)入。這樣,主機應(yīng)用軟件60(針對照相機的)被裝入,如圖中箭頭(3)所示。在一個實施方案中,照相機驅(qū)動程序44發(fā)出信號通知操作系統(tǒng)40初始化主機應(yīng)用軟件60。主機應(yīng)用軟件60開始在成像裝置(照相機)10和主機系統(tǒng)20之間傳輸圖像信息。主機應(yīng)用軟件60也可以處理圖像。例如,主機應(yīng)用軟件60可以進(jìn)行圖像解壓縮和/或色彩校正。而且主機應(yīng)用軟件還可以執(zhí)行旋轉(zhuǎn)、剪切和其它的圖像操作功能。
有些操作系統(tǒng),如Windows98允許由特定的事件引發(fā)應(yīng)用軟件的運行。例如,照相機驅(qū)動程序44可以用注冊事件來設(shè)定,如“檢測到與照相機相連”或“照相機快門被按動”。這樣,操作系統(tǒng)可以被設(shè)定為當(dāng)照相機10連入時自動調(diào)入一個程序,如主機應(yīng)用軟件。
在一個實施方案中,如果當(dāng)照相機10被連接到主機系統(tǒng)20時主機系統(tǒng)沒有安裝照相機驅(qū)動程序44或主機應(yīng)用軟件60,就要求用戶為連接到端口26的裝置提供照相機驅(qū)動程序44和/或主機應(yīng)用軟件66。一旦安裝完成,系統(tǒng)將按前面描述的過程運行。
圖3圖示的是主機應(yīng)用軟件60初始化后主機系統(tǒng)部件之間的信息流動的一種實施方案。在一種實施方案中,主機應(yīng)用軟件60裝入后,生成并啟動一個照相機應(yīng)用編程接口(API)62,如圖中箭頭(4)所示。照相機API62可以通過后臺線程完成工作。在這種方式中,主機應(yīng)用軟件60不用等到照相機API62運行結(jié)束即可以執(zhí)行其它的任務(wù)。在一種實施方案中,照相機API62是一個COM對象,它可以裝入一個動態(tài)連接庫(DLL)64,如圖中箭頭(5)所示。DLL可以是與O/W相關(guān)的。照相機API62通過DLL64與操作系統(tǒng)40進(jìn)行通訊。(另一實施方案中,照相機API62是與DLL64合并在一起的。)反過來,主機系統(tǒng)40通過照相機驅(qū)動程序44和端口驅(qū)動程序42與照相機10進(jìn)行通信,如圖中箭頭(6)所示。
圖4圖示查詢初始化過程的一個實施方案。查詢初始化過程從主機系統(tǒng)打開主機應(yīng)用軟件開始。然后主機應(yīng)用軟件60生成并初始化照相機API62。在一種實施方案中,主機應(yīng)用軟件60將自身添加到照相機API的回調(diào)列表中,這樣主機應(yīng)用軟件60將知道什么時候照相機API查詢過程成功。
在一種實施方案中,照相機API初始化時,重新設(shè)置內(nèi)部變量,裝入DLL,產(chǎn)生并開始后臺線程。然后照相機API在后臺線程的隊列中插入信息,試圖打開照相機驅(qū)動程序。(驅(qū)動程序通過建立照相機API和驅(qū)動程序間的連接來“打開”。)在一種實施方案中,照相機驅(qū)動程序只有在有照相機連接時才可以打開如果照相機驅(qū)動程序不能打開,則表明照相機沒有連接到主機系統(tǒng)中。如果照相機驅(qū)動程序能夠打開,說明照相機是連接到主機系統(tǒng)上的。在一種實施方案中,照相機API44每隔半秒鐘就嘗試打開照相機驅(qū)動程序。
圖5所示的是在照相機API62和主機應(yīng)用軟件60之間的查詢過程一個實施方案。在這一實施方案中,照相機API62試圖去打開照相機驅(qū)動程序(CM_SIGNAL_STATUS)。當(dāng)成功打開照相機驅(qū)動程序時,照相機API關(guān)閉照相機驅(qū)動程序并在應(yīng)用軟件的回調(diào)隊列中發(fā)出通知。由于主機應(yīng)用軟件是在照相機API的回調(diào)隊列中,因此會得知已經(jīng)檢測到照相機。
在這一實施方案中,主機應(yīng)用軟件60通過發(fā)出信號通知照相機API62打開照相機驅(qū)動程序44并檢測兼容的照相機來重新打開照相機驅(qū)動程序44(CM_OPEN_DRIVER)。而后主機應(yīng)用軟件60可以通過照相機API62(以及操作系統(tǒng)40和驅(qū)動程序44、42)給照相機10發(fā)出不同的指令。例如,主機應(yīng)用軟件60可以要求獲得存儲于照相機中的圖像數(shù)量(CM_GET_NO_OF_IMAGES)。主機應(yīng)用軟件60可以要求獲得圖像名稱和大小的列表(CM_GET_IMAGE_LIST),或要求獲得某一幅特定的圖像(CM_GET_IMAGE_BY_NAME)。
在一種實施方案中,照相機API62檢測有無兼容的成像裝置連接到主機系統(tǒng)中,如果需要,則自動更新裝置中的固件。根據(jù)制造廠家的出廠設(shè)定,固件的自動更新可以是禁止的或允許的,或者是可以由用戶改動的。
圖6所示的是檢測是否有一個兼容的成像裝置連接到主機系統(tǒng)的過程的一種實施方案的流程圖。在一種實施方案中,這一過程是由照相機API62來執(zhí)行的。如前所述,照相機API62是由主機應(yīng)用軟件60生成和初始化的,如塊100中所示。照相機API62在塊102中裝入DLL,該DLL可以是從屬于的操作系統(tǒng)的,主機應(yīng)用軟件60在塊104中給的照相機API62發(fā)出一個“打開”指令。作為響應(yīng),照相機API通過DLL64打開照相機驅(qū)動程序62,如塊106中所示。
塊108中,照相機API62給照相機發(fā)出一個指令,取得照相機接口編號。在一種實施方案中,唯一的照相機接口編號值被賦給照相機所支持的一組指令。
在決策塊110中操作繼續(xù)進(jìn)行。將從照相機中的得到的接口編號與照相機API62的接口表進(jìn)行比較。如果接口編號沒有存儲于照相機API62接口表中,那么照相機API62關(guān)閉照相機驅(qū)動程序并通知主機應(yīng)用軟件照相機是不兼容的,如塊112和114中所示。照相機API不能與照相機通信,因為不知道照相機所支持的指令。
模塊110中,如果從照相機中得到的接口編號是存儲于照相機API62的接口列表中,則照相機API62給照相機發(fā)出一條指令獲得硬件版本號,如塊120中所示。
塊130中,將從照相機中得到的硬件版本號與照相機API62中存儲的硬件表進(jìn)行比較。如果從照相機中得到的硬件版本號沒有存儲在照相機API62的硬件表中,那么照相機API62不能進(jìn)行更新檢測。照相機API62發(fā)出信號通知主機應(yīng)用軟件照相機是可以訪問的,如塊132中所示。照相機API62能夠與照相機通訊,因為它的接口是兼容的,但是不能更新固件,因為不能識別硬件配置。
塊130中,如果從照相機得到的硬件版本號是存儲在照相機API62的硬件表中的,那么繼續(xù)進(jìn)行塊140的操作。在塊140中,照相機API給照相機發(fā)出一條指令返回固件的版本號。
接下來進(jìn)行塊150的操作,如果固件版本號是照相機API62中存儲的版本號,則表明照相機已經(jīng)進(jìn)行了更新。照相機API62發(fā)出信號通知主機應(yīng)用軟件,照相機是可以打開以訪問的。
如果固件版本號不是照相機API62中存儲的版本號,則繼續(xù)執(zhí)行塊160的操作。如果制造廠商不允許固件更新,則照相機API62不能執(zhí)行固件更新操作并通知主機應(yīng)用軟件照相機是打開以訪問的。例如,制造商可能在寄存器中設(shè)置一個禁止固件更新的位。盡管安裝的固件可能不是最新的版本,但是只要接口和硬件是兼容的,所安裝的固件仍能用主機軟件來操作。
塊170中,檢測是否在此之前曾嘗試過更新并失敗。在一種實施方案中,進(jìn)行預(yù)定次數(shù)的更新嘗試。如果曾嘗試過更新并失敗,那么照相機API62通知主機應(yīng)用軟件更新失敗,照相機是打開以訪問的,如塊172所示。
塊170中,如果還沒有嘗試過更新,則流程圖進(jìn)行圖7所示的固件的更新過程。
圖7所示的是更新固件的一個實施方案的流程圖。在塊200中,照相機API傳送更新過的固件映像到照相機。在一種實施方案中,照相機API發(fā)出一條固件下栽指令到照相機,以使固件準(zhǔn)備好接收新的固件映像。然后更新的固件映像從主機系統(tǒng)傳送到照相機。在一種實施方案中,更新的固件圖像被存儲到照相機的臨時緩沖區(qū),如易失存儲器中。
塊202中,照相機API62關(guān)閉照相機驅(qū)動程序。這樣就關(guān)閉了照相機和主機體系統(tǒng)之間的通訊聯(lián)系,以使固件的更新不被干擾。照相機API然后通知主機應(yīng)用軟件固件正在更新中,如塊204所示。照相機API開始查詢固件重新建立與固件的連接。
固件由一個引導(dǎo)模塊和一個代碼模塊組成。引導(dǎo)模塊,也稱為引導(dǎo)裝入程序,在固件更新時是不被更換的。只有代碼模塊被更換。引導(dǎo)裝入程序維護(hù)固件更新的例程。在模塊206中,引導(dǎo)裝入程序驗證更新的固件映像沒有錯誤。例如,可以通過產(chǎn)生一個校驗和來完成。然后引導(dǎo)裝入程序用更新的固件映像替換舊的(已安裝)的固件,如塊208所示。在一個實施方案中,這一過程是通過將易失存儲器中的固件映像傳送到非易失存儲器來完成的。然后引導(dǎo)裝入程序進(jìn)行一次復(fù)位,或跳到引導(dǎo)裝入程序的開頭初始化新近更新的固件,如塊210所示。這樣使引導(dǎo)裝入程序重啟動,此時引導(dǎo)裝入程序檢測已更新固件有無錯誤,如塊212所示。如果校驗和正確,則執(zhí)行代碼模塊中的固件,如塊214和218中所示。
如果校驗和不正確,引導(dǎo)裝入程序重新建立與主機系統(tǒng)的連接并轉(zhuǎn)移到等待狀態(tài),如塊216所示。在這個等待狀態(tài)下,照相機API可以從引導(dǎo)裝入程序得到狀態(tài)情況以決定新的固件映像是被正確地裝入到代碼模塊中,或還是存在問題,引導(dǎo)裝入程序處于等待狀態(tài)。照相機API可以試圖進(jìn)行另一次固件更新。
從決218繼續(xù),一旦固件能夠根據(jù)其代碼模塊中正確的校驗和來重新啟動,那么固件就能建立與主機系統(tǒng)的連接。照相機API將通過查詢檢測到照相機連接到模塊220。照相機API可以重新打開照相機并執(zhí)行照相機的存取。
圖8所示的是固件引導(dǎo)過程的狀態(tài)轉(zhuǎn)換圖表的一個實施方案。狀態(tài)轉(zhuǎn)換圖表劃分為圖8中左側(cè)的引導(dǎo)模塊狀態(tài)和右側(cè)的代碼模塊狀態(tài)。在狀態(tài)300時,一個復(fù)位操作初始化照相機的硬件。這可能包括復(fù)位寄存器和/或關(guān)閉照相機的某些部件,以使照相機處于已知狀態(tài)。從狀態(tài)300轉(zhuǎn)換到狀態(tài)302,對代碼模塊進(jìn)行檢測。在一個實施方案中,對代碼模塊進(jìn)行一次校驗和操作。如果校驗和通過,則執(zhí)行代碼模塊中的指令,如狀態(tài)304所示。代碼模塊中的固件能夠建立與主機系統(tǒng)的連接并處理從主機接收到的不同的指令。如果代碼模塊中的固件檢測到主機系統(tǒng)發(fā)出下載命令,則轉(zhuǎn)換到狀態(tài)306,在該狀態(tài)下,照相機硬件被初始化為一個已知的狀態(tài)。例如,可以關(guān)閉傳感器和頻閃觀測器,打開DRAM。在一個實施方案中,當(dāng)不使用時為節(jié)能關(guān)閉照相機硬件。狀態(tài)轉(zhuǎn)換到模塊308,在該狀態(tài)下,從主機系統(tǒng)接收更新的固件代碼。在一個實施方案中,更新的固件代碼臨時存儲于DRAM中。
如果狀態(tài)308中有通信問題,那么轉(zhuǎn)換到等待狀態(tài)310。在等待狀態(tài)310,引導(dǎo)模塊等待從主機發(fā)來的指令。
如果校驗和失敗,狀態(tài)302也會轉(zhuǎn)換到等待狀態(tài)310。在等待狀態(tài)310,引導(dǎo)模塊等待從主機系統(tǒng)發(fā)來的指令。例如,主機系統(tǒng)可能需要引導(dǎo)模塊的狀態(tài)信息。當(dāng)主機系統(tǒng)意識到引導(dǎo)模塊處于等待狀態(tài)310時,能夠發(fā)出另一個下載指令,使其轉(zhuǎn)換回狀態(tài)308。
如果固件圖像下載無錯誤,狀態(tài)308轉(zhuǎn)換到狀態(tài)320,該狀態(tài)下檢測下載的代碼有無錯誤。在一種實施方案中,執(zhí)行校驗和操作。如果校驗和失敗,引導(dǎo)模塊回到狀態(tài)310。如果校驗和通過,則狀態(tài)轉(zhuǎn)移到模塊322,此狀態(tài)中代碼模塊被清除。隨后,代碼模塊在狀態(tài)324下被重新編寫。從狀態(tài)324回到狀態(tài)300,重新初始化照相機硬件,并且如前面所述,狀態(tài)轉(zhuǎn)換圖表重新開始。
圖9所示的是一個典型的非易失性存儲器400的圖表。在一個實施方案中,非易失性存儲器是一個閃存儲器。在一個實施方案中,引導(dǎo)模塊402和代碼模塊404存儲于閃存儲器,引導(dǎo)模塊被鎖定,以免被重寫。代碼模塊是可以重新編寫的。
在一個實施方案中,非易失性存儲器也存儲一個或多個圖像表406,圖像表可以含有與照相機配置相關(guān)的信息。
在一個實施方案中,快速存儲器中存儲下列圖像表。
1)無用(dead)像素表2)編碼器表3)曝光表4)壓縮擴(kuò)展器表5)顏色校正表圖像表允許處理照相機中的一幅圖像。例如,無用像素表可能包含不能正常工作的照相機中的詳細(xì)的像素信息。例如,無用像素表可以在制造測試時確定。照相機也可以動態(tài)地確定無用像素表。無用像素表允許使用臨近的像素來修補有缺陷的像素。
類似地,其它的圖像表也允許圖像數(shù)據(jù)的處理。例如,編碼器表可以給一幅圖像的編碼和壓縮指定特殊的值,曝光表可以包含曝光時間、放大率、頻閃觀測器的使用和亮度的信息,壓縮擴(kuò)展器表可以包含用于從使用字節(jié)第一數(shù)位的位圖表示到使用字節(jié)較小數(shù)位的位圖表示的映射數(shù)據(jù)的信息,顏色校正表可用來校正顏色。
在一個實施方案中,圖像表包含與一個特定的發(fā)光體相關(guān)的數(shù)值。例如,圖像表可以包含一幅與在陽光下,或熒光燈照明下,或鎢絲燈照明下所拍攝的圖像相對應(yīng)的不同的數(shù)值。
圖像表在制造的過程中可以存儲到非易失性存儲器400,但可以在以后通過固件進(jìn)行更新。在一個實施方案中,固件可以刪除非易失性存儲器中的圖像表并從主機系統(tǒng)傳送新的圖像表到照相機的非易失性存儲器中。固件接收主機系統(tǒng)發(fā)來的指令,這些指令表明一個表是否被傳送到了照相機,或一個圖像表是否被刪除。
在一個實施方案中,由于一些非易失性存儲器(即一些閃存儲器)不能夠同時從中既讀取數(shù)據(jù)又向非易失性存儲器寫入數(shù)據(jù),所以一個DRAM被用來臨時存儲非易失性存儲器中的代碼。固件將一部分代碼復(fù)制到DRAM,然后傳送執(zhí)行程序到DRAM。然后一個執(zhí)行DRAM的指令的微控制器能夠在到非易失性存儲器寫入新的圖像表,隨后執(zhí)行程序被傳送回非易失性存儲器的代碼段。
表1和表2所示的例子說明不同照相機和個人計算機上的不同版本的接口、固件和照相機API是如何能夠互相聯(lián)系的。表1表示的是存儲于第一個照相機API(CAMAPI#400)中的配置。表2表示的是存儲于第二個照相機API(CAMAPI#420)中的配置。一些使用這些表格中的配置信息的不同的實施方案的例子有助于說明這一問題。
表1
表2
例1假設(shè)兩個用戶,A和B,有同樣的主機應(yīng)用軟件版本和同樣的固件版本,設(shè)軟件版本為1.0,產(chǎn)生具有表1中的接口標(biāo)識符表的CAMAPI#400。接口標(biāo)識符為0x0101,而固件版本為1.00。接下來,用戶A接受一次更新,將其主機應(yīng)用軟件更新為1.02版,該版本具有同樣的接口標(biāo)識符(Ox0101)。
主機應(yīng)用軟件更新后,用戶A首次試圖訪問照相機,照相機API62將檢測到一個不兼容的固件版本,這將觸發(fā)如前面所述的自動固件更新。
接下來,假設(shè)用戶B(仍在他的照相機中使用1.00版的固件)將他的照相機接入A的個人計算機。A的計算機上的照相機API將再次檢測固件和軟件版本。照相機API將把B的照相機固件的版本更新為1.02。B的照相機當(dāng)前則有一個與B自己的計算機上的主機軟件不一致的固件(1.02)。當(dāng)B將他的照相機帶回自己的計算機時,照相機API62將不能識別固件1.02版本的固件。照相機API62將傳送1.00版的固件圖像到B的照相機。這樣,B的照相機恢復(fù)到原來固件,以使照相機能夠與B的計算機上的應(yīng)用軟件進(jìn)行通訊。
對B,固件更新是透明的。B既可以在A的更新了的系統(tǒng)中,也可以在有老版本主機應(yīng)用軟件的B的系統(tǒng)中使用他的照相機。
例2假設(shè)A擁有1.00版本的固件,接口標(biāo)識為0x0101,而B擁有1.08版本的固件,接口標(biāo)識為0x0202。除非A為了識別新的接口0x0202而更新了她的應(yīng)用軟件,否則B將不能使用A的個人計算機。如果B的個人計算機使用的照相機API包含表1中所有修定版本,則B的個人計算機既可用于A的照相機,也可用于B的照相機。
例3如果用戶A擁有1.0版本的固件并使用CAMAPI#400,如表1中所示,而用戶B擁有3.0版本的固件并使有CAMAPI#420,如表格2中所示,那么為了對兩臺照相機都能夠存取,一臺個人計算機必須有兩個版本的應(yīng)用軟件,通過各自的接口與照相機相接。
在一個實施方案中,接口具有唯一的標(biāo)識符。以一個TWAIN接口為例,來描述一個圖像應(yīng)用軟件是如何從掃描儀或其它的數(shù)字成像裝置中獲取圖像的。當(dāng)前的TWAIN版本為1.7。TWAIN是通過幾個工業(yè)合作者共同制定的一組標(biāo)準(zhǔn)來維護(hù)的??梢酝╤ttp://www.twain.org來獲取更多的TWAIN信息。也可以使用有專利權(quán)的接口,例如,可以采用DLL,DLL支持特定的應(yīng)用軟件,使應(yīng)用軟件能夠傳送和刪除從成像裝置得到的圖像。
硬件標(biāo)識符指定硬件的變動,例如可以在成像裝置上附加一臺步進(jìn)電動機??稍O(shè)置固件來跟蹤較小的和較大的改變。比如,較小的改變可能是缺陷修定或改進(jìn),較大的變動可以是添加新的硬件。
圖10所示的是啟動主機應(yīng)用軟件建立與成像裝置的通信過程的一個實施方案的流程圖。在這個公開的實施方案中,成像裝置是一臺照相機,主機系統(tǒng)是一臺個人計算機。流程圖從塊500開始。繼續(xù)運行到塊502,在塊502中,主機應(yīng)用軟件生成一個照相機API。照相機API在模塊502中裝入一個可以是與操作系統(tǒng)相關(guān)的DLL。在模塊506中,照相機API測定照相機是否有效。
在塊508中,如果照相機是不可用的,則流程圖返回到塊506。但如果照相機是可用的,程序繼續(xù)執(zhí)行到塊510。在塊510中,照相機API向主機應(yīng)用軟件發(fā)出消息表明照相機是可用的。在模塊512中主機應(yīng)用軟件要求打開照相機驅(qū)動程序。照相機API做出響應(yīng)打開照相機驅(qū)動程序,如塊514中所示。打開驅(qū)動程序的過程意味著建立了照相機API和照相機驅(qū)動程序之間的聯(lián)系。如前面所述,此時開始固件的更新過程。
在塊516中,主機應(yīng)用軟件要求從照相機傳送圖像到主機系統(tǒng)。在塊518中,照相機API做出響應(yīng)將圖像信息從照相機傳送到主機系統(tǒng)。圖像信息可能包含圖像象素數(shù)據(jù)及其它的信息,如調(diào)色板信息、壓縮信息、圖像定位信息等等,流程圖在塊520結(jié)束。
圖11所示的是檢測是否有成像裝置如照相機連接到主機系統(tǒng)的過程的一個實施方案流程圖。流程圖起始于塊600。接下來進(jìn)入塊602,在該塊中操作系統(tǒng)測定照相機是否可用。這個操作可以借助于端口驅(qū)動程序如USB驅(qū)動程序來完成。如果照相機是可用的,程序返回到模塊602。如果在塊604中照相機是可用的,程序繼續(xù)進(jìn)行到塊606,在該塊中操作系統(tǒng)裝入照相機驅(qū)動程序。
在一個實施方案中,主機系統(tǒng)采用一個操作系統(tǒng)如Windows98。Windows98允許驅(qū)動程序發(fā)出信號通知操作系統(tǒng)照相機是連接到主機系統(tǒng)的(連接事件),如塊608所示。然后操作系統(tǒng)打開通過連接事件注冊的應(yīng)用軟件。這時,初始化用于照相機的主機應(yīng)用軟件,如塊610中所示。然后流程圖繼續(xù)到圖10的流程圖。
如果操作系統(tǒng)沒有提供基于連接事件的應(yīng)用軟件的打開途徑,一個替代的實施方案可以用一個“服務(wù)程序”代替模塊608和610所示的步驟。服務(wù)程序由用戶安裝,并且在主機系統(tǒng)開機時自動地在主機系統(tǒng)上初始化。當(dāng)檢測到照相機時,服務(wù)程序打開主機應(yīng)用軟件。在一個實施方案中,服務(wù)程序應(yīng)用照相機API來測定照相機是否可用。這樣,服務(wù)程序如同一個小型的主機應(yīng)用軟件,按照與圖10中所示的相類似的方式運行。但當(dāng)與照相機驅(qū)動程序建立起聯(lián)系時,服務(wù)程序會啟動主機應(yīng)用軟件。而后,主機應(yīng)用軟件建立自身與照相機驅(qū)動程序的聯(lián)系以便從照相機中傳送圖像。
在一個實施方案中,主機應(yīng)用軟件60和照相機驅(qū)動程序44連同照相機10一同發(fā)貨。主機驅(qū)動程序60和照相機驅(qū)動程序44可以通過軟盤或CD-ROM發(fā)送。另外,主機應(yīng)用軟件60和照相機驅(qū)動程序44還可以通過互聯(lián)網(wǎng)下載。主機應(yīng)用軟件60和照相機驅(qū)動程序44被安裝到主機系統(tǒng)的存儲媒體中,如硬盤、動態(tài)隨機存儲器(DRAM)、靜態(tài)隨機存儲器(SRAM)或閃存儲器中。
在上面的詳細(xì)說明中,參考特定的典型實施方案,對發(fā)明進(jìn)行了描述。然而,很顯然有些人可以在不背離本公開發(fā)明實質(zhì)和超出隨后權(quán)利要求所聲明范圍的前提下,對本發(fā)明作出改進(jìn)和變動,而從本發(fā)明獲利。因此,說明和圖示都只能看作是解釋性的而絕非限制。
權(quán)利要求
1.一種更新連接到主機系統(tǒng)的成像裝置的固件的方法,該方法包括如下步驟(a)檢測成像設(shè)備的固件與主機系統(tǒng)的配置不兼容;和,(b)響應(yīng)于步驟(a),從主機系統(tǒng)傳送更新的固件映像到成像設(shè)備。
2.如權(quán)利要求1的方法,其中步驟(a)還包括步驟(ⅰ)從成像裝置中獲取裝置的接口信息;和,(ⅱ)比較裝置的接口信息與主機中存儲的接口信息。
3.如權(quán)利要求1的方法,其中的步驟(a)是根據(jù)成像裝置和主機系統(tǒng)之間的聯(lián)系的建立而自動執(zhí)行的。
4.如權(quán)利要求1的方法,其中步驟(b)還包括步驟(ⅰ)將更新的固件映像傳送到緩沖存儲器;和,(ⅱ)檢測緩沖存儲器中的錯誤;和,(ⅲ)用緩沖存儲器替代成像裝置中的不兼容固件。
5.如權(quán)利要求1的方法,其中步驟(b)中更新的固件映像對應(yīng)于一個比步驟(a)中檢測到的成像裝置中的更早的一個固件版本。
6.如權(quán)利要求1的方法,其中步驟(b)還包括步驟(ⅰ)從主機系統(tǒng)中裝入一個或多個配置表到成像裝置中。
7.如權(quán)利要求6的方法,其中一個或多個配置表用于處理成像裝置中的圖像數(shù)據(jù)。
8.一個系統(tǒng)包括一個處理器;一個存儲媒體來存儲指令,這些指令在被處理器執(zhí)行時使存儲器進(jìn)行下列操作(a)根據(jù)系統(tǒng)的配置檢測成像裝置中的固件是否過期;和,(b)作為步驟(a)的響應(yīng),從系統(tǒng)向成像裝置傳送更新的固件映像。
9.如權(quán)利要求8的系統(tǒng),其中的步驟(a)包括如下步驟(ⅰ)從成像裝置中獲取裝置的接口信息;和,(ⅱ)比較裝置接口信息與系統(tǒng)存儲的接口信息。
10.如權(quán)利要求8的系統(tǒng),其中步驟(b)包括步驟(ⅰ)從系統(tǒng)裝入一個或多個配置表到成像裝置。
11.如權(quán)利要求10的系統(tǒng),其中的一個或多個配置表用于處理成像裝置中的圖像數(shù)據(jù)。
12.一種計算機可讀媒體,其上存儲著大量的指令,當(dāng)處理器執(zhí)行這些指令時,進(jìn)行下列操作(a)檢測一個成像裝置中的固件與主機系統(tǒng)的配置不兼容;和,(b)作為步驟(a)的響應(yīng),自動進(jìn)行固件更新。
13.如權(quán)利要求12的計算機可讀媒體,其中步驟(a)還包括步驟(ⅰ)從成像裝置中獲取裝置接口信息;和,(ⅱ)比較裝置接口信息與主機系統(tǒng)存儲的接口信息。
14.如權(quán)利要求12的計算機可讀媒體,其中步驟(b)還包括步驟(ⅰ)從主機系統(tǒng)中裝入一個或多個配置表到成像裝置。
15.如權(quán)利要求14的計算機可讀媒體,其中的一個或多個配置表用于處理成像裝置中的圖像數(shù)據(jù)。
16.一種自動更新照相機固件的方法,該方法包括步驟(a)連接照相機到主機系統(tǒng),主機系統(tǒng)設(shè)置配置;(b)檢測照相機固件與主機系統(tǒng)配置不兼容;和(c)作為步驟(b)的響應(yīng),自動進(jìn)行固件更新。
17.如權(quán)利要求16的方法,其中步驟(b)還包括步驟(ⅰ)從成像裝置中獲取裝置接口信息;和,(ⅱ)比較裝置接口信息與主機系統(tǒng)存儲的接口信息。
18.如權(quán)利要求16的方法,其中步驟(c)還包括步驟(ⅰ)從主機系統(tǒng)中裝入一個或多個配置表到成像裝置。
19.如權(quán)利要求18的方法,其中的一個或多個配置表用于處理成像裝置中的圖像數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種成像裝置(10)和主機操作系統(tǒng)(20)之間的固件的更新方法。主機系統(tǒng)檢測成像裝置的固件與主機系統(tǒng)的配置不兼容性。如果檢測到了不兼容,更新的固件圖像就從主機系統(tǒng)傳送到成像裝置。
文檔編號G06F9/445GK1297547SQ9980516
公開日2001年5月30日 申請日期1999年1月22日 優(yōu)先權(quán)日1998年2月20日
發(fā)明者M·R·菲克特納, M·A·莫哈梅德, D·R·庫斯, E·P·托馬斯策夫斯基 申請人:英特爾公司