============= 本系列參考 =============
《圈圈教你玩USB》、《Linux那些事兒之我是USB》
協議文件:https://www.usb.org/document-library/usb-20-specification usb_20_20190524/usb_20.pdf
除錯工具:Beagle USB 480 邏輯分析儀、sys/kernel/debug/usb/usbmon/
====================================
前言
USB裝置插入埠到底發生了什麼? 匯流排上的波形發生了什麼變化? 這一節我們從裝置插入前、插入中、插入後三個階段分析
一、裝置插入前
首先要知道裝置插入的埠是hub的埠(port), 外設不直接與Host相連, 而是通過hub這個“代理商”, 所以一個Host必然有一個hub, 這個最基本的hub我們稱之root hub,基本上Host和root hub是捆綁一起,
一個hub可以引出多個埠(port), 目前Linux定義hub最多有31個port, 如果你連線超過這個數量可以改下面的定義
linux-4.1.15/include/uapi/linux/usb/ch11.h /* This is arbitrary. * From USB 2.0 spec Table 11-13, offset 7, a hub can * have up to 255 ports. The most yet reported is 10. * * Current Wireless USB host hardware (Intel i1480 for example) allows * up to 22 devices to connect. Upcoming hardware might raise that * limit. Because the arrays need to add a bit for hub status data, we * use 31, so plus one evens out to four bytes. */ #define USB_MAXCHILDREN 31
已我的電腦為例, 只有一個Host主控器和一個root hub, 所有外設的埠都是一個root hub出來的, 如果你的PC機有多個Host/root hub, 可以讓裝置分散到各個Host避免電流限制
有個概念非常重要, 就是hub也是一個裝置, 跟普通的U盤、滑鼠、鍵盤一樣, 在Linux中都用struct usb_device 表示, 只是實現的功能側重點不一樣(比如復位功能只有hub有, 用於復位普通外設)
設想一下, 當USB裝置插入電腦USB埠時, 電腦提示有裝置插入, 接著提示安裝成功或者失敗, Host怎麼知道外設插入這一事件呢? 既然Host不跟外設直連那肯定跟hub有關, 另外, 如果插入埠訊號可以傳給Host,
可如果Host還連線著其他外設, 必然導致訊號串擾, 因為訊號可以在Host和所有外設傳達, 比如我正在拷貝U盤資料, 此時插入鍵盤, 並不會干擾我拷貝, 所以可以推測插入鍵盤這事件(D+/D-狀態改變)並沒有傳到匯流排上。
總總現象表明, 這個插入的事件只有被插的那個hub知道, 同時hub的port預設是disable的, 訊號不會連線到Host匯流排上!
hub既然知道這一事件, 它可以告知Host, 或者是Host來詢問, 很顯然是後者, 因為外設沒有權利主動勾搭Host, 所有的通訊過程都是Host主動發起的, 裝置被動接收!(唯一例外就是裝置遠端喚醒Host), 所以我們可以反推,
hub不僅是個外設, 同時採用中斷傳輸, 端點描述符裡的bIterval間隔時間值告知Host希望多久訪問一次, 協議文件11章有定義hub規範, 程式碼只要每次讀取hub的狀態暫存器值, 判斷是否有外設插入就行了。
下面是用usbmon工具除錯USB Host跟hub通訊的log:
# cat sys/kernel/debug/usb/usbmon/1u 0s 0u 1s 1t 1u ce382380 1944921539 C Ii:1:001:1 0:2048 1 = 02 ce382380 1944921539 S Ii:1:001:1 -115:2048 4 < ce399800 1944921752 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <-----------------------@1
| | | |__setup令牌包 後面就是請求資料(不會列出PID/CRC5域)
| | |__端點地址, 控制傳輸使用端點0
| |__裝置地址, root hub是第一個裝置, 所以是地址1, 0地址表示剛插入裝置
|__主控器/匯流排
ce399800 1944921752 C Ci:1:001:0 0 4 = 01010100 ce399800 1944921783 S Co:1:001:0 s 23 01 0010 0001 0000 0 <-------------------@2 ce399800 1944921783 C Co:1:001:0 0 0 ce399800 1944921813 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <-------------------@3 ce399800 1944921813 C Ci:1:001:0 0 4 = 01010000 ce399e80 1944961608 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <-------------------@4 ce399e80 1944961608 C Ci:1:001:0 0 4 = 01010000 ce399800 1945001556 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <-------------------@5 ce399800 1945001556 C Ci:1:001:0 0 4 = 01010000 ce399e80 1945041564 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <-------------------@6 ce399e80 1945041564 C Ci:1:001:0 0 4 = 01010000 ce399e80 1945081604 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <-------------------@7 ce399e80 1945081604 C Ci:1:001:0 0 4 = 01010000 ce399e80 1945081665 S Co:1:001:0 s 23 03 0004 0001 0000 0 復位 ce399e80 1945185211 C Co:1:001:0 0 0 ce399e80 1945241546 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <------------------@8 ce399e80 1945241638 C Ci:1:001:0 0 4 = 03051000 ce399800 1945301544 S Co:1:001:0 s 23 01 0014 0001 0000 0 ce399800 1945301635 C Co:1:001:0 0 0 ce399800 1945301696 S Ci:1:000:0 s 80 06 0100 0000 0040 64 < 獲取裝置描述符 ce399800 1945302276 C Ci:1:000:0 0 18 = 12011002 00000040 0c090010 00110102 0301 ce399800 1945302368 S Co:1:001:0 s 23 03 0004 0001 0000 0 再次復位 後面是跟外設U盤打交道的log, 放在下一節講
@1的a3(1010 0011):表示裝置到主機, 是class且other, 說明不是標準的請求(請求有上面4中), 獲取的是GET_STATUS DEVICE, 說明這是讀取地址為1端點為0的root hub裝置的狀態, 也可以參考Linux程式碼:
port_event() -> hub_port_status(hub, port1, &portstatus, &portchange) -> get_port_status(): /* #define USB_STS_TIMEOUT 1000 * #define USB_STS_RETRIES 5 * #define USB_REQ_GET_STATUS 0x00 * #define USB_DIR_IN 0x80 /* to host */ * #define USB_RT_PORT (USB_TYPE_CLASS | USB_RECIP_OTHER) * #define USB_TYPE_CLASS (0x01 << 5) * #define USB_RECIP_OTHER 0x03 */ static int get_port_status(struct usb_device *hdev, int port1, struct usb_port_status *data) { int i, status = -ETIMEDOUT; for (i = 0; i < USB_STS_RETRIES && (status == -ETIMEDOUT || status == -EPIPE); i++) { status = usb_control_msg(hdev, usb_rcvctrlpipe(hdev, 0), USB_REQ_GET_STATUS, USB_DIR_IN | USB_RT_PORT, 0, port1, data, sizeof(*data), USB_STS_TIMEOUT); } return status; } struct usb_port_status { __le16 wPortStatus; __le16 wPortChange; } __attribute__ ((packed)); 最後 portstatus = 0101 portchange = 0100; /* * wPortStatus bit field * See USB 2.0 spec Table 11-21 */ #define USB_PORT_STAT_CONNECTION 0x0001 #define USB_PORT_STAT_ENABLE 0x0002 #define USB_PORT_STAT_SUSPEND 0x0004 #define USB_PORT_STAT_OVERCURRENT 0x0008 #define USB_PORT_STAT_RESET 0x0010 #define USB_PORT_STAT_L1 0x0020 /* bits 6 to 7 are reserved */ #define USB_PORT_STAT_POWER 0x0100 #define USB_PORT_STAT_LOW_SPEED 0x0200 #define USB_PORT_STAT_HIGH_SPEED 0x0400 #define USB_PORT_STAT_TEST 0x0800 #define USB_PORT_STAT_INDICATOR 0x1000 /* bits 13 to 15 are reserved */ #define USB_PORT_STAT_C_CONNECTION 0x0001 #define USB_PORT_STAT_C_ENABLE 0x0002 #define USB_PORT_STAT_C_SUSPEND 0x0004 #define USB_PORT_STAT_C_OVERCURRENT 0x0008 #define USB_PORT_STAT_C_RESET 0x0010 #define USB_PORT_STAT_C_L1 0x0020
從返回的四個位元組01010100可以看出port狀態已經連線了, 但是還是suspend狀態, 我們接著看@2的(23 01 0010 0001 0000) 這是個清除hub暫存器操作,
@3~@7五次都是(a3 00 0000 0001 0004) =讀取狀態0101 0000剛好是程式碼定義try的次數 #define USB_STS_RETRIES 5 , 既然沒有新的狀態, 所以Host傳送了第一次的復位操作reset
port_event() -> hub_port_status(hub, port1, &portstatus, &portchange) ..................... -> hub_port_warm_reset_required(hub, port1, portstatus) -> hub_port_reset() -> set_port_feature(hub->hdev, port1, (warm ? USB_PORT_FEAT_BH_PORT_RESET : USB_PORT_FEAT_RESET)); -> hub_port_wait_reset() -> hub_port_status()
-> hub_port_connect_change(hub, port1, portstatus, portchange);
-> hub_port_connect()
-> usb_alloc_dev() //建立裝置
-> hub_port_init() //獲取裝置描述符的等各種描述符(注意介面描述符/端點描述符不能單獨獲取必須跟隨配置描述符一塊獲取,所以第一次先獲取9位元組的配置描述符, 解析後續還有多少再次獲取)
-> usb_new_device() //註冊, 然後會跟usb_generic_driver 進行match 然後再建立真正的執行單元 interface! 後續博文會講解
總之, 裝置的插入事件是又hub檢測到的, Host通過中斷控制傳輸定期獲取各個hub的狀態, 當檢測到有裝置connect, 則呼叫hub_port_connect_change() 建立裝置、填充各種描述符、註冊裝置,
在註冊之前hub會設定這個usb_device裡的parent指標為本hub, port為插入的port號, 並且分配唯一地址給外設, 更多具體的我們在後面分析hub時再講解。
還有個遺漏的細節, 就是Host通過hub獲得事件, 那為什麼裝置插入hub, hub就知道呢? 其實就是改變D+/D-的狀態, 我們放到裝置插入中解釋。
二、裝置插入中
hub的port口D+/D-在預設狀態下下拉15kΩ的電阻, 懸空狀態電平都為0。 而USB裝置在D+或D-上拉一個1.5kΩ的電阻到VBUS, 這也是為何USB介面四根線VBUS和GND比D+/D-長的原因,
如果是FS裝置, 上拉電阻接到D+, 插入port分壓後D+為高電平, hub認為是FS裝置; 如果是LS, 上拉電阻接到D-, 插入port分壓後D-為高電平, hub認為是LS裝置, 那怎麼區分HS裝置呢?
目前的做法是HS也是將1.5k的上拉電阻接在D+處, 所以前期HS/FS的表現是一樣的, hub不區分是FS還是HS, 都先當做FS裝置, 在後面一點, Host會對裝置復位, 也即D+/D- 都為0且持續10ms以上,
而這個期間, 如果是高速裝置, 會在D-灌入17.78mA電流(裝置D+上的1.5k電阻還未撤銷), 在hub端會形成45歐姆的等效終端電阻, 導致D-變成電平17.78*45=800mv電平, 且持續1~7ms,
如果hub是支援高速的話, 在復位期間就會自動檢測D-有沒有這800mv電平, 如果沒有則說明外設不是高速的, 如果有持續的800mv的話, 等外設停止驅動D-的17.78mA的100us內, hub也使用自己的電流源
交叉驅動D+/D-形成KJKJKJ...波形,同時將自己內部電路切換到高速模式(hub硬體無法同時支援高速和全速/低速, 靠一個開關切換到哪一路), 裝置停止驅動D-後會檢測是否有KJ訊號, 如果有說明hub是支援
高速的然後自己也切換到高速模式, 切換的具體表現有:斷掉1.5K的上拉電阻; 連線新的等效終端電阻;硬體切換到高速模式。 由於新的等效終端電阻是原來的一半22.5歐姆, 所以hub發出的KJKJKJ...波形的
電平變成從原來的800mv變成400mv了, 至此高速握手協商結束。總之在握手協商期間任何一方沒有給出該有的響應(裝置持續灌電流到D- 800mv、hub交叉灌D+/D-), 則使用預設的全速。
當然我們這有個前提就是Host也是支援高速的, 否則Host在與hub握手時就會禁止hub的高速能力, 後面自然不會響應高速外設的800mv(即不會傳送KJKJKJ...), 其波形如下:
三、裝置插入後
插入後做如下:
a. 獲取各種描述符(裝置描述符、配置描述符、字串描述符), 豐富struct usb_device結構體的骨骼
b. 與usb_generic_driver match後設定合適的配置描述符, 並建立 具體的裝置(操作物件) struct usb_interface
c. struct usb_interface 與 struct usb_driver match後進行具體驅動後續的初始化和目的操作
更詳細的流程將在後續博文介紹.....
附完整log:
# cat sys/kernel/debug/usb/usbmon/1u 0s 0u 1s 1t 1u ce382380 1944921539 C Ii:1:001:1 0:2048 1 = 02 ce382380 1944921539 S Ii:1:001:1 -115:2048 4 < ce399800 1944921752 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce399800 1944921752 C Ci:1:001:0 0 4 = 01010100 ce399800 1944921783 S Co:1:001:0 s 23 01 0010 0001 0000 0 ce399800 1944921783 C Co:1:001:0 0 0 ce399800 1944921813 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce399800 1944921813 C Ci:1:001:0 0 4 = 01010000 ce399e80 1944961608 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce399e80 1944961608 C Ci:1:001:0 0 4 = 01010000 ce399800 1945001556 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce399800 1945001556 C Ci:1:001:0 0 4 = 01010000 ce399e80 1945041564 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce399e80 1945041564 C Ci:1:001:0 0 4 = 01010000 ce399e80 1945081604 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce399e80 1945081604 C Ci:1:001:0 0 4 = 01010000 ce399e80 1945081665 S Co:1:001:0 s 23 03 0004 0001 0000 0 復位 ce399e80 1945185211 C Co:1:001:0 0 0 ce399e80 1945241546 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce399e80 1945241638 C Ci:1:001:0 0 4 = 03051000 ce399800 1945301544 S Co:1:001:0 s 23 01 0014 0001 0000 0 ce399800 1945301635 C Co:1:001:0 0 0 ce399800 1945301696 S Ci:1:000:0 s 80 06 0100 0000 0040 64 < 獲取裝置描述符 ce399800 1945302276 C Ci:1:000:0 0 18 = 12011002 00000040 0c090010 00110102 0301 ce399800 1945302368 S Co:1:001:0 s 23 03 0004 0001 0000 0 再次復位 ce399800 1945405822 C Co:1:001:0 0 0 ce382380 1945421539 C Ii:1:001:1 0:2048 1 = 02 ce382380 1945421539 S Ii:1:001:1 -115:2048 4 < ce399e80 1945461608 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce399e80 1945461669 C Ci:1:001:0 0 4 = 03051200 ce399800 1945521545 S Co:1:001:0 s 23 01 0014 0001 0000 0 ce399800 1945521636 C Co:1:001:0 0 0 ce399800 1945521697 S Co:1:000:0 s 00 05 0004 0000 0000 0 設定地址 ce399800 1945521972 C Co:1:000:0 0 0 ce399e80 1945541595 S Ci:1:004:0 s 80 06 0100 0000 0012 18 < ce399e80 1945542205 C Ci:1:004:0 0 18 = 12011002 00000040 0c090010 00110102 0301 ce399e80 1945542297 S Ci:1:004:0 s 80 06 0f00 0000 0005 5 < ce399e80 1945542846 C Ci:1:004:0 0 5 = 050f1600 02 ce399e80 1945542938 S Ci:1:004:0 s 80 06 0f00 0000 0016 22 < ce399e80 1945543487 C Ci:1:004:0 0 22 = 050f1600 02071002 02000000 0a100300 0c000204 0400 ce399e80 1945543579 S Ci:1:004:0 s 80 06 0200 0000 0009 9 < ce399e80 1945544097 C Ci:1:004:0 0 9 = 09022000 01010080 96 ce399e80 1945544189 S Ci:1:004:0 s 80 06 0200 0000 0020 32 < ce399e80 1945544738 C Ci:1:004:0 0 32 = 09022000 01010080 96090400 00020806 50000705 01020002 00070582 02000200 ce399800 1945544830 S Ci:1:004:0 s 80 06 0300 0000 00ff 255 < ce399800 1945545410 C Ci:1:004:0 0 4 = 04030904 ce399800 1945545471 S Ci:1:004:0 s 80 06 0302 0409 00ff 255 < ce399800 1945546051 C Ci:1:004:0 0 32 = 20034600 6c006100 73006800 20004400 72006900 76006500 20004600 49005400 ce399800 1945546142 S Ci:1:004:0 s 80 06 0301 0409 00ff 255 < ce399800 1945546691 C Ci:1:004:0 0 16 = 10035300 61006d00 73007500 6e006700 ce399800 1945546752 S Ci:1:004:0 s 80 06 0303 0409 00ff 255 < ce399800 1945547332 C Ci:1:004:0 0 34 = 22033000 33003100 38003300 31003800 30003300 30003000 30003000 31003200 ce399e00 1945548126 S Co:1:004:0 s 00 09 0001 0000 0000 0 ce399e00 1945548889 C Co:1:004:0 0 0 ce399400 1945550048 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce399400 1945550079 C Ci:1:001:0 0 4 = 03050200 ce399400 1945550109 S Co:1:001:0 s 23 01 0011 0001 0000 0 ce399400 1945550109 C Co:1:001:0 0 0 ce399600 1946541564 S Ci:1:004:0 s a1 fe 0000 0000 0001 1 < ce399600 1946542114 C Ci:1:004:0 0 1 = 00 ce399600 1946542449 S Bo:1:004:1 -115 31 = 55534243 01000000 24000000 80000612 00000024 00000000 00000000 000000 ce399600 1946542510 C Bo:1:004:1 0 31 > ce399200 1946542510 S Bi:1:004:2 -115 36 < ce399200 1946760925 C Bi:1:004:2 0 36 = 00800602 1f736d69 53616d73 756e6720 466c6173 68204472 69766520 46495420 ce399600 1946760986 S Bi:1:004:2 -115 13 < ce399600 1946761138 C Bi:1:004:2 0 13 = 55534253 01000000 00000000 00 ce399600 1946762145 S Bo:1:004:1 -115 31 = 55534243 02000000 00000000 00000600 00000000 00000000 00000000 000000 ce399600 1946762207 C Bo:1:004:1 0 31 > ce399600 1946762268 S Bi:1:004:2 -115 13 < ce399600 1946762329 C Bi:1:004:2 0 13 = 55534253 02000000 00000000 00 ce399600 1946762451 S Bo:1:004:1 -115 31 = 55534243 03000000 08000000 80000a25 00000000 00000000 00000000 000000 ce399600 1946762481 C Bo:1:004:1 0 31 > ce39e080 1946762573 S Bi:1:004:2 -115 8 < ce39e080 1946763000 C Bi:1:004:2 0 8 = 03bc3fff 00000200 ce399600 1946763031 S Bi:1:004:2 -115 13 < ce399600 1946763061 C Bi:1:004:2 0 13 = 55534253 03000000 00000000 00 ce399600 1946763305 S Bo:1:004:1 -115 31 = 55534243 04000000 c0000000 8000061a 003f00c0 00000000 00000000 000000 ce399600 1946763336 C Bo:1:004:1 0 31 > ce39e900 1946763397 S Bi:1:004:2 -115 192 < ce39e900 1946763824 C Bi:1:004:2 -121 68 = 43000000 051e0000 103f0200 3fff0000 00000000 00000000 00000000 00000000 ce399600 1946763854 S Bi:1:004:2 -115 13 < ce399600 1946763885 C Bi:1:004:2 0 13 = 55534253 04000000 00000000 00 ce399600 1946764099 S Bo:1:004:1 -115 31 = 55534243 05000000 c0000000 8000061a 003f00c0 00000000 00000000 000000 ce399600 1946764129 C Bo:1:004:1 0 31 > ce39e900 1946764221 S Bi:1:004:2 -115 192 < ce39e900 1946764617 C Bi:1:004:2 -121 68 = 43000000 051e0000 103f0200 3fff0000 00000000 00000000 00000000 00000000 ce399600 1946764678 S Bi:1:004:2 -115 13 < ce399600 1946764678 C Bi:1:004:2 0 13 = 55534253 05000000 00000000 00 ce399600 1946765197 S Bo:1:004:1 -115 31 = 55534243 06000000 00000000 00000600 00000000 00000000 00000000 000000 ce399600 1946765258 C Bo:1:004:1 0 31 > ce399600 1946765319 S Bi:1:004:2 -115 13 < ce399600 1946765350 C Bi:1:004:2 0 13 = 55534253 06000000 00000000 00 ce399600 1946765563 S Bo:1:004:1 -115 31 = 55534243 07000000 00000000 0000061e 00000001 00000000 00000000 000000 ce399600 1946765594 C Bo:1:004:1 0 31 > ce399600 1946765686 S Bi:1:004:2 -115 13 < ce399600 1946766052 C Bi:1:004:2 0 13 = 55534253 07000000 00000000 01 ce399600 1946766082 S Bo:1:004:1 -115 31 = 55534243 08000000 60000000 80000603 00000060 00000000 00000000 000000 ce399600 1946766113 C Bo:1:004:1 0 31 > ce39e900 1946766204 S Bi:1:004:2 -115 96 < ce39e900 1946766632 C Bi:1:004:2 0 96 = 70000500 0000000a 00000000 20000000 00000000 00000000 00000000 00000000 ce399600 1946766662 S Bi:1:004:2 -115 13 < ce399600 1946766693 C Bi:1:004:2 0 13 = 55534253 08000000 00000000 00 ce399600 1946766906 S Bo:1:004:1 -115 31 = 55534243 09000000 00000000 00000600 00000000 00000000 00000000 000000 ce399600 1946766937 C Bo:1:004:1 0 31 > ce399600 1946767028 S Bi:1:004:2 -115 13 < ce399600 1946767059 C Bi:1:004:2 0 13 = 55534253 09000000 00000000 00 ce399600 1946767272 S Bo:1:004:1 -115 31 = 55534243 0a000000 08000000 80000a25 00000000 00000000 00000000 000000 ce399600 1946767303 C Bo:1:004:1 0 31 > ce39e900 1946767395 S Bi:1:004:2 -115 8 < ce39e900 1946767791 C Bi:1:004:2 0 8 = 03bc3fff 00000200 ce399600 1946767822 S Bi:1:004:2 -115 13 < ce399600 1946767852 C Bi:1:004:2 0 13 = 55534253 0a000000 00000000 00 ce399600 1946768066 S Bo:1:004:1 -115 31 = 55534243 0b000000 c0000000 8000061a 003f00c0 00000000 00000000 000000 ce399600 1946768096 C Bo:1:004:1 0 31 > ce39e900 1946768188 S Bi:1:004:2 -115 192 < ce39e900 1946768585 C Bi:1:004:2 -121 68 = 43000000 051e0000 103f0200 3fff0000 00000000 00000000 00000000 00000000 ce399600 1946768615 S Bi:1:004:2 -115 13 < ce399600 1946768646 C Bi:1:004:2 0 13 = 55534253 0b000000 00000000 00 ce399600 1946768859 S Bo:1:004:1 -115 31 = 55534243 0c000000 c0000000 8000061a 003f00c0 00000000 00000000 000000 ce399600 1946768890 C Bo:1:004:1 0 31 > ce39e900 1946768981 S Bi:1:004:2 -115 192 < ce39e900 1946769378 C Bi:1:004:2 -121 68 = 43000000 051e0000 103f0200 3fff0000 00000000 00000000 00000000 00000000 ce399600 1946769409 S Bi:1:004:2 -115 13 < ce399600 1946769439 C Bi:1:004:2 0 13 = 55534253 0c000000 00000000 00 ce399600 1946769744 S Bo:1:004:1 -115 31 = 55534243 0d000000 00100000 80000a28 00000000 00000008 00000000 000000 ce399600 1946769775 C Bo:1:004:1 0 31 > ce39e900 1946769836 S Bi:1:004:2 -115 4096 < ce39e900 1946771026 C Bi:1:004:2 0 4096 = eb5e0000 00000000 00000000 00000000 02000000 00000000 3f00ff00 00000000 ce399600 1946771087 S Bi:1:004:2 -115 13 < ce399600 1946771118 C Bi:1:004:2 0 13 = 55534253 0d000000 00000000 00 ce399600 1946771972 S Bo:1:004:1 -115 31 = 55534243 0e000000 00000000 00000600 00000000 00000000 00000000 000000 ce399600 1946772033 C Bo:1:004:1 0 31 > ce399600 1946772033 S Bi:1:004:2 -115 13 < ce399600 1946772155 C Bi:1:004:2 0 13 = 55534253 0e000000 00000000 00 ce399600 1946772216 S Bo:1:004:1 -115 31 = 55534243 0f000000 00000000 00000600 00000000 00000000 00000000 000000 ce399600 1946772247 C Bo:1:004:1 0 31 > ce399600 1946772277 S Bi:1:004:2 -115 13 < ce399600 1946772308 C Bi:1:004:2 0 13 = 55534253 0f000000 00000000 00 ce399600 1946772430 S Bo:1:004:1 -115 31 = 55534243 10000000 08000000 80000a25 00000000 00000000 00000000 000000 ce399600 1946772460 C Bo:1:004:1 0 31 > ce392c80 1946772460 S Bi:1:004:2 -115 8 < ce392c80 1946772949 C Bi:1:004:2 0 8 = 03bc3fff 00000200 ce399600 1946772979 S Bi:1:004:2 -115 13 < ce399600 1946773010 C Bi:1:004:2 0 13 = 55534253 10000000 00000000 00 ce399600 1946773132 S Bo:1:004:1 -115 31 = 55534243 11000000 c0000000 8000061a 003f00c0 00000000 00000000 000000 ce399600 1946773162 C Bo:1:004:1 0 31 > ce392c80 1946773193 S Bi:1:004:2 -115 192 < ce392c80 1946773651 C Bi:1:004:2 -121 68 = 43000000 051e0000 103f0200 3fff0000 00000000 00000000 00000000 00000000 ce399600 1946773681 S Bi:1:004:2 -115 13 < ce399600 1946773712 C Bi:1:004:2 0 13 = 55534253 11000000 00000000 00 ce399600 1946773834 S Bo:1:004:1 -115 31 = 55534243 12000000 c0000000 8000061a 003f00c0 00000000 00000000 000000 ce399600 1946773864 C Bo:1:004:1 0 31 > ce392c80 1946773864 S Bi:1:004:2 -115 192 < ce392c80 1946774353 C Bi:1:004:2 -121 68 = 43000000 051e0000 103f0200 3fff0000 00000000 00000000 00000000 00000000 ce399600 1946774383 S Bi:1:004:2 -115 13 < ce399600 1946774414 C Bi:1:004:2 0 13 = 55534253 12000000 00000000 00 拔掉U盤...... ce382380 2068171539 C Ii:1:001:1 0:2048 1 = 02 ce382380 2068171539 S Ii:1:001:1 -115:2048 4 < ce392e00 2068171752 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392e00 2068171752 C Ci:1:001:0 0 4 = 00000300 ce392e00 2068171783 S Co:1:001:0 s 23 01 0010 0001 0000 0 ce392e00 2068171783 C Co:1:001:0 0 0 ce392e00 2068171783 S Co:1:001:0 s 23 01 0011 0001 0000 0 ce392e00 2068171783 C Co:1:001:0 0 0 ce392e00 2068175231 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392e00 2068175292 C Ci:1:001:0 0 4 = 00000000 ce392b00 2068211547 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068211639 C Ci:1:001:0 0 4 = 00000000 ce392b00 2068251617 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068251708 C Ci:1:001:0 0 4 = 00000000 ce392b00 2068291564 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068291656 C Ci:1:001:0 0 4 = 00000000 ce392b00 2068331542 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068331604 C Ci:1:001:0 0 4 = 00000000 ce392b00 2068331695 S Co:1:001:0 s 23 03 0008 0001 0000 0 ce392b00 2068331756 C Co:1:001:0 0 0 ce382380 2068331848 C Ii:1:001:1 -2:2048 0 ce392b00 2068331909 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068331909 C Ci:1:001:0 0 4 = 00000000 ce382380 2068331909 S Ii:1:001:1 -115:2048 4 < ce382380 2068332092 C Ii:1:001:1 -2:2048 0 ce392b00 2068332153 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068332153 C Ci:1:001:0 0 4 = 00000000 ce382380 2068332153 S Ii:1:001:1 -115:2048 4 < ce382380 2068332305 C Ii:1:001:1 -2:2048 0 ce392b00 2068332366 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068332397 C Ci:1:001:0 0 4 = 00000000 ce382380 2068332397 S Ii:1:001:1 -115:2048 4 < ce382380 2068332550 C Ii:1:001:1 -2:2048 0 ce392b00 2068332611 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068332611 C Ci:1:001:0 0 4 = 00000000 ce382380 2068332611 S Ii:1:001:1 -115:2048 4 < ce382380 2068332794 C Ii:1:001:1 -2:2048 0 ce392b00 2068332824 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068332855 C Ci:1:001:0 0 4 = 00000000 ce382380 2068332855 S Ii:1:001:1 -115:2048 4 < ce382380 2068333007 C Ii:1:001:1 -2:2048 0 ce392b00 2068333068 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068333068 C Ci:1:001:0 0 4 = 00000000 ce382380 2068333068 S Ii:1:001:1 -115:2048 4 < ce382380 2068333251 C Ii:1:001:1 -2:2048 0 ce392b00 2068333282 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068333312 C Ci:1:001:0 0 4 = 00000000 ce382380 2068333312 S Ii:1:001:1 -115:2048 4 < ce382380 2068333465 C Ii:1:001:1 -2:2048 0 ce392b00 2068333526 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068333526 C Ci:1:001:0 0 4 = 00000000 ce382380 2068333526 S Ii:1:001:1 -115:2048 4 < ce382380 2068333709 C Ii:1:001:1 -2:2048 0 ce392b00 2068333740 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068333770 C Ci:1:001:0 0 4 = 00000000 ce382380 2068333770 S Ii:1:001:1 -115:2048 4 < ce382380 2068333923 C Ii:1:001:1 -2:2048 0 ce392b00 2068333984 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068333984 C Ci:1:001:0 0 4 = 00000000 ce382380 2068333984 S Ii:1:001:1 -115:2048 4 < ce382380 2068334167 C Ii:1:001:1 -2:2048 0 ce392b00 2068334197 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068334228 C Ci:1:001:0 0 4 = 00000000 ce382380 2068334228 S Ii:1:001:1 -115:2048 4 < ce382380 2068334381 C Ii:1:001:1 -2:2048 0 ce392b00 2068334442 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068334442 C Ci:1:001:0 0 4 = 00000000 ce382380 2068334442 S Ii:1:001:1 -115:2048 4 < ce382380 2068334625 C Ii:1:001:1 -2:2048 0 ce392b00 2068334686 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068334686 C Ci:1:001:0 0 4 = 00000000 ce382380 2068334686 S Ii:1:001:1 -115:2048 4 < ce382380 2068334869 C Ii:1:001:1 -2:2048 0 ce392b00 2068334930 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068334930 C Ci:1:001:0 0 4 = 00000000 ce382380 2068334930 S Ii:1:001:1 -115:2048 4 < ce382380 2068335113 C Ii:1:001:1 -2:2048 0 ce392b00 2068335144 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068335174 C Ci:1:001:0 0 4 = 00000000 ce382380 2068335174 S Ii:1:001:1 -115:2048 4 < ce382380 2068335357 C Ii:1:001:1 -2:2048 0 ce392b00 2068335418 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068335418 C Ci:1:001:0 0 4 = 00000000 ce382380 2068335418 S Ii:1:001:1 -115:2048 4 < ce382380 2068335601 C Ii:1:001:1 -2:2048 0 ce392b00 2068335662 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068335662 C Ci:1:001:0 0 4 = 00000000 ce382380 2068335662 S Ii:1:001:1 -115:2048 4 < ce382380 2068335815 C Ii:1:001:1 -2:2048 0 ce392b00 2068335876 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068335876 C Ci:1:001:0 0 4 = 00000000 ce382380 2068335906 S Ii:1:001:1 -115:2048 4 < ce382380 2068336059 C Ii:1:001:1 -2:2048 0 ce392b00 2068336120 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068336120 C Ci:1:001:0 0 4 = 00000000 ce382380 2068336120 S Ii:1:001:1 -115:2048 4 < ce382380 2068336303 C Ii:1:001:1 -2:2048 0 ce392b00 2068336364 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068336364 C Ci:1:001:0 0 4 = 00000000 ce382380 2068336364 S Ii:1:001:1 -115:2048 4 < ce382380 2068336547 C Ii:1:001:1 -2:2048 0 ce392b00 2068336578 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068336608 C Ci:1:001:0 0 4 = 00000000 ce382380 2068336608 S Ii:1:001:1 -115:2048 4 < ce382380 2068336700 C Ii:1:001:1 -2:2048 0 ce392b00 2068336761 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068336761 C Ci:1:001:0 0 4 = 00000000 ce382380 2068336761 S Ii:1:001:1 -115:2048 4 < ce382380 2068336853 C Ii:1:001:1 -2:2048 0 ce392b00 2068336914 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068336914 C Ci:1:001:0 0 4 = 00000000 ce382380 2068336914 S Ii:1:001:1 -115:2048 4 < ce382380 2068336975 C Ii:1:001:1 -2:2048 0 ce392b00 2068337036 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068337036 C Ci:1:001:0 0 4 = 00000000 ce382380 2068337036 S Ii:1:001:1 -115:2048 4 < ce382380 2068337127 C Ii:1:001:1 -2:2048 0 ce392b00 2068337188 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068337188 C Ci:1:001:0 0 4 = 00000000 ce382380 2068337188 S Ii:1:001:1 -115:2048 4 < ce382380 2068337280 C Ii:1:001:1 -2:2048 0 ce392b00 2068337310 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068337310 C Ci:1:001:0 0 4 = 00000000 ce382380 2068337341 S Ii:1:001:1 -115:2048 4 < ce382380 2068337402 C Ii:1:001:1 -2:2048 0 ce392b00 2068337463 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068337463 C Ci:1:001:0 0 4 = 00000000 ce382380 2068337463 S Ii:1:001:1 -115:2048 4 < ce382380 2068337554 C Ii:1:001:1 -2:2048 0 ce392b00 2068337615 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068337615 C Ci:1:001:0 0 4 = 00000000 ce382380 2068337615 S Ii:1:001:1 -115:2048 4 < ce382380 2068337677 C Ii:1:001:1 -2:2048 0 ce392b00 2068337738 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068337738 C Ci:1:001:0 0 4 = 00000000 ce382380 2068337738 S Ii:1:001:1 -115:2048 4 < ce382380 2068337829 C Ii:1:001:1 -2:2048 0 ce392b00 2068337890 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068337890 C Ci:1:001:0 0 4 = 00000000 ce382380 2068337890 S Ii:1:001:1 -115:2048 4 < ce382380 2068337951 C Ii:1:001:1 -2:2048 0 ce392b00 2068338012 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068338012 C Ci:1:001:0 0 4 = 00000000 ce382380 2068338012 S Ii:1:001:1 -115:2048 4 < ce382380 2068338104 C Ii:1:001:1 -2:2048 0 ce392b00 2068338165 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068338165 C Ci:1:001:0 0 4 = 00000000 ce382380 2068338165 S Ii:1:001:1 -115:2048 4 < ce382380 2068338256 C Ii:1:001:1 -2:2048 0 ce392b00 2068338287 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068338287 C Ci:1:001:0 0 4 = 00000000 ce382380 2068338317 S Ii:1:001:1 -115:2048 4 < ce382380 2068338378 C Ii:1:001:1 -2:2048 0 ce392b00 2068338439 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068338439 C Ci:1:001:0 0 4 = 00000000 ce382380 2068338439 S Ii:1:001:1 -115:2048 4 < ce382380 2068338531 C Ii:1:001:1 -2:2048 0 ce392b00 2068338562 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068338592 C Ci:1:001:0 0 4 = 00000000 ce382380 2068338592 S Ii:1:001:1 -115:2048 4 < ce382380 2068338653 C Ii:1:001:1 -2:2048 0 ce392b00 2068338714 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068338714 C Ci:1:001:0 0 4 = 00000000 ce382380 2068338714 S Ii:1:001:1 -115:2048 4 < ce382380 2068338806 C Ii:1:001:1 -2:2048 0 ce392b00 2068338867 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068338867 C Ci:1:001:0 0 4 = 00000000 ce382380 2068338867 S Ii:1:001:1 -115:2048 4 < ce382380 2068338928 C Ii:1:001:1 -2:2048 0 ce392b00 2068338989 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068338989 C Ci:1:001:0 0 4 = 00000000 ce382380 2068338989 S Ii:1:001:1 -115:2048 4 < ce382380 2068339080 C Ii:1:001:1 -2:2048 0 ce392b00 2068339141 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068339141 C Ci:1:001:0 0 4 = 00000000 ce382380 2068339141 S Ii:1:001:1 -115:2048 4 < ce382380 2068339233 C Ii:1:001:1 -2:2048 0 ce392b00 2068339263 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068339294 C Ci:1:001:0 0 4 = 00000000 ce382380 2068339294 S Ii:1:001:1 -115:2048 4 < ce382380 2068339355 C Ii:1:001:1 -2:2048 0 ce392b00 2068339416 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068339416 C Ci:1:001:0 0 4 = 00000000 ce382380 2068339416 S Ii:1:001:1 -115:2048 4 < ce382380 2068339508 C Ii:1:001:1 -2:2048 0 ce392b00 2068339569 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068339569 C Ci:1:001:0 0 4 = 00000000 ce382380 2068339569 S Ii:1:001:1 -115:2048 4 < ce382380 2068339630 C Ii:1:001:1 -2:2048 0 ce392b00 2068339691 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068339691 C Ci:1:001:0 0 4 = 00000000 ce382380 2068339691 S Ii:1:001:1 -115:2048 4 < ce382380 2068339782 C Ii:1:001:1 -2:2048 0 ce392b00 2068339843 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068339843 C Ci:1:001:0 0 4 = 00000000 ce382380 2068339843 S Ii:1:001:1 -115:2048 4 < ce382380 2068339935 C Ii:1:001:1 -2:2048 0 ce392b00 2068339965 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068339965 C Ci:1:001:0 0 4 = 00000000 ce382380 2068339996 S Ii:1:001:1 -115:2048 4 < ce382380 2068340057 C Ii:1:001:1 -2:2048 0 ce392b00 2068340179 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ce392b00 2068340179 C Ci:1:001:0 0 4 = 00000000 ce382380 2068340179 S Ii:1:001:1 -115:2048 4 < ce382380 2068340270 C Ii:1:001:1 -2:2048 0 ce392b00 2068340301 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <