<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > PCI總線(xiàn)與接口技術(shù)

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

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

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

本文引用地址:http://dyxdggzs.com/article/201612/328784.htm

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

2、PCI總線(xiàn)地址空間

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

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

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

4、PCI電氣規范

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

5、PCI設備的初始化

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

6、PCI配置空間

配置空間各項數據說(shuō)明:

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

設備識別碼(Device ID):標識特定的設備,具體代碼由廠(chǎng)商分配。

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

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

命令寄存器(Command):為發(fā)出和響應PCI總線(xiàn)命令提供了對設備粗略的控制。

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

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

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

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

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

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

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

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

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

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

7、PCI擴展ROM

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

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

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

PCI對于不同的系統和處理器配置都應該包含其編碼映像。每個(gè)映像由ROM首區(映像開(kāi)始處)+數據配置區(映像的第64KB范圍內)組成。

ROM首區內容

偏移

長(cháng)度

說(shuō)明

00H~01H

2

55AAH

ROM標簽字節

02H~17H

22

XX

保留

18H~19H

2

XX

到PCI數據結構指針

數據配置區

偏移量

長(cháng)度

說(shuō)明

偏移量

長(cháng)度

說(shuō)明

00H~03H

4

標簽,字符串"PCID"

0DH~0FH

3

分類(lèi)代碼

04H~05H

2

供應商識別碼

10H~11H

2

映像長(cháng)度

06H~07H

2

設備識別碼

12H~13H

2

代碼數據的修改級別

08H~09H

2

對重要產(chǎn)品數據的指針

14H~14H

1

代碼類(lèi)型

0AH~0BH

2

PCI數據結構長(cháng)度

15H~15H

1

指示標志

0CH~0CH

1

PCI數據結構修改

16H~17H

2

保留

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

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

9、PCI BIOS

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

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

功能說(shuō)明

入口參數(AX)

返回值說(shuō)明

出口參數(AH)

PCI BIOS存在查詢(xún)

B101H

成功調用

00H

查找PCI 設備

B102H

不支持的功能

81H

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

B103H

錯誤的廠(chǎng)商號

83H

產(chǎn)生特殊周期

B106H

未找到設備

86H

讀配置寄存器-單字節操作

B108H

錯誤的寄存器號

87H

讀配置寄存器-單字操作

B109H

設置失敗

88H

讀配置寄存器-雙字操作

B10AH

緩沖區太小

89H

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

B10BH

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

B10CH

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

B10DH

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

B10EH

設置PCI中斷

B10FH

  • 下面是一個(gè)關(guān)于通過(guò)PCI BIOS調用讀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;否則錯誤的設備
    119. MOVAH,09H
    120. INT21H
    121. JMPEXIT
    122. FIND:MOVAX,0B102H;找到了PCIBIOS,再查找指定PCI設備
    123. MOVCX,5933H;板卡的設備的ID
    124. MOVDX,10E8H;板卡的供應商ID
    125. MOVSI,0;索引
    126. INT1AH
    127. JNCREAD
    128. MOVDX,OFFSETMES
    129. MOVAH,09H
    130. INT21H
    131. JMPEXIT
    132. READ:MOVBN,BH;保存總線(xiàn)號
    133. MOVDN_FN,BL;保存設備號
    134. CALLKENTER;回車(chē)換行
    135. MOVDX,OFFSETMES0
    136. MOVAH,09H
    137. INT21H
    138. CALLKENTER;回車(chē)換行
    139. MOVDX,OFFSETMES3;輸出供應廠(chǎng)商ID
    140. MOVAH,09H
    141. INT21H
    142. CALLKENTER
    143. MOVDX,OFFSETMES4;輸出設備的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命令寄存器內容
    154. MOVAH,09H
    155. INT21H
    156. MOVAX,02H
    157. CALLSHOW
    158. CALLKENTER
    159. MOVAX,0B109H;讀PCI狀態(tài)寄存器內容,單字操作
    160. MOVBH,BN
    161. MOVBL,DN_FN
    162. MOVDI,PCISTS
    163. INT1AH
    164. JCERROR
    165. MOVDX,OFFSETMES6;顯示狀態(tài)寄存器內容
    166. MOVAH,09H
    167. INT21H
    168. MOVAX,02H
    169. CALLSHOW
    170. CALLKENTER
    171. MOVAX,0B108H;版本號,單字節操作
    172. MOVBH,BN
    173. MOVBL,DN_FN
    174. MOVDI,RID
    175. INT1AH
    176. JCERROR
    177. MOVDX,OFFSETMES7;顯示版本號
    178. MOVAH,09H
    179. INT21H
    180. MOVAX,01H
    181. CALLSHOW
    182. CALLKENTER
    183. MOVAX,0B108H;讀中斷引腳信號,單字節操作
    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設備的總線(xiàn)號
    197. MOVBL,DN_FN;設備以及功能號,入口參數
    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設備的總線(xiàn)號
    209. MOVBL,DN_FN;設備及功能號,入口參數
    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設備的總線(xiàn)號
    223. MOVBL,DN_FN;設備及功能號,入口參數
    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設備的總線(xiàn)號
    235. MOVBL,DN_FN;設備及功能號,入口參數
    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設備的總線(xiàn)號
    247. MOVBL,DN_FN;設備及功能號,入口參數
    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;顯示讀錯誤信息
    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;保存獲取的數據
    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以上的數
    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)制數對應的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總線(xiàn)接口技

評論


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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>