• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于VTEST的TMS320C3x指令集模擬器設(shè)計(jì)

      2013-09-08 10:18:16郭向英張西超
      關(guān)鍵詞:穿線外設(shè)譯碼

      郭向英,盛 莊,張西超

      (北京控制工程研究所,北京100190)

      0 引 言

      VTEST是一個(gè)運(yùn)行在X86宿主機(jī)上的嵌入式軟件仿真測試開發(fā)平臺[1,2],可用于構(gòu)建虛擬的軟件運(yùn)行環(huán)境,目前主要應(yīng)用于航天嵌入式軟件的測試過程[3]。VTEST的核心是一個(gè)指令集模擬器[4,5],用于在軟件層面對目標(biāo)計(jì)算機(jī)的各個(gè)組成部分,包括目標(biāo)處理器指令集、中斷控制器、外設(shè)等進(jìn)行全系統(tǒng)模擬,從而使得軟件能夠在不做任何修改前提下運(yùn)行于不同體系結(jié)構(gòu)的計(jì)算機(jī)。在嵌入式軟件的開發(fā)過程中,以指令集模擬器為核心的仿真環(huán)境能夠提供一個(gè)接近于真實(shí)目標(biāo)機(jī)的運(yùn)行環(huán)境,使軟件開發(fā)能夠與硬件開發(fā)同步進(jìn)行[6]。TMS320C3x是RISC類型DSP處理器,可以在一個(gè)周期內(nèi)完成整數(shù)或浮點(diǎn)數(shù)乘法和算術(shù)邏輯單元的并行操作,其家族成員包括:C30、C31/LC31、C32和VC33。本文第一部分針對TMS320C3x指令尋址模式較多的特點(diǎn),提出了雙線代碼指令模擬技術(shù),該技術(shù)能兼顧指令模擬效率與模擬器實(shí)現(xiàn)的復(fù)雜度;第二部分對中斷處理機(jī)制進(jìn)行了研究,給出了中斷響應(yīng)模擬策略;第三部分基于VTEST提供的定時(shí)機(jī)制設(shè)計(jì)了事件驅(qū)動外設(shè)模擬方法;第四部分驗(yàn)證了所設(shè)計(jì)模擬器的指令執(zhí)行速度,并測試了模擬中斷和外設(shè)時(shí)對模擬器性能的影響。

      1 指令集模擬

      1.1 純字節(jié)解釋與穿線代碼

      純字節(jié)解釋是一種比較簡單的模擬器實(shí)現(xiàn)方法,其核心是一個(gè)循環(huán),反復(fù)執(zhí)行取指、譯碼和執(zhí)行過程[7]。由于解釋一條指令需要經(jīng)歷取指、譯碼和模擬執(zhí)行3個(gè)階段,因此盡管這種方法易于實(shí)現(xiàn),但缺點(diǎn)是指令模擬的效率非常低。常見的改進(jìn)方法是將譯碼和模擬分成兩個(gè)階段,譯碼時(shí)將目標(biāo)碼翻譯成中間格式代碼并進(jìn)行緩存,模擬執(zhí)行時(shí)直接讀取中間碼,因?yàn)槟繕?biāo)碼往往被設(shè)計(jì)成更適合機(jī)器使用,而中間碼則被設(shè)計(jì)成更利于解釋器使用[8]。

      在這些改進(jìn)方法中,運(yùn)用較多的一種技術(shù)是穿線代碼,其執(zhí)行過程與硬件執(zhí)行指令的特點(diǎn)類似,如圖1所示,在譯碼階段確定指令對應(yīng)的模擬程序,一條指令的模擬程序執(zhí)行結(jié)束后直接跳轉(zhuǎn)到后繼指令的模擬程序,節(jié)省了不必要的循環(huán)執(zhí)行開銷。與純字節(jié)解釋方法相比,前者是一次譯碼,一次執(zhí)行,后者是一次譯碼,多次執(zhí)行[9]。

      圖1 穿線代碼

      1.2 雙線代碼

      TMS320C3x的指令共有四組尋址模式,每組模式可使用至少兩種尋址類型,如圖2所示,其中間接尋址又分為相對間接尋址、IR0索引或IR1索引間接尋址,以及兩項(xiàng)特殊的間接尋址,共計(jì)26種子類型。針對這些指令特點(diǎn),使用穿線代碼技術(shù)開發(fā)指令集模擬器時(shí),譯碼階段一般會選擇下面兩種方案之一進(jìn)行處理:

      方案一:譯碼時(shí)不對組尋址模式和尋址類型進(jìn)行解析,指令模擬執(zhí)行時(shí)在模擬程序中進(jìn)行相應(yīng)地解析工作;

      圖2 指令尋址模式與尋址類型

      方案二:對指令的每種尋址方式分別編寫尋址解析程序,譯碼時(shí)解析出尋址方式并確定相應(yīng)的指令模擬程序,模擬程序執(zhí)行時(shí)不再進(jìn)行尋址方式解析;

      上述兩種方案各有優(yōu)缺點(diǎn),第一種方案的優(yōu)點(diǎn)是針對每條指令只編寫一個(gè)指令模擬程序,模擬器開發(fā)的工作量小,缺點(diǎn)是每次執(zhí)行時(shí)需要重復(fù)對指令進(jìn)行尋址解析,模擬速度較低;第二種方案的優(yōu)點(diǎn)是執(zhí)行時(shí)不需要進(jìn)行尋址方式解析,模擬速度較快,缺點(diǎn)是需要為一條指令編寫30多個(gè)模擬程序,模擬器開發(fā)工作量較大。

      綜合考慮上述兩種方案的優(yōu)缺點(diǎn),可以采用一種兼顧指令模擬效率和模擬器開發(fā)工作量的折中方案,即為每條指令編寫一個(gè)模擬程序,但針對每種尋址類型分別編寫尋址解析程序,在譯碼階段解析出指令的尋址方式,并將尋址尋址方式對應(yīng)的尋址解析程序地址與指令模擬程序地址一起緩存。模擬指令執(zhí)行時(shí),不必再進(jìn)行指令尋址方式解析,而是直接進(jìn)入相應(yīng)的尋址解析程序序取出操作數(shù),然后跳轉(zhuǎn)到指令模擬程序,其執(zhí)行過程如圖3所示。

      圖3 雙線代碼

      這里將這種方案稱為雙線代碼,它是對穿線代碼技術(shù)的一種改進(jìn)。采用雙線代碼技術(shù)模擬指令時(shí),緩存的中間碼包含兩條線,一條線指向?qū)ぶ方馕龀绦?,另一條線指向模擬程序,指令模擬執(zhí)行時(shí)須沿著這兩條線先后執(zhí)行。相對于第一種方案,編寫模擬程序的工作量沒有變化,只是在譯碼階段增加了對尋址處理程序的緩存工作,模擬器的空間復(fù)雜度有所升高,但模擬執(zhí)行效率卻可獲得較大提升;相對于第二種方案,雙線代碼多了一次跳轉(zhuǎn),指令模擬執(zhí)行時(shí)會增加3條X86機(jī)器指令,速度會略有降低,但由于針對每條指令僅需編寫一個(gè)模擬程序,因此,可節(jié)省90%以上的模擬程序開發(fā)工作量。

      1.3 中間碼格式

      由于穿線代碼將譯碼和調(diào)度執(zhí)行服務(wù)程序分成兩個(gè)獨(dú)立的階段,其中譯碼階段對目標(biāo)指令進(jìn)行解析并緩存結(jié)果,調(diào)度執(zhí)行階段根據(jù)緩存的中間碼直接進(jìn)行模擬執(zhí)行,因此要求中間碼包含足夠的信息以滿足執(zhí)行的需要。一般情況下,每個(gè)中間碼都包含兩個(gè)信息,一個(gè)是執(zhí)行時(shí)應(yīng)調(diào)用的模擬程序,另一個(gè)是調(diào)用時(shí)需要傳遞的參數(shù)。

      對于雙線代碼,除了上述兩個(gè)信息外,還需要一個(gè)指示尋址解析程序的信息。使用雙線代碼模擬時(shí)中間碼的結(jié)構(gòu)如圖4所示,這個(gè)結(jié)構(gòu)體主要包含3個(gè)參數(shù),其中參數(shù)parms存放模擬指令時(shí)需要的輸入?yún)?shù),如源寄存器、目的寄存器等,參數(shù)routine1指示尋址解析程序地址,參數(shù)routine2指示指令模擬程序地址;執(zhí)行階段以param作為輸入?yún)?shù),沿著routine1、routine2兩條線進(jìn)行指令模擬。

      1.4 特殊中間碼

      圖4 雙線中間碼結(jié)構(gòu)

      TMS320C3x有一些特殊的指令,如延遲分支、RPTS等,它們的操作不是在一個(gè)機(jī)器周期內(nèi)完成,后繼指令執(zhí)行時(shí)仍受其副作用影響。如果在每條指令模擬時(shí)逐項(xiàng)判斷當(dāng)前是否存在某種特殊情況需要處理,將對模擬器的性能產(chǎn)生較大影響。為避免這種情況,一種處理方式是在特殊指令所影響的位置插入特殊中間碼,通過特殊中間碼完成相應(yīng)的后續(xù)操作。下面以延遲分支指令為例說明特殊中間碼的設(shè)置方式及工作機(jī)理,如圖5所示,指令 (1)是一條延遲分支指令,其執(zhí)行時(shí)如果標(biāo)志位Z沒有置位,則順序執(zhí)行,否則跳轉(zhuǎn)至寄存器R0所指向的目的地址,但跳轉(zhuǎn)操作并不立即執(zhí)行,而是在延遲3條指令之后,即在指令(4)執(zhí)行之后,指令 (5)執(zhí)行之前才跳轉(zhuǎn),所以將此位置的中間碼替換成特殊中間碼,在該處根據(jù)BZD指令執(zhí)行時(shí)的判斷情況控制程序順序或跳轉(zhuǎn)執(zhí)行。

      圖5 延遲分支特殊中間碼

      2 中斷模擬

      2.1 中斷識別

      TMS320C3x包含多個(gè)外部和內(nèi)部中斷,外部中斷有INT0INT3,內(nèi)部中斷包括DMA、定時(shí)器和串口中斷,其中C30、C31中斷向量地址是固定的,C32中斷向量地址是可配置的。TMS320C3x通過3個(gè)寄存器來控制中斷:狀態(tài)寄存器ST、中斷使能寄存器IE和中斷標(biāo)記寄存器IF。當(dāng)中斷產(chǎn)生時(shí),中斷標(biāo)記寄存器IF標(biāo)記位被置位,如果狀態(tài)寄存器ST的全局中斷控制位GIE處于使能狀態(tài),且中斷使能寄存器IE相應(yīng)的位被使能,則響應(yīng)中斷。

      模擬器運(yùn)行時(shí),必須及時(shí)識別中斷并模擬中斷影響過程[10]。為了檢查指令模擬執(zhí)行后是否存在待響應(yīng)的中斷,需要在穿線代碼層進(jìn)行判斷,但如果在穿線代碼執(zhí)行時(shí)每次均通過ST、IE、IF這3個(gè)寄存器來識別是否存在待響應(yīng)的中斷,需要增加下面操作:

      在X86機(jī)器上,實(shí)現(xiàn)上述操作至少需要3條讀內(nèi)存指令、一條位運(yùn)算指令、一條邏輯運(yùn)算指令以及一條條件轉(zhuǎn)移指令。由于模擬每條指令均要進(jìn)行上述判斷,所以使用這種中斷識別方式會對模擬器性能產(chǎn)生較大的負(fù)面影響。一種更快的方式是定義一個(gè)中斷變量,用于標(biāo)記當(dāng)前是否存在待響應(yīng)的中斷,只有在中斷發(fā)生時(shí)才根據(jù)ST、IE和IF判斷產(chǎn)生的中斷是否需要響應(yīng),是則設(shè)置中斷變量對應(yīng)的標(biāo)記位,否則等待中斷響應(yīng)條件滿足后再進(jìn)行設(shè)置。穿線代碼執(zhí)行時(shí)直接通過該中斷變量來識別是否進(jìn)行中斷處理,這個(gè)過程只需要兩條X86機(jī)器指令。

      2.2 中斷響應(yīng)過程

      中斷響應(yīng)模擬過程如圖6所示,若執(zhí)行至某個(gè)中間碼時(shí)需要響應(yīng)中斷,在該指令執(zhí)行結(jié)束后,首先進(jìn)行中斷現(xiàn)場保護(hù),包括非使能全局中斷控制位GIE、清除中斷標(biāo)記位、當(dāng)前PC值壓棧等,然后轉(zhuǎn)到中斷向量入口地址執(zhí)行;模擬運(yùn)行至服務(wù)程序出口時(shí)恢復(fù)現(xiàn)場,返回被中斷位置繼續(xù)執(zhí)行。

      圖6 中斷響應(yīng)過程

      3 外設(shè)模擬

      外設(shè)模擬是模擬器開發(fā)中必不可少的部分,同時(shí)外設(shè)模擬機(jī)制的選擇對模擬器性能有著重要的影響。TMS320C3x共有3種外設(shè):定時(shí)器、串口和DMA[11],但不同型號的外設(shè)數(shù)量不同,具體情況見表1。

      不同程序使用的外設(shè)可能不同,模擬器可根據(jù)VTEST提供的相關(guān)配置信息僅對程序?qū)嶋H使用的外設(shè)進(jìn)行模擬。為降低外設(shè)模擬對模擬器性能的影響,設(shè)計(jì)TMS320C3x模擬器時(shí)采用了事件驅(qū)動方式來控制外設(shè)運(yùn)行,即模擬器運(yùn)行中需要外設(shè)響應(yīng)時(shí)才觸發(fā)外設(shè)模擬操作,而非每條指令執(zhí)行后實(shí)時(shí)更新外設(shè)狀態(tài)。

      表1 TMS320C3x外設(shè)配置

      3.1 定時(shí)器

      定時(shí)器通過3個(gè)映射到內(nèi)存的寄存器實(shí)現(xiàn)定時(shí)控制,它們分別是周期寄存器、計(jì)數(shù)寄存器和全局控制寄存器。周期寄存器用于設(shè)置定時(shí)周期,計(jì)數(shù)寄存器中是增量計(jì)數(shù)器的當(dāng)前值,該值與周期寄存器的值相等時(shí)清零并觸發(fā)定時(shí)中斷。全局控制寄存器中有3個(gè)控制位:和GO,控制定時(shí)器運(yùn)行在脈沖或時(shí)鐘模式,控制定時(shí)器的使能位,該位在使能狀態(tài)下定時(shí)器才運(yùn)行,GO用于重置計(jì)數(shù)寄存器并啟動定時(shí)器運(yùn)行。如果定時(shí)器已經(jīng)在運(yùn)行,那么修改或GO控制位均會影響定時(shí)事件的到達(dá)時(shí)刻。定時(shí)器有兩種基本工作模式:脈沖和時(shí)鐘,兩種模式下時(shí)鐘周期的計(jì)算公式分別如下:

      T脈沖模式= 周期寄存器/f(定時(shí)器時(shí)鐘周期);

      T時(shí)鐘模式= (2*周期寄存器)/f(定時(shí)器時(shí)鐘周期);

      基于VTEST的模擬器定時(shí)機(jī)制如圖7所示,模擬器根據(jù)VTEST設(shè)定的時(shí)序周期在執(zhí)行過程中定期向VTEST發(fā)送當(dāng)前的時(shí)序信息,定時(shí)器使能后,向VTEST發(fā)送定時(shí)啟動請求,由VTEST計(jì)算并反饋定時(shí)到達(dá)時(shí)刻,虛擬定時(shí)器對到達(dá)的定時(shí)事件處理后再向模擬器發(fā)送相應(yīng)的中斷請求。為描述基于VTEST的定時(shí)機(jī)制的模擬過程,我們定義下面幾個(gè)變量:

      Tb:向VTEST發(fā)送定時(shí)請求時(shí)模擬器運(yùn)行時(shí)刻;

      Tc:當(dāng)前模擬器運(yùn)行時(shí)刻;

      Tp:定時(shí)周期;

      Te:定時(shí)事件到達(dá)時(shí)刻;

      這幾個(gè)變量之間的關(guān)系如圖8所示,其中Te=Tb+Tp;模擬器向VTEST發(fā)送當(dāng)前的Tc信息,當(dāng)Tc等于Te時(shí)VTEST發(fā)送定時(shí)到達(dá)消息,并設(shè)置此時(shí)的Te為下一次定時(shí)周期的Tb,再次經(jīng)過Tp后將到達(dá)下一次的Te,如此循環(huán)往復(fù),直至定時(shí)器非使能或模擬器停止。

      采用事件驅(qū)動方式進(jìn)行定時(shí)模擬時(shí),由于沒有直接使用計(jì)數(shù)寄存器,所以未對其值進(jìn)行實(shí)時(shí)更新,但有時(shí)需要使用該值 (如利用VTEST調(diào)試時(shí)),因此虛擬定時(shí)器還要求具備根據(jù)定時(shí)狀態(tài)逆向計(jì)算計(jì)數(shù)寄存器值的能力,計(jì)算公式如下

      3.2 串 口

      TMS320C3x為每個(gè)串口提供了八個(gè)映射到內(nèi)存的寄存器:全局控制寄存器、兩個(gè)I/O引腳控制寄存器、3個(gè)發(fā)送/接收定時(shí)寄存器、數(shù)據(jù)發(fā)送寄存器和數(shù)據(jù)接收寄存器。在全局控制寄存器的控制下,串口按照發(fā)送/接收定時(shí)寄存器設(shè)定的頻率通過接收和發(fā)送寄存器收發(fā)數(shù)據(jù)。串口發(fā)送/接收的定時(shí)原理與定時(shí)器相同,因此可用上節(jié)所述方法模擬串口;但與定時(shí)器不同的是,定時(shí)器的計(jì)數(shù)和周期寄存器是32位寄存器,串口收發(fā)定時(shí)用的是16位周期和計(jì)數(shù)寄存器。

      3.3 DMA

      TMS320C3x的DMA通道具有4個(gè)寄存器:控制寄存器、源地址寄存器、目的地址寄存器和傳輸計(jì)數(shù)寄存器。DMA的工作模式有4種:讀同步、寫同步、讀寫同步和無同步,可通過控制寄存器的SYNC(同步模式)位進(jìn)行設(shè)置。對于前3種同步方式,DMA是在中斷事件的驅(qū)動下進(jìn)行某種操作,因此可在中斷響應(yīng)模擬時(shí)進(jìn)行DMA模擬;對于無同步模式,可利用VTEST創(chuàng)建一個(gè)周期定時(shí)器,在每次定時(shí)事件到達(dá)時(shí)進(jìn)行DMA模擬。

      4 實(shí) 驗(yàn)

      為驗(yàn)證模擬器的性能,使用航天某型號的測距軟件對模擬器性能進(jìn)行了測試,處理器主頻為40MHz,內(nèi)存等待周期為4。實(shí)驗(yàn)所用計(jì)算機(jī)的處理器主頻為3.00GHz,型號是IntelCoreTM2Quad CPU Q9650,內(nèi)存大小是4G,操作系統(tǒng)是 Windows XP。通過實(shí)驗(yàn),測試了模擬器的速度,并先后設(shè)定了不同的定時(shí)周期來實(shí)驗(yàn)?zāi)M中斷和外設(shè)對模擬器性能的影響,結(jié)果如圖9所示。

      圖9 模擬器性能的影響

      從圖中可以看出,隨著定時(shí)周期的縮短,模擬器的仿真速度會逐步下降。在定時(shí)器非使能情況下,模擬器仿真速度可達(dá)234MHz,但在定時(shí)周期為10us時(shí),仿真速度僅為36MHz,造成這種情況的原因有3個(gè):一是定時(shí)周期越短,VTEST要求模擬器發(fā)送時(shí)序信息的周期也越短,導(dǎo)致模擬器向VTEST發(fā)送時(shí)序信息的開銷大幅增加,對其性能產(chǎn)生了負(fù)面影響;二是由于虛擬定時(shí)器與模擬器工作在同一線程,定時(shí)事件頻繁到達(dá),CPU搶占現(xiàn)象明顯;三是響應(yīng)中斷的次數(shù)增多,對模擬器性能產(chǎn)生了負(fù)面影響。

      5 結(jié)束語

      本文提出的雙線代碼指令模擬技術(shù)專門針對TMS320C3x指令尋址模式較多的特點(diǎn),能夠兼顧指令模擬效率與模擬器開發(fā)的復(fù)雜度。同時(shí),在設(shè)計(jì)模擬器時(shí),充分利用了VTEST的擴(kuò)展功能,模擬器能夠根據(jù)相關(guān)配置信息僅對程序?qū)嶋H使用的外設(shè)進(jìn)行仿真,對于未使用的外設(shè),其對模擬器性能的影響幾乎為0。依據(jù)本文方法設(shè)計(jì)的TMS320C3x模擬器已經(jīng)在航天型號軟件的測試中有所應(yīng)用,模擬器的速度能夠很好地滿足測試需求。但通過實(shí)驗(yàn)也發(fā)現(xiàn)在中斷與外設(shè)觸發(fā)頻率較高情況下,模擬器性能會有所下降,因此中斷與外設(shè)模擬機(jī)制還存在一定的改進(jìn)空間。

      [1]WANG Lize.Research on an execution framework of embedded software testing system [J].Measure & Control Technology,2010,29 (12):82-86 (in Chinese).[王立澤.嵌入式軟件測試系統(tǒng)執(zhí)行框架研究 [J].測控技術(shù),2010,29 (12):82-86.]

      [2]CHEN Lin,ZHANG Yuping.Research and implementation of an automatic embedded test harness [J].Avionics Technology,2011,42 (1):29-33 (in Chinese). [陳琳,張育平.嵌入式軟件自動化測試平臺的研究與實(shí)現(xiàn) [J].航空電子技術(shù),2011,42 (1):29-33.]

      [3]YANG Fang,HE Hongwei.Research and design of embedded software object code simulation test platform [J].Computer Engineering and Design,2009,30 (19):4364-4367 (in Chinese).[楊芳,賀紅衛(wèi).嵌入式軟件目標(biāo)碼仿真測試平臺的研究 與 設(shè) 計(jì) [J]. 計(jì) 算 機(jī) 工 程 與 設(shè) 計(jì),2009,30 (19):4364-4367.]

      [4]ZHANG Youwei.Instruction-set simulator design and realization based on the virtual instruction [C]//Computer Science and Information Technology,2009:347-351.

      [5]Tse Chen Yeh,Kaohsiung.A fast cycle-accurate instruction set simulator based on QEMU and SystemC for SoC development[C]//IEEE Mediterranean Electrotechnical Conference,2010:1033-1038.

      [6]Almer O.Scalable multi-core simulation using parallel dynamic binary translation [C]//Embedded Computer Systems,2011:190-199.

      [7]Brunthaler S.Virtual-machine abstraction and optimization techniques [J].Electronic Notes in Theoretical Computer Science,2009,253 (5):3-14.

      [8]Ramsey D.Resourceable,retargetable,modular instruction selection using a machine-independent,type-based tiling of lowlevel intermediate code [C]//Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages,2011,46 (1):575-586.

      [9]Mehrdad R,Prabhat M,Nikil D.Instruction set compiled simulation:A technique for fast and flexible instruction set proceedings of simulation [C]//Design Automation Conference,2008:758-763.

      [10]Brandner F.Precise simulation of interrupts using a rollback mechanism [C]//Proceedings of 12th International Workshop on Software and Compilers for Embedded Systems,2009:71-80.

      [11]DANG Ruirong,GAO Guowang.TMS320C3xseries DSP principle and development technology [M].Xian:Xian Electronic and Science University Press,2011:11-13.

      猜你喜歡
      穿線外設(shè)譯碼
      基于校正搜索寬度的極化碼譯碼算法研究
      羽毛球大賽的穿線是什么樣的?
      羽毛球(2019年9期)2019-09-10 14:48:23
      2019蘇杯尤尼克斯穿線團(tuán)隊(duì)成員工作隨筆
      羽毛球(2019年8期)2019-09-10 07:22:44
      簡易手拉式擦窗器
      從霍爾的編碼譯碼理論看彈幕的譯碼
      新聞傳播(2016年3期)2016-07-12 12:55:27
      簡易手拉式擦窗器
      LDPC 碼改進(jìn)高速譯碼算法
      遙測遙控(2015年2期)2015-04-23 08:15:19
      基于概率裁剪的球形譯碼算法
      Microchip推出具備雙ADC外設(shè)的全新器件,擴(kuò)展其低成本8位PIC?單片機(jī)產(chǎn)品線
      貼身呵護(hù) 必不可少的PSP外設(shè)
      周口市| 田林县| 慈溪市| 平乐县| 莫力| 申扎县| 襄垣县| 斗六市| 福建省| 屯留县| 德庆县| 修文县| 秀山| 大城县| 明溪县| 桑植县| 十堰市| 新密市| 广丰县| 余江县| 赤壁市| 建德市| 遂川县| 浏阳市| 海盐县| 丹阳市| 铜山县| 岱山县| 乌拉特前旗| 赤壁市| 博湖县| 宁南县| 忻城县| 砀山县| 昌图县| 泊头市| 宁陕县| 富宁县| 东源县| 镇宁| 阳西县|