色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

STM32U585 USB枚舉失?。篟xFIFO連改兩次導(dǎo)致EP0_IN失效的排查與修復(fù)

STM32U585 USB枚舉失?。篟xFIFO連改兩次導(dǎo)致EP0_IN失效的排查與修復(fù) 最近在STM32U585上調(diào)USB Device從F4上移植了一套CDC虛擬串口代碼本以為換個(gè)芯片編譯就能跑結(jié)果燒進(jìn)去之后設(shè)備死活不能被電腦識(shí)別。用邏輯分析儀抓D/D-發(fā)現(xiàn)主機(jī)發(fā)完SETUP請(qǐng)求之后設(shè)備端根本沒把數(shù)據(jù)放上總線Get Device Descriptor這步就卡死了。排查到最后問題居然出在一個(gè)特別容易忽視的細(xì)節(jié)上在調(diào)用HAL_PCD_Start之前我連續(xù)改了兩次RxFIFO的大小。這個(gè)標(biāo)題我在ST社區(qū)和GitHub的STM32CubeU5倉庫里也看到過類似的帖子現(xiàn)象描述基本一致。這篇文章就把這個(gè)問題的來龍去脈講透。包含F(xiàn)IFO在U585上的分配原理、HAL_PCD_Start到底在啟動(dòng)時(shí)做了什么、為什么“改兩次RxFIFO”會(huì)單獨(dú)把EP0_IN搞壞以及正確的配置姿勢(shì)和排查手段。內(nèi)容偏向有基礎(chǔ)但沒深究過USB協(xié)議棧的嵌入式開發(fā)者如果你正在用STM32的USB Device庫或者準(zhǔn)備把項(xiàng)目從F1/F4往U5上搬這篇應(yīng)該能幫你省下好幾個(gè)下午。1. 問題現(xiàn)場(chǎng)這個(gè)Bug到底是什么樣的1.1 我遇到的典型表現(xiàn)先說現(xiàn)象。代碼邏輯大概是這樣的使用STM32CubeMX生成了U585的USB Device工程選了CDC類然后在用戶代碼里加了自定義的FIFO配置大概是為了保證大批量接收不丟包特意把RxFIFO調(diào)大了。具體調(diào)用順序類似下面這樣// main.c 中HAL_PCD_Start 之前 HAL_PCDEx_SetRxFiFo(hpcd, 0x180); // 第一次調(diào)整 RxFIFO // ... 中間隔了幾行其他初始化代碼 ... HAL_PCDEx_SetRxFiFo(hpcd, 0x200); // 第二次調(diào)整 RxFIFO HAL_PCD_Start(hpcd);燒進(jìn)去之后Windows那邊要么提示“無法識(shí)別的USB設(shè)備”要么在總線分析工具里看到設(shè)備枚舉反復(fù)失敗。用Bus Hound或者Wireshark的USB抓包看主機(jī)發(fā)SETUP請(qǐng)求設(shè)備能ACK但后續(xù)數(shù)據(jù)階段沒有響應(yīng)。換句話說SETUP包能收到設(shè)備也能識(shí)別出這是個(gè)控制請(qǐng)求但真正要把描述符數(shù)據(jù)發(fā)出去的時(shí)候就卡住了。這其實(shí)就是EP0_IN的問題。USB控制傳輸分三個(gè)階段SETUP階段、數(shù)據(jù)階段可選、狀態(tài)階段。當(dāng)主機(jī)請(qǐng)求設(shè)備描述符時(shí)數(shù)據(jù)階段是IN方向設(shè)備需要把描述符字節(jié)從EP0的TX FIFO里發(fā)出去。如果EP0_IN的FIFO出了問題最直接的表現(xiàn)就是SETUP階段正常、設(shè)備地址能被設(shè)置、但讀描述符超時(shí)。1.2 為什么會(huì)只壞EP0_IN很多人在遇到這類問題時(shí)第一反應(yīng)是檢查端點(diǎn)配置、檢查描述符、甚至懷疑是時(shí)鐘配置有問題。但如果你把USB換成HID或者M(jìn)SC類問題依然存在而且壞的都是枚舉早期階段那基本可以排除描述符內(nèi)容本身的問題。真正的原因是EP0_IN依賴的那塊FIFO內(nèi)存區(qū)域被后來被改大的RxFIFO給“吞”了。STM32的USB OTG控制器里所有FIFO都在一塊USB專用SRAM中RxFIFO和各個(gè)IN端點(diǎn)的TxFIFO是從低地址到高地址順序排布的。RxFIFO如果無腦調(diào)大后面所有TxFIFO的起始地址都得跟著挪。你以為改了RxFIFO大小只是個(gè)獨(dú)立參數(shù)實(shí)際上它會(huì)影響整個(gè)FIFO內(nèi)存池的地圖。EP0_IN之所以先遭殃是因?yàn)樗腡X FIFO通常緊挨著RxFIFO排布而且EP0是所有USB設(shè)備通信的必經(jīng)之路。其他BULK端點(diǎn)的FIFO排得靠后可能暫時(shí)還沒沖突但EP0這個(gè)位置是首當(dāng)其沖的。這也是為什么只看到EP0_IN掛掉而其他端點(diǎn)看起來“好像還沒問題”的原因。2. U585的USB FIFO分配機(jī)制2.1 RxFIFO和TxFIFO是一塊共享SRAM很多從標(biāo)準(zhǔn)外設(shè)庫或者低端單片機(jī)轉(zhuǎn)過來的開發(fā)者對(duì)USB里的FIFO理解往往是“每個(gè)端點(diǎn)一塊獨(dú)立的緩沖區(qū)”但實(shí)際上STM32的USB OTG控制器不是這么設(shè)計(jì)的。它把整塊USB專用SRAM當(dāng)作一個(gè)動(dòng)態(tài)分配的內(nèi)存池通過幾個(gè)寄存器來劃分各個(gè)FIFO的起始地址和大小。U585的USB OTG_FS主要涉及這幾個(gè)寄存器寄存器位域功能GRXFSIZ[15:0] RXFDRxFIFO深度單位是32位字4字節(jié)DIEPTXF0[15:0] TX0FDEP0的IN方向TX FIFO深度DIEPTXF0[31:16] TX0FSAEP0的IN方向TX FIFO起始地址DIEPTXF1[15:0] TX1FDIN EP1的TX FIFO深度DIEPTXF1[31:16] TX1FSAIN EP1的TX FIFO起始地址DIEPTXF2/3/...同上其他IN端點(diǎn)的TX FIFO配置注意這里的“深度”和“起始地址”都是以32位字為單位的。也就是說如果GRXFSIZ設(shè)置成0x100表示給RxFIFO分配了256個(gè)字也就是1024字節(jié)。這個(gè)單位概念在手動(dòng)算FIFO大小的時(shí)候非常容易搞混我見過有人把字節(jié)數(shù)直接當(dāng)作字?jǐn)?shù)填進(jìn)去結(jié)果RxFIFO被配置成遠(yuǎn)大于實(shí)際SRAM容量后面所有FIFO全部錯(cuò)亂。整塊FIFO內(nèi)存池的排布是線性的大致這樣地址低 - 高 --------------------- | RxFIFO | 起始地址0大小GRXFSIZ --------------------- | EP0 IN TX FIFO | 起始地址GRXFSIZ大小DIEPTXF0.TX0FD --------------------- | IN EP1 TX FIFO | 起始地址上一個(gè)結(jié)束地址大小DIEPTXF1.TX1FD --------------------- | ... | ---------------------所以每一個(gè)FIFO的“起始地址”都等于之前所有FIFO大小之和。這個(gè)依賴鏈路決定了一件事改任何一個(gè)FIFO的大小后面所有FIFO的起始地址都必須同步調(diào)整。2.2 為什么改RxFIFO會(huì)連坐TxFIFO從上面那張排布圖就能看出RxFIFO是整塊內(nèi)存池里最靠前的那一塊。它的大小一旦變化后面所有FIFO的起始地址都會(huì)受到影響尤其是緊挨著它的EP0 IN TX FIFO。舉個(gè)例子假設(shè)初始配置是這樣的RxFIFO: 起始0x000大小0x100 EP0 TX: 起始0x100大小0x040 EP1 TX: 起始0x140大小0x080如果你把RxFIFO從0x100改成0x200但EP0 TX的起始地址還停留在0x100那么新的RxFIFO區(qū)域就覆蓋到了0x1FFEP0的TX FIFO整塊區(qū)域都被RxFIFO占用了。硬件層面RxFIFO和EP0 TX FIFO指向了同一塊SRAM這是一場(chǎng)災(zāi)難。設(shè)備在收到SETUP之后想從EP0 TX FIFO讀數(shù)據(jù)發(fā)出去結(jié)果讀到的是RxFIFO里的殘留內(nèi)容或者根本沒有有效數(shù)據(jù)標(biāo)記USB核心直接不響應(yīng)IN令牌主機(jī)側(cè)表現(xiàn)為超時(shí)。這里有一個(gè)很容易讓人誤解的地方你只是“改了一個(gè)參數(shù)”為什么硬件不自動(dòng)幫你把后面的FIFO都安排好因?yàn)閁SB控制器只是個(gè)外設(shè)它沒有操作系統(tǒng)也沒有一個(gè)“內(nèi)存管理器”來統(tǒng)一協(xié)調(diào)這些FIFO。所有排布規(guī)則都由軟件來保證。HAL庫只是提供了一組寄存器讀寫接口它不會(huì)幫你檢查當(dāng)前RxFIFO大小會(huì)不會(huì)和后面的TxFIFO重疊。注意無論是CubeMX生成的代碼還是手寫的HAL初始化FIFO的劃分從來都不是“按比例自動(dòng)分配”而是由軟件明確指定每個(gè)FIFO的起始地址和大小。一旦你手動(dòng)調(diào)用HAL_PCDEx_SetRxFiFo修改了RxFIFO卻沒有同步修改對(duì)應(yīng)的TxFIFO寄存器FIFO重疊的問題就會(huì)悄然而至。3. HAL_PCD_Start前后的FIFO初始化時(shí)序3.1 HAL_PCD_Init與HAL_PCD_Start各自做了什么要理解“改兩次RxFIFO”為什么會(huì)出問題得先搞清楚HAL庫在初始化USB設(shè)備時(shí)不同階段做的工作分別是什么。HAL_PCD_Init做的事情很多其中和FIFO相關(guān)的核心操作是調(diào)用內(nèi)部的USB_DevInit不同HAL版本函數(shù)名可能略有差異。USB_DevInit會(huì)從hpcd-Init結(jié)構(gòu)體里讀取FIFO配置然后把這些配置寫入GRXFSIZ、DIEPTXF0、DIEPTXF1等寄存器。也就是說HAL_PCD_Init是“把Init結(jié)構(gòu)體里的規(guī)劃落進(jìn)寄存器”的動(dòng)作。而HAL_PCD_Start呢它在庫里的職責(zé)更偏向“使能設(shè)備、打開EP0、觸發(fā)連接”。它并不會(huì)再次執(zhí)行USB_DevInit也不會(huì)根據(jù)當(dāng)前寄存器值重新計(jì)算每一塊FIFO的布局。所以如果你在HAL_PCD_Start之前通過HAL_PCDEx_SetRxFiFo改了RxFIFO卻沒有觸發(fā)一次完整的“FIFO重新規(guī)劃”那寄存器里RxFIFO和TxFIFO之間就可能不一致。有個(gè)更隱蔽的點(diǎn)HAL_PCDEx_SetRxFiFo這個(gè)函數(shù)在不同版本的HAL庫里實(shí)現(xiàn)邏輯不完全一樣。在部分版本里它會(huì)同時(shí)更新hpcd-Init.RxFIFOSize和寄存器GRXFSIZ在另一部分版本里它可能只更新了Init結(jié)構(gòu)體真正寫寄存器要靠后續(xù)的USB_DevInit來完成。如果你的HAL版本是前者那改完寄存器后如果沒有同步改TxFIFO問題立刻暴露如果是后者改完Init結(jié)構(gòu)體后必須重新走一遍HAL_PCD_Init或者USB_DevInit否則寄存器根本沒變。這就能解釋為什么很多人“改了RxFIFO沒效果”或者“改了RxFIFO系統(tǒng)掛了”——都是因?yàn)楹瘮?shù)行為、調(diào)用順序和FIFO依賴鏈這三者之間沒有對(duì)齊。3.2 HAL_PCDEx_SetRxFiFo到底改了什么看這個(gè)名字很多人以為它只是改RxFIFO大小其實(shí)它寫的寄存器就是GRXFSIZ。這個(gè)寄存器里的RXFD位域決定了RxFIFO能接收多少數(shù)據(jù)但它沒有能力去修改DIEPTXF0/DIEPTXF1這些TxFIFO寄存器的起始地址。你可以這樣理解GRXFSIZ是“給RxFIFO畫了一塊地”DIEPTXF0的TX0FSA是“給EP0的IN FIFO畫了一塊地”。你只把RxFIFO這塊地?cái)U(kuò)大了一圈卻沒有移動(dòng)EP0的界碑那EP0的地就被吞了。我手頭一個(gè)項(xiàng)目里就踩過這個(gè)坑。CubeMX默認(rèn)生成的CDC工程里RxFIFO是0x80EP0的TX FIFO是0x40BULK IN的TX FIFO是0x80。我為了加大接收緩沖把RxFIFO調(diào)到了0x180結(jié)果EP0的TX FIFO起始地址還留在0x80的位置上。最終現(xiàn)象就是設(shè)備能收到SETUP包也能正確返回ACK但一旦要發(fā)送描述符總線上就一片死寂。這種問題查描述符、查端點(diǎn)配置是查不出來的因?yàn)閁SB協(xié)議棧的上層邏輯完全正常問題出在更底層的FIFO分配上。3.3 “兩次修改”為什么會(huì)破壞一致性現(xiàn)在回到標(biāo)題里的關(guān)鍵詞Modifying RxFIFO size twice。為什么改一次可能沒事改兩次反而更容易翻車這里說的“兩次修改”我總結(jié)下來通常有兩種典型情況。第一種情況第一次修改發(fā)生在HAL_PCD_MspInit里。HAL_PCD_Init會(huì)先調(diào)用HAL_PCD_MspInit然后在MspInit返回之后才執(zhí)行USB_DevInit去把FIFO配置寫入寄存器。如果你在MspInit里調(diào)用了HAL_PCDEx_SetRxFiFo那這個(gè)改動(dòng)會(huì)被后續(xù)的USB_DevInit采納最終寄存器配置和你第一次修改的值是一致的看起來沒問題。但如果你回到main函數(shù)后又在HAL_PCD_Start之前改了第二次RxFIFO那么這第二次修改只改了GRXFSIZ卻沒有重算TxFIFO的起始地址。此時(shí)第一次修改已經(jīng)按舊布局初始化好了TxFIFO第二次修改又把RxFIFO的地盤擴(kuò)大重疊就發(fā)生了。第二種情況兩次修改都在HAL_PCD_Start之前中間隔了一些代碼。第一次修改后你可能基于這個(gè)RxFIFO大小調(diào)用了HAL_PCDEx_SetTxFiFo設(shè)置了某個(gè)IN端點(diǎn)的TX FIFO起始地址。第二次修改RxFIFO后新值覆蓋了原來的規(guī)劃但那個(gè)IN端點(diǎn)的TX FIFO起始地址不會(huì)自動(dòng)跟著變。只要第二次修改的RxFIFO比第一次大就會(huì)把后面某個(gè)FIFO的頭部覆蓋掉。如果最先被覆蓋的就是EP0 IN的TX FIFO那EP0_IN就保不住了。如果你遇到的問題是“只改一次沒事改兩次就掛”大概率就是上面這兩種情況之一。本質(zhì)上不是“兩次”這個(gè)次數(shù)本身有問題而是“第二次修改時(shí)沒有把整張F(tuán)IFO地圖重新畫一遍”。注意HAL_PCDEx_SetRxFiFo和HAL_PCDEx_SetTxFiFo是兩個(gè)獨(dú)立的函數(shù)各自只改各自的寄存器。它們不會(huì)自動(dòng)聯(lián)動(dòng)。修改RxFIFO后你必須重新設(shè)置每一個(gè)IN端點(diǎn)對(duì)應(yīng)的DIEPTXFx寄存器確保起始地址落在新的RxFIFO邊界之后。4. 正確配置RxFIFO的三種姿勢(shì)4.1 推薦方案一次性在Init結(jié)構(gòu)體里定好最省心的做法是不要在執(zhí)行階段反復(fù)去改FIFO而是在初始化之前把整套FIFO規(guī)劃寫進(jìn)hpcd.Init結(jié)構(gòu)體讓HAL_PCD_Init一次搞定。CubeMX生成的USB工程里通常有這樣一個(gè)結(jié)構(gòu)體初始化hpcd.Instance USB_OTG_FS; hpcd.Init.dev_endpoints 6; hpcd.Init.speed PCD_SPEED_FULL; hpcd.Init.ep0_mps EP_MPS_64; hpcd.Init.phy_itface PCD_PHY_EMBEDDED; hpcd.Init.low_power_enable DISABLE; hpcd.Init.lpm_enable DISABLE; hpcd.Init.battery_charging_enable DISABLE; hpcd.Init.RxFIFOSize 0x180; hpcd.Init.TxEndPointFIFOSize[0] 0x40; hpcd.Init.TxEndPointFIFOSize[1] 0x80; // ... 其他端點(diǎn) ... HAL_PCD_Init(hpcd);這樣做的關(guān)鍵點(diǎn)是所有FIFO的深度都在同一個(gè)地方定義HAL_PCD_Init內(nèi)部會(huì)用這些值一次性設(shè)置好GRXFSIZ、DIEPTXF0、DIEPTXF1等寄存器。軟件層面不存在“先改了一個(gè)后又改另一個(gè)”的窗口FIFO布局從啟動(dòng)那一刻就是一致的。如果你是在CubeMX里配置的請(qǐng)?jiān)赨SB的Device Parameters里直接填好各個(gè)FIFO大小不要生成完代碼再在main函數(shù)里重復(fù)調(diào)用HAL_PCDEx_SetRxFiFo。這種做法最容易出現(xiàn)“一次在MspInit里改、一次在main里改”的撕裂式配置。4.2 用HAL_PCDEx_SetRxFiFo的正確調(diào)用時(shí)機(jī)如果你確實(shí)需要在代碼里動(dòng)態(tài)修改RxFIFO一定要把“改RxFIFO”和“改后續(xù)所有TxFIFO”放在同一個(gè)邏輯塊里并且最好在HAL_PCD_Init完成之后、HAL_PCD_Start之前一次性完成之后不要再有第二次修改。推薦的調(diào)用模式是這樣// 一次性調(diào)整整個(gè)FIFO布局 HAL_PCDEx_SetRxFiFo(hpcd, 0x180); HAL_PCDEx_SetTxFiFo(hpcd, 0, 0x40); // EP0 IN HAL_PCDEx_SetTxFiFo(hpcd, 1, 0x80); // IN EP1 // 其他IN端點(diǎn)同理注意HAL_PCDEx_SetTxFiFo的第二個(gè)參數(shù)是端點(diǎn)號(hào)。0號(hào)端點(diǎn)就是EP0的IN FIFO它對(duì)應(yīng)的寄存器是DIEPTXF0起始地址由HAL庫根據(jù)當(dāng)前RxFIFO大小自動(dòng)計(jì)算還是需要手動(dòng)指定取決于HAL庫實(shí)現(xiàn)。在大多數(shù)STM32 HAL版本里這個(gè)函數(shù)會(huì)讀取當(dāng)前的GRXFSIZ作為起點(diǎn)然后依次排布后面的FIFO所以只要你連續(xù)調(diào)用并且沒有中途插入其他寫FIFO寄存器的操作布局是一致的。但這里有個(gè)大坑如果你在第一次調(diào)用HAL_PCDEx_SetRxFiFo之后、調(diào)用HAL_PCDEx_SetTxFiFo之前有任何代碼重新觸發(fā)了USB_DevInit或者HAL_PCD_ReInit那RxFIFO又會(huì)被Init結(jié)構(gòu)體里的舊值覆蓋。結(jié)果就是你以為改成了0x180實(shí)際上最終還是老配置。這種“改了等于沒改”的問題同樣麻煩因?yàn)樗粫?huì)報(bào)錯(cuò)只會(huì)讓性能達(dá)不到預(yù)期。4.3 為你的端點(diǎn)算一套FIFO參數(shù)手動(dòng)規(guī)劃FIFO之前先明確一個(gè)單位問題寄存器里的深度以“32位字”為單位。1個(gè)字等于4字節(jié)。一個(gè)全速USB包最大64字節(jié)等于16個(gè)字。以一個(gè)典型的全速CDC設(shè)備為例包含EP0控制端點(diǎn)、一個(gè)BULK IN端點(diǎn)、一個(gè)BULK OUT端點(diǎn)MPS都是64字節(jié)。RxFIFO要容納的東西包括SETUP包、OUT方向的數(shù)據(jù)包、控制傳輸?shù)臓顟B(tài)階段包。正常規(guī)劃時(shí)RxFIFO至少需要能裝下SETUP包8字節(jié) 2字 OUT最大包64字節(jié) 16字 狀態(tài)階段包64字節(jié) 16字這是最小需求但實(shí)際使用中建議留些余量。因?yàn)锽ULK OUT傳輸可能連續(xù)到達(dá)多包如果RxFIFO太小控制器來不及往內(nèi)存搬運(yùn)就會(huì)被新包沖掉。我在項(xiàng)目里一般會(huì)給每個(gè)OUT端點(diǎn)至少留兩個(gè)MPS的空間再加一個(gè)MPS的余量。按這個(gè)思路CDC場(chǎng)景可以這樣分配RxFIFO: 0x100 (256字 1024字節(jié)) EP0 TX: 0x040 (64字 256字節(jié)) BULK IN: 0x100 (256字 1024字節(jié))總大小0x240字。如果你的U585 USB SRAM夠放這個(gè)配置是穩(wěn)的。如果SRAM緊張可以壓縮BULK IN的TX FIFO到0x80但要考慮到BULK IN端點(diǎn)在host側(cè)發(fā)起連續(xù)IN令牌時(shí)TX FIFO太小會(huì)導(dǎo)致NAK頻繁拉低傳輸速率。U585的USB是全速設(shè)備全速BULK理論帶寬也就1MB/s左右實(shí)際打個(gè)八折TX FIFO給到256字已經(jīng)完全夠用。不用盲目追求大FIFO夠用就好。注意算完總和之后一定要確認(rèn)總字?jǐn)?shù)不超過芯片USB控制器FIFO SRAM的總?cè)萘?。具體值以對(duì)應(yīng)型號(hào)的參考手冊(cè)為準(zhǔn)。不同封裝的STM32U585可能有所差異別想當(dāng)然按照別的型號(hào)來。5. 排查這種問題的手段5.1 調(diào)試器里直接讀寄存器當(dāng)懷疑是FIFO重疊問題時(shí)最快的確認(rèn)方式是在調(diào)試器里讀出幾個(gè)關(guān)鍵寄存器的值自己手算一遍。需要讀的寄存器USB_OTG_FS-GRXFSIZ USB_OTG_FS-DIEPTXF0 USB_OTG_FS-DIEPTXF1用調(diào)試器或者串口打印把值拉出來看。假設(shè)你讀到GRXFSIZ 0x00000200 DIEPTXF0 0x01800040其中DIEPTXF0的高16位是0x0180代表EP0 IN的起始地址是0x180低16位是0x0040代表EP0 IN的深度是0x40。計(jì)算一下0x180 0x40 0x1C0還沒有超出RxFIFO的0x200說明EP0 IN的FIFO已經(jīng)完全落在RxFIFO里面了。這個(gè)配置必然是壞的。正常的配置應(yīng)該是GRXFSIZ 0x00000180 DIEPTXF0 0x01800040這樣EP0 IN的起始地址0x180正好等于RxFIFO的深度0x180兩個(gè)FIFO首尾相接沒有重疊。我排查這類問題時(shí)會(huì)在代碼里加一段自檢邏輯uint32_t rx_size USB_OTG_FS-GRXFSIZ 0xFFFFU; uint32_t ep0_tx_start (USB_OTG_FS-DIEPTXF0 16) 0xFFFFU; uint32_t ep0_tx_size USB_OTG_FS-DIEPTXF0 0xFFFFU; if (ep0_tx_start rx_size) { /* EP0 IN FIFO 與 RxFIFO 重疊必須修正 */ }這段邏輯放在HAL_PCD_Start之后執(zhí)行可以幫你快速在固件里抓到配置錯(cuò)誤不用每次都用調(diào)試器看寄存器。5.2 USB分析儀/邏輯分析儀抓控制傳輸寄存器自檢確認(rèn)了FIFO配置有問題但如果你想看看USB總線上到底發(fā)生了什么可以用邏輯分析儀抓D/D-信號(hào)或者用支持USB協(xié)議解析的工具。抓包時(shí)的關(guān)注點(diǎn)主機(jī)發(fā)SETUP令牌設(shè)備是否回復(fù)ACK第一階段之后的IN令牌設(shè)備是回復(fù)DATA0還是NAK/STALL如果設(shè)備對(duì)IN令牌無任何響應(yīng)大概率是FIFO層面前提不滿足如果設(shè)備回NAK說明FIFO里沒有準(zhǔn)備好數(shù)據(jù)可能是描述符沒有正確寫入EP0 TX FIFO如果設(shè)備回STALL說明端點(diǎn)狀態(tài)異??赡苁枪碳鲃?dòng)STALL了請(qǐng)求在EP0_IN故障場(chǎng)景下最常見的是SETUP階段正常IN階段無響應(yīng)。因?yàn)樵O(shè)備收到SETUP后固件處理完請(qǐng)求準(zhǔn)備往EP0 TX FIFO寫數(shù)據(jù)。但如果EP0 TX FIFO和RxFIFO重疊寫入操作根本不會(huì)產(chǎn)生一個(gè)有效的“FIFO非空”狀態(tài)硬件層面不會(huì)把數(shù)據(jù)送出去。主機(jī)那邊就一直等等到超時(shí)。這種故障用Wireshark配合Linux的usbmon或者Windows上的Bus Hound都能看得很清楚。如果身邊沒有專門的USB分析儀邏輯分析儀采樣率夠高也能湊合抓出來的數(shù)據(jù)報(bào)文基本能定位到是哪一階段出了問題。5.3 查HAL返回值和狀態(tài)機(jī)另外一個(gè)容易被忽略的排查入口是HAL函數(shù)的返回值。HAL_PCDEx_SetRxFiFo和HAL_PCDEx_SetTxFiFo在部分實(shí)現(xiàn)里會(huì)檢查當(dāng)前USB狀態(tài)。如果狀態(tài)不滿足條件函數(shù)可能返回HAL_ERROR但很多人不看返回值以為配置成功了。建議在調(diào)用后加上斷言if (HAL_PCDEx_SetRxFiFo(hpcd, 0x180) ! HAL_OK) { Error_Handler(); }如果這里真的返回了HAL_ERROR那就說明調(diào)用時(shí)機(jī)的確不對(duì)。HAL庫內(nèi)部可能要求設(shè)備處于RESET狀態(tài)或者至少不能在RUNNING狀態(tài)改FIFO。了解你手上HAL版本函數(shù)實(shí)現(xiàn)的具體邏輯比盲目猜測(cè)更高效。另外可以看看hpcd-State的值。在調(diào)試器里觀察HAL_PCD_Start前后State的變化如果調(diào)用HAL_PCDEx_SetRxFiFo時(shí)State已經(jīng)不是預(yù)期的RESET狀態(tài)函數(shù)可能只是改了內(nèi)存變量甚至什么都沒改。這個(gè)“改了等于沒改”的假象比直接報(bào)錯(cuò)更坑。6. 常見問題速查表與避坑心得6.1 速查表現(xiàn)象可能原因解決思路設(shè)備完全無法枚舉主機(jī)報(bào)“無法識(shí)別的USB設(shè)備”FIFO布局整體錯(cuò)誤RxFIFO溢出或與TxFIFO重疊重新規(guī)劃全部FIFO在Init結(jié)構(gòu)體里統(tǒng)一配置枚舉到一半失敗Get Device Descriptor超時(shí)EP0 IN TX FIFO被RxFIFO覆蓋檢查DIEPTXF0的起始地址是否等于GRXFSIZ設(shè)備能枚舉但反饋“USB device descriptor request failed”控制傳輸數(shù)據(jù)階段異??赡蹻IFO重疊或EP0 TX FIFO大小不足核對(duì)EP0 TX FIFO深度至少等于EP0 MPSBULK IN傳輸速度極慢頻繁NAKIN端點(diǎn)TX FIFO太小增大對(duì)應(yīng)端點(diǎn)的TX FIFO并同步調(diào)整后續(xù)FIFO起始地址修改RxFIFO后完全沒有效果HAL_PCDEx_SetRxFiFo未真正寫寄存器或被后續(xù)Init覆蓋檢查函數(shù)返回值確認(rèn)調(diào)用順序和HAL版本行為連續(xù)調(diào)用兩次SetRxFiFo后主機(jī)枚舉失敗第二次修改未聯(lián)動(dòng)TxFIFO或狀態(tài)機(jī)不允許只在初始化階段一次規(guī)劃好避免多次修改6.2 我個(gè)人反復(fù)踩過的坑第一個(gè)坑太相信CubeMX生成的代碼。CubeMX確實(shí)會(huì)按你在圖形界面里填的參數(shù)生成FIFO配置但如果你生成后又手動(dòng)在main函數(shù)里調(diào)用HAL_PCDEx_SetRxFiFo就會(huì)產(chǎn)生“雙寫”問題。CubeMX生成的初始化里已經(jīng)設(shè)置過一次你在main里又設(shè)置一次相當(dāng)于改動(dòng)兩次。每次設(shè)置都必須保證后續(xù)FIFO鏈的一致性連續(xù)兩次很容易出錯(cuò)。第二個(gè)坑忽略了Init結(jié)構(gòu)體里的TxEndPointFIFOSize數(shù)組。很多人只改了RxFIFOSize卻沒有同步修改TxEndPointFIFOSize。這個(gè)數(shù)組是給各個(gè)IN端點(diǎn)分配TX FIFO用的它和RxFIFO的起始地址計(jì)算是強(qiáng)關(guān)聯(lián)的。只改一個(gè)必然導(dǎo)致整個(gè)FIFO排布錯(cuò)亂。建議在HAL_PCD_Init之前打印或調(diào)試查看整個(gè)Init結(jié)構(gòu)體的內(nèi)容確保所有FIFO相關(guān)字段都符合預(yù)期。第三個(gè)坑調(diào)試時(shí)只看了GRXFSIZ沒看DIEPTXF0。GR
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
97精品综合久久| 国产精品免费视频不卡| 日本一区二区做爱的视频| 富女玩鸭子一级毛片| 五月天久久综合网| 超碰日韩人妻| 亚洲精品欧洲精品| 一级AV性爱| 综合色99| 可乐操亚洲蜜911| 日本黄色精品专区网站| 按摩中文字幕| 婷婷干黄色| 欧洲综合视频| 最近二区三区视频大全| 一本道综合色图| 国产精品一二三| 亚洲综合色图欧美| 日本一级一级一级一级| 亚洲国产97| 一区二区蜜臀| 在线a v| 国产免费大片| 黑人精品XXX一区一二区| 欧美视频边做饭边橾| 女同亚洲欧美一二三区久久电影| 狠狠躁伊人中文字幕| 日本熟妇一区二区三区| 先锋影音av先锋一区| 日韩精品人妻系列无码天堂| 日本性爰一道本| 热久久99999| 国内毛片无遮挡国产| 久久国产精品,久久国产| 亚洲欧美一区二区网址| 色色无码| 草草影院最新网址| 久久中出| 欧美人妻一区二区| 成人熟女视频一区二区三区| 福利五区| 秋霞午夜视频一区二区| 日韩少妇一区二区三区| 男人的天堂久久| 看日韩美女二区三区免费操逼视频| 婷婷干黄色| 久草看看看| 久久国产精品,久久国产| 日本色色色色色视频| 免费a v| 亚洲 无码 有码 中文字幕| 日韩乱插| 亞洲久久直播| 亚洲阿v天堂在线| 亚洲国产精品久久久久婷婷老年| 免费毛片在线播放| 日韩AV一起草| 人妻久久一区二区三区| 少妇的嫩逼图片| 欧洲视频在线| 亚洲精品欧美专业| 欧美老熟另类| 操人妻逼91| 久久有碼| 色香91| 亚洲精品蜜桃久久久一区二区三区| 日本污ww视频网站| 五月丁香啪啪啪| 婷婷中文网| 岛国视频免费在线观看| 国产乱子伦一区二区三区在线观看| 夜夜高潮夜夜爽夜夜爱爱一区| 久久是精品| 综合网亚| 丝袜高跟澳门91视频| 欲色啪| 高清肉丝中文无码| 午夜福利合集| 青青青草伊人精品| 青青草在线视频播放器| 蜜臀久久99精品久久久电影| 欧美色图色综合| 国产日韩无码一区二区三区久久区| 国产乱伦视频污| 97在线观看视频| 亚洲骚逼少妇| 欧美精品一区二区少妇免费A片 | WWW黄片COM| 青青11操操操操操操操操| 综精品久久久aaaa| 97 国产一区| 少妇色欲综合网2| 亚洲av国产av综合av卡| 亚洲综合色男人网| 亚洲91网站| 亚洲天堂男人的天堂| 中文字幕日韩人妻视频| 国产精品一区二区亚洲人成毛片| 国产精品成人蜜臀AV在线| 久久久无码国精品无码三区三区| 久久久91福利姬| 精品一区二区3区| 清纯唯美亚洲另类| 刺激性视频黄页| 亚洲免费精品一区| 国内成人圈中文字幕无码视频| 天天色综亚洲91污| 啊啊啊啊啊操我视频| 国产一区二区在线看| 色网站导航大全| 国产精品亚洲一区二区三区四区| 校园春色综合香蕉| 黑人操一区二区| 黄色不卡视频| 久久婷婷电影网| 黄污污污污| 97久久国产亚洲精品超碰热| 99久久精品无码一区二区毛片免费| 亚洲骚女一区二区三区| 五月天我淫我色av| 久久国产精品熟女人妻| 国产探花精品在线| 91欧美情色| 99爱在线视频| 亚洲国产成人福利在线观看| 日韩三级一区| 日韩精品一区二区高清| 国产视频小说| 婷婷性爱| 最新岛国大片| 亚洲,欧美,综合网| 96免费视频在线| 亚州熟女乱伦| 亚州综合色| 97欧美久久久久久久| 国产精品成人福利在线| 久久九精品| 日本色婷婷| 黑人嘿嘿嘿超爽免费视频| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 三级AV入口| 一区二区不卡视| 蜜区区视频79| 无码天堂| 五十路六十路七十路熟婆| 91精片| 欧美性天天影院| 麻豆国产第一| 91无摭挡| 精品999一区二区| 国产激情在线| 中文AV制服乱伦| 欧美日韩国产一区二区小黄片大全| 日本精品一区二区三区四区的功能| 老熟乱一区二区三区四区| 久久9999 | 久久黄色性爱视频| 女性喷水高潮在线观看| 国产精品露脸在线观看| 亚洲精品日韩国产欧美| 欧美三级不卡| 久久人妻无码毛片A片麻豆| 女上位精品在线| 东京男人天堂| 青青草大香蕉在线视频| 婷婷综合网| 久久內射| 99久热精品99re6热| 蜜乳av首页| 国产AV中文| 亚洲图片欧美制度| 亚州色图第三区| 不卡av在线中文字幕| 国产精品粉嫩福利在线| 人妻社区男人天堂| 欧美白嫩在线放| 色呦呦呦在线观看视频| 国产东北女人在线视频| 天天精品| 国产一区二区啪啪视频| 二男一女成人A片| 日本色色视频网站| 最新日日夜夜天天干干| 强奸乱伦资源| 第二页中文字幕| 久久久久大香青草精品综合| 久热伊人| 中文字幕AV片| 人澡逼| 欧美洲精品一级| 国产熟女一区二区| 午夜.DJ高清在线观看免费7| 97人人超| 91爱看| 国产综合日韩伦理| 奇米四色影视777久久久| 日韩一卡二卡三卡| 乱操乱伦AV| 欧美日韩日产免费网站看| 国产成人一级av88| 欧美综合骚| 欧美第一页| 精品99999| 偷拍自拍在线视频观看| 97人人操人人干| 欧美色图私拍91| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 欧美黄色大香蕉一区二区| 999亚洲国产视频| 狠狠狠狠狠狠| 色麻豆AV| 蜜臀无码视频在线观看| 日韩AV一起草| 日本高清加勒比| 操逼天美3区| 亚洲欧美天堂在线| 久久无码一区二区二三区性色| 久久综合亚洲色1080p| www超碰| 日日夜夜骚| 91久久国产精品| 亚洲欧美日韩夜夜| 天天肏天天干| 狠狠色色| 大逼色网站| 9丨亚洲一区二区在线| 人妻久久久| 久久精品国产97欧美精品亚洲| 女人被男人桶爽视频网站| 成人网欧美风情| 成人乱人伦一区二区| 91一区二区| 久久熟女久| 国产精品干干干| 97香蕉人人乳| TS人妖另类精品视频系列| 激情综合五月| 九九九精品美女| 夜夜操91744565| 一级黄色性爱A级片| 亚洲少妇综合| 亚洲精品一二三四区| 九九九九精品视频| 打av高清| 九九色热| 美国一区二区三区视频| 亚洲牲交| 黑丝制服中文字幕 | 久久久久久综合久久伊人蜜月| 99精品免费| 欧美成人一级麻豆| 欧美日日人人天天| 欧美成人色| 男人兔费天堂| 欧洲色色| 成人a大片在线观看| 欧洲精品一级二级精品综合视频综合| 裸体1区| 淫妻综合网| 亚洲不卡三级手机播放| 青女在线| 区一在线观看| 少妇蜜汁| 日本一久是| 十八禁一区二区无码观看| 97人亚洲综合字幕| 99视频内射三四| 久久男人精品| 中国AV美女| 欧美色就是色| 精品久久久久久久| 又大又大又大又粗爽高潮观看| 综合夜夜| 99久国产精品午夜性色福利| 久久久人妻| 夜夜黄| 97热视频在线观看| 精国久久一区二区三区98| 97er欧美性| 91女人的网站| 久久久男人的天堂| 精品日韩| 激情小说日韩无码| 啊啊啊啊啊在线| 91色亚洲| 亚洲欧美日韩精品久| 密桃99999| 色五月丁香五月| 人妻天天爽夜夜爽爽| 操91| 欧洲精品一区二区三区| 亚州日韩97| 中文字幕无码不卡啪啪| 翔田千里无码一区| 五月丁香婷婷综合| 亚洲综合一| 久久久999国产| 蜜臀99久久国产| 人人搞人人插人人操| 免费公开人人操| 嗯啊啊啊轻点视频 | 蜜乳AV.COM| 国产精品免费1区2区视频| 国产精品干干干| 国产一在线观看| 国语国产操逼伊人AV网| 狠狠干狠狠干| 欧美亚洲美少妇一区二区| 亚热日本熟女| 91视频精品| 久久98| 啊啊啊好疼| 欧美天天综合站| 91精品国产91熟女| 粉嫩粉嫩一区性色AV片| 五月天色电影| 深夜激情| 久操不卡视频| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 91超级碰碰碰| 欧洲亚洲人妻无码中字久久三区四区| 成人精品欧洲亚洲| 女性91网站| 亚洲精品aa久久伊人| 欧美成人9797| 欧美骚少妇| 日本激情免费大片| 一区二区三区四区在线不卡| 91色婷婷综合久久中文字幕二区| 嗯嗯,啊啊,国产精品| 午夜福利合集| 国产操逼逼网| 免费亚洲国产精品久久一区| 强奸乱伦AV网站| 99只有精品| 岛国免费视频在线| 亚洲 欧美 天天| 欧美美女视频| 久久精品国产99精品亚洲蜜... | 免费超碰97久久| 秋霞Av理论一级在线| 国产毛片精品一区二区色欲黄A片| 亚洲一二三| 日韩亚洲中文字幕在线| 玖玖无码超碰| 丁香色色网| 操操操五月天婷婷丁香影院| 青青草中文-久久青草精品一区二区三| 亚洲男人天堂视频| 九九色精品| 最新亚洲黄色免费电影| 97超碰超欧美。| 97五月天| 国产精品人妻熟女aⅴ| 怡春苑东京热| 六月天婷婷| 26uuu偷拍亚洲欧洲综合| 中出20p| 极品丝袜无码| 国产高清精品福利| 亚洲天堂一区| 亚洲超碰综合网| 亚洲精品第一| 成人久久久| 综合久久99亚洲人妻中文在线| 国产精品99久久久www| 超碰在线一区| 欧美 亚洲精品首页| 99热这里只有精品99| 色屁屁影院www国产| 动漫av中文| renqi久久久久久久久久久久| 最新日日夜夜天天干干| 久久久新亚洲AV| 88在线一区二区三区| 先锋精品av色鲁| 人人摸.人人色| 国产精品乱码久久| 青青草在线视频美女| 麻豆精品A片免费观看| 大香蕉宗合网在线| 欧美强奸乱能| 日本羞羞的视频在线播放| 亚洲人妻色图| 午夜操一视频一区| 大干人妻| 天天久久久久久| 丝袜美腿操av| 精品人妻免费观看| 免费看黄片现成| www久久国产精品| 亚洲在线综合| 伊色久人大在线| 99蜜桃臀亚洲成人在线观看| 美女黄码视频午夜| 97美日韩视频| 天啪| 亚洲黑人在线| 91国产操逼视频| 欧美五十路熟| 另类在线| 欧美18禁91| 黄色高清久久无码依人| 蜜臀久久在线视频| 91天天c| 亭亭在线资源| 男人精品区| 岛国网址国产| 99国产精品人妻人伦| 大鸡吧尹人在线| 日日夜夜国产综合| 东京男人天堂| 69XX一中文字幕人妻91| 国产视频一区二区免费| 乱伦AVxx| 操屄不卡视频| 日本一区三级韩国| 性欧美精| 2019天天干| 亚州欧美另类| 女人喷水视频在线观看| 久久111| 日本免费一区二区不卡| 蜜臀久久99精品久久久久久| 强奸乱伦中文字幕AV| 大香交伊人网| 后入式999| 人人爱人人乐人人操| a片 xxxx受爽视频| 少妇高潮对白在线观看| 欧美内射少妇| 九九热九九热| 日韩人妻丝袜中文字幕| 国产女s强制榨精视频| 中文字幕一区二区三区视频播放| 殴美日韩m| 91欧美另类| 国产福利电影| 亚洲天堂另类小说男人| 91久久婷婷| 91日本在线观看| 国产精品不卡一区二区三区| 亚洲 小说 欧美 激情 另类| 激情婷婷| 97欧美日韩| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 天天摸夜夜添无码小视频| 欧美熟妇乱码在线一区| 日韩综合成人免费视频| av情色影音| 91天天看| 99re69| 久久男人精品| 999久久芭蕾| 91色女| 成人无码在线视频网站| 黑人中出21连凳花野真衣| a亚洲欧美色欲| se,,,亚洲欧美| 亚洲九区| 都市久久精品激情亚洲| 久久精品高清无码一区| 开心五月婷婷激情| 99re免费视频精品全部| 久久久久女教师免费一区| 亚洲 欧美 天天| 亚欧高清| 日韩射图| 黄色二级片网站| 入口操逼网站| 夜夜爽夜夜操| 国产AV人人夜夜澡人人爽麻豆| 天天插天天插| 成人日韩3| 视频在线97| 97二区四区| 插欧洲美女欧美精品| 91成人18| 色五月av| 天天操天天射青青草| 天天干天天燥| 97亚洲欧美| 国产精品suv一区| 九九久久精品| www色色色com| 超碰99在线| 人人操肉肉| 搡老女人老91二区| 欧美九九九| 国内成人圈中文字幕无码视频| AV网站高清无码在线观看| 丝袜美腿91| 日韩资源网| 欧美性后入| 爱爱动态120秒| 你懂得91| 欧亚乱色熟一区二区三四区| 91大神电影天堂| 青青草在线视频人人想人人上| 欧美一级三级| 91碰碰| 五月天大香蕉| 不卡在线一区,精品一区二区三区中| 一区二区三区视频| 久极品在线观看| 狠狠操狠狠插| 天美av在线观看| 亚洲不卡AV在线| 夜夜高潮夜夜爽高清视频一| 亚洲妇色| 久久精品国产亚洲av水密被窝| 久草精品一区| 91jk色拍| 亚洲色图第一页| 91M一社| 亚洲天堂男人天堂| 人妻少妇被猛烈进入中| 国产精品蜜乳AV| 婷婷久久五月| 91精品成人| 日韩人妻少妇中文字幕| 青青草久草AV| 国产高清26uuu| 国产视频一区二区在线观看| 97欧美色综合| 97天天摸天天爽| 18禁超污无遮挡无码免费网| 大香蕉综合| 久操影视| 国产精品美女久久久久久网站| 中文字幕一区电影在线观看| 亚洲不卡AV在线| 精品一区二区久久| 久久国产乱子伦精品免费女,网站| 超碰97COm中文| 亚洲日韩美女中文字幕乱| 日本一二区免费| 殴美色网| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 欧美伊人电影| 日本人人操人人操| 天综合网欧美| 加勒比久久综合网高清| 骚人妻少妇视频| 天天射天天| 国产精品一区二区 尿失禁| 国产视频一区二区在线观看| 我想要 啊 啊 啊| 91精品大奶人妻| 久操视频免费观看| 在线播放一级无码视频| 日本九九久久99| 天天激情干| 久久色一区| 日韩免费a级毛片无码a∨| 欧美婷婷五月天| 97操综合| 日韩人妻精品久久久久| 啊啊啊啊啊在线| 国产夜夜操| 日本潮催一卡操| 日韩欧美水蜜桃人妻| 亚洲影视第一页| 91N综合网| 欧美精品二区视频在线| 99国产精品在线观看| 最新AV在线| 九九热免费视频| 亚洲色阁| 99久re热视频精品98| 火箭成精品视频884必出精品| 人妻碰碰碰碰碰碰| 人人艹亚洲| 一品道视频一区二区三区| 国模私拍一区二区三区神乳| 高凊专区人人操| 欧美性爱一区二区三区| 人人操人人狠狠操| 97欧美色综合| 成人性爱美曰韩| 91综合天天看| 狠狠狠狠狠| 在线毛片片免费观看| 日日骚精品视频| 国人欧美精品一区二区| 福利在线黄片| 欧洲人妻视频| 丰满欧美少妇| 一本久久久精品| 久久av色| 啪啪视频mP4| 婷婷六月色开| 国产51色综合久久免费| 九九九热精品| 日韩偷拍色图| 日本中文字幕在线视频| 狠狠干,狠狠操| 日韩精品在线放| 久久九九97| 中文字幕在线第二页| 七久久久| 蜜乳中文字幕a在线| 男人的天堂2018东京热啪啪啪| 日本熟女免费視颖| 78m啪啪啪| 一直超碰| 97干色天堂| 精品国产嫩穴视频| 久久草草欧美精品| 超碰人人超在线观看| 国产品精品自在在线午夜免费| 欧美人妖内射| 亚洲欧美日韩电影网站一区 | 国产理论视频在线播放| 十八岁啪啪视频免费看| 国产午夜激片Av毛片不卡| 99国产精品视频尤物| 婷婷丁香五月天综合东京热| 亚洲清纯唯美| 亚洲素人综合| 亚洲综合影院| 精品免费视频国产一区| 夜夜嗨视频| 97视频在线免费观看| 五月天欧美色图| 97人人爱人人做人人乐| 开心激情站| 综合欧美日韩在线观看| 亚洲av无码成人精品国产| 在线性黄高清免费视频| 午夜精品视频777| 这里只有精品视频| 伊人久久亚洲中文字幕| 欧美性暴力猛交XXXX | 欧美少妇性乱| 天天欧美| 一区二区三区高清天码| 国产综合永久精品日韩鬼片| 婷婷久久五月| 影音综合网| 欧美性爱精品一区二区| 夜夜嗨一区二区| 东京热av男人的天堂| 麻豆一区二区AV天美| 久久久久久99AV无码免费网站| 少妇高潮流水av免费| 天天日天天插| 色悠久久久av| 日韩 国产 欧美自拍| 在线观看色视频| 日日骚av| 欧美日韩性爱精品| 日本一片一区| 欧美劲爆视频一区二区| 激情亚洲天堂| 91路www| 国产在线能看的你懂的| 97人妻免费中文字幕| 在现视频女上位好爽| 91精品成人| 99999久久精| 人人操人人操人人人操| 操人妻少妇中文 | 久久6热精品99视频| 一级做a爰片久久毛片图片| 99啪啪视频| 亚洲欧美成人在线| 久久久久九九九| 美女被艹尤物视频| 日比av无码| 欧美香蕉视xxx| 亚洲成人贴图| 91在线丝袜视频| 欧美性爽xyxOOOO| 成人久久精品| 99九九久久| 欧美日韩国产一区二区小黄片大全| 国产日韩区| 欧美亚洲一区二区久久久婷精品大包诱| 亚洲人综合| 日韩一级成人毛片免费观看 | 中文久久爆乳| 熟妇国产免费一区| 伊欧美综合视频| 日韩欧美~中文字| 色色色色网站| 曰本特级特黄特色黄色A级网站高清在线免费看 | 青青操97| 中国一区二区亚洲人妻| 日产操逼| 人人操人人肉久久精品| 97超碰免费人人性爱| 亚洲欧洲小说图片视频| 日本欧美一区二区三区免费| 人妻久久一区二区三区 | 久久午夜伦| 国产黄色剧情影片麻豆免费播放| 91美女视频在线免费观看| 欧美日韩成人在线| 国产精品久久久久久久AV大片| 伊人欧美大香蕉视频| 日韩99神马视频播放片在线播放| 能在线播放的国产三级| 天堂а√在线最新版在线| 欧美真人抽搐一进一出gif| 欧美大的香蕉有线电视视频| 96精品一区| 久久久久国产| 欧美成人综合| 美女黑人91神马| 国产熟妇一区二区| 自拍偷拍第26| 偷窥自拍A片| 91在线视频观看国产| 伊人久久大香线蕉无码| 另类亚洲一区二区三区| 国产精品视频内谢女人| 成人无码欧美一级A片狼牙直播| 躁躁日曰躁2020| 国产有码一区| 色情综合| 日本福利社| AA丁香综合激情| 狠狠色丁香| 婷婷伊人网| 伊人五月天| 亚洲高潮少妇| 97午夜剧场日韩| 任我爽视频在线观看| 亚洲免费精品一区| 久草视频制服诱惑| 一区麻豆 高清中文字幕| 色丁香五月婷婷| 91狠| 白嫩妹子国产骚| 国产蜜臀精品一区免费尤物| 国产 大胆 对白| 97日韩欧美亚洲| 一本色道熟妇| 精品久久无码午夜福利| 天天干天天狼在线视频| 97视频网站在线观看| 亚州Av天美传媒| 男同专区一区二区三区在线| 91少妇人妻| 97在线精品| 天天综合欧美综合| 嗯嗯啊啊啊好爽| 欧美十八禁视频| 干婷婷综合网| 9久久9综合| 欧美97av| A级在线视频| 日韩不卡a级视频专区| 国产AV人人 夜夜人人澡| 成人青青草原伊人| 玖玖爱免费观看视频| 精品无码一区二区| 国产精选视频| 五月天婷精品激情| 骚逼一区二区| 伊人一级免费黄片| 热天堂一区二区| 91九色丨风韵犹存| 天天做天天爱夜夜爽毛片试看| 久久九九国产精品| A男人的天堂| 影音先锋视频在线| 国产精品午夜成人福利| 91亚州| 六月婷婷激情| 欧美色图第一页| 大香蕉九九| 天天舔日美女视频| 蜜乳AV.COM| 免费网色网站| 精品亚洲国产成人av网站| 美腿丝袜高跟网免费视频免费视频| 欧美一区二区男人天堂| 曰韩精品九九无码| 亚洲AV色图一区| 国产h片在线观看视频| 色眯眯av| 超碰人妻中文在线| 午夜啪| 欧美人妻色| 影音先锋新男人| 99国产精品自在自在| 国产av强奸美女| 蜜桃午夜视频一区二区| 在线综合色| 亚洲有码第一页| 亚洲乱码尤物193YW| 91丨人妻丨国产丨丝袜| 亚洲色图综合网| 久久久久成人蜜桃精品| 26uuu成人影片| 牛牛久久国产精品视频一二三 | 看看小穴| 亚洲精品视频在线播放| aV中文麻| 91网亚洲| 亚洲图片欧美在线视频| 黄片视频观看| 91亚洲欧美综合高清在线| 久久久久婷婷| 欧美性爱免费短视频| 亚洲双插| 婷婷九月国产| 精品久久久中文字幕不| AV天堂丝袜| 久久中文色图| 91真人天天在线| 自拍盗摄一区| 亚洲欧美中文日韩视频中国语| 欧美日韩性爱电影在线| 男人天堂欧美| 97超碰久| 熟女天天干| 99啪啪视频| 精彩国产视频播放1区2区| 国产av白丝| 91蜜臀熟女| 国产原创自拍| 伊人久久88国产女| 尤物视频一区| 欧美不卡二区| 自拍偷拍 日韩无码| 欧美啪啪女女| 在线观看综合精品亚洲| 夜夜肏2021| 婷婷另类小说| 91蜜臀人妻中文字幕在线| 天堂网亚洲区手机版| 午夜后入| 少妇精品| 亚洲精品国产精品成人| 亚州欧美色图| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | www.成人无码| 亚洲学生妹高清av| 日韩高清黄片| 免费啪啪一级视频| se吧提供国产乱老熟视频胖女人| 久久69精品久久久久久久| 欧美精品日韩久久久九| 五月丁香狠狠爱| 在线综合 亚洲 欧美中文字幕 | 日韩三级伊人| 青青在线视频日韩欧美| 草草影院日本第一页| 精品久久无码午夜福利| 色色色99| 亚洲精品欧美专业| 综合网 欧美| 天堂中文资源在线bt| 大香蕉伊人色偷偷在线| 狠狠操一区二区| KK色在线影院| 性在久久久久久| 91肏屄网| 亚洲中文字幕一区| 久久精品国产精品| 蜜臀99久久精品久久久懂爱| 老鸭窝亚洲毛片| 啊啊啊啊啊舒服| 91色人妻| 不卡九肏| 9美女超碰在线免费观看| 啪啪啪精品| 蜜桃视频精品一区二区| 羞答答AV中文字| 96精品在线| 超碰 国产熟女精品一区| 成人无遮挡毛片免费看| 99碰碰| 麻豆伊人网| 日韩av情韩国爱禁区av一区二区| 人人做天天爱| 四虎视频在线观看| 欧美亚洲尤物久久| 日日夜夜国产综合| 中出欧美| 国产动漫操逼视频| 亚洲色图第四色| 国产色精品午夜大片| 日韩 欧美 国产 麻豆| 人妻一区二区三区视频| 久久9久9久99久9久9| 伊人性在线视频| 内射白嫩美女| 亚洲图片日本AⅤ欧美在线| 精品一区96| 欧美 亚洲 偷拍自拍| 97国产中文| www.夜夜| 精品人妻一区二区三区日产| 屌逼传媒| 日韩免费大片一级播放| 日日97| 天天综合精品| 久久欲| 欧美BT 亚洲色图| 国产高潮AA片免费看| 色呦呦呦在线观看视频| 国产AV高清AV无码| 亚洲国产成人精品久久久国产成人一区二区| 午夜精品久久久久久久男人的天堂| 91丨国产丨白浆秘 洗澡动漫| 色情亚洲日本成人| 超碰成人国产| a片在线播放| 欧美综合1性辶| 久久久91福利姬| 无码视频一区二区| 欧美性天天影视| 色五月激情网| 99热| 偷拍自拍在线视频观看| 欧美日韩黄片精品在线| 国产二区三区免费视频| 国产在线能看的你懂的| 青青草中文字幕| 97色97干| 97干在线| 国产精品对白内射| 性欧美91| 嗯嗯嗯啊啊啊干死我吧| 中文字幕在线免费观看视频| 内射老妇BBWX0C0CK| 春色综合免费| 亚洲情色五月天 | 中日韩久久久免费看| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 密桃99999| 色综合网1| 福利在线黄片| 天天看,天天做| 久久人人爽人人爽人人片Ⅴ| 国产成人无码高清| 黄色一级视| 综合久| 丁香五月激情啪啪| 欧美亚洲玖玖玖| 少妇99成人麻豆| 亚州精人品大香蕉| 日本天堂网| 人妻无码久久一区二区三区免费| 99精品热| 2003天天干夜夜操| 蜜桃一区二区三区| 在线色资源| 伊人97色天使| 熟女人妻一区二区三区| 蜜臀99久| 亚洲日韩电影| 久久精品一区二区| 久久噜噜噜精品国产亚洲综合| 久久 国产精品 一区| 英伦大奶子熟妇吊带| 久久久久久中文| 91A欧美电影网站| 日韩操p| 色婷婷电影| 亚洲AV高潮| 极品粉嫩一区二区| 免费草草草草草视频| 97超碰伊人| 久久精品国产精品一区| 熟女精品va中文字幕| 激情婷婷| 超碰中文字幕人妻草一区| 熟女露脸激情自拍视频| 91美女视频在线观看| 精品久久久av无码免费| 色爱三区| 国产精品老熟女一区二区| 伦理弟一页| 蜜臀久久99精品久久久久久无删减 | 玖玖资源视频一区二区三区| 色哟哟 日韩精品| 婷婷五月天av| 欧美综合色| 国产精品无码av在线 | 久久久少妇诱惑精品视频| 亚洲高清无码免费观看视频| 99久久免费看精品国产一区| 国产成人手机视频激情| 日1区2区3区2020| 日本免费中文一区二区三区四区| 婷婷国产精品一区二区| 99这里有精品| 欧美少妇人妻| 尻女朋友一夜| 亚洲天堂男人天堂网| 天天精品| 熟女高潮精品一区二区| 高潮毛片无遮挡高清免费| 三级片大波波| 成人小电影网站tex| 啊啊啊啊,啊啊好多水| 日韩AV无码网站| 中文字幕女同在线| 青青草日本无码| 亚州性色| 东京热av男人的天堂| 五月丁香成人网| 欧美大波激情xxxx| 五月天九九日国产精品一区二区三区| 色欲蜜臀AV| 热99这里有精品综合久久 | av橘色网站| 国产高清自拍视频| 九九拍拍精品视频在线播放| 久久久久成人亚洲国产| 97视频在线看| 亚州高清色综合| caorenqi shipin| 日韩操逼性鲍| 亚州欧美色图| 日韩黄色小说| 深夜操逼网| 欧美精品精品一区二区| 国产一区二区精品久久久不卡蜜臀| 老熟妇综合| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 国产 无码 一区二区| 不卡中文字幕aⅴ在线| 大香蕉伊在线久草麻豆天堂故事| 六月丁香啪啪啪| 国产精品视频自拍在线| 欧美激情激情xxxx欧美专区| 国产精品96| 亚洲精品一区二区精品| 97超碰精品| 久久久久九九九| 亚洲毛片久久| 美欧老女人97| 亚洲色图 图片| 白 大 人妻 区 在线| 久久e6只有精品| 操碰91| 九九天堂| 九九英色视频| 青青伊人这里只有精品| 国产11页| 日本不卡三级网在线播放| 北条麻妃性愛视频| 五月丁香综合啪啪| 色五月婷婷网| 久久久久亚洲AV无码专区少妇| 亚洲欧美成人网站AAA| 亚洲第二页| 97免费视频在线观看视频| 国内97干免费看| 天天干人妻| 亚洲影视高清第一页| 91亚洲狠狠色| 亚洲系列欧美| 美女诱惑久久| www.av家庭乱伦| 无码一区二区精品视频久久久春药 | 97在线观看| 日韩欧洲操屄视频| 欧美性生活男人的天堂| 五月丁香社区婷婷日韩欧美精品影院 | xxx亚洲午夜天堂| 蜜桃不卡一区二区| 色哟哟av| 三男一女不戴套的A片| 伊人一级免费黄片| 亚洲欧美日韩中文播放| 亚洲无码?第一页| 日本不卡卡一区| 久久精品99久久久久久| 青草伊人网| 秋霞一级鲁丝片A片| 免费的黄片有限公司| www.色婷婷色综合| 欧美se亚洲| a片久久久久久久久久久久| 福利色色| 麻豆AV短剧| 亚洲日韩天堂| 91超级碰碰碰| 超碰综合色| 日本日逼高清| 男人的天堂2019AV| 久草男人天堂| 少妇高潮流水av免费| 看一级黄色视频| 1区2区3区中文字幕日韩| 91久久国产精品| 日本精品第一视频在'| 亚洲天堂自拍| 婷婷中文字幕| 久久久久久免费电影| 精品性爱一二三区| 超碰97国产欧美| 91九色丨国产丨爆乳| 国产最火爆久久国产网站网站| 久久噜| 男人a天堂手机在线版| 久久黄人人爽视频| 国产原创自拍| 国产精品呦一区二区三区| 在线天堂资源亚洲| 97在线青| 99操碰| 蜜臀久久99精品久久久久久酒店 | 一区二区视频在看| 亚洲日韩美国人妻| 午夜操一视频一区| 亚洲码在线中文在线观看| 亚洲免费97免费| 无码久久国产| av线电影| 97在线视频观看| 午夜噜噜噜| 富二代亚洲精品99| 人妻天堂网| 精品国产乱码久久久兰草影视| 久久久亚洲欧美综合| 国产精品ww久久| AV中文字幕剧情1区2区3| www.91久久| 国产东北女人在线视频| 好爽免费视频| 中文字幕av片| 亚洲在钱| 亚洲男人的天堂AV| 五月婷婷六月色| 国产精品盗摄 偷窥盗摄| 亚洲青青草| 亚洲综合性感在线| 高清一区AV无码| 射久久| 欧洲Au麻豆| 欧美日韩操逼嗦吊| 黄骗免费网站| 无卡一区=区| 男人的天堂在线2| 密乳视频在线| 青青草久草| avav青青草久久夜| WWW4虎| 一区二区三区日韩欧美| 欧美v日韩v亚洲v最新在线| 日韩精品三级片长长久久| 97人肏| 五月开心网| 国产一级不卡在线观看| 精品人妻一区二区三区四区石在线| 成人精品久久| 高颜值美女口爆高潮浪叫| 国产9熟妇视频网站| 日日噜噜夜夜久久亚洲一区二区| 一区,二区,三区网站| 久久久98网站免费视频| 人人爱操|