久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

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

自制嵌入式調(diào)試面板Quenox:從串口日志到Web可視化控制 1. 項(xiàng)目設(shè)計(jì)思路為什么做 Quenox 這種調(diào)試面板Quenox 這個(gè)名字聽起來像是個(gè)實(shí)驗(yàn)室內(nèi)部代號(hào)實(shí)際上它是我最近手頭一直在打磨的一個(gè)嵌入式調(diào)試面板項(xiàng)目。準(zhǔn)確說Quenox 是一套輕量級、自托管的硬件控制臺(tái)面板核心目標(biāo)是解決日常開發(fā)中反復(fù)燒錄、串口抓日志、重啟看狀態(tài)這些瑣碎又容易出錯(cuò)的環(huán)節(jié)。很多人可能覺得調(diào)試面板嘛用一個(gè)現(xiàn)成的串口助手、一個(gè)燒錄工具就夠用了但當(dāng)你同時(shí)維護(hù)三四個(gè)設(shè)備、需要遠(yuǎn)程看狀態(tài)、要把數(shù)據(jù)可視化地呈現(xiàn)出來的時(shí)候臨時(shí)拼湊的工具鏈就會(huì)變得非常痛苦。我在做 Quenox 之前踩過不少坑。最早用的是裸機(jī)串口終端加手動(dòng)復(fù)位每次改完代碼先插線、再開終端、再手動(dòng)重啟一天下來大半時(shí)間浪費(fèi)在這些重復(fù)動(dòng)作上。后來試圖引入商用調(diào)試平臺(tái)但那些東西要么太重、要么配套硬件綁定太死很難適配我自己攢的各種不同架構(gòu)的開發(fā)板。所以 Quenox 的思路很直接拋棄通用方案的鋪張圍繞我手頭真實(shí)的硬件環(huán)境做一套高度定制化的調(diào)試入口把燒錄、串口日志、狀態(tài)可視化、遠(yuǎn)程控制收斂到一個(gè)瀏覽器頁面里。它不需要重型的后臺(tái)服務(wù)也不需要復(fù)雜的數(shù)據(jù)庫核心就是極致的輕與快。這個(gè)項(xiàng)目適合誰去參考一類是整天跟單片機(jī)、嵌入式 Linux 板子打交道的開發(fā)人員一類是做硬件驗(yàn)證和產(chǎn)線測試的工程師還有一類是剛?cè)腴T、想從整體上理解一臺(tái)設(shè)備從固件到上位機(jī)應(yīng)該如何協(xié)作的學(xué)生或愛好者。它不是一個(gè)商業(yè)產(chǎn)品更像是一套可復(fù)用的思路加落地代碼代碼量不大但每一行都是為了解決真實(shí)場景中的問題。2. 整體架構(gòu)與使用方式拆解2.1 三個(gè)核心模塊劃分Quenox 在架構(gòu)上其實(shí)很簡單只有三塊設(shè)備端跑在 MCU 或 Linux 小主機(jī)上的采集/控制程序、橋接層負(fù)責(zé)把設(shè)備數(shù)據(jù)打包上傳到面板服務(wù)器、前端面板瀏覽器里看到的儀表盤和控制臺(tái)。設(shè)備端我用的是普通的 UART 和 GPIO 就能跑這個(gè)選擇在當(dāng)時(shí)花了一點(diǎn)心思。我之前試過用帶網(wǎng)絡(luò)功能的芯片直接往服務(wù)器推數(shù)據(jù)比如 Espressif 系的 ESP32這樣看起來少了一層橋接代碼上也簡潔。但實(shí)際遇到的問題非?,F(xiàn)實(shí)調(diào)試階段程序崩潰頻率高一旦芯片本身死機(jī)或者網(wǎng)絡(luò)協(xié)議棧崩了我連恢復(fù)正常模式的入口都沒有必須跑過去物理按按鍵。而外置橋接層的方案最大的好處是設(shè)備死了橋接器還活著面板上的強(qiáng)制復(fù)位進(jìn)入 Bootloader按鈕依然有效。這個(gè)容錯(cuò)能力在開發(fā)階段的價(jià)值遠(yuǎn)比省一根線要大。前端面板默認(rèn)跑在開發(fā)機(jī)的本地端口上同時(shí)支持綁定到局域網(wǎng)?;A(chǔ)形態(tài)是 Web 儀表盤包含日志滾動(dòng)窗口、寄存器/RAM 監(jiān)控格子、腳本命令發(fā)送框和狀態(tài)指示區(qū)。實(shí)際部署的時(shí)候我建議用一臺(tái)不關(guān)機(jī)的開發(fā)主機(jī)跑面板服務(wù)設(shè)備端通過串口或 USB-TTL 連接橋接器這樣就算半夜想從床上看眼設(shè)備狀態(tài)打開手機(jī)瀏覽器即可不需要專門寫 App。2.2 數(shù)據(jù)通道設(shè)計(jì)為什么選用串口中轉(zhuǎn)而不是設(shè)備直連網(wǎng)絡(luò)數(shù)據(jù)通道是整個(gè) Quenox 最值得琢磨的一塊。我最終選的是串口作為主通道、中轉(zhuǎn)代理做協(xié)議轉(zhuǎn)換最后推到瀏覽器 WebSocket。這個(gè)鏈路可以簡化成設(shè)備端UART 輸出數(shù)據(jù) - 橋接器串口讀取并封裝成 JSON 幀 - 面板服務(wù)WebSocket 推送到瀏覽器 - 前端渲染有人會(huì)問為什么不讓設(shè)備直接網(wǎng)絡(luò)發(fā)出 JSON 到前端關(guān)鍵在于調(diào)試二字。調(diào)試階段隨時(shí)要看的不僅是正常程序運(yùn)行日志還包括內(nèi)核 panic、看門狗復(fù)位前打印、bootloader 階段的啟動(dòng)信息。這些信息往往在網(wǎng)卡初始化之前就產(chǎn)生了如果設(shè)備直接走網(wǎng)絡(luò)上報(bào)這部分最有價(jià)值的崩潰現(xiàn)場就被丟掉了。串口從上電第一毫秒就能輸出鏈路極短、時(shí)序最可靠是捕捉早期故障信息的最優(yōu)選擇。這里提一個(gè)實(shí)戰(zhàn)中很重要的點(diǎn)設(shè)備端日志輸出必須支持多等級過濾。我這個(gè)項(xiàng)目要求 UART 驅(qū)動(dòng)層支持LOG_ERROR、LOG_WARN、LOG_INFO、LOG_DEBUG四級過濾而且這個(gè)過濾要在編譯期可用宏打開同時(shí)在運(yùn)行期也能通過面板下發(fā)指令動(dòng)態(tài)切換。為什么要雙通道控制編譯期過濾可以讓日志代碼徹底不占用空間和 CPU適合調(diào)試完正式發(fā)布運(yùn)行期過濾則方便現(xiàn)場臨時(shí)排查問題時(shí)不用重新燒一個(gè)固件就能看到更詳細(xì)的流程輸出。我在做串口中斷處理時(shí)特意保證了在最高波特率 921600 下單個(gè)日志包不超過 256 字節(jié)因?yàn)橐粠瑪?shù)據(jù)過長會(huì)增加橋接器拆包丟包的幾率實(shí)測 256 字節(jié)是一個(gè)安全性很高的經(jīng)驗(yàn)值。2.3 面板功能邊界哪些該做哪些堅(jiān)決不做做 Quenox 的過程中我一直在反復(fù)問一個(gè)問題面板到底應(yīng)該做到多重一開始曾經(jīng)想往上加數(shù)據(jù)分析模塊比如自動(dòng)統(tǒng)計(jì)日志關(guān)鍵字出現(xiàn)頻率、繪制變量曲線但后來意識(shí)到方向偏了。調(diào)試面板的核心使命是控制與查看的狀態(tài)閉環(huán)而不是跑大數(shù)據(jù)分析。分析類需求應(yīng)該在日志落盤后交給后端的腳本工具處理面板做太多聚合計(jì)算反而會(huì)影響實(shí)時(shí)響應(yīng)。最終我鎖定的功能清單如下多設(shè)備切換在同一個(gè)面板里管理多個(gè)目標(biāo)板每個(gè)設(shè)備有獨(dú)立的日志流和命令通道日志時(shí)間戳與滾動(dòng)顯示自動(dòng)同步設(shè)備 RTC 與開發(fā)主機(jī) UTC 時(shí)間按時(shí)間線滾動(dòng)命令快捷發(fā)送預(yù)設(shè)常用命令按鈕也可以自由輸入十六進(jìn)制幀或字符串內(nèi)存與寄存器快速觀測配合設(shè)備端暴露的簡單內(nèi)存讀取協(xié)議實(shí)時(shí)刷新指定地址數(shù)據(jù)一鍵復(fù)位/燒錄控制通過串口 DTR/RTS 信號(hào)控制目標(biāo)板進(jìn)入 Bootloader 或復(fù)位實(shí)測對 STM32、ESP32、部分國產(chǎn) ARM 芯片都有效至于那些花哨的圖表、復(fù)雜權(quán)限、多人協(xié)作我在 Quenox 中統(tǒng)統(tǒng)不做。做這個(gè)項(xiàng)目的核心收獲之一就是學(xué)會(huì)了做減法一個(gè)調(diào)試工具一旦開始嘗試討好所有人它就離被棄用不遠(yuǎn)了。3. 硬件選型與通信協(xié)議細(xì)節(jié)3.1 橋接器選型CH340 vs CP2102 vs FT232橋接器作為設(shè)備與面板之間的溝通橋梁選型直接決定了整體穩(wěn)定性。我先后試過 CH340、CP2102、FT232 三種方案每個(gè)都跑了至少一周的連續(xù)日志壓力測試對比結(jié)果可以供大家參考橋接方案實(shí)測最高穩(wěn)定波特率長時(shí)間連續(xù)發(fā)送表現(xiàn)異?;謴?fù)能力適用場景CH340921600偶見偶發(fā)丟字節(jié)與線材質(zhì)量相關(guān)性大斷電重連即可恢復(fù)開發(fā)階段或成本敏感場景CP21022000000穩(wěn)定幾乎無丟字節(jié)驅(qū)動(dòng)跨平臺(tái)性優(yōu)秀異常時(shí)枚舉重置自動(dòng)恢復(fù)推薦日常主力調(diào)試FT2323000000非常穩(wěn)定時(shí)間戳抖動(dòng)極小驅(qū)動(dòng)較為成熟幾乎無異常高頻調(diào)試或時(shí)序敏感場景最終我把橋接器定為 CP2102 作為默認(rèn)方案。它不是參數(shù)最強(qiáng)但綜合了成本、穩(wěn)定性、驅(qū)動(dòng)兼容性之后平衡度最好。CH340 在短距離測試時(shí)表現(xiàn)也能接受但一旦線材長度超過 30 厘米、或者環(huán)境有電機(jī)等電磁干擾源丟字節(jié)的概率就會(huì)明顯上升排查這類問題非常浪費(fèi)時(shí)間。FT232 性能和穩(wěn)定性最強(qiáng)但單顆芯片價(jià)格常常是 CP2102 的幾倍且一些國產(chǎn)兼容芯片的驅(qū)動(dòng)簽名有問題踩過坑之后我就只信任原廠或者大代理的貨。橋接器與目標(biāo)板之間的電氣連接也要注意現(xiàn)在的 MCU 工作電壓普遍是 3.3V但有些老的開發(fā)板還保留 5V 邏輯電平。如果橋接器是 3.3V 邏輯而目標(biāo)板是 5V 邏輯長時(shí)間使用可能損傷橋接器。我的建議是加一塊電平轉(zhuǎn)換小板成本幾塊錢能省掉很多莫名其妙的通信異常。另一個(gè)是地線問題USB 轉(zhuǎn)串口和目標(biāo)板之間一定要共地否則數(shù)據(jù)傳輸?shù)膮⒖茧娖讲灰恢卤憩F(xiàn)就是波特率明明配對但收到的全是亂碼。我見過太多人掉進(jìn)這個(gè)坑排查到最后發(fā)現(xiàn)是沒共地。3.2 協(xié)議幀格式設(shè)計(jì)從字符流到結(jié)構(gòu)化 JSON設(shè)備端輸出的原始日志是純文本字符串但直接把這個(gè)字符串推給前端面板就沒有辦法做結(jié)構(gòu)化展示——沒法判斷哪行是錯(cuò)誤、哪行是警告、哪行是內(nèi)存數(shù)據(jù)也沒法對關(guān)鍵字智能過濾。Quenox 在橋接層定義了一個(gè)輕量級幀封裝格式把每一條設(shè)備輸出轉(zhuǎn)換成 JSON 格式{ts: 1685581372, tms: 842, level: I, src: SENSOR, msg: temperature read ok: 25.4C}幀里的核心字段都經(jīng)過了考慮。ts是收到該條日志的 Unix 時(shí)間戳tms是日志在設(shè)備內(nèi)的毫秒偏移量配合使用可以得到毫秒級的精確時(shí)間。level區(qū)分日志級別src標(biāo)識(shí)日志來源模塊msg是真正的載荷內(nèi)容。設(shè)備端發(fā)送日志時(shí)不需要帶時(shí)間因?yàn)閱纹瑱C(jī)本身可能沒有可靠時(shí)鐘源橋接器在收到字節(jié)流時(shí)統(tǒng)一蓋時(shí)間戳這個(gè)策略最大的好處是設(shè)備端代碼注入極小并且全系統(tǒng)的日志時(shí)間基準(zhǔn)完全一致不會(huì)有多個(gè)設(shè)備各自時(shí)鐘不準(zhǔ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í)測即使高速日志流下也不會(huì)出現(xiàn)半包問題。3.3 設(shè)備端 DTR/RTS 控制的坑與解法Quenox 的一鍵復(fù)位功能就是通過橋接器芯片的 DTR 和 RTS 兩個(gè)引腳實(shí)現(xiàn)的。原理是絕大多數(shù) USB 轉(zhuǎn)串口芯片在驅(qū)動(dòng)層暴露了這兩個(gè) modem 信號(hào)控制接口而上位機(jī)通過設(shè)置它們的高低電平可以巧妙控制目標(biāo)板的 BOOT 引腳和復(fù)位引腳實(shí)現(xiàn)自動(dòng)燒錄。為什么這兩種信號(hào)夠用以常見的 STM32 串口下載模式為例需要先拉高 BOOT0 再拉低復(fù)位釋放復(fù)位后芯片進(jìn)入 Bootloader然后對 ESP32 則是另一種時(shí)序先讓 ENEnable/復(fù)位拉低同時(shí)讓 IO0 保持低電平再釋放 EN芯片進(jìn)入下載模式。這兩種芯片所需的控制邏輯都恰好由 DTR/RTS 兩條線在不同時(shí)間點(diǎn)上的高低電平組合完成。Quenox 在面板里把時(shí)序抽象成可配置腳本這樣不只是 STM32、ESP32連我用過的國產(chǎn) ARM 芯片比如某廠出的 R7 系列也能通過自定義時(shí)序適配。這個(gè)方案踩過的坑得單獨(dú)拎出來說。第一不是所有 USB 轉(zhuǎn)串口芯片都支持 DTR/RTS 手動(dòng)控制有些廉價(jià)方案的這兩根線是懸空的購買時(shí)一定要查清規(guī)格書第二Windows 和 Linux 下操作這兩個(gè)信號(hào)的接口完全不同Windows 可以用 CreateFile 加 DeviceIoControlLinux 下則是通過 ioctl 操作 TIOCMBIS/TIOCMBIC開發(fā)面板服務(wù)時(shí)要做兩層封裝第三時(shí)序的延時(shí)非常敏感我踩過最狠的一次是 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í)性優(yōu)化4.1 服務(wù)端多路日志聚合的實(shí)現(xiàn)思路面板服務(wù)端我建議用輕量后端框架實(shí)現(xiàn)方便快速開發(fā)。Quenox 選擇了基于 Python 的 FastAPI因?yàn)樾枰?WebSocket 實(shí)時(shí)推送和 REST API 快速上手之間找一個(gè)平衡點(diǎn)FastAPI 的異步模型非常適合處理大量并發(fā)日志流。服務(wù)端在啟動(dòng)時(shí)掃描系統(tǒng)所有可用串口設(shè)備并在面板提供下拉列表讓用戶選擇要監(jiān)聽的設(shè)備。每選中一個(gè)設(shè)備服務(wù)端開啟一個(gè)后臺(tái)任務(wù)以線程方式讀取該串口緩沖區(qū)數(shù)據(jù)經(jīng)幀解析后放進(jìn)一個(gè)全局環(huán)形隊(duì)列多個(gè) WebSocket 客戶端可通過訂閱隊(duì)列拿到實(shí)時(shí)數(shù)據(jù)。這里更具體的設(shè)計(jì)是環(huán)形隊(duì)列只保留最近 5000 條日志超過的部分自動(dòng)丟棄避免內(nèi)存無限增長導(dǎo)致服務(wù)崩潰。對調(diào)試場景來說超過 5000 條的舊日志本來也不太有實(shí)時(shí)查閱價(jià)值需要回溯時(shí)應(yīng)該依賴文件落盤而不是面板緩存。服務(wù)端還做了一個(gè)日志存儲(chǔ)策略默認(rèn)不落盤但面板提供一個(gè)開始錄制開關(guān)。打開后服務(wù)端將環(huán)形隊(duì)列里的日志異步寫入當(dāng)日文件文件名按日期和設(shè)備 ID 組合比如quenox_device_a_20250610.log。錄制期間日志繼續(xù)實(shí)時(shí)推送到面板但寫入操作在獨(dú)立線程完成不會(huì)阻塞主數(shù)據(jù)鏈路。這個(gè)設(shè)計(jì)在項(xiàng)目后期幫我省了不少力比如復(fù)現(xiàn)一個(gè)偶發(fā) bug 時(shí)開著錄制跑一晚上第二天翻日志按關(guān)鍵字檢索問題定位效率比肉眼盯屏幕高得多。4.2 前端實(shí)時(shí)更新策略不要用可控輪詢前端這部分有個(gè)我很堅(jiān)持的原則實(shí)時(shí)數(shù)據(jù)更新必須使用 WebSocket 推送而不是用普通的 HTTP 輪詢。做的第一版 Quenox 面板就是用setInterval每 500 毫秒拉一次日志接口跑在局域網(wǎng)里倒是沒什么問題一旦設(shè)備日志比較密集比如每秒幾百條HTTP 請求本身的開銷和頁面重繪的壓力疊加頁面就肉眼可見地卡頓。換成 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í)測在每秒 300 條日志的強(qiáng)度下頁面依然順滑。還需要處理前端斷線重連的問題。WebSocket 斷開是常態(tài)筆記本睡眠、網(wǎng)絡(luò)切換、服務(wù)端重啟都會(huì)觸發(fā)斷開。Quenox 前端實(shí)現(xiàn)了一個(gè)非常簡單的自動(dòng)重連機(jī)制檢測到連接關(guān)閉時(shí)顯示一個(gè)半透明的連接斷開重連中浮層同時(shí)每 2 秒嘗試重連一次重連成功時(shí)向服務(wù)端請求最近 200 條歷史日志填充頁面空白區(qū)再繼續(xù)接收實(shí)時(shí)數(shù)據(jù)。之所以只回放 200 條是因?yàn)閿嗑€期間的空檔無法保證日志連續(xù)與其展示一段有缺口的記錄還不如明確標(biāo)注以下為回放歷史日志。4.3 高并發(fā)日志下的前端性能優(yōu)化實(shí)測日志面板最常見的性能殺手是 DOM 節(jié)點(diǎn)無限增多每一條日志就是一個(gè) DOM 元素跑一晚上幾萬條日志會(huì)直接壓垮頁面。Quenox 的解決辦法是可視區(qū)域日志窗口前端只保留最新 1000 條日志的 DOM 節(jié)點(diǎn)超過后自動(dòng)移除最早的一條。用戶滾動(dòng)查看舊日志時(shí)則暫停實(shí)時(shí)追加改為加載環(huán)形隊(duì)列中的歷史片段滾動(dòng)到底部時(shí)恢復(fù)實(shí)時(shí)流。整個(gè)交互模式跟聊天軟件加載歷史消息非常相似實(shí)現(xiàn)簡單、用戶也容易上手。在這里我再分享一個(gè)關(guān)于顏色標(biāo)記的細(xì)節(jié)。日志級別不同前端展示時(shí)用顏色區(qū)分是常規(guī)操作但工程上要注意顏色不能靠前端猜——直接依賴level字段驅(qū)動(dòng)不要用正則去匹配消息內(nèi)容里有沒有 error 這類關(guān)鍵字??績?nèi)容匹配的代價(jià)很大一是誤判率高比如 temperature error check ok 這種句子明明語義正常卻被打紅高亮二是性能開銷大每條日志都要跑一遍正則匹配高頻率時(shí)會(huì)阻塞主線程。用結(jié)構(gòu)化字段驅(qū)動(dòng)的方式則天然規(guī)避了這兩個(gè)問題而且設(shè)備端代碼只需要在一開始設(shè)置好正確的級別后面的展示邏輯就完全不用費(fèi)心。5. 實(shí)操過程從零搭建 Quenox 面板的完整記錄5.1 引腳與接線參考設(shè)備端我這里以最常見的 STM32F103 開發(fā)板為例說明接線。準(zhǔn)備一塊 USB-TTL 橋接器一臺(tái)運(yùn)行面板服務(wù)的電腦。目標(biāo)板與橋接器的接線情況如下表設(shè)備端STM32F103橋接器CP2102說明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)反射和過沖損壞引腳。三極管隔離方案更穩(wěn)但對于大多數(shù)開發(fā)板直連也能正常工作動(dòng)手能力強(qiáng)的建議自行加上隔離省心。5.2 橋接器固件配置要義如果你手頭的 USB 轉(zhuǎn)串口芯片不是官方現(xiàn)成模塊而是裸芯片做的可能要先配置芯片的 EEPROM。CP2102 有一個(gè)官方配置工具可以把 VID、PID、產(chǎn)品字符串等燒寫進(jìn)芯片內(nèi)部。對于 Quenox 面板識(shí)別來說這條信息的價(jià)值在于讓系統(tǒng)能區(qū)分哪個(gè)串口是橋接器尤其是當(dāng)電腦上插著多個(gè) USB 串口設(shè)備時(shí)面板可以通過制造商字符串精確匹配目標(biāo)設(shè)備節(jié)點(diǎn)而不是讓用戶去逐個(gè)猜。以 Linux 系統(tǒng)為例模塊默認(rèn)枚舉出的設(shè)備節(jié)點(diǎn)可能是/dev/ttyUSB0、/dev/ttyUSB1如果插了兩塊不同的橋接器名字很容易亂套。我在 Quenox 服務(wù)端做的串口掃描邏輯中加入了制造商字符匹配優(yōu)先找不到則按枚舉順序的兜底策略這樣用戶只要在面板里選一次設(shè)備下次自動(dòng)按 USB 序列號(hào)關(guān)聯(lián)不會(huì)再因?yàn)橹匦虏灏雾樞蜃兞藢?dǎo)致選錯(cuò)設(shè)備。Windows 下處理方式也類似在設(shè)備管理器中根據(jù)端口描述里填寫的字符串即可區(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í)際以源碼倉庫為準(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)之后瀏覽器訪問http://localhost:8080即可打開面板。首次進(jìn)入會(huì)看到一個(gè)設(shè)備選擇界面點(diǎn)刷新串口列表后選定目標(biāo)板對應(yīng)的串口再點(diǎn)連接按鈕。此時(shí)如果你給開發(fā)板通上電面板日志區(qū)應(yīng)該立刻開始滾動(dòng)顯示來自串口的啟動(dòng)信息。如果沒有任何輸出優(yōu)先檢查三個(gè)地方橋接器 TXD 是否確實(shí)連接到了設(shè)備端 RX很多新手會(huì)交叉接反波特率是否已經(jīng)與設(shè)備端串口初始化配置一致接線是否有共地5.4 設(shè)備端串口透傳代碼的關(guān)鍵設(shè)計(jì)設(shè)備端這邊的代碼不需要太復(fù)雜但有幾個(gè)關(guān)鍵細(xì)節(jié)值得注意。首先是串口初始化的參數(shù)我用的是115200, 8, N, 1即波特率 115200數(shù)據(jù)位 8無校驗(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)性能。對于日志輸出的封裝我在設(shè)備端封裝了一個(gè)輕量級函數(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ù)限定了緩沖長度上限防止格式化長日志時(shí)破壞棧空間。使用的時(shí)候直接在應(yīng)用層調(diào)用quenox_log(SENSOR, I, temp:%d, raw)就可以了。最開始做 Quenox 設(shè)備端代碼時(shí)我圖省事直接調(diào)printf重定向到串口結(jié)果高負(fù)載下系統(tǒng)卡頓非常嚴(yán)重——重定向?qū)犹孛看味家咄暾袷交?。改成這種輕量封裝后開銷降低了一個(gè)量級實(shí)測完全不影響實(shí)時(shí)控制周期。5.5 多設(shè)備接入實(shí)測Quenox 設(shè)計(jì)之初就把同時(shí)管理多設(shè)備作為一項(xiàng)核心能力因此在真實(shí)驗(yàn)證時(shí)我拿了一塊 STM32F103、一塊 ESP32 和一塊全志 H3 的 Linux 小開發(fā)板做了混合接入測試。三塊設(shè)備的橋接器分別是三個(gè)不同的 CP2102 模塊統(tǒng)一插到一臺(tái) USB HUB 上連接面板主機(jī)。測試中發(fā)現(xiàn)一個(gè)有意思的現(xiàn)象同一 HUB 下多路串口同時(shí)工作少數(shù)廉價(jià) HUB 會(huì)因電源供壓不足造成其中一路橋接器掉線表現(xiàn)為面板中該設(shè)備狀態(tài)變?yōu)殡x線。這個(gè)問題的根源在于 USB HUB 的供電能力。一個(gè) CP2102 的典型工作電流在 15mA 到 30mA 之間看起來不大但三四個(gè)疊加后加上劣質(zhì) HUB 的自身損耗很容易突破供電上限。換成帶外部電源的 HUB 之后問題消失。這個(gè)經(jīng)驗(yàn)至今記在 Quenox 的 README 里插拔接線前建議先確認(rèn) HUB 電源是否獨(dú)立省掉大量無謂的斷連排查。多設(shè)備同時(shí)接入時(shí)面板支持按設(shè)備 ID 分開渲染日志區(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í)序問題一眼就能定位不需要再用手機(jī)拍兩臺(tái)電腦屏幕對比時(shí)間。6. 常見問題與排查心得6.1 日志亂碼或完全沒有輸出這是 Quenox 使用中出現(xiàn)頻率最高的問題原因通常集中在三處波特率不匹配設(shè)備端初始化時(shí)配置的波特率和橋接器打開的波特率不是同一個(gè)最常見于第一次拷貝別人的工程時(shí)忘了改配置。解決方法是明確知道設(shè)備端代碼里設(shè)置的值面板配置保持一致。引腳接反TX 接了 TXRX 接了 RX交叉連接才能通。共地遺漏信號(hào)地沒有連通數(shù)據(jù)電平?jīng)]有參考基準(zhǔn)表現(xiàn)為偶發(fā)亂碼或不穩(wěn)定輸出。排查這類問題我建議按順序走先用邏輯分析儀看橋接器 RXD 引腳上有沒有波形沒有波形說明設(shè)備端壓根沒發(fā)數(shù)據(jù)或者線路不通有波形后再看波特率對不對這時(shí)可以調(diào)節(jié)面板的采樣精度來輔助判斷。如果邏輯分析儀顯示信號(hào)有方波但面板打開后依然無數(shù)據(jù)再檢查橋接器設(shè)備名是否被系統(tǒng)分配到了別的 USB 串口號(hào)、是不是選錯(cuò)了設(shè)備。6.2 一鍵復(fù)位/自動(dòng)燒錄反復(fù)失敗自動(dòng)燒錄失敗的原因七成出在時(shí)序不對剩下三成出在電路連接不到位。前面說過 DTR/RTS 控制需要精確延時(shí)這里給出我在 STM32 和 ESP32 上實(shí)測可用的參考時(shí)序按固件腳本中定義的兩個(gè)重要時(shí)間參數(shù)來調(diào)芯片平臺(tái)RTS 拉低BOOT進(jìn)入DTR 保持時(shí)長釋放復(fù)位后等待時(shí)長STM32 串口ISP先拉低 BOOT0保持至少 20ms等待 50ms 后枚舉ESP32 下載模式EN 先拉低GPIO0 保持至少 30ms釋放 EN 后等待 100ms還需要注意橋接器和目標(biāo)板的供電時(shí)序。有些開發(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 頻繁斷開日志流中斷我在長時(shí)間跑數(shù)據(jù)時(shí)曾經(jīng)遇到 WebSocket 每隔十幾分鐘就斷開一次的情況。用瀏覽器開發(fā)工具查看網(wǎng)絡(luò)面板發(fā)現(xiàn)服務(wù)端沒有主動(dòng)關(guān)閉前端也沒有主動(dòng)斷開看起來像是中間網(wǎng)絡(luò)設(shè)備把空閑連接清理了。這是因?yàn)椴糠致酚善骰蚪粨Q機(jī)默認(rèn)開啟 TCP 空閑超時(shí)機(jī)制長時(shí)間沒有數(shù)據(jù)交互的連接會(huì)被靜默回收。日志流在無輸出時(shí)保持連接一動(dòng)不動(dòng)很容易觸發(fā)這個(gè)機(jī)制。解決辦法有兩種第一前端定時(shí)每 30 秒發(fā)送一個(gè)心跳 Ping 幀第二服務(wù)端在推送日志的同時(shí)附帶一個(gè)輕量心跳字段確保連接上持續(xù)有流量。Quenox 最終采用的是前者原因很簡單這樣服務(wù)端代碼更純粹不需要在日志數(shù)據(jù)里夾帶周期性冗余字段日志流結(jié)構(gòu)始終干凈。實(shí)現(xiàn)了心跳之后連接穩(wěn)定時(shí)間從十幾分鐘斷一次變成了連續(xù)運(yùn)行幾天不斷。6.4 日志時(shí)間戳不準(zhǔn)跨設(shè)備排序混亂多設(shè)備合并視圖中最影響判斷的就是時(shí)間戳混亂。問題根源在于橋接器發(fā)出的時(shí)間戳基于宿主機(jī)的系統(tǒng)時(shí)鐘而宿主機(jī)的時(shí)鐘如果沒有做時(shí)間同步不同設(shè)備的數(shù)據(jù)就無法落在一個(gè)統(tǒng)一時(shí)間基準(zhǔn)上。Quenox 的解決方案是在服務(wù)端啟動(dòng)時(shí)強(qiáng)制對齊系統(tǒng)時(shí)間并周期從 NTP 服務(wù)器同步。面板在回放歷史日志時(shí)會(huì)額外顯示一個(gè)相對時(shí)間列從收到的第一條日志算起以毫秒為單位遞增。這樣即使宿主機(jī)時(shí)鐘沒有絕對同步相對排序的可信度依然很高。在離線環(huán)境中沒有 NTP 服務(wù)時(shí)我建議開發(fā)主機(jī)手動(dòng)用 GPS 模塊或手機(jī)時(shí)間校準(zhǔn)一次再啟動(dòng) Quenox 服務(wù)。總之絕對不要依賴設(shè)備自己的時(shí)鐘做跨設(shè)備排序容易采坑。7. 這臺(tái)調(diào)試面板還能往哪走Quenox 做出來后我最大的體會(huì)是所謂調(diào)試工具最高級的狀態(tài)就是在需要的時(shí)候它就在那里不需要它時(shí)你意識(shí)不到它的存在。很多商業(yè)工具把功能堆得很高但每一步操作都要切頁面、點(diǎn)確認(rèn)、等刷新實(shí)際調(diào)試中反而挫敗感很強(qiáng)。Quenox 把鏈路壓到最短打開瀏覽器即用設(shè)備連著串口線就能進(jìn)面板操作整個(gè)過程不需要額外安裝任何客戶端。后續(xù)我覺得有幾個(gè)方向值得擴(kuò)展一是加入簡單的波形顯示功能通過協(xié)議把 ADC 采樣或傳感器數(shù)值以流式數(shù)據(jù)推送前端用 Canvas 折線圖實(shí)時(shí)繪制這對傳感器調(diào)試意義很大二是引入腳本自動(dòng)化比如設(shè)備上電后等 3 秒發(fā)送啟動(dòng)命令再等 5 秒讀取狀態(tài)寄存器來判斷系統(tǒng)是否完整啟動(dòng)這類場景可通過面板內(nèi)建的腳本引擎來自動(dòng)執(zhí)行手敲命令的效率無法與之相比三是支持通過網(wǎng)口橋接替代 USB 直連把 Quenox 擴(kuò)展成遠(yuǎn)程實(shí)驗(yàn)室形態(tài)這樣設(shè)備放在辦公室里我在家也能隨時(shí)連接調(diào)試。Quenox 這個(gè)項(xiàng)目最終給我?guī)淼氖斋@不只是那幾屏能滾動(dòng)的日志而是對鏈路越短、調(diào)試越可控這件事的徹底認(rèn)同。開發(fā)硬件系統(tǒng)的過程中復(fù)雜的調(diào)試問題往往源于工具鏈本身的混亂而不是真正的問題邏輯。把數(shù)據(jù)通路收斂得足夠短、把狀態(tài)反饋?zhàn)龅米銐蛑庇^很多看似詭異的問題會(huì)在面板前一目了然。要是你手上也有一堆開發(fā)板、天天跟串口線和燒錄器打交道不妨按這個(gè)思路自己攢一個(gè)調(diào)試面板工程量不大但回報(bào)周期極短。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日本999精品| a片 xxxx受爽视频| 欧美性爱系列| 自拍偷拍亚洲熟女妇人精品| 好属操| 九九九九九精品十六| 国产成人久久久精品免费AV| 十八禁视频网站| 台湾一区国产高清在线| 欧美AB在线| 人妻黑丝袜电影| 婷婷五月天补不补| 丁香五月天啪啪| 精品人妻中文字幕4399| 国产精品久久久| 欧美色图亚洲色,麻豆| 国产白丝在线| 国产高清不卡视频| 麻豆乱码久久精| 91女在线观看| 另类图片五月| 九九在线视频| 欧美少妇性乱| 青青草一本道福利视频| 人澡逼| 久久亚洲不卡一区二区三区 | 人妻啊啊人妻啊啊| 亚洲精品99| 色色福利| 亚洲精品第一| 九色视频91| 中文自拍欧美影视| 视频分类 国内精品| 国产强奸91| av网站免费看| 国产一进一出视频网站| 亚洲 欧美 日韩 国产一区二区 | 欧美婷婷| 日韩免费人妻色情网站| 亚洲人妻一区二区三区| 国产怡红院| 亚洲 欧美 中文 日韩超碰| 最新日韩黄片| 99欧美| a在线观看| 欧美操逼一二三区| 无码人妻一区二区一牛影视| 婷婷国产精品九区| 99久在线精品99re8| 超碰偷拍| 偷拍亚洲| 国产人伦a片信息免费片| 亚洲欧美日韩免费电影| 熟女字幕| 精品久久一区二区三区四区五区| 午夜精品99久久久久传媒| 日韩三级久久久| 久久天天躁日日躁狠狠躁| 日韩久久艹| 久久久九| 97超碰色| 丁香六月东京热| 亚洲男人天堂2019| 999 久久久| 亚洲AV色图一区| 国产精品另类| 色爱三区| 久视频在线观看| 国产成人AV麻豆| 我爱操| 中文字幕97| 97人人操人人摸| 丁香九月婷婷| 超碰97最新人妻| 亚洲AV色图一区| 中文字幕国产在线天堂| 韩国午夜理伦三级好看| 亚洲高潮少妇| 日韩干B| 亚洲一区中文精品| 99色在线观看| 精品一二三区女同| 豆花视频操逼网址| 亚洲啪啪性视频| 动漫片子网站3黄| 日本中文字幕一区| 日语五十路和六十路亚洲国产精品 | 成人精品久久久午夜福利| 三级特黄60分钟播放| 婷婷五月天色色| 好好的日:com久久九九| 亚洲欧美第一页| 国产AV无码AV| 日韩人妻无码精品系列| 男人天堂东京热| 国产日韩欧美中文在线播放| 精品久一区免费| 伊人嫩草| 亚洲一级特黄大片在线播放91| 熟妇熟女亚洲天堂网| 天美传媒av在线| 久久精品一区二区一8| 狠狠操天天干| 亚洲天堂久久| 亚洲aV性爱| 日本精品免费一区二区三区四区| 97超碰久久| 亚洲欧洲国产综合av| 成年男人的天堂| 97干在线视频| 五月丁香六月激情综合| 天天干人人乐| 婷婷五月天激情四射| 久操免费视频| 狠狠爱综合网| 欧美美女视频| 色色无码| 97国产精品视频| 国产999精品久久久久久| 91热热色| 99精品在线观看| 亚洲成人帖图| 色婷婷网| 亚洲97在线观看| 夜夜嗨一区二区| 1024精品在线| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 自拍偷拍 高清无码| 歐美性天天| 精品久久久久久AV无码| 久久噜噜噜精品国产亚洲综合| 免费人成在线观看网站品爱网| yiren97| 成人97人人超碰人人| 成人无码专区精品视频| 一级性爱视频免费观看 | 成人精品水蜜桃久久久久久久| 涩涩这里只有精品视频| nuu12国产麻豆精品| 搡老熟女老女人老熟妇免费视频| 91狠狠狠| 97青青操视频| 欧美日韩香蕉| 中文 人妻 制服| 另类视频在线| 人人操人人操人人操人人操人人操人人人11.CM | 欧美专利1区2区3区4区5区免费| 91无遮挡| 久久久成人精品| 五月丁香综合激情| 亚洲人成网站7777| 人人妻人人色一区二区三区| 中文字幕国产精品1区| 强奸乱伦AV网站| 呻吟 欧美 日本 中出| 激情99| 乱伦熟女专区| 熟人人妻少妇精品久久| 精品久久艹| 五月丁香啪啪| 国产女人极品高潮毛片| 成全动漫视频观看免费下载| 亚洲se电影| 97视频观看| 91精品伊人久久久大香线蕉91| 五月天婷婷社区| 亚欧美天堂在线| 3P乱轮视频| 国产一级内射高清视频| 大干人妻| 国产精品久久久久久9999| 亚洲丝袜二区| 婷婷亚洲综合| 亚洲 一区二区 自拍| 亚洲色图A| 欧美在线大香蕉| 91丝袜美女国产| 操高情无码| 极品国产内射| 亚州综| 亚洲天堂电影网| www鬼畜国产男人的天堂| 日本三级网页| 国产乱色国产精品免费视| 欧美综合色图片| 日韩精品操少妇| 亚洲美乱| 污啪啪啪视频| 超碰在线99| 成年人黄色小视频网站| 十八禁视频一区二区| 亚洲精品97久久| 97国产精品久久久久 | 亚洲国产婷婷在线播放| 久久久久人妻二区精品叶可怜| 男同专区一区二区三区在线| 物业黑人 AV一区| 91五月天| 国产三级中文字幕粉嫩| 亚洲精品97久久中文字幕| 精品国产乱码久久久兰草影视| 男人天堂站| 大香蕉宗合网在线| 99色在线| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 国产无马在线| 综合久久久久久久久91| 亚洲伊人久久综合97| 97超碰香蕉| 噜噜噜噜久久久精品免费| 91久热| 色香网| 99热线麻豆| 九热超碰| 亚洲色图图片| 无码人妻一区二区三区色欲aⅴ| 国产三级日产三级韩国三级| 草草影院最新网址| 激情五月综合| 欧美综合自拍成人自拍第二十页| 日韩人妻操B| 荡小穴在线观看| 国产视频一区二区三区久久亚洲天堂| 97视频在线观看高清资源| 欧美影音在线| 色与欲影视天天看综合网| 啊啊啊好大好深| 大肥女高潮bbwbbwhd视频| av激情亚洲五月天| 福利社区午夜一区二区| 中国国国产一级特黄毛片| 亚洲Av无码成人精品国产| 欧美性爱系列| av婷婷色网| 亚洲国产丝袜在线观看| 久 久无码人妻AV| 以及麻豆国产入口在线观看免费| 久久成人午夜精品影院| 久久九九综合| 91美女在线视频| 老鸭窝日丰县女人| 97AV在线观看| 色婷婷视频| 探花一区在线| 男人的天堂.com| 中文字幕欧美日本乱码一线二线| 97天天| 人人模人人看| 欧美日韩性爱视屏免费看了| 天天综合91在线| 1204金沙人妻懂旧版免费| 久夜操| 特级特黄一级毛片免费| 国产成人精品亚洲日本| 天天天天天天天天综合| 久久一区二区蜜桃| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 91精品人| 骚逼高潮久久精品| 色亚州人久干视频在线观看免费版| 国产一线二线三线av| 乱性AV| 激情久久久| 黄呦呦在线| 蜜桃精品一区二区三区ww| 国产1024在线播放| 天久久久噜噜噜久久国产精品爽爽| 免费一级毛片在线视频观看| 诱惑人妻欧美一区在线播放| 超碰久超碰久| 91黑人无码激情在线| 四虎永久在线精品免费网址| 欧美亚洲韩国视频十五区| 国产v亚洲v日韩v欧美v片另类 | 92福利社视频| 欧美成人精品一区二区男人蜜臀| 国产乱伦视频污| 99热精品在线观看| 亚洲成人帖图| JULIA一区二区三区在线播放| 成人五月天色网| 亚洲综合影院| 超碰爽人妻熟女Av| av三级电影在线播放| 不卡啪啪视频| 蜜桃AV天堂| 91强热人妻| 一区,二区,三区视频| 91超碰在线| 日日狠狠久久偷偷色综合免费| 日韩有码回春沙龙第一页| 久久五月天婷婷丁香中文字幕| 嗯啊免费视频| 男人午夜天堂| 殴美综合色88| 欧美一区二区一级岛国大片| 久久夜嗨| 老司机天天操| 激情久久日韩精品中文字幕麻豆| 操逼操操操91| 91N综合网| 操逼操操操91| 色婷婷日韩精品一区二区三区| 亚洲综合中文字幕有码| 91熟女丨老女人| 91狠狠色丁香婷婷综合久久精品| 伊人影院综合是一个与深夜成人在线| 亚洲淫色网中文| 国产精品干干干| 亚洲www91| 国产一级不卡在线观看| 天堂网亚洲区手机版| 高跟丝袜AV专区国产| 色哟哟av网址| 啊啊啊啊嗯嗯嗯用力好爽 | 久久精品操| 久久久久9999| 超碰午夜| 啊啊啊在线看| 久久麻豆一区二区| 日韩在线欧美精品一区二区| 97视频在线观看网站| 国产 码在线成人网站| 草草草视频在线免费看| 330Dv国产女人终合视频极品人与兽| 欧美区亚洲区偷拍区| 人妻免费观看| 久久亚洲影院一区二区| 老熟女乱子伦中文字幕一区二区| 亚洲色图欧美色18直播在线| 伊人国产av| 国产AV激情无码久久无码| 蜜臀99久久精品久久久久久| 蜜色网色哟哟| 2021久久国产综合精品青草| 99热这里只有精品18| 色婷婷蜜臀av| 婷婷丁香五月综合| 天天综合网日韩7799| 人妻熟女一区二区三区视频| 日本久久综合| 澳门成人网站久国产日韩| 精品国产一区二区三区四区在线看| 亚洲高清在线se| 91在线综合网| 韩国黄色片精品久久久| 国模无码人体一区二区三| 91老妇女| 欧美一级专区免费大片| 午夜久久一区二区无码中出| 五月丁香成人网| 午夜操逼不卡| 成人97人人超碰人人| 伊色久人大在线| 伊人 俄罗斯 a v| 日韩素人无码一区二区三区三州| 我爱大香蕉| 久草国产在线视频| 级做a爱无码性色永久免费| 欧中美三级一区二区三区| 少妇第一页| 欧美狠狠弄| 啊啊啊啊嗯嗯嗯用力好爽 | 日日爱99| 日逼97| 色97国产69香蕉| 国产极品久久久| 91国产丝袜足交精品视频| 大香蕉九九| 日韩欧美亚洲一区二区三区影院| 高清国产精品无码| 夜间福利片1000无码| 操操操五月天婷婷丁香影院| 精品人妻一区二区三区日产乱码| 欧美激情内射| 久久丝袜| 无码久久国产| 人妻干天天| 免费αV在线视频| 国产丝袜欧美在线视频| 岛国大片国产| 久久三| 91操人| 日韩精品亚洲专区在线影视| 自拍偷拍 高清无码| 国产精品黄色三级av| 熟女这里只有精品6| 色屁屁影院www国产| 无码精品久久久久久亚洲| 97国产精品视频| 久久AV无码AV| 无码直播久久久| 1人人看人人摸人人操| 日本成人A片免费看| 超碰色男人操熟女| 黄色一级视| 丁香六月婷婷久久综合| 天天射网| 国产熟女二区| 欧美瑟综合| 久久久91| 成人一道本免费视频| 久草视频在线视频在线视频在线观看 | 婬女免费一二三区A片| 色五月首页| 嗯嗯啊操我| 天天淫人人妻日日色| 九九热超碰97亚洲最新香蕉| 大干人妻| 超碰在线一区二区| 五月亭亭六月丁香| 黄色大片免费在线| 高清国产av无码| 6080yy午夜理论三级一区二区三区无码| 色色无码| 成人综合视频久久| 欧日韩一二三f区| 一区二区三| 国内精品a| 日韩av影片在线观看| 91男女啊啊啊| 九九九影院| 大香网站| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 青娱乐国产剧情av一区| 翔田千里Av在线| www色色com| 欧美人妻精品| 校园春色宗合网| 久久久青青草| 欧美日本一区二区a人| 99视频内射三四| 一区二区三区国产精产| 78m啪啪啪| 亚洲欧美国产中文视频| 国产区性爱在线视频秋霞豆| 九九久久九九久久| 玖玖爱视频网站| 日韩兔费看黄片| 亚洲欧美日韩制服另类| 色狠狠综合| 久久鲁夜| 亚洲AV无码乱码| 久久成人国产| 色哟哟1区2区| 久久久久久精| 国产精品亚洲美女久久久久| 超碰天天操你比| 四虎精品一区二区| 欧美疯狂做爰xxxx| 色踪合AV| 国产久久成人| 欧美精品成人亚洲| 日本不卡在线二区三区| 免费一级毛片在线视频观看| 精品国产久久乱码| 天天伊人| 日韩天美| 在线不欧美| 日韩免费看黄片| 97精品久久久久中文字幕| 日韩啊V| 日本色色网| 大但人体久久久久| 九九久久一区二区伦理| 丁香婷婷激情五月天无毒不卡 | 亚洲成人性爱网站在线播放| 在线观看一卡二卡| 亚洲se91| 久久久99久9| 女优大全 - 91n| 欧美日韩第一页| 成人精品水蜜桃久久久久久久| 久久久久久亚洲中文| 亚洲伊人久久精品狠狠在线| 97日韩| 久久手机好看网站| aa片毛片| 久久女人视频| 一个色导综合| 好舒服视频| 超碰国产精品无码| 美女骚尻视频| 果冻国产精品麻豆成人av| 三级日本一区二区三区| 久操com| 亚州乱码中文字幕综合久久久| 精品99999| 综精品久久久aaaa| 秋霞一级A片黄色视频| 99综合自拍| 尤物黄色在线观看网站| 欧美综合制服在线| 色哟哟511老熟女| 一区二区三区四区在线不卡| 国产欧美一级在线观看| 91制服丝袜中文字幕| 一区二区日韩欧美久久| 婷婷丁香激情| 天天激色| 大香蕉综合| 色综合加勒比| 91AV天美在线视频| 任你草| 久久产精品一区二区三区电影| 亚洲一本色码中文字幕| 日韩av影片在线观看| 又黄又硬又粗又长国产视频| 日韩av乱伦| 欧美AB在线| 性老妇一区二区三区| 欧美疯狂做爰xxxx| 亚洲av无码成电影在线播放| 青青草久草AV| 婷婷激情一区二区三区俺也去| 久久无码成人| 天天综合网~91| 熟妇高潮一区二区免费视频| 老司机老司机午夜影院| 另类欧美色| 欧美少妇大量自拍视频在线观看| 欧美劲爆视频一区二区| 欧美熟妇精品黑人巨大91| 97色诱| 狠狠干综合| 亚洲色欲天天天堂色欲网女| 夜夜高潮夜夜爽夜夜爱爱一区| 中文字幕-区二区三区四区视频中国| 亚洲天堂7777| 日韩免费簧片| 蜜臀久久99精品久久久久久酒店 | 欧美成熟性爱精品| 欧美亚洲特P| 91N综合在线| 欧美激情视频一区二区三区不卡| 国产一区二区视频在线播放| 女人被男人桶爽视频网站| 91处女在线观看| 91在线一起| 九九九久久久久| 精彩视频日韩| 国产精品一区人妻精品阁在线| 日韩卡一卡二卡三在线| 欧美AAAA黄片| 白丝av| 玖玖久久久| 久久熟女精品不卡一区| 欧美亚洲韩国视频十五区 | 97操碰| 欧美亚洲色的图| 亚欧中文字幕在线视频| 欧美性爱97超碰 | 香港久久久| 国产少妇内射| 在线小说视频一区| 白丝在线一区| 国产精品动态一区二区三区四四| 蜜臀精品1区2区| 九九九精品美女| 久久久精品视频欧州站| 日本顶级天天操狠狠操夜夜操中文字幕| 青青草十区九区爱夜| 91在线免费观看处女| 国产情侣自拍在线播放| www五月| 日本日逼视频网| 欧美一级三级| 一二三四免费视频| 精品国产少妇高潮视频| 综精品久久久aaaa| 青青草十区九区爱夜| 超碰97资源大奶| 亚洲精品欧洲精品| 麻豆激情综合| 天天操天天日天天干| 久久精品六区| 久久尹人大香焦视| 欧美天天性| 久久久久亚洲三级电影| 国产欧美精选自拍一区| 思思热影视| 97色色婷婷| 天美精品av| 毛片17S| 日韩欧美天天爽爽爽天天爽爽| 青青欧洲黑| 欧美91网| 香蕉欧美| 上海一级黄片| 屌色在线97视频| 肉丝网站91| 粉嫩少妇自慰在线| 天天躁日日躁狠狠狠躁| 91色色网站| 亚洲国产欧美另类自拍| 国产精品老师| 夜夜操av亚洲一区二区| 欧美日日人人天天| 欧美天天干| 亚洲黄片免费在线播放| 激情五月天社区| 亚码激情| 日本最新1区2区3区| 欧美九九九九九| 国产亚洲日韩欧| 6080YYY午夜理论片在线观看| 亚洲一区二区三区欧美日韩| 美女黄页| 丁香7月婷婷| 国产AV中文| 日本成人A片网站| 中文字幕成人| 天天看特黄的免费网站| 99999国产| 成人亚欧免费视频| 午夜天天碰综合视频| 久久国色天香香蕉| 超碰97伊人| 啪啪啪东京| 99热免费| 97chaopengongkai| 黄色AAAAA欧美| 久久久久久久久久久人妻| 91九色丰满高潮| 午夜福利一区二区影院| 亚洲情色第一页| 亚洲色综网| 91欧洲国产成人久久精品网站| 97欧美性爱| 中美日韩毛片| 亚洲欧美一区二区网址| 99精品无码| 九七人妻在线| 欧美专区日本专区| 性爱久久| 色拍偷亚洲| 欧美五区| 亚洲高清视频在线免费观看| 91黑丝露脚| 欧美美逼| 日本在线视频导航| 青草伊人久久| aaaa黄片| 美女十八禁| 操我无码| 精品女同一区| 一区二区三区机械有限公司| 嗯嗯啊啊的视频| 岛国视频免费在线观看| 久九九九九九九热| 日本高清免费一本视频在线观看| 超AV色女| 久久av无码| 综合网~91综合网| 国产精品白丝在线播放| 欧美人妻色| 美国精品国产精品| 941超碰| 日本女优在线视频福利| 亚洲凸凹超碰成人| 久久婷综合| 欧美色97| 色色色色综合网| 亚洲丝袜少妇在线| 亚洲 欧美都市激情| 国产精品一二三区18| 校园春色亚洲欧洲| 久久首页| 东北老熟女| 99国产人成精品| 日本韩国国产精品一区| 啊啊啊啊操死我了| 亚洲高清国产理伦片| 四虎精品永久在线观看| 9久综合网| 操逼视频色| 欧美熟女逼久久久久久| www欧美性爱| 97免费在线视频| 久久AV无码1区2区3区| 欧美视频一区二区在线| 久久久精品,3| 干B视频伊人网| 首页中文字幕中文字幕免费| 欧美激情在线观看视频| 10000部十八禁看电影| 97精品熟女少妇一区| 国产三级中文字幕粉嫩| 欧美色九九九| 熟女精品va中文字幕| 中出欧美| 新97国产超碰| av大香蕉| 91高清无码下载| 玖玖综合网| 精品成人女人久久| 啊啊啊啊嗯嗯嗯用力好爽 | 亚洲欧美另类图片| 狠狠操一区二区| 久草福利在线资源站| 搡老女人老熟女91| 啊啊啊啊好疼视频| 麻豆区99999| 久久精视频美日韩在线视频| a片偷拍视频| 欧美综色欧| 欧亚成人在线视频| 狠狠狠一区二区三区| 国产AV无码AV| 国产无码精品无码| 亚洲 欧美 日本 国内 首页| 日韩78m视频| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 天天色黄色影院天天操| avav青青草久久夜| 少妇精品久久久八区九区| 97超碰国产精品| 国产 丝袜 欧美中文 另类| 久久透逼视频| 国产精品片| sewuyueav| 日日日日做夜夜夜夜做无码97| 综合国产97| www.狠狠干.coom | 国产精品美女视频诱惑| 久久精品成人一区二区三区蜜臀 | 亚洲伊人久久综合97| 欧洲亚洲人妻无码高清久久三区四区| av72网| 天天综合网久久ww| 长长久久88视频| 五月天久久久| 睡产熟女乱伦| 人妻乱仑一区二区三区| 91女优在线观看| 亚洲日韩在线a不卡99精品| 91美女视屏| 日本操大逼| 性色AV网站| 亚洲色狠| 美女久久久久久久久久久| 亚洲成人AB| 亚洲中文sv| 天天欧美色| 日韩pv中文| 亚洲人精品久久久喷水| 粉嫩国产精品久久粉嫩| 国产后入精品| 蜜臀久久99精品久久久久久久久| 超碰在线国产| 97香蕉碰碰人妻国产欧美| 手机在线播放国产福利| 免费啪啪av| 99国产精品视频尤物| 日韩熟女乱伦中出| av最新免费中文字幕| 国产精品制服丝袜清纯唯美| 精品偷拍13p欧美dodk视频| 丝袜剧情| 国产福利精品最新在线| 日本操BAV| 久热伊人| 国产女上位好爽在线| xxx亚洲午夜天堂| 五十路熟女工口| 亚洲s色图| 青青草在线视频播放器| 精品国产乱码久久久久久免费| 91熟女丨91老女人| aa片毛片| 欧美aaaaaaa| 国产女人成人精品视频| 大鸡巴久久久| 禁十八久久| 久久久久久九九九九九九| 日产精品久久久一区二区| 亚洲性高潮| 成人性爱AV在线免费观看| 天天看天天在线精品| 成人短视频在线观看| 日韩AV电影网站| 超碰98综合网| 久久大香蕉97| 成人免费性爱视视| 99热99在线播放激情| 91麻豆va国产精品| 67194无码不卡| 超碰免费欧美7| 91人妻在线视频| 91人妻最真实刺激绿帽| 日本99热| 久久夜色一区二区| 久久久久成人网| 久久精品国产亚洲妲己影视| 国产精品ⅴ无码大片在线看.| 欧美成人黄网色网站| 亚洲有码 视频一区| 青青欧美| 欧美v日韩v亚洲v最新在线| 女人喷水视频在线观看| 又黑又大又粗| 色综合 加勒比| 国产成人亚洲精品无码最新在线| 欧美精品69性爱| 日韩欧美经典在线观看| 久久综合日韩亚洲欧美| 啊啊啊水好多| 免费一级黄色录像影片| 婷婷五月影院| 99re6在线视频精品免费完整版安卓版| 久久精品一区二区三区四区五区| 亚洲成人av电影在线| 天综合网| 天天久久| 黄片直播三级黄片两女一男| 青青久操| 久久午夜色播影院免费高清| 激情五月婷婷综合| 久偷拍欧美日韩三区| 一中国女人毛片水真多| 99久久综合| 2020天天色综合| 一级aaaaa欧美中文字幕录像片| 亚洲 中文 女同| 有码专区最新中文字幕有码| 91露脸熟女专区| 欧苏综合色综合| 97亚洲自在精品在线观看| 成人午夜小视频手机在线看| 97视频在线观看高清资源| 蜜臀一区二区三区在线| 亚洲精品色| 亚洲国产天堂| 大香蕉AV在线| 欧美偷拍| 婷婷亚洲天堂| 欧美色性情| 色色激情| 男人的天堂久久久| 国产精品电影| 热热色91| 日韩人妻少妇 一区二区三区| 欧美 色 亚洲| 久久精品99| 99re99| 久99热| 91M一社| 91超级碰碰碰| 综合亚洲网| 精品少妇一区二区三区免费观看| 在线啊啊啊| 夜夜爽爽爽| 欧美碰碰综合色| 小草精彩毛片| 欧美高清18A片| 欧日韩在线观看| 美国一区二区三区视频| 欧美激色| 黄片直播三级黄片两女一男| 97超碰大| 中亚精品极乱| 操逼日批| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 国产精品盗摄 偷窥盗摄| 欧美色66| 成人乱人伦一区二区| 日韩人人精品| 五月综合久久| 婷婷av在线中文字幕| 欧美情色贴图| AV九九| 探花视频免费观看国产专区| 亚州日韩97| 国产亚洲日本精品在线| 啊啊啊啊啊啊好多水| 欧美熟妇乱码在线一区| 玖玖爱免费观看视频| 中文字幕精品三级久久久| 久久男人的天堂国产| 啊啊啊慢点| 91 丝袜在线| 国产高清无码一区三区二区| 日日夜夜骑| 久久啊哟| 免费无码国产精品v片在线观看| 97网址97| 国产性感骚丝袜在线| 免费αⅴ在线观看| 亚洲无码一区成人免费午夜 | 日韩黄色片子| 精品制服美女中文一区二区三区| baisiav| 日本国产欧美高清在线| 久久狠狠色噜噜狠狠狠狠97 | 日韩性爱播放| 亚洲色图亚洲| 色婷婷日韩精品一区二区三区| 成人资源中文字幕在线观看天天| 99久久婷婷丁香| 久久久久久久97| 中文字幕免费看| 成人影 天天操 亚洲| 超碰九色| 亚洲h片在线免费观看| 少妇久久久久久久久| 久久久久元码视频| 亚州色站 日韩电影| 在线啊v一区| 不卡一区二区日本视频| 91日韩| www.男人的天堂| 亚洲色情在线影视| 五十路熟女工口| 爽爽淫人网| 综合久| 岛国黄片网站| 成·人免费午夜在线观看| 一二三区视频在线观看| 啊啊啊好舒服视频在线观看| 蜜臀AV成人精品蜜臀AV久久| 啪啪综合网| 99久久9| 国产综合网站在线播放 | 久久久久骚| 天天干天天干天天| 久久男女激情视频网站| 激情综合网五月婷婷五月天| 在线亚洲 欧美 日本专区| 色图综合网| 超碰色图| 中文字幕激情小说| 欧美人妻一区二区| 无码人妻毛片丰满熟妇精品区| 330Dv国产女人终合视频极品人与兽| 青娱乐 成人娱乐在线| 91色色色| 91无码中出人妻视频| 国产精品久久久鸭无码的功能| 久久6热视频免费观看| 国产日产精品久久快鸭的功能介绍| 乱伦熟女专区| 欧美极品美女aaaaaa级黄片| 很很操在线| 凹凸精品熟女在线观看| 9999久久久| 视频一区二区免费在线| 97亚洲精品| 国产高清午夜成人在线观看| 俄罗斯及免费在线看| 日韩啊V| 新亚洲无码| 九九精品99| 日本欧美一区二区三区免费| 欧美顶级黄色大片免费| 国产高清MV操逼视频| 中文字幕在线高清男人的天堂| AV和黑人在线播放| 亚洲中文字母在线播放| 成人在线日韩| 麻豆天美国美国产| 人妻在线大香蕉| 老司机午夜福利视频一区二区| 屁股久久久久久久久| 97欧美色| 欧美色人| 欧洲欧美视频一区二区| 无码聚合| www.91色| 色五月天AV| 日韩射图| 超碰在线一区二区| 精品日韩中文在线| 日韩欧美一级特黄大片| 婷婷久草一区二区三区| 日日日啊啊啊| 久久精品人妻一区二区三区| 日逼97| 免费啪啪av| www.婷婷| 丝袜综合| 日本在线伊人啪啪| 欧洲性爱无码区| 中文字幕成人理论在线| 长长久久免费视频| 亚码人妻| 男女国产精品| 日韩卡一卡二卡三在线| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 中文字幕一区二区日韩网| 偷窥自拍A片| 狠狠操一区二区| 欧美日日人人天天| 欧美性生活男人的天堂| 一区不卡在线观看av| av中文在线| 欧亚日韩综合精品国产| 天天做天天爱| WWW黄片COM| 日本精品人妻少妇一区二区| 熟女久久| 久久亚州精品成人Av无| 口爆综合网| 久久久久深夜无码| 欧美人与动性人交a| 色吧综合网| 久久爽爽精品| 国产精品不卡高清在线观看| 岛国视频免费在线观看| 台湾佬中文娱乐自偷自拍| 久久有码视频| av绯色| 人妻在线大香蕉| 青草成人免费视频一COm| wwwcaobibi| 日韩欧美丝袜诱惑| 搡老熟女免费视频| 亚洲情色第一页| 中日韩久久久免费看| 强奸乱伦亚洲第一页| 91 亚洲 欧洲| 97碰碰色| 深夜激情无码| 亚洲诱惑天堂| 欧美日韩国产高清在线一二三区 | 午夜福利国产欧美日韩夜夜| 在线黄页看毛片| 2020中文字幕在线| 懂色AV蜜臀无码精品APP| 99啪啪| 老子午夜伦不卡影院| AV九九| 96精品久久久| 欧美99热| 日韩精品人妻中文字幕不卡乱码| 中文字幕aⅴ在线视频| 四虎免费看黄| 国产宅男宅女在线观看| 亚洲黄色网址| 尤物网址| 精品久久艹| 亚一综合久久久久久久久久| B049AV在线播放| 精品亚洲黄色片 国产精品导航一区二区| 91视频成人福利网站在线一区| 乱伦一二三| 区一在线观看| 日韩熟女乱伦中出| 日韩色女精品| 少妇高潮对白在线观看| 天天干夜夜操一区二区| 日韩AV熟女乱伦| 欧美在线电影| 无码91| 9久在线视频只有精品| 99www.bibizy香蕉资源国产一区二区三区高清 | 亚洲在高跟鞋自慰久久在色线| 国产精品盗摄 偷窥盗摄| 97视频www| 日本韩欧美在线播放a| 精品二区三四区五电影| 免费视频无码| 欧美色图亚洲激情| 久草新免费| 人人操人人摸人| 亚洲成人在线乱码色午夜| 电影69乱码96| 日韩成人高清一区二区| 97在线观看免费视频l| 欧美一级做a爰片免费视频| 日韩天天综合| 国产精品对白内射| 黄视频免费| 久久精品一区一起草| 操人妻少妇中文| 国产91av在线播放| 国产三级中文字幕粉嫩| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 久久久青青草| 国产不卡片| 国产剧情AV不卡在线观看| 欧日韩一二三f区| 天天弄欧美| 无码国产精品午夜不卡(| 黄页| 四虎在线免费视频| 大香蕉九九| 欧美日韩色综合网| 精品国产AV一区天美传媒| 99re8超碰| 91精品综合久久久久久五月丁香| A片A5445444| 加勒比av网| 亚洲综合码| 久久久久成人亚洲国产| 91精品国产91久久青草 | 综合自拍| 女欧美一区二三区| 夜夜做夜夜爽精品视频| 亭亭丁香激情| 久热伊人| 国产在线观看91精品一区| 四虎影视欧美| 黑人粗大V S日韩女优视频| 日日夜夜干| 国产一区二区欧美日本| 火箭成精品视频884必出精品| 97热视频在线观看| 亚洲综合影视| 久久久18| 国产97视频免费观看| 成人av在线播放| 欧美热图99| 亚洲综合另类色图| 欧洲乱码一区二区| 亚洲 综合 欧美| 精品一区二区亚洲国产| 秋霞免费无码视频日韩A片| 欧综合网| 蜜臀99久久精品久久久久久| 日韩ab网 | 熟女高潮精品一区二区| 欧美少妇性乱| 91国产精品熟女| 中文字幕第页| 午夜男女爽爽爽在线视频| 亚洲成人av电影在线| 久久午夜鲁丝片| 91春色| 92久久| 欧美翘臀视频网站一区二区三区| 日本欧美m v精品网站加| 日本东京热大香蕉a片| 99九九久久| 99999精品视频| 久久理论字幕视频| 艳美熟妇先锋一二三区| 亚洲AV永久无码一区仙野| 欧美三级中文字幕hd| 综合色好色| 69精品| 农村女一级毛卡片| 91综合熟女| 中文字幕乱亚洲美女精品一区| 亚洲成人ab| 一本大道青青| 日韩有码回春沙龙第一页| 青草影院内射高潮| 好爽要喷了| 在线洲亚线| 精品二区三四区五电影 | 国产亚洲精品美女久久久久久2021| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 婷婷8月天青娱乐| 国产外初女出血视频| 亚洲综合影院| 亚洲蜜桃V妇女| av午夜影院在线播放| 亚洲av综合色区无码一| 伦伦成年午夜免费视频| 性爱Av免费|