亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

PCI9054數(shù)據(jù)采集卡驅(qū)動(dòng)從XP到Win7的移植實(shí)踐與排錯(cuò)指南

PCI9054數(shù)據(jù)采集卡驅(qū)動(dòng)從XP到Win7的移植實(shí)踐與排錯(cuò)指南 1. 為什么一塊PCI9054老卡還在往Win7上搬手里還壓著一批PCI9054的數(shù)據(jù)采集卡上位機(jī)軟件和后臺(tái)數(shù)據(jù)庫卻非要往Windows 7上遷——這個(gè)場景我相信做工業(yè)設(shè)備的老工程師都不陌生。PCI9054這顆PCI橋芯片本身不復(fù)雜麻煩在它服役的那個(gè)年代配套的PCI9x5x驅(qū)動(dòng)工程還是靠著XP/2003的WDM技術(shù)棧在跑。系統(tǒng)一換設(shè)備管理器里立刻冒出一堆“PCI Device”未知設(shè)備廠商技術(shù)支持早就斷檔給的驅(qū)動(dòng)光盤還停留在32位時(shí)代。我這邊當(dāng)時(shí)接到的需求很直白板卡硬件不動(dòng)上位機(jī)采集程序盡量不改只要讓板卡在Win732位和64位都得覆蓋下穩(wěn)定跑起來。拿到原廠SDK翻了半天才發(fā)現(xiàn)所謂“PCI9x5x驅(qū)動(dòng)”其實(shí)是覆蓋9050/9052/9054/9056這一整個(gè)905x系列的原廠驅(qū)動(dòng)框架包含設(shè)備驅(qū)動(dòng)sys文件、應(yīng)用層API動(dòng)態(tài)庫和配置工具三塊。也就是說我們真正要?jiǎng)拥闹皇堑讓幽且粋€(gè)驅(qū)動(dòng)工程上層調(diào)用接口基本不用碰。動(dòng)手之前先算一筆賬到底走哪條路劃算。我把當(dāng)時(shí)列的方案對照表留在這兒很多團(tuán)隊(duì)卡在第一步就是因?yàn)檫x錯(cuò)了方向遷移路線硬件投入開發(fā)周期技術(shù)風(fēng)險(xiǎn)上位機(jī)改動(dòng)量換新一代PCIe采集卡高單卡數(shù)千元2-3周低但工程改造大大接口和寄存器全變虛擬機(jī)XPPCI直通零1周高實(shí)時(shí)性和直通兼容差無但性能損失明顯移植原廠PCI9x5x驅(qū)動(dòng)零3-4周中集中在驅(qū)動(dòng)層幾乎為零完全重新寫一個(gè)WDM驅(qū)動(dòng)零8周以上高DMA和中斷全要自己調(diào)需要封裝新API最后我們選了第三條路基于原廠SDK做驅(qū)動(dòng)移植。原因很樸素——9054的本地總線時(shí)序、EEPROM配置、DMA描述符這塊邏輯已經(jīng)在原廠驅(qū)動(dòng)里驗(yàn)證過一輪我們重新發(fā)明的意義不大。真正要解決的是讓它能在Win7的PnP、電源管理和64位尋址規(guī)則下活下來。選擇這條路還有一個(gè)隱藏前提得先確認(rèn)減壓帽EEPROM的配置還健康。9054的上電配置全靠EEPROM我用的是93CS56如果板子上的EEPROM配置損壞或者被刷成了Unknown模式后續(xù)驅(qū)動(dòng)就算移植成功板卡資源也映射不對。所以開工第一步建議先接上原廠監(jiān)控軟件讀一遍BAR地址和本地寄存器配置確認(rèn)硬件層沒丟東西再談驅(qū)動(dòng)代碼。2. PCI9x5x驅(qū)動(dòng)工程內(nèi)部結(jié)構(gòu)拆解拿到原廠SDK之后別急著改代碼先把目錄結(jié)構(gòu)吃透。整個(gè)PCI9x5x驅(qū)動(dòng)工程雖然名字帶“驅(qū)動(dòng)”但里面其實(shí)是三個(gè)層次的東西內(nèi)核驅(qū)動(dòng)層編譯出來就是sys文件負(fù)責(zé)枚舉PCI設(shè)備、處理IRP、做物理地址映射、管理DMA和中斷。這一層是移植的主戰(zhàn)場。API封裝層編譯成DLL把DeviceIoControl的細(xì)節(jié)封裝成類似P9054_Open、P9054_ReadBlock這種函數(shù)。上層硬件工程師基本都在這個(gè)層面寫代碼只要DLL的導(dǎo)出函數(shù)名不變上位機(jī)程序可以原封不動(dòng)繼續(xù)用。配置工具層讀寫EEPROM、查看PCI配置空間和本地寄存器。這東西和驅(qū)動(dòng)行為強(qiáng)相關(guān)后期排查問題的時(shí)候離不開它。理解這個(gè)三層結(jié)構(gòu)很重要因?yàn)槟愫苋菀讜?huì)被“原廠驅(qū)動(dòng)沒法在Win7用”這句話誤導(dǎo)以為整包都要重寫。我在實(shí)際項(xiàng)目里的判斷是DLL和應(yīng)用層只要沒有用到XP特有的API比如老版本DirectX、Win7不兼容的CreateFile參數(shù)調(diào)用幾乎不用改核心沉在內(nèi)核驅(qū)動(dòng)對IRP_MJ_PNP、IRP_MJ_DEVICE_CONTROL和中斷DMA的處理邏輯上。打開原廠驅(qū)動(dòng)工程WDM框架的骨架其實(shí)還挺規(guī)整NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { // 注冊各個(gè)分發(fā)例程 DriverObject-MajorFunction[IRP_MJ_CREATE] P905xCreate; DriverObject-MajorFunction[IRP_MJ_CLOSE] P905xClose; DriverObject-MajorFunction[IRP_MJ_DEVICE_CONTROL] P905xDeviceControl; DriverObject-MajorFunction[IRP_MJ_PNP] P905xDispatchPnp; DriverObject-MajorFunction[IRP_MJ_READ] P905xDispatchRead; DriverObject-DriverUnload P905xUnload; return STATUS_SUCCESS; }注意PCI9x5x這個(gè)系列驅(qū)動(dòng)比較特別它把905x多個(gè)芯片的差異收在了同一個(gè)sys里通過PCI配置空間的DeviceID判斷具體是9054還是9056。這個(gè)做法移植時(shí)反而省事——只要板卡的硬件ID寫在INF里驅(qū)動(dòng)加載時(shí)能夠走到AddDevice硬件類型是自己識(shí)別出來的。硬件寄存器映射上PCI9054對外的BAR分工也需要提前記牢BAR0PCI配置寄存器包括PCI命令、狀態(tài)、中斷BAR1本地配置寄存器Local Configuration RegistersLCRBAR2、BAR3本地總線映射空間取決于Local Bus設(shè)置為Memory還是IO空間驅(qū)動(dòng)在StartDevice階段做的最重要一件事就是把BAR1物理地址通過MmMapIoSpace映射成虛擬地址然后后續(xù)所有9054內(nèi)部控制字的讀寫都在這個(gè)窗口上操作。如果這一步?jīng)]做好代碼編譯再干凈也無濟(jì)于事——寫入LCR會(huì)直接掉進(jìn)無效地址。原廠驅(qū)動(dòng)另一層隱含邏輯是“中斷共享的兼容”。9054的INTAn#掛在PCI INTA上很多老工控機(jī)上會(huì)和網(wǎng)卡、USB控制器共享中斷。原廠驅(qū)動(dòng)ISR最開始就是讀LINT_STATUS寄存器判斷是否屬于自己的中斷再?zèng)Q定要不要返回FALSE交給下一個(gè)ISR。這個(gè)機(jī)制在Win7下依然成立但DPC執(zhí)行要求更嚴(yán)等講到中斷改造的時(shí)候細(xì)說。3. Win7移植必須先過的編譯和簽名關(guān)口3.1 工具鏈WDK版本不是越高越好Win7時(shí)代的驅(qū)動(dòng)開發(fā)不像現(xiàn)在有一套完整的VSWDK全家桶當(dāng)年最常見的搭配是WDK 7600 Visual Studio 2008/2010。我試過用新版WDK去編譯老工程結(jié)果一堆DEPRECATED函數(shù)警告直接變成錯(cuò)誤wpp預(yù)處理宏的行為也變了平白無故給自己加阻力。所以第一原則就是老驅(qū)動(dòng)代碼盡量用和它年代匹配的WDK版本。編譯環(huán)境建議直接開WDK自帶的Build Environments窗口我用的是x64 Checked Build帶調(diào)試信息方便后面WinDbg分析。進(jìn)入源碼目錄執(zhí)行build -cZ這條命令的意思是清理之前的編譯輸出然后重新編譯生成文件的默認(rèn)路徑在SDK目錄下。編譯過程中如果你看到類似“C4996: deprecated”的警告大概率是某個(gè)內(nèi)核API在Win7里被標(biāo)成過時(shí)了。比如XP時(shí)代很多人喜歡用KeMaximizeProcessorCount但Win7引入了KeGetCurrentProcessorNumberEx這類新接口老代碼倒是能跑就是警告刷屏。我當(dāng)時(shí)的處理策略是不影響功能的警告全部保留只在絕對必要的地方做替換移植階段的工程紀(jì)律是“改動(dòng)越小越好”。還有一個(gè)細(xì)節(jié)sys文件的目標(biāo)名要確認(rèn)清楚。原廠工程打包出來的可能是P905x.sys或者PLX905x.sys而INF里對應(yīng)拷貝文件名必須一致大小寫雖然不敏感但別混用。前幾年見過一個(gè)同事把CopyFiles段寫成了拷給warehname.sys結(jié)果設(shè)備管理器里驅(qū)動(dòng)永遠(yuǎn)加載不進(jìn)去折騰了整一下午。3.2 INF文件x86和x64必須分開寫很多老INF只有XP/2000的節(jié)在Win7上裝不上或者裝了不生效問題大多出在INF的結(jié)構(gòu)上。Win7下載驅(qū)動(dòng)必須明確告訴系統(tǒng)你支持的是NTamd64還是NTx86如果Manufacturer節(jié)只寫了一個(gè)NT系統(tǒng)根本不認(rèn)。我整理的INF關(guān)鍵節(jié)結(jié)構(gòu)如下[Version] Signature $WINDOWS NT$ Class Unknown ClassGuid {4d36e97e-e325-11ce-bfc1-08002be10318} Provider %ProviderName% DriverVer 05/12/2013,6.1.7600.1 [Manufacturer] %ProviderName% DeviceList, NTamd64 [DeviceList.NTamd64] PCI\VEN_10B5DEV_9054SUBSYS_11223344REV_01 P905x_Driver, PCI\VEN_10B5DEV_9054 [P905x_Driver.NTamd64] CopyFiles P905x_CopyFiles [P905x_CopyFiles] p905xload.sys p905xapi.dll ...兩個(gè)容易忽視的點(diǎn)第一DriverVer的日期必須比Win7發(fā)布晚否則系統(tǒng)會(huì)認(rèn)為驅(qū)動(dòng)比系統(tǒng)自帶版本還老而拒絕優(yōu)先選擇第二x86版的節(jié)必須是DeviceList.NTx86、P905x_Driver.NTx86注意別圖省事只留一個(gè)NTamd64否則32位機(jī)器上永遠(yuǎn)報(bào)Code 10。如果硬件設(shè)備ID里的SUBSYS每個(gè)批次不一樣INF里最好把不帶SUBSYS的通配ID也寫上保持兼容面寬一些。3.3 驅(qū)動(dòng)簽名Win7 x64繞不過去的攔路虎在Win7 32位系統(tǒng)上驅(qū)動(dòng)沒簽名只是彈個(gè)警告點(diǎn)繼續(xù)還能用換成x64位系統(tǒng)沒有有效簽名的內(nèi)核驅(qū)動(dòng)會(huì)被直接拉黑這不是驅(qū)動(dòng)代碼寫得干不干凈的問題是加載策略在系統(tǒng)層面就禁止了。開發(fā)調(diào)試階段最省事的辦法是開啟系統(tǒng)的測試簽名模式bcdedit /set testsigning on然后在測試證書環(huán)境中用makecert做一個(gè)自簽名證書這里是示意流程不是生產(chǎn)方案makecert -r -pe -ss PrivateCertStore -n CNMyCompanyTestCert MyCompanyTest.cer inf2cat /driver:. /os:7_X64 /v signtool sign /v /s PrivateCertStore /n MyCompanyTestCert /t http://timestamp.digicert.com p905x.sys注意這個(gè)測試簽名方案只能在開發(fā)機(jī)上用機(jī)器重啟后testsigning如果被重置有些安全U盤和加固軟件會(huì)主動(dòng)關(guān)掉驅(qū)動(dòng)又會(huì)回到無法加載的狀態(tài)。正式交付時(shí)必須購買第三方內(nèi)核代碼簽名證書或者走WHQL認(rèn)證。有些項(xiàng)目工期緊直接拿去測試結(jié)果客戶現(xiàn)場一插卡就Code 56多半就是簽名問題。順手記一下區(qū)分方法設(shè)備管理器里設(shè)備圖標(biāo)正常但黃嘆號(hào)屬性說“此設(shè)備無法啟動(dòng)代碼10”和屬性說“無法驗(yàn)證此設(shè)備所需驅(qū)動(dòng)程序的數(shù)字簽名代碼52”后者的優(yōu)先級(jí)永遠(yuǎn)高于前者先處理簽名再談別的。我們在移植過程中就吃過這個(gè)虧排查了一下午驅(qū)動(dòng)代碼最后只是簽名沒裝進(jìn)證書庫。4. 從XP到Win7的驅(qū)動(dòng)代碼關(guān)鍵改造4.1 PnP StartDevice階段拿資源的方式變了XP下很多老代碼在IRP_MN_START_DEVICE處理函數(shù)里直接拿Parameters.StartDevice.AllocatedResources然后一通bf遍歷。Win7的PnP資源分配在部分機(jī)器上會(huì)返回兩個(gè)資源列表一個(gè)AllocatedResources一個(gè)AllocatedResourcesTranslated而且不同PCI橋枚舉出來的順序可能不一樣。如果代碼里寫死了PartialResourceList-PartialDescriptors[0]一定是Memory那在這類機(jī)器上就會(huì)拿錯(cuò)。我當(dāng)時(shí)改造的寫法是按字符串類型遍歷for (ULONG i 0; i partial-PartialResourceCount; i) { PCM_PARTIAL_RESOURCE_DESCRIPTOR desc partial-PartialDescriptors[i]; switch (desc-Type) { case CmResourceTypeMemory: // 記錄BAR映射物理地址 break; case CmResourceTypeInterrupt: // 記錄IRQL和向量 // 處理CM_RESOURCE_INTERRUPT_LEVEL_BASED break; case CmResourceTypePort: // IO端口資源9054本地總線可以是IO模式 break; } }Win7對描述符中的Flags要求也更嚴(yán)格。比如CM_RESOURCE_INTERRUPT_LATCHED和CM_RESOURCE_INTERRUPT_LEVEL_BASED兩種中斷觸發(fā)標(biāo)志處理不當(dāng)會(huì)導(dǎo)致中斷風(fēng)暴或者干脆不觸發(fā)。別覺得這步多余實(shí)際移植中我們遇到過系統(tǒng)從睡眠喚醒后資源列表變化舊的“取第0項(xiàng)”寫法直接訪問野指針?biāo){屏代碼0x000000D1就是這么來的。4.2 物理地址映射和DMA到了64位世界9054是32位地址空間的老芯片但Win7 x64系統(tǒng)分配給設(shè)備BAR的物理地址可能落在4GB以上這時(shí)候驅(qū)動(dòng)內(nèi)部如果還是用ULONG存物理地址直接截?cái)嘤成涑鰜淼牡刂繁劐e(cuò)。XP時(shí)代常見的映射寫法是PHYSICAL_ADDRESS physicalAddr; physicalAddr.QuadPart (ULONG)pRes-u.Memory.Start; PVOID pMap MmMapIoSpace(physicalAddr, length, MmNonCached);到了Win7 x64如果你的資源描述符里返回的物理地址本身就是64位上面強(qiáng)行截?cái)嗟?2位就會(huì)映射到完全錯(cuò)誤的物理頁面。正確做法是從CM_RESOURCE_LIST的desc-u.Memory.Start.QuadPart原始讀取不要自己強(qiáng)制轉(zhuǎn)換。排查手段很簡單接上內(nèi)核調(diào)試器在映射前后打印一下物理地址對比一下設(shè)備管理器屬性里的內(nèi)存范圍是否一致。DMA部分更要小心。PCI9054使用總線主控DMA數(shù)據(jù)傳送靠芯片內(nèi)部的DMA描述符而描述符里包裝的地址只能是32位。在Win7 x86上好辦物理地址天然4GB以內(nèi)到了x64上如果不是用X64系統(tǒng)的IOMMUDMA緩沖區(qū)一旦被分配器放到4GB之外9054根本夠不到。我當(dāng)時(shí)做了兩個(gè)保險(xiǎn)第一個(gè)驅(qū)動(dòng)里限制DMA緩沖區(qū)通過MmAllocateContiguousMemorySpecifyCache分配在4GB以下第二個(gè)建議在BIOS層面關(guān)閉對9054的VT-d重映射否則IOMMU在某些主板固件下會(huì)把DMA地址翻譯到高地址而老芯片的32位地址線又接不回來。這個(gè)選項(xiàng)在AMI的BIOS里一般叫“VT-d”或“Intel Virtualization Technology for Directed I/O”關(guān)掉后PCI傳統(tǒng)設(shè)備兼容性會(huì)明顯好一截。需要說明一下這屬于常見實(shí)踐中的擴(kuò)展配置如果你所在的行業(yè)不允許動(dòng)BIOS策略也可以保持IOMMU開啟但要額外寫一個(gè)DMA地址校驗(yàn)邏輯每次生成描述符前調(diào)用MmGetPhysicalAddress若返回值大于4GB就重新分配一塊低地址緩沖區(qū)再拷貝數(shù)據(jù)。代價(jià)是性能有約10%的損耗工業(yè)采集場景通常能夠接受。4.3 中斷例程和電源管理Win7更挑剔9054原廠驅(qū)動(dòng)里ISR處理流程本身不算復(fù)雜收到本地中斷后讀LINT_STATUS判定是哪類事件DMA完成、GPIO觸發(fā)、FIFO到達(dá)閾值然后清中斷把工作丟給DPC。Win7和XP的一個(gè)區(qū)別是DPC的內(nèi)容被執(zhí)行的環(huán)境更嚴(yán)格如果你的DPC里做了調(diào)試打印或者Sleep很容易觸發(fā)進(jìn)程掛起檢測。最好的習(xí)慣是把DPC里能做的都做了讀完?duì)顟B(tài)寄存器立刻用IoRequestDpc排進(jìn)隊(duì)列DPC例程里只做數(shù)據(jù)整理和IoCompleteRequest??刹灰押臅r(shí)業(yè)務(wù)邏輯放在DPC里做。電源管理這塊是最容易被忽略的。9054板卡在Win7下默認(rèn)是支持S0/S3切換的。如果不處理IRP_MN_QUERY_CAPABILITIES系統(tǒng)會(huì)直接把設(shè)備當(dāng)成不支持電源管理來處理結(jié)果就是機(jī)器休眠喚醒后設(shè)備不工作或者反過來設(shè)備在喚醒后處于D3狀態(tài)但驅(qū)動(dòng)不知道所有讀寫超時(shí)。我移植時(shí)在PnP IRP里攔截了IRP_MN_QUERY_CAPABILITIEScase IRP_MN_QUERY_CAPABILITIES: { PDEVICE_CAPABILITIES caps (PDEVICE_CAPABILITIES)stack-Parameters.DeviceCapabilities; caps-DeviceState[PowerSystemWorking] PowerDeviceD0; caps-DeviceState[PowerSystemSleeping1] PowerDeviceD3; caps-DeviceState[PowerSystemSleeping2] PowerDeviceD3; caps-DeviceState[PowerSystemSleeping3] PowerDeviceD3; caps-DeviceState[PowerSystemHibernate] PowerDeviceD3; caps-DeviceState[PowerSystemShutdown] PowerDeviceD3; caps-WakeFromD3 TRUE; ... }然后在自己驅(qū)動(dòng)里處理IRP_MJ_POWER對D0-D3切換事件做寄存器保存和恢復(fù)動(dòng)作。經(jīng)驗(yàn)值9054的本地配置寄存器LCR切換前存下來到D0恢復(fù)時(shí)寫回去EEPROM不用重讀PCI配置寄存器由總線驅(qū)動(dòng)管理你不用管但本地寄存器必須自己兜底。最后再強(qiáng)調(diào)一個(gè)Win7新增的麻煩Storport和SCSI類老驅(qū)動(dòng)不會(huì)遇到但9054這種自定義DMA引擎如果沒注冊MmMapLockedPagesSpecifyCache的正確方式某些會(huì)直接觸發(fā)“DMA_ENGINE_TOO_OLD”這類專用錯(cuò)誤。別慌先查驅(qū)動(dòng)注冊DMA適配器的代碼確認(rèn)9054使用的是32位散開/聚集Scatter/Gather并且把MaximumPhysicalAddress設(shè)為4GB邊界以內(nèi)。5. 移植現(xiàn)場從Code 56到藍(lán)屏的排錯(cuò)實(shí)錄5.1 設(shè)備未知與Code 28INF節(jié)匹配問題移植過程中最容易碰到的第一個(gè)故障驅(qū)動(dòng)通過devcon或手動(dòng)更新安裝進(jìn)去但設(shè)備管理器里設(shè)備仍然躺在“其他設(shè)備”下狀態(tài)是“未安裝驅(qū)動(dòng)代碼28”。這個(gè)現(xiàn)象十有八九是INF的硬件ID匹配有問題。排查順序是這樣。先在設(shè)備管理器打開該設(shè)備的“詳細(xì)信息和屬性”把硬件ID完整貼出來一定有類似這樣的值PCI\VEN_10B5DEV_9054SUBSYS_00019054REV_01 PCI\VEN_10B5DEV_9054SUBSYS_00019054 PCI\VEN_10B5DEV_9054然后檢查INF文件看看[DeviceList.NTamd64]里到底寫了什么。一個(gè)常見的低級(jí)錯(cuò)誤是硬件ID某一段大小寫、或字段順序不一致Windows INF匹配對格式要求非常嚴(yán)格。還有一種是自己在INF里把VEN_10B5的Vendor ID拼錯(cuò)了轉(zhuǎn)成十六進(jìn)制時(shí)少一位匹配永遠(yuǎn)失敗。另外要注意如果是32位系統(tǒng)Windows默認(rèn)只去[DeviceList.NTx86]翻別把64位節(jié)當(dāng)萬能鑰匙寫。改INF改到頭禿時(shí)可以暴力驗(yàn)證設(shè)備管理器里右鍵“更新驅(qū)動(dòng)程序軟件”→“瀏覽計(jì)算機(jī)以查找驅(qū)動(dòng)軟件”→“從計(jì)算機(jī)驅(qū)動(dòng)列表選擇”人工指向sys所在目錄如果列表里能看到你驅(qū)動(dòng)的設(shè)備名說明INF和sys編譯鏈路是通的問題就只剩匹配精讀。5.2 Code 56簽名問題之外的玄學(xué)Code 56在Win7里屬于比較惡心的錯(cuò)誤全稱叫“設(shè)備已經(jīng)加載了一個(gè)驅(qū)動(dòng)但Windows無法啟動(dòng)它”。很多人第一反應(yīng)是簽名問題但Code 56和Code 52含義不同——Code 52明說數(shù)字簽名驗(yàn)證失敗Code 56的意思是驅(qū)動(dòng)sys已經(jīng)成功拷貝進(jìn)driverstore或者system32/drivers但在創(chuàng)建設(shè)備對象或響應(yīng)StartDevice時(shí)出錯(cuò)導(dǎo)致PnP回滾。解決這種問題我的第一反應(yīng)不是看代碼而是看日志。打開C:\Windows\inf\setupapi.dev.log這是安裝過程的完整流水賬。搜關(guān)鍵詞“! dvi”或“Error:”,可以看到Windows嘗試加載sys之后驅(qū)動(dòng)的返回狀態(tài)。舉例來說 [Device Install (UpdateDriverForPlugAndPlayDevices) - p905x.inf] Section start ... dvi: Searching for hardware ID PCI\VEN_10B5DEV_9054... dvi: Driver node selected: P905x Driver ! dvi: Driver package status 0x800F0219 (STATUS_INVALID_IMAGE_HASH)STATUS_INVALID_IMAGE_HASH基本上就把罪名坐實(shí)在簽名頭了去處理證書如果狀態(tài)碼是STATUS_DEVICE_PROTOCOL_ERROR或者STATUS_INSUFFICIENT_RESOURCES說明驅(qū)動(dòng)代碼里對資源映射的處理有問題回頭檢查第4.1節(jié)的資源遍歷到底有沒有拿全。還有一個(gè)隱蔽原因是“設(shè)備端禁止啟動(dòng)”。有些主板BIOS的PCI設(shè)備列表里把某個(gè)插槽設(shè)成了“禁止分配資源”設(shè)備管理器能枚舉到設(shè)備但起不來狀態(tài)碼同樣顯示Code 56。檢查方法是進(jìn)入BIOS調(diào)整PCI Latency Timer或者復(fù)位一下PCI資源分配表我當(dāng)時(shí)是直接把系統(tǒng)里另外一塊設(shè)備挪了個(gè)槽Code 56就消失了。這種情況和驅(qū)動(dòng)代碼一點(diǎn)關(guān)系都沒有。5.3 WinDbg加原廠監(jiān)控工具的聯(lián)合排障如果setupapi日志定位不出問題就得請出內(nèi)核調(diào)試器了。Win7測試機(jī)上把調(diào)試開關(guān)打開bcdedit /debug on bcdedit /dbgsettings serial debugport:1 baudrate:115200主機(jī)上用WinDbg串口連接加載符號(hào)之后先敲幾個(gè)常用命令定位現(xiàn)場kd !analyze -v kd lmvm p905x kd !pci 1 0 0 kd !devnode 0 1 kd !irp!pci 1 0 0是查看PCI總線0設(shè)備0功能0的配置空間對照硬件ID確認(rèn)板卡是否被系統(tǒng)正確發(fā)現(xiàn)如果這里的BAR寄存器數(shù)值不對大概率是EEPROM初始化或者系統(tǒng)資源重分配做壞事。!devnode 0 1能看到驅(qū)動(dòng)對象和FDO/PDO的狀態(tài)確認(rèn)PnP棧在哪里斷掉。實(shí)際上我們當(dāng)時(shí)一起用的還有原廠監(jiān)控工具。它能直接讀出PCI配置空間的BAR地址和本地寄存器的值。有一次設(shè)備長時(shí)間跑DMA后丟中斷我同時(shí)在WinDbg里看DPC隊(duì)列、用原廠監(jiān)控工具看LINT_STATUS寄存器一下子就確認(rèn)了中斷沒有被正確清掉代碼里少了寄存器讀后寫這個(gè)步驟而不是Win7的調(diào)度問題。這種本質(zhì)層面對齊比單純靠日志猜要快得多。這里順便給大家一個(gè)建議移植老驅(qū)動(dòng)監(jiān)控工具必須要能用。如果原廠工具在Win7上跑不起來很多老工具都是控制臺(tái)版只支持XP可以先用虛擬機(jī)裝一個(gè)XP來跑工具然后把實(shí)機(jī)Win7上的寄存器值截圖回來對比。這個(gè)臨時(shí)方案解決了很多現(xiàn)場不能亂裝工具的問題。6. 移植后的驗(yàn)證清單與量產(chǎn)部署經(jīng)驗(yàn)6.1 必須跑通的回歸項(xiàng)驅(qū)動(dòng)移植完只是開始離能交付還有一大截。下面這張表是我在項(xiàng)目里固定執(zhí)行的驗(yàn)證項(xiàng)全部通過才敢往生產(chǎn)環(huán)境發(fā)驗(yàn)證項(xiàng)具體方法通過標(biāo)準(zhǔn)基礎(chǔ)枚舉冷插/熱插PCI設(shè)備設(shè)備管理器無黃嘆號(hào)狀態(tài)正常資源映射原廠監(jiān)控工具讀BAR0-BAR3所有BAR地址非零且與資源窗一致寄存器讀寫對LCR輪詢并改寫控制字讀寫結(jié)果一致無總線錯(cuò)誤中斷驗(yàn)證觸發(fā)本地GPIO中斷5000次無丟失無SYSTEM_SERVICE_EXCEPTION藍(lán)屏DMA吞吐連續(xù)500MB雙向搬運(yùn)無ABORT無誤碼休眠喚醒進(jìn)入S3再喚醒設(shè)備恢復(fù)且能夠繼續(xù)DMA64位兼容Win7 x64安裝和全量測試驅(qū)動(dòng)簽名有效無截?cái)嗟刂穯栴}多卡并存同機(jī)安裝4塊板卡中斷共享正常所有板卡可獨(dú)立操作DMA吞吐這項(xiàng)我多說一句。9054老芯片在當(dāng)今內(nèi)存頻率下如果描述符塊設(shè)置太小DMA搬運(yùn)效率會(huì)很難看。我當(dāng)時(shí)的經(jīng)驗(yàn)是把DMA描述符環(huán)改成256字節(jié)對齊搬運(yùn)長度設(shè)成512字節(jié)起步連續(xù)搬運(yùn)時(shí)能看到穩(wěn)定占用PCI總線。如果單次搬運(yùn)在256字節(jié)以下浪費(fèi)在描述符管理上的時(shí)鐘反而占比過高。6.2 批量部署時(shí)的驅(qū)動(dòng)安裝技巧量產(chǎn)部署階段不建議再讓用戶手工“更新驅(qū)動(dòng)程序”。Win7下靜默裝驅(qū)動(dòng)我推薦用pnputil比老devcon更穩(wěn)微軟官方一直維護(hù)到Win11都還在用pnputil -i -a plx905x.inf關(guān)鍵點(diǎn)是“-i”表示向系統(tǒng)提交驅(qū)動(dòng)包安裝請求“-a”表示添加。加上之后設(shè)備上線時(shí)PnP會(huì)自動(dòng)搜索驅(qū)動(dòng)庫完成安裝。如果是先在插卡狀態(tài)下裝需要執(zhí)行兩次先添加驅(qū)動(dòng)包再刷新設(shè)備狀態(tài)。系統(tǒng)有時(shí)候反應(yīng)慢可以等待5秒再執(zhí)行一次掃描pnputil -i -a plx905x.inf ping -n 5 127.0.0.1 nul pnputil -d -i pci#ven_10b5dev_9054后一條命令是強(qiáng)制為指定設(shè)備實(shí)例安裝驅(qū)動(dòng)適合那些樹形結(jié)構(gòu)比較奇怪的機(jī)器。批量部署時(shí)還要注意證書預(yù)置。正式簽名證書如果還沒有推送到所有客戶端驅(qū)動(dòng)即使打包進(jìn)驅(qū)動(dòng)庫也會(huì)因?yàn)楹灻麊栴}被拒。一個(gè)很實(shí)用的辦法是用組策略把授信證書導(dǎo)入到“受信任的發(fā)布者”存儲(chǔ)再執(zhí)行驅(qū)動(dòng)部署。在測試環(huán)境先做一次干凈主機(jī)的全流程演練別在數(shù)百臺(tái)機(jī)器上直接跑測。6.3 從這個(gè)項(xiàng)目里沉淀下來的一些掌故移植結(jié)束了我想分享幾個(gè)這次經(jīng)歷帶給我自己的體會(huì)。第一條是老驅(qū)動(dòng)的移植最忌諱“大刀闊斧重寫”。剛拿到代碼的時(shí)候誰看誰難受到處都是全局變量和老式宏恨不得推倒重來。但9054板卡的價(jià)值在于它的時(shí)序已經(jīng)穩(wěn)定你要做的只是在Win7的新地基上給它換一套房子不是重新給它造一顆心臟。第二條設(shè)備擴(kuò)展DeviceExtension的設(shè)計(jì)直接影響后期的所有問題。我這次花了小半天把DeviceExtension重新梳理成結(jié)構(gòu)體嵌套把BAR地址、映射虛擬地址、資源列表長度、中斷狀態(tài)位全部歸攏后續(xù)調(diào)試時(shí)一眼就能從WinDbg里抓到這些變量。很多藍(lán)屏問題的根源就是指針存散著導(dǎo)致某一分支沒拿到完整上下文。最后一條“小技巧”是調(diào)試DMA問題時(shí)的土辦法在驅(qū)動(dòng)里臨時(shí)把每個(gè)DMA描述符的物理地址都回顯到一段內(nèi)核日志里用KDCOM或者WinDbg在主機(jī)端批量收集。9054的DMA失敗十有八九和描述符地址非法有關(guān)這一招可以快速確定是不是地址被放到4GB以上、或者描述符跨頁導(dǎo)致的對齊錯(cuò)誤。收集完這批日志再?zèng)Q定要不要加驅(qū)動(dòng)層內(nèi)存池比靠猜靠譜太多。每次看到這種幾年份的硬件在新系統(tǒng)上重新跑起來我心里其實(shí)挺踏實(shí)。技術(shù)上沒什么玄學(xué)就是一條一條把“系統(tǒng)換了之后誰不再按老規(guī)矩辦事”的差異找出來挨個(gè)填平。PCI9054的移植做完下一代的PCIe固件和KMDF驅(qū)動(dòng)架構(gòu)我們已經(jīng)在籌劃了路徑清晰不少。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
福利在线黄片| 国产精品高潮久久久无码| 日美免费黄片| 亚洲人成在线放东京热| 国产av色网| 国产精品经典一卡久久久| 亚洲国产成人精品无码专区| 久久精品一区二区一8| 人妻丝袜肏逼| 欧美性爱一区| 330Dv国产女人终合视频极品人与兽| 日本免费一级AAA大片器| 97日韩欧美| 床戏久久久av一区二区麻豆| 日韩精品亚洲一二三| 九久9热| 亚洲天天艹| 亚洲国产高清福利视频| 在线观看一级α片刺激高潮视频| 97视频免费| 91精品又粗又猛又爽| 亚洲精品久| 一区在线观看中文字幕| HEYZO高无码国产精品227| 91精品国产91久久青草| 超碰97伊人| 日韩淫色网| 啊啊啊好舒服好爽啊啊啊视频| 五月丁香综合啪啪| 激情久久av一区av二区av| 精品黑人一区二区| 人妻在线视频| 天天色综亚洲91污| 一本一道人妻久久一区二区三区 | 日韩av无码网站| 亚洲色图A| 日日骚一区二区三区| 91精品国产长腿丝袜美女| 后入式福利| av草草在线电影| 国产精品久久久久久久久久二区三区| 大茄子熟女AV导航| 2017天天拍大香蕉| 欧美日韩97| 97免费在线观看| 国产福利合集| 小日子操bb在线看| 婷婷天堂站| 午夜福利成人免费视频| 婷婷五月天丁香| 十八禁啪啦拍视频无遮挡| 免费在线观看国内色片网站网址| 国产精品无码论坛| 五月丁香啪啪啪| 人妻精品综合中文字幕在线 | 色综合久| 六六久久日韩不卡| 啊啊啊啊啊啊啊啊要喷了| 物业黑人 AV一区| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 操人妻丝袜高跟| 色欲人妻一区二区在线| 男人的天堂日韩| 在线小说视频一区| 91在线视频国产网站| 欧洲性爱无码区| 国产区性爱在线视频秋霞豆| 99热9| 91在线美女| 嫩草影院永久在线制服丝袜| 九九九久久久| 333kkkk·亚洲com久久| 欧美综合骚| 91国产大片| 精品无码产区一区二| 操熟女91| 欧美强奸乱能| 欧美日韩夜夜| 久久老熟女| 欧美精品精品一区二区| 99热色精品| 男人的天堂2000| 久久综合97| 99国产在线 精品 视频| 国产精品91ai| 96久久久久| 亚洲图片激情综合另类| 加勒比无码一区二区三区| 国产精品视频| 青青草中文字幕| 免费?级毛片无码?∨蜜芽试看| 欧美,日韩,亚洲视频| 性感女人网页在线观看视频| 精品国产国产AV| 国产丰满少妇久久久精品影院| 久久久爆乳翘臀一线天伦理视频| 少妇人妻精品| 国产精品剧情| 丰满人妻-区二区三区免费| 欧美综合加勒比在线| 无码九九九九| 一区二区三区免费岛国片| 四虎影视在线| 精品传媒在线一区| 99精品在线| 肉丝中文无码高清| 国产精品无码久久久久2028| 91老司机在线视频免费观看| 人人操人人操人妻人| 国产精品无码av在线| 97日本超碰综合| 91N综合网| 手机在线播放国产福利| 夜夜高潮夜夜爽国产伦精品| 午夜男人一级A片7777| 日韩综合97P| 欧美成人性爱视频在线播放| 伊人成人中文字幕久久网| 91N综合在线| 超碰国产精品无码| 国外91| 欧美伊人久久综合网| 97综合日韩| 日本视频在线中文字幕| 欧亚乱色熟一区二区三四区| 丁香婷婷五月| 欧美色图成人网一区二区 | 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 播播亚洲小说亚洲| 88在线一区二区三区| 日韩色| 亚洲图片 激情小说| 狠狠操官网| 精品国产一区二区三区久久久蜜臀| 蜜桃久久一区二区| 黑丝日韩av丝袜av| 日韩精品中文字幕一| 欧美乱妇狂野欧美在线视频| 日韩精品免费高清视频在线| 欧美在线综合| 九九综合色| 伊香蕉综合久久久久久久噜噜噜| 九九热精品| 精品人妻一区二区免费蜜桃视频| 人妻无码后入| 国产精品免费视频人成| 天天射日日干| 国产精品白丝| 97色诱| 女人喷水视频在线观看| 99av| julia ann久久| 激情开心五月天| 婷婷色色五月天福利| 国产成人AV麻豆| 熟女精品va中文字幕| 天天久久久久久| 欧洲天天在线| 色噜噜人妻丝袜a∨先锋影| 97中文字幕一区| 天天添天天干电影| 婷婷色五月激情| 亚洲码在线中文在线观看| 色拍偷亚洲| 99综合网| 999岛国大片| 日韩成人无码| 一级二级在线观看| 91四海无码日韩欧美| 免费看污网站| 中文字幕黑人大片| 国产一区二区三区导航| 国产精品96| 狠狠爱AV| 久久综合精品一区二区三区| 色狠狠综合| 欧美大波激情xxxx| 欧美激情专区| 久久婷婷一区| 麻豆天美AV传媒第一页| 精品无码一二三四区| 中亚精品极乱| 国产激情综合| 国产刺激视频| 网页导航五月天免费一二三区| 日韩三级一区| 超碰碰碰碰| 亚洲精品啪视频| 欧美综合国产精品久久丁香| 视频一区二区三区精品| 日韩肏逼视频| 天天综合欧美| 99热在线播放| 日韩大香蕉| 999国产精品999久久久久久| 天堂精品| 国产人人干| 久久99精品九九久久久婷婷| 性色av一区二区| 国产青一二三| 美女露胸露屁股| 久久精品小视频| 久久九九综合| 狠狠 91| 婷婷色综合| 亚洲国产午夜真人一级片中文字幕精品黄网站| 国产高清免费不卡av| 国产亚洲深夜激情| 国产成人无码a| 1人人看人人摸人人操| 久久综合九色综合欧洲98| 啊v在线观看视频| 国产农村妇女毛片精品久久| 亚洲国产日韩精品久久久| 国产精品对白自产拍| 国产AB视频| 久久人人爽av亚洲精品天堂桃色| 啊啊啊啊好大好硬啊啊啊啊啊| 欧美亚洲国产日本在线,久久精品国产| 国产欧美日韩臀 | 精品欧美不卡在线播放| 在线岛国新天堂8| 中文字幕国产| 人人扣人人操| 亚洲日本韩国极品一区二区| 欧美激情片一区二区| 成人热久久精品| 欧美亚洲涩涩| 综合欧美色图| 天美精品原创av片国产| 无码不卡八戒| 天天干天天操天天干天天操| 亚洲熟妇自偷自拍另欧美| 一二三啪啪专区| 亚洲 另类 丝袜 自拍 动漫| 97日韩欧美亚洲| 91亚洲欧洲| 中文字幕,人妻,日韩| 日操粉逼逼| 色情综合| 亚av顶级裸体一区二区三区四区五区 | 国产高清在线观看欧美| 狠狠色丁香| 欧洲中文字幕| 91超碰丝袜制服| 亚洲九九九九| JULIA一区二区三区在线播放| 操少妇很爽av| 国产精品乱码久久久、久久| 97在线观看免费视频| 国产精品久久久久无码Av网曝门| 熟妇操花| 曰本熟女视频| 久久久亚洲精品中文字幕人妻| 熟女人妻一区二区三区免费看| 国产精品懂色tv影视免费观看| 俄罗斯一区二区视频在线观看| 人妻日日干| 偷拍 精品另类 凸凹了四区| 亚州欧美综合| 91大神精品长腿在线观看网站| 日韩欧美国产高清视频| 色女99一级片在线观看| 亚洲综合色图欧美| 亚洲成人av电影在线| 五月丁香婷婷色| 欧洲乱码视频| 黄骗免费网站| 色五月综合网| 亚洲高清男人天堂| 精品无码久久久久久国产浪潮| 欧美婷婷五月天| 成人五月天色网| 天久久久噜噜噜久久国产精品爽爽 | 色女网日韩| 日本高清一本二本免费不卡| 密乳AV免费观看| 欧美精品在线观看| 福利视频网站| 99在线精品视频| 免费成人在线熟妇网| 夜色91| 在线99热| 久久有码视频| 国产亚洲99久久精品| 天天干人妻| 午夜福利国产欧美日韩夜夜| 欧美一区二区三区大综合| 天天日夜干| 色九区| 丝袜AV一区二区三区| 国产AV久久久蜜爱影集| 久9爱精品| 日本一级黄色电影| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 亚欧高清在线| 果冻传媒A片麻豆熟妇人妻| 欧美日韩一区二区三区四区蜜桃| 好舒服视频| 久干9操| 日日日色色色色色| 黄网色一区二区三区四区精品| 国产后入清纯| 五月丁香成人网| 97这里有精品| 国产丝袜美女诱惑| 人人妻人人爽 97人人看碰人免费公开视频| 97久久久久久久精| 亚洲伊人成综合成人网| 97 超碰 人人做 人人爱| 欧美成人免费在线观看| 青青草乱入乱欲视频在线观看| 999精品国产高清一区二区| 欧美天天谢综合网| 蜜乳av一区二区| 啊啊啊男女| 96精品在线| 亚洲巨爆乳一区二区三区四季网| 牛牛久久国产精品视频一二三| 99re这里只有精品3| 亚洲影院无码在线| 女人天堂网| 91色情黑丝搞鸡在线观看一区二区三区三州| 啊啊啊骚| 91超碰在线播放| 色情综合| 3d成人精品一区二区| 久久久久久久久9| 日韩无码嘿咻黑热久| 人妻少妇被猛烈进入中| 久久99九九九九6666免费观看软件| 猛交交| 八戒午夜福利理论片| 伊人96在线| 嗯嗯啊中文字幕| 色屁屁影院www国产| 久久久久斤小| 91艹逼精品| 婷婷色影院| 午夜啪| 女人18精品一区二区三区| 日产狠狠干| 九九干| 亚洲综合第一页| 中国黄色特级精品一区二区三区片| 91五月天| 国产操逼逼网| 国产精品嫩草影院午夜两性| 九九操久久国产免费视频| 亚洲黄日韩无码专区| 九九性爱网| 十八禁视频一区二区| av天堂加勒比| A男人的天堂| 国产欧美日韩女同性恋ww喷水精品| 久干9操| 操国产逼| 久久99热这里只频精品6学生| 国产中出内射一区二区| 狠狠入| 色拍偷亚洲| 很黄很污的免费网站| 成人网址在线观看| 亚洲黄色网址视频| 操逼天美3区| 毛片久久| 日本乱人伦片中文三区| 91狠狠综| 秋霞免费无码视频日韩A片| 天天亚洲| 国产精品久久久久久久久久久久久久吹| 九九九九九用不成了| 狼人综合婷婷激情四射 | 国产午夜精品理论片一二三区区| 99精品九九九九九九| 色香综合天天影视综合 | 日本黄色大片一级视频免费麻豆| 亚洲福利影院一区久久| 免费a v| 综合色好色| 色网亚洲人| 天天天做天天天爱天天天爽| 日本精品加勒比海一区| 日本ZZ高免费A级视频| 人人摸人人舔一区二区| 激情文学小说一区二区| 超碰在线综合97| 乱色老一区二区三区的观看方式| 职场同事知名国产国产精品久久欧美日韩| 天天操人人操骚逼网站| 久久AV色| 日韩AV噜噜噜一区二区三区四区 | 欧美图片色综合| 久久最新免费视频23| 色噜噜综合在线| 特污免视频| 九久久九精品视频| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 五月丁香| 18一区二区三区| 久久久久一本一区二区青青蜜月| 亚洲天堂日本| av线电影| 蜜臀久久99精品久久久久久| 亚洲av成人精品一区| 黄片免费视频2019| 亚洲暴力强奸AV| 强免费黄色网址| 亚洲宅男天堂| 麻豆精品A片免费观看| 伦理弟一页| 久久精品无码熟妇一区二区三区视频导航 | 国产女主播视频在线观看| 91熟女视频网| V A在线| 乱伦av国产| 啪啪啪大香蕉| 97av,com| 国产亚洲日韩欧| 精品区国产区一区二区三区| 婷婷五月天补不补| 色香伊人| 人人操,人人液| 多毛小伙内射老太婆| 超碰在线成人| 欧美国产视频| 国产精品诱惑| 天天躁日日躁AAA片李宗瑞| 玖玖人人爱| 中文字幕人乱码中文字的预防方法 | 蜜乳AV免费观看| 久久AV无码网址| 乱人伦 国语对白:视频直接看| 曰本精品久久久| 久9综合在线| 精品日韩人妻精品一二三区| 激情第四色| 91久久久老司机| 夫妻天天操岛国视频| 3d成人精品一区二区| 亚州情色j区| 久久久久人| 欧美激情视频在线一区| 日本天天操| 97国产综合欧美| 欧美日韩*字幕一区| 久久久久9999| 蜜臀无码一区二区| 三级色综合| 人妻日日夜夜精品| 91性感在线| 三级三久久线久久99久目本WW| 夜夜騷av、一區二區| 熟妇一区二区| 91站街按摩店老熟女熟女| 国产二区三区粉嫩在线| 国产成人欧美精品在线| 久久国产三区| 成人国产二区三区在线,男女精品。| 黄片免费久久久久久久| 999综合色| se吧提供国产乱老熟视频胖女人| 麻豆天美国美国产| 人妻丝袜美腿中文字幕| 九九伊人网| 色九九久九九| 九九AV| 91美女视频直播| 久精品无码av一区二免费国产在线观看| 好好的日:com久久九九| 91色人妻| 97视频900| 成人a大片在线观看| 天天综合网91| 日本熟妇熟色97一本在线观看| 超碰97久| 五月天婷婷激情| 亚洲精品xxx| 色狠狠 - 百度| 破苞ⅩXXX性无码动漫无码| 偷拍在线观看视频| 亚洲三区视频| 久久精品六区| 激情开心五月天| 男人的天堂va| 欧美永久激情一区二区| 国产av波波国产精品| 色综合久久夜色精品国产天堂| 天天躁日日躁成人字幕aⅴ| 99青青草国产视频| 操我无码| 亚欧成人一级片在线播放| 在线观看一卡二卡| 91被操| 99综合自拍| 国产亚洲精品农村妇女| 麻豆 美女 丝袜 人妻 中文| 婷婷色香| 亚洲成?V人片在线观看福利| 蜜臀AV午夜精品久| 啊啊啊啊啊啊啊好爽不要| 国产黄片精品在线| 我想要 啊 啊 啊| 人人综合| 91久久久久久| 国产a片操逼| 啊啊啊啊啊舒服| 97舔舔| 肉嘟嘟www视频在线观看高清| 97伦综合| 婷婷另类小说| 色蜜AV| A V视频日本| 久久久人妻| 欧洲精品一二三在线| 韩日精品四区| 黑人无码一区二区| 大屁股人妻女教师撅着屁股| 9九九国产| 国产精品 亚洲情色| 亚洲情色中文字幕一区| 粉嫩绯色AV一区二区在线| 久久久亚洲精品中文字幕人妻| 第二页中文字幕| 国产激情在线观看| 北约熟女超碰| 色色毛片| 性综合网| 日韩综合97p| 91性感网站| 亚洲伊人久久精品狠狠在线| 色五月激情网| 亚洲一区二区三区AV无码| 秋霞Av理论一级在线| 青青久久久| 粉嫩小泬久久久一区二区| 超碰日本97美女人妻人人玩人人爱| 亚洲色图日韩精品| 翔田千里一区二区三区奶水| 色吧5亚洲| 97超碰欧美中文字幕| 91在线丝袜| 嗯嗯啊啊好大好爽| 操逼精品视频| 久久偷拍人| 97爱免费插| 五月天婷婷综合网| 婷婷天堂站| 精品黑人一区二区| 久久一级无码精品毛片6| 国产精品久久久久久久电影渣男| a'v在线资源| 超碰97COm中文| 97亚洲自在精品在线观看| 青青草日韩免费观看高清在线| 精品一久久久| 五月开心久久AV官网| 久偷拍| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 亚洲色天堂九9| 热热色色综合| 蜜臀在线看片| 青青操日韩| 超碰97人妻自拍| 亚洲欧美骚| 日韩综合97p| 欧美激情区| 久草在线| 欧美一级美片在线观看免费| 午夜一区二区三区国产| 熟女人妇一区二区三区| 强免费黄色网址| 五月天激情网图片| 精品无码一区二区| 目产99999久久999| 精吧天堂| 96精品久久| 日语五十路和六十路亚洲国产精品| 欧差乱伦二三| 天天看天天在线精品| 国产精品熟女丝袜一区二区| 91 刺激在线| 麻豆久久久久久久久丝袜 | 欧美顶级黄色大片免费| 婷婷色综合| 久久9久9久99久9久9| 999综合色| 天天影视91看看| 午夜性刺激视频免费观看| 日婷婷| 爆操无码| 夫妻四区五区六区| 粉嫩av一区二区三区四季| 免费视频观看60秒| 亚洲无码超碰免费| 久久久成人国产精品无码| 日本精品一区三区| 久久伦理视频久久大香蕉视频| 超碰在线在公开超碰在线在公开| 91色狼| 精品久久久久久中文| 狠狠干综合| 97超级欧美| 98久久超碰| 欧美国产欧美在线观看| 亚洲熟妇极品| 天堂综合| 超碰97人妻免费在线| 国产精品久久久久无码AV会牛| 97人妻色| 欧美偷| 国产乱伦亚洲| 中文字幕二区日韩天堂| 日本国产二线女色| 亚洲天堂一区二区久久| 久久五月份| 2003天天干夜夜操| 一本色道久久天天射天天干| 日韩人妻精品久久久久| 亚洲在钱| 久久精品毛片免费不卡| 美日韩一卡二卡三卡免费人妻精品| 麻豆区久久久久亚| 国产精品毛片?v一区二区三区| 蜜臀久久99精品久久综合| 久久↗↗| 中文字幕aⅴ在线视频| 91美女视频在线| 日日夜夜精品视频| 98色网| 九九九九九九综合| 国产一区二区在线电影| 久热久操| 欧美精品一区二区少妇免费A片 | 亚洲日韩资源| α√在线| 中文熟女五十乱码在线| 日韩亚洲中文有码视频| 欧美中字二区| 日韩精品在线视频在线观看| 少妇一区二区三区在线观看| 午夜小电影在线插入淫高潮| 日本91白丝| 丝袜足交视频| 天天综合AV| 久久精品店| 大香蕉男女超碰精品在线| 亚洲欧洲综合| 久久精品小视频| 99999re| av天天在线观看| 亚洲精品少妇| 91 丝袜在线| 影音先锋新男人| 极品后入免费视频| 青娱乐国产盛宴视频| 天天插天天操天天摸天天射天天看| 人妻中文字幕精品无码| 98超碰日本| 777奇米影视777四色| 东京男人天堂| 一区二区你上我| 曰韩中文人妻视频| 国模不卡一本二本三电影| 人人操人人插人人摸人人干| 国产乱子伦一区二区三区免看| 亚洲午夜福利在线影院| 天天摸天天操视频| 狠狠躁AV| 密乳无码| 一二三区视频在线观看| 91超碰人人| 国产一区自拍欧美日韩| 久久久久婷婷精品av电影| 91久久久久久久| 欧美日本成人一区二区| 久9久9精品| 91黑人无码激情在线| 欧美熟妇精品黑人巨大91| 亚洲另类久操网| 久久91精品国产9丨久久分亭 | 久久久久久久久久8888| 日韩免费a级毛片无码a∨| 激情欧美日韩女同久久| 91强奸乱轮| 玖草在线视频| 97网址97| 俺去久久| 把腿张开老子CAO烂你| 免费视频一二三区| 天天色踪合| 国产精品久久久亚洲一区| 国产探花日韩援交| 久久九九97| 四虎免费看黄| 99热精品在线观看| 影音先锋视频在线| 日日爱99| 老鸭窝成人| 久操操| 先锋精品av色鲁| 日韩无码黄色片| 久久人妻| 欧美日韩小说| 亚洲性感丝袜诱惑在线观看| 黄页大片在线观看| 无码少妇精品一区二区60岁老人 | 久久久久亚洲精品| 大香蕉97久久| 爱av免费| 免费公开人人操| 国产v亚洲v日韩v欧美v片另类| 超碰是碰在线观看| 精品九九九九九九九| 玖色AV| 国产精品一区二区黄片| 欧美激情另类一区二区| 日本色色色网站免费看不卡| 欧美人妖内射| 无码精品啪啪啪一区二区三区三州| 免费农村成人少妇人妻Aa一区二区视频 | 久久毛卡| 天天躁日日躁AAAAXXXX国产| 国产精品香蕉| 91精品国产一区三一| 偷拍99| 干美女人妻| 欧美日韩中国x| 欧美色综合图片| 99蜜桃臀亚洲成人在线观看| 嗯嗯嗯不要不要免费视频| 99在线免费视频| 4399成人黄A片| 中文字幕av乱伦| 免费看久久久性性| 天天日天天干天天整| 久热香蕉精品在线视频| 精品人妻av在线播放| 人妻丰满熟妇一区二区三| 激情五月综合开心五月| 亚洲人成网站7777| 日产欧美电影一区二区三区| 2017av无码免费无线播| 操逼网站网站| 成人自拍三级在线观看| 久久成人国产精品| 手机在线中文字幕国产| 国产高清在线观看欧美| 国产熟女乱论| 中文字幕在线高清男人的天堂 | 蘋果手機免費看成人Av| 天天草AV| AV中文字幕三四五| 蜜臀久久99精品久久久久久酒店| 97日韩超碰超碰中文字幕| henhen91| 91免费看一区二区三区| 欧美自拍偷拍综合图片| 中文字幕精品日韩中文字幕| 日本色色色视频| 狠狠色婷婷777| 97人妻色| 97精品综合久久网| 日本高清视频在线观看黄已三辽| 一二三区精品视频| 欧美亚洲| 一本大道不卡一二三区| 国产AV超爽| 亚洲男人的天堂亚洲| 中文字幕少妇色 | 1769国内精品视频| 亚洲精品a人片在线观看视| 亚洲中文字幕网| 97 亚洲 日韩 欧美 在线| 天天看高清麻豆| 五月天精品| 国内偷拍精品一区二区| 中国一区二区亚洲人妻| 五月天丁香| 精品网站99999| 老熟乱一区二区三区四区| 日本成人在线不卡一区二区三区| 人人操人人摸人人看人人干| 五月天激情网图片| 欧美另类自拍| 60秒不遮不挡| 超碰在线观看av不卡| 中出91| 中文一区在线日| 中文字幕欧美丝袜07资源| 青椒国产97在线熟女| 国产按摩一区二区三区| 日本黄页视频在线观看| 蜜臀久久99精品久久久久| 嫩草一区二区在线观看| 中文字幕精品人妻丝袜| 92大香蕉| 曰韩操B| 午夜精品99久久久久传媒| 亚州九九九精品视频| 黄片www视频免费| 日韩精品一区二区三区色欲 | 久久首页| 国产怡红院| 狠狠色五月亚洲91| 日韩无码黄色片| 伊人青青一区成人视频在线观看区| 精品9999| 亚洲中文国际强奸字幕| 1区2区3区中文字幕日韩| 亚洲人综合19| 秋霞视频一区二区| 超碰97在线中文| 99久国产精品午夜性色福利| 猛交交| 狠狠爱夜夜| 国产高清成人传媒影视| 97伪v| 精品人妻1区| 国产嫩草精品A88AV在线| 天天久久| 欧洲色色| 玖玖久久久| 久久久久久久久久8888| 亚洲情色综合网| 亚欧无码在线| 精品9区| 人妻 丝袜美腿 中文字幕| 中美日韩毛片| 五月丁香黄色网| 成人AV素股で擦久久| 超碰95| 欧美人妻精品| 在线a亚洲视频播放在线| 欧美人妻精品| 日本不卡一区二区| 97二区四区| 国产精品精品系列在线观看| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 日本操逼视频免费| 九久久九精品视频| 亚洲黄片免费在线播放| 97资源欧美| 一级成人性爱| 强奸熟女一区二区三区| 91社区拍啪人妻| 国产后入清纯| 久久99视频| 一本久道久久综合狠狠爱一密臀精| 日韩另类| 日韩啪啪视频| 肥臀熟女福利视频一区二区| 亚洲成人精品在线一区| 国产精品高潮久久AV| 波多野结衣被操50分钟免费视频| 农村妇女精品一区二区| 狠狠色噜噜狠狠狠狠狠色综合久久| 亚洲熟女偷拍在线观看| 91精品啪在线观看国产城中村| 美女天天干| 婷婷色婷婷| 亚洲第一页第二页激情| 色超碰综合| 曰韩成人免费视频| 欧美加勒比| 无码人妻丰满熟妇奶水区毛片| 亚洲视频1区| 色综合 加勒比| 韩国久久97| 欧美爆乳精品一区二区| 人妻天天爽夜夜爽2| 97天堂| 亚洲av无码国产精品字幕| 蜜桃狠狠色伊人亚洲综合 | 加勒比日本在线| 在线观看精品国产免费| 中文字幕三四区| 日本顶级天天操狠狠操夜夜操中文字幕| 日韩AC| 国内毛片热久久思思热| 9997se| 色呦呦、国产精品| 97任你吞精| av网站免费线看| 久久婷婷一区| 屌妞视频久久久久久久久久久久| 亚洲黄网在哪免费看| 欧美色偷偷| 夜夜免费视频| 91网亚洲| 99亚洲精品| 草草网站影院白丝内射| 超碰97护士| 亚洲精品久久久久久| 少妇毛片久久| 日本久久网| 日韩精品黄片免费观看| 亚洲国产另类在线中文| 91男人综合| 婷婷美人网| 久久9亚洲| 国产精品青草综合久久| 亚洲欧洲综合av在线| AV中亚| 日韩天天综合| www. 男人天堂成人在线| 日韩二级| 999日韩中文精品观看视频。| 午夜精品久久久久久久99蜜桃一| 91性高朝久久久久久久久| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 人妻黑丝袜电影| 有码免费观看| 日韩乱码Av| 五月激情在线| www.人人cao| 欧美久久婷婷| 天天操女人| 一区二区 韩日AV| 91色久| 99久久久久| 婷婷亚洲五月***久久| 免费αⅴ在线观看| 国内毛片无遮挡国产| A级国产欧美激情在线| 97免费在线观看视频| 东北女人高潮视频| 熟女少妇一区二区三区| 色与欲影视天天看综合网| 亚洲 欧美 综合 91| 久日综合网| 在线一区| 天天日熟妇| 午夜九九| 欧美在线大香999| 加勒比色99999| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 亚洲图片婷婷五月天| 综合国产影视三级| 日韩免费在线视频观看| 99国产在线 精品 视频| 国产成人欧美一区二区三区的国产| 国产亚洲欧美每日在线| 九九综合久久中文字幕| 国产高清免费不卡av| 在线观看亚洲专区| 色综合尤物| 九九黄色网| 熟妇人妻精品一区二区视频色欲| 狠狠久久亚洲欧美专区| 999日韩中文精品观看视频。| 欧美性天天影视| 内射日韩大臀美女| 啊啊啊好舒服好爽啊啊啊视频| 亚洲情色在线| 天天干1区2区在线| 精品人妻一区二区三区不卡断 | 夜夜嗨一区二区| 久久色激情一区二区三区| 91天堂视频| 欧美青青草视频| 蜜臀AV午夜精品久| 亚洲另类欧美精品| 久久av成人无码免费| 久久亚洲av成人无码国产| 免费观看欧美日韩操逼视频| 久九干| 男人的天堂久久狠| 97视频播放| 69XX一中文字幕人妻91| 手机在线视频国内精品| 中文字幕在线高清男人的天堂 | 欧美加勒比| 十八禁视频一区二区| 熟女色综合久久| 亚洲图片 91| 伦理弟一页| 亚洲少妇视频| 无码精品久久| 五月天久久久| 亚洲精品天天影视综合网| 天天在线91| 亚洲影院成人| 亚洲第一在线视频| 性欧美天天| 久草电影网| 韩三级a视频在线观看| 国产人妻天天干精品| 91原创在线观看| 精品视频久久区| 国产高清自拍视频| 欧美做爰无码A片视频| 2025亚洲男人天堂| 午夜福利 成人 91| 国产精品视频自拍在线| www.婷婷五月天| 一区二区三区色综合| av中亚| 亚洲无线码一区国产欧美国| 最新亚洲风情电影| 欧美综合色图片| 伊人网综合在线视频| 97网址www| 欧美激情内射| 可以在线观看AV的网站| 96AV久久久| 国产美女自拍视频| 国产黄色av大片网站| 91天天综合网,天天综合网| 欧美+日产+中文| 日韩中文字幕视频在线观看| 绑缚麻绳人妻寝取完整版| 高清国产av无码| 校园春色亚洲无码| 国内偷拍精品一区二区| 久久,精品一二三| 精品超碰色| 熟女色综合久久| 久偷拍欧美日韩三区| 精品久久无码午夜福利 | 毛片一区二区| 亚州精人品大香蕉| 综合色区偷拍| 成人av免费观看| 国产自偷| 性爱精品一区| 不卡六六在线91| 欧美性爱伊人| 中国熟女91| 久久久无码av精| 国产热av| 日韩性爱再线视频| 精吧天堂| 亚洲欧美国产成人综合不卡| 九九热精彩视频| 脫衣舞一区二区三区| www.AV有限公司一区| 无码免费在线观看黄色片| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 91精片| 天堂日本亚洲欧美| 日本性感人妻91| 亚洲美女30b| 啪啪视频亚洲第一| 999 久久久| 中文自拍欧美影视| 丝袜美腿91| 免费精品99| 免费国产视频| 蜜臀亚洲中文| 91碰超| 久男人久久| 午夜免费福利视频一区| 久久久涩| 狼人综合婷婷激情四射 | 久久精品一区| 无码操逼网| 欧美图片色五月天| 婷婷香蕉欧美在线一区二区三区| 色五月AV| 国产超碰在线一区| 国产AV久久野战精品| 欧美人妻一区二区| www.色婷婷| 国产9 9在线 | 亚洲| 九九九九一级| 九九热免费视频| 亚洲97成人在线观看| 91性感网站| 9999免费精彩视频| 欧美超碰97| 欧美91精彩| 婷婷大香蕉| 欧美性爱日韩高清| 天天干1区2区在线| 亚洲熟妇自偷自拍另欧美| 亚洲欧洲无码bt精品合集| AV色五月| 极品丝袜无码| 精品偷拍13p欧美dodk视频| 大香蕉日韩| 欧美性爱一区| 天天色播| 亚洲无码超碰免费| 亚洲日韩97| 成人女人国产| 91丨九色丨43老版熟女| 色屁屁影院www国产| 天堂av最新电影网| 精品人妻夜夜草| 久久精品三级影视| 日韩一级久久毛片| 亚洲精品97p| 午夜啊啊啊| www.狠狠| 亚洲系列第一页| 啊啊啊啊啊在线| 丰满人妻一区| 大鸡吧尹人在线| 偷看洗澡一二三区美女| 日B操| 亚洲国产97| 色色青青久久| 亚洲中文字幕日产无码久久| 九九热视频在线观看| 岛国黄| 韩日色费| 天天爽天天操啊啊啊| 亚欧美色图| 色偷偷色偷偷欧美日韩| 91精品导航| 强奸熟女一区二区三区| 日本操逼aaaaa| 中文字幕丝袜国产第一页不卡| 久久精品操| yy少妇精品久久| 蜜桃精品一区二区三区ww| 丁香九月激情| 99热在线观看| 97精品熟女少妇一区| 亚洲欧美一区二区网址| 97在线免费视频观看| www.成人无码| 青青草狠狠撸| 一区二区国产视频在线观看| 内射日韩大臀美女| 欧美性爱五月天| 欧美精品自慰系列寂寞少妇| 乱伦1色页| 中文字幕日韩精品久久| 日本性感人妻91| 草草电影院| 老熟妇乱轮| 天美精品原创av片国产| 亚州综合色| 丁香九月婷婷| 亚洲男人天堂av| 久九九九| 国产白丝精品在线观看| 亚洲成人贴图| 中文字幕99999| 欧美色就是色| 狠狠干91| TS人妖另类精品视频系列| 男人天堂电影院| 丁香七月婷婷| aaaa少妇高潮大片| 日韩精品一区,二区 九九...老司机| 国产亚州精品美女久久久免费| 蜜桃在线观看一区二区三区| 操逼网站视频漫画国产| 精品国产www久久| 午夜寂寞欧美| 97最新在线播放视频| 九九色图| 亚洲色图大香| 丰满少妇一区二区三区四区观看| 吉川爱美98堂在线| 中文字幕十五区| 日日骚精品视频|