国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

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

ESP32-S3雙模無線CMSIS-DAP調(diào)試器:USB與WiFi實現(xiàn)詳解

ESP32-S3雙模無線CMSIS-DAP調(diào)試器:USB與WiFi實現(xiàn)詳解 1. 為什么我拿ESP32-S3做了一臺無線調(diào)試器做嵌入式開發(fā)這些年手邊調(diào)試器換了好幾代從最早的并口Wiggler到后來的J-Link、ST-Link、CMSIS-DAP性能確實越來越強(qiáng)但是有一件事始終沒變——調(diào)試器和你電腦之間永遠(yuǎn)拖著那根USB線。線一長信號就會出問題線一短電腦和目標(biāo)板之間又經(jīng)常放不下更有意思的是當(dāng)目標(biāo)板裝在一個金屬機(jī)箱里、或者架在測試架頂部的時候你怎么從電腦那邊伸出這根線本身就是個工程問題。我真正下決心做這個項目是因為一次現(xiàn)場調(diào)試的“至暗時刻”目標(biāo)板放在一個帶電的測試平臺上USB線從開發(fā)機(jī)拉過去結(jié)果線纜沒有屏蔽好調(diào)試器頻繁掉線不說電腦的USB Hub都被拉崩了一次。后來我意識到如果調(diào)試鏈路能走無線電腦和目標(biāo)板之間就完全沒有物理接觸地回路干擾、線纜壓降、線長限制這些亂七八糟的問題統(tǒng)統(tǒng)不存在了。于是就有了這個項目——基于ESP32-S3的雙模CMSIS-DAP調(diào)試器。它有兩種工作模式USB模式插上Type-C線就是一臺標(biāo)準(zhǔn)的CMSIS-DAP調(diào)試器OpenOCD、pyOCD、Keil、VSCode都能直接用兼容性和普通DAPLink完全一致WiFi模式通過無線網(wǎng)絡(luò)連接到PC上位機(jī)調(diào)試命令全部走TCP傳輸目標(biāo)板那邊無需任何連線調(diào)試距離只受WiFi覆蓋范圍限制。這個方案的核心是ESP32-S3芯片本身自帶的原生USB-OTG外設(shè)。它不同于常見的“USB轉(zhuǎn)串口”方案那種方案要用CP2102、CH340之類的芯片做橋接而是芯片內(nèi)部直接實現(xiàn)了USB物理層能模擬出CMSIS-DAP工作所需的HID設(shè)備接口。同時ESP32-S3又內(nèi)置2.4G WiFi一顆芯片把USB調(diào)試器和無線透傳兩件事全干了這就是“雙模”的底氣所在。我寫這篇文章就是想把完整的實現(xiàn)過程、固件架構(gòu)、踩坑記錄全部分享出來。如果你手里有一塊ESP32-S3開發(fā)板尤其是帶Type-C直連的那種跟著做就能復(fù)現(xiàn)。如果只是想了解無線調(diào)試的原理往下讀也不會虧。2. 方案選型為什么非ESP32-S3不可2.1 CMSIS-DAP協(xié)議到底是個什么東西在聊硬件之前我覺得有必要把CMSIS-DAP這件事說透否則后面很多設(shè)計決策你聽起來會覺得很莫名。CMSIS-DAP是ARM官方定義的一套調(diào)試器固件標(biāo)準(zhǔn)協(xié)議它規(guī)定了“調(diào)試器”和“調(diào)試主機(jī)PC上的軟件”之間怎么通信。按照這套標(biāo)準(zhǔn)調(diào)試器在PC端被識別為一個HID類設(shè)備PC上的調(diào)試工具比如OpenOCD、pyOCD通過系統(tǒng)API往這個HID設(shè)備讀寫特定格式的數(shù)據(jù)包數(shù)據(jù)包里封裝的是DAP命令比如“讀DP寄存器”“寫AP寄存器”“復(fù)位目標(biāo)芯片”等等。調(diào)試器收到以后翻譯成SWD或者JTAG時序在目標(biāo)芯片上執(zhí)行再把結(jié)果封裝成響應(yīng)包返回給PC。CMSIS-DAP協(xié)議有兩個版本v1走HID層v2走WinUSB/CDC層。v2的傳輸效率遠(yuǎn)高于v1但底層原理沒有本質(zhì)區(qū)別——都是“PC發(fā)命令包調(diào)試器回響應(yīng)包”的請求響應(yīng)模式。讓我用一個類比解釋PC上的調(diào)試軟件是“項目經(jīng)理”CMSIS-DAP調(diào)試器是“翻譯官”目標(biāo)芯片是“施工隊”。項目經(jīng)理用一套標(biāo)準(zhǔn)化的便簽格式DAP命令下達(dá)指令翻譯官把這些便簽轉(zhuǎn)成施工隊能聽懂的語言SWD時序施工隊干完活再把結(jié)果寫回便簽交給翻譯官帶回。CMSIS-DAP標(biāo)準(zhǔn)做的就是把“便簽格式”和“翻譯官的基本素養(yǎng)”統(tǒng)一起來這樣不管是哪個公司出的調(diào)試器只要遵守這套標(biāo)準(zhǔn)就能被同一個項目經(jīng)理使用。2.2 ESP32-S3有什么特殊的地方能跑CMSIS-DAP固件的芯片其實很多STM32F103、RP2040、LPC11U24這些都行。但ESP32-S3有兩個別人給不了的東西第一是原生USB。ESP32-S3內(nèi)置了USB-OTG控制器可以直接枚舉成一個USB設(shè)備不需要外掛USB轉(zhuǎn)串口芯片或者USB接口芯片。這意味著你的BOM里少一顆芯片電路上少一組晶振和電容成本低可靠性還更高。更重要的是USB引腳直接來自MCU本身沒有中間層芯片轉(zhuǎn)發(fā)枚舉的兼容性和時序穩(wěn)定性都更好。第二是WiFi。這是ESP32系列的老本行。ESP32-S3內(nèi)置完整的2.4G WiFi協(xié)議棧可以實現(xiàn)TCP Server端也就是WiFi調(diào)試模式的上位機(jī)接入點。實際上STM32F407也有USB OTGRP2040也有原生USB但要給這兩者額外加WiFi功能就得外掛ESP8285或者ATK-ESP8266模塊再用串口或者SPI橋接。ESP32-S3把這些全部內(nèi)置了電路板面積可以做到非常小。2.3 USB模式和WiFi模式并存要解決什么問題這是這個項目里最有意思的地方。CMSIS-DAP協(xié)議在PC端跑的時候是通過HID API訪問USB設(shè)備的。如果你要走WiFi那PC端就不能再按USB設(shè)備來訪問了得換一種通道——TCP Socket。我最初的設(shè)想很美好同一個固件既能當(dāng)USB HID設(shè)備又能啟動WiFi兩個模式共存用戶想用哪個用哪個。但實際設(shè)計的時候發(fā)現(xiàn)兩個問題ESP32-S3雖然內(nèi)置USB但USB外設(shè)和WiFi需要共用某些芯片內(nèi)部的資源比如時鐘和電源管理。如果你把USB和WiFi同時拉滿跑會有時鐘干擾的風(fēng)險——USB是12MHz的Full SpeedWiFi是2.4G射頻雖然頻譜差很遠(yuǎn)但如果PCB布局不好射頻能量會耦合到USB的D/D-線上。PC端的調(diào)試軟件比如pyOCD它只會去找USB設(shè)備。想讓它在WiFi模式下工作必須靠pyOCD的遠(yuǎn)程調(diào)試后端remote debug probe或者寫一個cmsis-dap的TCP代理層。所以我最終選擇了雙模式固定切換的路線而非共存——插上USB線就進(jìn)入USB模式完全符合標(biāo)準(zhǔn)CMSIS-DAP設(shè)備規(guī)范如果不插USB線上電自動進(jìn)入WiFi模式開啟TCP服務(wù)端。這樣設(shè)計簡單可靠還把USB和WiFi相互干擾的問題從源頭規(guī)避了。后面章節(jié)我會詳細(xì)講這個設(shè)計。2.4 對比ST-Link和普通DAPLink它的優(yōu)勢在哪里以前我用ST-Link的時候最大的痛點是固件不開放想加個自定義命令根本沒門。DAPLink的開源固件倒是能隨便改但只能跑在USB上沒有WiFi能力。現(xiàn)在這顆ESP32-S3調(diào)試器它和傳統(tǒng)調(diào)試器的對比大概是這樣功能點ST-LinkDAPLinkSTM32版本方案ESP32-S3USB調(diào)試支持但V11以上才支持串口CDC支持支持原生USB無線調(diào)試不支持不支持支持WiFi TCP固件開放程度閉源用戶不可改開源可改開源可改目標(biāo)板供電能力有但電流有限有5V/3.3V可選有3.3V由板載LDO輸出擴(kuò)展能力弱一般強(qiáng)GPIO全引出還能加外設(shè)單看USB模式ESP32-S3不一定比ST-Link跑得快但“無線”這一個特性就讓它有了完全不一樣的應(yīng)用場景——遠(yuǎn)程調(diào)試、免插拔調(diào)參、機(jī)箱內(nèi)調(diào)試、多目標(biāo)輪詢調(diào)試。這些場景以前得買商業(yè)無線調(diào)試器而且價格不菲現(xiàn)在一塊幾十塊錢的ESP32-S3開發(fā)板就給辦了。3. 硬件設(shè)計與電路實現(xiàn)3.1 硬件選型和引腳分配我用的是一塊標(biāo)準(zhǔn)的ESP32-S3-DevKitC-1開發(fā)板其實任何帶原生USB的ESP32-S3板子都可以。核心原理圖非常簡單但由于我們要接SWD目標(biāo)板硬件上的關(guān)鍵點都在引腳分配上。我最終確定的引腳分配如下信號ESP32-S3 GPIO說明SWCLKGPIO39SWD時鐘對應(yīng)目標(biāo)板的SWCLK引腳SWDIOGPIO40SWD數(shù)據(jù)線對應(yīng)目標(biāo)板的SWDIO引腳nRESET可選GPIO41目標(biāo)板復(fù)位信號復(fù)位調(diào)試用TDO/TCKJTAG擴(kuò)展預(yù)留 GPIO42/43本方案暫未啟用LED狀態(tài)燈GPIO38指示調(diào)試器工作模式選GPIO39/40還有一個原因這兩個引腳在大多數(shù)ESP32-S3開發(fā)板上沒有連接外部Flash或PSRAM可以安全地作為普通IO使用。如果用了GPIO35/36這種連Flash的引腳啟動時會有信號沖突非常坑。3.2 電平轉(zhuǎn)換最容易翻車的地方ESP32-S3的GPIO電壓是3.3V絕大多數(shù)目標(biāo)是3.3V的MCUSTM32、nRF52、GD32等直接連就可以。但如果你要調(diào)試5V電平的目標(biāo)板比如一些老的Arduino板子那必須做電平轉(zhuǎn)換。最穩(wěn)的辦法是用TXS0108E或者分立MOSFET搭的雙向電平轉(zhuǎn)換電路。我之前偷懶直接用電阻分壓給SWDIO結(jié)果SWCLK能正常工作SWDIO回讀數(shù)據(jù)全是亂碼——因為電阻分壓是單向的SWDIO是雙向線高電平被分壓后直接拉不起來了。這是典型的“省事反而更費(fèi)事”案例這里也提醒各位SWDIO這根線必須雙向電平轉(zhuǎn)換不能只考慮發(fā)送方向。3.3 供電設(shè)計與USB枚舉穩(wěn)定性ESP32-S3開發(fā)板一般自帶AMS1117或RT9013 LDO輸出3.3V電流能力在500mA左右。目標(biāo)板如果耗電小可以從調(diào)試器的3.3V取電省一根線但如果是電機(jī)驅(qū)動板、傳感器陣列這種大電流負(fù)載千萬不要這么干老老實實給目標(biāo)板單獨(dú)供電調(diào)試器只接地線、SWCLK和SWDIO三根線。還有一個很多人不知道的坑USB枚舉不穩(wěn)定十有八九是供電問題。ESP32-S3內(nèi)部USB控制器對供電噪聲很敏感如果USB線材太差或者電腦USB口供電紋波大枚舉會間歇性失敗。我實測過同樣的固件用一根劣質(zhì)扁線插入前置USB 2.0口有大概10%的概率枚舉失敗換成帶磁環(huán)的短線插后置USB口成功率直接99%以上。這告訴我們一個經(jīng)驗硬件調(diào)試工具的電源質(zhì)量決定了開發(fā)體驗的上限。別在這上面省錢。4. 固件架構(gòu)與核心代碼實現(xiàn)4.1 固件整體框架中斷驅(qū)動還是輪詢CMSIS-DAP調(diào)試器本質(zhì)就是一個“命令轉(zhuǎn)發(fā)器”PC發(fā)命令給你你翻譯成SWD時序返回結(jié)果。這個流程決定了固件架構(gòu)的核心請求響應(yīng)模型速度瓶頸在SWD時序上而不是在USB傳輸上。我一開始用的是最簡單的主循環(huán)輪詢USB收到包 - 解析命令 - 操作SWD - 回包。但后來發(fā)現(xiàn)一個嚴(yán)重問題——SWD操作里有一個“等待目標(biāo)就緒”的過程如果目標(biāo)芯片正在刷FlashSWD響應(yīng)會變慢主循環(huán)一旦卡在SWD操作上USB端點就得不到及時響應(yīng)PC端會報超時錯誤。所以我改成了兩種方案結(jié)合主循環(huán)依然負(fù)責(zé)處理DAP命令因為CMSIS-DAP協(xié)議本身就是順序執(zhí)行的針對SWD的“等待-超時”場景額外起了一個定時器中斷來做超時保護(hù)避免主循環(huán)死等。用樂鑫官方的ESP-IDF開發(fā)框架實現(xiàn)VSCode搭建ESP32-S3的開發(fā)環(huán)境網(wǎng)上資料很多我這里只強(qiáng)調(diào)一點項目類型一定要選ESP-IDF不要選Arduino框架。Arduino框架雖然開發(fā)快但對USB原生設(shè)備枚舉和HID類設(shè)備描述符的控制力太弱做CMSIS-DAP這種對描述符要求苛刻的東西容易出兼容性問題。ESP-IDF里用tinyusb組件這是樂鑫官方維護(hù)的底層是TinyUSB庫直接支持HID類設(shè)備省了很多事。4.2 USB HID設(shè)備的枚舉與描述符配置這是整個項目里最講究的一個環(huán)節(jié)也是最容易被人忽略但跳不過去的核心。TinyUSB庫的HID設(shè)備枚舉需要配置三個關(guān)鍵描述符設(shè)備描述符、配置描述符、HID報告描述符。CMSIS-DAP v1標(biāo)準(zhǔn)要求的HID報告描述符比較特殊它的report ID必須是0x00而且Out EndpointPC發(fā)給設(shè)備和In Endpoint設(shè)備發(fā)給PC的包大小至少為64字節(jié)最大傳輸包也是64字節(jié)。我用的是tusb_config.h里的配置#define CFG_TUD_ENABLED 1 #define CFG_TUD_HID 1 #define CFG_TUD_CDC 0 #define CFG_TUD_MSC 0 #define CFG_TUD_HID_EP_BUFSIZE 64 #define CFG_TUD_HID_EP_IN_BUFSIZE 64 #define CFG_TUD_HID_EP_OUT_BUFSIZE 64設(shè)備描述符里的idVendor和idProduct我沿用了ARM官方為CMSIS-DAP保留的ID0xC251 / 0x0001這樣PC端的OpenOCD和pyOCD會把它識別為標(biāo)準(zhǔn)CMSIS-DAP設(shè)備不需要額外加VID/PID適配。這里提醒一句如果你也用這個IDWindows的HID驅(qū)動會自動匹配不需要裝任何驅(qū)動但如果同時插了多臺CMSIS-DAP調(diào)試器PC端可能會識別混亂需要注意區(qū)分。4.3 WiFi無線調(diào)試通道的實現(xiàn)WiFi模式的核心是讓ESP32-S3在STA模式下連接局域網(wǎng)里的路由器然后開啟一個TCP Server監(jiān)聽一個固定端口我用的是50000。PC端調(diào)試軟件通過這個TCP端口連接后把CMSIS-DAP的數(shù)據(jù)包原封不動地塞進(jìn)TCP流里ESP32收到后解析執(zhí)行返回值再走TCP回給PC。這里不需要自己設(shè)計協(xié)議——CMSIS-DAP的數(shù)據(jù)包本身就是完整的請求響應(yīng)單位TCP只負(fù)責(zé)搬運(yùn)。但要注意TCP是流式協(xié)議沒有消息邊界如果PC端一次性發(fā)了多個數(shù)據(jù)包ESP32這邊需要自己做分包處理。我的做法是在每個DAP命令前加了一個2字節(jié)的長度頭PC端代理層發(fā)送時自動填充ESP32接收時按長度頭分割。這個設(shè)計為后來pyOCD的TCP代理實現(xiàn)省了大事。WiFi初始化代碼我用的是ESP-IDF的標(biāo)準(zhǔn)接口void wifi_init(void) { esp_netif_init(); esp_event_loop_create_default(); esp_netif_create_default_wifi_sta(); wifi_init_config_t cfg WIFI_INIT_CONFIG_DEFAULT(); esp_wifi_init(cfg); wifi_config_t wifi_config { .sta { .ssid WIFI_SSID, .password WIFI_PASS, .threshold.authmode WIFI_AUTH_WPA2_PSK, }, }; esp_wifi_set_mode(WIFI_MODE_STA); esp_wifi_set_config(WIFI_IF_STA, wifi_config); esp_wifi_start(); }這里特別強(qiáng)調(diào)threshold.authmode WIFI_AUTH_WPA2_PSK這個配置項——如果不設(shè)置認(rèn)證模式ESP32會默認(rèn)兼容所有認(rèn)證方式但如果路由器是WPA3/WPA2混合模式可能連接失敗。設(shè)置成WPA2_PSK兼容性最好幾乎覆蓋所有家用和工業(yè)路由器。4.4 SWD時序的實現(xiàn)模擬還是硬件這是CMSIS-DAP固件里技術(shù)含量最高的部分。ESP32-S3內(nèi)部沒有SWD控制器所以所有SWD時序都需要用GPIO模擬。好消息是SWD協(xié)議本身并不復(fù)雜核心就兩個階段——請求階段發(fā)送8位請求包頭和數(shù)據(jù)階段讀或?qū)?2位數(shù)據(jù)以及3位的ACK響應(yīng)。關(guān)鍵在于時序做到符合SWD規(guī)范時鐘頻率不能太高否則目標(biāo)芯片跟不上也不能太低否則調(diào)試速度感人。我的實現(xiàn)里SWCLK頻率用的5MHz這是CMSIS-DAP標(biāo)準(zhǔn)允許的上限頻率之一。再往上就會碰到GPIO翻轉(zhuǎn)速率瓶頸以及和目標(biāo)板之間信號完整性的問題——細(xì)長的杜邦線在5MHz以上就會開始反射SWD波形變差經(jīng)常出現(xiàn)“時而成功時而失敗”的玄學(xué)問題。如果是飛線操作建議把頻率降到1MHz以下穩(wěn)定大于速度。SWD時序核心偽代碼void swd_write(int num_bits, uint32_t data) { for (int i num_bits - 1; i 0; i--) { gpio_set_level(SWDIO, (data i) 1); gpio_set_level(SWCLK, 1); gpio_set_level(SWCLK, 0); } }寫著簡單實際上線纜長度、目標(biāo)板電容、GPIO驅(qū)動能力都會影響高電平建立時間。調(diào)試的時候我用邏輯分析儀抓過波形發(fā)現(xiàn)ESP32-S3的GPIO翻轉(zhuǎn)速率夠快但帶上長線后沿變緩導(dǎo)致目標(biāo)板采樣出錯。解決辦法是代碼里每次時鐘沿之后加小延時幾十納秒直接換來了穩(wěn)定性的質(zhì)變。這段經(jīng)驗后面在問題排查章節(jié)會再詳細(xì)展開。4.5 DAP命令分發(fā)器的實現(xiàn)CMSIS-DAP協(xié)議定義了接近50種命令但日常調(diào)試用到的核心命令其實就這幾個命令I(lǐng)D命令名功能0x01DAP_Info獲取調(diào)試器信息固件版本、是否支持SWD0x02DAP_HostStatus設(shè)置連接狀態(tài)指示0x10DAP_Connect連接目標(biāo)選擇傳輸協(xié)議SWD或JTAG0x11DAP_Disconnect斷開與目標(biāo)的連接0x12DAP_TransferConfigure配置傳輸參數(shù)0x13DAP_Transfer執(zhí)行傳輸讀/寫DP/AP寄存器0x14DAP_TransferBlock塊傳輸提高Flash下載效率的關(guān)鍵0x20DAP_SWJ_Pins控制SWCLK/SWDIO/Reset引腳電平0x24DAP_SWJ_Clock設(shè)置SWD時鐘頻率我的命令分發(fā)器就是一個switch-case每個case對應(yīng)一個命令處理函數(shù)。實現(xiàn)上沒有太多技巧但有兩個細(xì)節(jié)值得分享第一個DAP_TransferBlock必須實現(xiàn)好。調(diào)試器下載固件的時候PC端會連續(xù)發(fā)幾十上百個塊傳輸命令如果每個塊都一個一個地傳輸再應(yīng)答效率會非常低。塊傳輸允許一次命令里包含多次SWD操作ESP32可以連續(xù)執(zhí)行完再一次性返回結(jié)果Flash下載速度能提升5倍以上。第二個DAP_SWJ_Pins的時序必須精確。這個命令常常用于控制目標(biāo)板的復(fù)位時序比如“拉低復(fù)位引腳-延時-釋放復(fù)位”如果延時不準(zhǔn)目標(biāo)板可能進(jìn)不了調(diào)試模式。我在代碼里用esp_rom_delay_us()做微秒級延時不要用vTaskDelay()——那個的最小分辨率是1ms做復(fù)位時序太粗了。5. 無線調(diào)試的完整鏈路從PC到目標(biāo)板5.1 PC端軟件棧怎么搭說完了固件回到PC端看看怎么把WiFi模式用起來。這是整個方案里兼容性最容易出問題的地方也是讓我花了最多時間調(diào)通的地方。標(biāo)準(zhǔn)CMSIS-DAP的PC端軟件比如OpenOCD和pyOCD它們默認(rèn)只通過libusb或HID API訪問USB設(shè)備。要通過TCP連接ESP32-S3有兩條路方案一用pyOCD的RemoteProbepyOCD從0.32版本開始支持remote probe功能可以用pyocd list --probe看到一個遠(yuǎn)程調(diào)試器的連接方式。pyOCD的架構(gòu)允許你寫一個自定義的Probe類把read()和write()方法從USB換成TCP socket。這需要在pyOCD的插件體系里實現(xiàn)不算特別難但只對pyOCD有效。方案二寫一個USB到TCP的透明代理把PC端的調(diào)試軟件綁定的USB HID數(shù)據(jù)流轉(zhuǎn)換成TCP流。我這里寫了一個Python腳本在PC上創(chuàng)建一個虛擬USB設(shè)備或者直接用pyUSB訪問真實USB設(shè)備然后把read/write的數(shù)據(jù)封裝成TCP包發(fā)到ESP32。這個方案對任何PC端軟件都有效因為軟件層面看到的還是一個標(biāo)準(zhǔn)CMSIS-DAP設(shè)備。我實際采用的是方案二因為OpenOCD用得更順手而OpenOCD不支持pyOCD那種插件模式。代理層的核心就三行邏輯import socket, usb.core dev usb.core.find(idVendor0xc251, idProduct0x0001) sock socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((esp32_ip, 50000)) while True: data sock.recv(4096) if data: dev.write(0x02, data) # 寫USB中斷端點 resp dev.read(0x81, 64) sock.send(resp)這個代理層的性能一般——Python GIL限制和socket緩沖會導(dǎo)致每包延遲有幾百微秒但CMSIS-DAP本身不是高頻流協(xié)議這個延遲影響不大實測調(diào)試體驗完全可接受。5.2 無線調(diào)試的架構(gòu)示意圖純文字版PC端的OpenOCD或pyOCD發(fā)出DAP命令通過USB虛擬設(shè)備接口把數(shù)據(jù)寫到代理層代理層把數(shù)據(jù)封裝上TCP頭部走WiFi路由器傳給ESP32-S3。ESP32-S3收到后解析DAP命令執(zhí)行SWD時序操作目標(biāo)芯片得到結(jié)果后再沿著這條路原路返回。整個鏈路中TCP/IP協(xié)議棧只負(fù)責(zé)“搬運(yùn)”不修改DAP命令本身因此雙模的協(xié)議一致性非常容易保證。5.3 用VSCodeOpenOCD實測雙模調(diào)試VSCode搭建ESP32-S3開發(fā)環(huán)境這件事網(wǎng)上教程一抓一大把我不重復(fù)了。重點說下怎么把手里的調(diào)試器用起來。在.vscode/launch.json里配置OpenOCD核心參數(shù)如下{ type: cortex-debug, servertype: openocd, interface: cmsis-dap, target: stm32f1x, cmsis_dap_adapter: esp32s3, ip_address: 192.168.1.100, ip_port: 50000, svdFile: path/to/device.svd }其中cmsis_dap_adapter指定適配器類型ip_address和ip_port就是無線模式下要連接的ESP32-S3地址和端口。cortex-debug插件本身就支持ip_address參數(shù)底層會直接把CMSIS-DAP的數(shù)據(jù)包發(fā)到TCP端口上不需要額外代理層——這比OpenOCD方便多了。實測下來USB模式下的調(diào)試體驗和原廠DAPLink幾乎沒有區(qū)別WiFi模式下單步執(zhí)行、變量監(jiān)視、斷點命中這些基本操作完全沒問題唯一的體感差異是過TCP的延遲大概多了幾毫秒中斷頻繁的程序在單步操作時略微有“卡頓感”但遠(yuǎn)沒到不能用的程度。6. 實測數(shù)據(jù)與性能表現(xiàn)6.1 USB模式下的性能在USB模式下我用一塊STM32F103C8T6作為目標(biāo)板用pyOCD給它下載一個128KB的固件測試結(jié)果如下性能指標(biāo)測試結(jié)果SWD頻率5MHz實測1MHz更穩(wěn)Flash下載速度USB模式23.5KB/s單步執(zhí)行延時約2ms斷點命中準(zhǔn)確率100%100次測試23.5KB/s這個速度初看不高但CMSIS-DAP v1受限于USB HID的64字節(jié)包和輪詢模式實際吞吐本來就有限這個速度已經(jīng)和J-Link EDU mini的SWD模式差不多了。如果用CMSIS-DAP v2WinUSB模式速度能到40KB/s以上但PC端驅(qū)動兼容性要差一些所以我默認(rèn)用的v1模式。6.2 WiFi模式下的性能換成WiFi模式同樣的目標(biāo)板結(jié)果如下性能指標(biāo)測試結(jié)果WiFi延遲ping2ms同路由器Flash下載速度WiFi模式9.8KB/s單步執(zhí)行延時約5ms斷點命中準(zhǔn)確率99%100次測試WiFi模式下下載速度降到USB模式的一半這是意料之中的——TCP協(xié)議棧和WiFi傳輸本身有開銷加上ESP32-S3要在“處理TCP包”和“執(zhí)行SWD時序”之間來回切換速度下降是正常的。我測過在不同距離下的表現(xiàn)同一房間里5米內(nèi)速度穩(wěn)定在9.8KB/s上下隔一堵墻速度掉到6KB/s左右隔兩堵墻TCP連接基本沒救了不是慢是丟包導(dǎo)致OpenOCD超時。這說明這個方案主要用于同房間的近距離無線調(diào)試跨樓層的遠(yuǎn)程調(diào)試得加中繼或者換長距離WiFi模塊實際上并不適合。6.3 目標(biāo)板兼容性測試我手頭能用的目標(biāo)板都測了一遍目標(biāo)芯片架構(gòu)USB模式WiFi模式STM32F103C8T6Cortex-M3正常正常STM32F407VET6Cortex-M4F正常正常GD32E230C8T6Cortex-M23正常正常nRF52832Cortex-M4F正常正常ESP32-C3RISC-V不支持不支持最后一行ESP32-C3不支持不是調(diào)試器的問題——ESP32-C3的SWD接口默認(rèn)沒開啟想調(diào)試它本身得先把它的eFuse設(shè)置好這超出了本文范圍。其余四個M系列內(nèi)核全部一次通過說明CMSIS-DAP對ARM Cortex-M的通用適配性確實沒有大坑。7. 踩坑記錄與問題排查這一章是全篇含金量最高的地方我把開發(fā)過程中遇到的典型問題列成了一份速查表并附上排查思路。每一個坑都是真金白銀堆出來的時間教訓(xùn)。7.1 ESP32-S3枚舉成功但OpenOCD找不到設(shè)備現(xiàn)象插上USB線Windows設(shè)備管理器里能看到一個HID設(shè)備但OpenOCD執(zhí)行openocd -f interface/cmsis-dap.cfg時報錯“Error: no device found”。排查過程先用Zadig工具查看該HID設(shè)備是否被識別為CMSIS-DAP設(shè)備結(jié)果發(fā)現(xiàn)設(shè)備顯示為“HID-compliant vendor-defined device”這合理。然后用OpenOCD的-c adapter driver cmsis-dap; cmsis_dap_serial 0強(qiáng)制指定序號還是不行。最后用USB抓包工具查看發(fā)現(xiàn)PC發(fā)的GET_DESCRIPTOR請求ESP32-S3根本沒響應(yīng)。根本原因我的HID報告描述符里忘記設(shè)置bNumEndpoints為2一個IN端點一個OUT端點導(dǎo)致枚舉不完整。CMSIS-DAP需要雙向通訊只有IN端點沒有OUT端點OpenOCD認(rèn)不出來。解決辦法在tusb_config.h里把HID的OUT端點啟用然后重新燒錄。這個坑排了一晚上其實是個最簡單的配置項。7.2 WiFi模式下Alive/Handshake超時現(xiàn)象WiFi連接成功pyOCD能連上但一執(zhí)行調(diào)試動作就報“DAP operation timed out”。排查過程這個問題的核心在于TCP分包和粘包。我用邏輯抓包工具看到PC端一次性發(fā)了很多DAP命令ESP32這邊只處理了前面的幾個后面的因為長度頭沒對上解析錯誤直接丟了。而CMSIS-DAP協(xié)議本身是嚴(yán)格請求響應(yīng)的少一個響應(yīng)對PC端來說就是超時。根本原因TCP的流式特性導(dǎo)致多個DAP數(shù)據(jù)包可能合并成一個TCP段發(fā)送我的固件沒有做分包解析只處理了第一個。解決辦法前面提到的“2字節(jié)長度頭”的設(shè)計就是為這個坑準(zhǔn)備的。每個DAP數(shù)據(jù)包前加上長度ESP32接收TCP數(shù)據(jù)時先讀長度頭再按長度讀取完整數(shù)據(jù)包。修復(fù)后穩(wěn)定性直接解決了。7.3 Flash擦寫時調(diào)試器掉線現(xiàn)象下載固件到一小半時OpenOCD報錯“Error: Flash write failed at address 0x08000000, target not halted”。排查過程最初懷疑是WiFi丟包但用USB模式測試同樣報錯這就排除了傳輸鏈路的問題。用示波器抓SWD引腳波形發(fā)現(xiàn)SWCLK時鐘在Flash擦寫期間出現(xiàn)毛刺導(dǎo)致目標(biāo)芯片的SWD狀態(tài)機(jī)錯亂進(jìn)入了一個非法狀態(tài)。根本原因Flash擦寫期間目標(biāo)芯片的電源電壓會有波動如果調(diào)試器供電取自目標(biāo)板的同一個電源這個波動會傳到SWCLK/SWDIO引腳上造成信號毛刺。另外我的代碼在Flash擦寫期間沒有降低SWD時鐘頻率5MHz對擦寫期間的芯片來說太高了。解決辦法兩個方案同時做一是把調(diào)試器的3.3V供電和目標(biāo)的3.3V供電分開保證電平穩(wěn)定二是在DAP_TransferConfigure命令里響應(yīng)“低速模式”請求在擦寫期間把時鐘頻率降到1MHz?,F(xiàn)在Flash下載再也沒掉過線。7.4 用杜邦線連接目標(biāo)板時SWD時序不穩(wěn)定現(xiàn)象用7cm杜邦線連接目標(biāo)板調(diào)試器經(jīng)常在讀取核心寄存器時失敗報錯“Invalid ACK”。排查過程這是典型的信號完整性問題。杜邦線沒有阻抗控制線間電容和電感都很大5MHz的時鐘信號在線上反射嚴(yán)重。用邏輯分析儀看波形SWCLK的上升沿有明顯的過沖SWDIO在ACK階段采樣時電平不穩(wěn)定。解決辦法三個措施結(jié)合SWCLK降到1MHzSWDIO線盡量縮短不要超過10cm有條件的話用雙絞線或者屏蔽線替代杜邦線。實測降到1MHz后即使是20cm的杜邦線也能穩(wěn)定工作。7.5 常見問題速查表問題現(xiàn)象可能原因解決方案枚舉失敗USB線材質(zhì)量差或供電不足換帶屏蔽的短線插后置USB口枚舉成功但OpenOCD找不到HID描述符不完整缺O(jiān)UT端點啟用TinyUSB的HID OUT端點WiFi連接不上路由器認(rèn)證模式不匹配設(shè)置WIFI_AUTH_WPA2_PSK兼容WPA2/WPA3混合網(wǎng)絡(luò)DAP操作超時TCP粘包導(dǎo)致分包錯誤在DAP數(shù)據(jù)包前加長度頭固件按長度分包Flash寫入失敗SWD時鐘頻率過高或供電波動擦寫期間降頻到1MHz調(diào)試器和目標(biāo)板分開供電SWD時序不穩(wěn)杜邦線過長或信號反射縮短線纜降頻換屏蔽線有個別設(shè)備不被識別目標(biāo)芯片SWD引腳被復(fù)用檢查目標(biāo)板BOOT引腳配置確保SWD引腳未被占用WiFi模式延遲突然變高路由器開啟了節(jié)能模式路由器WiFi設(shè)置里關(guān)閉節(jié)能模式或啟用WMM8. 這玩意兒還能玩出什么花項目做到這個程度其實已經(jīng)不算是個玩具了。但我始終覺得“能用”和“好用”之間永遠(yuǎn)有一層窗戶紙捅破了才是真正屬于自己的工具。就我個人后續(xù)的擴(kuò)展思路列幾個方向上已經(jīng)在嘗試或者計劃嘗試的點。第一個是把WiFi模式從同一個路由器中轉(zhuǎn)擴(kuò)展為ESP32-S3自己開AP熱點也就是“無線路由器”模式。這樣現(xiàn)場調(diào)試的時候根本不需要連公司或家里的WiFiESP32自己發(fā)一個5G熱點出來電腦連上這個熱點就能調(diào)試。好處是徹底擺脫了外部網(wǎng)絡(luò)環(huán)境依賴壞消息是協(xié)議棧開銷會稍微增大而且電腦連上熱點后可能上不了外網(wǎng)需要權(quán)衡。第二個是想把虛擬串口也加上去。ESP32-S3除了當(dāng)調(diào)試器還能把USB-CDC虛擬串口和WiFi的TCP合并到一起這樣目標(biāo)板的串口日志既能通過USB線查看也能通過WiFi遠(yuǎn)程查看。嵌入式調(diào)試時看log的必要性不用我多說了這個功能要是做好了就是一臺“無線調(diào)試無線串口”二合一工具實用價值比單純調(diào)試器高得多。第三個是多目標(biāo)自動切換。既然WiFi模式下ESP32-S3是一個TCP Server理論上可以在目標(biāo)板上另外加一個小邏輯比如用繼電器切換SWDIO到不同目標(biāo)板然后在固件里做多路選擇。這樣一次上電可以輪詢調(diào)試三四塊板子非常適合產(chǎn)線上的批量驗證場景。這個改動不復(fù)雜主要是硬件要加模擬開關(guān)固件里加一個“目標(biāo)通道”寄存器而已。還有一個小點但我覺得挺實用的把調(diào)試日志緩存記錄在Flash上。ESP32-S3自帶Flash空間很大調(diào)試結(jié)束后可以從WiFi頁面導(dǎo)出這次的調(diào)試記錄、斷點命中統(tǒng)計、內(nèi)存使用曲線。這個功能要實現(xiàn)也不難就差一個Web服務(wù)器模塊ESP-IDF自帶的HTTP Server組件直接就能用。說回這個項目本身我最大的感受是硬件調(diào)試這個領(lǐng)域很多年沒有實質(zhì)性進(jìn)步了。J-Link、ST-Link這些老牌調(diào)試器確實穩(wěn)定但它們的思路一直停留在“怎么把線做得更好”而不是“怎么把線干掉”。ESP32-S3這種自帶USBWiFi的芯片給了我們一個絕佳的突破口——一臺幾十塊錢的開發(fā)板就能實現(xiàn)過去只有商業(yè)工具才能做到的無線調(diào)試體驗。如果在看這篇文章的你也打算復(fù)刻我建議先別急著上WiFi功能老老實實先把USB模式的CMSIS-DAP調(diào)通確認(rèn)SWD能正常讀寫寄存器了再去折騰WiFi。這樣出了問題排查范圍也會小得多。等你親手體驗過第一次“隔著一面墻給目標(biāo)板打斷點”的快感你會回來感謝這個項目的。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产一区二区欧美日本| 噜噜噜久久亚洲精品色情| 久久久久国产精品久久久| 国产农村妇女精品1区二区| 无码最新| 操逼逼福利视频| 97视频免费播放| 人妻少妇久久| 国产天天看| 久久黄黄| 99亚亚热| 亚洲 综合 欧美| 欧美不卡二区| 思思热久久成人| 91在线视频国产网站| 永久免费发布性爱网| 大香蕉综合网| 另类图片综合| 国产精品嫩草影院午夜两性 | 久夜操| 国产精品色哟哟| 99热久| 国产粉嫩出水在线播放| 人人插人人搞人人操| 亚洲精品一区二区精品| 亚洲天堂7777| 99精品在线观看| 免费作爱一级视频| 精品性爱一区二区| 色一色综合网| 国产小炒后入式| 91色鬼| 亚洲图片欧美日韩| 91久久伊人婷婷青青草| 神马久久久久久久久久| 另类图片五月天| 久久综合av| 北京美女一区二区| 加勒比av官网在线| 国产后入清纯| 97久久久久| 97在线播放| 亚洲97网站| 美女天天干| 日本熟妇色熟妇在线视频播放| 成人熟女区| 1204av韩国| 欧亚日韩三区| 国产精选视频| 色欧美综合| 97欧美| 国产超碰AV在线精品| 亚洲高清视频在线免费观看| 亚洲高清无码免费观看视频| 亚洲五月丁香花狠狠干一区二区三区 | 锕锕好爽 死我在线观看| 男人成人黄色视频在线观看免费下载| 精品人妻一区二区蜜桃视频 | 97人人操人人摸| 加勒比久久综合网高清| 国产精品免费视频不卡| 色综合91| 久久久久78| 秋霞鲁丝午夜无码一区二区三| 五毛骚逼极品美女怕怕| 国产一区二区在线看| 精品无码少妇| 国产精品人人爽人人做可爱福利| 亚洲综合精品国产一区| 天天拍天天操| 欧美熟妇操操视频| 日本三级韩国三级美三级91| 婷婷精品久久av影视| 天美传媒AV在线播放| 午夜小电影在线插入淫高潮 | 久操99| 亚洲第91页 | 国产成人bd在线观看| 人、人、摸,人、人、草| 在线视频日韩欧美国产| 91啪啪| 极品久久久久久久久久久久久久| 黄色交缠性感爆操91国产精品免费一区二区三区 | 欧美激情精品| 福利在线观看一区二区| 人妻美腿丝袜制服诱惑综合天堂-| 亚洲自拍一区夜夜操| 色婷婷A V一二三四区麻豆综合| 蜜臀久久99精品久久久久久成人小说 | 99999国产| 18禁免费视频| 天天流夜夜操| 综合少妇网| 欧美极品美女aaaaaa级黄片| 五月丁香激情综合| 欧美色综合图片| 日韩精品午夜操呦呦不卡影院| 熟妇熟女一区二区三区| 高清在线不卡一区二区 视频| 26uuu国产日韩综合在线观看| 婷婷九月色| 老熟妇综合| 久久久亚洲精品中文字幕人妻| 国产AAAAAABBBBB| 久久久久久人妻| 久久人爽| 高潮毛片无遮挡高清免费| 丝袜美腿诱惑亚洲欧美视频在线观看 | 人妻在线臀日韩| 国产精品69久久久久孕妇欧美| 女人天堂av在线播放| 亚洲成熟国产精品美女| 亚洲天天影视色综合| 久一区久久蜜桃| 在线看污网站| 日韩免费看黄片| 啊啊好多水| 亚州性色| 亚洲精品色| 夜夜嗨TV| 久久国产三区| 亚洲综合九九| 亚洲色婷婷| 中文字幕第7页| 精品中文字幕一区二区| 尤物av网站| 777超碰| 8050午夜少妇无码| 78m啪啪啪| 97在线精品| 外国免费性情大片| 天天添天天干电影| 国产精品4p在线观看| 国产乱婷婷精品二区三区| 国产9熟妇视频网站| 色婷婷视频| 老女人碰碰在线碰碰视频| 老熟女网站| 久操黄色视频| 国产亲戚伦亲在线| 五月天精品| 五月综合婷婷久久网站| 超碰4A| 日本人妻A片成人免费看片| 99色色网| 成人免费性爱视视| 亚洲情色在线| 日韩av在线免费网站| 91日日夜夜| 综合一区中亚洲国产成人综合精品| 九九av| 亚洲欧美中文日韩视频中国语| 亚洲风情综合网| 91麻豆va国产精品| 激情婷婷综合久久| 天美传媒AV国产在线| 日韩欧美字幕亚洲一区二区| 91欧美大片| 国精综合一二三区影视| 蜜桃视频成a人v在线| 久操热线| 日韩在线国产字幕| 人妻天天爽| 久久久婷婷婷| 欧美成va视频网站| 超碰97精品| 国产亚洲日本| 色色色综合网| 无码外流操逼视频| 91中文字幕制服丝袜免费视频| 国产一级不卡在线观看| 欧美人妻少妇| 9久久久久久| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 69精品人人人人| 亚洲AV成人无码一二三久久| 9ⅰ久久久天天| 欧美激情超碰777| 曰韩av中文字幕专区| 秋霞 色色| 啊啊啊操死我了| 99re这里只有精品3| 嫖老熟女A片一二三区| 亚洲高清无毛一区二区| 91宗合网| 中国熟女网站| 久婷婷一区| 色情五月丁香| 欧美九9 9 9| 国产日韩色综合| 97亚洲精品| 麻豆精品天美| 校园春色中文字幕AV| 78操B| 日本孕妇孕交| 九九九九日本| 久久神马影院| 夜夜操老骚逼视频网站| 高清不卡视频| 少妇超碰在线| 首页亚洲国产高跟丝袜诱惑视频| 日本性爱少妇| 中文字幕一区日韩精| 久久国产免费激情视频| xxxx网站亚洲精品| 亚洲一区二区三区中文字幕| 色综合久久av| 色综合av男人天堂| 日本日皮视频逼| 成人网站 免费观看| 操逼国产免费| 成片免费观看视频大全| 激情五月天视频| 日本一级一级一级一级| 成人短视频在线观看| 黄色性爱网网| 欧美激情综合| 久妇网| 亚洲国产第一页综合视频| 丁香五月婷婷五月| 能看的av| 天天综合网在线| 草伊人高潮喷水超碰| 成人综合网 欧美| 日日干夜夜操视频h| 超碰99在线观看| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 国产97视频免费观看| 性爱边摸边日免费AV| 色官网色综合| 天天日夜夜| 麻豆蜜桃视频在线观看| 国产精品激情久久久久久久| 亚洲成a人片在线观看中文!!!| 亚洲色图日韩精品| 99久久99九九99九九九| 综合色99| 96免费视频在线| 日日干日日操五月天伦理视频| 欧美熟女激情| 亚州欧美综合| 草草电影院| 久久日韩精品一区二区| 熟女被操视频网址| 国产视频一区二区三区久久亚洲天堂| 97se综合| 欧美色人| 精品一区二区综合熟妇| 国产成人久久久精品免费AV| 青青久草| av日韩手机在线影视| 夜夜欧美 | 日韩一级二级三级| 殴美色网| 久久久亚洲| 日韩精品黄片免费观看| 翔田千里av一区二区三区| 国产日韩精品一区二区三区| 啊啊啊啊啊啊啊网址在线观看| 国产搭汕a级片| 久久超碰国产一区二区三区| 曰韩av中文字幕专区| 日本大片日本一区二区免费高清 | 欧美日动态视频| 色色五月婷| 九九精品美女高溯喷水| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 深夜视频| 强奸乱伦AV网站| 91亚州日韩高清| 青草青青久久久久久国产| 成人草草视频| 亚洲成人久久一区二区| 欧美国产操逼| 国产精品一区二区手机看片| 极品五月天噜噜| 青青草狠狠撸| 精品国产91av一区二区三区| 亚洲91色在线| 狠狠久久手机视频精品| 色情婷婷| 偷拍盗拍亚洲色图图片| 丰满的三级少妇欧美久久久| 免费在线视频97| 色伊人91| 欧美91色| 欧美v亚洲v日韩v最新在线二区 | 欧美亚洲在线| 大香蕉五月天婷婷| 97超碰中文| 中文字幕一区二区在线日韩精品| 中文字幕人妻色偷偷久久皮| 思思热在线视频在线| 黄色污污污污污污网站| 亚洲97综| 欧洲无码一区二区| 欧美的性爱网站免费| AND人妻系列| 一级性爱视频免费观看| 欧美色日本| 欧美亚洲涩涩| 福利社区午夜一区二区| 欧美日韩另类字幕中文| www.av在线观看| KK色在线影院| 久久香蕉影院| 国产精品精品系列在线观看| 97精品一二区| 69少妇一区二区| 操B久久| 91亚洲色人| 日逼五月天| 亚洲另类春色| 99啪啪| 亚洲欧美综合| 99精品丰满人妻| 久久这里是精品| 婷婷精品久久av影视| 五月婷婷丁香中文字幕| 久久国产精品视频| 99欧美| 国产高清亚洲日韩一区| 欧美青青草视频| 操逼日韩无码 | 思思热免费在线视频| surenchaopeng| 国产小u女在线观看| 国产乱子伦一区二区三区免看| 国产日韩在线播放| 超碰地址久久| 欧美美女在线高潮999| 国产亚洲欧美每日在线| 亚洲高清男人天堂| 国产综合久久久麻桃个| www.99热在线只有精品| 久久亚洲国产成人| 91欧洲入口| 日韩AV一区二区三区四四| 亚洲美女av无码| juliaann丝袜大战黑鬼| 亚洲激情在线一区二区| 亚洲影院无码在线| 日韩三级av片| 91欧美性| 97精品国产97久久久久久户外免费| 国产中文字幕在线点播| 婷婷激情四射| 亚洲黄色电影| 麻豆一区在线| 江都AV在线| 国产精品黄色三级av| 新怡红院| 天美传媒av在线| 五月天婷婷色| 黄片免费看黄片免费看| 熟女五十路一区二区三| 天天射夜夜骑| 亚洲日韩精品一区二区| 久肏视频字幕| 日本中文字幕熟妇| 熟妇最新先锋一二三区| 九色婷婷| 亚洲色色探花| 日本熟女免费視颖| 一本大道青青| 色99久草| 久久久91福利姬| 嗯啊不要啊啊在线观看视频| 五月婷色| 亚洲欧美精品福利在线| 噜噜噜久久亚洲精品色情| 性欧美另类高清| 国产超碰在线| 亚洲欧美中文日韩视频中国语| 国产99精品一区二区三区免费| 我要色综合网| 国产精品日日摸夜夜添骚逼| 男人的天堂VA| 天美精品原创av片国产| 伦理第一页| 超碰 国产熟女精品一区| 操逼精品视频| 日韩少妇丰满亚洲| 区一在线观看| 草莓精品视频在线免费观看| 岛国爱情动作片在国产AV无码专区亚洲AV漫画 | 久久久999国产| 99国内熟女露脸视频| 色噜噜人妻丝袜AV资源| 东北女人的毛片| 日韩 欧美 校园一区| 99r九九| 插老姨肥穴| 欧美色图亚洲特色| 日本中文字幕一区| 啊啊啊啊好大好硬啊啊啊啊啊| 97精品第3页| 亚洲欧洲色情高清| 亚洲日本大香蕉1| 欧洲一区二区三区四区在线观看| 超碰97最新人妻| 嫩草影院永久在线制服丝袜| 午夜啊啊| 亚洲综合影院| 婷婷丁香九月| 超碰人人在线| 欧美九九99久久精品| 中文幕97| 午夜高清成人在线视频| 激情自拍 校园春色| 熟妇在线视频一区二区| 亚洲永久永久永久永久一级一级一级精品| 伦理弟一页| 人人妻天天做天天爽| 欧美亚洲清纯| 青青草福利视频| 国产精品一区二区手机看片| 自慰白浆在线观看| 韩国女主播青草福利视频| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 国产成人欧美一区二区三区的国产| 久热在线精品免费观看| 亚洲蜜桃V妇女| 五月天婷婷色色| 久久夜嗨| 精品人妻久久久久一区二区三区| 国产日韩久久| 国产婷婷综合在线观看| 亚洲国产精品9999在线观看| 日本三级中国三级99人妇网站| 好湿好紧好爽 视频| 91天天综合网,天天综合网| 91碰碰| 中文字幕制服诱惑| 久久精品国产亚洲AV无码电影| 91丨九色丨43老版熟女| 综合久欧洲| 欧美日日人人天天| 亚洲av综合伊人久久| 亚洲中文字母在线播放| 91nbbbbbb| 亚洲极品| 人人干人人操人人..com| 91视频综合网| 男女真人网18| 久久久久久少妇| 欧美亚洲情色| 好淫网一二三视区| 亚洲日韩资源| 国产福利小视频高清在线观看| 2011国产精品| 97超碰公开| av网站免费看| 亚洲综合另类| 激情欧美97| 国产精品自产拍在线观看社区| 大香蕉伊人网WWWn0n| 91熟女视频网| 日韩久久.一级黄色片| 美女黄页| 中国人高清www色视频免费| 欧美午夜一区二区三区| 校园春色综合香蕉| 高清国产成人无码| 日韩 成人 有码| 日本中文字幕不卡视频| 综合久草| .精品人妻一区二区三| 成人八戒网站| 欧美97视频| 国产二区三区免费视频| 在现视频女上位好爽| 男人的天堂kva| 熟女色综合久久| 国产精品在线一区二区| 久久精品色欧美aⅴ一区二区| 刺激性视频黄页| 中文字幕国产在线天堂| 美女91在线观看| 亚洲色图尤物视频| 久久亚洲天堂| 日本一级二级三级网站| 91欧| 天天色悠悠激情| 亚洲色人| 91色艳| 久久宗合亚洲| 久久精品国产亚洲AV片多多 | 凸凹视频在线观看| 久久9精品网站| 91 亚洲 欧美 日韩 国产 综合| AV色五月天| 最新国产亚洲精品精品国产亚洲综合| 老鸭窝成人| 天堂中文资源在线bt| 日韩欧美天堂| 九色视频91| 3P丝袜熟女 色综合| 小草精彩毛片| 精品高清一区二区三区三州| 我爱操| 黄页18禁| 久久久久久69国产一区二区| 9久9久9久9久视频网站| 亚洲色图超碰在线| 欧亚性爱啪啪| 久久精品—区二区三区内射| 18一区二区三区| 欧美性爱中文字幕无线码| 久久精品国产亚洲粉嫩| 成人精品视频一区二区| 国产高清无码一区二区三区四区皇冠| 777超碰| 日本欧美色| 99久久婷婷国产综合精品草原| 九九九免费视频| 色眯眯av| 亚洲春色激情小说| 最新日产中文在线麻豆| 碰碰97| 好屌色综合| 色综合91| 亚洲一区二区精品福利| 国产精品久久久啊| 九九九九免费视频| 久插综合| 色99色| 日韩av不卡在线观看| 久久久久九九九| 色臀aV| 啊啊啊97视频| 色综合91| 91大学精品激情戏| 久久久久久国产无码精品| 玖草在线视频| 1024手机看片欧美日韩| 亚洲天堂色图| 五月婷婷激情| 午夜福利成人免费视频| 亚洲?V无码专区在线电影| 97资源站国产精品| 亚洲男人天堂2| a人欧美综合天堂麻豆| 97视频在线免费看| 色色国产| 强奸xx国产| 久久性爱大全| 亚洲乱码国产乱码精网站| 一级成人性爱| 日韩激情电影中文字幕| 亚洲在线欧美| 啊啊啊无码| 欧美熟妇色| …中文字幕亚洲乱,97人妻无码费视… | 717影院理论午夜伦八戒| 熟女五十路一区二区三| 午夜福利1区2区3区| 啊啊啊网站| 大香蕉综合网| 欧美综合自拍| 国产精品爆乳懂色蜜乳| 亚欧操逼片在线观看 | 欧美亚洲高清| 欧美在线啊啊| 日本国产亚洲一区在线观看| 成人一二| A级片日韩欧美国产欧美视频精选观看 | 欧美亚综合色图| 九色 人妻 大香蕉| 国产大片精久久久久久| 日韩电影在线观看网址| 男人的天堂一区三区| 不卡在线观看视频| 天堂精品| 人妻第一页| 人妻少妇av在线观看| 国产精品久久久三级无码| 亚洲色人阁| 伊色久人大在线| 久久亚洲AV无码专区国产精品 | 狠狠干,狠狠操| 一区三区啪啪| 超碰99在线| 青青伊人这里只有精品| 黄色高清无码无码破解免费暗网| 狠狠色综合网| 欧美黄页在线| 牛牛久久国产精品视频一二三| 欧美72网页| 91处女在线视频| 男同专区一区二区三区在线| 天天日日日射| 男人天堂网手机版婷婷| 精品97久久| 青青青国产手线观看视频2| 免费观看日本操逼视频| 视频黄色国产一级| 日本综合久久| 人妻在线臀日韩| 九九超碰综合网| 啊啊啊啊好疼| 亚欧性爱无码| 亚洲色色探花| 丁香五月激情五月| 久久精品人妻一区二区| 91国产在线精品| 91美女网站| 久久超碰、| 青青草大香蕉在线视频| 超碰在线91| 国产精品一区二区手机看片| 亚洲中文日韩精品| 9久久9综合| 国际精品久久久| 老司机福利青青草| 国产a级午夜毛片| 欧美五区| 一二三区精品视频| 欧美久久伊人| 久久精品72| 精品熟妇视频一区二区| 久久精品国产亚洲AV高清演员表| 久久婷婷五月| 欧美色自拍| 校园激情狠狠四射| 亚洲成人性| 97大色网| 91视频综合网| 熟女突然公开看18禁影片| n1038 一二三区| 欧美人妻制服| 亚洲AV永久无码一区仙野| 日本三级韩国三级99| 蜜乳av一区二区三区四区不卡| 久草在线| 天天添天天干电影| 91欧美情色| 国产操操日韩三级黄| 天堂在线一区二区| 精品无码久久久久久久杏吧| 综合网,亚洲,欧美| 熟女人妻精品一区二区视频| 综合久| 日韩特一级久久| 天天草夜夜草高潮片| 蜜桃中文字日产乱幕4区| 蜜臀99久久精品久久久懂爱| 色婷婷综合网| 天堂网亚洲区手机版| 天天精品| 欧美激情黑人| 国产小视频91| 青青青草伊人精品| 国产一区二区视频在线播放| 69丨亚洲丨精品丨入口免费播放| 成人美女av| 亚洲最大黄网| 午夜国产成人精品视频 | 亚洲色图91| av在线一区二区三区| 欧美韩国你懂得在线 | 精品无码一区二区三区| 国产精品网站免费| 少妇一区二区三区精选| 久久熟女久| 在线观看AV片| 午夜精品久久久久久久99| 探花激情视频| 中国91AV| 女人的久久久| 99色热国产视频精品| 台湾佬中文娱乐网久久久久久久久久com | 国产精品播放| 婷婷情色综合网| 日韩三级在线观看网站| 欧美日韩青操| 操屄不卡视频| 风韵犹存大大大大香蕉 | 国产精品一区二区后入| 国产精品原创巨作?v网站| 熟女日韩| 无码区蜜乳| 97人人干人人操| 欧美性性性| 99丝袜福利在线播放| 日本欧美中文字幕| 亚洲色香| 亚洲一卡2卡3卡4卡乱码网站| 精品十八在线观看| 久久久久精| 久久久一区二区三区三州| 日日嗷| 天美传媒国产原创中文字幕亚洲欧美另类| 天天上日日上日韩精品| 久久影视二区三区行押| 黄色片大香蕉| 欧美人人曰人人操人人射射| 精品国产乱码久久久久久免费| 91色艳| 97人妻免费中文字幕| 日本欧美不卡| 中文在线视频| 久久人妻四季| 欧美亚洲中文字幕| 成在线人在线观看视频| 99草精| 欧亚日韩三区| 大香蕉AV丝袜| 综合欧美日本三级| 欧美性爱免费短视频| 久久精品店| 天堂综合| 亚州熟妇精品| 熟妇一区二区三区| 99久久久久| 黄色小视频日本txt| 欧洲在线性爱视频| 久久同城AV| 色爱综合网欧美| 欧美99| 亚洲欧美国产日本一区二区三区| 亚洲图片偷拍欧美| 久久亚洲人妻| 波多野42部激情无码喷潮| 少好三P| 久久夜嗨| 久久久久9999妇女| 天美传媒国产原创中文字幕亚洲欧美另类 | 91日韩| 一本色道久久综合亚洲二区三区| 国产精品久久久九九九| 99亚洲人人| 澳门成人网站久国产日韩| 五月天激情国产综合婷婷婷| 久久久久婷婷| 熟女六十路| 亚洲熟女av日韩熟女| 久久精品国产亚洲AV无码电影| 国产操伦| 日本三级A片网站com| 操碰97| 久久大黄片| 淫荡网址| 久久久久久久唑| 天天网综合| 日韩在线电影| 欧姜老司机| 亚洲毛片基地专区| 欧美日韩人妻婷婷一区| 精品久久久不卡一区二区| 91丝袜美腿片| 激情五月天校园春色网| 伊人网在线视频| 久九九九九九九热| 青青色综合| 91/欧美| 久久久久久久综合,国产| 婷婷九月国产| 600国产精品视频| 在线视频 亚洲精品| 久久永久无码人妻视频| 欧美激情性爱视频网站| 小视频玖玖| 丁香五月激情综合国产| 久久婷综合| 九九这里只有精品| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 深田咏美亚洲精品福利社| 亚洲色诱惑| 中文字幕永久在线| 亚洲一二三四区机械| 美女黄频a美女大全免费皮| 深爱五月天| 婷婷五月天久久精品视频一区二区三区 | 97超碰碰碰| 精品久久久中文字幕不| 男人的天堂日本东京热| 97精品人妻一二三四| 怡红院成人视频| 乱伦熟妇一区二区| 黑人狂躁日本妞一区二区三区| 亚洲蜜乳av| 超踫中文字幕| 夜夜嗷嗷一区二区| 粉嫩久久久极品| 久久久久久久精| 淫荡熟女乱伦网| 99色视频| 青草影院内射高潮| 国产60页| 精品黑人一区二区| 亚洲欧美天堂在线| 亚洲欧洲无码一区夜| 人妻精品一区二区| www亚洲免费| 亚洲欧美经典一区二区| 加勒比日本在线| 91成人亚洲色图| 免费A片三p视频| 免费一级性爱久久| 九九性视频| 诱惑人妻欧美一区在线播放| 啊啊啊慢点| 丰满人妻一区二区三区免费 | 天天影视综合色| 人妻啪| 婷婷色综合| 欧美亚洲宗合色性图| A级在线视频| 九九伊人网| 欧美 综合 亚洲| 国产AAAAAABBBBB| 久久久精品日本一道| www. 男人天堂成人在线| 精品国产av一区二区三区四区入口| 91粉嫩萝控精品福利网站_精品影音先锋国| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 91麻豆va国产精品| 国产一区二区三区久久精品太古里| 午夜九九九九九九| 亚洲av淫乱| 青青操视频在线| 久久久久久裸体| 日韩中文字幕精品一区在线| 91最新综合| 丝袜视频网国产90| 乱伦a片视频| 天天α片| 桑老女人九区| 亚洲乱码尤物193YW| 精品国产久久乱码| 99热| 久久99国产综合精品女同| 高清无码91| 久久99人妖视频国产| 啊啊啊好湿久久| 玖玖资源视频一区二区三区| 久久久久人妻二区精品叶可怜| 九九视品黄色| 亚洲另类春色| 青青草日韩无码| 殴美色网| 国产91久久九九免费精品无码| 91综合国产精品| 人妻献身系列第54部| 亚洲色9| 欧美亚洲素人制服精品| 婷婷五月天丁香| 久久精品国产亚洲粉嫩| 久久香蕉网| 精品九九九九九| 91N欧美| 91精品国产91久久青草| 中文字幕一区二区在线日韩精品| 国产乱婷婷精品二区三区| 九九九精品成人免费视频小说| 日本日日色视频| 欧美精品二区视频在线| 人妻天天爽夜夜爽精品2| 91伊人久| 亚洲性综合| 国产精品 久久久精品一牛| 天天日日本| 自怕偷自怕亚洲精品| 超碰一区二区| 成人综合久久精品色婷婷| 亚洲美腿丝袜香蕉影视欧美成人| 五月丁香啪啪啪| 一二三区操逼国产91| 大香蕉天天看妹子| 日韩欧美字幕亚洲一区二区| 少妇高潮九九九九| 黄色小说亚洲| 丰满人妻无码一区二区三区| 亚洲精品国产拍免费91在线| 91人妻爽爽人人做人人澡| 人妻少妇久久中文字幕一区二区 麻豆 | 91蜜桃婷婷狠狠久久综合9色| 国产综合久久久麻桃个| 欧美色图天堂网m| 色黄色美女大长腿午夜视频| 欧美色97| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 日本Xx性爱| 亚洲自拍小说| 旡码电影特区| 亚洲精品无码久久AV| 9久9久| 91亚洲不卡一区| 免费一级黄色录像影片| 330dv亚洲成年视频网| 97色色网| 熟女人妇一区二区三区| 久久后入制服| 中文一区二区婷婷视频| 性爱av在线免费观看| AV一起草在线| 香蕉精品二区二区| 亚洲天堂日本| 天天影视激情欧美| 九九无码视频| 影音先锋每日最新资源在线观看 | 亚洲综合另类欧美久久久| 岛国黄色大片网站| 久96热在线观看视频| 精品一区二区三区蜜桃| 超碰夫妻97| 老司机射| 国产亚洲精品久久久久小| 日本欧美不卡| 久久久久久久9最新免费视频观看| 你操综合| 久9视频| 图片区小说区| 亚洲免费成人在线高清无码视频| 大香蕉狠狠爱| 亚洲 欧美 日本 国内 首页| 狠狠躁日日躁夜夜躁A| 射 色综合| 国产原创剧情在线丝袜| 欧美日韩性爱操大逼| 中国一级特黄大片护士| 亚洲图片欧美| 国产熟女无套内射| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 国产夜夜操| 人妻啊啊人妻啊| 一级@啪啪视频| 热99这里有精品综合久久| 国产精品大屁股999| 综合 青草 伊久久 影院 综合 | 亚洲男人天堂2019| 无码少妇精品一区二区60岁老人 | 无码人妻一区二区一牛影视| 国产在线强奸视频| 大学生美女口爆| 欧成人精品一区二区三区| 久久久无码精品人妻二区 | 国产一级内射高清视频| 97在线免费观看| 97色碰| 国产日韩久久| 激情文学小说一区二区| 无码九九九九| 不卡九肏| 亚洲综合99999| 婷婷另类小说| 国产精品久久久久久久久久久久久久久久久久 | 亚洲性猛| 99色骚| 色五月激情AV在线| 欧美在线大香999| 日本在线伊人啪啪| 600国产精品视频| 麻豆久久精品亚洲精品88| 三男一女不戴套的A片| 最新av网站在线观看| 99999国产精品| 国产女同在线观看视频| 亚瑟国产精品久久无码| 日韩99精品视频综合区| 免费在线观看国内色片网站网址| 男男H黄动漫啪啪无遮挡网站| 热久久国产| 激情久久av一区av二区av| 99热这里都是精品| 97干日韩| 97亚洲资源| 日韩有码回春沙龙第一页| 熟妇人妻精品一区二区| 国产白丝网站| 人妻精品免费一二三区| 免费观看的黄色的网站| 东京热免费视频| 大鸡巴久久久| 美欧老女人97| 啊啊啊啊嗯嗯在线久久久| 性色A∨91| 亚洲精品免费中文字幕| 性在久久久久久| 久久天堂婷婷网| aaa淫乱视频| 揉揉揉夜夜| 91九色丰满高潮| 欧美性天天| 乱伦av麻豆| 欧美制服另类丝袜| 啊啊啊啊好疼视频| 亚洲天堂男| AAAAAAAAA黄片| 97久久久久久久精| 国产成人精品一区| 欧美淫乱视频| 蜜臀AV秘一区翔田千里| 国产久久久久久久久一区二区| 亚洲情色一区三区| 热热色AV| 亚洲国产另类在线中文| 精品少妇一区二区三区在线视频| 黑丝少妇在线观看| 久久九操在线观看| 一区二区不卡视| 超碰成人国产| 国产一区麻豆免费观看| 午夜九九九九九九| 国产精品久久久久中文字幕| 五月丁香六月激情| 嗯嗯啊啊的视频| 热无码中文亚洲H一道本一区二区| 天天干一干| 午夜精品久久999热蜜桃介男人用| 欧美懂色综合网| 中文字幕在线高清男人的天堂| 亚洲熟久久| 国产h小视频在线观看免费| 强奸乱伦中文字幕AV| 91精品成人| 日韩强奸av| 天天干,夜夜爽| 日本二区不卡| 少妇啪啪自拍| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 九九九精品色乱九九九| 国产狂喷潮在线精品| 激情五月天综合网| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 天天操天天谢| 亚洲av国产av综合av卡| 欧亚乱色熟女一区二区| 黄网站黄视频网站进入口| 色色97爱| 成人av免费观看| 九九九九九九免费视频| 人人操人人操草草| 国产99999久久精品| 成人a级高清视频在线观看| 中文高清一区二区的| 婷婷五月天激情四射| 欧美久久九九| 在线综合网| 欧美另类色图片| 黄片www视频免费| 国产suv精品一区二区四区999| 超碰色综合| 色香阁在线| 热热色中文无码| 神马久久久久眼| 91啦人妻| 青青草原综合久久大伊人精品| 日本性感人妻91| 内射中出日韩在线观看视频| 91色色网站| 大香蕉 222| a一区二区三区乱码在线| 久久精品99久久久久久| 亚洲中文一区二区三区| 色天堂综合| 秋霞一级视频在线观看免费| 精品国产乱码久久久| 久久精品视频久久久| 天天看天天日天天操| 欧美72网页| 国产福利av精彩对白| 欧美天天综合在线| 亚洲另类综合欧美| 97免费在线| 精品国产乱码久久久兰草影视| 亚洲成人性爱在线观看| 视频在线97| 台湾佬激情综合| 13小男生GAY自慰脱裤子| 1204金沙人妻懂旧版免费| 亚洲自拍天堂| 欧美三级偷拍| 国产13区| 亚洲精品三区在线观看| 国产人人干| 男人的天堂2018东京热啪啪啪| 久久天天艹| 亚洲丝袜二区在线| www.久久久久| 五月丁香六月综合缴清无码| 日本免费一区二区不卡 | 欧美 亚洲 另类 综合| AV无码久久久精品| 96精品久久久久久久久久| 欧美亚洲se91| 色情五月综合婷婷| AA级电影三区| 少好三P| 成人熟女视频一区二区三区| 国产第12页| 日夜精品| 99re在线视频| 丁香五月天堂网| 久久嫩草| 久久精品99久久久久久| 操穴国产| 五月丁香激情综合网| 日韩综合97p| 97天天弄| 日韩紧密久久| 桃花色涩综合影院| 日韩av不卡在线看| 97K超碰在线| 91在线丝袜视频| AV天天在线观看| 综合网色| 亚洲AV无码黄色强奸| 在线日韩精品一区二区三区| 中日韩久久久免费看| 亚洲精品色| 婷婷五月在线视频| 人人操人人摸人人看人人干| 综合久久少妇中文字幕| 麻豆一区二区AV天美| 国产青视频| 中文字暮97| 午夜男女爽爽爽在线视频| 中文字幕一区二区三区高清| 欧美大香蕉久| 无码精品久久久久久亚洲| 国产中文字幕在线| 91色堂| 超碰夫妻97| 操人妻逼91| 黄色二级片网站| 精品久久視頻在线| 日本在线一二| 久久久久亚洲一区女同性恋中文字幕| 69精品少妇一区二区三区蜜桃| A片三级无码| 性爱乱伦视频免费| 97超碰碰| 蜜臀久久99精品久久久电影| 国产精品一区二区三区四区五区| 日本加勒比无码专区一二三| 亚州中文字幕超碰97| 久久伊人大香蕉| 色综合久久久久| 超碰AV在线| 国产成人自拍视频在线| 天天躁日日躁AAA片李宗瑞| 欧美亚洲日本视频久久久| 色97干| 日韩人妻精品| 亚洲少妇自拍中文字幕懂色| 超碰久草| 97超碰精品图片| 97亚洲在线| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 国产精品视频在线播放 | 欧美精品欧美精品系列| 素颜老阿姨乱情色| 欧美中字不卡| 亚洲第一视频 欧美风情 日韩| 五月天婷婷社区| 国产日本顶级一区二区三区| 九九九九精| 国产精品午夜福利|