專(zhuān)利名稱(chēng):動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法
技術(shù)領(lǐng)域:
本發(fā)明為一種有關(guān)于數(shù)據(jù)處理方法,特別指一種應(yīng)用于串行端口驅(qū)動(dòng)程序(serial driver)中,可根據(jù)數(shù)據(jù)傳輸量進(jìn)行緩沖區(qū)(FIFO buffer)長(zhǎng)度動(dòng)態(tài)調(diào)整來(lái)控制中斷請(qǐng)求間隔的方法。
背景技術(shù):
在既有串行數(shù)據(jù)傳輸處理的結(jié)構(gòu)里(如圖1中所示),串行端口驅(qū)動(dòng)程序(serial driver)30往往被用來(lái)作為負(fù)責(zé)微處理器10和外圍裝置50之間數(shù)據(jù)傳輸?shù)闹饕獪贤蛄?。?dāng)外圍裝置50有任務(wù)要執(zhí)行,需要進(jìn)行數(shù)據(jù)傳輸處理的時(shí)候,便會(huì)由對(duì)應(yīng)負(fù)責(zé)的串行端口驅(qū)動(dòng)程序30負(fù)責(zé)向微處理器10發(fā)出中斷(interrupt)請(qǐng)求,而在微處理器10接收到來(lái)自串行端口驅(qū)動(dòng)程序30的中斷請(qǐng)求之后,便會(huì)立刻分配一定的資源并允許對(duì)應(yīng)的外圍裝置50開(kāi)始執(zhí)行所請(qǐng)求的數(shù)據(jù)傳輸處理。
特別是在數(shù)據(jù)傳輸處理的過(guò)程中,串行端口驅(qū)動(dòng)程序30主要用來(lái)負(fù)責(zé)微處理器10與外圍裝置50之間數(shù)據(jù)的輸入/輸出傳輸。而輸入/輸出傳輸通常會(huì)分別透過(guò)串行端口驅(qū)動(dòng)程序30中的輸入緩沖區(qū)31及輸出緩沖區(qū)32來(lái)進(jìn)行,所謂的緩沖區(qū)(FIFO buffer)即是可用來(lái)暫時(shí)保留等待傳輸處理數(shù)據(jù)的內(nèi)存,主要用來(lái)作為微處理器10與外圍裝置50之間數(shù)據(jù)傳輸處理的緩沖之用。
關(guān)于緩沖區(qū)的用途已為現(xiàn)有技術(shù)范疇,在此不多作贅述。但是由于過(guò)去對(duì)于緩沖區(qū)的使用上,都是采取固定長(zhǎng)度(fixed length)的模式在進(jìn)行(如圖1中輸入緩沖區(qū)31及輸出緩沖區(qū)32),也就是緩沖區(qū)的長(zhǎng)度大小及可容納的數(shù)據(jù)量為固定的,因此往往在需要傳輸處理的數(shù)據(jù)量相當(dāng)大的時(shí)候,這種固定長(zhǎng)度的緩沖區(qū)就經(jīng)常會(huì)因?yàn)閿?shù)據(jù)處理速率的不一致,而導(dǎo)致暫存在緩沖區(qū)中的數(shù)據(jù)超出緩沖區(qū)可容納的最大范圍而發(fā)生溢位的錯(cuò)誤情形;反之,當(dāng)需要傳輸處理的數(shù)據(jù)量非常小的時(shí)候,這種固定長(zhǎng)度的緩沖區(qū)卻也經(jīng)常會(huì)因?yàn)榫彌_區(qū)中的暫存數(shù)據(jù)量不足,而無(wú)法產(chǎn)生中斷請(qǐng)求加以傳輸處理,影響到整體的運(yùn)作效果。
因此,在實(shí)際數(shù)據(jù)傳輸處理過(guò)程中,串行端口驅(qū)動(dòng)程序30中的緩沖區(qū)確實(shí)有必要隨時(shí)依據(jù)數(shù)據(jù)傳輸量來(lái)進(jìn)行緩沖區(qū)長(zhǎng)度的動(dòng)態(tài)調(diào)整,以使得串行端口驅(qū)動(dòng)程序30能夠在最適當(dāng)?shù)臅r(shí)機(jī)向微處理器10發(fā)出中斷請(qǐng)求進(jìn)行數(shù)據(jù)傳輸處理,如此才能夠使微處理器10與外圍裝置50之間的數(shù)據(jù)傳輸處理能夠維持在最佳化的狀態(tài),同時(shí)使整體的效果也能夠達(dá)到最佳化的狀況。如何設(shè)計(jì)一種可以依據(jù)實(shí)際數(shù)據(jù)傳輸量來(lái)動(dòng)態(tài)調(diào)整串行端口驅(qū)動(dòng)程序30中緩沖區(qū)長(zhǎng)度的方法,是本發(fā)明的重點(diǎn)所在。
發(fā)明內(nèi)容根據(jù)現(xiàn)有的串行數(shù)據(jù)傳輸處理所存在的問(wèn)題點(diǎn),本發(fā)明的目的在于提供一種動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法。
為實(shí)現(xiàn)上述目的,本發(fā)明所提供的動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法可依據(jù)數(shù)據(jù)傳輸量來(lái)進(jìn)行動(dòng)態(tài)調(diào)整的模式,也即具有動(dòng)態(tài)長(zhǎng)度(dynamic length)的緩沖區(qū)模式,該方法包含有下列步驟首先取得起始傳輸時(shí)間、數(shù)據(jù)傳輸總量、及終止傳輸時(shí)間;透過(guò)運(yùn)算求得數(shù)據(jù)傳輸量;判斷是否符合標(biāo)準(zhǔn)區(qū)間?當(dāng)該數(shù)據(jù)傳輸量落于標(biāo)準(zhǔn)區(qū)間內(nèi),且相對(duì)數(shù)值落于接近該標(biāo)準(zhǔn)區(qū)間上限時(shí),增長(zhǎng)緩沖區(qū)長(zhǎng)度;當(dāng)該數(shù)據(jù)傳輸量落于標(biāo)準(zhǔn)區(qū)間內(nèi),且相對(duì)數(shù)值落于接近該標(biāo)準(zhǔn)區(qū)間下限時(shí),縮短緩沖區(qū)長(zhǎng)度;最后,依據(jù)緩沖區(qū)數(shù)據(jù)狀態(tài)產(chǎn)生中斷請(qǐng)求,開(kāi)始進(jìn)行傳輸數(shù)據(jù)處理。
相較于現(xiàn)有技術(shù),本發(fā)明可避免數(shù)據(jù)傳輸量大時(shí),增長(zhǎng)緩沖區(qū)的長(zhǎng)度以減少數(shù)據(jù)溢位的情況發(fā)生;同時(shí)也可減少數(shù)據(jù)傳輸量小時(shí),縮短緩沖區(qū)的長(zhǎng)度以提升整體的運(yùn)作效果。
圖1是現(xiàn)有的串行數(shù)據(jù)傳輸處理的結(jié)構(gòu)框圖。
圖2是本發(fā)明所提的動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法的結(jié)構(gòu)框圖。
圖3是本發(fā)明所提的動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法的運(yùn)作流程圖。
具體實(shí)施方式本發(fā)明提出一種動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法。由圖1的現(xiàn)有結(jié)構(gòu)及圖2的本發(fā)明結(jié)構(gòu)中可清楚發(fā)現(xiàn),本發(fā)明的主要技術(shù)特征在于能夠?qū)⒓扔写卸丝隍?qū)動(dòng)程序30(serial driver)中的緩沖區(qū)(FIFO buffer)(包括輸入緩沖區(qū)31及輸出緩沖區(qū)32)從以往的固定長(zhǎng)度(fixed length)的模式更改為可依據(jù)實(shí)際數(shù)據(jù)傳輸量來(lái)進(jìn)行動(dòng)態(tài)調(diào)整的模式,也即具有動(dòng)態(tài)長(zhǎng)度(dynamiclength)的緩沖區(qū)模式。
本發(fā)明方法主要應(yīng)用于計(jì)算機(jī)可執(zhí)行平臺(tái)之上,特別是用來(lái)提升計(jì)算機(jī)可執(zhí)行平臺(tái)中微處理器10與外圍裝置50之間的數(shù)據(jù)傳輸處理的效果(如圖2中所示),因此只要具有微處理器10的計(jì)算機(jī)可執(zhí)行平臺(tái)均可以應(yīng)用本發(fā)明方法,例如手持式移動(dòng)通信裝置(handheld device)中的智能型手機(jī)(Smartphone)。
本發(fā)明方法的運(yùn)作流程,將配合圖3的部分加以說(shuō)明(請(qǐng)搭配參考圖2的部分)。當(dāng)外圍裝置50對(duì)串行端口驅(qū)動(dòng)程序30發(fā)出數(shù)據(jù)傳輸處理的請(qǐng)求時(shí),此時(shí)串行端口驅(qū)動(dòng)程序30會(huì)在向微處理器10發(fā)出中斷(interrupt)之前,執(zhí)行本發(fā)明方法進(jìn)行關(guān)于緩沖區(qū)長(zhǎng)度的動(dòng)態(tài)調(diào)整,完成之后才向微處理器10發(fā)出中斷并開(kāi)始數(shù)據(jù)傳輸處理的作業(yè)。至于本發(fā)明方法的詳細(xì)說(shuō)明如下首先,當(dāng)串行端口驅(qū)動(dòng)程序30接收到來(lái)自外圍裝置50所發(fā)出的數(shù)據(jù)傳輸處理請(qǐng)求時(shí),便開(kāi)始啟動(dòng)本發(fā)明方法并取得啟動(dòng)時(shí)的起始傳輸時(shí)間(步驟100);啟動(dòng)之后,串行端口驅(qū)動(dòng)程序30便向外圍裝置50請(qǐng)求讀取所需傳輸處理數(shù)據(jù)的總數(shù)據(jù)量(步驟110);并同時(shí)預(yù)估并取得外圍裝置50將所有傳輸處理數(shù)據(jù)傳送至串行端口驅(qū)動(dòng)程序30上的終止傳輸時(shí)間(步驟120);然后根據(jù)預(yù)設(shè)的表達(dá)式來(lái)計(jì)算出數(shù)據(jù)傳輸量(步驟130),表達(dá)式可以下列公式來(lái)加以表示M=D/(T2-T1);其中,M為數(shù)據(jù)傳輸量,其單位為字節(jié)/滴答(byte/tick);D為數(shù)據(jù)傳輸總量,其單位為字節(jié)(byte);T1及T2分別為起始傳輸時(shí)間及終止傳輸時(shí)間,其單位為滴答(tick),為一般計(jì)算機(jī)可執(zhí)行平臺(tái)中所產(chǎn)生的內(nèi)部時(shí)序單位。
計(jì)算出數(shù)據(jù)傳輸量之后,便進(jìn)一步判斷此數(shù)據(jù)傳輸量是否符合所預(yù)設(shè)的標(biāo)準(zhǔn)區(qū)間?(步驟140)此一標(biāo)準(zhǔn)區(qū)間,為可提供使用者依照計(jì)算機(jī)可執(zhí)行平臺(tái)狀態(tài)而自行調(diào)整定義的默認(rèn)值,包含有數(shù)據(jù)傳輸上限及下限的范圍區(qū)間,依照數(shù)據(jù)傳輸量落于此區(qū)間的數(shù)值來(lái)決定應(yīng)該對(duì)緩沖區(qū)進(jìn)行增長(zhǎng)長(zhǎng)度或是縮短長(zhǎng)度。
當(dāng)計(jì)算出的數(shù)據(jù)傳輸量落于標(biāo)準(zhǔn)區(qū)間內(nèi)(即符合標(biāo)準(zhǔn)區(qū)間),則判斷該數(shù)據(jù)傳輸量是否接近標(biāo)準(zhǔn)區(qū)間上限?(步驟150)當(dāng)數(shù)據(jù)傳輸量相對(duì)數(shù)值落于接近標(biāo)準(zhǔn)區(qū)間上限時(shí),便執(zhí)行將緩沖區(qū)增長(zhǎng)的程序(步驟151),理論上所增長(zhǎng)的緩沖區(qū)長(zhǎng)度最大為1/2緩沖區(qū)的長(zhǎng)度,此增長(zhǎng)限制僅為本發(fā)明方法中的較佳實(shí)施例而已,實(shí)際上此限制也可提供使用者自行加以定義。
當(dāng)計(jì)算出的數(shù)據(jù)傳輸量落于標(biāo)準(zhǔn)區(qū)間內(nèi)(即符合標(biāo)準(zhǔn)區(qū)間),且數(shù)據(jù)傳輸量相對(duì)數(shù)值未落于接近標(biāo)準(zhǔn)區(qū)間上限時(shí),則判斷該數(shù)據(jù)傳輸量是否接近標(biāo)準(zhǔn)區(qū)間下限?(步驟152)當(dāng)數(shù)據(jù)傳輸量相對(duì)數(shù)值落于接近標(biāo)準(zhǔn)區(qū)間下限時(shí),便執(zhí)行將緩沖區(qū)縮短的程序(步驟153),理論上所縮短的緩沖區(qū)長(zhǎng)度最小為1字節(jié)的長(zhǎng)度,同樣地此縮短限制僅為本發(fā)明方法中的較佳實(shí)施例而已,實(shí)際上此限制也可提供使用者自行加以定義。當(dāng)計(jì)算出的數(shù)據(jù)傳輸量落于標(biāo)準(zhǔn)區(qū)間內(nèi)(即符合標(biāo)準(zhǔn)區(qū)間),且數(shù)據(jù)傳輸量相對(duì)數(shù)值未落于接近標(biāo)準(zhǔn)區(qū)間下限時(shí),此時(shí)串行端口驅(qū)動(dòng)程序30便會(huì)依據(jù)緩沖區(qū)數(shù)據(jù)狀態(tài)實(shí)時(shí)產(chǎn)生中斷請(qǐng)求,并將中斷請(qǐng)求發(fā)送至微處理器10中并開(kāi)始進(jìn)行傳輸數(shù)據(jù)處理(步驟160)。
完成上述步驟100至步驟151、步驟153之后,即已經(jīng)完成整個(gè)動(dòng)態(tài)調(diào)整緩沖區(qū)的流程,此時(shí)串行端口驅(qū)動(dòng)程序30便會(huì)依據(jù)緩沖區(qū)數(shù)據(jù)狀態(tài)實(shí)時(shí)產(chǎn)生中斷請(qǐng)求,并將中斷請(qǐng)求發(fā)送至微處理器10中并開(kāi)始進(jìn)行傳輸數(shù)據(jù)處理(步驟160)。由于此時(shí)緩沖區(qū)長(zhǎng)度已經(jīng)過(guò)最佳化的動(dòng)態(tài)調(diào)整,所以任何來(lái)自外圍裝置50的待傳輸處理數(shù)據(jù)在緩沖區(qū)中都能夠以最順利、最有效率的方式傳輸至微處理器10中處理。
標(biāo)準(zhǔn)區(qū)間為使用者自定義的部分,可以隨時(shí)視整體運(yùn)作狀態(tài)而作實(shí)時(shí)的調(diào)整,進(jìn)而使緩沖區(qū)長(zhǎng)度的動(dòng)態(tài)調(diào)整與微處理器10和外圍裝置50之間的數(shù)據(jù)傳輸處理能夠更加順利。舉例來(lái)說(shuō),若以使用于智能型手機(jī)的通用異步收發(fā)器(Universal Asynchronous Receiver-Transmitter,UART)的串行傳輸作業(yè)來(lái)看,較佳的標(biāo)準(zhǔn)區(qū)間上限為160字節(jié)/秒,標(biāo)準(zhǔn)區(qū)間下限為5字節(jié)/秒。
以上所述僅為本發(fā)明其中的較佳實(shí)施例而已,并非用來(lái)限定本發(fā)明的實(shí)施范圍,事實(shí)上只要應(yīng)用在計(jì)算機(jī)可執(zhí)行平臺(tái)上并且透過(guò)串行端口驅(qū)動(dòng)程序所進(jìn)行的任何數(shù)據(jù)傳輸處理程序都可以套用本發(fā)明方法。
權(quán)利要求
1.一種動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法,作用于一計(jì)算機(jī)可執(zhí)行平臺(tái)之上,在外圍裝置透過(guò)串行端口驅(qū)動(dòng)程序(serial driver)請(qǐng)求執(zhí)行數(shù)據(jù)傳輸處理時(shí),可對(duì)串行端口驅(qū)動(dòng)程序中的緩沖區(qū)(FIFO buffer)進(jìn)行動(dòng)態(tài)調(diào)整以提升數(shù)據(jù)傳輸處理效果,其特征在于該方法包含下列步驟取得一起始傳輸時(shí)間(T1)、讀取一數(shù)據(jù)傳輸總量(D)及一終止傳輸時(shí)間(T2);進(jìn)行運(yùn)算求得一數(shù)據(jù)傳輸量(M);判斷該數(shù)據(jù)傳輸量是否落于一標(biāo)準(zhǔn)區(qū)間內(nèi);當(dāng)該數(shù)據(jù)傳輸量落于標(biāo)準(zhǔn)區(qū)間內(nèi),且相對(duì)數(shù)值落于接近該標(biāo)準(zhǔn)區(qū)間上限時(shí),增長(zhǎng)緩沖區(qū)長(zhǎng)度;當(dāng)該數(shù)據(jù)傳輸量落于標(biāo)準(zhǔn)區(qū)間內(nèi),且相對(duì)數(shù)值落于接近該標(biāo)準(zhǔn)區(qū)間下限時(shí),縮短緩沖區(qū)長(zhǎng)度;及依據(jù)緩沖區(qū)數(shù)據(jù)狀態(tài)產(chǎn)生中斷請(qǐng)求,開(kāi)始進(jìn)行傳輸數(shù)據(jù)處理。
2.根據(jù)權(quán)利要求1所述的動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法,其特征在于該計(jì)算機(jī)可執(zhí)行平臺(tái)是指具微處理器的手持式移動(dòng)通信裝置(handhelddevice)。
3.根據(jù)權(quán)利要求2所述的動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法,其特征在于該計(jì)算機(jī)可執(zhí)行平臺(tái)是指智能型手機(jī)(Smartphone)。
4.根據(jù)權(quán)利要求1所述的動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法,其特征在于該起始傳輸時(shí)間(T1)及該終止傳輸時(shí)間(T2),均是以該計(jì)算機(jī)可執(zhí)行平臺(tái)中所產(chǎn)生的內(nèi)部時(shí)序單位為準(zhǔn),此單位為滴答(tick)。
5.根據(jù)權(quán)利要求1所述的動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法,其特征在于該數(shù)據(jù)傳輸總量(D),是以字節(jié)(byte)為單位。
6.根據(jù)權(quán)利要求1所述的動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法,其特征在于該數(shù)據(jù)傳輸量(M)的求取,可透過(guò)下列表達(dá)式來(lái)計(jì)算得出M=D/(T2-T1);其單位為字節(jié)/滴答(byte/tick)。
7.根據(jù)權(quán)利要求1所述的動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法,其特征在于該標(biāo)準(zhǔn)區(qū)間為使用者可自定義的默認(rèn)值,包含有數(shù)據(jù)傳輸上限及下限的范圍。
8.根據(jù)權(quán)利要求1所述的動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法,其特征在于增長(zhǎng)緩沖區(qū)長(zhǎng)度的步驟中,所增長(zhǎng)的緩沖區(qū)長(zhǎng)度最大為1/2緩沖區(qū)的長(zhǎng)度。
9.根據(jù)權(quán)利要求1所述的動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法,其特征在于縮短緩沖區(qū)長(zhǎng)度的步驟中,所縮短的緩沖區(qū)長(zhǎng)度最小為1字節(jié)的長(zhǎng)度。
全文摘要
一種動(dòng)態(tài)調(diào)整串行傳輸?shù)木彌_區(qū)長(zhǎng)度的方法,于串行端口驅(qū)動(dòng)程序(serialdriver)執(zhí)行數(shù)據(jù)傳輸處理時(shí),依數(shù)據(jù)傳輸量動(dòng)態(tài)調(diào)整緩沖區(qū)(FIFO buffer)長(zhǎng)度。該方法包含有下列步驟首先取得起始傳輸時(shí)間、數(shù)據(jù)傳輸總量、及終止傳輸時(shí)間;透過(guò)運(yùn)算求得數(shù)據(jù)傳輸量;判斷是否符合標(biāo)準(zhǔn)區(qū)間?當(dāng)該數(shù)據(jù)傳輸量落于標(biāo)準(zhǔn)區(qū)間內(nèi),且相對(duì)數(shù)值落于接近該標(biāo)準(zhǔn)區(qū)間上限時(shí),增長(zhǎng)緩沖區(qū)長(zhǎng)度;當(dāng)該數(shù)據(jù)傳輸量落于標(biāo)準(zhǔn)區(qū)間內(nèi),且相對(duì)數(shù)值落于接近該標(biāo)準(zhǔn)區(qū)間下限時(shí),縮短緩沖區(qū)長(zhǎng)度;最后,依據(jù)緩沖區(qū)數(shù)據(jù)狀態(tài)產(chǎn)生中斷請(qǐng)求,開(kāi)始進(jìn)行傳輸數(shù)據(jù)處理。如此將可避免數(shù)據(jù)傳輸量大時(shí),因緩沖區(qū)長(zhǎng)度不足且中斷請(qǐng)求間隔過(guò)長(zhǎng)而造成數(shù)據(jù)溢位;同時(shí)也可減少數(shù)據(jù)傳輸量小時(shí),因緩沖區(qū)長(zhǎng)度過(guò)長(zhǎng)且中斷請(qǐng)求間隔過(guò)長(zhǎng)而造成整體效果不明顯。
文檔編號(hào)G06F13/38GK1773476SQ200410052088
公開(kāi)日2006年5月17日 申請(qǐng)日期2004年11月8日 優(yōu)先權(quán)日2004年11月8日
發(fā)明者葉承溱 申請(qǐng)人:佛山市順德區(qū)順達(dá)電腦廠(chǎng)有限公司, 神達(dá)電腦股份有限公司