一種數(shù)據(jù)的接收方法、系統(tǒng)以及裝置制造方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)的接收方法、系統(tǒng)以及裝置,包括:DMA控制器將接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭存儲(chǔ)在第一存儲(chǔ)空間,數(shù)據(jù)幀頭攜帶用于表征數(shù)據(jù)幀的數(shù)據(jù)長度的信息,在確定接收并存儲(chǔ)完成數(shù)據(jù)幀頭后讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭,并將數(shù)據(jù)長度的信息發(fā)送至應(yīng)用程序,以及,在確定接收并存儲(chǔ)完成數(shù)據(jù)幀頭后,將接收的數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間;該應(yīng)用程序根據(jù)從DMA控制器獲取的數(shù)據(jù)長度的信息,確定DMA控制器將接收并存儲(chǔ)完成數(shù)據(jù)體后,讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及第二存儲(chǔ)空間保存的數(shù)據(jù)體。采用本技術(shù)方案,能夠避免應(yīng)用程序從存儲(chǔ)空間讀取到的數(shù)據(jù)幀與實(shí)際的數(shù)據(jù)幀不一致的問題,提高應(yīng)用程序讀取數(shù)據(jù)的成功率。
【專利說明】一種數(shù)據(jù)的接收方法、系統(tǒng)以及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)及信息【技術(shù)領(lǐng)域】,尤其涉及一種數(shù)據(jù)的接收方法、系統(tǒng)以及裝置。
【背景技術(shù)】
[0002]目前,嵌入式系統(tǒng)在與高速數(shù)據(jù)傳輸設(shè)備進(jìn)行通信時(shí),一般通過多次接收的方式接收一個(gè)完整的數(shù)據(jù)幀,即每次接收該數(shù)據(jù)幀的部分?jǐn)?shù)據(jù),該部分?jǐn)?shù)據(jù)的長度會(huì)根據(jù)系統(tǒng)本地配置的硬件的數(shù)據(jù)處理能力決定,并且,系統(tǒng)每接收一次數(shù)據(jù)就會(huì)產(chǎn)生一次中斷請(qǐng)求,該中斷請(qǐng)求會(huì)觸發(fā)中央處理器(Central Processing Unit,CPU)調(diào)用中斷服務(wù)程序進(jìn)行數(shù)據(jù)接收的操作。實(shí)際應(yīng)用中,CPU每次接收的數(shù)據(jù)量有限,因此,在系統(tǒng)接收的數(shù)據(jù)量較大的情況下,CPU接收完成所有數(shù)據(jù)的次數(shù)也會(huì)相應(yīng)增加,相應(yīng)地,CPU根據(jù)中斷請(qǐng)求調(diào)用中斷服務(wù)程序的處理次數(shù)也會(huì)增加,這些處理過程提高了 CPU資源的占用率,可能導(dǎo)致CPU數(shù)據(jù)處理能力的降低。
[0003]目前,針對(duì)上述問題,嵌入式系統(tǒng)一般采用直接內(nèi)存存取(Direct MemoryAccess,DMA)的數(shù)據(jù)接收方式。采用DMA方式接收數(shù)據(jù)之前,CPU主要對(duì)DMA的數(shù)據(jù)接收配置進(jìn)行初始化,例如,CPU會(huì)根據(jù)預(yù)先設(shè)定的數(shù)據(jù)幀的數(shù)據(jù)長度為DMA控制器分配用于存儲(chǔ)接收的數(shù)據(jù)幀的存儲(chǔ)空間。在DMA的數(shù)據(jù)接收方式中,主要由DMA控制器完成數(shù)據(jù)的接收操作,該DMA控制器能夠適應(yīng)配置了不同數(shù)據(jù)處理能力的硬件的嵌入式系統(tǒng),一般情況下,DMA控制器能夠一次接收一個(gè)完整的數(shù)據(jù)幀,但要求該數(shù)據(jù)幀的數(shù)據(jù)長度滿足設(shè)定的數(shù)據(jù)幀的數(shù)據(jù)長度,即不需要通過多次接收完一個(gè)數(shù)據(jù)幀,從而減少了 CPU對(duì)中斷請(qǐng)求的處理資源。
[0004]在基于DMA的數(shù)據(jù)接收方式中,為DMA控制器分配的用于存儲(chǔ)DMA控制器接收的數(shù)據(jù)的存儲(chǔ)空間的大小一般是固定的,也即采用DMA的數(shù)據(jù)接收方式,要求每次接收的數(shù)據(jù)幀的數(shù)據(jù)長度是固定的?;跒镈MA控制器分配的固定大小的存儲(chǔ)空間,DMA控制器會(huì)根據(jù)該存儲(chǔ)空間進(jìn)行數(shù)據(jù)存儲(chǔ)的操作情況判斷是否接收完一個(gè)數(shù)據(jù)幀,例如,預(yù)先設(shè)定的數(shù)據(jù)幀的數(shù)據(jù)長度為512bit,基于該數(shù)據(jù)長度為DMA控制器分配用于存儲(chǔ)該數(shù)據(jù)長度的數(shù)據(jù)幀的存儲(chǔ)空間為lOOObit,那么,在DMA控制器接收數(shù)據(jù)的過程中,會(huì)將接收的數(shù)據(jù)幀保存至該存儲(chǔ)空間的前512bit對(duì)應(yīng)的存儲(chǔ)空間,在DMA控制器確定完成數(shù)據(jù)幀的接收后,會(huì)產(chǎn)生中斷請(qǐng)求,并將該中斷請(qǐng)求發(fā)送至應(yīng)用程序,由應(yīng)用程序根據(jù)設(shè)定的數(shù)據(jù)幀的數(shù)據(jù)長度從該存儲(chǔ)空間讀取相應(yīng)長度的數(shù)據(jù)。其中,DMA控制器確定完成數(shù)據(jù)幀的接收,主要是在將接收的數(shù)據(jù)幀保存至存儲(chǔ)空間的前512bit對(duì)應(yīng)的存儲(chǔ)空間后,判斷設(shè)定時(shí)間內(nèi)是否再接收到數(shù)據(jù),若未接收到,則確定完成數(shù)據(jù)幀的接收。
[0005]顯然,采用DMA的數(shù)據(jù)接收方式,DMA控制器主要是基于預(yù)先分配的固定大小的存儲(chǔ)空間來接收滿足設(shè)定數(shù)據(jù)長度的數(shù)據(jù)幀,在實(shí)際應(yīng)用中,由于實(shí)際業(yè)務(wù)類型的不同,很難保證數(shù)據(jù)幀的數(shù)據(jù)長度為固定值,在此情況下,可能導(dǎo)致數(shù)據(jù)接收失敗,例如,在當(dāng)前接收的數(shù)據(jù)幀的實(shí)際數(shù)據(jù)長度大于設(shè)定的數(shù)據(jù)幀的數(shù)據(jù)長度時(shí),可能存在預(yù)先分配的存儲(chǔ)空間小于當(dāng)前接收的數(shù)據(jù)幀的實(shí)際數(shù)據(jù)長度,如此,DMA控制器則不能夠接收到完整的數(shù)據(jù)幀,進(jìn)而應(yīng)用程序也無法獲取到完整的數(shù)據(jù);在當(dāng)前接收的數(shù)據(jù)幀的實(shí)際數(shù)據(jù)長度小于設(shè)定的數(shù)據(jù)幀的數(shù)據(jù)長度時(shí),由于應(yīng)用程序是根據(jù)設(shè)定的數(shù)據(jù)幀的數(shù)據(jù)長度從存儲(chǔ)空間讀取相應(yīng)數(shù)據(jù)長度的數(shù)據(jù)的,因此,可能存在應(yīng)用程序在讀取該數(shù)據(jù)幀時(shí)還會(huì)讀取到其他不相關(guān)的數(shù)據(jù)信息的問題,從而導(dǎo)致應(yīng)用程序讀取到的數(shù)據(jù)幀與實(shí)際的數(shù)據(jù)幀不一致,降低了應(yīng)用程序讀取數(shù)據(jù)的成功率。
[0006]綜上所述,現(xiàn)有的DMA的數(shù)據(jù)接收方式,存在應(yīng)用程序從存儲(chǔ)空間讀取到的數(shù)據(jù)幀與實(shí)際的數(shù)據(jù)幀不一致的問題,從而導(dǎo)致應(yīng)用程序讀取數(shù)據(jù)的成功率。
【發(fā)明內(nèi)容】
[0007]有鑒于此,本發(fā)明實(shí)施例提供一種數(shù)據(jù)的接收方法以及裝置,采用該技術(shù)方案,能夠避免應(yīng)用程序從存儲(chǔ)空間讀取到的數(shù)據(jù)幀與實(shí)際傳輸?shù)臄?shù)據(jù)幀不一致的問題。
[0008]本發(fā)明實(shí)施例通過如下技術(shù)方案實(shí)現(xiàn):
[0009]根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種數(shù)據(jù)的接收方法,包括:
[0010]DMA控制器將接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭存儲(chǔ)在第一存儲(chǔ)空間,所述數(shù)據(jù)幀頭攜帶用于表征所述數(shù)據(jù)幀的數(shù)據(jù)長度的信息,在確定接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,讀取所述第一存儲(chǔ)空間保存的所述數(shù)據(jù)幀頭,并將所述數(shù)據(jù)幀頭攜帶的所述數(shù)據(jù)長度的信息發(fā)送至用于處理所述數(shù)據(jù)幀的應(yīng)用程序,以及,在確定接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,將接收的所述數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間;
[0011]所述應(yīng)用程序根據(jù)所述DMA控制器發(fā)送的所述數(shù)據(jù)長度的信息,確定所述DMA控制器接收并存儲(chǔ)完成所述數(shù)據(jù)體后,讀取所述第一存儲(chǔ)空間保存的所述數(shù)據(jù)幀頭以及所述第二存儲(chǔ)空間保存的所述數(shù)據(jù)體。
[0012]根據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,還提供了一種數(shù)據(jù)的接收方法,包括:
[0013]DMA控制器將接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭存儲(chǔ)在第一存儲(chǔ)空間,所述數(shù)據(jù)幀頭攜帶用于表征所述數(shù)據(jù)幀的數(shù)據(jù)長度的信息;
[0014]在確定接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,讀取所述第一存儲(chǔ)空間保存的所述數(shù)據(jù)幀頭,并將所述數(shù)據(jù)幀頭攜帶的所述數(shù)據(jù)長度的信息發(fā)送至用于處理所述數(shù)據(jù)幀的應(yīng)用程序;以及
[0015]在確定接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,將接收的所述數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第
二存儲(chǔ)空間。
[0016]根據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,還提供了一種數(shù)據(jù)的接收方法,包括:
[0017]應(yīng)用程序接收DMA控制器發(fā)送的用于表征接收的數(shù)據(jù)幀的數(shù)據(jù)長度的信息;
[0018]根據(jù)所述數(shù)據(jù)長度的信息,確定所述DMA控制器接收并存儲(chǔ)完成所述數(shù)據(jù)幀的數(shù)據(jù)體后,讀取所述DMA控制器接收并保存在第一存儲(chǔ)空間的所述數(shù)據(jù)幀的數(shù)據(jù)幀頭以及所述DMA控制器接收并保存在所述第二存儲(chǔ)空間的所述數(shù)據(jù)體。
[0019]根據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,還提供了一種數(shù)據(jù)的接收系統(tǒng),該系統(tǒng)包括DMA控制器以及應(yīng)用程序,其中:
[0020]所述DMA控制器,用于將接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭存儲(chǔ)在第一存儲(chǔ)空間,所述數(shù)據(jù)幀頭攜帶用于表征所述數(shù)據(jù)幀的數(shù)據(jù)長度的信息,在確定接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,讀取所述第一存儲(chǔ)空間保存的所述數(shù)據(jù)幀頭,并將所述數(shù)據(jù)幀頭攜帶的所述數(shù)據(jù)長度的信息發(fā)送至用于處理所述數(shù)據(jù)幀的應(yīng)用程序,以及,在確定接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,將接收的所述數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間;
[0021]所述應(yīng)用程序,用于根據(jù)所述DMA控制器發(fā)送的所述數(shù)據(jù)長度的信息,確定所述DMA控制器接收并存儲(chǔ)完成所述數(shù)據(jù)體后,讀取所述第一存儲(chǔ)空間保存的所述數(shù)據(jù)幀頭以及所述第二存儲(chǔ)空間保存的所述數(shù)據(jù)體。
[0022]根據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,還提供了一種數(shù)據(jù)的接收裝置,包括:
[0023]數(shù)據(jù)幀頭存儲(chǔ)單元,用于將接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭存儲(chǔ)在第一存儲(chǔ)空間,所述數(shù)據(jù)幀頭攜帶用于表征所述數(shù)據(jù)幀的數(shù)據(jù)長度的信息;
[0024]數(shù)據(jù)幀頭存儲(chǔ)監(jiān)控單元,用于確定所述數(shù)據(jù)幀頭存儲(chǔ)單元是否接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭;
[0025]數(shù)據(jù)幀頭讀取單元,用于在所述數(shù)據(jù)幀頭存儲(chǔ)監(jiān)控單元確定所述數(shù)據(jù)幀頭存儲(chǔ)單元接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,讀取所述第一存儲(chǔ)空間保存的所述數(shù)據(jù)幀頭;
[0026]數(shù)據(jù)長度的信息發(fā)送單元,用于將所述數(shù)據(jù)幀頭讀取單元讀取的數(shù)據(jù)幀頭攜帶的所述數(shù)據(jù)長度的信息發(fā)送至用于處理所述數(shù)據(jù)幀的應(yīng)用程序;
[0027]數(shù)據(jù)體存儲(chǔ)單元,用于在所述數(shù)據(jù)幀頭存儲(chǔ)監(jiān)控單元確定所述數(shù)據(jù)幀頭存儲(chǔ)單元接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,將接收的所述數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間。
[0028]根據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,還提供了一種數(shù)據(jù)的接收裝置,包括:
[0029]數(shù)據(jù)長度的信息接收單元,用于接收DMA控制器發(fā)送的用于表征接收的數(shù)據(jù)幀的數(shù)據(jù)長度的信息;
[0030]數(shù)據(jù)體存儲(chǔ)完成確定單元,用于根據(jù)所述數(shù)據(jù)長度的信息接收單元接收的數(shù)據(jù)長度的信息,確定所述DMA控制器是否完成接收并存儲(chǔ)所述數(shù)據(jù)幀的數(shù)據(jù)體的操作;
[0031]數(shù)據(jù)幀讀取單元,用于在所述數(shù)據(jù)體存儲(chǔ)完成確定單元確定所述DMA控制器接收并存儲(chǔ)完成所述數(shù)據(jù)幀的數(shù)據(jù)體后,讀取所述DMA控制器接收并保存在第一存儲(chǔ)空間的所述數(shù)據(jù)幀的數(shù)據(jù)幀頭以及所述DMA控制器接收并保存在所述第二存儲(chǔ)空間的所述數(shù)據(jù)體。
[0032]通過本發(fā)明實(shí)施例提供的上述至少一個(gè)技術(shù)方案,DMA控制器將接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭存儲(chǔ)在第一存儲(chǔ)空間,該數(shù)據(jù)幀頭攜帶用于表征接收的數(shù)據(jù)幀的數(shù)據(jù)長度的信息,在確定接收并存儲(chǔ)完成數(shù)據(jù)幀頭后,讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭,并將數(shù)據(jù)幀頭攜帶的數(shù)據(jù)長度的信息發(fā)送至用于處理數(shù)據(jù)幀的應(yīng)用程序。應(yīng)用程序根據(jù)DMA控制器發(fā)送的數(shù)據(jù)長度的信息,確定DMA控制器將接收的數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間的操作完成后,即讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及第二存儲(chǔ)空間保存的數(shù)據(jù)體。本技術(shù)方案與現(xiàn)有技術(shù)相比,能夠通過數(shù)據(jù)幀的數(shù)據(jù)幀頭攜帶數(shù)據(jù)長度的信息,從而在DMA控制器完成數(shù)據(jù)幀頭的接收后,能夠?qū)⒔邮盏臄?shù)據(jù)幀頭攜帶的數(shù)據(jù)長度的信息發(fā)送至用于處理接收的數(shù)據(jù)幀的應(yīng)用程序,從而該應(yīng)用程序能夠根據(jù)數(shù)據(jù)長度的信息確定DMA控制器是否完成數(shù)據(jù)幀的接收,并在確定DMA控制器接收并存儲(chǔ)完成數(shù)據(jù)幀的數(shù)據(jù)體后,讀取在第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及在第二存儲(chǔ)空間保存的數(shù)據(jù)體,從而DMA控制器能夠支持不同數(shù)據(jù)長度的數(shù)據(jù)幀的接收,避免了應(yīng)用程序從存儲(chǔ)空間讀取到的數(shù)據(jù)幀與實(shí)際傳輸?shù)臄?shù)據(jù)幀不一致的問題,提高了應(yīng)用程序讀取數(shù)據(jù)的成功率。
[0033]本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。
【專利附圖】
【附圖說明】
[0034]附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明實(shí)施例一起用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:
[0035]圖1為本發(fā)明實(shí)施例一提供的一種數(shù)據(jù)的接收的流程示意圖;
[0036]圖2為本發(fā)明實(shí)施例一提供的確定DMA控制器接收并存儲(chǔ)數(shù)據(jù)體的操作完成的流程不意圖;
[0037]圖3為本發(fā)明實(shí)施例一提供的讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及第二存儲(chǔ)空間保存的數(shù)據(jù)體的優(yōu)選實(shí)施方式的流程示意圖;
[0038]圖4為本發(fā)明實(shí)施例一提供的讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及第二存儲(chǔ)空間保存的數(shù)據(jù)體的又一優(yōu)選實(shí)施方式的流程示意圖;
[0039]圖5為本發(fā)明實(shí)施例三提供的一種數(shù)據(jù)的接收裝置的結(jié)構(gòu)示意圖;
[0040]圖6為本發(fā)明實(shí)施例三提供的又一種數(shù)據(jù)的接收裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0041]為了給出提高應(yīng)用程序讀取數(shù)據(jù)的成功率的實(shí)現(xiàn)方案,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)的接收方法、系統(tǒng)以及裝置,以下結(jié)合說明書附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。并且在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0042]本發(fā)明提供的技術(shù)方案中,在進(jìn)行數(shù)據(jù)的接收的相關(guān)操作前,會(huì)首先對(duì)DMA控制器進(jìn)行初始化,例如,由CPU根據(jù)數(shù)據(jù)幀的數(shù)據(jù)幀頭的數(shù)據(jù)長度為DMA控制器分配用于存儲(chǔ)接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭的第一存儲(chǔ)空間,該第一存儲(chǔ)空間提供的存儲(chǔ)區(qū)域可以與數(shù)據(jù)幀頭的數(shù)據(jù)長度匹配,也可以大于數(shù)據(jù)幀頭的數(shù)據(jù)長度,實(shí)際應(yīng)用中,可以根據(jù)具體情況進(jìn)行相應(yīng)的分配;此外,CPU還能夠根據(jù)數(shù)據(jù)幀的數(shù)據(jù)體的數(shù)據(jù)長度的取值范圍,為DMA控制器分配用于存儲(chǔ)接收的數(shù)據(jù)幀的數(shù)據(jù)體的第二存儲(chǔ)空間,本技術(shù)方案中,數(shù)據(jù)幀的數(shù)據(jù)體的數(shù)據(jù)長度是不固定的,該數(shù)據(jù)長度可以根據(jù)實(shí)際傳輸?shù)臄?shù)據(jù)的情況進(jìn)行靈活的設(shè)置,因此,CPU會(huì)根據(jù)實(shí)際應(yīng)用中數(shù)據(jù)體的數(shù)據(jù)長度的取值范圍為DMA控制器分配存儲(chǔ)該數(shù)據(jù)體的第二存儲(chǔ)空間。
[0043]實(shí)施例一
[0044]該實(shí)施例一提供了一種數(shù)據(jù)的接收方法,該方法能夠應(yīng)用在嵌入式系統(tǒng)中,通過在嵌入式系統(tǒng)中應(yīng)用本技術(shù)方案,能夠避免應(yīng)用程序從存儲(chǔ)空間讀取到的數(shù)據(jù)幀與實(shí)際傳輸?shù)臄?shù)據(jù)幀不一致的問題,從而能夠達(dá)到提高應(yīng)用程序讀取數(shù)據(jù)的成功率的目的。
[0045]圖1示出了本發(fā)明實(shí)施例一提供的一種數(shù)據(jù)的接收的流程示意圖,如圖1所示,該數(shù)據(jù)的接收過程,主要包括以下步驟:
[0046]步驟101、DMA控制器將接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭存儲(chǔ)在第一存儲(chǔ)空間,其中,數(shù)據(jù)幀頭攜帶用于表征數(shù)據(jù)幀的數(shù)據(jù)長度的信息。
[0047]該步驟101中,用于表征數(shù)據(jù)幀的數(shù)據(jù)長度的信息對(duì)應(yīng)的數(shù)據(jù)長度,由數(shù)據(jù)幀包括的數(shù)據(jù)幀頭的數(shù)據(jù)長度以及數(shù)據(jù)幀包括的數(shù)據(jù)體的數(shù)據(jù)長度組成,其中,數(shù)據(jù)幀頭的數(shù)據(jù)長度是預(yù)先設(shè)定的,數(shù)據(jù)體的數(shù)據(jù)長度可以根據(jù)傳輸?shù)臄?shù)據(jù)的具體情況進(jìn)行相應(yīng)的設(shè)置,即該數(shù)據(jù)體的數(shù)據(jù)長度不固定 。
[0048]步驟102、DMA控制器在確定接收并存儲(chǔ)完成接收的數(shù)據(jù)幀頭后,讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭,并將接收的數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間。
[0049]該步驟102中,DMA控制器在確定接收并存儲(chǔ)完接收的數(shù)據(jù)幀頭后,可以通過廣生中斷請(qǐng)求的方式,由中斷服務(wù)程序到第一存儲(chǔ)空間讀取存儲(chǔ)的數(shù)據(jù)幀頭以獲取該數(shù)據(jù)幀頭攜帶的數(shù)據(jù)長度的信息。此外,本技術(shù)方案并不限定對(duì)于執(zhí)行“讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭”以及“將接收的數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間”的操作的順序,即上述操作可以根據(jù)實(shí)際的應(yīng)用環(huán)境,同時(shí)進(jìn)行,或者根據(jù)需要依次進(jìn)行,此處不再贅述。本方案中的所述數(shù)據(jù)幀的數(shù)據(jù)體為數(shù)據(jù)幀中除數(shù)據(jù)幀頭外的數(shù)據(jù)。
[0050]步驟103、DMA控制器將讀取的數(shù)據(jù)幀頭攜帶的數(shù)據(jù)長度的信息發(fā)送至用于處理數(shù)據(jù)幀的應(yīng)用程序。
[0051]該步驟103中,實(shí)際應(yīng)用中,可以基于步驟102中的描述,中斷服務(wù)程序讀取在第一存儲(chǔ)空間中存儲(chǔ)的數(shù)據(jù)幀頭后,將讀取的數(shù)據(jù)幀頭攜帶的數(shù)據(jù)長度的信息發(fā)送至應(yīng)用程序,由應(yīng)用程序進(jìn)行后續(xù)的操作,至此,結(jié)束中斷服務(wù)程序以結(jié)束中斷處理進(jìn)行的操作。實(shí)際應(yīng)用中,步驟102以及步驟103除采用中斷處理的方式讀取保存在第一存儲(chǔ)空間的數(shù)據(jù)幀頭、并將數(shù)據(jù)幀頭中攜帶的數(shù)據(jù)長度的信息發(fā)送至應(yīng)用程序外,還可以根據(jù)應(yīng)用環(huán)境的具體情況或者要求采用其他方式進(jìn)行相應(yīng)的操作,此處,不再一一贅述。本方案中,能夠根據(jù)產(chǎn)生中斷請(qǐng)求的DMA控制器,也可以根據(jù)實(shí)際需求實(shí)現(xiàn)相應(yīng)的讀取保存在第一存儲(chǔ)空間的數(shù)據(jù)幀頭、發(fā)送數(shù)據(jù)幀頭中攜帶的數(shù)據(jù)長度的信息的技術(shù)方案,為便于描述,本方案以下將以DMA控制為例進(jìn)行后續(xù)的描述。
[0052]步驟104、應(yīng)用程序根據(jù)DMA控制器發(fā)送的數(shù)據(jù)長度的信息,確定DMA控制器接收并存儲(chǔ)完數(shù)據(jù)體后,讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及第二存儲(chǔ)空間保存的數(shù)據(jù)體。
[0053]該步驟104中,應(yīng)用程序在根據(jù)DMA控制器發(fā)送的數(shù)據(jù)長度的信息,判斷DMA控制器是否完成接收并存儲(chǔ)數(shù)據(jù)體的操作時(shí),可以結(jié)合DMA控制器接收數(shù)據(jù)幀時(shí)的數(shù)據(jù)傳輸速率進(jìn)行,例如,將數(shù)據(jù)體的數(shù)據(jù)長度包括的比特位的數(shù)目與數(shù)據(jù)傳輸速率相乘的結(jié)果確定為DMA控制器將接收的數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間的操作時(shí)長,實(shí)際應(yīng)用中,還會(huì)結(jié)合應(yīng)用環(huán)境,在確定出的時(shí)長的基礎(chǔ)上增加額外的設(shè)定的時(shí)長,以充分保證數(shù)據(jù)幀被接收與存儲(chǔ)完,該額外的時(shí)長一般可以為確定出的時(shí)長的5^-10%,實(shí)際應(yīng)用中,該比例可以根據(jù)具體情況靈活設(shè)置。在該時(shí)長后,可以確定DMA控制器將接收的數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間的操作完成。此外,根據(jù)應(yīng)用環(huán)境的需要,在確定DMA控制器接收并存儲(chǔ)完數(shù)據(jù)體后,可以讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及第二存儲(chǔ)空間保存的數(shù)據(jù)體,也可以直接讀取第二存儲(chǔ)空間保存的數(shù)據(jù)體,即直接獲取數(shù)據(jù)幀除數(shù)據(jù)幀頭外的數(shù)據(jù)。
[0054]至此,數(shù)據(jù)的接收的流程結(jié)束。
[0055]在圖1對(duì)應(yīng)的流程中,能夠通過數(shù)據(jù)幀的數(shù)據(jù)幀頭攜帶數(shù)據(jù)長度的信息,從而在DMA控制器完成數(shù)據(jù)幀頭的接收后,能夠?qū)⒔邮盏臄?shù)據(jù)幀頭攜帶的數(shù)據(jù)長度的信息發(fā)送至用于處理接收的數(shù)據(jù)幀的應(yīng)用程序,從而該應(yīng)用程序能夠根據(jù)數(shù)據(jù)長度的信息確定DMA控制器是否完成數(shù)據(jù)幀的接收,并在確定DMA控制器接收并存儲(chǔ)完成數(shù)據(jù)幀的數(shù)據(jù)體后,讀取在第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及在第二存儲(chǔ)空間保存的數(shù)據(jù)體,從而DMA控制器能夠支持不同數(shù)據(jù)長度的數(shù)據(jù)幀的接收,避免了應(yīng)用程序從存儲(chǔ)空間讀取到的數(shù)據(jù)幀與實(shí)際傳輸?shù)臄?shù)據(jù)幀不一致的問題,提高了應(yīng)用程序讀取數(shù)據(jù)的成功率。
[0056]在圖1對(duì)應(yīng)的流程包括的步驟102中,即在DMA控制器在確定接收并存儲(chǔ)完成接收的數(shù)據(jù)幀頭后,讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭中,本技術(shù)方案針對(duì)DMA控制器確定接收并存儲(chǔ)完成接收的數(shù)據(jù)幀頭的操作提供了幾種優(yōu)先實(shí)施方式,具體如下:
[0057]當(dāng)用于存儲(chǔ)數(shù)據(jù)幀的數(shù)據(jù)幀頭的第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域大小與數(shù)據(jù)幀的數(shù)據(jù)幀頭的數(shù)據(jù)長度匹配時(shí),DMA控制器可以通過監(jiān)控第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域被占用的情況確定是否接收并存儲(chǔ)完成接收的數(shù)據(jù)幀頭,例如,當(dāng)DMA控制器監(jiān)控到第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域被數(shù)據(jù)(即接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭)全部占用后,確定接收并存儲(chǔ)完數(shù)據(jù)幀頭;
[0058]當(dāng)用于存儲(chǔ)數(shù)據(jù)幀的數(shù)據(jù)幀頭的第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域大于數(shù)據(jù)幀的數(shù)據(jù)幀頭的數(shù)據(jù)長度時(shí),DMA控制器可以在監(jiān)控到第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域被數(shù)據(jù)(即接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭)占用的大小與預(yù)先保存的數(shù)據(jù)幀頭的數(shù)據(jù)長度匹配時(shí),確定接收并存儲(chǔ)完所述數(shù)據(jù)幀頭。
[0059]在圖1對(duì)應(yīng)的流程包括的步驟104中,即在應(yīng)用程序根據(jù)DMA控制器發(fā)送的數(shù)據(jù)長度的信息,確定DMA控制器接收并存儲(chǔ)完成數(shù)據(jù)體后,讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及第二存儲(chǔ)空間保存的數(shù)據(jù)體中,應(yīng)用程序根據(jù)DMA控制器發(fā)送的數(shù)據(jù)長度的信息,確定DMA控制器接收并存儲(chǔ)數(shù)據(jù)體的操作完成時(shí),應(yīng)用程序可以根據(jù)數(shù)據(jù)長度的信息對(duì)應(yīng)的數(shù)據(jù)長度以及數(shù)據(jù)幀的數(shù)據(jù)幀頭的數(shù)據(jù)長度,確定出數(shù)據(jù)幀的數(shù)據(jù)體的數(shù)據(jù)長度,進(jìn)而,確定出DMA控制器在第二存儲(chǔ)空間中存儲(chǔ)接收的數(shù)據(jù)幀的數(shù)據(jù)體的時(shí)長,具體地,圖2示出了本實(shí)施例一提供的一種確定DMA控制器接收并存儲(chǔ)數(shù)據(jù)體的操作完成的流程示意圖,如圖,該確定DMA控制器接收并存儲(chǔ)數(shù)據(jù)體的操作完成的過程,主要包括以下步驟:
[0060]步驟201、應(yīng)用程序?qū)MA中斷處理程序發(fā)送的數(shù)據(jù)長度的信息對(duì)應(yīng)的數(shù)據(jù)長度與數(shù)據(jù)幀頭的數(shù)據(jù)長度的差值,確定為數(shù)據(jù)體的數(shù)據(jù)長度。
[0061]步驟202、應(yīng)用程序根據(jù)數(shù)據(jù)體的數(shù)據(jù)長度,確定DMA控制器將接收的確定出的數(shù)據(jù)長度的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間需要的時(shí)長。
[0062]該步驟202中,應(yīng)用程序可以在明確DMA控制器接收數(shù)據(jù)幀時(shí)的數(shù)據(jù)傳輸速率的情況下,根據(jù)數(shù)據(jù)體的數(shù)據(jù)長度,確定出DMA控制器將接收的確定出的數(shù)據(jù)長度的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間需要的時(shí)長,具體地,可以參考上述步驟104中的相關(guān)描述。
[0063]步驟203、應(yīng)用程序在經(jīng)過確定出的時(shí)長后,確定DMA控制器接收并存儲(chǔ)數(shù)據(jù)體的操作完成。
[0064]該步驟203中,基于應(yīng)用程序接收DMA控制器發(fā)送數(shù)據(jù)長度的信息、以及在接收數(shù)據(jù)長度的信息后執(zhí)行步驟201以及步驟202的時(shí)長,相對(duì)DMA控制器接收并存儲(chǔ)接收的數(shù)據(jù)幀的時(shí)長是可以忽略的,因此,應(yīng)用程序可以從接收到DMA控制器發(fā)送的數(shù)據(jù)長度的信息的時(shí)間開始計(jì)時(shí),并進(jìn)入休眠狀態(tài),在經(jīng)過確定出的時(shí)長后,應(yīng)用程序被喚醒并確定DMA控制器將接收的數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間的操作完成;或者,直接從確定出DMA控制器將接收的確定出的數(shù)據(jù)長度的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間需要的時(shí)長的時(shí)間開始計(jì)時(shí),并進(jìn)入休眠狀態(tài),在經(jīng)過確定出的時(shí)長后,應(yīng)用程序被喚醒并確定DMA控制器將接收的數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間的操作完成。
[0065]至此,確定DMA控制器接收并存儲(chǔ)數(shù)據(jù)體的操作完成的流程結(jié)束。
[0066]基于上述分別用于存儲(chǔ)數(shù)據(jù)幀的數(shù)據(jù)幀頭以及數(shù)據(jù)體的第一存儲(chǔ)空間以及第二存儲(chǔ)空間被分配時(shí)的位置的特征,本技術(shù)方案針對(duì)圖1對(duì)應(yīng)流程包括的步驟104中的“讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及第二存儲(chǔ)空間保存的數(shù)據(jù)體”,提供了幾種優(yōu)選實(shí)施方式,具體如下:
[0067]優(yōu)選實(shí)施方式一
[0068]該優(yōu)選實(shí)施方式一中,第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域與第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域相鄰、且第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域位于第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域之后,對(duì)應(yīng)該第一存儲(chǔ)空間以及第二存儲(chǔ)空間的位置的特征,圖3示出了本發(fā)明實(shí)施例一提供的應(yīng)用程序讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及第二存儲(chǔ)空間保存的數(shù)據(jù)體的流程示意圖,如圖3所示,該讀取保存的數(shù)據(jù)幀頭以及數(shù)據(jù)體的過程,主要包括以下步驟:
[0069]步驟301、應(yīng)用程序確定第一存儲(chǔ)空間的地址的起始地址。
[0070]該步驟301中,基于第一存儲(chǔ)空對(duì)應(yīng)的存儲(chǔ)區(qū)域與第第二存儲(chǔ)空間的存儲(chǔ)區(qū)域相鄰、且第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域位于第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域之后,即CPU分配的第一存儲(chǔ)空間與第二存儲(chǔ)空間的存儲(chǔ)區(qū)域是連續(xù)的,DMA控制器在連續(xù)的存儲(chǔ)區(qū)域中保存數(shù)據(jù)后,若需要讀取保存的數(shù)據(jù),一般確定出該連續(xù)的存儲(chǔ)區(qū)域的地址的起始地址即可,即確定第一存儲(chǔ)空間的地址的起始地址即可。若只需要讀取第二存儲(chǔ)空間中存儲(chǔ)的數(shù)據(jù)幀的數(shù)據(jù)體,則可以將第一存儲(chǔ)空間對(duì)應(yīng)的物理存儲(chǔ)空間后、且與該物理存儲(chǔ)空間相鄰的存儲(chǔ)空間的地址作為第二存儲(chǔ)空間的起始地址。
[0071]步驟302、應(yīng)用程序根據(jù)DMA控制器發(fā)送的數(shù)據(jù)長度的信息,從第一存儲(chǔ)空間的地址的起始地址開始,讀取確定出的數(shù)據(jù)長度的數(shù)據(jù)作為數(shù)據(jù)幀的數(shù)據(jù)幀頭以及數(shù)據(jù)體。
[0072]該步驟302中,應(yīng)用程序從第一存儲(chǔ)空間的地址的起始地址開始,讀取與DMA控制器發(fā)送的數(shù)據(jù)長度的信息相應(yīng)的數(shù)據(jù)長度一致數(shù)據(jù),該讀取到的數(shù)據(jù)為由數(shù)據(jù)幀頭以及數(shù)據(jù)體組成的數(shù)據(jù)幀。若只需要讀取第二存儲(chǔ)空間中存儲(chǔ)的數(shù)據(jù)幀的數(shù)據(jù)體,則直接從步驟301中確定的第二存儲(chǔ)空間的起始地址開始讀取數(shù)據(jù)長度與數(shù)據(jù)幀的數(shù)據(jù)體的數(shù)據(jù)長度一致的數(shù)據(jù),作為數(shù)據(jù)幀的數(shù)據(jù)體。
[0073]至此,讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及第二存儲(chǔ)空間保存的數(shù)據(jù)體的流程結(jié)束。
[0074]優(yōu)選實(shí)施方式二
[0075]該優(yōu)選實(shí)施方式二中,第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域與第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域非相鄰,對(duì)應(yīng)該第一存儲(chǔ)空間以及第二存儲(chǔ)空間的位置的特征,圖4示出了本發(fā)明實(shí)施例一提供的應(yīng)用程序讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及第二存儲(chǔ)空間保存的數(shù)據(jù)體的流程示意圖,如圖4所示,該讀取保存的數(shù)據(jù)幀頭以及數(shù)據(jù)體的過程,主要包括以下步驟:
[0076]步驟401、應(yīng)用程序確定第一存儲(chǔ)空間的地址以及第二存儲(chǔ)空間的地址。
[0077]步驟402、應(yīng)用程序根據(jù)數(shù)據(jù)幀的數(shù)據(jù)幀頭的數(shù)據(jù)長度,從第一存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域讀取數(shù)據(jù)長度與數(shù)據(jù)幀頭的數(shù)據(jù)長度一致的數(shù)據(jù),作為數(shù)據(jù)幀的數(shù)據(jù)幀頭。
[0078]該步驟402中,應(yīng)用程序從第一存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域讀取數(shù)據(jù)時(shí),可以根據(jù)第一存儲(chǔ)空間的地址,從第一存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域的起始存儲(chǔ)地址開始讀取數(shù)據(jù)長度與數(shù)據(jù)幀頭的數(shù)據(jù)長度一致的數(shù)據(jù)。
[0079]步驟403、應(yīng)用程序根據(jù)數(shù)據(jù)幀的數(shù)據(jù)體的數(shù)據(jù)長度,從第二存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域讀取數(shù)據(jù)長度與數(shù)據(jù)體的數(shù)據(jù)長度一致的數(shù)據(jù),作為數(shù)據(jù)幀的數(shù)據(jù)體。
[0080]該步驟403中,應(yīng)用程序從第二存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域讀取數(shù)據(jù)時(shí),可以根據(jù)第二存儲(chǔ)空間的地址,從該地址對(duì)應(yīng)的存儲(chǔ)區(qū)域的起始存儲(chǔ)地址開始讀取數(shù)據(jù)長度與數(shù)據(jù)體的數(shù)據(jù)長度一致的數(shù)據(jù)。若只需要讀取第二存儲(chǔ)空間中存儲(chǔ)的數(shù)據(jù)幀的數(shù)據(jù)體,則可以在步驟401中確定出第二存儲(chǔ)空間的地址即可,然后執(zhí)行該步驟403。若需要讀取完整的數(shù)據(jù)幀,該步驟403與步驟402的執(zhí)行順序,可以根據(jù)實(shí)際情況靈活進(jìn)行,此處不作限定,例如,可以同時(shí)執(zhí)行步驟402以及步驟403,或者,在執(zhí)行步驟403后執(zhí)行步驟402,或者,執(zhí)行步驟402后執(zhí)行步驟403。
[0081]至此,讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及第二存儲(chǔ)空間保存的數(shù)據(jù)體的流程結(jié)束。
[0082]實(shí)施例二
[0083]該實(shí)施例二提供了一種數(shù)據(jù)的接收系統(tǒng),該系統(tǒng)能夠應(yīng)用在嵌入式系統(tǒng)中,通過在嵌入式系統(tǒng)中應(yīng)用本技術(shù)方案,能夠避免應(yīng)用程序從存儲(chǔ)空間讀取到的數(shù)據(jù)幀與實(shí)際傳輸?shù)臄?shù)據(jù)幀不一致的問題,從而能夠達(dá)到提高應(yīng)用程序讀取數(shù)據(jù)的成功率的目的。
[0084]本實(shí)施例二提供的數(shù)據(jù)的接收系統(tǒng),包括DMA控制器以及應(yīng)用程序,其中:
[0085]DMA控制器,用于將接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭存儲(chǔ)在第一存儲(chǔ)空間,數(shù)據(jù)幀頭攜帶用于表征數(shù)據(jù)幀的數(shù)據(jù)長度的信息,在確定接收并存儲(chǔ)完成數(shù)據(jù)幀頭后,讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭,并將數(shù)據(jù)幀頭攜帶的數(shù)據(jù)長度的信息發(fā)送至用于處理數(shù)據(jù)幀的應(yīng)用程序,以及,在確定接收并存儲(chǔ)完成數(shù)據(jù)幀頭后,將接收的數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間;
[0086]應(yīng)用程序,用于根據(jù)DMA控制器發(fā)送的數(shù)據(jù)長度的信息,確定DMA控制器接收并存儲(chǔ)完成數(shù)據(jù)體后,讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及第二存儲(chǔ)空間保存的數(shù)據(jù)體。
[0087]進(jìn)一步地,本實(shí)施例二提供的DMA控制器以及應(yīng)用程序還具有以下功能,具體如下:
[0088]DMA控制器在進(jìn)行確定接收并存儲(chǔ)完數(shù)據(jù)幀頭的操作時(shí),若用于存儲(chǔ)數(shù)據(jù)幀頭的第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域的大小與數(shù)據(jù)幀頭的數(shù)據(jù)長度匹配,則可以在監(jiān)控到第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域被數(shù)據(jù)幀頭全部占用后,確定接收并存儲(chǔ)完數(shù)據(jù)幀頭;若第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域的大小大于數(shù)據(jù)幀頭的數(shù)據(jù)長度時(shí),則在監(jiān)控到第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域被數(shù)據(jù)幀頭占用的大小與預(yù)先保存的數(shù)據(jù)幀頭的數(shù)據(jù)長度匹配時(shí),確定接收并存儲(chǔ)完據(jù)巾貞頭。
[0089]應(yīng)用程序根據(jù)DMA控制器發(fā)送的數(shù)據(jù)長度的信息,在進(jìn)行確定DMA控制器接收并存儲(chǔ)完成數(shù)據(jù)體的操作時(shí),可以將數(shù)據(jù)長度的信息對(duì)應(yīng)的數(shù)據(jù)長度與數(shù)據(jù)幀頭的數(shù)據(jù)長度的差值,確定為數(shù)據(jù)體的數(shù)據(jù)長度,然后根據(jù)數(shù)據(jù)體的數(shù)據(jù)長度,確定DMA控制器將接收的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間需要的時(shí)長,并在經(jīng)過確定出的時(shí)長后,確定DMA控制器接收并存儲(chǔ)完成數(shù)據(jù)體。
[0090]應(yīng)用程序讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭以及第二存儲(chǔ)空間保存的數(shù)據(jù)體時(shí),會(huì)根據(jù)第一存儲(chǔ)空間以及第二存儲(chǔ)空間的位置的特征進(jìn)行相應(yīng)的讀取操作,例如,若第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域與第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域相鄰、且第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域位于第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域之后,則應(yīng)用程序可以在確定第一存儲(chǔ)空間的地址的起始地址后,根據(jù)DMA控制器發(fā)送的數(shù)據(jù)長度的信息,從第一存儲(chǔ)空間的地址的起始地址開始,將讀取的具有DMA控制器發(fā)送的數(shù)據(jù)長度的數(shù)據(jù)作為數(shù)據(jù)幀的數(shù)據(jù)幀頭以及數(shù)據(jù)體;若第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域與第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域非相鄰,則應(yīng)用程序可以在確定第一存儲(chǔ)空間的地址以及第二存儲(chǔ)空間的地址后,根據(jù)數(shù)據(jù)幀的數(shù)據(jù)幀頭的數(shù)據(jù)長度,將從第一存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域讀取數(shù)據(jù)幀頭的數(shù)據(jù)長度的數(shù)據(jù),作為數(shù)據(jù)幀的數(shù)據(jù)幀頭,以及根據(jù)數(shù)據(jù)幀的數(shù)據(jù)體的數(shù)據(jù)長度,將從第二存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域讀取數(shù)據(jù)體的數(shù)據(jù)長度的數(shù)據(jù),作為數(shù)據(jù)幀的數(shù)據(jù)體。
[0091]實(shí)施例三
[0092]該實(shí)施例三提供了一種數(shù)據(jù)的接收裝置,該裝置能夠應(yīng)用在嵌入式系統(tǒng)中,進(jìn)一步,該裝置能夠應(yīng)用在DMA控制器中,通過在嵌入式系統(tǒng)中應(yīng)用本技術(shù)方案,能夠避免應(yīng)用程序從存儲(chǔ)空間讀取到的數(shù)據(jù)幀與實(shí)際傳輸?shù)臄?shù)據(jù)幀不一致的問題,從而能夠達(dá)到提高應(yīng)用程序讀取數(shù)據(jù)的成功率的目的。
[0093]圖5示出了本發(fā)明實(shí)施例二提供的一種數(shù)據(jù)的接收裝置的結(jié)構(gòu)示意圖,如圖5所示,該裝置包括:
[0094]數(shù)據(jù)幀頭存儲(chǔ)單元501、數(shù)據(jù)幀頭存儲(chǔ)監(jiān)控單元502、數(shù)據(jù)幀頭讀取單元503、數(shù)據(jù)長度的信息發(fā)送單元504以及數(shù)據(jù)體存儲(chǔ)單元505,其中:
[0095]數(shù)據(jù)幀頭存儲(chǔ)單元501,用于將接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭存儲(chǔ)在第一存儲(chǔ)空間,數(shù)據(jù)幀頭攜帶用于表征數(shù)據(jù)幀的數(shù)據(jù)長度的信息;
[0096]數(shù)據(jù)幀頭存儲(chǔ)監(jiān)控單元502,用于確定數(shù)據(jù)幀頭存儲(chǔ)單元501是否接收并存儲(chǔ)完成數(shù)據(jù)幀頭;
[0097]數(shù)據(jù)幀頭讀取單元503,用于在數(shù)據(jù)幀頭存儲(chǔ)監(jiān)控單元502確定數(shù)據(jù)幀頭存儲(chǔ)單元501接收并存儲(chǔ)完成數(shù)據(jù)幀頭后,讀取第一存儲(chǔ)空間保存的數(shù)據(jù)幀頭;
[0098]數(shù)據(jù)長度的信息發(fā)送單元504,用于將數(shù)據(jù)幀頭讀取單元503讀取的數(shù)據(jù)幀頭攜帶的數(shù)據(jù)長度的信息發(fā)送至用于處理數(shù)據(jù)幀的應(yīng)用程序;
[0099]數(shù)據(jù)體存儲(chǔ)單元505,用于在數(shù)據(jù)幀頭存儲(chǔ)監(jiān)控單元502確定數(shù)據(jù)幀頭存儲(chǔ)單元501接收并存儲(chǔ)完成數(shù)據(jù)幀頭后,將接收的數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間。
[0100]本發(fā)明實(shí)施例三提供的優(yōu)選實(shí)施方式中,圖5所示裝置包括的數(shù)據(jù)幀頭存儲(chǔ)監(jiān)控單元502,具體用于在監(jiān)控到第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域被數(shù)據(jù)幀頭全部占用后,確定數(shù)據(jù)幀頭存儲(chǔ)單元接收并存儲(chǔ)完數(shù)據(jù)幀頭,其中,第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域大小與數(shù)據(jù)幀頭的數(shù)據(jù)長度匹配;或在監(jiān)控到第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域被數(shù)據(jù)幀頭占用的大小與預(yù)先保存的數(shù)據(jù)幀頭的數(shù)據(jù)長度匹配時(shí),確定數(shù)據(jù)幀頭存儲(chǔ)單元接收并存儲(chǔ)完數(shù)據(jù)幀頭。
[0101]圖6示出了本實(shí)施例三提供的又一種數(shù)據(jù)的接收裝置,該裝置能夠應(yīng)用在嵌入式系統(tǒng)中,進(jìn)一步,該裝置能夠應(yīng)用在用于處理接收并保存后的數(shù)據(jù)的設(shè)備中,如圖6所示,該裝置包括:
[0102]數(shù)據(jù)長度的信息接收單元601、數(shù)據(jù)體存儲(chǔ)完成確定單元602以及數(shù)據(jù)幀讀取單元603,其中:[0103]數(shù)據(jù)長度的信息接收單元601,用于接收直接內(nèi)存存取DMA控制器發(fā)送的用于表征接收的數(shù)據(jù)幀的數(shù)據(jù)長度的信息;
[0104]數(shù)據(jù)體存儲(chǔ)完成確定單元602,用于根據(jù)數(shù)據(jù)長度的信息接收單元601接收的數(shù)據(jù)長度的信息,確定DMA控制器是否完成接收并存儲(chǔ)數(shù)據(jù)幀的數(shù)據(jù)體的操作;
[0105]數(shù)據(jù)幀讀取單元603,用于在數(shù)據(jù)體存儲(chǔ)完成確定單元602確定DMA控制器接收并存儲(chǔ)完成數(shù)據(jù)幀的數(shù)據(jù)體后,讀取DMA控制器接收并保存在第一存儲(chǔ)空間的數(shù)據(jù)幀的數(shù)據(jù)幀頭以及DMA控制器接收并保存在第二存儲(chǔ)空間的數(shù)據(jù)體。
[0106]本發(fā)明實(shí)施例三提供的優(yōu)選實(shí)施方式中,圖6所示裝置包括的數(shù)據(jù)體存儲(chǔ)完成確定單元602,具體用于將數(shù)據(jù)長度的信息對(duì)應(yīng)的數(shù)據(jù)長度與數(shù)據(jù)幀頭的數(shù)據(jù)長度的差值,確定為數(shù)據(jù)體的數(shù)據(jù)長度;根據(jù)數(shù)據(jù)體的數(shù)據(jù)長度,確定DMA控制器將接收的數(shù)據(jù)長度的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間需要的時(shí)長;并在經(jīng)過時(shí)長后,確定DMA控制器接收并存儲(chǔ)完成數(shù)據(jù)體。
[0107]本發(fā)明實(shí)施例三提供的優(yōu)選實(shí)施方式中,圖6所示裝置包括的數(shù)據(jù)幀讀取單元603,具體用于若第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域與第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域相鄰、且第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域位于第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域之后,確定第一存儲(chǔ)空間的地址的起始地址;并根據(jù)DMA控制器發(fā)送的數(shù)據(jù)長度的信息,從第一存儲(chǔ)空間的地址的起始地址開始,讀取數(shù)據(jù)長度的數(shù)據(jù)作為數(shù)據(jù)幀的數(shù)據(jù)幀頭以及數(shù)據(jù)體。
[0108]本發(fā)明實(shí)施例三提供的優(yōu)選實(shí)施方式中,圖6所示裝置包括的數(shù)據(jù)幀讀取單元603,具體用于若第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域與第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域非相鄰,確定第一存儲(chǔ)空間的地址以及第二存儲(chǔ)空間的地址;根據(jù)數(shù)據(jù)幀的數(shù)據(jù)幀頭的數(shù)據(jù)長度,從第一存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域讀取數(shù)據(jù)幀頭的數(shù)據(jù)長度的數(shù)據(jù),作為數(shù)據(jù)幀的數(shù)據(jù)幀頭;以及根據(jù)數(shù)據(jù)幀的數(shù)據(jù)體的數(shù)據(jù)長度,從第二存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域讀取數(shù)據(jù)體的數(shù)據(jù)長度的數(shù)據(jù),作為數(shù)據(jù)幀的數(shù)據(jù)體。
[0109]應(yīng)當(dāng)理解,以上裝置包括的單元僅為根據(jù)該裝置實(shí)現(xiàn)的功能進(jìn)行的邏輯劃分,實(shí)際應(yīng)用中,可以進(jìn)行上述單元的疊加或拆分。并且該實(shí)施例提供的裝置所實(shí)現(xiàn)的功能與上述實(shí)施例提供的一種數(shù)據(jù)的接收方法流程一一對(duì)應(yīng),對(duì)于該裝置所實(shí)現(xiàn)的更為詳細(xì)的處理流程,在上述方法實(shí)施例中已做詳細(xì)描述,此處不再詳細(xì)描述。
[0110]并且,本實(shí)施例三中的數(shù)據(jù)的接收裝置還具有能夠?qū)崿F(xiàn)實(shí)施例一以及實(shí)施例二方案的功能模塊,此處不再贅述。
[0111]盡管已描述了本申請(qǐng)的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)范圍的所有變更和修改。
[0112]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)的接收方法,其特征在于,包括: 直接內(nèi)存存取DMA控制器將接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭存儲(chǔ)在第一存儲(chǔ)空間,所述數(shù)據(jù)幀頭攜帶用于表征所述數(shù)據(jù)幀的數(shù)據(jù)長度的信息,在確定接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,讀取所述第一存儲(chǔ)空間保存的所述數(shù)據(jù)幀頭,并將所述數(shù)據(jù)幀頭攜帶的所述數(shù)據(jù)長度的信息發(fā)送至用于處理所述數(shù)據(jù)幀的應(yīng)用程序,以及,在確定接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,將接收的所述數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間; 所述應(yīng)用程序根據(jù)所述DMA控制器發(fā)送的所述數(shù)據(jù)長度的信息,確定所述DMA控制器接收并存儲(chǔ)完成所述數(shù)據(jù)體后,讀取所述第一存儲(chǔ)空間保存的所述數(shù)據(jù)幀頭以及所述第二存儲(chǔ)空間保存的所述數(shù)據(jù)體。
2.如權(quán)利要求1所述的方法,其特征在于,DMA控制器確定接收并存儲(chǔ)完所述數(shù)據(jù)幀頭,包括: DMA控制器在監(jiān)控到所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域被所述數(shù)據(jù)幀頭全部占用后,確定接收并存儲(chǔ)完所述數(shù)據(jù)幀頭,其中,所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域大小與所述數(shù)據(jù)幀頭的數(shù)據(jù)長度匹配;或 DMA控制器在監(jiān)控到所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域被所述數(shù)據(jù)幀頭占用的大小與預(yù)先保存的所述數(shù)據(jù)幀頭的數(shù)據(jù)長度匹配時(shí),確定接收并存儲(chǔ)完所述數(shù)據(jù)幀頭。
3.如權(quán)利要求1所述的方法,其特征在于,所述應(yīng)用程序根據(jù)所述DMA控制器發(fā)送的所述數(shù)據(jù)長度的信息,確定所述DMA控制器接收并存儲(chǔ)完成所述數(shù)據(jù)體,包括: 所述應(yīng)用程序?qū)⑺鰯?shù)據(jù)長度的信息對(duì)應(yīng)的數(shù)據(jù)長度與所述數(shù)據(jù)幀頭的數(shù)據(jù)長度的差值,確定為所述數(shù)據(jù)體的數(shù)據(jù)長度; 根據(jù)所述數(shù)據(jù)體的數(shù)據(jù)長度,確定所述DMA控制器將接收的所述數(shù)據(jù)長度的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間需要的時(shí)長;并 在經(jīng)過所述時(shí)長后,確定所述DMA控制器接收并存儲(chǔ)完成所述數(shù)據(jù)體。
4.如權(quán)利要求1所述的方法,其特征在于,所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域與所述第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域相鄰、且所述第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域位于所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域之后; 應(yīng)用程序讀取所述第一存儲(chǔ)空間保存的所述數(shù)據(jù)幀頭以及所述第二存儲(chǔ)空間保存的所述數(shù)據(jù)體,包括: 應(yīng)用程序確定所述第一存儲(chǔ)空間的地址的起始地址;并 根據(jù)所述DMA控制器發(fā)送的數(shù)據(jù)長度的信息,從所述第一存儲(chǔ)空間的地址的起始地址開始,讀取所述數(shù)據(jù)長度的數(shù)據(jù)作為所述數(shù)據(jù)幀的數(shù)據(jù)幀頭以及數(shù)據(jù)體。
5.如權(quán)利要求1所述的方法,其特征在于,所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域與所述第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域非相鄰; 應(yīng)用程序讀取所述第一存儲(chǔ)空間保 存的所述數(shù)據(jù)幀頭以及所述第二存儲(chǔ)空間保存的所述數(shù)據(jù)體,包括: 應(yīng)用程序確定所述第一存儲(chǔ)空間的地址以及所述第二存儲(chǔ)空間的地址; 根據(jù)所述數(shù)據(jù)幀的數(shù)據(jù)幀頭的數(shù)據(jù)長度,從所述第一存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域讀取所述數(shù)據(jù)幀頭的數(shù)據(jù)長度的數(shù)據(jù),作為所述數(shù)據(jù)幀的數(shù)據(jù)幀頭;以及 根據(jù)所述數(shù)據(jù)幀的數(shù)據(jù)體的數(shù)據(jù)長度,從所述第二存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域讀取所述數(shù)據(jù)體的數(shù)據(jù)長度的數(shù)據(jù),作為所述數(shù)據(jù)幀的數(shù)據(jù)體。
6.一種數(shù)據(jù)的接收方法,其特征在于,包括: 直接內(nèi)存存取DMA控制器將接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭存儲(chǔ)在第一存儲(chǔ)空間,所述數(shù)據(jù)幀頭攜帶用于表征所述數(shù)據(jù)幀的數(shù)據(jù)長度的信息; 在確定接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,讀取所述第一存儲(chǔ)空間保存的所述數(shù)據(jù)幀頭,并將所述數(shù)據(jù)幀頭攜帶的所述數(shù)據(jù)長度的信息發(fā)送至用于處理所述數(shù)據(jù)幀的應(yīng)用程序;以及 在確定接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,將接收的所述數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間。
7.如權(quán)利要求6所述的方法,其特征在于,DMA控制器確定接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭,包括: DMA控制器在監(jiān)控到所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域被所述數(shù)據(jù)幀頭全部占用后,確定接收并存儲(chǔ)完所述數(shù)據(jù)幀頭,其中,所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域大小與所述數(shù)據(jù)幀頭的數(shù)據(jù)長度匹配;或 DMA控制器在監(jiān)控到所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域被所述數(shù)據(jù)幀頭占用的大小與預(yù)先保存的所述數(shù)據(jù)幀頭的數(shù)據(jù)長度匹配時(shí),確定接收并存儲(chǔ)完所述數(shù)據(jù)幀頭。
8.一種數(shù)據(jù)的接收方法,其特征在于,包括: 應(yīng)用程序接收直接內(nèi)存存取DMA控制器發(fā)送的用于表征接收的數(shù)據(jù)幀的數(shù)據(jù)長度的信息; 根據(jù)所述數(shù)據(jù)長度的信息,確定所述DMA控制器接收并存儲(chǔ)完成所述數(shù)據(jù)幀的數(shù)據(jù)體后,讀取所述DMA控制器接收并保存在第一存儲(chǔ)空間的所述數(shù)據(jù)幀的數(shù)據(jù)幀頭以及所述DMA控制器接收并保存在所述第二存儲(chǔ)空間的所述數(shù)據(jù)體。
9.如權(quán)利要求8所述的方法,其特征在于,所述應(yīng)用程序根據(jù)所述數(shù)據(jù)長度的信息,確定所述DMA控制器接收并存儲(chǔ)完成所述數(shù)據(jù)體,包括: 所述應(yīng)用程序?qū)⑺鰯?shù)據(jù)長度的信息對(duì)應(yīng)的數(shù)據(jù)長度與所述數(shù)據(jù)幀頭的數(shù)據(jù)長度的差值,確定為所述數(shù)據(jù)體的數(shù)據(jù)長度; 根據(jù)所述數(shù)據(jù)體的數(shù)據(jù)長度,確定所述DMA控制器將接收的所述數(shù)據(jù)長度的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間需要的時(shí)長;并 在經(jīng)過所述時(shí)長后,確定所述DMA控制器接收并存儲(chǔ)完成所述數(shù)據(jù)體。
10.如權(quán)利要求8所述的方法,其特征在于,所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域與所述第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域相鄰、且所述第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域位于所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域之后; 應(yīng)用程序讀取所述DMA控制器接收并保存在第一存儲(chǔ)空間的所述數(shù)據(jù)幀的數(shù)據(jù)幀頭以及所述DMA控制器接收并保存在所述第二存儲(chǔ)空間的所述數(shù)據(jù)體,包括: 應(yīng)用程序確定所述第一存儲(chǔ)空間的地址的起始地址;并 根據(jù)所述DMA控制器發(fā)送的數(shù)據(jù)長度的信息,從所述第一存儲(chǔ)空間的地址的起始地址開始,讀取所述數(shù)據(jù)長度的數(shù)據(jù)作為所述數(shù)據(jù)幀的數(shù)據(jù)幀頭以及數(shù)據(jù)體。
11.如權(quán)利要求8所述的方法,其特征在于,所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域與所述第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域非相鄰;應(yīng)用程序讀取所述DMA控制器接收并保存在第一存儲(chǔ)空間的所述數(shù)據(jù)幀的數(shù)據(jù)幀頭以及所述DMA控制器接收并保存在所述第二存儲(chǔ)空間的所述數(shù)據(jù)體,包括: 應(yīng)用程序確定所述第一存儲(chǔ)空間的地址以及所述第二存儲(chǔ)空間的地址; 根據(jù)所述數(shù)據(jù)幀的數(shù)據(jù)幀頭的數(shù)據(jù)長度,從所述第一存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域讀取所述數(shù)據(jù)幀頭的數(shù)據(jù)長度的數(shù)據(jù),作為所述數(shù)據(jù)幀的數(shù)據(jù)幀頭;以及 根據(jù)所述數(shù)據(jù)幀的數(shù)據(jù)體的數(shù)據(jù)長度,從所述第二存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域讀取所述數(shù)據(jù)體的數(shù)據(jù)長度的數(shù)據(jù),作為所述數(shù)據(jù)幀的數(shù)據(jù)體。
12.—種數(shù)據(jù)的接收系統(tǒng),其特征在于,包括: 直接內(nèi)存存取DMA控制器以及應(yīng)用程序,其中: 所述DMA控制器,用于將接收的數(shù)據(jù)幀的數(shù)據(jù)幀頭存儲(chǔ)在第一存儲(chǔ)空間,所述數(shù)據(jù)幀頭攜帶用于表征所述數(shù)據(jù)幀的數(shù)據(jù)長度的信息,在確定接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,讀取所述第一存儲(chǔ)空間保存的所述數(shù)據(jù)幀頭,并將所述數(shù)據(jù)幀頭攜帶的所述數(shù)據(jù)長度的信息發(fā)送至用于處理所述數(shù)據(jù)幀的應(yīng)用程序,以及,在確定接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,將接收的所述數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間; 所述應(yīng)用程序,用于根據(jù)所述DMA控制器發(fā)送的所述數(shù)據(jù)長度的信息,確定所述DMA控制器接收并存儲(chǔ)完成所述數(shù)據(jù)體后,讀取所述第一存儲(chǔ)空間保存的所述數(shù)據(jù)幀頭以及所述第二存儲(chǔ)空間保存的所述數(shù)據(jù)體。
13.一種數(shù)據(jù)的接收裝置,其特征在于,包括: 數(shù)據(jù)幀頭存儲(chǔ)單元,用于將接收`的數(shù)據(jù)幀的數(shù)據(jù)幀頭存儲(chǔ)在第一存儲(chǔ)空間,所述數(shù)據(jù)幀頭攜帶用于表征所述數(shù)據(jù)幀的數(shù)據(jù)長度的信息; 數(shù)據(jù)幀頭存儲(chǔ)監(jiān)控單元,用于確定所述數(shù)據(jù)幀頭存儲(chǔ)單元是否接收并存儲(chǔ)完成所述數(shù)據(jù)中貞頭; 數(shù)據(jù)幀頭讀取單元,用于在所述數(shù)據(jù)幀頭存儲(chǔ)監(jiān)控單元確定所述數(shù)據(jù)幀頭存儲(chǔ)單元接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,讀取所述第一存儲(chǔ)空間保存的所述數(shù)據(jù)幀頭; 數(shù)據(jù)長度的信息發(fā)送單元,用于將所述數(shù)據(jù)幀頭讀取單元讀取的數(shù)據(jù)幀頭攜帶的所述數(shù)據(jù)長度的信息發(fā)送至用于處理所述數(shù)據(jù)幀的應(yīng)用程序; 數(shù)據(jù)體存儲(chǔ)單元,用于在所述數(shù)據(jù)幀頭存儲(chǔ)監(jiān)控單元確定所述數(shù)據(jù)幀頭存儲(chǔ)單元接收并存儲(chǔ)完成所述數(shù)據(jù)幀頭后,將接收的所述數(shù)據(jù)幀的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間。
14.如權(quán)利要求13所述的裝置,其特征在于,所述數(shù)據(jù)幀頭存儲(chǔ)監(jiān)控單元,具體用于在監(jiān)控到所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域被所述數(shù)據(jù)幀頭全部占用后,確定所述數(shù)據(jù)幀頭存儲(chǔ)單元接收并存儲(chǔ)完所述數(shù)據(jù)幀頭,其中,所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域大小與所述數(shù)據(jù)幀頭的數(shù)據(jù)長度匹配;或在監(jiān)控到所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域被所述數(shù)據(jù)幀頭占用的大小與預(yù)先保存的所述數(shù)據(jù)幀頭的數(shù)據(jù)長度匹配時(shí),確定所述數(shù)據(jù)幀頭存儲(chǔ)單元接收并存儲(chǔ)完所述數(shù)據(jù)幀頭。
15.一種直接內(nèi)存存取DMA控制器,其特征在于,包括權(quán)利要求13或權(quán)利要求14所述的數(shù)據(jù)的接收裝置。
16.一種數(shù)據(jù)的接收裝置,其特征在于,包括: 數(shù)據(jù)長度的信息接收單元,用于接收直接內(nèi)存存取DMA控制器發(fā)送的用于表征接收的數(shù)據(jù)幀的數(shù)據(jù)長度的信息;數(shù)據(jù)體存儲(chǔ)完成確定單元,用于根據(jù)所述數(shù)據(jù)長度的信息接收單元接收的數(shù)據(jù)長度的信息,確定所述DMA控制器是否完成接收并存儲(chǔ)所述數(shù)據(jù)幀的數(shù)據(jù)體的操作; 數(shù)據(jù)幀讀取單元,用于在所述數(shù)據(jù)體存儲(chǔ)完成確定單元確定所述DMA控制器接收并存儲(chǔ)完成所述數(shù)據(jù)幀的數(shù)據(jù)體后,讀取所述DMA控制器接收并保存在第一存儲(chǔ)空間的所述數(shù)據(jù)幀的數(shù)據(jù)幀頭以及所述DMA控制器接收并保存在所述第二存儲(chǔ)空間的所述數(shù)據(jù)體。
17.如權(quán)利要求16所述的裝置,其特征在于,所述數(shù)據(jù)體存儲(chǔ)完成確定單元,具體用于將所述數(shù)據(jù)長度的信息對(duì)應(yīng)的數(shù)據(jù)長度與所述數(shù)據(jù)幀頭的數(shù)據(jù)長度的差值,確定為所述數(shù)據(jù)體的數(shù)據(jù)長度;根據(jù)所述數(shù)據(jù)體的數(shù)據(jù)長度,確定所述DMA控制器將接收的所述數(shù)據(jù)長度的數(shù)據(jù)體存儲(chǔ)在第二存儲(chǔ)空間需要的時(shí)長;并在經(jīng)過所述時(shí)長后,確定所述DMA控制器接收并存儲(chǔ)完成所述數(shù)據(jù)體。
18.如權(quán)利要求16所述的裝置,其特征在于,所述數(shù)據(jù)幀讀取單元,具體用于若所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域與所述第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域相鄰、且所述第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域位于所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域之后,確定所述第一存儲(chǔ)空間的地址的起始地址;并根據(jù)所述DMA控制器發(fā)送的數(shù)據(jù)長度的信息,從所述第一存儲(chǔ)空間的地址的起始地址開始,讀取所述數(shù)據(jù)長度的數(shù)據(jù)作為所述數(shù)據(jù)幀的數(shù)據(jù)幀頭以及數(shù)據(jù)體。
19.如權(quán)利要求16所述的裝置,其特征在于,所述數(shù)據(jù)幀讀取單元,具體用于若所述第一存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域與所述第二存儲(chǔ)空間對(duì)應(yīng)的存儲(chǔ)區(qū)域非相鄰,確定所述第一存儲(chǔ)空間的地址以及所述第二存儲(chǔ)空間的地址;根據(jù)所述數(shù)據(jù)幀的數(shù)據(jù)幀頭的數(shù)據(jù)長度,從所述第一存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域讀取所述數(shù)據(jù)幀頭的數(shù)據(jù)長度的數(shù)據(jù),作為所述數(shù)據(jù)幀的數(shù)據(jù)幀頭;以及根據(jù)所述數(shù)據(jù)幀的數(shù)據(jù)體的數(shù)據(jù)長度,從所述第二存儲(chǔ)空間的地址對(duì)應(yīng)的存儲(chǔ)區(qū)域讀取所述數(shù)據(jù)體的數(shù)據(jù)長度的數(shù)據(jù),作為所述數(shù)據(jù)幀的數(shù)據(jù)體。
【文檔編號(hào)】G06F13/28GK103514126SQ201210214211
【公開日】2014年1月15日 申請(qǐng)日期:2012年6月26日 優(yōu)先權(quán)日:2012年6月26日
【發(fā)明者】劉軍, 賴福琪, 方彬浩 申請(qǐng)人:京信通信系統(tǒng)(廣州)有限公司