日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

STM32F2x7以太網(wǎng)驅(qū)動升級實戰(zhàn):從標(biāo)準(zhǔn)庫到HAL庫的性能調(diào)優(yōu)

STM32F2x7以太網(wǎng)驅(qū)動升級實戰(zhàn):從標(biāo)準(zhǔn)庫到HAL庫的性能調(diào)優(yōu) 今年年初老客戶那邊反饋設(shè)備在項目現(xiàn)場偶發(fā)網(wǎng)絡(luò)中斷而且部分設(shè)備重啟之后能恢復(fù)另一部分怎么重啟都連不上。這批設(shè)備的主控是 STM32F207跑著 FreeRTOS 加 lwIP以太網(wǎng)驅(qū)動還是當(dāng)年從 ST 官網(wǎng)直接扒下來的 stm32f2x7_eth_driver配套標(biāo)準(zhǔn)外設(shè)庫一用就是五六年。借著這個契機我把 STM32F2x7 的 Ethernet 驅(qū)動鏈路完整更新了一遍順手解決了 PHY 換型后識別不了、大流量吞吐跑不滿兩個積壓已久的問題。整個過程踩了不少坑也把驅(qū)動從標(biāo)準(zhǔn)庫平滑挪到了 HAL 庫風(fēng)格并重新梳理了與 FreeRTOS 的配合方式。這篇就從頭到尾把這個驅(qū)動更新的思路、關(guān)鍵差異和實測數(shù)據(jù)寫透給正在折騰 STM32F2x7 以太網(wǎng)的朋友一個可以直接抄的作業(yè)。1. 為什么舊驅(qū)動扛不住了性能瓶頸和新 PHY 的不兼容1.1 現(xiàn)場問題的三個典型表現(xiàn)先說最直觀的現(xiàn)場癥狀。老代碼在主控剛上電時一切正常能通過 DHCP 拿到地址也能和上位機保持 TCP 長連接但設(shè)備運行一兩天后偶爾會出現(xiàn) TCP 連接斷開且無法重連的情況。抓日志發(fā)現(xiàn)lwIP 的鏈路回調(diào)一直報 link down但 PHY 寄存器讀回來又顯示 link up兩個狀態(tài)互相矛盾。另一個硬件同事反饋因為原型號 PHY 停產(chǎn)采購把 PHY 換成了另一家的兼容型號結(jié)果 MDIO 讀不到芯片 ID驅(qū)動里基于原廠 PHY 的初始化邏輯完全失效。第三個問題更煩設(shè)備做 100M 以太網(wǎng)大文件傳輸測試時實際速度一直在 4 到 6 MB/s 徘徊和標(biāo)稱 100Mbps 差了一大截。這三個問題表面看是不同故障實際都指向同一個根因舊版 stm32f2x7_eth_driver 太老了它是以 ST 早期的評估板驅(qū)動為藍本寫的對 PHY 的假設(shè)非常強輪詢方式也太粗糙。1.2 舊驅(qū)動在架構(gòu)上的硬傷我后來重新翻了舊驅(qū)動的代碼問題很清楚。它把以太網(wǎng) DMA 的收發(fā)邏輯放在一個 while 循環(huán)里輪詢DMA 描述符的 ownership 位靠 CPU 反復(fù)讀取判斷這本身體現(xiàn)不出來問題但當(dāng)系統(tǒng)里同時跑著 FreeRTOS 的多個任務(wù)時輪詢以太網(wǎng)驅(qū)動會持續(xù)占用 CPU導(dǎo)致其他任務(wù)被餓死。而且舊驅(qū)動對 PHY 的寄存器初始化是寫死的它默認 PHY 的中斷引腳、復(fù)位引腳和 MDIO 地址都是評估板上的接法碰到實際產(chǎn)品里 PHY 引腳改過、PHY 換型號的情況第一步就卡住了。另外一個隱藏很深的坑是描述符結(jié)構(gòu)體。舊驅(qū)動把 ST 官方標(biāo)準(zhǔn)庫里的大結(jié)構(gòu)體直接暴露給應(yīng)用層如果應(yīng)用層代碼稍微改了幾個字段或者編譯器對齊方式不同DMA 描述符內(nèi)存布局就亂了。這類問題不會在編譯時報錯只會在運行一段時間后莫名其妙收不到數(shù)據(jù)。1.3 判斷你的項目是否也該做驅(qū)動更新不是所有項目都需要折騰驅(qū)動更新但如果命中下面幾條我建議盡早動手需要支持新的 PHY 芯片而當(dāng)前驅(qū)動里沒有對應(yīng)初始化代碼網(wǎng)絡(luò)吞吐長期達不到理論帶寬的 80% 以上設(shè)備在長時間運行后出現(xiàn)網(wǎng)絡(luò)假死、連接斷開無法恢復(fù)ST 官方已經(jīng)停止維護你手里的標(biāo)準(zhǔn)外設(shè)庫版本新的 CubeMX 工具鏈無法直接生成兼容代碼想把網(wǎng)絡(luò)收發(fā)邏輯從裸機輪詢改成中斷驅(qū)動并更好地和 FreeRTOS 調(diào)度配合我當(dāng)時項目四條全占這不做更新不行了。2. 更新前的資源盤點芯片絲印、PHY 芯片和 50MHz 時鐘鏈路2.1 先確認你手里的芯片具體是哪個型號STM32F2x7 是一個系列的說法具體到芯片常見的有 STM32F207VCT6、STM32F207VGT6、STM32F217VGT6。F207 和 F217 在以太網(wǎng)外設(shè)上完全一致區(qū)別主要在 Flash 大小、加密模塊和部分封裝引腳。真正要區(qū)分的是同一個封裝下 F205/215 和 F207/217 的差別前者沒有以太網(wǎng) MAC后者才有。網(wǎng)上很多教程直接寫 STM32F2x7 驅(qū)動默認都是帶以太網(wǎng)的型號。我這次手上的板子是 STM32F207VGT6100 引腳 LQFP內(nèi)部有 1MB Flash主頻跑 120MHz以太網(wǎng) MAC 支持 10M/100M帶獨立的 DMA 控制器。只有確認了具體絲印和參考手冊才敢照著寄存器手冊去改驅(qū)動否則后面一步錯步步錯。2.2 看原理圖明確 PHY 芯片型號與接口模式STM32F2x7 內(nèi)置以太網(wǎng) MAC 要接外部 PHY 芯片才能干活。PHY 和 MAC 之間的接口有兩種MII 和 RMII。MII 需要 16 根數(shù)據(jù)/控制線信號多但時序要求相對寬松RMII 只需要 7 根線但要求 PHY 提供 50MHz 的 REF_CLK 時鐘。我這次產(chǎn)品板子上用的是 RMII 接法PHY 是 Microchip 的 LAN8720A地址默認是 0也可以通過外部引腳拉成 1。原理圖上 PHY 的 REF_CLK 是從 STM32F207 的 MCO 引腳引過去的 50MHz。這種接法在低成本產(chǎn)品里非常常見但更新驅(qū)動時必須要確認 PHY 實際的 MDIO 地址和時鐘來源不要照抄評估板的配置。2.3 時鐘鏈路是這次更新里最容易踩的坑STM32F2x7 的以太網(wǎng) MAC 需要兩個時鐘源一個是系統(tǒng) AHB 總線時鐘用于 MAC 內(nèi)核寄存器訪問另一個是 RMII 模式下 PHY 提供的 50MHz REF_CLK。這里的坑在于lwIP 的 BSP 里面通常直接把 MAC 內(nèi)核時鐘頻率寫進 HAL_ETH_Init 的 pInit 結(jié)構(gòu)體里。如果系統(tǒng)主頻是 120MHzAHB 分頻后給 ETH 的是 60MHz 或 120MHz那么初始化以太網(wǎng) MAC 時必須把EthInitStructure.ClockRange或 HAL 對應(yīng)字段設(shè)置為匹配的值。我看到過有人把老驅(qū)動里的 25MHz 參數(shù)原樣拷到新板子上導(dǎo)致 MAC 收發(fā)數(shù)據(jù)包時偶發(fā)錯位表現(xiàn)就是 ping 大包總丟小包沒問題。這種問題用示波器查不到只能從配置參數(shù)上排查。2.4 復(fù)位引腳和中斷引腳不能省PHY 的復(fù)位引腳通常接到 MCU 的 GPIO有的產(chǎn)品直接接 RC 上電復(fù)位??梢杂?GPIO 控制復(fù)位的話驅(qū)動初始化前先拉低再拉高確保 PHY 處于確定狀態(tài)。中斷引腳可選但我強烈建議留出來接到 MCU 的外部中斷上這樣 PHY 檢測到鏈路變化時可以主動通知 MCU而不必靠輪詢。舊驅(qū)動里如果沒接這個引腳程序只能靠周期讀 PHY 狀態(tài)寄存器判斷鏈路實時性差還容易漏事件。3. 新驅(qū)動文件落地從標(biāo)準(zhǔn)庫到 HAL 的關(guān)鍵差異與寄存器對照3.1 新舊驅(qū)動的文件結(jié)構(gòu)對比老項目用的是 ST 標(biāo)準(zhǔn)外設(shè)庫風(fēng)格驅(qū)動文件是 stm32f2x7_eth.c 和 stm32f2x7_eth.h再加上應(yīng)用層的 ethernetif.c。新版驅(qū)動換成 HAL 庫形式后核心文件是 stm32f2xx_hal_eth.c、stm32f2xx_hal_eth.h底層仍然依賴 stm32f2xx_hal_rcc.c 和 stm32f2xx_hal_gpio.c。兩者名字看上去都是 ETH但 API 設(shè)計完全不同不能直接改名替換。對比項舊驅(qū)動標(biāo)準(zhǔn)外設(shè)庫新驅(qū)動HAL 庫初始化入口ETH_Init(ETH_InitTypeDef*)HAL_ETH_Init(ETH_HandleTypeDef*)DMA 描述符管理直接操作 ETH_DMADescTypeDef 數(shù)組HAL 內(nèi)部管理 Tx/Rx 描述符鏈表PHY 讀寫直接 MDIO 寄存器操作HAL_ETH_ReadPHYRegister / WritePHYRegister中斷處理ETH_IRQHandler 手動清標(biāo)志HAL_ETH_IRQHandler 統(tǒng)一分發(fā)鏈接狀態(tài)應(yīng)用層自己輪詢HAL_ETH_GetLinkState / 回調(diào)機制這個表格里的差異不是簡單的函數(shù)改名而是驅(qū)動邊界的變化。HAL 庫把很多細節(jié)封裝到了內(nèi)部應(yīng)用層代碼更干凈但代價是如果出了問題追蹤起來需要更熟悉 HAL 的實現(xiàn)方式。3.2 初始化流程的對應(yīng)關(guān)系舊驅(qū)動的初始化順序是使能 ETH 時鐘和 GPIO 時鐘配置 GPIO 復(fù)用功能然后調(diào)用 ETH_Init 一次性設(shè)置 MAC、DMA、描述符。新驅(qū)動的初始化順序類似但被拆成了多個步驟ETH_HandleTypeDef heth; heth.Instance ETH; heth.Init.MACAddr mac_addr; heth.Init.MediaInterface HAL_ETH_RMII_MODE; heth.Init.TxDesc (ETH_DMADescTypeDef *)tx_desc_array; heth.Init.RxDesc (ETH_DMADescTypeDef *)rx_desc_array; heth.Init.RxBuffLen 1536; HAL_ETH_Init(heth); HAL_ETH_ConfigMAC(heth, mac_init); HAL_ETH_ConfigDMA(heth, dma_init); HAL_ETH_Start_IT(heth);看起來步驟差不多但因為 HAL 的HAL_ETH_Init內(nèi)部會自動讀取 PHY 的 ID 寄存器如果 PHY 沒有正常復(fù)位或 MDIO 引腳配置不對這個函數(shù)會直接返回 HAL_ERROR。老驅(qū)動里通常沒有這么嚴格的檢查所以同樣的板子老代碼能跑新代碼初始化失敗先從 PHY 復(fù)位時序和 MDIO 引腳配置查起。3.3 描述符結(jié)構(gòu)DMA 能訪問到的內(nèi)存才行STM32F2x7 的以太網(wǎng) DMA 使用描述符鏈表管理收發(fā)緩沖區(qū)每個描述符由 4 個 32 位字組成。舊驅(qū)動習(xí)慣把描述符定義成一個全局數(shù)組編譯器放在哪兒都能用。新版驅(qū)動中描述符數(shù)組必須放在 DMA 可以訪問的內(nèi)存區(qū)域而且地址要按 4 字節(jié)對齊。我在這次更新里遇到了一個奇怪現(xiàn)象編譯過后程序燒進去能進網(wǎng)但發(fā)幾個包后 DMA 就卡死。查到最后是描述符數(shù)組被鏈接到了外部 SDRAM 的區(qū)域雖然地址落在 4 字節(jié)對齊的邊界但外部存儲器的訪問時序和以太網(wǎng) DMA 的 Burst 模式不匹配。解決辦法是把描述符數(shù)組放到內(nèi)部 SRAM使用__attribute__((section(.ARM.__at_0x20000000)))這類方式顯式指定位置同時確認緩沖區(qū)也做了對齊。__attribute__((aligned(4))) ETH_DMADescTypeDef tx_desc[ETH_TX_DESC_CNT]; __attribute__((aligned(4))) ETH_DMADescTypeDef rx_desc[ETH_RX_DESC_CNT]; __attribute__((aligned(4))) uint8_t rx_buff[ETH_RX_DESC_CNT][1536];這個習(xí)慣要養(yǎng)成不要依賴編譯器的默認放置。3.4 寄存器級避坑MACCR 和 DMABMR 的幾個位不能亂動如果 HAL 封裝不能滿足你的定制需求還是得回去翻寄存器。STM32F2x7 的以太網(wǎng)核心寄存器主要有 MACCR、MACFFR、DMAOMR、DMABMR 等。MACCR 里的 RE、TE 位控制 MAC 收發(fā)使能更新驅(qū)動時如果有人直接操作寄存器容易把之前配置的自動協(xié)商、回環(huán)模式這些位覆蓋掉。HAL 庫里面的HAL_ETH_ConfigMAC會按傳入?yún)?shù)設(shè)置這些位相對安全。DMABMR 里有兩個位需要特別注意FBFixed Burst和 DADMA Arbitration。開啟 FB 后 DMA 使用固定突發(fā)長度吞吐量會明顯提升但外部 SDRAM 或某些 AHB 橋不支持這種突發(fā)模式時會導(dǎo)致 DMA 傳輸失敗。這次調(diào)吞吐量時我把 FB 打開速度從 5MB/s 提到了 8MB/s但跑到高負載時偶爾卡死關(guān)掉 FB 后穩(wěn)定性恢復(fù)速度略降到 7MB/s。最終權(quán)衡下來還是開著 FB但把內(nèi)存區(qū)域放到了內(nèi)部 SRAM問題就消失了。3.5 PHY 驅(qū)動從寫死改成參數(shù)化舊驅(qū)動里 PHY 初始化是硬編碼的比如把 BCR 寄存器直接設(shè)置為 0x1000 開啟自動協(xié)商。不同 PHY 的寄存器布局雖然基本遵循 IEEE 802.3但廠商的擴展寄存器差異很大例如 LAN8720A 的 RXER 計數(shù)器、DP83848 的 LED 控制。新驅(qū)動里我建議把 PHY 驅(qū)動單獨拆出一個文件通過一個結(jié)構(gòu)體描述 PHY 的 MDIO 地址、ID、復(fù)位引腳、中斷引腳以及需要在初始化階段寫入的寄存器列表。這樣以后換 PHY 型號只需要改表的配置不用動驅(qū)動主流程。4. FreeRTOS 接管后的任務(wù)切換、中斷優(yōu)先級和 DMA 內(nèi)存規(guī)劃4.1 以太網(wǎng)驅(qū)動掛在任務(wù)里還是中斷里這個問題我在項目初期糾結(jié)了很久。舊驅(qū)動是純輪詢方式在 while 循環(huán)里不斷調(diào)用 ethernetif_input 處理接收包。升級驅(qū)動后如果仍然把接收邏輯放到一個高優(yōu)先級任務(wù)里它和主任務(wù)搶 CPU 的問題不會消失。更好的方案是把以太網(wǎng) DMA 接收中斷打開在中斷服務(wù)函數(shù)里只做兩件事清中斷標(biāo)志、給 tcpip_thread 發(fā)信號量。真正的數(shù)據(jù)包解析、協(xié)議棧處理由 lwIP 的 tcpip_thread 完成。這樣以太網(wǎng)驅(qū)動不會占著 CPU 不放系統(tǒng)整體響應(yīng)更好。4.2 中斷優(yōu)先級配置不是越大越好越小反而危險FreeRTOS 的configMAX_SYSCALL_INTERRUPT_PRIORITY決定了哪些中斷可以調(diào)用 FreeRTOS 的 API。以太網(wǎng)中斷優(yōu)先級必須設(shè)置得比這個“安全閾值”更低也就是數(shù)值上更大否則中斷里調(diào)xSemaphoreGiveFromISR時可能破壞臨界區(qū)。STM32F2x7 使用 4 位優(yōu)先級數(shù)值從 0 到 150 最高。我項目里把configMAX_SYSCALL_INTERRUPT_PRIORITY設(shè)為 5ETH 中斷優(yōu)先級設(shè)為 6PHY 外部中斷設(shè)為 7。這樣保證以太網(wǎng)和 PHY 中斷都能正常調(diào)用 FreeRTOS 的 FromISR API同時又不和 systick、PendSV 沖突。#define configMAX_SYSCALL_INTERRUPT_PRIORITY 5 // HAL_NVIC_SetPriority(ETH_IRQn, 6, 0); // HAL_NVIC_SetPriority(ETH_WKUP_IRQn, 7, 0);4.3 中斷服務(wù)程序設(shè)計不要在中斷里搬數(shù)據(jù)以太網(wǎng)中斷觸發(fā)后DMA 已經(jīng)把數(shù)據(jù)放到了 rx_buff 數(shù)組里中斷里不需要再搬一次數(shù)據(jù)。我看到有些人習(xí)慣在中斷里調(diào)用 memcpy 把數(shù)據(jù)拷到另一個緩沖區(qū)這在低負載時沒問題但在高速收發(fā)時會導(dǎo)致中斷處理時間過長后續(xù)中斷被淹掉。正確做法是中斷里只設(shè)置一個標(biāo)志并喚醒接收任務(wù)接收任務(wù)里再把 rx_buff 中的數(shù)據(jù)交給 lwIP 的 PBUF。如果使用零拷貝連 memcpy 都省掉直接把新分配的 pbuf 地址映射到 DMA 描述符緩沖區(qū)這需要更細致的內(nèi)存池設(shè)計。我這次更新先用了普通拷貝版本穩(wěn)定性優(yōu)先等測到性能瓶頸再考慮零拷貝。4.4 DMA 緩沖區(qū)內(nèi)存規(guī)劃內(nèi)部 SRAM 優(yōu)先STM32F207 內(nèi)部 SRAM 總共 128KB其中 64KB 是普通 SRAM164KB 是 SRAM2。以太網(wǎng) DMA 描述符和緩沖區(qū)放在 SRAM1 和 SRAM2 都能訪問但要注意 4 字節(jié)對齊。我最終給以太網(wǎng)驅(qū)動劃分的內(nèi)存布局如下項目起始地址大小說明Tx 描述符數(shù)組0x200000004 * 4B * 8 128BTX_DESC_CNT 8Rx 描述符數(shù)組0x200001004 * 4B * 8 128BRX_DESC_CNT 8Rx 數(shù)據(jù)緩沖區(qū)0x200002008 * 1536 12288B每個緩沖區(qū) 1536 字節(jié)FreeRTOS 堆棧其余 SRAM動態(tài)分配heap_4 管理不要把描述符和緩沖區(qū)放在 CCM RAM 里STM32F2 系列沒有 CCM 這種 DMA 不可訪問的區(qū)域但如果你用 F4 的代碼習(xí)慣可能會把內(nèi)存放到__attribute__((section(CCM)))F2 上沒有這個區(qū)編譯直接報錯。4.5 lwIP 內(nèi)存配置也要跟著驅(qū)動一起更新驅(qū)動更新容易忽略 lwIP 的配套參數(shù)。lwIP 的內(nèi)存池大小和 pbuf 數(shù)量如果太小網(wǎng)絡(luò)在高負載下一樣丟包。根據(jù) 1536 字節(jié)的 MTU我調(diào)整了以下幾個關(guān)鍵配置#define MEM_ALIGNMENT 4 #define PBUF_POOL_SIZE 16 #define MEMP_NUM_PBUF 16 #define MEMP_NUM_TCP_SEG 32 #define TCP_SND_BUF 8 * 1024 #define TCP_WND 16 * 1024 #define MEM_SIZE (12 * 1024)這些值不是越大越好因為每多一份內(nèi)存就少一分給應(yīng)用任務(wù)的空間。我實測下來8 個收發(fā)描述符加 16 個 pbuf 池在 100M 網(wǎng)絡(luò)下已經(jīng)能穩(wěn)定跑滿 90% 帶寬。5. 實測數(shù)據(jù)從能 Ping 通到穩(wěn)定 11.5MB/s 的調(diào)優(yōu)路徑5.1 第一步先把鏈路層調(diào)通別急著跑 TCP/IP更新驅(qū)動后的第一個測試不是 ping而是看 PHY 的鏈接狀態(tài)。我寫了一段最簡單的測試代碼上電后循環(huán)讀取 PHY 的 BSR 寄存器打印 link status 和 speed/duplex。確認link up后再用 MDIO 讀 PHY ID 寄存器和 datasheet 上的值對照。這一步通過后才去配置 MAC 和 DMA。如果這一步就卡住回去查 PHY 復(fù)位、MDIO 上拉電阻、REF_CLK 是不是真的有 50MHz 方波。特別是 REF_CLK我很推薦用示波器量一下比盲猜快得多。5.2 ping 通了但不穩(wěn)定描述符數(shù)量和中斷閾值的關(guān)系我當(dāng)時第一次跑通 ping 后連續(xù) ping 10000 個包總有十來個包延遲偏高偶發(fā)丟包。排查了很久最終發(fā)現(xiàn)是 DMA 接收中斷觸發(fā)條件太激進。STM32F2x7 的 DMAOMR 寄存器里可以配置接收中斷在收到多少幀后觸發(fā)RTC 00每收到一幀都觸發(fā)RTC 01每收到兩幀觸發(fā)RTC 10每收到四幀觸發(fā)RTC 11每收到八幀觸發(fā)如果每幀都觸發(fā)CPU 中斷負載太高如果四幀觸發(fā)一次延遲又變大。我最后設(shè)置成兩幀觸發(fā)一次配合 FreeRTOS 的接收任務(wù)丟包率降到 0。5.3 用 iperf 測吞吐對比新舊驅(qū)動我在 PC 端用 iperf 測試 TCP 發(fā)送和接收吞吐設(shè)備端跑 lwIP 的 TCP echo 服務(wù)結(jié)果對比如下測試項舊驅(qū)動輪詢新驅(qū)動中斷 HALTCP 下行PC→設(shè)備5.2 MB/s11.5 MB/sTCP 上行設(shè)備→PC4.1 MB/s10.8 MB/sUDP 下行 1472B4.8 MB/s11.2 MB/sCPU 占用率滿速時87%41%11.5MB/s 大約等于 92Mbps已經(jīng)接近 100M 以太網(wǎng)的理論上限約為 11.8MB/s。優(yōu)化的主要功勞來自三塊中斷驅(qū)動替代輪詢、DMA 固定突發(fā)模式、FreeRTOS 的及時調(diào)度。舊驅(qū)動用輪詢方式不僅速度慢CPU 也被吃掉大半幾乎沒辦法同時跑其他任務(wù)。5.4 測試時長必須夠長別信五分鐘數(shù)據(jù)吞吐測試只能說明瞬時性能長期穩(wěn)定性是另一回事。我在調(diào)優(yōu)階段讓設(shè)備持續(xù)跑 TCP 發(fā)送、接收、雙向混合三種模式每種至少跑 12 小時。期間監(jiān)控任務(wù)棧高水位、FreeRTOS 堆剩余量、以太網(wǎng) DMA 描述符的使用情況。有個很值得注意的現(xiàn)象新驅(qū)動在剛啟動時表現(xiàn)很好但連續(xù)跑幾個小時后如果某個描述符狀態(tài)沒有及時清理接收方向會慢慢降速。這個問題在普通測試中看不出來必須跑長時間才能發(fā)現(xiàn)。根因是 HAL 的接收中斷處理里如果一幀數(shù)據(jù)校驗失敗描述符的 ownership 位沒有正確歸還給 DMA導(dǎo)致后續(xù)幀無法接收。處理辦法是在接收中斷里檢查描述符錯誤標(biāo)志錯誤幀直接歸還描述符不做協(xié)議棧處理。5.5 用任務(wù)運行時間統(tǒng)計驗證調(diào)度合理性調(diào)優(yōu)最后我打開 FreeRTOS 的configGENERATE_RUN_TIME_STATS實際看每個任務(wù)占用 CPU 的百分比。tcpip_thread 在高負載時大約占 60% CPU接收任務(wù)占 20%主業(yè)務(wù)任務(wù)只占 10%剩下給空閑任務(wù)。這個分布說明以太網(wǎng)驅(qū)動已經(jīng)把大量工作交給了 lwIP 自己的線程沒有在主任務(wù)里阻塞太久整體調(diào)度是健康的。如果接收任務(wù)占滿 CPU多半是每次中斷后沒有及時給 tcpip_thread 讓出執(zhí)行權(quán)或者描述符數(shù)量太少導(dǎo)致接收任務(wù)頻繁空轉(zhuǎn)。6. 三個反復(fù)踩的坑以及我最終留下的穩(wěn)定配置6.1 PHY 復(fù)位時序?qū)е碌某跏蓟〉谝淮斡眯买?qū)動時HAL_ETH_Init老是返回 HAL_ERROR但同樣的硬件在舊驅(qū)動里明明能跑。我一度以為新驅(qū)動有問題后來抓了時序才發(fā)現(xiàn)PHY 的復(fù)位引腳是 RC 上電復(fù)位芯片上電后 PHY 需要十幾毫秒才能準(zhǔn)備好 MDIO 通信。舊驅(qū)動沒有做 MDIO 讀操作自然感知不到這個時序問題新驅(qū)動在初始化 MAC 前會嘗試讀 PHY 的 ID所以 PHY 沒準(zhǔn)備好就直接失敗了。解決辦法是在調(diào)用 HAL_ETH_Init 前加上延時并且讓驅(qū)動每次都主動控制 PHY 復(fù)位引腳HAL_GPIO_WritePin(PHY_RST_PORT, PHY_RST_PIN, GPIO_PIN_RESET); HAL_Delay(50); HAL_GPIO_WritePin(PHY_RST_PORT, PHY_RST_PIN, GPIO_PIN_SET); HAL_Delay(100);之后 MDIO 讀 PHY ID 一次通過。這個經(jīng)驗提醒我新驅(qū)動檢查更嚴格不代表兼容性更差它只是把以前被掩蓋的問題暴露出來了。6.2 中斷標(biāo)志未清干凈導(dǎo)致的死循環(huán)HAL 庫版本的以太網(wǎng)中斷處理里如果沒有正確清除中斷標(biāo)志會頻繁進入中斷表現(xiàn)為程序卡在HAL_ETH_IRQHandler中出不來。我遇到的情況是 ETH DMA 的接收中斷標(biāo)志只清了一半導(dǎo)致進入中斷后馬上再次觸發(fā)。調(diào)試方法是在 KEIL 里打斷點觀察 ETH-DMASR 寄存器的值每次進入中斷后記錄哪些標(biāo)志位被置 1。正常流程下應(yīng)該同時確認DMASR的 NIS 和 RIS 位被清除。HAL 庫的HAL_ETH_IRQHandler內(nèi)部會處理大部分標(biāo)志但如果你在中斷里額外做了HAL_ETH_ReadPHYRegisterMDIO 操作會因為占用總線而延遲不要放在中斷里做。6.3 -O2 優(yōu)化等級下的描述符狀態(tài)異常這個坑比較隱蔽。程序在 -O0 下跑得好好的換成 -O2 優(yōu)化后網(wǎng)絡(luò)吞吐直接掉到原來的一半偶爾還出現(xiàn)發(fā)送卡死。查了幾天才發(fā)現(xiàn)編譯器認為描述符里的狀態(tài)字段在循環(huán)中不會被外部修改于是把某些讀取操作優(yōu)化掉了。DMA 硬件在后臺寫描述符CPU 讀到的卻是緩存的值。解決方法是把描述符結(jié)構(gòu)體里的狀態(tài)字段聲明成 volatile或者在讀取前加內(nèi)存屏障#define ETH_READ_DESC_OWN(desc) (((volatile ETH_DMADescTypeDef *)(desc))-Status)STM32F2 的 Cortex-M3 沒有數(shù)據(jù)緩存不像 F7/H7 那樣有 cache 一致性問題但在高優(yōu)化等級下編譯器對內(nèi)存訪問的重排和優(yōu)化仍會造成類似現(xiàn)象定義 volatile 是最穩(wěn)妥的處理。6.4 最終固化的穩(wěn)定配置經(jīng)過一周的折騰我把最終驗證過的配置整理成一張表之后換板子、換 PHY 都直接按這個模板套配置項取值說明HAL 庫版本STM32Cube_FW_F2_V1.27較新穩(wěn)定版lwIP 版本2.1.2配合 HAL 的 ethernetif 示例PHY 芯片LAN8720AMDIO 地址 0RMIIREF_CLKMCO 輸出 50MHz測量確認頻率穩(wěn)定Tx 描述符數(shù)8可調(diào)Rx 描述符數(shù)8可調(diào)Rx 緩沖區(qū)大小1536B對齊到 4 字節(jié)中斷優(yōu)先級ETH6, PHY7configMAX_SYSCALL_INTERRUPT_PRIORITY5DMA 突發(fā)模式Fixed Burst內(nèi)部 SRAM 時開啟lwIP PBUF_POOL_SIZE16實測穩(wěn)定這套配置在壓力和長穩(wěn)測試下跑了半個月表現(xiàn)穩(wěn)定。最后說一句很實際的體會驅(qū)動更新最怕的不是代碼量大而是對底層機制理解不透徹碰到問題只能靠試。我在這次更新中最大的收獲其實是把 STM32F2x7 以太網(wǎng)從“黑盒”變成“灰盒”知道它怎么初始化、怎么搬數(shù)據(jù)、怎么和 FreeRTOS 配合之后再遇到網(wǎng)絡(luò)疑難雜癥至少知道往哪個方向查。希望這篇經(jīng)驗?zāi)軒湍闵僮邘撞綇澛贰?
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产精品乱码久久久久久久久| 大香蕉之青青草原| 中字幕人妻一区二区三区| 久久婷婷在线观看视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 69久久久久久久久久久久久| 97人妻色| 亚洲天堂人妻熟妇视频| 思思热国产高清| 久久思思热| 亚洲无线观看久久| 91黄射| 噜噜噜久久亚洲精品色情| 色色色热| 亚洲另类电影| 久久久爆乳翘臀一线天伦理视频| 无码自拍SM| 国产AV高清AV无码| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 黑人嘿嘿嘿超爽免费视频| WWW操逼| 三级日韩一区二区三区| 亚洲色狠| 成·人免费午夜在线观看| 国产精品高朝久久久久久久| 天天综合网亚洲综合网| 日本淫穴在线| 天欧美在线| 情侣操 逼视频99| 99热aaa| AV一二区| 欧美色997| 久久人妻精品| 日本一二区免费| 色色热| 26uuu国产| 青草视频在线看看看看看看看看看| 色墦五月丁香| 丁香六月婷婷久久综合| 午夜啊啊啊| 超碰午夜在线| 国产一区二区三区久久精品太古里| 日日日啊啊啊| 中文字幕人乱码中文字的预防方法 | 国产中文大片资源中文字幕| 黑丝自慰喷水网站| 日本福利二区视频| 国产超碰国产97| 久久熟女人| 97玖玖人妻| 91亚州欧美| 四虎在线免费视频| 91高潮| 久久婷婷电影网| 人妻夜夜爽天天爽三区麻豆AV网站| 97在线免费| 一级性爱视频免费在线| 黄色性爱网网| 99热这里只有精| 91老司机在线视频免费观看| 日韩国产九九精品一区二区三区毛片| 欧美色图亚洲色,麻豆| 蜜桃久久一区二区三区| 欧美亚州色的图| 国产女人高潮嗷嗷嗷叫小说| 国产乱码精品一区二区三区四川| 人妻精品视频一区二区| 女同在线视频一区| 黑人精品久久97| 美女性91| 欧美日韩另类在线播放| 凸凹视频在线观看| 60秒免费小视频| 久操av在线| 91亚洲欧美激情| 成人精品在线免费视频| 日韩中文字幕在线视频观看| 1000午夜黄色| 欧差乱伦二三| 免费综合亚洲中文| 任你干在线视频| 免费视频观看60秒| 中文字幕精品一区欧美| 金典av| 欧美操逼录像国产黄色国产| 国产精品免费日韩| 歐美一級亂黃99在綫精品| 青青草玖玖爱| 天天激情综合站| 夜夜高潮夜夜爽| 强免费黄色网址| 中文字幕55555| 嫩草美女久久| 岛国小电影| 青青草在线视频播放器| 三级AV入口| 日韩三四五区| 日韩99999| 中文字幕一区电影在线观看| 久久亚洲不卡一区二区三区 | 国产肏逼网站| 久久久九九网站| 老司机久久| 亚洲精品久久久久毛片A片拉屎 | 日本 情色 1区| 国产精品麻豆视频网站| 天天日美女的B| 秋霞网无码| 天美精品av| 亚洲第一页色网| 老司机射| 人妻丝袜一区二区三区在线| 啊啊啊用力在线观看| 91欧美综合| 尹人大香蕉视频在线| 欧美色图片欧美色图| 天天操人人操狠狠插| 2025亚洲男人天堂| 精品久久人妻成人网| 亚洲色图尤物视频| 欧美国产有色电影| 欧美久久伊人| 午夜亚洲| 久久久久久久久久久人妻| 99re视频在线播放青草| 丁香久久| 亚洲精品一二牛牛| 中文字幕女同在线| 蜜桃av综合网发布| 亚洲男人的天堂va亚洲男人社| 久久东京国产精品视频| 激情一区二区| 少妇与黑人高潮在线| 欧美18老人禁| 亚洲大胆人体av| 口爆吞精在线观看| 97天天| 韩国一区二区精品亚洲| 日韩免费中文字幕视频| 狠狠色一区二区中文字幕| 3D污黄视频在线观看| 亚洲男人天堂2| 91精品国产综合久久久蜜臀| 国产 无码 一区二区| 亚州五月| 大香蕉伊人一区在线观看| 俄罗斯一区二区视频在线观看| 1二区9| 欧亚性爱啪啪| 国产乱伦视频污| 97 视频在线| 香蕉人人操tv| 成人精品在线免费视频| 日韩中文9| 超碰日本97美女人妻人人玩人人爱| 日日摸天天爽夜夜欢| 欧美视频第二页| 欧美成人四级在线播放| 亚洲欧洲成人在线电影| 欧美极品色| 伊人天堂在线| 欧美一区二区亚洲天堂| 视频一区二区三区精品| 亚洲 日本 不卡| 综合激情97 | 日日干日日操五月天伦理视频| 国产乱伦亚洲| 色妇综合网| 高清肉丝中文无码| 91亚洲不卡一区| 欧美系列在线一区二区| 亚洲色图欧美一区二区不卡| 九九九九精品一区| 日本超碰97日韩精品人妻| 激情五月天丁香社区| 操逼操2| 中文字幕av片| 国产极品馒头逼| 九九九只有精品| 乱伦av.com| 人妻三级在线中文字幕| 国产精品高朝久久久久久久| 久久亚洲不卡一区二区三区| 你懂得91| 国产 v乱码一区二| 成人性爱av| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | AV一起草在线| 欧美 亚洲| 裸体1区| 发朗少妇买婬全视频中文| 久久成人午夜精品影院| 一级做a爰片久久毛片图片| 青青草好吊色| 国产久久久久久| 国产久久av| 成人A片男人的天堂| 日少妇视频| 中文字幕在线第二页| 成人色女网| 欧美久久婷| 国产欧美伊人| 亚洲人妖网| 国产精品亚洲色婷婷久久久| 国产精品网站免费| 99人妻| 久久婷婷一区| 欧美九九九九九| 性九九九九九九| 97一区二区三区视频| 亚洲人在线| 亚洲色堂免费视频| 亚洲日韩青青草色月| 宅男91视频在线播放| 另类综合另类| 天天干天天日天天射黄色| 欧美九九爱| 黄色污污污污污污网站| 色妇91| 天美传媒av一区二区| AV丝袜东京热| 九九九九九九免费视频| 中文字幕青青草| 国产精品一区二区三区四区五区| 九九无码| 亚洲天天自拍| 97狠狠| 91亚州| 日韩熟女三十乱伦| 日本三级一区二区 在线| 亚洲欧综合另类无码一区| 超碰到97情色| 1024精品在线| 成全动漫视频观看免费下载| 一级aaaaa欧美中文字幕录像片| 亚洲国产成人福利在线观看| 午夜一区| 婷婷国产精品九区| 亚洲清纯综合| 91少妇| 夜夜操美女| 蜜乳AV网址| 日韩亚洲美女一区久久| 素颜老阿姨乱情色| 好吊色青靑草| 亚洲国产精品无码AV在线| 成人午夜无码视频| 69人妻精品丰满熟女区| 亚洲风情综合网| 不卡视频一区蜜桃视频| 91精品女厕偷拍视频| 久久一级无码精品毛片6| 99啪啪| 久久中日麻豆| 久久久夜夜夜| 五月天婷精品激情| 口爆欧美91| 欧美三四五区| 精品久久久久av影院| 99久久九九| 上床不卡网站| 亚洲综合91| 诱惑人妻欧美一区在线播放| 91丝袜在线播放| 天天色天天干天天射| 69超碰综合| 色偷综合| 国产在线激情视频| 桃色人妻在线视频| 丰满的三级少妇欧美久久久| 精品一区二区久久| 中文字幕一区二区三区四区在线视频| 人妻熟女av国产网站| 97玖玖超碰| 97视频播放| 久久久精品视频免费观看| 伊人久久国产免费观看视频| 男人天堂导航| 久久久免费一级黄片| 色九月综合| 91情色在线| 户外裸露刺激视频第一区| 色女99一级片在线观看| 91丨人妻丨国产丨丝袜| 久久色情| 校园春色美腿丝袜 | 久久性爱视频| 600国产精品视频| 人人做人人妻人人夜视频| 色 亚洲 91| 久久久一区二区三区三州| 亚洲精品久久久久久久久豆丁网| 久久青青草在线视频| 美女自卫慰黄网站免费| 丰满人妻-区二区三区免费看| 无码操逼网| 日韩精品99久久久久久中文字幕 | 噜噜噜无码AV一级一级久久影院| 中文在线视频| 五月丁香啪啪啪| 在线视频资源| 91一区二区| 亚洲精品人体| 天天干2区3区| 国产亚洲精品美女久久久| 亚洲性综合| 欧日韩在线观看| 最新三级网址| 国产成人91一区二区三区| 三男一女不戴套的A片| 九九天堂| 色婷婷六月丁香七月婷婷| 中文久久一区| 日韩操逼HD| 97超碰亚洲| 超碰人妻天天干| 久草精品视频| 丁香五月天啪啪| 麻豆成人影音在线| 91中文精品日韩欧美在线| 亚瑟国产精品久久无码| 国产风韵犹存熟妇三区| 99在线观看| 99999精品| 久草婷婷| 伊人操操| 人妻偷拍一区二区三区| 99性爱视频| 狠狠操使劲操| 国产精品午夜精品| 九九热九九热| 亚洲九月丁香| 91色综合| 激情文学小说一区二区| 熟妇女人妻呻吟久久AV| 久久久精品视频免费观看| 九九九九九九九九九国产精品| 性色乱AV一区二区| 国产一级黄色片在线观看| 色五月av| 久久久月天| 国产一区麻豆免费观看| 超碰国产在线| 最新中文字幕精品在线| 美女黄网| 欧美黑人与女人91| 久久高清无码夜夜操| 日本中文字幕熟妇| 日本A级视频| 婷婷伊人綜合中文字幕| 日韩熟女乱伦中出| 91天天综合在线| 国产AV天美传媒一区二区三区| 人妻少妇视频在线播放| 国产区91柔拿会所技师| 97免费视频在线观看| ...日韩成人一区二区三区字幕| 日韩三级视频一区二区三区| 日本高清_区二区三区| 翔田千里AV无码秘 三区| 九九九九九九九| 成人 日本A片无码8888| 国产免费小视频| 白天啪啪晚上啪啪视频| 日本免费不卡二区| 色香色欲天天综合网天天来吧| 久9久9久9久9久9久9| 草b在线| 日本精品高清一二区一本到| 国产乱伦性爱区| 精品91日日夜夜超清资源| 青青青草伊人精品| 婷婷六月色开| 久操不卡视频| 黑人精品成人一区二区三区| 亚洲无无码αⅴ每日更新| 深夜视频| 伊香蕉综合久久久久久久噜噜噜 | 97干在线视频| 久久这里只| 亚洲双插| 性爱动态120秒| 国产传媒一区二区三区| 夜夜人妻爽| 亚州色图欧美| 日韩美女高潮喷水视频| 99蜜桃臀久久久欧美精品网站| 九九九九九九九九九九九免费国产| 久久久久久欧美精品se一二三四| 成人AV在线电影| 国产精品青草综合久久| 五月丁香啪| 99综合| 99激情视频| 九色97| 九九热免费国产视频婷婷伊人五月| 黄色污污污污污污网站| 青青草视频爽一爽| 东京热不卡视频| 色www精品视频在线观看| 日日噜噜夜夜久久亚洲一区二区| 国产免费一区| 亚洲精品人体| 日本十八禁免费看污网站| av无线看| 国产精选三级在线观看| 五月丁香| 永久免费观看的毛片的网站| 色女综合| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 男人天堂2030| 五十路六十路七十路熟婆| 亚洲人妻在线一区| 骚逼高潮久久精品| 久久久18禁| 97精品视频在线播放| 亚洲男人的天堂va亚洲男人社| A级国产欧美激情在线| 99久久国产精品免费高潮| 少妇一区二区三区精选| 91在线无码精品秘 软件| 无码免费一区二区三区啪啪| 麻豆一区在线| 欧美综合区| 欧美美女自慰一区二区三区| 欧美日韩婷婷中文| 97视频免费播放| 国产日韩在线播放av| 丰满人妻av一区二区三区| 欧美国产日韩清纯唯美| 97操在线| 日韩国产精品人妻无码久久久| 久操凹凸视频| 丁香激情五月| 色亚州人久干视频在线观看免费版| 午夜啊啊| 性开放中文AV高清无码免费看| 日韩有码免费视频| 精品人妻伦一区二区三区久久| 国产精品视频在线观看| 日韩视频啪啪| 亚洲美女30b| 操久久久久| 美女操逼福利视频| 96国产污污污丝袜| 亚洲欧美第一页| 女人被添高潮免费视频| 亚洲色图欧美另类在线| 极品欧美一区二区三区| 成人五月香网在线| 青青草这里只有精品| www.大香| 色大师网站www永久网站视频| 激情欧美97| 99久久婷婷国产综合| 操曰本熟女| 欧美精品久久久久久久丰满| 美国美女AV在线| 极品色综合| 日本黄 R色 成 人网站| 精品一区99999| 中日韩欧美精品无码AⅤ一区二区| 天天看综合网| 啊啊啊啊免费视频| 毛片电影一区二区三区| 蜜桃臀av一区二区| 欧美婷婷| 亚洲精品少妇| 素人播放一区| 国产强奸乱伦第1页| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 精品无码人妻一区二区免费蜜桃| 96精品久久| 婷婷综合五月| 人人妻人人爽人人精品| 激情综合网五月婷婷| 尤物视频新赏网鲜网色诱网| 日本女人操逼| 久九九九| 大香蕉十区| 国产在线强奸视频| 青青操在线视频| 中文字幕在线日亚洲9| 麻豆尤物视频网| 一二三区在线| 国产午夜精品理论片一二三区区 | 天天看片青娱乐| 情色日播放AV| 强奸乱伦免费网站| 亚洲日韩乱码中文无码蜜桃臀网站 | 国产尹人在线视频免费| 日韩熟女精一区二区三区不卡| 99这里有精品| 久久国产逼| 天天综合亚洲综合| 日本97久久久精品| 中文字幕精品一区二区精| 欲色啪| www.99热| 欧美精品一区二区少妇免费A片| 曰本91情色| 极品极品色影院| 97爱爱爱| 久久久999网站| 一级黄色视频网| 中文字幕第二页| 中文字幕丝袜美腿| 人妻碰碰碰碰碰碰| 亚洲一曲日韩精品| 亚洲欧美综合网| 99久久无色码| 国人欧美精品一区二区| 91性片| 亚洲AV不卡在线观看尤物| 凸凹视频在线观看| 天天干人人看综合| 91日韩网站| 91夜夜蜜桃臀1区2区3区| 午夜无码精品免费看性色| 亚洲欧美日产国产91毛片| www.色操逼| 欧美极品美女aaaaaa级黄片| 一本一道久久综合久久| 91麻豆天美传媒HD| 五月综合久久| 成人性爱高清视频免费看| 囯产精品久久久久久久久久二区三区| 欧美激情久久久久| 图色综合网| 99热这里是精品| 草草网站影院白丝内射| 午夜福利国产欧美日韩夜夜| 日日夜夜骑| 色阁阁AV综合网| 亚州成人a∨| 91久久婷婷| 91天堂色男人的天堂| 操逼网站网站| 91精品国产综合久久久蜜臀酒店| 97欧美色综合| 日本中文字幕一区| 性爱欧美五月| 亚洲av热热色| 天天爽夜夜欢视| 嗯啊不要在线| 亚洲成人网站在线观看| 日韩午夜精品一区二区三区电影| 日本操逼aaaaa| 欧美爱爱97| 色欲久久99国产精品久久久久久| 亚洲熟妇白浆无码AV| 东北女人操比视频| 色阁阁AV综合网| 欧美另类自拍| 亚洲自拍一区夜夜操| 亚洲91网。| 中文乱码99| 高清不卡一二三区视频......| 欧美精品四区| 久久久com| AV天天综合| 亚洲日韩肥臀视频在线观看| 午夜精品99久久久久传媒| 中出91| 丝袜六区| 人人手机欧洲亚洲国产人妻| 一本正道久久熟女| 亚洲国产欧美一区二区潘金莲| 天天操夜夜嗨| 欧美一级在线观看成人| 乱伦熟妇一区二区| 国产亚洲深夜激情| 欧美成人四级在线播放| 久久‘黄片视频| 国产精品老师| 美女超碰978| 亚洲aw毛茸茸在线| 99久久99九九99九九九| 国产黄色av大片网站| 欧美色91| 91精品久久久久| 色97干| 日韩国语字幕| 国产强奸乱伦xd| 亚洲欧洲综合视频在线| 久久婷婷五月天| 18精品一二区| 素颜老阿姨乱情色| 新精精品久久精品| 国产成人亚洲精品无| 婷婷四五区| 久插综合| 91伊人久久在线| 91精品导航| 丰满人妻aA一区二区三区| 超清福利精品视频在线| 秋霞曰韩R级| julia高潮后不停追击中出| 五月天春色激情网| 人人妻人人狠人人| 思思久热在线精品66| 成人97人人超碰人人| 国产欧美岛国精品一区| 一本道综合色图| 久久天天躁日日躁狠狠躁 | 97硬碰| 日韩人妻精品| 亚洲春色一区二区三区| 九九探花视频在线观看| 九一屌逼| 91老司机视频| 中国一区二区亚洲人妻| 日韩丝袜人妻AV| 另类老少妇| 久久精品国产精品一区| 欧美黄片视频在线观看免费| 超碰 另类 欧美| 91N综合网| 精品人妻1区| 色婷婷五月天| 少妇99| 亚洲欧美一区二区网址| 大香蕉五月天| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 欧美97| 色5月婷婷| 激情情色五月天| 中国AV美女| 欧美熟妇视频| 久久久久夜夜夜夜| 成人精品在线| 欧美视频一区二区三区| 国产性感骚丝袜在线| 桑老女人九区| 久久久免费的精品| 白丝少妇一区二区| 欧美乱伦专区| 人妻激情偷乱视频一区二区三区 | 无码二级三级| 午夜电影在线观看无码专区| 欧美激情视频一区二区三区不卡| 亚州欧美在线| 日韩乱插| 综合网少妇| 国产版a级片直播在线| 亚洲s色图| 欧美性爱中文字幕无线码| 99xav| 91精品女厕偷拍视频| 99re69| 国产女人与拘做受视频免费| 97精品第3页| 又大又长又粗又爽又黄| 欧美韩国你懂得在线 | 99国内熟女露脸视频| 无码人妻精品一区二区中文| 国产天天看| 老司机天天操| 亚洲精品97中文字幕| 亚洲第2页| 国产中文字幕在线观看| 激情综合婷婷| 欧美日韩传媒| 精品无吗久久| 日韩Va亚洲va欧美Ⅴa久久| 亭亭在线资源| 97婷婷色| 精品无码欧美三级| 无码久| 亚洲图片偷拍视频区| 欧美色综合网| 欧美日韩人人精品| 日韩性爱人人爱人人操| 欧美亚洲清纯| 精品国产嫩穴视频| 日本 色 导航| 中文字幕色AV| 性色avv| 亚洲第一黄色av网站| 97国产精选| 翘臀vidoes| 97在线观看播放视频| 久久是精品| 中文伊人大香蕉视频| 波多野结衣一级视频| 久热一区二区| 天堂国产AV| 欧美熟妇精品黑人巨大91| 美欧老女人97| 97资源视频| 玖玖资源视频一区二区三区| 亚洲少妇激情一区二区三区| 精品视频在线观看| 欧美熟妇亚洲版| 爱射综合| 激情五月天插| 国产久久久| 精品中文一区二区| 1956日韩精品| 日本性爱少妇| 国产1024在线播放| avav青青草久久夜| 色av中文字幕| 男人的天堂2010| 性开放中文AV高清无码免费看| 97免费视频在线| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 人妻铁牛TV| 久久久国产成人一区二区三区在线| 色嗨嗨在线| 免费99精品国产自在在线| 五月婷婷五月天| 欧美色图色综合| 少妇蹲下买菜露大唇0| 精品少妇人妻av久久免费| 男人兔费天堂| 亚洲Av无码成人精品国产| 翔田千里无码一区| 色97干| 啊啊啊啊啊舒服| 男人天堂日日夜夜| 成年女人一区| 99热这里只有精品9| 国产精品自在自拍视频| 国产操逼视频在线观看| 亚洲无码视频免费在线观看网址!| 91痴汉| ...日韩成人一区二区三区字幕| 久久的网站啊啊啊啊啊| 97人肏| 国产成人亚洲精品自产在线| 亚洲中文字幕av| 中国探花熟女| 中文字幕一区日韩精| 熟女人妇一区二区三区| 极品尤物自安慰| 成人性爱av.com| 日韩在线一区二区| 一本大道不卡一二三区| 国产大陆天天艹| 自怕偷自怕亚洲精品| 浓厚中出中文字幕在线| 久久伊人亚洲AV无码网站| 国产精品又黄又猛又粗| 久久在线观看免费视频| 黄色无码高清黄色无码网站| 亚洲综合91| 国产中出内射一区二区| 在线毛片片免费观看| 成人精品久久久午夜福利| AⅤ片水多多| 人人摸.人人色| 黄色片,com| 欧美另类精品xxxx| 操屄不卡视频| 婷婷五月天av| 大香蕉伊人一区在线观看| 男人的天堂.com| 欧美情色贴图| 中文字幕免费看| 国产又粗又长的视频| 色臀AV| 26UUU欧美日本| 中文字幕一区二区日韩网| 在线一道啪| 熟女被操视频网址| 爱爱动态120秒| 国产综合久久久鬼色| 夜夜 中文视频rt| 人妻少妇精品无码专区二区密桃| 日骚逼视频| 久9re热视频这里只有精品| 亚洲色系另类精品国产| 日韩精品在线观看网站| 精品妇女一区二区三区| 日日夜夜噜| 青青草在线视频播放器| 色欲天天综合久久久无码网中文| 久久精品国产99精品亚洲蜜...| 在线人人人人人人精品超 | 97视频在线观看播放与子乱对白在线……| 综合亚洲情色| 久久国产精品视频| aaa亚无码专区| 国产第25页在线观看| 激情色色| 久久精品视频在线观看| 桑老女人九区| 国产精品分类在线观看| 韩国一级做A片免费的| 无码99| 91处女在线视频| 亚洲欧美第一页| 成人免费不卡在线视频| 中文一区二区婷婷视频| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 男人的天堂com| 男女激烈网站最新| 久久天堂婷婷网| 亚洲日本天堂| 五月天婷婷在线看| 狠狠穞A片一區二區三區| 丁香婷婷激情五月天无毒不卡| 丝袜美腿丝袜| 日韩中文字幕人妻视频| 中文字幕日韩国产传媒欧美精品| 97草草| 成人a级高清视频在线观看| 夂久色| 国产夫妻性生活视频| 岛国激情视频在线观看| 野狼激情网| 中文字幕第二页| 国产精品久久久无码AV网站| 精品网站9999| 天天影视亚洲| 国产免费久久久久| 久草草一二三四区久久| 91亚洲色图| 色婷婷在线视频| 亚洲偷91色| 中文字幕一区二区日韩网| 久久婷婷五月综合| 国产成人精品必看| 综合av社区| 国产农村妇女一区二区| 全国男人天堂网| 日本欧美亚洲高清在线看| 久草资源在线视频官方总站日韩丝袜美腿 | 日日夜夜骑| av天堂手机版追回| 啊啊啊啊啊啊啊在线| 亚洲国产成人福利在线观看| 美女啪欧美一区| 100啪啪视频大全| 久久国产视频专区一二三| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 精品成人av一区二区三区在线| 天天综合麻豆视频| 国产三级多多影院2022国产AA一级毛片无码 | 手机久操欧美综合色码| A级毛片在线看免费| 久草资源在线视频官方总站日韩丝袜美腿| 日韩在线国产字幕| 红桃视频高潮| 欧美偷拍区| silk lablo在线观看一区二区| 免费黄色片。| 色五月激情AV在线| 操逼网免费无码视频| 青青草五月份天| 激情综合五月天| 白丝av| 国产精品色哟哟| 欧美操逼熟女| 亚洲综合另类色图| 开心五月婷婷| 国产精品久久久久久亚洲色欲| 亚州再线| 岛国片国产成人亚洲播放| …中文字幕亚洲乱,97人妻无码费视…| 每日更新AV| 欧美伊人电影| 久久e6只有精品| 岛国激情视频软件| 国产97视频| 91无码西班牙视频在线| 色欲人妻一区二区在线| 日日操丁香五月天| 欧美午夜熟妇黑人精品91| 天天日天天插| 国产高清精品一区二区三区毛片| wuyechaopeng| 麻豆天美国美国产| 2018天天干在线视频| 国产精品夜夜夜| 亚洲。日韩。欧美| 强奸乱伦日韩AV| 97超碰碰| 久草线上视频免费看| 亚洲色图激情小说| 久久久久久久国产视频| 躁躁躁日日躁2020| 97爱b| 夂久色| 免费公开人人操| 久久人妻熟女一区二区| 欧美日韩国产电影| 熟女性视频| 人人摸人人添人人操 | 日韩一级欧美一级国产一级台湾 | 免费一级性爱久久| 色官网色综合| 性色avv| 欧美另类丝袜熟女| 亚欧无码在线| 色男人色天堂东京热| 亚洲精品啪视频| 爆操无码| 69XX一中文字幕人妻91| 一级久久久久久久久久久| 亚洲天堂男人天堂| 日韩无码服务区| 天天日天天舔东京热| 涩五月婷婷| 午夜影美女日鸡鸡天天视频国产| 97日韩| 舔人妻中文免费视频| 欧美日韩一干二干| A V少妇特黄三级| 激情五月天丁香社区| 午夜操逼不卡| 黄片视频观看| 天美传媒AV在线| 日韩无码服务区| 欧美日韩天堂| 安徽熟妇视频| 东北黄色电影| 调教熟妇 久久久久久| 激情干在线| 东京热男人的天堂精品| 成人性爱免费播放| 人妻铁牛TV| 亚洲男人天堂AV| 精品国产乱码久久久久久久久久毛片 | 欧美天天拍| 91啪啪| 天天干天天插| 99在线观看| 丁香啪啪| 国产67194| 无码伊人久久大杳蕉中文无码| 色哟哟511老熟女| 日韩在线性爱免费视频| 国产精品视频自拍在线| 午夜视频久久久久一区| 国产在线综合网| 天天射天天| 黄色香蕉视频网站一区| 欧美片第一页| 亚洲天堂在线怕怕视频| 桃花色综合影院| 国产a片操逼| 午夜福利激情在线视频| 啪啪啪东京| 国精品一区二区三| 欧美专区第一页| AVE乱伦| 国产熟女二区| 国产精品麻豆成人AV艾秋| 久久女婷| 欧美性天天影视| 亚洲精品97在线| 久久久国产精品人妻丝袜| 9久久美女首页| 久久久精品中文字幕麻豆| 欧洲大香蕉| 色路综合| 91亚州| 日韩欧洲操屄视频| 美女操逼福利视频| 717影院理论午夜伦八戒| 婷婷五月天激情小说| 欧美精品成人亚洲| 91高跟美女在线播放| 国产99999久久精品| 哈哈操 大香蕉| 欧亚日韩中文在线| 久综合国内精品自在自线| 亚州AV无码国产精品| 五月丁香啪啪啪| 亚州精品丝袜-不卡成人免费| 好看的久久不射无码影视影院| 美国三级日本三级久久99| 欧美宗合色| 久久国产性爱| 91美女中出| 欧美人妻色| 亚洲操操操无码| 国产成人亚洲精品无码最新在线| www.yeyecao| 久9视频| 九九热超碰97亚洲最新香蕉 | 91人妻精华帖| 99无码视频| 九X超碰| 日天天九九天堂666| www.亚洲成人一区| 亚洲色啪| 夜草欧美| 久久六六| 在线观看国产黄色| 97激情97激情| 久久精品操| 国产9 9在线 | 亚洲| 久9热| 在线观看视频91| 999久久久| 婷婷五月天激情网| 综合亚洲情色| 人人妻人人澡人人爽久久av| 亚洲乱伦图片视频| 久久伊人在线五区| 欧美性爱超碰97| www.久久最新地址| AV天堂电影网| 天啪| 妺妺跟我一起洗澡没忍住| 久久亚洲不卡一区二区三区| 99热这里都是精品| 丰满高潮18xxxx| 在线黄色污污网站| 夜夜骑夜夜操| 好吊妞转入那个网| 岛国天天午夜影院传媒网| 欧美Ⅴ性爱| 男人天堂一区二区| 中文字幕精品乱码| 久热热| 五月丁香啪啪网| 欧美黑人91| 韩国黄片aaaa| 少妇500双飞99| 毛片一区二区| 殴美,日韩国产伦精品| 91天天综合在线观看| 天天搞在线综合网| 国产av热热色| 一级日本牲交大片好爽在线看| 精品人妻二区三区| 日日超碰亚洲| 97天天爽| 精品视频一二三中文| 丁香六月婷婷久久综合| 老熟女综合网| 婷婷色播婷婷| 国产精品97视频| 9色在线| 蜜桃臀av一区二区| 狠狠综合| 亚洲成人ab| 天堂蜜桃无码视频一区二区| 99re视频在线播放青草| www.夜夜操| 欧美第二页| 91九九九馒头| 嫩草美女久久| 1204金沙人妻懂旧版免费| 久久久久亚洲AV无码专区少妇| 九九九久久久久| 中国zzijzzijzzwww精品| 九九九九免费高| 久久九九精品一区二区| 国产夫妻性生活视频| 黄色操人| 欧美视频激情久久久久久| 性在久久久久久| 五十路成人在线视频二区三区| 国产超碰| 欧美啪啪色吧在线| 亚洲国产一区二区三区在线| 超碰97人人cao| 天天操人人操骚逼网站| 国产精品爽爽va在线观看98| aV中文麻| 欧美专区在线| 黄色片,com| 殴美色网| xxx亚洲午夜天堂| 国产亚洲精品美女久久久久久2021| 国产欧洲精品亚洲午夜拍精品| 综合久久欧美| 天天肏天天干| 精品一国2| 色噜噜婷婷| 熟女激情综合网| 亚洲在钱| 人妻精品综合中文字幕在线| 国模私拍一区二区三区神乳| 久湿久久| 野狼激情网| 国产精品久久99日日| 97亚洲综合在线| 欧美色九九九| 成人福利视频网| 草草电影院| 蜜桃臀一区二区aV| 爆乳免费黄网站| 国模艳艳啪啪一区| 国产精品久久久久久久久久久久久久吹| 亚洲91网。| 综合色图区| 7777奇米影视久久| 亚洲无码日韩电影| 欧美日韩天堂| 午夜精品一区二区三区三上悠亚| 国产精品久久久久无码A√| 天躁夜夜躁2021| 裸体1区| 国产黄a三级三级三级av在线看| 亚洲国产尤物yw在线观看| 久久久亚洲| 91激情国产| 国产美女口爆吞精| 黄色污污污污污污网站| 一级久久久久久久久久久| 婷婷超| 夫妻日逼| 日人妻视频91| 久久久久国产亚洲一区欧美色图日韩| 欧美国产伊人久久久久| 天久久久噜噜噜久久国产精品爽爽 | 亚洲精品人妻吞精av| 99色视频| 亚洲精品美女久久久久久久久| 啊啊啊啊好爽好舒服一区二区易域| 国产视频第2页| 91在线一起| 男人的天堂2018.| 成人色女网| 久久久久久网址| 欧美色吧综合| 色婷婷五月天| 国产美女高潮叫床视频| 天天操天天干一区二区 | 欧美午夜视频免费观看| 人妻精品综合中文字幕在线| 欧美与日韩97| 欧美日韩在线小说 | 影音资源男人日韩| 97九色| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 色偷偷色偷偷欧美日韩| 久久久久久久久久久久久久9999| 人妻AV在线| 久久综合婷婷| 五月天色综合| 久热婷婷| 97精品综合久久| 性爱av网站| 自拍偷拍 日韩无码| 精品偷拍13p欧美dodk视频| 高潮毛片无遮挡高清免费| 九九视频黄色片| 啪啪啪精品| 国产一区二区三区视频在线看| www.亚洲成人一区| 操www| 色综合V| 为用户提供免费看黄网址在线观看| 综合伊人激情| 一个色导综合| 国产女人和拘做爰视频| 亚洲成人日韩小说| 99久久精品无码一区二区| JIZZJIZZ国产精品喷水| 丁香五月综合| 亚洲色图大香| 第二页中文字幕| 免费看污网址|