專利名稱:Usb裝置韌體程式可更新的方法
技術(shù)領(lǐng)域:
本發(fā)明有關(guān)于一種USB裝置的韌體程式更新,特別是一種有關(guān)利用萬(wàn)用序列匯流排(Universal Serial Bus;USB)更新包含微處理器的USB裝置的韌體程式的更新方法。
背景技術(shù):
USB裝置中(device)由于包含一內(nèi)建系統(tǒng)程式及參數(shù)描繪于其中,電腦可以很容易的辨識(shí)該裝置并予配置(configure)起來(lái)。使用者不需做任何的周邊位址及IRQ(interrupt request)設(shè)定,因此,減少過(guò)去個(gè)人電腦使用者在插入一電腦不認(rèn)識(shí)的裝置或周邊時(shí)的那種屢屢失敗的挫折感。此外,USB裝置通常支援熱插拔(hot-plugging)、在與電腦連接時(shí)的資料傳輸方面,又屬具有低耗電及滿意的傳輸速度的特性。在全速模式下其傳輸速度足以傳送數(shù)位格式的音樂(lè)檔及壓縮的影像信號(hào)。例如錄音筆、數(shù)位相機(jī)、MP3播放器、印表機(jī)、大姆哥隨身碟等等電子商品都屬之。除此之外,USB也可以提供低速模式,例如滑鼠、鍵盤(pán)即是。此外,USB裝置只要二條數(shù)據(jù)傳輸線及二條電源線,在上述的電能消耗,也使得其不需要粗纜線及/或者是變壓器等。
使用者在上述令人滿意的傳輸速度,與功率消耗下,老式的資料串列傳輸如RS-232,或平行埠介面已逐一的被使用者所丟棄,因?yàn)橛懈玫腢SB可以提供選擇。也因此,利用USB作為傳輸介面的商品愈來(lái)愈多。
當(dāng)USB裝置由USB埠插入后,電腦(或USB主機(jī)host)的作業(yè)程式,會(huì)向USB裝置提出標(biāo)準(zhǔn)請(qǐng)求(standard request)例如Get Descriptor,而USB裝置也需要包含一些可以對(duì)標(biāo)準(zhǔn)請(qǐng)求解譯的解譯器,在解譯后,再將USB裝置的參數(shù)描繪上傳給電腦的作業(yè)系統(tǒng),以提供作業(yè)系統(tǒng)辨識(shí)該USB裝置的特性,并使作業(yè)系統(tǒng)執(zhí)行一些動(dòng)作,例如Set Address、Set Cinfiguration等等以因此配置一位址給USB裝置。以使USB裝置可使用USB主機(jī)的資源。在這些確認(rèn)信號(hào)送出后,作業(yè)系統(tǒng)就可以辨知這是那一種裝置。
一般而言,USB裝置的功能是依據(jù)其可程式化抹除快閃記憶體內(nèi)的韌體程式或稱系統(tǒng)程式內(nèi)容而定,再由其內(nèi)建的徽處理器執(zhí)行系統(tǒng)程式。當(dāng)韌體程式不存在時(shí),USB裝置的功能就不能發(fā)揮。
不過(guò)這些程式碼并不易修改,這結(jié)果是當(dāng)業(yè)者將USB裝置賣(mài)給客戶后,USB裝置內(nèi)的韌體程式幾平是被使用到該USB裝置壽終正寢。在這段期間即使中間業(yè)者開(kāi)發(fā)更強(qiáng)更好用的更新版程式,客戶通常也不會(huì)或不敢任意更改。
以時(shí)下而言,若欲對(duì)可程式化抹除快閃記憶體韌體程式更新的第一種方法是利用并列埠燒錄程式。并列埠燒錄速度較快,但缺點(diǎn)是使用較多接腳,特別是當(dāng)積體電路已經(jīng)焊在印刷電路板后,想要更改程式碼就很麻煩。另一種方法是利用串列燒錄,串列燒錄沒(méi)有需要多接腳的問(wèn)題,但缺點(diǎn)則是速度較慢。由于上述的問(wèn)題,非專業(yè)人士,般都不會(huì)輕易嘗試。
有鑒于發(fā)明背景所述,USB裝置是內(nèi)建一韌體(firmware)于其中。USB裝置所能執(zhí)行的功能是依據(jù)韌體所載的系統(tǒng)程式內(nèi)容由USB裝置內(nèi)的微處理器擷取指令并執(zhí)行之而獲得其功能。使用者若欲執(zhí)行新的功能時(shí),除非USB裝置的韌體已內(nèi)建該內(nèi)容,否則就不可能執(zhí)新的功能。此外,即使業(yè)者提供更新版的韌體程式,使用者欲更新也常因過(guò)于麻煩而卻步。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種系統(tǒng)程式可利用USB埠更新的USB裝置及其更新方法。
本發(fā)明提供的一種方法,使用者可以像常使用應(yīng)用程式一樣容易,當(dāng)USB裝置與主機(jī)連接后除非使用者下燒錄模式的指令至USB裝置,否則USB裝置所執(zhí)行的便是正常工作指令。
本發(fā)明具體的技術(shù)方案為一種更新內(nèi)含一微處理器及一USB ISP解譯器USB裝置的快閃記憶體系統(tǒng)程式的方法,該方法至少包含下列步驟將一USB裝置與一主機(jī)連線;待主機(jī)辨識(shí)USB裝置屬性并配置一始啟住址后,USB裝置進(jìn)入待命的間置狀態(tài)(idle);該微處理器等待主機(jī)所下的請(qǐng)求指令,或執(zhí)行該系統(tǒng)程式,并依據(jù)該請(qǐng)求指令或該系統(tǒng)程式執(zhí)行,直至接收來(lái)自主機(jī)的供應(yīng)商燒錄指令I(lǐng)SP_START;該微處理器交出控制權(quán)給USB ISP解譯器;該USB ISP解譯器依序接收來(lái)自主機(jī)的ISP_INITIAL及ISP_ERASE_PAGE指令并執(zhí)行之,直到該快閃記憶體所有記憶頁(yè)資料全部被抹除;該USB ISP解譯器依序接收來(lái)自主機(jī)的ISP_INITIAL及ISP_ERASE_PAGE指令并執(zhí)行之,直到該快閃記憶體原系統(tǒng)程式已被全部更新;該USB ISP解譯器接收來(lái)自主機(jī)的ISP_READ指令并執(zhí)行之,直到該快閃記憶體被更新的內(nèi)容全部被驗(yàn)證;該USB ISP解譯器接收來(lái)自主機(jī)的ISP_RESET指令并執(zhí)行之;該USB ISP將控制權(quán)還給該微處理器。
上述的主機(jī)辨識(shí)USB裝置屬性是由USB裝置的USB引擎接收標(biāo)準(zhǔn)請(qǐng)求后產(chǎn)生中斷信號(hào),再由該微處理器回應(yīng)該主機(jī)。
上述的請(qǐng)求指令包含標(biāo)準(zhǔn)請(qǐng)求指令與非標(biāo)準(zhǔn)請(qǐng)求指令。
上述的非標(biāo)準(zhǔn)請(qǐng)求指令是ISP_START。
上述的ISP_INITIAL,是用以防止ISP_ERASE_PAGE及ISP_PROGRAM誤動(dòng)作,而需要的指令,該ISP_INITIAL指令執(zhí)行后,將待該快閃記憶體回應(yīng)時(shí)才進(jìn)行ISP_ERASE_PAGE或ISP_PROGRAM。
上述的ISP_ERASE_PAGE供應(yīng)商燒錄指令是對(duì)該快閃記憶體執(zhí)行資料抹除,該指令每使用一次將可抹除一頁(yè)的對(duì)該快閃記憶體內(nèi)容,因此該ISP_ERASE_PAGE指令包含該快閃記憶體資料抹除的啟始位址。
上述的ISP_PROGRAM供應(yīng)商燒錄指令,每使用一次將可對(duì)該快閃記憶體寫(xiě)入一位元組的資料內(nèi)容,因此該ISP_PROGRAM指令每次執(zhí)行時(shí)將包含該快閃記憶體資料寫(xiě)入的啟始位址。
上述的ISP_READ供應(yīng)商燒錄指令,每使用一次將可對(duì)該快閃記憶體讀出一位元組的資料內(nèi)容,因此該ISP_READ指令每次執(zhí)行時(shí)將包含該快閃記憶體資料讀出的啟始位址。
上述的供應(yīng)商請(qǐng)求指令都是8位元的交易封包。
本發(fā)明的方案了揭露一種韌體程式可更新的USB裝置及其更新方法,其中USB裝置至少包含一微處理器及一USB ISP解譯器,一快閃記憶體區(qū)塊,該方法至少包含,將USB裝置與一主機(jī)連線,隨后待主機(jī)辨識(shí)USB裝置屬性并配置一始啟位址,USB裝置可以使用主機(jī)資源。緊接著,微處理器等待主機(jī)所下的請(qǐng)求指令,或執(zhí)行舊的系統(tǒng)程式,并依據(jù)該請(qǐng)求指令或該系統(tǒng)程式執(zhí)行,直至接收來(lái)自主機(jī)的供應(yīng)商燒錄指令I(lǐng)SP_START后。該USB裝置進(jìn)入燒錄模式。此時(shí),該微處理器交出控制權(quán)給USB ISP解譯器。隨后主機(jī)將送入一連串的燒錄指令,例如首先執(zhí)行ISP_INITIAL,接著再執(zhí)行ISP_ERASE_PAGE。ISP_INTITIAL,防止該快閃記憶胞未回應(yīng)就進(jìn)行后續(xù)的ISP_ERASE_PAGE指令而導(dǎo)致被誤刪除。而ISP_ERASE_PAGE燒錄指令一次可以抹除一快閃記憶胞頁(yè)的資料。
隨后是ISP_INITIAL、ISP_PROGRAM等燒錄指令的重覆進(jìn)行,直至完成可程式化快閃記憶體系統(tǒng)程式更新。最后再以ISP_READ,將已更新的內(nèi)容讀出,以驗(yàn)證更新的結(jié)果。最后一個(gè)燒錄指令I(lǐng)SP_RESET,用以結(jié)束系統(tǒng)程式碼更新。并將控制權(quán)還給微處理器,此后微處理器將執(zhí)行更新后的程式碼。
圖1示依據(jù)本發(fā)明所設(shè)計(jì)的USB燒錄系統(tǒng)硬件控制塊。
圖2示依據(jù)本發(fā)明的正常指令及燒錄指令執(zhí)行流程圖。
圖3a表格示依據(jù)本發(fā)明的ISP請(qǐng)求名稱及其格式。
圖3b表格示依據(jù)本發(fā)明的ISP請(qǐng)求名稱與ISP解譯素值的對(duì)照表。
圖4為依據(jù)本發(fā)明的USB燒錄系統(tǒng)軟件控制流程。
圖號(hào)說(shuō)明USB引擎 110ISP_多工器 120微處理器 130正常模式下路徑 130aUSB ISP解譯器 140燒錄模式下路徑 140a可程式化快閃記憶體150開(kāi)始步驟 200初始化步驟210USB裝置等待主機(jī)下指令步驟220進(jìn)入燒錄模式與否步驟 230處理器執(zhí)行非關(guān)于燒錄指令的步驟235USP ISP判斷燒錄指令步驟 250USP ISP執(zhí)行抹除的步驟 251USP ISP執(zhí)行寫(xiě)的步驟 252USP ISP執(zhí)行讀的步驟 252USP ISP執(zhí)行重置系統(tǒng)步驟 260微處理器與可程式快閃記憶體之間的路徑 14具體實(shí)施方式
本發(fā)明因此提供新方法方便使用者更新。只要主機(jī)和USB裝置連接,再由主機(jī)提供燒寫(xiě)指令即可。
本發(fā)明USB燒錄系統(tǒng)的硬件控制區(qū)塊請(qǐng)見(jiàn)圖1。包含一USB引擎110、一ISP(In System Program)_多工器120、一微處理器130、一USB ISP解譯器140及一可程式化快閃記憶體150。并同時(shí)參考圖2的燒錄流程說(shuō)明圖。
首先是步驟200的開(kāi)始,即USB裝置與主機(jī)(未圖示)兩者相連接。隨的,步驟210的初始化,主機(jī)向USB裝置USB引擎110提出標(biāo)準(zhǔn)請(qǐng)求(standardrequest)。USB引擎110即產(chǎn)生一中斷,經(jīng)由ISP_多工器120經(jīng)正常路徑130a至微處理器130進(jìn)行處理,告知微處理器130已收到了指令,再由微處理器130回應(yīng)主機(jī),以便讓主機(jī)為該USB配置一起始位址以使用主機(jī)的資源。一般而言,第一道標(biāo)準(zhǔn)請(qǐng)求即為取得描述元(descriptor)。微處理器130首先解譯標(biāo)準(zhǔn)請(qǐng)求后,即提供描述元給主機(jī),主機(jī)因此可以辨識(shí)現(xiàn)有連接的USB裝置的屬性。
緊接著,步驟220,USB裝置等待主機(jī)下指令。當(dāng)USB引擎110收到的指令,任何指令都會(huì)由微處理器130如步驟230判讀。其中只要是正常指令,非有關(guān)于系統(tǒng)碼的燒錄,都會(huì)循步驟235,由微處理器130進(jìn)行處理,并經(jīng)由微處理器130和可程式快閃記憶體之間的路徑145至可程式快閃記憶體150擷取系統(tǒng)程式指令以執(zhí)行之。但當(dāng)微處理器130讀到的是有關(guān)于系統(tǒng)碼燒錄指令中的ISP_START的供應(yīng)商請(qǐng)求指令(Vendor Request)時(shí),如步驟240所示,即透過(guò)ISP_多工器120將路徑130a禁能(disable)以使微處理器130本身隔離,并使微處理器130呈間置的idle狀態(tài)。
換言之,當(dāng)USB引擎110后繼收到的指令,微處理器130不再擁有后繼動(dòng)作的控制權(quán),直到USB裝置被重置(reset)后才會(huì)恢復(fù)。此時(shí)ISP_多工器120會(huì)將USB引擎110與USB解譯器140連接的路徑140a建立起來(lái),以使得燒錄的控制權(quán)落在USB ISP解譯器140上。
此時(shí)即入燒錄模式。USB解譯器140可以解譯任何由主機(jī)所下的燒錄模式指令,并依燒錄模式指令內(nèi)容,將系統(tǒng)程式燒錄至可程式快閃記憶體150。
燒錄模式指令除了前述(1)ISP_START、尚包含(2)ISP_INITIAL、(3)ISP_READ、(4)ISP_ERASE_PAGE、(5)ISP_PROGRAM與(6)ISP_RESET。這些指令分別有如下說(shuō)明的功能ISP_START是當(dāng)處理器130收至主機(jī)端下達(dá)此指令時(shí),會(huì)由正常工作模式(Normal mode)自動(dòng)切換為燒錄模式(ISP mode),USB裝置內(nèi)的處理器將控制權(quán)交給USB ISP解譯器140,隨即進(jìn)入懸置狀態(tài)(idle),取得控制權(quán)的USB ISP解譯器140,便等待燒錄初始化的指令。
ISP_INITIAL燒錄模式下,任何欲對(duì)可程式快閃記憶胞進(jìn)行燒錄的寫(xiě)(PROGRAM)、或清除(ERASE)前,都需先下此指令,以防止誤動(dòng)作。當(dāng)USB ISP解譯器140解譯此命令后,USB ISP解譯器140會(huì)待可程式化快閃記憶體150回應(yīng)后才執(zhí)行寫(xiě)、或清除等指令。
ISP_ERASE_PAGE燒錄模式下,執(zhí)行寫(xiě)之前所需要下的動(dòng)作,將整頁(yè)可程式快閃記憶體150的浮置閘極(floating gate)電荷全部清除,即相當(dāng)于在所有的記憶胞內(nèi)填入1的電壓位準(zhǔn)。
ISP_PROGRAM燒錄模式下,執(zhí)行寫(xiě)入可程式快閃記憶體150的指令,此指令每次可寫(xiě)入一個(gè)位元組。
ISP_READ燒錄模式下,為比對(duì)所寫(xiě)入可程式快閃記憶體150內(nèi)容的正確性的指令,此指令每次可讀出一個(gè)位元組。
ISP_RESET則是燒錄模式下,當(dāng)所有燒錄的讀、寫(xiě)動(dòng)作皆完成后,USB ISP解譯器140收到此指令后,就會(huì)將控制權(quán)交還給微處理器130,換言之重新開(kāi)啟USB引擎110和微處理器130之間的橋梁130a。因此,微處理器130可以重新啟動(dòng)整個(gè)USB裝置的硬體,并向可程式快閃記憶體150取得剛燒錄后的程式碼并執(zhí)行之。不管USB裝置是否已和主機(jī)斷線皆同,除非再次又收到燒錄指令。
以上述每一個(gè)ISP請(qǐng)求命令而言,請(qǐng)參考圖3a所示的表格。都是由八個(gè)位元組所組成的交易封包。其中NA表示沒(méi)有任何數(shù)值。其中,第0位元組的最高位元所表示的是主機(jī)和USB裝置的交易方向。當(dāng)最高位元是0時(shí),表示交易方向由主機(jī)至USB裝置。當(dāng)最高位元是1時(shí),表示交易方向由USB裝置至主機(jī)。位元五的1表示是屬于供應(yīng)商指令。只有USB ISP解譯器140可以認(rèn)得這些指令的內(nèi)容。位元四到位元零的值表示界面(interface)種類。在此第0位元的1表示這些指令由endpoint0做為入口端點(diǎn)。
第1位元組是有關(guān)燒錄的六個(gè)供應(yīng)商指令如上述,其對(duì)應(yīng)值如圖3b的表格所示。當(dāng)USB ISP解譯器140到這些對(duì)應(yīng)值時(shí),將會(huì)依據(jù)不同的指令而進(jìn)行必要的動(dòng)作。
第2和第3位元組則是依指令的不同而有差異。例如ISP_START只需要等待的時(shí)間(wTimeOut),只要wTimeOut到時(shí)才進(jìn)行動(dòng)作。ISP_READ、ISP_ERASE_PAGE及ISP_PROGRAM都是則需要的是起始位址。ISP_ERASE_PAGE由于一旦進(jìn)行就是整頁(yè)進(jìn)行,一頁(yè)的記憶胞通常有128位元組,但也不必設(shè)限,可能也可以64位元組或256位元組。因此,帶有ISP_ERASE_PAGE封包的位元組B6和B7不需要注明字組總長(zhǎng)度,只需要載明頁(yè)的起始位址即可。而ISP_READ、及ISP_PROGRAM是以1位元組為單位,因此,在位元組B6是位元組長(zhǎng)度。
圖4示依據(jù)本發(fā)明的USB燒錄系統(tǒng)軟件控制流程。在正常模式下USB系統(tǒng)程式指令及由主機(jī)所下的標(biāo)準(zhǔn)請(qǐng)求都由微處理器控制,而燒錄指令則由USB ISP取得控制權(quán)。圖示顯示出燒錄指令執(zhí)行結(jié)束后,會(huì)由USB裝置回應(yīng)以已完成(OK)的訊息。
權(quán)利要求
1.一種更新內(nèi)含一微處理器及一USB ISP解譯器USB裝置的快閃記憶體系統(tǒng)程式的方法,該方法至少包含下列步驟將一USB裝置與一主機(jī)連線;待主機(jī)辨識(shí)USB裝置屬性并配置一始啟住址后,USB裝置進(jìn)入待命的間置狀態(tài);該微處理器等待主機(jī)所下的請(qǐng)求指令,或執(zhí)行該系統(tǒng)程式,并依據(jù)該請(qǐng)求指令或該系統(tǒng)程式執(zhí)行,直至接收來(lái)自主機(jī)的供應(yīng)商燒錄指令I(lǐng)SP_START;該微處理器交出控制權(quán)給USB ISP解譯器;該USB ISP解譯器依序接收來(lái)自主機(jī)的ISP_INITIAL及ISP_ERASE_PAGE指令并執(zhí)行之,直到該快閃記憶體所有記憶頁(yè)資料全部被抹除;該USB ISP解譯器依序接收來(lái)自主機(jī)的ISP_INITIAL及ISP_ERASE_PAGE指令并執(zhí)行之,直到該快閃記憶體原系統(tǒng)程式已被全部更新;該USB ISP解譯器接收來(lái)自主機(jī)的ISP_READ指令并執(zhí)行之,直到該快閃記憶體被更新的內(nèi)容全部被驗(yàn)證;該USB ISP解譯器接收來(lái)自主機(jī)的ISP_RESET指令并執(zhí)行之;該USB ISP將控制權(quán)還給該微處理器。
2.如權(quán)利要求1所述的方法,其特征在于,上述的主機(jī)辨識(shí)USB裝置屬性是由USB裝置的USB引擎接收標(biāo)準(zhǔn)請(qǐng)求后產(chǎn)生中斷信號(hào),再由該微處理器回應(yīng)該主機(jī)。
3.如權(quán)利要求1所述的方法,其特征在于,上述的請(qǐng)求指令包含標(biāo)準(zhǔn)請(qǐng)求指令與非標(biāo)準(zhǔn)請(qǐng)求指令。
4.如權(quán)利要求1所述的方法,其特征在于,上述的非標(biāo)準(zhǔn)請(qǐng)求指令是ISP_START。
5.如權(quán)利要求1所述的方法,其特征在于,上述的ISP_INITIAL,是用以防止ISP_ERASE_PAGE及ISP_PROGRAM誤動(dòng)作,而需要的指令,該ISP_INITIAL指令執(zhí)行后,將待該快閃記憶體回應(yīng)時(shí)才進(jìn)行ISP_ERASE_PAGE或ISP_PROGRAM。
6.如權(quán)利要求1所述的方法,其特征在于,上述的ISP_ERASE_PAGE供應(yīng)商燒錄指令是對(duì)該快閃記憶體執(zhí)行資料抹除,該指令每使用一次將可抹除一頁(yè)的對(duì)該快閃記憶體內(nèi)容,因此該ISP_ERASE_PAGE指令包含該快閃記憶體資料抹除的啟始位址。
7.如權(quán)利要求4所述的方法,其特征在于,上述的ISP_PROGRAM供應(yīng)商燒錄指令,每使用一次將可對(duì)該快閃記憶體寫(xiě)入一位元組的資料內(nèi)容,因此該ISP_PROGRAM指令每次執(zhí)行時(shí)將包含該快閃記憶體資料寫(xiě)入的啟始位址。
8.如權(quán)利要求4所述的方法,其特征在于,上述的ISP_READ供應(yīng)商燒錄指令,每使用一次將可對(duì)該快閃記憶體讀出一位元組的資料內(nèi)容,因此該ISP_READ指令每次執(zhí)行時(shí)將包含該快閃記憶體資料讀出的啟始位址。
9.如權(quán)利要求1所述的方法,其特征在于,上述的供應(yīng)商請(qǐng)求指令都是8位元的交易封包。
全文摘要
本發(fā)明的USB裝置至少包含微處理器、USB ISP解譯器,快閃記憶體。韌體程式更新步驟至少包含,將USB裝置與一主機(jī)連線,隨后待主機(jī)辨識(shí)USB裝置屬性,并配置一始啟位址后,USB裝置進(jìn)入間置狀態(tài)(idle);緊接著,微處理器等待主機(jī)所下的請(qǐng)求指令,或執(zhí)行舊的系統(tǒng)程式,并依據(jù)該請(qǐng)求指令或該系統(tǒng)程式執(zhí)行,直至接收來(lái)自主機(jī)的供應(yīng)商燒錄指令I(lǐng)SP-START;此后,該微處理器交出控制權(quán)給USB ISP解譯器隨后依序接收來(lái)自主機(jī)一連串的燒錄指令并執(zhí)行,例如依序執(zhí)行ISP_INITIAL、ISP_ERASE_PAGE、ISP_INITIAL、ISP_PROGRAM等以完成系統(tǒng)程式更新,最后再以ISP_READ驗(yàn)證更新的結(jié)果。最后一個(gè)燒錄指令I(lǐng)SP_RESET,以結(jié)束系統(tǒng)程式碼更新,并將控制權(quán)還給微處理器。
文檔編號(hào)G06F9/30GK1540497SQ0312212
公開(kāi)日2004年10月27日 申請(qǐng)日期2003年4月21日 優(yōu)先權(quán)日2003年4月21日
發(fā)明者王順平, 羅信忠, 曾聰義, 吳知遠(yuǎn) 申請(qǐng)人:矽成積體電路股份有限公司