本公開涉及數(shù)據(jù)處理領(lǐng)域,具體地,涉及一種數(shù)據(jù)處理方法和裝置。
背景技術(shù):
目前,聯(lián)合測試工作組(Joint Test Action Group,JTAG)測試協(xié)議規(guī)定,在利用JTAG測試協(xié)議對芯片內(nèi)部進行測試時,每次連續(xù)讀寫的地址長度為1k個字節(jié)。而且,在利用JTAG測試協(xié)議進行測試時,所有的讀寫操作都是通過單個比特串行地輸入輸出來進行的。
例如,連續(xù)寫操作的基本流程是:切換到寫模式→配置為遞增(Increment)模式→切換操作寄存器(register)為地址寄存器→串行寫入地址值→切換操作寄存器為數(shù)據(jù)寄存器→串行輸入第一個數(shù)據(jù)→串行輸入第二個數(shù)據(jù)→串行輸入第3個數(shù)據(jù)→…→串行輸入第1k個數(shù)據(jù)。
再例如,連續(xù)讀操作的基本流程是:切換到讀模式→切換操作寄存器為地址寄存器→串行寫入地址值→切換操作寄存器為數(shù)據(jù)寄存器→串行輸入偽數(shù)據(jù)→串行輸入偽數(shù)據(jù)并同時獲得讀數(shù)據(jù)→串行輸入偽數(shù)據(jù)并同時獲得下一個讀數(shù)據(jù)→…→串行輸入偽數(shù)據(jù)并同時獲得第1k個讀數(shù)據(jù)。
可見,由于在執(zhí)行讀寫操作時是串行輸入輸出地進行單比特操作,因此一次簡單的寫操作需要至少幾十個時鐘才能完成,而讀操作在輸入地址后更是需要更多的時鐘才能夠讀取到期望的數(shù)據(jù),這會導致在每次連續(xù)讀寫的地址長度達到1k個字節(jié)之后出現(xiàn)如下的問題:如果重新配置下一次連續(xù)讀寫的地址,則由于需要重新執(zhí)行一次如下的流程,也即“切換到寫模式→配置為遞增模式→切換操寄存器為地址寄存器→串行寫入地址值→切換操作寄存器為數(shù)據(jù)寄存器”,因此會浪費不少的操作時間;而如果不重新配置下一次連續(xù)讀寫的地址,則會出現(xiàn)尋址錯誤的問題。
技術(shù)實現(xiàn)要素:
本公開的目的是提供一種數(shù)據(jù)處理方法和裝置,其能夠節(jié)省利用JTAG測試協(xié)議進行測試時的操作時間,而且能夠避免尋址錯誤的問題。
為了實現(xiàn)上述目的,本公開提供一種數(shù)據(jù)處理方法,該方法包括:
獲取第一數(shù)據(jù)協(xié)議的寄存器空間;
基于所述寄存器空間設置數(shù)據(jù)操作的配置信息,所述配置信息包括能夠進行數(shù)據(jù)連續(xù)操作的地址長度;
至少基于所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度來執(zhí)行所述數(shù)據(jù)操作。
可選地,所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度等于芯片內(nèi)單個模塊的地址長度。
可選地,所述配置信息還包括所述芯片內(nèi)各個模塊的跳轉(zhuǎn)地址;
所述至少基于所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度來執(zhí)行所述數(shù)據(jù)操作還包括:基于所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度和所述跳轉(zhuǎn)地址來執(zhí)行所述數(shù)據(jù)操作。
可選地,所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度被存儲到所述第一數(shù)據(jù)協(xié)議的預留寄存器空間中。
可選地,所述跳轉(zhuǎn)地址被存儲到所述第一數(shù)據(jù)協(xié)議的預留寄存器空間中。
本公開實施例還提供一種數(shù)據(jù)處理裝置,該裝置包括:
獲取模塊,用于獲取第一數(shù)據(jù)協(xié)議的寄存器空間;
設置模塊,用于基于所述寄存器空間設置數(shù)據(jù)操作的配置信息,所述配置信息包括能夠進行數(shù)據(jù)連續(xù)操作的地址長度;
執(zhí)行模塊,用于至少基于所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度來執(zhí)行所述數(shù)據(jù)操作。
可選地,所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度等于芯片內(nèi)單個模塊的地址長度。
可選地,所述配置信息還包括所述芯片內(nèi)各個模塊的跳轉(zhuǎn)地址;
所述執(zhí)行模塊,還用于基于所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度和所述跳轉(zhuǎn)地址來執(zhí)行所述數(shù)據(jù)操作。
可選地,所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度被存儲到所述第一數(shù)據(jù)協(xié)議的預留寄存器空間中。
可選地,所述跳轉(zhuǎn)地址被存儲到所述第一數(shù)據(jù)協(xié)議的預留寄存器空間中。
通過上述技術(shù)方案,由于能夠首先獲取第一數(shù)據(jù)協(xié)議的寄存器空間,然后基于所述寄存器空間設置數(shù)據(jù)操作的配置信息,所述配置信息包括能夠進行數(shù)據(jù)連續(xù)操作的地址長度,然后至少基于所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度來執(zhí)行所述數(shù)據(jù)操作,這樣就能夠按需對數(shù)據(jù)連續(xù)操作的地址長度進行自定義配置,例如如果芯片內(nèi)單個模塊的地址長度是2k,則可以將數(shù)據(jù)連續(xù)操作的地址長度配置為2k,這樣在芯片內(nèi)單個模塊的地址長度大于第一數(shù)據(jù)協(xié)議規(guī)定的例如1k地址長度的情況下,不需要像現(xiàn)有技術(shù)那樣在連續(xù)操作了1k個地址長度之后重新配置下一次連續(xù)操作的地址,因此能夠大大減小利用第一數(shù)據(jù)協(xié)議進行操作的時間,而且還能夠解決不重新配置下一次連續(xù)操作的地址導致的尋址錯誤問題。
本公開的其他特征和優(yōu)點將在隨后的具體實施方式部分予以詳細說明。
附圖說明
附圖是用來提供對本公開的進一步理解,并且構(gòu)成說明書的一部分,與下面的具體實施方式一起用于解釋本公開,但并不構(gòu)成對本公開的限制。在附圖中:
圖1是根據(jù)本公開一種實施例的數(shù)據(jù)處理方法的流程圖;
圖2是根據(jù)本公開又一實施例的數(shù)據(jù)處理方法的流程圖;
圖3是根據(jù)本公開一種實施例的數(shù)據(jù)處理裝置的示意框圖。
具體實施方式
以下結(jié)合附圖對本公開的具體實施方式進行詳細說明。應當理解的是,此處所描述的具體實施方式僅用于說明和解釋本公開,并不用于限制本公開。
根據(jù)本公開的一種實施例,提供一種數(shù)據(jù)處理方法,該數(shù)據(jù)處理方法能夠適用于利用對連續(xù)操作地址長度做出了限定的任何協(xié)議進行操作的場景,而并非僅僅適用于利用JTAG測試協(xié)議對芯片內(nèi)部進行測試的場景。如圖1所示,根據(jù)該實施例的方法可以包括以下步驟S101至S103。
在步驟S101中,獲取第一數(shù)據(jù)協(xié)議的寄存器空間。
其中,第一數(shù)據(jù)協(xié)議可以是諸如JTAG測試協(xié)議之類的、對連續(xù)操作地址的長度做出了限定的任何類型的數(shù)據(jù)協(xié)議。
另外,這些數(shù)據(jù)協(xié)議的寄存器空間通常會包括以下幾類寄存器空間:(1)已經(jīng)被預定義用于某些用途的寄存器空間;以及(2)預留的寄存器空間。用戶可以對預留的寄存器空間進行自行配置,以滿足用戶的操作需求。例如,JTAG測試協(xié)議規(guī)定的預留寄存器空間為0x08,0x20~0xF0。
在步驟S102中,基于所述寄存器空間設置數(shù)據(jù)操作的配置信息,所述配置信息包括能夠進行數(shù)據(jù)連續(xù)操作的地址長度;
在步驟S103中,至少基于所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度來執(zhí)行所述數(shù)據(jù)操作。
通過上述技術(shù)方案,由于能夠首先獲取第一數(shù)據(jù)協(xié)議的寄存器空間,然后基于所述寄存器空間設置數(shù)據(jù)操作的配置信息,所述配置信息包括能夠進行數(shù)據(jù)連續(xù)操作的地址長度,然后至少基于所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度來執(zhí)行所述數(shù)據(jù)操作,這樣就能夠按需對數(shù)據(jù)連續(xù)操作的地址長度進行自定義配置,例如如果芯片內(nèi)單個模塊的地址長度是2k,則可以將數(shù)據(jù)連續(xù)操作的地址長度配置為2k,這樣在芯片內(nèi)單個模塊的地址長度大于第一數(shù)據(jù)協(xié)議規(guī)定的例如1k地址長度的情況下,不需要像現(xiàn)有技術(shù)那樣在連續(xù)操作了1k個地址長度之后重新配置下一次連續(xù)操作的地址,因此能夠大大減小利用第一數(shù)據(jù)協(xié)議進行操作的時間,而且還能夠解決不重新配置下一次連續(xù)操作的地址導致的尋址錯誤問題。
在一種可能的實施方式中,所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度可以等于芯片內(nèi)單個模塊的地址長度。例如,假設芯片內(nèi)有三個模塊,每個模塊的地址長度分別為2k、4k和8k,則可以在對每個模塊進行操作時,將數(shù)據(jù)連續(xù)操作的地址長度分別配置為2k、4k和8k,這樣就不需要像現(xiàn)有技術(shù)那樣在連續(xù)操作了第一數(shù)據(jù)協(xié)議規(guī)定的例如1k個地址長度之后重新配置下一次連續(xù)操作的地址,因此能夠大大減小利用第一數(shù)據(jù)協(xié)議進行操作的時間,而且還能夠解決不重新配置下一次連續(xù)操作的地址導致的尋址錯誤問題。
另外,本公開實施例對能夠進行數(shù)據(jù)連續(xù)操作的地址長度的表示方式不做限制,例如,可以用0x0表示數(shù)據(jù)連續(xù)操作的地址長度為1k、用0x1表示數(shù)據(jù)連續(xù)操作的地址長度為2k以及用0x2表示數(shù)據(jù)連續(xù)操作的地址長度為4k等等,當然還可以用0x200表示數(shù)據(jù)連續(xù)操作的地址長度為1k、用0x400表示數(shù)據(jù)連續(xù)操作的地址長度為2k等等。
以下以芯片內(nèi)某個模塊的地址長度為4k、所配置的數(shù)據(jù)連續(xù)操作的地址長度為4k為例,則采用根據(jù)本公開實施例的數(shù)據(jù)處理方法進行寫操作的流程如下:
切換到寫模式→配置為遞增模式→切換操作寄存器為地址寄存器→串行寫入地址值→切換操作寄存器為數(shù)據(jù)寄存器→串行輸入第一個數(shù)據(jù)→串行輸入第二個數(shù)據(jù)→串行輸入第3個數(shù)據(jù)→…→串行輸入第4k個數(shù)據(jù)。這樣,如果是正在利用JTAG測試協(xié)議對該芯片內(nèi)的該模塊進行測試,則能夠連續(xù)進行4k個地址長度的測試。
在一種可能的實施方式中,所述配置信息還可以包括所述芯片內(nèi)各個模塊的跳轉(zhuǎn)地址。在這種情況下,如圖2所示,步驟S103中的所述至少基于所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度來執(zhí)行所述數(shù)據(jù)操作還可以包括步驟S103a:基于所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度和所述跳轉(zhuǎn)地址來執(zhí)行所述數(shù)據(jù)操作。
通過采用步驟S103a,能夠在芯片內(nèi)的各個模塊之間實現(xiàn)地址跳轉(zhuǎn),避免在各個模塊之間進行跳轉(zhuǎn)時出現(xiàn)的尋址錯誤問題,進而能夠?qū)崿F(xiàn)針對芯片內(nèi)的多個模塊的連續(xù)數(shù)據(jù)操作,而且還能夠有效地減小對多個模塊進行操作的時間。例如,假設芯片內(nèi)有三個模塊,每個模塊的地址長度分別為2k、4k和8k,每個模塊的首地址分別為0x50021BF0、0x60021BF0和0x70021BF0,則通過在配置信息中設置針對這三個模塊的數(shù)據(jù)連續(xù)操作的地址長度分別為2k、4k和8k,針對這三個模塊的跳轉(zhuǎn)地址分別為0x50021BF0、0x60021BF0和0x70021BF0,則能夠在針對第一個模塊連續(xù)操作2k個地址長度之后跳轉(zhuǎn)到第二個模塊的首地址,并然后對第二個模塊連續(xù)操作4k個地址長度,然后跳轉(zhuǎn)到第三個模塊的首地址,并對第三個模塊連續(xù)操作8k個地址長度。這樣就能夠在不重新配置下一次操作的地址的情況下,連續(xù)完成每個模塊的操作并有效地跳轉(zhuǎn)到下一個模塊。而在現(xiàn)有技術(shù)中,由于第一數(shù)據(jù)協(xié)議限定了連續(xù)操作的地址長度為例如1k,因此若在連續(xù)操作了1k個地址長度之后重新配置下一次操作的地址則會增加操作的時間,而如果不重新配置下一次操作的地址,則會在連續(xù)操作了1k個地址長度之后返回該次配置的地址的初始地址,導致尋址錯誤的問題。
在一種可能的實施方式中,所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度可以被存儲到所述第一數(shù)據(jù)協(xié)議的預留寄存器空間中。所述跳轉(zhuǎn)地址可以被存儲到所述第一數(shù)據(jù)協(xié)議的預留寄存器空間中。這樣就能夠有效地利用第一數(shù)據(jù)協(xié)議的預留寄存器空間進行地址長度和跳轉(zhuǎn)地址的配置,有效地解決重新配置下一次操作的地址導致的操作時間長的問題或者不重新配置下一次操作的地址導致的尋址錯誤問題。
根據(jù)本公開的又一實施例,提供一種數(shù)據(jù)處理裝置,如圖3所示,該裝置可以包括:
獲取模塊301,用于獲取第一數(shù)據(jù)協(xié)議的寄存器空間;
設置模塊302,用于基于所述寄存器空間設置數(shù)據(jù)操作的配置信息,所述配置信息包括能夠進行數(shù)據(jù)連續(xù)操作的地址長度;
執(zhí)行模塊303,用于至少基于所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度來執(zhí)行所述數(shù)據(jù)操作。
通過上述技術(shù)方案,由于獲取模塊301能夠首先獲取第一數(shù)據(jù)協(xié)議的寄存器空間,然后設置模塊302基于所述寄存器空間設置數(shù)據(jù)操作的配置信息,所述配置信息包括能夠進行數(shù)據(jù)連續(xù)操作的地址長度,然后執(zhí)行模塊303至少基于所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度來執(zhí)行所述數(shù)據(jù)操作,這樣就能夠按需對數(shù)據(jù)連續(xù)操作的地址長度進行自定義配置,例如如果芯片內(nèi)單個模塊的地址長度是2k,則可以將數(shù)據(jù)連續(xù)操作的地址長度配置為2k,這樣在芯片內(nèi)單個模塊的地址長度大于第一數(shù)據(jù)協(xié)議規(guī)定的例如1k地址長度的情況下,不需要像現(xiàn)有技術(shù)那樣在連續(xù)操作了1k個地址長度之后重新配置下一次連續(xù)操作的地址,因此能夠大大減小利用第一數(shù)據(jù)協(xié)議進行操作的時間,而且還能夠解決不重新配置下一次連續(xù)操作的地址導致的尋址錯誤問題。
在一種可能的實施方式中,所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度可以等于芯片內(nèi)單個模塊的地址長度。
另外,本公開實施例對能夠進行數(shù)據(jù)連續(xù)操作的地址長度的表示方式不做限制,例如,可以用0x0表示數(shù)據(jù)連續(xù)操作的地址長度為1k、用0x1表示數(shù)據(jù)連續(xù)操作的地址長度為2k以及用0x2表示數(shù)據(jù)連續(xù)操作的地址長度為4k等等,當然還可以用0x200表示數(shù)據(jù)連續(xù)操作的地址長度為1k、用0x400表示數(shù)據(jù)連續(xù)操作的地址長度為2k等等。
在一種可能的實施方式中,所述配置信息還可以包括所述芯片內(nèi)各個模塊的跳轉(zhuǎn)地址。在這種情況下,所述執(zhí)行模塊303,還可以用于基于所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度和所述跳轉(zhuǎn)地址來執(zhí)行所述數(shù)據(jù)操作。
在一種可能的實施方式中,所述能夠進行數(shù)據(jù)連續(xù)操作的地址長度可以被存儲到所述第一數(shù)據(jù)協(xié)議的預留寄存器空間中。所述跳轉(zhuǎn)地址可以被存儲到所述第一數(shù)據(jù)協(xié)議的預留寄存器空間中。這樣就能夠有效地利用第一數(shù)據(jù)協(xié)議的預留寄存器空間進行地址長度和跳轉(zhuǎn)地址的配置,有效地解決重新配置下一次操作的地址導致的操作時間長的問題或者不重新配置下一次操作的地址導致的尋址錯誤問題。
以上結(jié)合附圖詳細描述了本公開的優(yōu)選實施方式,但是,本公開并不限于上述實施方式中的具體細節(jié),在本公開的技術(shù)構(gòu)思范圍內(nèi),可以對本公開的技術(shù)方案進行多種簡單變型,這些簡單變型均屬于本公開的保護范圍。
另外需要說明的是,在上述具體實施方式中所描述的各個具體技術(shù)特征,在不矛盾的情況下,可以通過任何合適的方式進行組合。為了避免不必要的重復,本公開對各種可能的組合方式不再另行說明。
此外,本公開的各種不同的實施方式之間也可以進行任意組合,只要其不違背本公開的思想,其同樣應當視為本公開所公開的內(nèi)容。