中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        PCI總線與接口技術(shù)

        作者: 時(shí)間:2016-12-12 來(lái)源:網(wǎng)絡(luò) 收藏
        簡(jiǎn)單地探討PCI配置空間,PCI ROM,以及PCI BIOS的調(diào)用。

        1、PCI總線的發(fā)展歷史

        本文引用地址:http://www.antipu.com.cn/article/201612/328784.htm

        1990年,起源于Intel架構(gòu)開(kāi)發(fā)實(shí)驗(yàn)室,全稱(chēng)是Peripheral Component Interconnect,首先在服務(wù)器中使用,代替了原來(lái)的MCA以及EISA,EISA直到2000年才宣告退出歷史舞臺(tái)。直到1994年,才開(kāi)始在PC上廣泛使用,代替了原來(lái)的VESA。在1995年的中期,蘋(píng)果電腦也開(kāi)始使用PCI總線電氣規(guī)范。后來(lái)PCI也增加了許多新的功能,比如66MHz,3.3V標(biāo)準(zhǔn),以及133MHz的PCI-X。2004年,出現(xiàn)了PCI-Express,原來(lái)的PCI總線電氣規(guī)范被稱(chēng)為了傳統(tǒng)PCI(Conventional PCI)。

        2、PCI總線地址空間

        獨(dú)立的內(nèi)存以及IO接口,由軟件分配。而另外一個(gè)地址空間-PCI配置空間(PCI Configuration Space),使用獨(dú)立的地址,允許軟件決定每一個(gè)連入的設(shè)備需要多少內(nèi)存以及IO地址空間。通過(guò)設(shè)備配置空間寄存器的設(shè)置,每一個(gè)設(shè)備至多可以申請(qǐng)6個(gè)內(nèi)存以及IO地址空間。PCI配置空間還包括了連入設(shè)備的相關(guān)信息,根據(jù)這些信息,操作系統(tǒng)可以方便地使用相應(yīng)的驅(qū)動(dòng)來(lái)使用這些設(shè)備。為了使PCI總線公平地使用PCI總線,提供了一種等待計(jì)時(shí)的功能,計(jì)時(shí)器在設(shè)備獲得了總線使用權(quán)時(shí)以PCI時(shí)鐘信號(hào)的速率開(kāi)始計(jì)時(shí),直到減為零,設(shè)備釋放總線占有權(quán)。

        3、關(guān)于PCI的中斷

        四個(gè)中斷,屬于電平觸發(fā)方式(邊沿觸發(fā)方式的中斷容易丟失)。單功能設(shè)備只是使用INTA#,多功能設(shè)備使用多個(gè)中斷。四個(gè)中斷通過(guò)PCI橋(兩個(gè)PCI總線之間)映射到系統(tǒng)中斷上,所以軟件無(wú)從得知是那個(gè)PCI中斷。后來(lái)的PCI加入了消息信號(hào)中斷的機(jī)制,PCI-Express使用的也是消息信號(hào)中斷機(jī)制,而沒(méi)有物理中斷線。

        4、PCI電氣規(guī)范

        PCI卡的尺寸,長(zhǎng)度為174.63mm,高度為36.068~106.68mm。一下是一幅PCI個(gè)引腳定義的圖。

        5、PCI設(shè)備的初始化

        機(jī)器上電的時(shí)候,配置軟件必須掃描PCI總線,確定有哪些PCI設(shè)備,然后加載相應(yīng)的驅(qū)動(dòng)程序。所有PCI設(shè)備都必須實(shí)現(xiàn)PCI協(xié)議規(guī)定必須的配置寄存器。而對(duì)PCI配置訪問(wèn)實(shí)際上就是訪問(wèn)設(shè)備的配置寄存器。

        6、PCI配置空間

        配置空間各項(xiàng)數(shù)據(jù)說(shuō)明:

        廠商識(shí)別碼(Vendor ID):標(biāo)識(shí)設(shè)備的制造者,有PCI SIG來(lái)分配。0FFFH表示未配置任何設(shè)備。

        設(shè)備識(shí)別碼(Device ID):標(biāo)識(shí)特定的設(shè)備,具體代碼由廠商分配。

        版本ID,Revision ID:指定一個(gè)設(shè)備特有的版本號(hào)。

        Class Code(分類(lèi)代碼):用于設(shè)備分類(lèi)。0BH處為基本分類(lèi)代碼;0A處為子分類(lèi)代碼;09H處為標(biāo)識(shí)一個(gè)專(zhuān)用的寄存器級(jí)編程接口,便于設(shè)備的軟件可以與設(shè)備交互數(shù)據(jù)。

        命令寄存器(Command):為發(fā)出和響應(yīng)PCI總線命令提供了對(duì)設(shè)備粗略的控制。

        狀態(tài)寄存器(Status):用于記錄PCI總線有關(guān)操作的狀態(tài)信息,系統(tǒng)對(duì)該寄存器的讀操作無(wú)特殊要求。

        基地址寄存器(Base Address Registers):供地址映射使用,使PCI的IO映射以及內(nèi)存映射與具體設(shè)備無(wú)關(guān)。

        擴(kuò)展ROM的基地址寄存器(Expansion ROM Base Address):用來(lái)處理那些配置了局部EPROM或者Flash ROM的基地址和大小。Cache大小寄存器:用來(lái)指定系統(tǒng)中Cache行的長(zhǎng)度,每個(gè)參加Cache協(xié)議的設(shè)備都要使用該寄存器。

        延時(shí)計(jì)時(shí)器:該寄存器以PCI總線時(shí)鐘為單位指定PCI總線主設(shè)備的延遲計(jì)時(shí)器。

        內(nèi)含自測(cè)寄存器:可選的寄存器,用作內(nèi)含自測(cè)試的控制與狀態(tài)寄存器。

        中斷引腳寄存器(Interrupt Pin):用來(lái)表示設(shè)備使用了哪個(gè)PCI中斷引腳。

        中斷線寄存器(Interrupt Line):用來(lái)表示設(shè)備中的中斷引腳與系統(tǒng)可編程控制器8259的哪個(gè)中斷輸入線相連接。

        MAX_GNT表示設(shè)備需要多長(zhǎng)的突發(fā)傳輸時(shí)間。MAX_LAT表示對(duì)PCI總線進(jìn)行訪問(wèn)的頻繁程度。

        Card CIS Pointer:由在卡總線和PCI之間共享芯片的設(shè)備實(shí)現(xiàn)。

        子系統(tǒng)廠商標(biāo)識(shí)和子系統(tǒng)標(biāo)識(shí)(Subsystem Vendor ID):用于惟一地標(biāo)識(shí)設(shè)備所駐留的插入卡和子系統(tǒng)。即插即用操作系統(tǒng)可以定位正確的驅(qū)動(dòng)程序,裝載到存儲(chǔ)器。

        7、PCI擴(kuò)展ROM

        通過(guò)執(zhí)行擴(kuò)展ROM存放的代碼來(lái)完成與設(shè)備相關(guān)的初始化,同時(shí)也可能完成系統(tǒng)引導(dǎo)功能。該機(jī)制允許擴(kuò)展ROM中含有幾個(gè)不同的映像,以適應(yīng)不同的機(jī)器和處理器結(jié)構(gòu)。

        凡是支持?jǐn)U展ROM的設(shè)備,必須支持按任意字節(jié)組合方式對(duì)ROM進(jìn)行訪問(wèn),特別強(qiáng)調(diào)的是要支持雙字(DWORD)訪問(wèn)。擴(kuò)展ROM中的信息安排要與現(xiàn)有的適合于ISA和EISA以及MC適配器的Intel X86擴(kuò)展ROM中的頭標(biāo)區(qū)兼容。頭標(biāo)區(qū)中所給信息經(jīng)過(guò)了擴(kuò)充,從而使適配器的功能進(jìn)一步優(yōu)化使用,從而可以使擴(kuò)展ROM中的代碼在運(yùn)行期間所使用的存儲(chǔ)空間最小。

        PCI擴(kuò)展ROM中代碼從不在原地執(zhí)行,而是將代碼從ROM中拷貝到RAM中執(zhí)行。這樣可以在初始化和運(yùn)行時(shí)動(dòng)態(tài)地確定代碼長(zhǎng)度,并且能夠改善代碼的執(zhí)行速度。

        PCI對(duì)于不同的系統(tǒng)和處理器配置都應(yīng)該包含其編碼映像。每個(gè)映像由ROM首區(qū)(映像開(kāi)始處)+數(shù)據(jù)配置區(qū)(映像的第64KB范圍內(nèi))組成。

        ROM首區(qū)內(nèi)容

        偏移

        長(zhǎng)度

        說(shuō)明

        00H~01H

        2

        55AAH

        ROM標(biāo)簽字節(jié)

        02H~17H

        22

        XX

        保留

        18H~19H

        2

        XX

        到PCI數(shù)據(jù)結(jié)構(gòu)指針

        數(shù)據(jù)配置區(qū)

        偏移量

        長(zhǎng)度

        說(shuō)明

        偏移量

        長(zhǎng)度

        說(shuō)明

        00H~03H

        4

        標(biāo)簽,字符串"PCID"

        0DH~0FH

        3

        分類(lèi)代碼

        04H~05H

        2

        供應(yīng)商識(shí)別碼

        10H~11H

        2

        映像長(zhǎng)度

        06H~07H

        2

        設(shè)備識(shí)別碼

        12H~13H

        2

        代碼數(shù)據(jù)的修改級(jí)別

        08H~09H

        2

        對(duì)重要產(chǎn)品數(shù)據(jù)的指針

        14H~14H

        1

        代碼類(lèi)型

        0AH~0BH

        2

        PCI數(shù)據(jù)結(jié)構(gòu)長(zhǎng)度

        15H~15H

        1

        指示標(biāo)志

        0CH~0CH

        1

        PCI數(shù)據(jù)結(jié)構(gòu)修改

        16H~17H

        2

        保留

        8、關(guān)于PCI設(shè)備的初始化

        系統(tǒng)POST首先檢查PCI設(shè)備在配置空間是否使用了擴(kuò)展ROM基地址寄存器(即是否有擴(kuò)展ROM),若使用了,POST將ROM映射到地址空間中一個(gè)未用的部分。

        9、PCI BIOS

        其主要作用有以下兩點(diǎn):

        • 為應(yīng)用軟件或者PCI總線設(shè)備或者板卡提供服務(wù)調(diào)用。
        • 初始化每個(gè)系統(tǒng)PCI設(shè)備。PCI BIOS輪流查詢每個(gè)PCI插槽,查找存在的PCI設(shè)備,讀取存在設(shè)備配置空間的頭標(biāo)區(qū),以決定設(shè)備的廠商號(hào),類(lèi)型和存儲(chǔ)需求等內(nèi)容。并且將分配的I/O或存儲(chǔ)空間地址回寫(xiě)到每個(gè)設(shè)備配置空間的基地址寄存器中。
        • PCI BIOS調(diào)用的入口以及返回值說(shuō)明,對(duì)80x86機(jī)器,調(diào)用功能號(hào)為1AH,入口參數(shù)在AX中,返回值在AH中。下面列舉的是比較常用的,更多說(shuō)明請(qǐng)參考PCI BIOS規(guī)則說(shuō)明書(shū)。

        功能說(shuō)明

        入口參數(shù)(AX)

        返回值說(shuō)明

        出口參數(shù)(AH)

        PCI BIOS存在查詢

        B101H

        成功調(diào)用

        00H

        查找PCI 設(shè)備

        B102H

        不支持的功能

        81H

        查找PCI 設(shè)備的類(lèi)代碼

        B103H

        錯(cuò)誤的廠商號(hào)

        83H

        產(chǎn)生特殊周期

        B106H

        未找到設(shè)備

        86H

        讀配置寄存器-單字節(jié)操作

        B108H

        錯(cuò)誤的寄存器號(hào)

        87H

        讀配置寄存器-單字操作

        B109H

        設(shè)置失敗

        88H

        讀配置寄存器-雙字操作

        B10AH

        緩沖區(qū)太小

        89H

        寫(xiě)配置寄存器-單字操作

        B10BH

        寫(xiě)配置寄存器-單字節(jié)操作

        B10CH

        寫(xiě)配置寄存器-雙字節(jié)操作

        B10DH

        取得中斷線路選項(xiàng)

        B10EH

        設(shè)置PCI中斷

        B10FH

        • 下面是一個(gè)關(guān)于通過(guò)PCI BIOS調(diào)用讀PCI配置寄存器的例子:
          1. .386
          2. ;FUNCTIONCODE
          3. PCI_FUNCTION_ID=0B1H
          4. PCI_BIOS_PRESENT=01H
          5. FIND_PCI_DEVICE=02H
          6. FIND_PCI_CLASS_CODE=03H
          7. GENERATE_SPECIAL_CYCLE=06H
          8. READ_CONFIG_BYTE=08H
          9. READ_CONFIG_WORD=09H
          10. READ_CONFIG_DWORD=0AH
          11. WRITE_CONFIG_BYTE=0BH
          12. WRITE_CONFIG_WORD=0CH
          13. WRITE_CONFIG_DWORD=0DH
          14. GET_IRQ_ROUTING_OPTIONS=0EH
          15. SET_PCI_IRQ=0FH
          16. ;RETURNCODE
          17. SUCCESSFUL=00H
          18. FUNC_NOT_SUPPORTED=81H
          19. BAD_VENDOR_ID=83H
          20. DEVICE_NOT_FOUND=86H
          21. BAD_REGISTER_NUMBER=87H
          22. SET_FAILED=88H
          23. BUFFER_TOO_SMALL=89H
          24. VID=0H
          25. DID=2H
          26. PCICMD=4H
          27. PCISTS=6H
          28. RID=8H
          29. CLCD=9H
          30. CALN=0CH
          31. LAT=0DH
          32. HDR=0EH
          33. BIST=0FH
          34. BADR0=10H
          35. BADR1=14H
          36. BADR2=18H
          37. BADR3=1CH
          38. BADR4=20H
          39. BADR5=24H
          40. EXPOM=30H
          41. INTLN=3CH
          42. INTPIN=3DH
          43. MINGNT=3EH
          44. MAXLAT=3FH
          45. SSTACKSEGMENTSTACKPARAUSE16
          46. DW64DUP(?)
          47. SSTACKENDS
          48. DATASEGMENTPARAUSE16
          49. MESDBPCICARDNOTFOUND!$
          50. MES0DB***********************PCICONFIGINFO*****************************,13,10,$
          51. MES1DBPCIBIOSNOTFOUND!,10,13,$
          52. MES2DBPCICONFIGREADERROR!$
          53. MES3DBVendorIdentification:10E8$
          54. MES4DBDeviceIdentification:5933$
          55. MES5DBPCICommandRegister:$
          56. MES6DBPCIStatusRegister:$
          57. MES7DBRevisionIdentificationRegister:$
          58. MES8DBClassCodeRegister:$
          59. MES9DBCacheLineSizeRegister:$
          60. MES10DBMasterLatencyTimer:$
          61. MES11DBHeaderType:$
          62. MES12DBBuilt-inSelf-test:$
          63. MES13DBBaseAddressRegister0:$
          64. MES14DBBaseAddressRegister1:$
          65. MES15DBBaseAddressRegister2:$
          66. MES16DBBaseAddressRegister3:$
          67. MES17DBBaseAddressRegister4:$
          68. MES18DBBaseAddressRegister5:$
          69. MES19DBExpansionRomBaseAddress:$
          70. MES20DBInterruptLine:$
          71. MES21DBInterruptPin:$
          72. MES22DBMinimumGrant:$
          73. MES23DBMaximumLatency:$
          74. BNDB?
          75. DN_FNDB?
          76. R_VALUEDD?
          77. V_VIDDW?
          78. V_DIDDW?
          79. V_PCICMDDW?
          80. V_PCISTSDW?
          81. V_RIDDB?
          82. V_CLCDDD?
          83. V_CALNDB?
          84. V_LATDB?
          85. V_HDRDB?
          86. V_BISTDB?
          87. V_BADR0DD?
          88. V_BADR1DD?
          89. V_BADR2DD?
          90. V_BADR3DD?
          91. V_BADR4DD?
          92. V_BADR5DD?
          93. V_EXPOMDD?
          94. V_INTLNDB?
          95. V_INTPINDB?
          96. V_MINGNTDB?
          97. V_MAXLATDB?
          98. DATAENDS
          99. CODESEGMENTPARAUSE16
          100. ASSUMECS:CODE,DS:DATA,SS:SSTACK
          101. START:MOVAX,DATA
          102. MOVDS,AX
          103. MOVAX,0B101H;查找PCIBIOS
          104. INT1AH
          105. JNCJUDGE1;如果CF被置位,則PCIBIOS不存在
          106. MOVDX,OFFSETMES1;顯示不存在信息
          107. MOVAH,09H
          108. INT21H
          109. JMPEXIT
          110. JUDGE1:CMPAH,00H
          111. JZJUDGE2;如果不等,則PCIBIOS不存在
          112. MOVDX,OFFSETMES1;顯示不存在信息
          113. MOVAH,09H
          114. INT21H
          115. JMPEXIT
          116. JUDGE2:CMPEDX,ICP;如果EDX中放的是"PCI"則說(shuō)明PCIBIOS存在
          117. JZFIND
          118. MOVDX,OFFSETMES1;否則錯(cuò)誤的設(shè)備
          119. MOVAH,09H
          120. INT21H
          121. JMPEXIT
          122. FIND:MOVAX,0B102H;找到了PCIBIOS,再查找指定PCI設(shè)備
          123. MOVCX,5933H;板卡的設(shè)備的ID
          124. MOVDX,10E8H;板卡的供應(yīng)商ID
          125. MOVSI,0;索引
          126. INT1AH
          127. JNCREAD
          128. MOVDX,OFFSETMES
          129. MOVAH,09H
          130. INT21H
          131. JMPEXIT
          132. READ:MOVBN,BH;保存總線號(hào)
          133. MOVDN_FN,BL;保存設(shè)備號(hào)
          134. CALLKENTER;回車(chē)換行
          135. MOVDX,OFFSETMES0
          136. MOVAH,09H
          137. INT21H
          138. CALLKENTER;回車(chē)換行
          139. MOVDX,OFFSETMES3;輸出供應(yīng)廠商ID
          140. MOVAH,09H
          141. INT21H
          142. CALLKENTER
          143. MOVDX,OFFSETMES4;輸出設(shè)備的ID
          144. MOVAH,09H
          145. INT21H
          146. CALLKENTER
          147. MOVAX,0B109H;讀命令寄存器,單字操作
          148. MOVBH,BN
          149. MOVBL,DN_FN
          150. MOVDI,PCICMD
          151. INT1AH
          152. JCERROR
          153. MOVDX,OFFSETMES5;顯示PCI命令寄存器內(nèi)容
          154. MOVAH,09H
          155. INT21H
          156. MOVAX,02H
          157. CALLSHOW
          158. CALLKENTER
          159. MOVAX,0B109H;讀PCI狀態(tài)寄存器內(nèi)容,單字操作
          160. MOVBH,BN
          161. MOVBL,DN_FN
          162. MOVDI,PCISTS
          163. INT1AH
          164. JCERROR
          165. MOVDX,OFFSETMES6;顯示狀態(tài)寄存器內(nèi)容
          166. MOVAH,09H
          167. INT21H
          168. MOVAX,02H
          169. CALLSHOW
          170. CALLKENTER
          171. MOVAX,0B108H;版本號(hào),單字節(jié)操作
          172. MOVBH,BN
          173. MOVBL,DN_FN
          174. MOVDI,RID
          175. INT1AH
          176. JCERROR
          177. MOVDX,OFFSETMES7;顯示版本號(hào)
          178. MOVAH,09H
          179. INT21H
          180. MOVAX,01H
          181. CALLSHOW
          182. CALLKENTER
          183. MOVAX,0B108H;讀中斷引腳信號(hào),單字節(jié)操作
          184. MOVBH,BN
          185. MOVBL,DN_FN
          186. MOVDI,INTLN
          187. INT1AH
          188. JCERROR
          189. MOVDX,OFFSETMES20;顯示中斷引腳
          190. MOVAH,09H
          191. INT21H
          192. MOVAX,01H
          193. CALLSHOW
          194. CALLKENTER
          195. MOVAX,0B10AH;讀配置寄存器,雙字操作
          196. MOVBH,BN;PCI設(shè)備的總線號(hào)
          197. MOVBL,DN_FN;設(shè)備以及功能號(hào),入口參數(shù)
          198. MOVDI,BADR0
          199. INT1AH
          200. JCERROR
          201. MOVDX,OFFSETMES13;基址寄存器0
          202. MOVAH,09H
          203. INT21H
          204. MOVAX,04H
          205. CALLSHOW
          206. CALLKENTER
          207. MOVAX,0B10AH;讀配置寄存器,雙字操作
          208. MOVBH,BN;PCI設(shè)備的總線號(hào)
          209. MOVBL,DN_FN;設(shè)備及功能號(hào),入口參數(shù)
          210. MOVDI,BADR1
          211. INT1AH
          212. JCERROR
          213. PUSHECX
          214. MOVDX,OFFSETMES14;基址寄存器1
          215. MOVAH,09H
          216. INT21H
          217. MOVAX,04H
          218. POPECX
          219. CALLSHOW
          220. CALLKENTER
          221. MOVAX,0B10AH;讀配置寄存器,雙字操作
          222. MOVBH,BN;PCI設(shè)備的總線號(hào)
          223. MOVBL,DN_FN;設(shè)備及功能號(hào),入口參數(shù)
          224. MOVDI,BADR2
          225. INT1AH
          226. JCERROR
          227. MOVDX,OFFSETMES15;基地址寄存器2
          228. MOVAH,09H
          229. INT21H
          230. MOVAX,04H
          231. CALLSHOW
          232. CALLKENTER
          233. MOVAX,0B10AH;讀配置寄存器,雙字操作
          234. MOVBH,BN;PCI設(shè)備的總線號(hào)
          235. MOVBL,DN_FN;設(shè)備及功能號(hào),入口參數(shù)
          236. MOVDI,BADR3
          237. INT1AH
          238. JCERROR
          239. MOVDX,OFFSETMES16;基地址寄存器3
          240. MOVAH,09H
          241. INT21H
          242. MOVAX,04H
          243. CALLSHOW
          244. CALLKENTER
          245. MOVAX,0B10AH;讀配置寄存器,雙字操作
          246. MOVBH,BN;PCI設(shè)備的總線號(hào)
          247. MOVBL,DN_FN;設(shè)備及功能號(hào),入口參數(shù)
          248. MOVDI,BADR4
          249. INT1AH
          250. JCERROR
          251. MOVDX,OFFSETMES17;基地址寄存器4
          252. MOVAH,09H
          253. INT21H
          254. MOVAX,04H
          255. CALLSHOW
          256. JMPEXIT
          257. ERROR:CALLKENTER
          258. MOVDX,OFFSETMES2;顯示讀錯(cuò)誤信息
          259. MOVAH,09H
          260. INT21H
          261. EXIT:MOVAH,4CH;返回DOS
          262. INT21H
          263. KENTERPROC
          264. MOVDL,0AH
          265. MOVAH,02H
          266. INT21H
          267. MOVDL,0DH
          268. MOVAH,02H
          269. INT21H
          270. RET
          271. KENTERENDP
          272. SHOWPROCNEAR;顯示子程序
          273. PUSHDX
          274. PUSHDI
          275. PUSHBX
          276. MOVDI,OFFSETR_VALUE
          277. MOV[DI],ECX;保存獲取的數(shù)據(jù)
          278. ADDDI,AX
          279. DECDI
          280. MOVCX,AX
          281. C1:MOVAL,[DI]
          282. PUSHAX
          283. SHRAL,4
          284. ANDAL,0FH;取高4位
          285. CMPAL,0AH;是否是A以上的數(shù)
          286. JBC2
          287. ADDAL,07H
          288. C2:ADDAL,30H
          289. MOVBH,AL
          290. POPAX
          291. ANDAL,0FH;取低4位
          292. CMPAL,0AH
          293. JBC3
          294. ADDAL,07H
          295. C3:ADDAL,30H
          296. MOVBL,AL
          297. MOVAH,2;顯示十六進(jìn)制數(shù)對(duì)應(yīng)的ACSII碼
          298. MOVDL,BH
          299. INT21H
          300. MOVDL,BL
          301. INT21H
          302. DECDI
          303. LOOPC1
          304. POPBX
          305. POPDI
          306. POPDX
          307. RET
          308. SHOWENDP
          309. CODEENDS
          310. ENDSTART



        關(guān)鍵詞: PCI總線接口技

        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉