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

ARTICLE DETAIL

資訊詳情

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

自制嵌入式調(diào)試面板Quenox:從串口日志到Web可視化控制

自制嵌入式調(diào)試面板Quenox:從串口日志到Web可視化控制 1. 項(xiàng)目設(shè)計(jì)思路為什么做 Quenox 這種調(diào)試面板Quenox 這個(gè)名字聽(tīng)起來(lái)像是個(gè)實(shí)驗(yàn)室內(nèi)部代號(hào)實(shí)際上它是我最近手頭一直在打磨的一個(gè)嵌入式調(diào)試面板項(xiàng)目。準(zhǔn)確說(shuō)Quenox 是一套輕量級(jí)、自托管的硬件控制臺(tái)面板核心目標(biāo)是解決日常開(kāi)發(fā)中反復(fù)燒錄、串口抓日志、重啟看狀態(tài)這些瑣碎又容易出錯(cuò)的環(huán)節(jié)。很多人可能覺(jué)得調(diào)試面板嘛用一個(gè)現(xiàn)成的串口助手、一個(gè)燒錄工具就夠用了但當(dāng)你同時(shí)維護(hù)三四個(gè)設(shè)備、需要遠(yuǎn)程看狀態(tài)、要把數(shù)據(jù)可視化地呈現(xiàn)出來(lái)的時(shí)候臨時(shí)拼湊的工具鏈就會(huì)變得非常痛苦。我在做 Quenox 之前踩過(guò)不少坑。最早用的是裸機(jī)串口終端加手動(dòng)復(fù)位每次改完代碼先插線、再開(kāi)終端、再手動(dòng)重啟一天下來(lái)大半時(shí)間浪費(fèi)在這些重復(fù)動(dòng)作上。后來(lái)試圖引入商用調(diào)試平臺(tái)但那些東西要么太重、要么配套硬件綁定太死很難適配我自己攢的各種不同架構(gòu)的開(kāi)發(fā)板。所以 Quenox 的思路很直接拋棄通用方案的鋪張圍繞我手頭真實(shí)的硬件環(huán)境做一套高度定制化的調(diào)試入口把燒錄、串口日志、狀態(tài)可視化、遠(yuǎn)程控制收斂到一個(gè)瀏覽器頁(yè)面里。它不需要重型的后臺(tái)服務(wù)也不需要復(fù)雜的數(shù)據(jù)庫(kù)核心就是極致的輕與快。這個(gè)項(xiàng)目適合誰(shuí)去參考一類(lèi)是整天跟單片機(jī)、嵌入式 Linux 板子打交道的開(kāi)發(fā)人員一類(lèi)是做硬件驗(yàn)證和產(chǎn)線測(cè)試的工程師還有一類(lèi)是剛?cè)腴T(mén)、想從整體上理解一臺(tái)設(shè)備從固件到上位機(jī)應(yīng)該如何協(xié)作的學(xué)生或愛(ài)好者。它不是一個(gè)商業(yè)產(chǎn)品更像是一套可復(fù)用的思路加落地代碼代碼量不大但每一行都是為了解決真實(shí)場(chǎng)景中的問(wèn)題。2. 整體架構(gòu)與使用方式拆解2.1 三個(gè)核心模塊劃分Quenox 在架構(gòu)上其實(shí)很簡(jiǎn)單只有三塊設(shè)備端跑在 MCU 或 Linux 小主機(jī)上的采集/控制程序、橋接層負(fù)責(zé)把設(shè)備數(shù)據(jù)打包上傳到面板服務(wù)器、前端面板瀏覽器里看到的儀表盤(pán)和控制臺(tái)。設(shè)備端我用的是普通的 UART 和 GPIO 就能跑這個(gè)選擇在當(dāng)時(shí)花了一點(diǎn)心思。我之前試過(guò)用帶網(wǎng)絡(luò)功能的芯片直接往服務(wù)器推數(shù)據(jù)比如 Espressif 系的 ESP32這樣看起來(lái)少了一層橋接代碼上也簡(jiǎn)潔。但實(shí)際遇到的問(wèn)題非?,F(xiàn)實(shí)調(diào)試階段程序崩潰頻率高一旦芯片本身死機(jī)或者網(wǎng)絡(luò)協(xié)議棧崩了我連恢復(fù)正常模式的入口都沒(méi)有必須跑過(guò)去物理按按鍵。而外置橋接層的方案最大的好處是設(shè)備死了橋接器還活著面板上的強(qiáng)制復(fù)位進(jìn)入 Bootloader按鈕依然有效。這個(gè)容錯(cuò)能力在開(kāi)發(fā)階段的價(jià)值遠(yuǎn)比省一根線要大。前端面板默認(rèn)跑在開(kāi)發(fā)機(jī)的本地端口上同時(shí)支持綁定到局域網(wǎng)?;A(chǔ)形態(tài)是 Web 儀表盤(pán)包含日志滾動(dòng)窗口、寄存器/RAM 監(jiān)控格子、腳本命令發(fā)送框和狀態(tài)指示區(qū)。實(shí)際部署的時(shí)候我建議用一臺(tái)不關(guān)機(jī)的開(kāi)發(fā)主機(jī)跑面板服務(wù)設(shè)備端通過(guò)串口或 USB-TTL 連接橋接器這樣就算半夜想從床上看眼設(shè)備狀態(tài)打開(kāi)手機(jī)瀏覽器即可不需要專(zhuān)門(mén)寫(xiě) App。2.2 數(shù)據(jù)通道設(shè)計(jì)為什么選用串口中轉(zhuǎn)而不是設(shè)備直連網(wǎng)絡(luò)數(shù)據(jù)通道是整個(gè) Quenox 最值得琢磨的一塊。我最終選的是串口作為主通道、中轉(zhuǎn)代理做協(xié)議轉(zhuǎn)換最后推到瀏覽器 WebSocket。這個(gè)鏈路可以簡(jiǎn)化成設(shè)備端UART 輸出數(shù)據(jù) - 橋接器串口讀取并封裝成 JSON 幀 - 面板服務(wù)WebSocket 推送到瀏覽器 - 前端渲染有人會(huì)問(wèn)為什么不讓設(shè)備直接網(wǎng)絡(luò)發(fā)出 JSON 到前端關(guān)鍵在于調(diào)試二字。調(diào)試階段隨時(shí)要看的不僅是正常程序運(yùn)行日志還包括內(nèi)核 panic、看門(mén)狗復(fù)位前打印、bootloader 階段的啟動(dòng)信息。這些信息往往在網(wǎng)卡初始化之前就產(chǎn)生了如果設(shè)備直接走網(wǎng)絡(luò)上報(bào)這部分最有價(jià)值的崩潰現(xiàn)場(chǎng)就被丟掉了。串口從上電第一毫秒就能輸出鏈路極短、時(shí)序最可靠是捕捉早期故障信息的最優(yōu)選擇。這里提一個(gè)實(shí)戰(zhàn)中很重要的點(diǎn)設(shè)備端日志輸出必須支持多等級(jí)過(guò)濾。我這個(gè)項(xiàng)目要求 UART 驅(qū)動(dòng)層支持LOG_ERROR、LOG_WARN、LOG_INFO、LOG_DEBUG四級(jí)過(guò)濾而且這個(gè)過(guò)濾要在編譯期可用宏打開(kāi)同時(shí)在運(yùn)行期也能通過(guò)面板下發(fā)指令動(dòng)態(tài)切換。為什么要雙通道控制編譯期過(guò)濾可以讓日志代碼徹底不占用空間和 CPU適合調(diào)試完正式發(fā)布運(yùn)行期過(guò)濾則方便現(xiàn)場(chǎng)臨時(shí)排查問(wèn)題時(shí)不用重新燒一個(gè)固件就能看到更詳細(xì)的流程輸出。我在做串口中斷處理時(shí)特意保證了在最高波特率 921600 下單個(gè)日志包不超過(guò) 256 字節(jié)因?yàn)橐粠瑪?shù)據(jù)過(guò)長(zhǎng)會(huì)增加橋接器拆包丟包的幾率實(shí)測(cè) 256 字節(jié)是一個(gè)安全性很高的經(jīng)驗(yàn)值。2.3 面板功能邊界哪些該做哪些堅(jiān)決不做做 Quenox 的過(guò)程中我一直在反復(fù)問(wèn)一個(gè)問(wèn)題面板到底應(yīng)該做到多重一開(kāi)始曾經(jīng)想往上加數(shù)據(jù)分析模塊比如自動(dòng)統(tǒng)計(jì)日志關(guān)鍵字出現(xiàn)頻率、繪制變量曲線但后來(lái)意識(shí)到方向偏了。調(diào)試面板的核心使命是控制與查看的狀態(tài)閉環(huán)而不是跑大數(shù)據(jù)分析。分析類(lèi)需求應(yīng)該在日志落盤(pán)后交給后端的腳本工具處理面板做太多聚合計(jì)算反而會(huì)影響實(shí)時(shí)響應(yīng)。最終我鎖定的功能清單如下多設(shè)備切換在同一個(gè)面板里管理多個(gè)目標(biāo)板每個(gè)設(shè)備有獨(dú)立的日志流和命令通道日志時(shí)間戳與滾動(dòng)顯示自動(dòng)同步設(shè)備 RTC 與開(kāi)發(fā)主機(jī) UTC 時(shí)間按時(shí)間線滾動(dòng)命令快捷發(fā)送預(yù)設(shè)常用命令按鈕也可以自由輸入十六進(jìn)制幀或字符串內(nèi)存與寄存器快速觀測(cè)配合設(shè)備端暴露的簡(jiǎn)單內(nèi)存讀取協(xié)議實(shí)時(shí)刷新指定地址數(shù)據(jù)一鍵復(fù)位/燒錄控制通過(guò)串口 DTR/RTS 信號(hào)控制目標(biāo)板進(jìn)入 Bootloader 或復(fù)位實(shí)測(cè)對(duì) STM32、ESP32、部分國(guó)產(chǎn) ARM 芯片都有效至于那些花哨的圖表、復(fù)雜權(quán)限、多人協(xié)作我在 Quenox 中統(tǒng)統(tǒng)不做。做這個(gè)項(xiàng)目的核心收獲之一就是學(xué)會(huì)了做減法一個(gè)調(diào)試工具一旦開(kāi)始嘗試討好所有人它就離被棄用不遠(yuǎn)了。3. 硬件選型與通信協(xié)議細(xì)節(jié)3.1 橋接器選型CH340 vs CP2102 vs FT232橋接器作為設(shè)備與面板之間的溝通橋梁選型直接決定了整體穩(wěn)定性。我先后試過(guò) CH340、CP2102、FT232 三種方案每個(gè)都跑了至少一周的連續(xù)日志壓力測(cè)試對(duì)比結(jié)果可以供大家參考橋接方案實(shí)測(cè)最高穩(wěn)定波特率長(zhǎng)時(shí)間連續(xù)發(fā)送表現(xiàn)異?;謴?fù)能力適用場(chǎng)景CH340921600偶見(jiàn)偶發(fā)丟字節(jié)與線材質(zhì)量相關(guān)性大斷電重連即可恢復(fù)開(kāi)發(fā)階段或成本敏感場(chǎng)景CP21022000000穩(wěn)定幾乎無(wú)丟字節(jié)驅(qū)動(dòng)跨平臺(tái)性?xún)?yōu)秀異常時(shí)枚舉重置自動(dòng)恢復(fù)推薦日常主力調(diào)試FT2323000000非常穩(wěn)定時(shí)間戳抖動(dòng)極小驅(qū)動(dòng)較為成熟幾乎無(wú)異常高頻調(diào)試或時(shí)序敏感場(chǎng)景最終我把橋接器定為 CP2102 作為默認(rèn)方案。它不是參數(shù)最強(qiáng)但綜合了成本、穩(wěn)定性、驅(qū)動(dòng)兼容性之后平衡度最好。CH340 在短距離測(cè)試時(shí)表現(xiàn)也能接受但一旦線材長(zhǎng)度超過(guò) 30 厘米、或者環(huán)境有電機(jī)等電磁干擾源丟字節(jié)的概率就會(huì)明顯上升排查這類(lèi)問(wèn)題非常浪費(fèi)時(shí)間。FT232 性能和穩(wěn)定性最強(qiáng)但單顆芯片價(jià)格常常是 CP2102 的幾倍且一些國(guó)產(chǎn)兼容芯片的驅(qū)動(dòng)簽名有問(wèn)題踩過(guò)坑之后我就只信任原廠或者大代理的貨。橋接器與目標(biāo)板之間的電氣連接也要注意現(xiàn)在的 MCU 工作電壓普遍是 3.3V但有些老的開(kāi)發(fā)板還保留 5V 邏輯電平。如果橋接器是 3.3V 邏輯而目標(biāo)板是 5V 邏輯長(zhǎng)時(shí)間使用可能損傷橋接器。我的建議是加一塊電平轉(zhuǎn)換小板成本幾塊錢(qián)能省掉很多莫名其妙的通信異常。另一個(gè)是地線問(wèn)題USB 轉(zhuǎn)串口和目標(biāo)板之間一定要共地否則數(shù)據(jù)傳輸?shù)膮⒖茧娖讲灰恢卤憩F(xiàn)就是波特率明明配對(duì)但收到的全是亂碼。我見(jiàn)過(guò)太多人掉進(jìn)這個(gè)坑排查到最后發(fā)現(xiàn)是沒(méi)共地。3.2 協(xié)議幀格式設(shè)計(jì)從字符流到結(jié)構(gòu)化 JSON設(shè)備端輸出的原始日志是純文本字符串但直接把這個(gè)字符串推給前端面板就沒(méi)有辦法做結(jié)構(gòu)化展示——沒(méi)法判斷哪行是錯(cuò)誤、哪行是警告、哪行是內(nèi)存數(shù)據(jù)也沒(méi)法對(duì)關(guān)鍵字智能過(guò)濾。Quenox 在橋接層定義了一個(gè)輕量級(jí)幀封裝格式把每一條設(shè)備輸出轉(zhuǎn)換成 JSON 格式{ts: 1685581372, tms: 842, level: I, src: SENSOR, msg: temperature read ok: 25.4C}幀里的核心字段都經(jīng)過(guò)了考慮。ts是收到該條日志的 Unix 時(shí)間戳tms是日志在設(shè)備內(nèi)的毫秒偏移量配合使用可以得到毫秒級(jí)的精確時(shí)間。level區(qū)分日志級(jí)別src標(biāo)識(shí)日志來(lái)源模塊msg是真正的載荷內(nèi)容。設(shè)備端發(fā)送日志時(shí)不需要帶時(shí)間因?yàn)閱纹瑱C(jī)本身可能沒(méi)有可靠時(shí)鐘源橋接器在收到字節(jié)流時(shí)統(tǒng)一蓋時(shí)間戳這個(gè)策略最大的好處是設(shè)備端代碼注入極小并且全系統(tǒng)的日志時(shí)間基準(zhǔn)完全一致不會(huì)有多個(gè)設(shè)備各自時(shí)鐘不準(zhǔn)互相打架的問(wèn)題。協(xié)議層面還有一個(gè)容易忽視的點(diǎn)一條完整的 JSON 日志可能被 TCP 或者串口拆成多個(gè)數(shù)據(jù)塊到達(dá)。橋接器送入面板服務(wù)時(shí)串口數(shù)據(jù)流有強(qiáng)拆包可能性比如一條 200 字節(jié)的數(shù)據(jù)可能被拆成兩個(gè)或三個(gè) TCP 包發(fā)送。如果前端直接按包解析就會(huì)把一條日志砍成兩半。Quenox 的處理方式是引入消息邊界標(biāo)記設(shè)備端每幀日志末尾帶上\n橋接器先進(jìn)行流式按行切割組裝成首行 續(xù)行的完整邏輯后再 JSON 化。實(shí)測(cè)即使高速日志流下也不會(huì)出現(xiàn)半包問(wèn)題。3.3 設(shè)備端 DTR/RTS 控制的坑與解法Quenox 的一鍵復(fù)位功能就是通過(guò)橋接器芯片的 DTR 和 RTS 兩個(gè)引腳實(shí)現(xiàn)的。原理是絕大多數(shù) USB 轉(zhuǎn)串口芯片在驅(qū)動(dòng)層暴露了這兩個(gè) modem 信號(hào)控制接口而上位機(jī)通過(guò)設(shè)置它們的高低電平可以巧妙控制目標(biāo)板的 BOOT 引腳和復(fù)位引腳實(shí)現(xiàn)自動(dòng)燒錄。為什么這兩種信號(hào)夠用以常見(jiàn)的 STM32 串口下載模式為例需要先拉高 BOOT0 再拉低復(fù)位釋放復(fù)位后芯片進(jìn)入 Bootloader然后對(duì) ESP32 則是另一種時(shí)序先讓 ENEnable/復(fù)位拉低同時(shí)讓 IO0 保持低電平再釋放 EN芯片進(jìn)入下載模式。這兩種芯片所需的控制邏輯都恰好由 DTR/RTS 兩條線在不同時(shí)間點(diǎn)上的高低電平組合完成。Quenox 在面板里把時(shí)序抽象成可配置腳本這樣不只是 STM32、ESP32連我用過(guò)的國(guó)產(chǎn) ARM 芯片比如某廠出的 R7 系列也能通過(guò)自定義時(shí)序適配。這個(gè)方案踩過(guò)的坑得單獨(dú)拎出來(lái)說(shuō)。第一不是所有 USB 轉(zhuǎn)串口芯片都支持 DTR/RTS 手動(dòng)控制有些廉價(jià)方案的這兩根線是懸空的購(gòu)買(mǎi)時(shí)一定要查清規(guī)格書(shū)第二Windows 和 Linux 下操作這兩個(gè)信號(hào)的接口完全不同Windows 可以用 CreateFile 加 DeviceIoControlLinux 下則是通過(guò) ioctl 操作 TIOCMBIS/TIOCMBIC開(kāi)發(fā)面板服務(wù)時(shí)要做兩層封裝第三時(shí)序的延時(shí)非常敏感我踩過(guò)最狠的一次是 ESP32 燒錄失敗查到最后發(fā)現(xiàn) RTS 和 DTR 之間缺少 20ms 左右的延時(shí)導(dǎo)致芯片復(fù)位時(shí) IO0 已經(jīng)被拉高了永遠(yuǎn)進(jìn)不了下載模式。加上精確的延時(shí)控制后一切恢復(fù)正常。4. 面板服務(wù)端實(shí)現(xiàn)與前端實(shí)時(shí)性?xún)?yōu)化4.1 服務(wù)端多路日志聚合的實(shí)現(xiàn)思路面板服務(wù)端我建議用輕量后端框架實(shí)現(xiàn)方便快速開(kāi)發(fā)。Quenox 選擇了基于 Python 的 FastAPI因?yàn)樾枰?WebSocket 實(shí)時(shí)推送和 REST API 快速上手之間找一個(gè)平衡點(diǎn)FastAPI 的異步模型非常適合處理大量并發(fā)日志流。服務(wù)端在啟動(dòng)時(shí)掃描系統(tǒng)所有可用串口設(shè)備并在面板提供下拉列表讓用戶(hù)選擇要監(jiān)聽(tīng)的設(shè)備。每選中一個(gè)設(shè)備服務(wù)端開(kāi)啟一個(gè)后臺(tái)任務(wù)以線程方式讀取該串口緩沖區(qū)數(shù)據(jù)經(jīng)幀解析后放進(jìn)一個(gè)全局環(huán)形隊(duì)列多個(gè) WebSocket 客戶(hù)端可通過(guò)訂閱隊(duì)列拿到實(shí)時(shí)數(shù)據(jù)。這里更具體的設(shè)計(jì)是環(huán)形隊(duì)列只保留最近 5000 條日志超過(guò)的部分自動(dòng)丟棄避免內(nèi)存無(wú)限增長(zhǎng)導(dǎo)致服務(wù)崩潰。對(duì)調(diào)試場(chǎng)景來(lái)說(shuō)超過(guò) 5000 條的舊日志本來(lái)也不太有實(shí)時(shí)查閱價(jià)值需要回溯時(shí)應(yīng)該依賴(lài)文件落盤(pán)而不是面板緩存。服務(wù)端還做了一個(gè)日志存儲(chǔ)策略默認(rèn)不落盤(pán)但面板提供一個(gè)開(kāi)始錄制開(kāi)關(guān)。打開(kāi)后服務(wù)端將環(huán)形隊(duì)列里的日志異步寫(xiě)入當(dāng)日文件文件名按日期和設(shè)備 ID 組合比如quenox_device_a_20250610.log。錄制期間日志繼續(xù)實(shí)時(shí)推送到面板但寫(xiě)入操作在獨(dú)立線程完成不會(huì)阻塞主數(shù)據(jù)鏈路。這個(gè)設(shè)計(jì)在項(xiàng)目后期幫我省了不少力比如復(fù)現(xiàn)一個(gè)偶發(fā) bug 時(shí)開(kāi)著錄制跑一晚上第二天翻日志按關(guān)鍵字檢索問(wèn)題定位效率比肉眼盯屏幕高得多。4.2 前端實(shí)時(shí)更新策略不要用可控輪詢(xún)前端這部分有個(gè)我很堅(jiān)持的原則實(shí)時(shí)數(shù)據(jù)更新必須使用 WebSocket 推送而不是用普通的 HTTP 輪詢(xún)。做的第一版 Quenox 面板就是用setInterval每 500 毫秒拉一次日志接口跑在局域網(wǎng)里倒是沒(méi)什么問(wèn)題一旦設(shè)備日志比較密集比如每秒幾百條HTTP 請(qǐng)求本身的開(kāi)銷(xiāo)和頁(yè)面重繪的壓力疊加頁(yè)面就肉眼可見(jiàn)地卡頓。換成 WebSocket 后服務(wù)端只在環(huán)形隊(duì)列有新日志時(shí)才推送數(shù)據(jù)前端在onmessage回調(diào)里直接追加日志行。這個(gè)改動(dòng)讓 CPU 占用率大幅下降。為了進(jìn)一步提升高頻日志下的渲染流暢度前端做了批量渲染邏輯把 100 毫秒內(nèi)收到的日志先緩存在數(shù)組里然后一次性追加到 DOM。這個(gè)技巧能明顯減少瀏覽器布局計(jì)算的次數(shù)實(shí)測(cè)在每秒 300 條日志的強(qiáng)度下頁(yè)面依然順滑。還需要處理前端斷線重連的問(wèn)題。WebSocket 斷開(kāi)是常態(tài)筆記本睡眠、網(wǎng)絡(luò)切換、服務(wù)端重啟都會(huì)觸發(fā)斷開(kāi)。Quenox 前端實(shí)現(xiàn)了一個(gè)非常簡(jiǎn)單的自動(dòng)重連機(jī)制檢測(cè)到連接關(guān)閉時(shí)顯示一個(gè)半透明的連接斷開(kāi)重連中浮層同時(shí)每 2 秒嘗試重連一次重連成功時(shí)向服務(wù)端請(qǐng)求最近 200 條歷史日志填充頁(yè)面空白區(qū)再繼續(xù)接收實(shí)時(shí)數(shù)據(jù)。之所以只回放 200 條是因?yàn)閿嗑€期間的空檔無(wú)法保證日志連續(xù)與其展示一段有缺口的記錄還不如明確標(biāo)注以下為回放歷史日志。4.3 高并發(fā)日志下的前端性能優(yōu)化實(shí)測(cè)日志面板最常見(jiàn)的性能殺手是 DOM 節(jié)點(diǎn)無(wú)限增多每一條日志就是一個(gè) DOM 元素跑一晚上幾萬(wàn)條日志會(huì)直接壓垮頁(yè)面。Quenox 的解決辦法是可視區(qū)域日志窗口前端只保留最新 1000 條日志的 DOM 節(jié)點(diǎn)超過(guò)后自動(dòng)移除最早的一條。用戶(hù)滾動(dòng)查看舊日志時(shí)則暫停實(shí)時(shí)追加改為加載環(huán)形隊(duì)列中的歷史片段滾動(dòng)到底部時(shí)恢復(fù)實(shí)時(shí)流。整個(gè)交互模式跟聊天軟件加載歷史消息非常相似實(shí)現(xiàn)簡(jiǎn)單、用戶(hù)也容易上手。在這里我再分享一個(gè)關(guān)于顏色標(biāo)記的細(xì)節(jié)。日志級(jí)別不同前端展示時(shí)用顏色區(qū)分是常規(guī)操作但工程上要注意顏色不能靠前端猜——直接依賴(lài)level字段驅(qū)動(dòng)不要用正則去匹配消息內(nèi)容里有沒(méi)有 error 這類(lèi)關(guān)鍵字???jī)?nèi)容匹配的代價(jià)很大一是誤判率高比如 temperature error check ok 這種句子明明語(yǔ)義正常卻被打紅高亮二是性能開(kāi)銷(xiāo)大每條日志都要跑一遍正則匹配高頻率時(shí)會(huì)阻塞主線程。用結(jié)構(gòu)化字段驅(qū)動(dòng)的方式則天然規(guī)避了這兩個(gè)問(wèn)題而且設(shè)備端代碼只需要在一開(kāi)始設(shè)置好正確的級(jí)別后面的展示邏輯就完全不用費(fèi)心。5. 實(shí)操過(guò)程從零搭建 Quenox 面板的完整記錄5.1 引腳與接線參考設(shè)備端我這里以最常見(jiàn)的 STM32F103 開(kāi)發(fā)板為例說(shuō)明接線。準(zhǔn)備一塊 USB-TTL 橋接器一臺(tái)運(yùn)行面板服務(wù)的電腦。目標(biāo)板與橋接器的接線情況如下表設(shè)備端STM32F103橋接器CP2102說(shuō)明GNDGND必須共地否則亂碼PA9 (USART1_TX)RXD設(shè)備發(fā)送、橋接器接收PA10 (USART1_RX)TXD設(shè)備接收、橋接器發(fā)送BOOT0RTS經(jīng)三極管或直接用于控制下載模式NRSTDTR經(jīng)三極管或直接用于控制復(fù)位個(gè)人建議在 DTR、RTS 與目標(biāo)板之間串一個(gè) 100 歐姆左右的電阻防止信號(hào)反射和過(guò)沖損壞引腳。三極管隔離方案更穩(wěn)但對(duì)于大多數(shù)開(kāi)發(fā)板直連也能正常工作動(dòng)手能力強(qiáng)的建議自行加上隔離省心。5.2 橋接器固件配置要義如果你手頭的 USB 轉(zhuǎn)串口芯片不是官方現(xiàn)成模塊而是裸芯片做的可能要先配置芯片的 EEPROM。CP2102 有一個(gè)官方配置工具可以把 VID、PID、產(chǎn)品字符串等燒寫(xiě)進(jìn)芯片內(nèi)部。對(duì)于 Quenox 面板識(shí)別來(lái)說(shuō)這條信息的價(jià)值在于讓系統(tǒng)能區(qū)分哪個(gè)串口是橋接器尤其是當(dāng)電腦上插著多個(gè) USB 串口設(shè)備時(shí)面板可以通過(guò)制造商字符串精確匹配目標(biāo)設(shè)備節(jié)點(diǎn)而不是讓用戶(hù)去逐個(gè)猜。以 Linux 系統(tǒng)為例模塊默認(rèn)枚舉出的設(shè)備節(jié)點(diǎn)可能是/dev/ttyUSB0、/dev/ttyUSB1如果插了兩塊不同的橋接器名字很容易亂套。我在 Quenox 服務(wù)端做的串口掃描邏輯中加入了制造商字符匹配優(yōu)先找不到則按枚舉順序的兜底策略這樣用戶(hù)只要在面板里選一次設(shè)備下次自動(dòng)按 USB 序列號(hào)關(guān)聯(lián)不會(huì)再因?yàn)橹匦虏灏雾樞蜃兞藢?dǎo)致選錯(cuò)設(shè)備。Windows 下處理方式也類(lèi)似在設(shè)備管理器中根據(jù)端口描述里填寫(xiě)的字符串即可區(qū)分將目標(biāo)設(shè)備的描述統(tǒng)一改成Quenox-Bridge實(shí)際使用中就再也不會(huì)混淆串口號(hào)了。5.3 面板服務(wù)快速啟動(dòng)流程下面給出從拉取代碼到面板可用的快速流程基于我實(shí)際整理的 Quenox 項(xiàng)目結(jié)構(gòu)git clone https://example.com/quenox.git # 示意地址實(shí)際以源碼倉(cāng)庫(kù)為準(zhǔn) cd quenox/server python3 -m venv venv source venv/bin/activate pip install -r requirements.txt python app.py --config config.yaml啟動(dòng)之后瀏覽器訪問(wèn)http://localhost:8080即可打開(kāi)面板。首次進(jìn)入會(huì)看到一個(gè)設(shè)備選擇界面點(diǎn)刷新串口列表后選定目標(biāo)板對(duì)應(yīng)的串口再點(diǎn)連接按鈕。此時(shí)如果你給開(kāi)發(fā)板通上電面板日志區(qū)應(yīng)該立刻開(kāi)始滾動(dòng)顯示來(lái)自串口的啟動(dòng)信息。如果沒(méi)有任何輸出優(yōu)先檢查三個(gè)地方橋接器 TXD 是否確實(shí)連接到了設(shè)備端 RX很多新手會(huì)交叉接反波特率是否已經(jīng)與設(shè)備端串口初始化配置一致接線是否有共地5.4 設(shè)備端串口透?jìng)鞔a的關(guān)鍵設(shè)計(jì)設(shè)備端這邊的代碼不需要太復(fù)雜但有幾個(gè)關(guān)鍵細(xì)節(jié)值得注意。首先是串口初始化的參數(shù)我用的是115200, 8, N, 1即波特率 115200數(shù)據(jù)位 8無(wú)校驗(yàn)停止位 1這是最普遍的調(diào)試配置。中斷驅(qū)動(dòng)的環(huán)形緩沖區(qū)必須比最大日志幀要大我設(shè)置為 1024 字節(jié)保證突發(fā)數(shù)據(jù)不會(huì)覆蓋。其次是關(guān)于斷線自動(dòng)重發(fā)和發(fā)送緩沖的處理。設(shè)備端不應(yīng)盲目地往串口發(fā)送大量數(shù)據(jù)否則不斷電重啟時(shí)發(fā)送緩沖區(qū)溢出會(huì)直接拖累主循環(huán)性能。對(duì)于日志輸出的封裝我在設(shè)備端封裝了一個(gè)輕量級(jí)函數(shù)核心代碼如下void quenox_log(const char *src, char level, const char *fmt, ...) { char buf[256]; va_list args; va_start(args, fmt); int len vsnprintf(buf, sizeof(buf) - 2, fmt, args); va_end(args); buf[len] \n; uart_write_bytes(UART_DEBUG_PORT, buf, len); }注意這個(gè)函數(shù)的兩個(gè)設(shè)計(jì)巧思。一是輸出始終以換行符結(jié)尾橋接器據(jù)此做行切割二是vsnprintf的第二個(gè)參數(shù)限定了緩沖長(zhǎng)度上限防止格式化長(zhǎng)日志時(shí)破壞棧空間。使用的時(shí)候直接在應(yīng)用層調(diào)用quenox_log(SENSOR, I, temp:%d, raw)就可以了。最開(kāi)始做 Quenox 設(shè)備端代碼時(shí)我圖省事直接調(diào)printf重定向到串口結(jié)果高負(fù)載下系統(tǒng)卡頓非常嚴(yán)重——重定向?qū)犹孛看味家咄暾袷交?。改成這種輕量封裝后開(kāi)銷(xiāo)降低了一個(gè)量級(jí)實(shí)測(cè)完全不影響實(shí)時(shí)控制周期。5.5 多設(shè)備接入實(shí)測(cè)Quenox 設(shè)計(jì)之初就把同時(shí)管理多設(shè)備作為一項(xiàng)核心能力因此在真實(shí)驗(yàn)證時(shí)我拿了一塊 STM32F103、一塊 ESP32 和一塊全志 H3 的 Linux 小開(kāi)發(fā)板做了混合接入測(cè)試。三塊設(shè)備的橋接器分別是三個(gè)不同的 CP2102 模塊統(tǒng)一插到一臺(tái) USB HUB 上連接面板主機(jī)。測(cè)試中發(fā)現(xiàn)一個(gè)有意思的現(xiàn)象同一 HUB 下多路串口同時(shí)工作少數(shù)廉價(jià) HUB 會(huì)因電源供壓不足造成其中一路橋接器掉線表現(xiàn)為面板中該設(shè)備狀態(tài)變?yōu)殡x線。這個(gè)問(wèn)題的根源在于 USB HUB 的供電能力。一個(gè) CP2102 的典型工作電流在 15mA 到 30mA 之間看起來(lái)不大但三四個(gè)疊加后加上劣質(zhì) HUB 的自身?yè)p耗很容易突破供電上限。換成帶外部電源的 HUB 之后問(wèn)題消失。這個(gè)經(jīng)驗(yàn)至今記在 Quenox 的 README 里插拔接線前建議先確認(rèn) HUB 電源是否獨(dú)立省掉大量無(wú)謂的斷連排查。多設(shè)備同時(shí)接入時(shí)面板支持按設(shè)備 ID 分開(kāi)渲染日志區(qū)域也支持切換到合并模式把所有設(shè)備的日志按時(shí)間戳統(tǒng)一排列到一個(gè)滾動(dòng)流里。合并模式在多設(shè)備聯(lián)調(diào)時(shí)很有用可以直接看到設(shè)備 A 發(fā)送一條指令后設(shè)備 B 在多少毫秒后做出了響應(yīng)。配合時(shí)間戳精確到毫秒的特性很多聯(lián)調(diào)時(shí)序問(wèn)題一眼就能定位不需要再用手機(jī)拍兩臺(tái)電腦屏幕對(duì)比時(shí)間。6. 常見(jiàn)問(wèn)題與排查心得6.1 日志亂碼或完全沒(méi)有輸出這是 Quenox 使用中出現(xiàn)頻率最高的問(wèn)題原因通常集中在三處波特率不匹配設(shè)備端初始化時(shí)配置的波特率和橋接器打開(kāi)的波特率不是同一個(gè)最常見(jiàn)于第一次拷貝別人的工程時(shí)忘了改配置。解決方法是明確知道設(shè)備端代碼里設(shè)置的值面板配置保持一致。引腳接反TX 接了 TXRX 接了 RX交叉連接才能通。共地遺漏信號(hào)地沒(méi)有連通數(shù)據(jù)電平?jīng)]有參考基準(zhǔn)表現(xiàn)為偶發(fā)亂碼或不穩(wěn)定輸出。排查這類(lèi)問(wèn)題我建議按順序走先用邏輯分析儀看橋接器 RXD 引腳上有沒(méi)有波形沒(méi)有波形說(shuō)明設(shè)備端壓根沒(méi)發(fā)數(shù)據(jù)或者線路不通有波形后再看波特率對(duì)不對(duì)這時(shí)可以調(diào)節(jié)面板的采樣精度來(lái)輔助判斷。如果邏輯分析儀顯示信號(hào)有方波但面板打開(kāi)后依然無(wú)數(shù)據(jù)再檢查橋接器設(shè)備名是否被系統(tǒng)分配到了別的 USB 串口號(hào)、是不是選錯(cuò)了設(shè)備。6.2 一鍵復(fù)位/自動(dòng)燒錄反復(fù)失敗自動(dòng)燒錄失敗的原因七成出在時(shí)序不對(duì)剩下三成出在電路連接不到位。前面說(shuō)過(guò) DTR/RTS 控制需要精確延時(shí)這里給出我在 STM32 和 ESP32 上實(shí)測(cè)可用的參考時(shí)序按固件腳本中定義的兩個(gè)重要時(shí)間參數(shù)來(lái)調(diào)芯片平臺(tái)RTS 拉低BOOT進(jìn)入DTR 保持時(shí)長(zhǎng)釋放復(fù)位后等待時(shí)長(zhǎng)STM32 串口ISP先拉低 BOOT0保持至少 20ms等待 50ms 后枚舉ESP32 下載模式EN 先拉低GPIO0 保持至少 30ms釋放 EN 后等待 100ms還需要注意橋接器和目標(biāo)板的供電時(shí)序。有些開(kāi)發(fā)板的 BOOT 引腳內(nèi)部有上拉或下拉電阻外部電路必須保證拉電流足夠否則雖然代碼里設(shè)置了拉低 BOOT 信號(hào)實(shí)際電平還是被內(nèi)部電阻拉回到錯(cuò)誤狀態(tài)。壓制方式是在 BOOT 引腳上多接一個(gè)幾毫安的灌電流路徑或者直接用一個(gè)三極管把引腳強(qiáng)拉到地。這些細(xì)節(jié)在教程里不容易被提到但實(shí)際操作用處極大。6.3 WebSocket 頻繁斷開(kāi)日志流中斷我在長(zhǎng)時(shí)間跑數(shù)據(jù)時(shí)曾經(jīng)遇到 WebSocket 每隔十幾分鐘就斷開(kāi)一次的情況。用瀏覽器開(kāi)發(fā)工具查看網(wǎng)絡(luò)面板發(fā)現(xiàn)服務(wù)端沒(méi)有主動(dòng)關(guān)閉前端也沒(méi)有主動(dòng)斷開(kāi)看起來(lái)像是中間網(wǎng)絡(luò)設(shè)備把空閑連接清理了。這是因?yàn)椴糠致酚善骰蚪粨Q機(jī)默認(rèn)開(kāi)啟 TCP 空閑超時(shí)機(jī)制長(zhǎng)時(shí)間沒(méi)有數(shù)據(jù)交互的連接會(huì)被靜默回收。日志流在無(wú)輸出時(shí)保持連接一動(dòng)不動(dòng)很容易觸發(fā)這個(gè)機(jī)制。解決辦法有兩種第一前端定時(shí)每 30 秒發(fā)送一個(gè)心跳 Ping 幀第二服務(wù)端在推送日志的同時(shí)附帶一個(gè)輕量心跳字段確保連接上持續(xù)有流量。Quenox 最終采用的是前者原因很簡(jiǎn)單這樣服務(wù)端代碼更純粹不需要在日志數(shù)據(jù)里夾帶周期性冗余字段日志流結(jié)構(gòu)始終干凈。實(shí)現(xiàn)了心跳之后連接穩(wěn)定時(shí)間從十幾分鐘斷一次變成了連續(xù)運(yùn)行幾天不斷。6.4 日志時(shí)間戳不準(zhǔn)跨設(shè)備排序混亂多設(shè)備合并視圖中最影響判斷的就是時(shí)間戳混亂。問(wèn)題根源在于橋接器發(fā)出的時(shí)間戳基于宿主機(jī)的系統(tǒng)時(shí)鐘而宿主機(jī)的時(shí)鐘如果沒(méi)有做時(shí)間同步不同設(shè)備的數(shù)據(jù)就無(wú)法落在一個(gè)統(tǒng)一時(shí)間基準(zhǔn)上。Quenox 的解決方案是在服務(wù)端啟動(dòng)時(shí)強(qiáng)制對(duì)齊系統(tǒng)時(shí)間并周期從 NTP 服務(wù)器同步。面板在回放歷史日志時(shí)會(huì)額外顯示一個(gè)相對(duì)時(shí)間列從收到的第一條日志算起以毫秒為單位遞增。這樣即使宿主機(jī)時(shí)鐘沒(méi)有絕對(duì)同步相對(duì)排序的可信度依然很高。在離線環(huán)境中沒(méi)有 NTP 服務(wù)時(shí)我建議開(kāi)發(fā)主機(jī)手動(dòng)用 GPS 模塊或手機(jī)時(shí)間校準(zhǔn)一次再啟動(dòng) Quenox 服務(wù)??傊^對(duì)不要依賴(lài)設(shè)備自己的時(shí)鐘做跨設(shè)備排序容易采坑。7. 這臺(tái)調(diào)試面板還能往哪走Quenox 做出來(lái)后我最大的體會(huì)是所謂調(diào)試工具最高級(jí)的狀態(tài)就是在需要的時(shí)候它就在那里不需要它時(shí)你意識(shí)不到它的存在。很多商業(yè)工具把功能堆得很高但每一步操作都要切頁(yè)面、點(diǎn)確認(rèn)、等刷新實(shí)際調(diào)試中反而挫敗感很強(qiáng)。Quenox 把鏈路壓到最短打開(kāi)瀏覽器即用設(shè)備連著串口線就能進(jìn)面板操作整個(gè)過(guò)程不需要額外安裝任何客戶(hù)端。后續(xù)我覺(jué)得有幾個(gè)方向值得擴(kuò)展一是加入簡(jiǎn)單的波形顯示功能通過(guò)協(xié)議把 ADC 采樣或傳感器數(shù)值以流式數(shù)據(jù)推送前端用 Canvas 折線圖實(shí)時(shí)繪制這對(duì)傳感器調(diào)試意義很大二是引入腳本自動(dòng)化比如設(shè)備上電后等 3 秒發(fā)送啟動(dòng)命令再等 5 秒讀取狀態(tài)寄存器來(lái)判斷系統(tǒng)是否完整啟動(dòng)這類(lèi)場(chǎng)景可通過(guò)面板內(nèi)建的腳本引擎來(lái)自動(dòng)執(zhí)行手敲命令的效率無(wú)法與之相比三是支持通過(guò)網(wǎng)口橋接替代 USB 直連把 Quenox 擴(kuò)展成遠(yuǎn)程實(shí)驗(yàn)室形態(tài)這樣設(shè)備放在辦公室里我在家也能隨時(shí)連接調(diào)試。Quenox 這個(gè)項(xiàng)目最終給我?guī)?lái)的收獲不只是那幾屏能滾動(dòng)的日志而是對(duì)鏈路越短、調(diào)試越可控這件事的徹底認(rèn)同。開(kāi)發(fā)硬件系統(tǒng)的過(guò)程中復(fù)雜的調(diào)試問(wèn)題往往源于工具鏈本身的混亂而不是真正的問(wèn)題邏輯。把數(shù)據(jù)通路收斂得足夠短、把狀態(tài)反饋?zhàn)龅米銐蛑庇^很多看似詭異的問(wèn)題會(huì)在面板前一目了然。要是你手上也有一堆開(kāi)發(fā)板、天天跟串口線和燒錄器打交道不妨按這個(gè)思路自己攢一個(gè)調(diào)試面板工程量不大但回報(bào)周期極短。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久草草欧美精品| 欧美日韩99精品麻豆传媒| 国产又操| 色综合20p| 91bbb| 国产吞精a级片激情电影| 欧美18禁91| 中文字幕欧美丝袜07资源| 日本高清有码网址视频| 中国黄色特级精品一区二区三区片| av毛片aaaaa免费看| 国产粉嫩出水在线播放| 免费少妇一区二区| 狠狠躁AV| 国产一级137片内射麻豆| 久久久久国产亚洲一区欧美色图日韩 | 欧美高清16| 欧美另类综合久久| 久久久9 9 9精品| 欧美性爱日韩高清| 歐美一級亂黃99在綫精品| 99热婷婷一区二区三| 久久精视频美日韩在线视频| 婷婷久草| 96精品在线| 72av视频| 丝袜制服字幕在线| 精品日韩中文在线| 99国内熟女露脸视频| 欧美精品日韩久久久九| 久9久9久9久9久9久9| 日日日日做夜夜夜夜无码| 97硬碰| 国产又粗又大硬免费色网视频| 婷婷六月天| 亚州性色| 精品v1区| 美女被艹尤物视频| 69av一区二区三区| 91路www| 国产高清在线观看欧美| 亚洲中文字幕熟女少妇一区二区| 91在线页| 欧美日韩香蕉| 欧美黑人与女人91| 久久久久性熟视频| 五月婷婷丁香中文字幕| 99re视频这里只有精品| 综合网欧| 伊人色综合网电影 | 久草色悠悠在线视频| 精品毛片av一区二区| 97视频900| 91精品久久久久久综合五月天| 亚洲天天操| 亚洲 欧美 另类 综合 偷拍| 国产av又色又爽又黄| 神马九九九| 亚洲,欧美,春色,另类| 色欲天天综合久久久无码网中文| 亚洲丝袜99| 五月天激情婷婷| 欧美视频一| 情色五月天就去干| 草b在线| 亚洲精品尤物yw在线影院| 51国产午夜精品视频| 久草草一二三四区久久| 激情文学网伊人| 午夜男女爽爽爽影院视频| 亚洲蜜臀视频精品久久| 久久婷婷色综合一区二区三区| 干我久操| 大香蕉狠狠爱| 日日日大屁股骚女人精品| 99九九久久| 性爱乱伦视频免费| 视频国产成人精品日本亚洲18 | 国产精品久久久久久久久AV大片 | 在线观看啊啊啊啊啊| 极品五月天噜噜| 日本五十路熟女一区二区| 中文 人妻 制服| 99只有精品| 狠狠躁AV| 黄色网址久久精品欧美喷水| 殴美大黄片| 91精品亚洲内射孕妇| 夫妻AV网站| 神马久久久久久久久久| 一本一道人妻久久一区二区三区 | 亚洲av国产av综合av卡| 久久性爱视频免费看| 中文字幕av一区二区三区人妻少妇| 久久国产三区| 五月色综合| 日本一区二区成人在线| 人人操,操人人| 国内毛片国产欧美拍| 青草一区二区| 亚洲成成熟女人综合一区二区| jiujiujiujingpin| 97视频在| 嫩草影院永久在线制服丝袜| 亚洲吊色| 亚洲欧美一区二区不卡视频播放 | 国产三级日产三级韩国三级| 国产精品制服丝袜清纯唯美| 近亲乱伦一区二区| 99re公开精品免费视频| 日本成人电影资源网| 蜜乳视频网站| 久久黄片国产一区二区| 宅男91视频在线播放| 久久久久久久久成人av解说| 3p国产色噜噜一区| 欧洲色色| 97超级久久强资源| 夜夜夜久久| 色婷婷综合网| 嗯嗯啊操我| 99在线免费视频| 午夜黄色免费在线观看| 欧美性爱系列| 91色艳| 国产av白丝| 性感女人网页在线观看视频| 密臀在线免费观看| 一级黄碟在线观看| 欧美精品欧美精品系列| 亚洲图片欧美偷拍| 熟女乱3伦999| 黄色片一区二区三区四区五区| 日韩福利综合一区| 91精品黄在线观看| 91久久久久免| 99www.bibizy香蕉资源国产一区二区三区高清| 久日综合网| 亚洲色图 图片| 天堂综合| 日韩97P| 岛国1区2区3区在线观看| 密乳AV免费观看| 93人人操人人| 五月婷在线| 一本一道人妻久久一区二区三区 | 在线观看一卡二卡| 东北女人被操| 老熟妇一区二区三区| 老鸭窝在线视频播放| 97美日韩视频| 天堂俺去俺来也www久久婷婷| 国产野战露脸在线播放| 色5月婷婷| 亚洲伊人久久精品狠狠在线| 久久精品人妻一区二区三区| 密乳视频在线| 在线啊v一区| 亚洲国产剧情少妇激情| 日韩欧美麻豆| 日本色色视频网站| 黑丝内射一区二区三区| 91成人高清在线观看| av网页一区二区三区| 亚洲性爱无码乱伦av| 99热综合| 天堂亚洲精品久久老牛| 思思热国产高清| 日本三级一区二区 在线| 色色色色电影网| 高清不卡一二三区视频......| 欧美少妇高潮久久91| 亚洲玖玖爱| 欧差乱伦二三| 大香蕉伊人久久| 亚洲精品欧美专业| 超碰人人干天天射| 中国女人内射6XXXXX| 欧美亚洲综合色| 久久综合av| 欧美人黑A片无码免视费| 思思热影视| 少妇99成人麻豆| 老色鬼成人精品视频下载大在线观看| baiduhicn.com。| 岛国片在线视频网站| 久九九九九九九九热| 黄页18禁| 大香蕉久操| 国产精品久久久久无码A√| 中出91视频| 久久综合精品一区二区三区| 久久久久久亚洲精品不卡人乳| 国产又黄又粗的视频| 色九色久| 亚洲系列欧美| 日韩一级二级三级免费看完整版国语版| 色牛牛AV| 在线强奷到舒服的无码视频| 亚洲,日韩,欧美,成人播放| 欧美综合综合| 国产乱码久久久| 婷婷精品国产一区二区三区日韩| 日本美女性生活久久久久久久| 在线观看日韩av不卡| 黑人精品XXX一区一二区| 亚洲人妻日日日| 久偷拍欧美日韩三区| 久久久草成人网站久久久草成人久久久草久久久| 中文字幕乱码人妻二区三区| 国产一区二区在线播放量| 超碰97COm中文| 超碰免费人妻人人| 欧美日韩资源| 极品色综合| 夜夜做夜夜爽精品视频| 干妹子| 亚洲天天精品| 哈哈操 大香蕉| 日本布卡一区二三区| 青娱乐手机日韩在线视频| 操B久久| 欧美久久草熟女| 亚洲高潮少妇| 激情终合网| 青草香蕉网| 夜夜嗨AV蜜臀av| 97综合国产精品高潮久久| 97爱免费插| 久久手机视直播| av中文字幕在线熟女| 五月天激情网站| 91丨九色丨国产打屁股| 日本狠狠干| 国产风韵犹存熟妇三区| 99精品网| 午夜男女爽爽爽影院视频| 久久只有精品一区二区三区| 强奸乱伦大香蕉| 欧亚揄拍偷拍精品视频 | av亚欧| 久久综合日韩亚洲欧美| 欧美日韩大黄片| 久久久国产精品亚洲精品| 国产一区二区在线电影| 啊啊嗯嗯好爽| 久9久精品视频| 久久婷婷伊人| 亚洲高清无毛一区二区| 伊人欧美大香蕉视频| 亚洲天堂性爱| 亚洲综合成人网| 五月丁香黄色网| 亚洲精品久久久久久| 久热69九色熟妇97| 国产九九九九九九九九| 青春草莓视频在线观看网址| 9997se| 精品久久久中文字幕不| 久久精品店| 亚欧色图在线激情| 九草九九九| 亚洲中文字幕妇伦久久| 操比国产| 91丨九色丨国产丨人妻在线| 囯产精品久久久久久久久久二区三区 | 一本久道在线综合视频| 亚州性色| 九色 蝌蚪 熟女自| 久久一二三级一一一| 五月天激情影院| 午夜男女爽爽爽影院视频| 九九九只有精品| 亚洲男人的天堂一区二区| 熟女高潮合集-永久久久-成人AV| 男人亚洲91首页在线| 国产成人手机视频激情| 亚洲一区中文精品| 男女一进一出视频久久| 欧美天天影院| 亚洲综合射| 草蕉影视亚洲无码| AV天堂电影网| 丰满欧美少妇| 天天综合色电影| 国产精品岛国片在线观看| 国产JDAV无码视频在线观看| 国产精品 午夜福利| 免费97视频| 视频国产欧美在线播放| 啊好大好舒服| 精品亚洲| 欧美第一页性| 成人精品无码| 亚洲最大AV网| 一区操逼| 亚洲国产欧美另类自拍| 日韩性爱毛片操骚逼| 91性高朝久久久久久久久| 久久久久久久97| 97碰碰色| 一起草在线视频| 久9九综合在线| 欧美97网| 久久久日本电影| 九色黄站| 色波多| 99久久精品国产系列| 97国产精品一区二区传媒公司| 精品熟妇视频一区二区| 国语精品av| 97伊人| 久久久四区| 欧美宗合色| 大香蕉伊人网| 欧美爆乳精品一区二区| 婷婷去俺也去六月色| 美女极品一区二区三区| 欧美综合区| 激情四射五月天| 丁香五月av| 日韩内射视频| 亚洲视频二区| 丝袜美腿丝袜| 欧美性xxxxx狂欢| 欧美v亚洲v综合v国产v妖精| 亚洲欧美一区二区三区一猛片| 青草青草久热| 日韩97超碰中文字幕| 国产精品久久发布| 国产精品久久久九九九| 啊啊啊好大好深| 夜夜骑夜夜操| 欧美日韩国产中文精品字幕自在自线| 国产尹人在线视频免费| 91色碰| 人人超碰在线观看黄| 蜜臀久久精品久久久久视频| 久久久久久久性爱| 97在线观视频免费观看| 亚洲在线A| 国产91 丝袜在线播放00-百度| av网站国产主播在线| 影音先锋视频在线| 天天舔天天 | 欧美伦乱爱| 性欧美| 天天看天天日天天操| 97在线视频观看网站| 9久久精品| 91女网站| 簧片免费看视频| 人妻精品一区一区三区蜜桃91| 鲁鲁色综合网| 婷婷久久久| 人人操人人操人人操人人操人人操人人人11.CM | 九九九999久久久网站| 国产熟女一区二区丰满| 9999久久久久| 美女黄频a美女大全免费皮| 亚洲婷婷丁香在线| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 激情五月天色播| 亚洲免费成人精品电影| 国产一区二区免费福利片| 在线洲亚线| 高清无码91| 99久久婷婷国产综合精品草原| 欧美色图99| 色色婷婷五月| 欧美不卡在线一区二区| 精品一国2| 欧美人妻色| 国产麻豆福利av在线播放| 一级久久性爱视频| 九九九九九九九九九五码| 亚州男人天堂| 丁香五月色情| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 日本免费中文字幕在线 | 日韩亚洲国产视频| 久久久久9999妇女| 欧美亚洲天堂| 九色 人妻 大香蕉| 亚洲精品欧洲色| 偷窥自拍A片| 日日骚精品视频| 免费日韩黄片| 天美精品一区二区三区四区在线观看| julia国产在线| 东北丰满熟女国产一区| 欧美午夜视频| 亚洲欧洲自拍图片专区满春格| 五月婷婷激情综合| 精品97久久| 激情五月天色播| 99热精品在线观看| 国产人妻精品久久久一区二区三区| 欧美性第1页| 亚洲色图殴美色图激情乱伦| 国产精品在线一区二区| 亚洲二区精品在线观看| 亚洲九九视频| 天美精品av| 大肥女高潮bbwbbwhd视频| 混色激情av| 少妇久久久| 天天看片天天爽| 国产 日韩,欧美 自拍| 麻豆一区在线| 天天草天天干天天日| 亚洲图片视频小说| 欧美性天天影视| 99re免费| 人妻少妇色综合| 成年人性爱日韩| 国内精品久9| 久久国产三区| 天天激情综合站| 欧美一区二区三区黄色影视| 欧美综合区| 亚洲国产97| 久久这里只有精品9| 97WW精品| 国产久久av| 中文字幕青青草| 天天日老熟妇| 精品久久久久久中文| 亚洲有薄码区久久在线一区| 欧洲天天在线| 久久久久久亚洲中文| 精品久久久一本一道| 亚洲精品丝袜-不卡成人免费……| 久久久久九九九| 亚洲性猛交| 噜噜噜无码AV一级一级久久影院| 久久精品一区二区三区四区五区| 欧美日韩人妻婷婷一区| 超碰在线91| 强奸乱伦AV一天堂网| 亚洲国产中文字幕| 日韩97视频!在线| 久久久久久久国产视频| 狠狠91| 青青操视频在线| 熟女人妻av在线资源,黄色的资源| 久热在线精品免费观看| 粉嫩AV一区二区夜夜| 久久、1234| 大香蕉久操| 国产日韩精品人妻久久久久色欲网站| 色欲久久99国产精品久久久久久| 韩日自拍| 亚洲欧洲色情高清| 99.色网| 亚洲成人久久美女| 亚洲一级性爱视频免费看| 欧美亚洲综合高清在线| 18禁久久| 97视频900| 成人影 天天操 亚洲| 欧亚性爱视频免费看| 国产兽交视频在线播放| 好爽免费视频| 亚州欧美在线| 日韩特一级久久| 亚洲自拍欧美国产首页网曝| 嗯嗯,啊啊,国产精品| 中文字幕在线高清男人的天堂| 操操逼视频| av网站在线看| 好爽视频在线观看视频 | 亚洲成人妻日韩在线| 国产精品对白内射| 999久久久久久久精| 天天综合色| 国产在线视视频有精品| 黄色性爱网网| 操婷婷逼| 操逼操操操91| 国产精品自拍欧美在线| 午夜无码精品免费看性色| 亚洲欧洲中文日韩女优乱码| 男人的天堂 在线一区| 变态综合色| 香蕉精品二区二区| 清纯唯美综合亚洲| 人妻熟女一区二区三区视频| 东北老熟女| 可以在线观看AV的网站| 岛国网址国产| 国产家庭乱伦网址| 91在线精品| 人看人人摸人人操| 欧美日韩国产在线| 老女人爆菊| 亚洲男人的天堂V| 91久久久视| 久久久性爱视频| 久久爽爽精品| 丰满熟女人妻一区二区三五十一路| 豆1无夜无码| 亚洲日韩黑丝| 春色91| 天美传媒AV在线| 91操操操操| 囯戸精品高潮呻吟旡码| 久久久久成人亚洲国产| 91狠狠综合久久久| 综合久草| 粉嫩小泬久久久一区二区| 精品一二三区女同| 亚洲成成熟女人综合一区二区| 亚洲精品91| 84YTCOM性无码| 日韩中文字幕视频| 强奸乱伦αv片| 99热9| 久久熟妇五十路一区| 91天天爱| 久久这里只| 天天看夜夜看日日干| 国产宅男宅女在线观看| 色情综合| 久久精品72| 日韩精品人妻中文字幕不卡乱码| 又大又大又大又粗爽高潮观看| 久操操AV电影| 99操99| 蜜奶av| 无码人妻毛片丰满熟妇精品区| 97超碰超| 日韩精品一区二区日韩| 嗯啊不要在线观看嗯啊| 亚洲凸凹超碰成人| 精品91日日夜夜超清资源| 欧美日日操| 资源在线观一 二| 国产精品久久久久久久久久久久久久久久 | AV有码在线| 日本熟女不卡视频| 日日操天天操| 精品一二三区女同| 国产无码成人无码| 亚洲操逼视频网站| 欧美91在线+|+欧美| 操久久久久| 国产综合网站在线播放| 欧美日韩免费专区在线| 1024精品在线| 免费中文在线| 小骚逼被操的爽不爽| 美女久久久久久久久久久| 亚洲操逼无码| 日欧毛片久久| 婷婷av在线中文字幕| 国产后入式在线观看| 欧美伊人久久综合网| 韩日精品四区| 欲香欲色综合天天伊人| 国产成人bd在线观看| 天天干天天日天天射黄色片| 中文视频在线观看| 激情99| 日韩人人精品| 亚洲古典另类欧美在线| 99re99视频在线免费观看| 国产呦精品系列在线观看| 婷婷丁香五月综合| 亚洲图片视频小说| 无码国产精品久久久久| 国产性爱欧美性爱在线 | 4tube欧美女厕所| 午夜寂寞欧美| 精品中文一区二区| 亚洲无吗在线视频| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 亚洲欧美另类少妇精品| 国产精品人妻无码久久久互動交流 | 91美女视频| 人妻加勒比东京热| 极品色| 欧美性天天影视| 中日韓欧美高清| 开心五月婷婷| V A在线| 国产人伦精品一区二区三区| 亚洲av综合伊人久久| 精品国产99| 精品国产无码中文| 九九九九精品一区| 久久精品店| 色噜噜狠狠色综无码久久| 在线观看日韩av不卡| 久久久草草精品| 3p国产欧美99热| 1024精品在线| 久久啊哟| 操逼日批| 久久久久久九九九九九九| 亚洲熟女中文字幕在线| 亚洲黄色| 大香蕉欧美伊| 久久久无码av精| 午夜福利合集| 性感女人网页在线观看视频| 精品无码久久久久久国产浪潮| 中文字幕AV片| 色播丁香| 五月丁香六月综合缴清无码 | 天天操女人| 欧美十八禁视频| 日本三级韩国三级美三级91| 日韩啪啪网| 97干色| 女人的天堂大香蕉网| 国产 三级自拍| 99国产精品| 97频视在线| 99精品视频在线观看| 乱抡国产91| 久9爱精品| 久9久| 国产av美女被艹的乱叫| 深夜福利黄片| 99re在线视频这里只有精品| 九九视品黄色| 欧美性爱系列| 涩综合导航| 美女十八禁| 天天干人人看综合| 老熟妇一区二区三区啪啪| 91美女丝袜诱惑视频| 小日子操bb在线看| 中文字幕乱码在线观看| 国产精品久久久久久久免牛肉蒲团| 99爱精品| 影音先锋乱| 日本αv| 欧美性爱超碰97| 亚洲第91页 | 欧美性爱在线无码| 亚洲天天做日日做天天谢日日 | 秋霞一区二区三区四区五区六区七区| 色婷婷基地| 岛国网址国产| 99色热| 大香蕉一人在线| www.久久制服糖| 亚洲色图欧美色图制服丝袜 | 亚洲熟妇图片| 日韩国产精品人妻无码久久久| 6080yy午夜理论三级一区二区三区无码| 97 国产精品| www.超碰在线| 97爱亚洲| av操操不卡| 人妻无一区二区三区| 午夜精品久久久99| 成人无码在线超碰网| 吉川爱美亚洲二区在线 | 亚洲AV在线资源| 天天躁日日躁XXXXYY| 亚洲色天堂九9| 97天堂| 电家庭影院午夜69久久夜色精品国产69乱 | 国产无遮挡| 欧美精品23| 试看60秒| www.色婷婷.com| 又大又大又大又粗爽高潮观看 | 精品人妻久久久久一区二区三区| 婷婷六月天| 亚洲欧美国产va在线播放频| 超碰天天操你比| 天天干天天狼在线视频| 国色综合天| 日欧美色| 人妻激情偷乱视三区频一区二区| 亚洲97在线| 免费看污网址| 九九Av| 国产最火爆久久国产网站网站| 亚洲宗合网| 99精品在线观看| 中国农村熟妇毛片视频| 青青草女人天天干| 小草精彩毛片| 亚洲砖码砖专无区2023| 久久久久久9| 强奸熟女一区二区三区| 精品久久視頻在线| 黄片免费久久久久久久| 亚洲色图一区二区三区| 久久久久久久六六| 艳美熟妇先锋一二三区| 无码高清专| 国产午夜精品理论片a大结局| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 日韩九九九| 91美女在线视频| 天天做天天爽| 搡老人老9丨女老熟人| 国产精品熟女一区二区三区| 天天爱综合网| 亚洲情色一区三区| 狠狠色综合网| 欧美黄片欧美黄片xxx| 欧美成人一级麻豆| 91情色在线| 97av,com| 黄呦呦在线| 天美国产三级传媒| 久久丁香五月天| 粉嫩粉嫩一区性色AV片| 欧美18 在线观看| 99re99| 亚洲色婷婷综合久久一区二区三区| 骚逼一区二区| 国内精品不卡无毒99999| 成人片在线播放| 自拍大香蕉乱插| 国产高清无码一区三区二区| 日本在线观看网址| 99re免费| 久久精品熟妇丰满人妻99| 欧美色图99| 欧美91色| 亚洲精品久久一区二区三区蜜桃臀| 国产性刺激| 91精品国产综合久久久蜜臀| 99热在线观看| 婷婷99狠狠躁天天躁| 爱做久久久久久| 欧日a| 睡产熟女乱伦| 天天视频综合在线观看视频| 园内精品自拍视频在线播放| 伊人丁香五月婷婷| 以及麻豆国产入口在线观看免费| 亚洲色婷婷久久久综合日本| 热热色91| 欧美性夜| 蜜臀久久99精品久久久| 久久 精品| 精品一区99999| 五月情色天| 亚洲成?V人片在线观看福利| 国产农村妇女精品一| 97se亚洲综合自| 蜜乳AV一区二区三区四| 97色97好| 亚洲久久久久| 色色五月丁香| 欧美人妻另类在线| 国产最新小视频在线播放下载| 久久久一区二区三区四曲免费听 | 欧美天天插| 中文字幕一品色图| 中日亚韩免费视频| 欧美 综合| 校园春色亚洲| 加勒比无码一区二区三区| 中文字幕第二页| 国产性爱乱伦AV| 欧美熟女妇同| 囯产精品久久久久久久久久梁医生 | 九久9精品| 国产av激情无码久久天堂| Av色五月| 欧美色图色综合| 九九成人| 伊人网高清| 超碰狠狠操| 97久久超碰日韩精品| 人人爱人人操人人性| 青青草玖玖爱| 亚洲精品天堂久久A∨51成人漫| 久久中出在线| 美国黄片aaa| 97露脸精品丝袜| 一个色导综合| 精品人妻一区二区乱码一区二区| A一区片| 欧美 传媒 麻豆 日韩 偷拍| 超碰免费人妻人人| 吉川爱美98堂在线| 欧美日韩*字幕一区| 东北女人的毛片| 亚洲成aⅴ人片不卡无码| 极品粉嫩少妇视频| 国产一级内射无挡观看| 久久人爽| 黄色小视频日本txt| 一区超碰一区| 色五月激情综合网| 亚州男人天堂| 不卡九肏| 日韩人妻制服丝袜av| 国产情色第一第二页在线观看| 亚洲黄色网址视频| 日日干日日摸| 97人肏| 国产亚洲精品无码三区| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 蜜桃精品视频一区二区三区| 亚洲中文字母在线播放| 欧美激情精品久久久久久| 国产11页| 久久久久久69国产一区二区| 很狠操| 九九伊人网| 波多野结衣之双飞调教在线播放| 超碰碰激情97+久| 国产小视频91| 国产精品操| 国产熟女| 中文字幕在线日亚洲9| 久久久久亚洲| 久久人人爽av亚洲精品天堂桃色 | 久久精品日韩| 亚洲丝袜二区在线| 国产有码一区| 午夜精品探花| 亚洲无码精品AV久久久| 91丝袜在线视频| 色五月AV在线| 色五月婷婷网| 成人免费看吃奶视频网站| 综合网亚洲1| 久久久久久久少妇| 亚洲欧综合另类无码一区| 熟妇人妻丰满久久久久久久无码 | 99热这里是精品| 成人26uuu| 亚91网| 97日视频| 欧美成人9797| 亚洲黄色网址视频| 日本人妻丰满熟妇久久久久久| 色偷综合| 欧美熟妇精品黑人巨大一二三区| 人看人人摸人人操| 亚洲97成人在线观看| 久久超碰天天| 和协影院中文字幕三区| 91neishe| 一级性爱aaaa| 亚洲精品一区二区精品| 91综合网在线| 国产精品3| 91久久午夜无码鲁丝片久久人妻| 色综合久久久久| 性影在线视频| 久久综合九色综合欧洲98| 97伊人超碰| 美女黑人91神马| 蜜臀在线免费观看在线免费观看| 717影院理论午夜伦八戒| 草草影院最新网址| 久久伊人最新网址视频| 超碰99在线| 99热这里只有精品1| 欧美999999| 91色综合激情| 亚洲色图久久成人| 日本欧美成人片AAAA| 国产视频一区二区免费| 伊人久久综合精品欧美| 中国农村熟妇毛片视频| 99999精品| 91精品人妻一区二区三区蜜桃| 九九九精品色乱九九九| 白丝少妇一区二区| 日韩少妇丰满亚洲| 久久欧美1卡2卡3| 99国产人成精品| 五月婷婷丁香六月| 成人精品在线| 九九99精品| 中文字幕在线观看视频www| 图片区小说区| 人人干人人操人人..com| 国产女人极品高潮毛片| www.伪伪| 天天躁日日躁xxxxx| 欧美一区二区日韩三区| 成人精品久久久午夜福利| a片自拍直播视频| 99久久亚洲精品无码毛片潘甜甜| 亚洲情色欧美| 成人免费性爱视视| 女性喷水高潮在线观看| 久草尤物| 亚洲欧洲中文日韩女优乱码| Av手机版天堂网| 高清无码在线播放网站| 日本狂喷奶水在线播放212| 第四色奇米影视777| 91丨九色丨国产丨人妻在线 | 永久免费发布性爱网| 欧亚乱色熟女一区二区| 精品久久人妻成人网| 在线99热| 久久精品视频久久久| 99 国产丝袜在线| av线电影| 日韩本不卡视频在线观看| 亚洲无码一区成人免费午夜| 久久超碰网| 日韩成人精品| 欧美日本国产日韩激情视频| 96久久精品一二三区色欲| 久久激情五月| 欧美综合骚| 玖玖资源中文字幕制服丝袜| 99热18这里只有精品| 国产怡红院在线| 91人妻在线视频| 精品国产三级av韩国在线| 亚欧成人综合影院| 牛黄色久午久| 青青草自拍视频在线播放| 美女91在线观看| 男人成人黄色视频在线观看免费下载| 久久久亚洲熟妇资源| 天天综合欧美| 日韩三A大片在线观看| 成人性爱全视频观看| 校园春色 男人天堂| 久久久久久久久久久久黄色 | 亚洲综合888| 午夜精品人妻二区三区| 巨乳特殊服务按摩| 久久午夜鲁丝片| 一起草精品人妻| 日本天天吊| 大香蕉乱级| 天天躁日日躁XXXXYY| 青娱乐 成人娱乐在线| 九九九九欧美| 91丨人妻丨国产丨丝袜| 淫荡少妇免费| 天天综合~91入口| 精品中文日韩字幕视频| 校园春色亚洲| 草莓精品视频| 粉嫩国产精品久久久| 亚洲AV永久无码精品成人调教| aa片毛片| 国产无马av| 国产二区三区粉嫩在线| 亚洲色图A| AV不卡在线| 熟妇女人妻呻吟久久AV| 熟妇女伦乱视频视频 | 91日韩网站| 国产高清精品一区二区三区毛片| 五月婷婷大香蕉| 日本精品久久久久久久| 天天看天天日| 狠狠色综合网| 校园春色宗合网| 日本精品999| 婷婷亚洲天堂| 欧美成va视频网站| 国产精品动态一区二区三区四四| 一起草精品人妻| 六月婷婷激情| 亚洲精品日韩国产欧美| 强奸乱伦中文字幕AV| 亚欧视频在线| 97玖玖人妻| 欧美三级偷拍| 日本欧美一区二区三区免费| 中文字幕在线观看网页| 男人天堂无码| 人人操人人搞人人草| 色天使大香蕉| 久久精品国产亚洲AV清纯| 色播丁香| 后入日本1234| 国产日逼视频| 伊人大香蕉在线| 97超碰超| 久久久精品成人国产| 青青草白白色| 欧美中文字幕日韩在线| 人妻夜夜爽天天爽麻豆三区网站 | 男人天堂 天天射| 亚洲欧洲中文日韩女优乱码| 偷拍网站久久男女男| 男人的天堂一区| 天天做天天爽| 国产成人精品网站| 操操碰| 亚洲情色 自拍| 欧美一区二区亚洲天堂| 日韩青久久| 国产极品一区二区三区三州| 蜜桃视频啊啊啊啊| 午夜黄色免费在线观看| 加勒比av网| 日本伦理一区二区| 色婷婷电影网| 无码人妻精品一区二区三区99不卡| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 91色黑人少妇| 日韩欧美性爱电影在线观看| 家庭乱伦性爱av| 亚州色图欧美| 日韩人妻 中文字幕| Julia Annxxxxx| 少妇高潮对白在线观看| 麻豆人妻偷人精品无码视频| 在线人人人人人人精品超| 久久精品成人| 九九在线视频| 日韩欧美亚洲自拍偷拍| 91在线限制级| 再深点灬舒服灬太大了添视频| 成人精品视频| 国产18精品亚洲精品| 欧美亚洲天天| 亚洲夜色在线| 性久久久| 天天躁夜夜躁狠狠躁AV| 丁香色婷婷| 男女性无套 免费九一| 91中文精品日韩欧美在线| 亚洲精品无码久久AV| 欧美色图自拍| 综合网欧美在线| 国产高清吃奶免费视频网站| 色婷婷一区二区三区久久午夜| 欧美国产日韩高清在线| 亚洲色狠| AV99热18这里只有精品| 久久曰曰| 级做a爱无码性色永久免费| 夜夜操中文字幕| 久久婷婷伊人| 我要去看2个日本美女.com曹逼| 黄片www视频免费| 91网18| 国产一级作爱毛片| 韩国三级色呦呦| 亚洲熟久久| 激情五月天婷婷| 色五天伊人| 96超碰网| 91天射| 精品妇女一区二区三区| 中文字幕一区二区日韩网| 亚州欧美在线| 少妇极品熟妇人妻无码| 色情综合网| 狠日操| 蜜臀久久99精品久久久久久无删减 | 天天92av| 狠操91,com| 97精品国产97久久久| 手机在线人成免费视频| 激情五月天中文字幕色| 日韩欧美蜜桃精品久久中文字幕久久| 欧美激情总合网| 一区二区三区激情在线观看| 亚州熟女乱伦| 操熟女91| 2019亚洲男人天堂| 欧美性后入| 东京热亚洲一区二区| 亚洲欧美自拍偷拍| 日韩成年人性爱视频| 国产精品日日摸天天碰| 欧美日韩亚洲五月天婷婷| 97精彩视频网站| 婷婷五月天久久久| 久草国产在线视频| A级国产欧美激情在线| 最新制服中文第一页| 日本黄页视频在线观看| 日本999精品视频| 日本天天吊| 九月丁香婷婷| 爱做久久久久久| 欧美日韩操逼动图| 成人av在线播放| 日本中文字幕不卡视频| 97超碰欧美手机| 欧美色老汉| 丰满少妇精品一区二区| ai欧美亚洲小说| 亚洲揄拍网| 91久久堂| 欧美婷婷久久| 大香蕉99热| 欧美色66| 国产夫妻一区二区| 九九玖玖精品| 北条麻妃99精品青青久久| 一区二区激情国产熟女| 六月婷婷色综合| 柠檬AV导航| 日韩免费性爱视频在线观看| 超碰97亚洲| 新版天堂中文资源8在线| 亚洲成人日韩小说| 超碰在线观看av不卡| 樱花蜜乳av| 小视频玖玖| 日韩人妻播放| 性色av网站| 国产精品久久久久无码AV会牛| 无码精品人妻一区二区三区妖精| 天天色,天天干,天天干| 女人被男人桶爽视频网站| 欧美aa一级片| 国产欧美岛国精品一区 | 91蜜桃传媒精品久久久一区二区| 国产91专区| 久男人久久| 亚洲高潮影院| 欧美 亚洲 在线| 91无遮挡| 香蕉黄色一级视频| 国产AV激情无码久久无码| 在线观看亚洲专区| 国产高清成人传媒影视| 综合色播| 麻豆久久视频在线地址| 婷婷伊人一区| 无码久| 五月天AV资源| 精品国产乱子伦一区二区三区,精品一| 97超碰美女| 伊人五月天婷婷| 中国一级操逼视频| 懂色AV蜜臀无码精品APP| 激情五月天视频| 青青草自拍视频在线播放| 日韩99神马视频播放| 亚洲诱惑天堂 | 78久久| 国产精品视频自拍在线| 在线人人人人人人精品超| 久草婷婷| 亚洲熟妇无码一区二区三区| 亚洲国产97| 亚洲中文字幕在现观看| 91热热色| 国产无码精品成人| 日韩无码黄色片| 红杏大香蕉| AV99热18这里只有精品| 91模特在线观看| 国产精品黑人一区二区三区| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | a网站免费观看| 国产农村妇女精品一|