日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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
返回資訊列表
欧美在线大香999| 亚洲一区二区麻豆影院| 亚洲九九爱| 一区二区视频在线播放| 美女久久久久久久久久久| 天天综合网在线| 日韩欧美国产高清视频| 97视频在线免费播放| 日本精品高清一二区一本到| 国产无码三级视频在线观看| 日韩三级av片| 色臀aV| 影音先锋国产精品| 女人被男人桶爽视频网站| 亚洲清纯综合| 呦女网站| 97国产色图| oumeisetu综合| 成人性爱av.com| 97在线视频免费| 无码99| 欧美久久伊人| 久久老子无码午夜伦不卡| 亚洲学生妹高清av| 九七色图| 69久久| 日韩三级在线观看mp4| 日韩中文字幕视频在线观看| 久操视频资源站公开| 色综合 加勒比| 大香蕉在线视频重口味毛片在线| 人妻无码视频一区二区三区久久| 天天干人人干天天日97| 亚洲精品性爱片| 日韩综合第八区国产精品| 日本一天色道久久久精品视频| 伊人网青青| 天天干18禁| 精品少妇一区二区三区| 亚洲资源网| 天天看天天日天天操| 欧美线天码中字| 人人爽夜夜操| 久久综合18p| 色色激情| 亚洲精品久久久久久久久豆丁网| 欧美黄色大片在线观看| 国产黄色剧情影片麻豆免费播放| 久艹视频在线| 国产精品一二三| 97公开久久| 欧美亚男人的天堂| 黄色污污污污污污网站| 国产欧美伊人| 操人妻逼91| 97视频在线观看播放与子乱对白在线……| 志村玲子视频一区二区| 99色综合| 无码欧美有限公司| 五月天综合网| 中文字幕精品久久久久人妻红杏ⅰ| 欧美,日韩综合久久| 成人a级高清视频在线观看| 国产91精品在线免费| 色综合一区二区三区| 亚洲在线| 插欧洲美女欧美精品| 99热欧美| 中文字幕一区二区三区蜜臀| 午夜福利合集| 国产精品又黄又猛又粗| 欧美做爰无码A片视频| 婷婷色中文字幕| 另类小说五月天| 欧美性天天影视| 久久久久久大| 亚洲综合 欧美| 97亚洲中文| 国产又粗又大硬免费色网视频| 大乔未久88一区| 嗯啊啊啊轻点视频 | 久久久夜夜嗨免费视频| 五月天婷婷久久| 人人操天天爽| 囯产精品强| 久久99干一本高清| 国产丝袜视频| 亚洲第91页| 蜜乳av一区二区三区| 超碰在线日韩一区| 狠狠操官网| 国产小视频91| 成人网欧美风情| 超碰久久综合| 嗯嗯啊好爽| 黄片视频,下载| 免费精品99| 97视频7| 性生活性生大爱77AV国产| 成人线上超碰| 久久99综合| 啊啊啊 在线观看| 欧美亚洲成人在线一区二区三区| 操操操操操操| 密臀视频三区免费网站| 熟妇操花| 欧综合网| 六月激情婷婷| 9 9无尺码天堂网| 另类图片欧美激情综合| 丝袜熟女2P| 99精品久久久久久| 中文字幕一区二区三区四区在线视频| 日本欧美韩国国产在线| 啊a一区在线| 欧洲亚洲天堂精品| 岛国毛片在线观看免费| 99精品高潮| 欧美极品美女aaaaaa级黄片| 国产天天骚| 四虎影视国产精品| 亚洲国产成人福利在线观看| 人人搡人人肉久久精品| 最新日产中文在线麻豆| 精品久久9| 日韩欧洲操屄视频| 亚洲国成人情色好看电影| 天天射天天色成人| 日本视频在线观看污污污| 闷骚老熟女15P| 九九热精品| 日本色色色| 一二三四视频在线社区中文字幕| 91N综合网| www.四虎在线| 中文字幕二区| 五月综合婷婷久久网站| 亚洲高清男人天堂| 强奸乱亚洲| 欧美日韩系列| 五月丁香色综合| 欧亚 另类 久| 伊人97超碰| 色香综合| 青青色综合| 99e久久国产精品| 中文字幕视频一区视频二区| 欧美中文字幕日韩在线| 亚洲欧洲色情高清| 亚洲麻豆精品二区三区| 人妻一区视频| 久久华人网| 欧美视频中文字幕区| 婷婷丁香人妻 | 在线人成亚洲视频免费观看| 韩国三级三级BD在线| 国产视频一区二区三区在线免费观看 | 99热在线播放| 女人妻一区| 久久精品熟女亚洲AV麻豆软件| 国产日韩区| 97香蕉人人乳| 激情啪啪拍91| 久操97| 18岁禁 茉莉成人久久| 18禁免费视频| 清纯唯美亚洲综合| 国产十八禁视频| 成人乱码一区二区三少妇| 9美女超碰在线免费观看| 精品国产自在在线99| 国产日韩无码一区二区三区久久区| 综合色图区| 国产精选视频| 国产视频小说| 欧美78p| 成人无码在线视频网站| 91情色在线| 国产久久日| 人妻熟女午夜精品在线| 欧美日韩不卡a片| 超碰97综合网| 激情亚洲天堂| 天美av在线观看| 人妻另类 专区 欧美 制服| 青青草十区九区爱夜| 亚洲 欧美 偷拍 唯美| 殴美日韩m| 国产亚洲精品自在线亚洲情侣| 后入人妻一区| 91久久久久久| 91天堂色男人的天堂| 91狠狠综合| 色香在线| 欧美香蕉视xxx| 91人妻Pr| 亚洲一区二区三区AV无码| 午夜精品久久久久久久久久久久久 | 91欧美美女日韩国产婷婷| 在线无码网站| 超碰97人人cao| 欧日韩一二三f区| 欧美少妇高潮久久91| 91性高潮久久久久久久久| 永久免费av无码网站国产app| 久久精品国产97欧美精品亚洲 | 欧美九九爱| 秋霞蝌科网日本一区| 中文字幕在线免费观看2| 蜜桃臀一区二区三区久久| 国产天天骚| 天天综合网~69| 免费观看啪视频| 美国aaaaa一级黄片| 内射夫妻三片| 7777奇米影视久久| 亚洲成人精品在线一区| 无码动漫av中文字幕| 日韩小电影| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 欧美AB在线| 中出在线视频| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 欧美Ⅴ性爱| 极品美女嘿咻| 国产精品久久泡妞网站| 亚洲不雅视频1区二区| 青青草日韩免费观看高清在线| 97 超碰 人人做 人人爱| 天天干天天操天天拍| 天天干美少妇一区| 欧美亚洲性爱一区二区| 亚洲综合影视| 色婷婷日韩精品一区二区三区| nuu12国产麻豆精品| 九九九九九九九| 婷婷五月天色网| www久久精品| 亚洲风情综合网| 91综合天天| 亚洲 日本 不卡| 97精品视频| 人人爱人人乐人人操| 日本一区二区亚洲综合| 精品亚洲国产成人精品| 99视频内射三四| 日本超碰在线国产一区| http://qxhbdz.com| 裸模AV女优| 97色涩| 欧美性五月| 欧美色图电影| 干我久操| 丁香五月色| 一区久久久二区| 91在线/欧洲| 国产成人主播| 肥臀熟女一区二区三区视频| 最新av网站在线观看| 亚洲第一狼人丝袜美女另类| 五月婷丁香| 高潮嗯啊性感美女久久久| 欧美激色| 97色伦97色伦国产欧美| 91精品无码人妻系列| 一起草精品人妻| 粉嫩国产精品久久粉嫩| 黑人与人妻| 96超碰网| 亚洲色图日韩精品| 曰本熟女视频| 亚洲综合有码| 久久精品国产99精品亚洲蜜...| 亚洲午夜AV| 激情图片亚洲色图| 欧美亚洲特P| 日韩黄片视频试看| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 久久久久亚洲熟妇熟女| 婷婷AV一区二区三区| 大香蕉 222| a啊啊啊啊啊啊啊啊一区二区| 手机在线大香蕉| 青娱乐欧美激情一区二区| 97人人模人人爽人人| 看黑丝美女操逼青青网站| 岛国天天午夜影院传媒网| 亚洲av无码国产精品字幕| 色婷婷久久| 久久大精品乱码视频人妻熟女| 中文乱码字幕观看视频| www欧美性爱| 美女97超碰| 精品国产乱码久久久久久蜜臀| 美国日韩黄片| 国产视频一区二区在线| 96一区二区| 高清无码国产亚洲| 无码视频一区二区| 久久久久亚洲av综合波多野制衣| 国产深喉视频一区二区| 亚洲91极品| 五月婷婷爱六月丁香色| 香蕉免费一区二区三区不读| 日韩成人在线性爱视频| 狠狠夜色午夜久久综合在线| 一起草三级AV电影在线观看| 亚洲精品男人的天堂| 日韩 女同 综合| 校园春色五月天| 色99视频| 天美传媒AV在线| 人妻av在线| 九九九九热只有精品| 女人双腿搬开让男人桶| 超碰碰小说97| 深田咏美亚洲精品福利社 | 18禁中文字幕| 丁香婷婷激情五月天无毒不卡| 91视频精品| 九九热九九热| 波多野42部激情无码喷潮| 女人被添高潮免费视频| 97欧美日韩精品| 99性爱视频| 天天欲望网| 欧美日韩国产中文超碰| 另类图片综合| 黄呦呦在线| 日韩美女操b| 国产日韩中文字幕欧美| 一品道视频一区二区三区| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 福利一级版子| 精品日日人妻| 欧美高潮在线| 亚洲超碰AV| 中文字幕熟女人妻丝袜丝| 亚州AV无码国产精品| 91男同| 2019久久久久久久久福利| 无码操逼天堂| 亚洲天堂男人在线| 国产亚洲欧美每日在线| 国产一区二区精品在线视频| 99成人| 台湾一区国产高清在线| 新91视频.cmp| 蜜桃在线观看一区二区三区| 8050无码八戒| 国产福利视频精品视频| AV中文字幕三四五| 精品视频久久久久九九九九9999| 亚洲国产ⅴ高清在线观看| 国产精品色| 999日韩中文精品观看视频。| AⅤ片水多多| 97欧美久久久久久久| 国产精品成人蜜臀AV在线| 91熟女网| 精品无码人妻一区二区免费蜜桃| 欧美性爱五月天| 草草影院最新网址| 精品熟女呻吟久久91| 欧美伦乱爱| 欧美一级三级| 成人福利视频网| 中文字幕丰满人妻日本| 亚洲一区中文字幕| 中文字幕AV片| 精品妇女一区二区三区| 亚洲精品aa久久伊人| 1769一区| 九九九网站| 久久一区二区加油站| 午夜久久一区二区无码中出| 99热9| 日韩美女操b| 中国AV美女| 高清视频一区| 欧美亚洲首页| 欧美色老汉| www被窝色com| 大香蕉宅男伊人| 小泽玛利亚一二三| 69人妻精品一区二区绯色| 操逼啊啊啊91| 乱伦Av网| av无码av无码专区| 欧美精品99久久久**| 日韩av无码网站| 校园春色五月天| 精品国产a∨一区天美传媒| 亚洲性综合| 99国产精品久久久久久久成人热| 蜜桃臀 后入 一区 二区 三区 在线| 大香蕉啪啪啪| 丁香五月天堂网| 日韩乱伦视频| 一区二区三区机械有限公司| 丁香五月激情综合国产| 五月丁香| 日本熟妇熟色97一本在线观看| 丁香激情网| 色久综合| 大稥蕉免费视频这里只有精品| 男人天堂2012| 超碰亚洲97| 日本99视频| 日韩成人精品视频自拍| 996热| 97自拍视频在线| 人人操av| 激情图片亚洲色图| 日日做夜狠狠爱欧美黑人| 91精品国久久久久久无码| 综合久欧洲| 国产白丝在线| 亚州精品人妻一二三区| 中文一区二区| 亚洲欧美另类图片| 色黄污美女啪啪啪免费网站| 亚洲啪啪视频一区二区| www色日本| 国模一区二区三区| 色婷婷婷五月天激情四射| 啊啊啊啊二区好大| surenchaopeng| 久久久久96| 99re在线| 亚洲人妻中文高清| 污啪啪啪视频| 欧美情色贴图| 麻豆一区二区AV天美| 亚洲色图A| 一级婬片120分钟试看| 涩涩涩综合| 精品中文字幕第一页| 久草免费在线一区二区| 精品大久久| 爱妻综合网| 欧美色图自拍| 8x福利精品第一福利视频导航| 国产精品香蕉热久久新品| 99无码精品| 9久精品视频在线观看| 91日产桃蜜| 91欧美网| av日韩手机在线影视| 免费簧片在线观看| 91oumei| www.超碰| 亚洲日韩成人性爱视频| 国产精品制服丝袜中文字幕日韩一区二区三区| 99re在线视频国产| 精品人妻中文字幕高清| 美女被艹尤物视频| 亚洲宗合网| 香蕉国产97| 日韩精品一区二区高清| 久久久久久亚洲精品不卡人乳| 九九国产热| 久操精品| 夜夜肏2021| 日本孕妇孕交| 久久久一区二区三区三州| 五月天精品| 综合网亚洲1| 小日子操bb在线看| 综精品久久久aaaa| 国产精品视频在线观看| 午夜男女爽爽爽在线视频| 后入人妻一区| 欧亚无码视频| 97国产色综合| 日本羞羞的视频在线播放| 午夜精品99久久久久传媒| 97久久国产精品女不卡| 久久久一区二区三区四曲免费听 | 亚洲极品| 亚洲欧美国产其他二区| 久久99精品九九久久久婷婷| 亚洲国产av中文字幕久久| 亚洲成av人片色午夜乱码| 热的中文 热的有码 热的国产| 日韩欧美成人综合在线| 少妇人妻精品| 亚洲免费在线探花| 国产性刺激| 日本视频在线中文字幕| 大香蕉伊人亚洲| 无码人妻系列少妇| 黄片www.| 中国和日本人色哪个不下载能放| 日本精品一区二区中文字幕| 午夜在线播放| 精品大久久| 久久久九| 中文AV制服乱伦| 欧美精品久久96人妻无码| 日韩精品在线视频在线观看| 狠狠操狠狠燥| 欧美综合骚| 黑人美精品 A片| 美女上床网站| 人妻精品4K4K4K4K4| 操婢日韩| 日韩久射综合| 加勒比综合九九99视频在线播放| 亚洲精品成人激情在线| 97欧美在线| 神马久久69| 91 刺激在线| www.久久制服糖| 骚鸭AV| 亚洲不卡av在线| 国产精品无码在线| 国产成人在线观看网址| 欧美啪啪天堂| 少妇三P| 99色| 欧美亚洲日本激情在线| 日本一级特级毛片视频| 偷拍亚洲情色| 330Dv国产女人终合视频极品人与兽| 免费啪啪啪网站18岁| av网站免费看| 精品人妻久久久| 久草热制服丝袜在线观看| 亚洲色图大香| 亚洲操逼无码| 国产欧美精选自拍一区| 蜜臀久久99精品久久久久| 中文字幕精品亚洲熟女| 蜜伊人色综合97| 能看的av| 亚欧性爱在线无码| 91人妻中文| 久久精品人人做人人看| 97超碰欧美中文字幕| 视频黄站| Julia Annxxxxx| 97 视频在线| 好淫网一二三视区| 一道本久久棕合爱| 天天干,天天日| 亚洲宅男天堂| 欧美色五月| 精品人妻美妇91job| 日本十八禁免费看污网站| 精品人妻一二三| 9丨久久九九九| 天天综合网~91| 91熟女.com| 色综合久久夜色精品国产天堂| 色噜噜人妻丝袜AV资源| 亚熟在线| 日本蜜桃| 超碰午夜| 蜜区区视频79 | 99re这里只有精品2| 久久久久斤小| 九九人妻| 精品人妻一区二区三区四区| 高清孕妇孕交 交| 久久亚洲一区女同性恋中文字幕 | 99精品视频在线观看| 九月丁香| 殴美,日韩国产伦精品| 欧苏综合色综合| 校园春色综合| 色女99一级片在线观看| 久久超碰大香蕉| 91爱做| 久久一区二区加油站| 精品女同一区| 国产传媒日韩| 极品综合| JULIA一区二区三区在线播放| 99热精品在线| 久超碰在| 大香蕉欧美国产日韩高潮| 亚洲999综合| 亚洲素人综合| 国产97在线 | 亚洲| 黑人综合网| 国产隔壁老王影院在线| 国产h片在线观看视频| 国产一级αv免费看片| 婷婷丁香在线| 欧美性,色九九| 97欧美色综合| 大学生美女口爆| 美国精品国产精品| 婷婷五月综合在线| 在线天堂999| 久久久9 9 9精品| 久久啊啊啊| 日本精品网站在线中文| 在线国产探花| 亚洲精品国产精品乱码不卡| 青草伊人网| 搡老熟女免费视频| 国产一级αv免费看片| 操狠狠| 亚洲。天堂。日本在线观看| 亚洲在线欧美| 欧美成va视频网站| 精品视频97| 精品日日人妻| 色乱二区| 啊啊啊啊啊在线视频| 美女十八禁| 影音先锋新男人| 日日夜夜干| 久久久久久久9最新免费视频观看| 婷婷爽人人婷婷爽视频| 国产精品自在线发布| 日韩无码嘿咻黑热久| 久久是精品| 国产亚洲日韩欧| 五月婷婷影院| 99热欧美| 亚洲AV无码黄色强奸| 玖玖爱综合| 一起草视频在线| 成人福利视频网| 欧美91精彩| 国内亚洲高清无码| 男人的天堂2018东京热啪啪啪| 亚洲情色综合网| 国产特级毛片AAAAAA高潮流水| 青青11操操操操操操操操| 久久精品无码不卡| 亚洲国产一级精品毛一级精品看免费视频 | 欧美人人AAA| 黄资源| 思思视频免费看网站| 精品国产乱码久久久久久影片| 高清肉丝中文无码| 在线有码中文字幕| 青青草久久一区网| 国模无码人体一区二区三| 中文字幕在线观看丝袜| 97视频播放| 狠狠狠狠狠| 久久大香蕉97| 91碰碰| 精品免费囯产一区二区三区| 操一区| 欧美性爱一区二区三区| 亚洲啪啪性视频| 久久r精品| aaa一级黄片| 欧美色91| 婷婷亚洲综合| 懂色av一区二区三区天美传媒| 国产玖玖| 9色国产精品一区粉嫩| 亚洲aw毛茸茸在线 | 德国一二三不卡| 青青青国产手线观看视频2| 91色综合激情| 国产精品嫩草影院免费| 99re在线视频| 欧美久热| 在线视频免费观看午夜| 久久AV无码1区2区3区| 亚洲国产ⅴ高清在线观看| 日韩精品作爱导航| 91狼人| 欧美 亚洲 第一页 | 亚洲 无码 偷拍| 婷婷美人网| 91精品国产高清久久久久久,亚洲成人 | 欧美亚州色的图| A片三级无码| 亚洲日韩精品一区二区| 神马久久中文字幕| 人妻aa| 激情色图| 欧美高潮| 青青草原狼av| 午夜福利在线合集| 九九九九精品精| 天天天乱色综合全| 亚洲高清无码免费观看视频| 五月婷亚洲精品天堂| 亚洲91网站| 亚洲激情网| 欧美五十路熟| 蜜臀久久99精品久久久久久成人小说| 嗯嗯啊在线视频| 久久透逼视频| 国产精品久久泡妞网站| 久草婷婷| 五月丁香六月激情| 18禁无码永久免费无限制| 中文字幕无码不卡啪啪| 日本免费一区二| 精品久久人妻成人网| 欧美日韩在线视频网站| 久超碰这里只有精品| 91扒丝袜综合在线| 桃花色涩综合影院| 日韩免费在线视频观看| 我要色综合网| 日本二区不卡| 欧美变态激情网| 欧美制服另类丝袜| 8050无码八戒| 亚洲激情综合另类男同| 久久久久夜夜夜夜| 激情文学小说一区二区| 色噜噜人妻丝袜AV资源| 日日夜夜天天| 亚洲国产欧美中文永久| 蜜乳Av成人片网站| 亚洲不卡三级手机播放| 男人天堂2019| 97国产精选| 91丝袜在线视频| 欧洲射精91| 亚洲精品视频二区| 大香蕉久| 欧美顶级黄片AAAAA在线免费看| 亚洲性爱免费电影| 亚洲精品一二牛牛| 啊啊嗯嗯好爽| 三四中文字幕| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 久久久久久久综合,国产| 四虎884a| 欧美色图下一页| 情色av电影| 日本少妇va7777| 日本久操视频| 午夜激情床戏激情| 精品久久久久,69国产成人精| 亚洲操操操| 精品婷婷| 亚洲国产第一页综合视频| 99ri精品| 992这里有精品| 久久乐| 九久久九精品视频| 少妇毛片久久| 精品乱子一区二区三区99| 青苹果影院男人的天堂| 天天综合香 ld视频| 色婷婷综合久久中文字幕雪峰| 嗯阿好爽好紧| 精品美女在线视频| 91色伦综合| 国产自产22区| 欧美日综合| 五月情色天| 国产精品视频内谢女人| 操操操五月天婷婷丁香影院| 密乳AV免费观看| 啪啪啪精品视频| 操人无码| 国产视频三区四区| 四季AV一区二区凹凸精品小说| 色网综合网| 超碰吊日色| 亚洲欧美首页| 亚洲无码超碰免费| 欧美aaaaaaa| 亚洲精品日日夜夜52| 午夜一区| 97人人爱人人做人人乐| 亚洲日韩东京热一区| 亚洲天堂少妇| 男插女青青影院| 亚一综合久久久久久久久久| 无码自拍SM| 最新AVzaixian| 妇人噜噜| 蜜臀99久久国产| 在线亚洲 欧美 日本专区| 中文字幕aⅴ在线视频| 综合婷婷| 97碰碰日本乱偷人妻中文的| 97色欧洲| 欧美亚洲素人制服精品| 动漫爆乳3D奶水一区在线观看| 懂色AV一区二区三区| 性性欧美| 啊啊啊爽爽| 黄色AAAAAAAAAAA大片| 婷婷综合五月天| 好舒服视频| 午夜精品久久久久久久久久久久久| 香蕉国产精品麻豆亚洲欧美日韩| www.人人cao| 欧美高清性猛交| 美女淫穴| 欧美色999| 精品九九国产无码| 丝袜美腿欧美| 91美女高潮| 内射夫妻三片| 中文字幕一区av| 男人天堂综合| 亚欧色图在线激情| 激情五月天丁香社区| 操逼精品视频| 91另类| 中文字幕在线日亚州9| 中文幕97| 日本高清免费一本视频在线观看| 丁香五月激情五月| 九九九九免费高| 啊啊啊好想要| 欧美精品偷拍| 婷婷av在线中文字幕| 国产欧美日韩在线观看麻豆传媒公司 | 夜草欧美| 五月天久久综合网| www.亚洲成人一区| 大香蕉一人| 欧美1区二区三区公司| 欧苏综合色综合| 亚洲久久天堂| 日韩激情中文字幕有码| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 影音先锋乱| 四季AV一区二区凹凸精品小说| 日日摸日日碰夜夜爽视频| 草莓精品视频| 青青草久久在线| 国产精品无码av嫩草| 啊好爽受不了无码| 亚洲欧美综合| 久久久工口| 97在线观看| 久久侵犯人妻爽爽爽| 人妻熟女一区二区三区视频| 成人精品在线| 欧洲精品二区| 青青草操逼逼视频| 床戏久久久av一区二区麻豆| 久久久网站| 久久女人| 伊人青青一区成人视频在线观看区| 蜜臀99久久精品久久久久| 欧美躁死她一区二区| 男人的天堂va在线| 欧美熟爽综合| 肏逼视频日本| 91爱做| 亚洲天堂7777| 亚洲国产97在线精品一区| 亚洲中文字母在线播放| 午夜福利 成人 91| 中文操逼字幕| 亚洲日韩成人性爱视频| 91日韩网站| 丁香五月综合| 九九九九热| 午夜福利区| 亚洲一欧洲中文字幕在线 | 五十路六十路素人熟女| 狠狠亚洲| 六月丁香啪啪| 日韩亚洲欧美中文字幕| 91+欧美| 亚洲日韩美国人妻| 97伊人| 快点操死我| 亚洲天堂7777| 久操国产在线| 日韩成人午夜精品久久高潮| 日本Xx性爱| 91高潮| 日韩午夜国产| 丁香六月啪啪| 欧美偷拍区| 日日爽熟女| 97欧美精品综合| 久久无码电影| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 欧美精品,四区。五区| 久久xx| 少妇一区二区三区精选| 91蜜臀人妻中文字幕在线| 色妹子A V| 久久久久久日韩| 大鸡巴久久| 亚洲欧美setu| 天天干天天拍| 久久美女国产| 羞涩视频| 97精品视频在线| 欧美日韩理论一区| 97综合在线| 中文字幕一区二区免费在线| 欲色综合| 国产免费一区| 中文字幕在在线观看网站| 黄色av一区二区在线| 操逼A∨| 大香蕉AV在线| 亚洲se电影| 亚洲最新a在线观看| 色乱二区| 99无码精品| 日韩人体偷拍| 火箭成精品视频884必出精品| 熟女乱伦A| 久热伊人99re| 亚洲成aⅴ人片不卡无码| 久久九七| 九九五月天| 蜜臀AV成人精品蜜臀| 99热| 日韩黄色一区二区三区| 密乳AV免费观看| 久久专区| 亚洲综合第一页| 久久久无码精品人妻二区| 午夜福利在线视频1000| 黑人中出21连凳花野真衣| 志村玲子视频一区二区| 中国亚洲呦女专区| 秋霞蝌科网日本一区| 高清无码在线播放网站| 韩日色费| 性无码专区2020| 亚洲精品久久久久久久蜜桃臀| 亚洲另类色综合网站| 乱子伦一区二区三区国产精品| 91电影色诱| 天美一二三在线观看Av| 99啪| 高清不卡国产| 九九九久千久久激情蜜桃在线看 | www欧美91| 九七超碰人人乐| 青青草依人大香蕉| 成人一二三区| 超碰97中文| 一区二区乱码福利| 国产 日韩,欧美 自拍| 亚洲美女AV无码| 91福利网在线观看| 日韩精品在线视频,日韩精品……| 亚洲一二三四区| 欧美色狠| 成人无遮挡毛片免费看| 久久 国产 无码| 狠狠操官网| 日韩一区二区高清在线观看的| 郑州宾馆老熟女露脸啪啪| 国产精品成人福利在线| 夜夜影视四色| 91超级碰碰碰| 欧亚洲精品有视频| 美女裸体麻豆天美蜜桃91| 人妻酒店出差被中出免费在线播放| 成人精品一区二区三区| 少妇丝袜在线观看AV| 97久久天天综合色天天综合色电影| 国产中文字幕在线| 熟妇熟女一区二区三区| 国产拍偷精品网站| 亚洲一区二区三区播放在线| 天堂中文资源在线bt| 亚洲成av人片色午夜乱码| 九九久久九九久久| 亚州乱码中文字幕综合久久久| 男人精品天堂一区| 中国特猛少妇色xxx| 国产福利精品98视频| jk白丝没脱就开始啪啪| 天天天天天干夜夜夜夜夜操| 青青网三级视频| 中文字幕蜜乳av| 欧洲欧美视频一区二区| 手机在线看片免费人成视频| 91粉芽高清在线一区二区| 艾草av| 久久九九精品一区二区| 亚洲天天在线| 在线人人人人人人精品超 | 无遮挡又黄又刺激的视频| 一区二区三区探花在线观看| 婷婷五月色| 嫩草影院永久在线制服丝袜| 国产一区在线看| 强奸乱伦大香蕉| 日韩偷拍色图| 亚洲涩图欧美| 韩国免费播放一级毛片| 精品一区二区亚洲国产| 亚洲男人天堂网久久| 五月天精品| 91在线超高颜值国产| 午夜免费视频1000| 人妻少妇久久中文| 日韩熟女三十乱伦| 成人AV在线电影| 狠狠亚洲| 精品久久久av无码免费| 国产精品久久久三级无码| 东京成人一区| 超碰97网站| 在线看免费无码AV天堂的| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 日本东京热加勒比久久| 亚洲 日韩 欧美 国产综合体| 西西美女视频网| 亚洲欧美电影| 五月婷婷激情综合| 97在线欧| 91人妻做a观看视频| 97硬碰| 黄色无码高清黄色无码网站| 激情五月婷婷综合| 国产精品动态一区二区三区四四| 影音先锋新男人| 曰本精品久久久| 思思热一热婷婷热一热| 欧美精品成人亚洲| 97精品全部| 亚洲综合中文字幕有码| 天堂伊人久久| 99久久精品欧美国产| 97综合在线观看| 中日韓欧美高清| 99久热| 日韩精品中文字幕一| 国产精品一区二区 尿失禁| 亚州宗合另类| 美女久久久久久久久久久| 亚洲高清在线| 国产精品97视频| 乱伦AVxx| 高潮毛片无遮挡高清免费| 少妇99成人麻豆| 性色av蜜臀av色欲aV| 国产精品嫩草影院午夜两性| 成人精品视频一区二区| 免费看黄片现成| 色亚洲欧美| 免费视频一二三区| 国产精品久久久久久无码红治院| 8050无码八戒| 国产精品一区二区麻豆| 黄色片大香蕉| 色香网| 日韩人妻无码专区| 九t超碰| 国产精品久久久亚洲一区| 女人综合网| 欧美三级免费伊人| 国产极品精品美女视频| 都市激情人妻一区二区青青操视频| 一级特黄aaa大片在线观看成人一级片在线观看 | 97天天摸天天碰| 天天综合网在线91| 欧美一级三级| 久久成年片色大黄全免费网站| 91天美传媒精品| 深夜国产一区二区三区在线看| 99最新日韩偷拍视频| 欧美精品999| 久久日本熟妇熟色一区| 秋霞男人网| 日韩午夜精品一区二区三区电影| 亚洲成人AB| 久久久久久亚洲精品中文字幕人妻| 蜜乳成人AV| 超碰精品人妻狠狠干| 亚洲无码99| 最新av中文字幕高清| 超碰久久精品| 五月综合色| 亚洲图片色图欧美另类| 日韩 女同 综合| 小泽玛利亚一二三| www.久久制服糖| 欧美日韩国产精品久久色婷婷| 9 9精品一区二区三区| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 久久夜色一区二区| 在线精品福利免费播放| 日韩97P| 精品97久久综合| 久久女婷| 看大黄色大片原件| 日韩精品 欧美激情| 美女91在线观看| 大香蕉啪啪网| 污污汅18禁网站在线永久免费观看| 大香蕉中文201| 狠狠2050在线观看| 亚洲最大91网| 性爱乱伦一区| 超碰在线人妻中文字幕| 加勒比无码毛片| 欧美熟女妇同| 色优久久| 日韩,欧美,中文在线| 日本人妻丰满熟妇久久久久久| 色97国产69香蕉| 狠狠躁天天躁日日躁| 亚洲麻豆精品二区三区| 久久夜嗨| 91日韩在线| 日操粉逼逼| 免费日韩黄片| 一区二区高清视频| 青青草中出视频| 免费看污网址| 超碰性爱97| 人妻加勒比东京热| 岛国成人av在线播放网址| 国产日逼视频| 精品三级在线专区| 啪啪啪亚欧美视频| 久久亚洲日韩国产欧| 婷婷美人网| 97超碰热线| 美女露胸露屁股| 92福利社视频| 热九九精品| 人妻99p| 中国一区二区亚洲人妻| 国产日韩在线播放av| 日本在线观看网址| 国产精品视频在线观看| 欧美草草高清日韩视频| 久9久9久9久9久9久9| 九区国产| 偷拍综合亚洲| 国产成人天堂| 噜噜噜久久亚洲精品色情| 婷婷色香| 日本啊啊啊啊啊视频| 偷拍亚洲高清图片| 国产农村妇女精品一| 麻豆区99999| 欧美老熟另类| 东北黄色电影| 久久久久久性爱视频| 麻豆AV一区二区| 日本天堂网| 97色97好| 美女毛片999| 乱久久久| 色婷婷一区二区三区久久午夜成人不| 超碰69| 亚洲中文sv| 极品肉射| a片久久久久久久久久久久 | 熟女突然公开看18禁影片| 人妻精品视频一区二区| 久色网|