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

ARTICLE DETAIL

資訊詳情

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

PB03藍牙5.2二次開發(fā)資料:從SDK到GATT與OTA實戰(zhàn)

PB03藍牙5.2二次開發(fā)資料:從SDK到GATT與OTA實戰(zhàn) 簡介面向使用安信可PB-03藍牙模塊進行二次開發(fā)的嵌入式工程師與物聯(lián)網(wǎng)學(xué)習(xí)者這份資料合集圍繞PHY6252低功耗藍牙SoC展開重點解決BLE5.2開發(fā)環(huán)境搭建、外設(shè)驅(qū)動參考與固件升級等常見需求。壓縮包共1163個文件、約66.23MB以C源碼與頭文件為主體輔以Keil工程文件、鏈接腳本、啟動匯編、INI配置、批處理腳本及PDF文檔覆蓋從工程配置到編譯燒錄的多個環(huán)節(jié)并包含串口AT指令、FOTA升級與低功耗休眠等相關(guān)參考材料。已有2248人學(xué)習(xí)說明其在PB-03二次開發(fā)人群中具有一定參考價值。讀者可從中獲取較完整的SDK目錄與示例工程結(jié)構(gòu)借助源碼與配置理解UART、GPIO、ADC、PWM、I2C、SPI等接口的調(diào)用方式對照文檔和工程文件排查編譯、鏈接與下載問題也可為Windows開發(fā)環(huán)境下的二次開發(fā)與固件遠程升級提供直接可用的素材。1. PB03 藍牙 5.2 二次開發(fā)資料一份資料包能省掉哪些摸索手上有一塊 PB03 模組想讓它從「能廣播」走到「能跟自己的 App 收發(fā)自定義數(shù)據(jù)」中間這段路很多人卡過兩三天不知道 SDK 該從哪個文件下手廣播包改完手機掃不到燒錄工具一連上就報握手失敗。PB03 藍牙 5.2 二次開發(fā)資料這套文檔資料的價值就在這兒——它把 SDK 工程、硬件設(shè)計文件、AT 指令手冊、燒錄工具和幾套可編譯的例程收在一起拿到手就能編譯、能下載、能跟自己的板子對比差異不是芯片手冊的中文翻譯版。適合三類人第一次碰 BLE 5.2 模組、需要兩周內(nèi)出樣機的固件工程師要畫底板、核對引腳復(fù)用和天線凈空的硬件工程師以及做方案選型、想判斷這顆模組扛不扛得住自己場景的技術(shù)負責(zé)人。2. 資料包拆解SDK 目錄、協(xié)議棧分層與二次開發(fā)的可改邊界二次開發(fā)資料包最容易出現(xiàn)的浪費是不是「東西不夠」而是「不知道哪份東西該信」。同一個功能AT 指令手冊里有一套說法例程里又有一套寫法SDK 里的宏開關(guān)還是第三套。第 2 章先把包里的結(jié)構(gòu)捋清哪些目錄只讀、哪些是主要修改區(qū)域、協(xié)議棧哪一層能改哪一層碰了就麻煩以及硬件那份資料該在什么時候看。等把邊界劃清楚后面編譯、燒錄、調(diào) GATT 才有參照系不然每改一行代碼都像在賭。2.1 目錄分工哪幾個文件夾看完就該鎖上PB03 這類模組的二次開發(fā)包目錄結(jié)構(gòu)基本是固定的幾個部分區(qū)別只在命名習(xí)慣。我一般拿到包先做一件事ls一遍把每個目錄歸到「只讀」和「會改」兩類里心里有個地圖再動手。下面這張表是按常見組織方式整理的實際包里的名字可能差一兩個字但功能對應(yīng)得上。目錄常見命名典型內(nèi)容二次開發(fā)時的用途是否修改doc/數(shù)據(jù)手冊、AT 指令手冊、天線設(shè)計指南、功耗實測表查引腳定義、指令集、射頻指標只讀sdk/協(xié)議棧庫文件、應(yīng)用層源碼、Keil 工程、鏈接腳本改業(yè)務(wù)邏輯、加自定義服務(wù)主要修改區(qū)域sdk/lib/預(yù)編譯的協(xié)議棧與射頻驅(qū)動.lib/.a只調(diào)用不反編譯只讀hw/原理圖、PCB 封裝庫、BOM、匹配網(wǎng)絡(luò)參數(shù)畫底板、核對引腳復(fù)用只讀tool/燒錄上位機、串口助手、固件合并腳本、量產(chǎn)工具下載固件、看日志、批量寫參數(shù)只讀example/透傳、主從一體、HID、OTA 四類例程抄配置、對比差異、當回歸基線可改但先備份表里最關(guān)鍵的一行是sdk/lib/。協(xié)議棧以預(yù)編譯庫的形式給出意味著鏈路層、射頻校準、跳頻這些邏輯你既看不到也改不了出問題只能從應(yīng)用層參數(shù)倒推。這不是資料包偷懶是認證和射頻一致性要求的常規(guī)做法。知道自己改不到那一層排查思路就會變——連不上先懷疑參數(shù)和時序而不是去翻協(xié)議棧源碼。動手的第一步我個人的習(xí)慣是把sdk/整份復(fù)制一份出來改個名字比如sdk_myproj/原始包保持原樣。原因很實際二次開發(fā)過程中一定會改宏、改鏈接地址、刪例程改亂了想回退重新解壓一遍是最快的后悔藥。同理example/里的透傳例程建議單獨復(fù)制一份當「金標準」你自己的工程跑不通時把它燒進去對比能立刻區(qū)分是硬件問題還是代碼問題——這個動作在兩塊板子都調(diào)不通的時候能救命。還要提醒一個細節(jié)很多包的doc/里放著兩三個版本的 AT 指令手冊文件名只差一個后綴。別默認最新的那份就對應(yīng)當前固件。判斷方法是看手冊里描述的指令集和你手上模組實際返回的響應(yīng)是否一致隨手發(fā)一條查詢指令回什么就知道版本對不對得上。這個核對只花兩分鐘能省掉后面半小時的自我懷疑。2.2 協(xié)議棧分層GAP 廣播、GATT 屬性、應(yīng)用回調(diào)各管什么BLE 的分層概念網(wǎng)上一搜一大把但落到「我到底能改哪一行」還是得按這個資料包的實際結(jié)構(gòu)重新講一遍。從下往上看控制器層含射頻、鏈路層、跳頻以庫形式封裝你只通過 API 配置參數(shù)主機層的 GAP 負責(zé)廣播、掃描、連接建立GATT 負責(zé)屬性的組織和讀寫再往上是你自己的應(yīng)用邏輯和串口協(xié)議。二次開發(fā)里 90% 的工作量集中在 GATT 和 GAP 參數(shù)這兩塊。廣播包內(nèi)容的填充、連接間隔的取值、自定義服務(wù)屬性表的順序、CCCD 的讀寫回調(diào)——這些全在應(yīng)用層改起來不用碰庫。反過來凡是涉及「連接建立之前的射頻行為」和「鏈路穩(wěn)定性」的比如發(fā)射功率、射頻信道、白名單過濾的底層實現(xiàn)基本都在庫里你只能通過上層參數(shù)間接影響。新手最容易誤改的是啟動文件和鏈接腳本。它們長得像普通源碼里面也確實有可以改的數(shù)字但改錯的表現(xiàn)往往不是編譯報錯而是燒進去之后跑飛、或者廣播正常但一連接就復(fù)位。我見過有人為了省幾 KB 空間去動鏈接腳本里的段地址結(jié)果應(yīng)用區(qū)和 OTA 備份區(qū)重疊升級一次直接變磚。這類文件在包里通常放在sdk/project/下面看到.sct、.ld、startup_*.s這種后綴動之前先備份改完必須做一次完整的燒錄和連接驗證。另一處邊界是中斷優(yōu)先級。協(xié)議棧對射頻中斷和定時器中斷的響應(yīng)時間有隱含要求應(yīng)用層如果把串口中斷優(yōu)先級配得比射頻還高重負載時會出現(xiàn)連接間隔抖動甚至斷鏈。資料包里的例程一般給了一套可用的優(yōu)先級配置直接沿用比自己重新分配更穩(wěn)非要改就一次只改一個改完拿連接穩(wěn)定性壓測一遍。2.3 工具鏈版本對齊編譯器和燒錄工具比你想的挑嵌入式資料包最容易被忽略的一句話是「本 SDK 在某某版本下驗證通過」。這句話不是免責(zé)聲明是硬約束。編譯器版本差異會帶來兩個后果一是 C 庫行為不同導(dǎo)致的隱性問題比如某些優(yōu)化等級下的對齊訪問二是生成的代碼體積變化本來剛好塞進應(yīng)用區(qū)的固件突然超了。具體要核對三項編譯器主版本、器件支持包、燒錄上位機版本。前兩項決定能不能編譯出行為一致的固件第三項決定能不能把固件寫進去。燒錄工具的版本和模組內(nèi)部固件版本之間通常有協(xié)議對應(yīng)關(guān)系版本差太多會表現(xiàn)成「能識別串口但握手失敗」這種報錯信息往往很含糊看著像硬件壞了其實換個工具版本就好。串口驅(qū)動的坑也值得一提。同一臺電腦上裝過多個串口工具時虛擬串口偶爾會被別的軟件占用表現(xiàn)是燒錄工具提示打不開端口但設(shè)備管理器里看著一切正常。遇到這種情況先關(guān)掉所有串口助手再試別急著懷疑板子。2.4 硬件資料怎么用天線凈空和電源紋波比原理圖重要hw/目錄里的原理圖很多人掃一眼就跳過直接照著引腳表畫底板。真正會被忽略又最容易出事的是兩塊天線的凈空區(qū)和電源的紋波要求。天線部分資料里一般會給一個推薦布局模組天線端到板邊要保持一段無銅無走線的凈空底下不走線不鋪銅附近不要放電池和金屬結(jié)構(gòu)件。這段距離具體多少看包里的天線設(shè)計說明但「凈空」這件事必須當真。我踩過一次底板為了塞結(jié)構(gòu)把電池挪到天線正下方傳導(dǎo)測試一切正常實際通信距離掉了一大半查了兩天才定位到。電源部分BLE 模組在廣播瞬間有脈沖電流LDO 選型偏小或者去耦電容離得太遠會出現(xiàn)「空閑正常、一廣播就復(fù)位」。資料里的參考設(shè)計給了電容位置和容值照著抄就行別自己優(yōu)化。表里這幾個點硬件階段確認一次能省掉固件階段一半的玄學(xué)問題。檢查項資料里看哪硬件階段怎么驗天線凈空天線設(shè)計指南目視 卡尺凈空區(qū)內(nèi)無銅無器件匹配網(wǎng)絡(luò)原理圖匹配電路按參考值貼不自行改容感值電源去耦參考設(shè)計布局電容靠近模組電源腳地平面完整復(fù)位與啟動腳引腳定義表上電時序符合要求不懸空調(diào)試串口引腳復(fù)用表留出測試點方便抓日志3. 跑通第一個工程宏配置、命令行編譯與燒錄驗證把資料包里的例程編譯通過、燒進去、手機能掃到這三步做完心里才算有底。這章按順序走一遍先在 IDE 里改對幾個關(guān)鍵宏再用命令行把編譯過程腳本化后面接自動化構(gòu)建也方便然后校驗固件尺寸別越界最后燒錄并驗證廣播。每一步都給出判斷標準做完能明確知道「這一步過了」。3.1 打開工程先改三個宏別急著編譯第一次打開 Keil 工程不要直接點編譯。先找工程配置里的預(yù)定義宏通常在Options for Target的 C/C 頁確認三個方向上的開關(guān)日志輸出、休眠使能、設(shè)備名與地址來源。日志開關(guān)決定你能不能看到串口打印。出廠狀態(tài)的例程有時為了省電把日志全關(guān)了燒進去串口一片安靜你會以為程序沒跑起來實際上是沒打印。調(diào)試階段先打開功能驗證完再關(guān)掉關(guān)掉之前記得測一次功耗因為日志本身很耗電。休眠使能決定空閑時會不會進低功耗。帶休眠調(diào)試連接問題很痛苦因為喚醒需要時間某些時序會被拉長。我一般調(diào)試期先關(guān)休眠等連接穩(wěn)定了再打開專門測一輪。設(shè)備名和地址來源這一項很多 SDK 用宏來控制是「用芯片內(nèi)部地址」還是「用代碼里寫死的地址」。如果兩片模組廣播出來名字和地址完全一樣手機端會出現(xiàn)只能連上一片的情況看著像連接問題其實是配置重復(fù)。/* 這幾個開關(guān)通常定義在工程宏或 board_cfg.h 里名字隨 SDK 有差異 */ #define CFG_LOG_EN 1 /* 調(diào)試期開量產(chǎn)關(guān)關(guān)掉能省下幾 mA */ #define CFG_SLEEP_EN 0 /* 調(diào)試期關(guān)穩(wěn)定后再開 */ #define CFG_USE_CHIP_MAC 1 /* 1用芯片唯一地址0用下面寫死的地址 */ #define CFG_DEV_NAME PB03-DEV /* 廣播里的設(shè)備名長度計入廣播包 */ #define CFG_UART_BAUD 115200 /* 調(diào)試串口波特率和上位機保持一致 */這段配置不需要解釋太多重點是養(yǎng)成「先確認再編譯」的順序。血淚經(jīng)驗是改代碼之前先確認宏改完之后記錄改了什么否則三五天后自己都不記得當初為什么把這行設(shè)成 0。3.2 命令行編譯把錯誤從日志里撈出來IDE 里點編譯適合調(diào)試但只要開始多人協(xié)作或者想把構(gòu)建掛到自動流程里命令行編譯就必須能跑通。資料包里的工程是標準 Keil 工程可以用它的命令行模式批量編譯。#!/usr/bin/env bash # 一鍵編譯并提取關(guān)鍵信息適合本地快速驗證或掛到構(gòu)建機 set -euo pipefail KEIL_BIN/c/Keil_v5/UV4/UV4.exe # 按本機安裝路徑改注意 Windows 路徑在 bash 下的寫法 PROJsdk_myproj/project/pb03_app.uvprojx # 工程文件相對路徑要先 cd 到倉庫根目錄 LOGbuild/compile_$(date %Y%m%d_%H%M%S).log mkdir -p build build_log # -b 批量編譯(不彈窗) -j0 抑制對話框 -o 輸出完整日志 $KEIL_BIN -b $PROJ -j0 -o $LOG || true # Keil 的進程返回碼不區(qū)分警告和錯誤掃日志比看返回碼可靠 echo ---- 錯誤與告警 ---- grep -nE error:|Error:|Warning: $LOG | tail -n 30 || echo 無錯誤 echo ---- 代碼體積 ---- grep -nE Program Size|Total RO|Total RW $LOG | tail -n 8 || true幾處說明。-b是批處理編譯模式不彈界面適合腳本調(diào)用-j0用來抑制可能出現(xiàn)的模態(tài)對話框不然在無人值守的構(gòu)建機上會卡住等點擊-o把完整日志落盤這是排查的關(guān)鍵——IDE 窗口里滾過去的告警往往被忽略落盤之后grep一遍才發(fā)現(xiàn)有「隱式聲明」這類會埋雷的告警。|| true是有意加的。Keil 命令行在某些版本下即使編譯成功也返回非零碼直接set -e會把腳本中斷在成功的那一步。真正判斷成敗看日志里的error:計數(shù)這也是為什么腳本里要單獨 grep 一遍。如果編譯報的是「找不到某個頭文件」九成是工程里的相對路徑和你移動目錄之后的實際位置對不上。解決辦法不是改代碼里的#include而是回到工程配置的 Include Paths 里修路徑這樣所有引用同一處配置的源文件都能一起好。3.3 固件尺寸校驗別讓應(yīng)用區(qū)越界這一步很多人省略直到 OTA 升級失敗才發(fā)現(xiàn)固件的末尾壓到了備份區(qū)。做二次開發(fā)尤其是加了自定義服務(wù)和日志之后代碼體積是會長的靠肉眼判斷不靠譜寫個腳本卡住更穩(wěn)妥。#!/usr/bin/env python3 按分區(qū)表校驗編譯產(chǎn)物是否越過應(yīng)用區(qū)上限防止燒進去跑飛或 OTA 變磚。 import sys APP_LIMIT 0x3A000 # 應(yīng)用區(qū)上限改成自己分區(qū)表里的值別照抄 def hex_top_addr(path: str) - int: 遍歷 Intel HEX返回所有數(shù)據(jù)記錄覆蓋到的最高地址。 top 0 with open(path, r, encodingutf-8, errorsignore) as f: for line in f: line line.strip() if not line.startswith(:): continue raw bytes.fromhex(line[1:]) length raw[0] addr (raw[1] 8) | raw[2] rectype raw[3] if rectype 0x00: # 0x00 是數(shù)據(jù)記錄其余類型不影響地址占用 top max(top, addr length) elif rectype 0x04: # 0x04 擴展線性地址高 16 位要左移拼接 # 這里只做上限判斷遇到擴展地址記錄時把高位記下來即可 pass return top if __name__ __main__: top hex_top_addr(sys.argv[1]) left APP_LIMIT - top print(ftop0x{top:08X} limit0x{APP_LIMIT:08X} free{left} bytes) sys.exit(0 if left 0 else 1)關(guān)鍵參數(shù)只有一個APP_LIMIT它的值必須來自你自己的分區(qū)表不是隨便寫的常數(shù)。腳本里的rectype 0x00判斷的是數(shù)據(jù)記錄只有這一類才真正占用 Flash 地址0x04那條分支是留給你擴展高位的如果固件地址超過 64KB 就必須補全否則算出來的上限會偏小反而誤報。把這個腳本掛到編譯之后跑一次返回非零就中斷構(gòu)建。養(yǎng)成習(xí)慣之后加功能時會不自覺地關(guān)注體積增長比事后救火強。3.4 燒錄與上電驗證兩個判斷標準燒錄一般有兩條路串口 ISP 和調(diào)試器。串口 ISP 需要把啟動腳拉到指定電平再上電讓芯片進下載模式調(diào)試器則是直接連 SWD 口能順帶在線調(diào)試。第一次建議用調(diào)試器出問題能看到芯片有沒有起來量產(chǎn)和維護用串口不依賴調(diào)試器。燒完之后的驗證分兩步。第一步看串口日志上電后有沒有打印啟動信息初始化到哪一步有沒有報錯。日志停在哪一行問題就在那附近。第二步用手機端的通用 BLE 調(diào)試 App 掃描看能不能掃到設(shè)備名信號強度是否正常服務(wù)列表里有沒有你預(yù)期的 UUID。判斷標準要具體能掃到但連不上問題在連接參數(shù)或配對配置能連上但服務(wù)列表是空的問題在屬性表注冊順序掃都掃不到先查廣播使能有沒有調(diào)用再查天線。這三條分清楚排查就不會亂撞。4. 自定義 GATT 服務(wù)廣播數(shù)據(jù)、屬性表與連接參數(shù)例程能跑通只是起點真正落地時一定要加自己的服務(wù)和特征值。這章講三件事廣播包 31 字節(jié)怎么分配、屬性表怎么注冊出一個最小可用的自定義服務(wù)、連接參數(shù)和 MTU 怎么先測再定。最后補一段低功耗配置因為很多項目死在「功能都對功耗超標」這一步。4.1 廣播包與掃描響應(yīng)31 字節(jié)怎么分配傳統(tǒng)廣播包上限 31 字節(jié)每一段都由「1 字節(jié)長度 1 字節(jié)類型 內(nèi)容」組成長度字節(jié)不包含它自己。BLE 5.2 支持擴展廣播可以超過 31 字節(jié)但手機端的兼容性和模組側(cè)的支持度都不統(tǒng)一實際項目里我一般還是按 31 字節(jié)來規(guī)劃把廠商自定義數(shù)據(jù)放到掃描響應(yīng)里。/* 廣播數(shù)據(jù)長度字節(jié) 1(類型) 內(nèi)容長度 */ static uint8_t adv_payload[] { 0x02, 0x01, 0x06, /* Flags通用可發(fā)現(xiàn)不支持 BR/EDR */ 0x05, 0x09, P, B, 0, 3, /* 0x09 完整設(shè)備名長度 14 */ 0x03, 0x03, 0x0F, 0x18, /* 0x03 完整 16bit UUID 列表 */ }; /* 掃描響應(yīng)單獨一包也限 31 字節(jié)廠商自定義字段放這里更寬松 */ static uint8_t scan_rsp[] { 0x06, 0xFF, 0x34, 0x12, 0x01, 0x02, /* 0xFF 廠商自定義前兩字節(jié)是廠商 ID(小端) */ }; /* 使能廣播函數(shù)名以實際 SDK 為準 */ ble_gap_adv_start(adv_payload, sizeof(adv_payload), scan_rsp, sizeof(scan_rsp), 100 /* 廣播間隔 ms100~500 之間按需取 */);最容易錯的地方是長度字節(jié)。比如設(shè)備名是 4 個字符那么長度應(yīng)該是 5類型 1 字節(jié) 名字 4 字節(jié)寫成 4 會把名字最后一個字符吃掉手機端顯示成三個字母看著像編碼問題。加一段內(nèi)容就重新數(shù)一遍別憑感覺。廣播間隔這個參數(shù)要權(quán)衡調(diào)小被發(fā)現(xiàn)更快但平均功耗直線上升調(diào)到 500 ms 以上某些手機的掃描窗口覆蓋不到會表現(xiàn)為「偶爾能掃到」。100~300 ms 是常見的起步區(qū)間。4.2 屬性表注冊一個自定義服務(wù)的最小閉環(huán)GATT 服務(wù)在代碼里就是一張屬性表表項順序決定 handle 順序handle 又是客戶端讀寫的尋址依據(jù)。所以順序不能亂中間也不能插空項。一個能讀、能開通知的最小服務(wù)需要四項服務(wù)聲明、特征值聲明、特征值本身、CCCD。/* 自定義 128bit 服務(wù)的屬性表順序即 handle 遞增順序 */ static const att_db_item_t user_db[] { /* 1. 服務(wù)聲明主服務(wù) 128bit UUID */ { .type ATT_TYPE_PRIMARY_SERVICE, .uuid_len 16, .uuid USER_SVC_UUID, .perm ATT_PERM_READ }, /* 2. 特征值聲明屬性位決定客戶端能不能開通知這里給讀通知 */ { .type ATT_TYPE_CHARACTERISTIC, .uuid_len 16, .uuid USER_CHAR_UUID, .perm ATT_PERM_READ, .value { .props ATT_PROP_READ | ATT_PROP_NOTIFY } }, /* 3. 特征值本身max_len 要和 MTU 協(xié)商結(jié)果對齊別寫成 512 占內(nèi)存 */ { .type ATT_TYPE_CHAR_VALUE, .uuid_len 16, .uuid USER_CHAR_UUID, .perm ATT_PERM_READ, .value { .buf user_val, .len sizeof(user_val), .max_len 20 } }, /* 4. CCCD客戶端寫 0x0001 開通知0x0000 關(guān) */ { .type ATT_TYPE_CCCD, .perm ATT_PERM_READ | ATT_PERM_WRITE, .value { .buf user_cccd, .len 2 } }, }; /* 寫回調(diào)里按 handle 分派handle 用注冊后的返回值別寫死數(shù)字 */ static void on_attr_write(uint16_t handle, const uint8_t *data, uint16_t len) { if (handle user_cccd_handle) { user_notify_en (len 2) (data[0] 0x01); /* 開/關(guān)通知 */ } else if (handle user_val_handle) { /* 業(yè)務(wù)數(shù)據(jù)處理注意 len 可能小于 max_len */ handle_user_cmd(data, len); } }三處說明。max_len 20對應(yīng)默認 MTU 23 減去 3 字節(jié)協(xié)議開銷如果后面協(xié)商到更大 MTU這個值要同步放開但在沒協(xié)商之前設(shè)太大只是白占 RAM。CCCD 必須占一個獨立表項漏了它客戶端開不了通知表現(xiàn)是「訂閱了但收不到數(shù)據(jù)」?;卣{(diào)里判斷 handle 一定要用注冊后返回的變量寫死數(shù)字在后期插入新服務(wù)時必然錯位而且錯位之后的行為很詭異——寫 A 特征值卻觸發(fā)了 B 的邏輯。注冊完之后手機端能看到服務(wù)但點開可能是空的。這種情況先確認屬性表里的 UUID 字節(jié)序128 位 UUID 在內(nèi)存里通常按小端倒序存放寫反了客戶端解析出的 UUID 和你以為的不一樣服務(wù)會被當成未知服務(wù)折疊起來。4.3 連接參數(shù)與 MTU先測再定別抄別人的數(shù)連接參數(shù)直接決定吞吐、延遲和功耗三者互相牽制。參數(shù)沒有通用最優(yōu)值只能按場景定。先把幾個參數(shù)的物理含義和邊界搞清楚再用實測收斂。參數(shù)常見取值影響注意廣播間隔100~500 ms被發(fā)現(xiàn)速度、平均功耗低于 100 ms 收益不明顯功耗接近翻倍最小連接間隔15~30 ms吞吐、響應(yīng)延遲部分手機端會向上收斂到它認可的粒度從機延遲0~4空閑時省電設(shè)太大配合小間隔寫操作容易超時監(jiān)督超時2~6 s斷鏈判定速度必須大于 (1延遲) × 間隔 × 2否則頻繁誤判斷鏈MTU23 或 247單包有效負載默認 23即 20 字節(jié)協(xié)商后按實際值算調(diào)試連接問題光看手機界面不夠得把空中抓到的廣播和連接行為拆開看。下面這段腳本用來解析抓包工具或串口導(dǎo)出的廣播十六進制串檢查 AD 結(jié)構(gòu)是否合法、有沒有超長。#!/usr/bin/env python3 把廣播原始 hex 逐條拆成 AD 結(jié)構(gòu)定位長度寫錯或類型寫錯的那一段。 def parse_adv(hexstr: str) - None: data bytes.fromhex(hexstr.replace( , ).replace(\n, )) if len(data) 31: print(f[警告] 長度 {len(data)} 超過傳統(tǒng)廣播包 31 字節(jié)上限) i 0 while i len(data): ln data[i] if ln 0: # 0 表示后續(xù)是填充直接結(jié)束 break if i 1 len(data): print(f[錯誤] 偏移 {i} 處長度 {ln} 越界包被截斷) return ad_type data[i 1] value data[i 2: i 1 ln] print(foff{i:3} len{ln:3} type0x{ad_type:02X} value{value.hex( )}) i ln 1 if __name__ __main__: # 把抓到的廣播 hex 粘進來空格可有可無 parse_adv(02 01 06 05 09 50 42 30 33 03 03 0F 18)i ln 1是核心跳過一個長度字節(jié)加 ln 個字節(jié)的內(nèi)容。ln 0提前退出是因為廣播包尾部常用零填充。這段腳本不依賴任何第三方庫抓包工具導(dǎo)出的數(shù)據(jù)直接粘貼就能用定位「名字少了最后一個字母」「UUID 類型寫成 0x02」這類問題比肉眼數(shù)快得多。MTU 協(xié)商的結(jié)果要在連接建立后主動打印一次。有些平臺默認不協(xié)商你以為能發(fā) 200 字節(jié)實際每包只發(fā)出去 20 字節(jié)剩余全被截斷表現(xiàn)是「指令發(fā)一半設(shè)備不響應(yīng)」。日志里加上協(xié)商前后的 MTU 值這個問題一眼就能看出來。4.4 低功耗休眠、GPIO 與廣播間隔的取舍功耗超標是二次開發(fā)里最典型的翻車點。規(guī)格書上的數(shù)字通常是「僅射頻MCU 廣播」的理想值你板子上多一個上拉電阻、多一路常開的串口數(shù)字就完全不一樣。第一件事是確認休眠真的進去了。很多 SDK 有休眠前后的鉤子函數(shù)在里面翻轉(zhuǎn)一個 GPIO用示波器看這個腳的占空比就知道實際醒著多久。比看電流平均值直觀得多。第二件事是 GPIO 狀態(tài)。休眠時懸空的輸入腳會因電平不確定產(chǎn)生漏電上拉電阻在外部有下拉時會持續(xù)耗流。原則是不用的腳配置成模擬或下拉輸出外部上拉能省則省能加大阻值就加大。第三件事是外設(shè)時鐘。串口、定時器、ADC 在休眠前該關(guān)的關(guān)掉尤其是串口——調(diào)試完忘記關(guān)一晚掉幾百微安很常見。廣播間隔的調(diào)整放在最后先把漏電堵住再談間隔否則你怎么調(diào)間隔都對不上規(guī)格書。5. 常見問題排查燒錄、連接、功耗的五條踩坑記錄有些坑幾乎每個項目都會踩一遍寫在這里省得重復(fù)試錯。下面五條都按「現(xiàn)象 → 原因 → 解決」組織遇到相似癥狀可以直接對照。需要強調(diào)一點BLE 調(diào)試最忌諱同時改多個變量一次只改一處改完立刻驗證否則問題解決了你也不知道是哪一步生效的。5.1 燒錄報握手失敗換線換板都沒用現(xiàn)象燒錄工具能識別到串口點開始后幾秒提示握手失敗或超時換 USB 線、換板子癥狀一樣。原因多半是沒進下載模式。串口 ISP 需要在復(fù)位釋放的瞬間采樣啟動腳電平手動按鍵的時序經(jīng)常對不上另一種可能是燒錄工具版本與模組內(nèi)部固件版本不匹配協(xié)議對不上同樣表現(xiàn)為握手失敗。解決先改成調(diào)試器燒錄排除時序問題確認固件本身沒問題如果只能用串口用工具里的「自動進入下載模式」選項讓工具通過 DTR/RTS 控制復(fù)位和啟動腳別手動按。工具版本按資料包tool/目錄里配套的那份用不要用電腦上殘留的舊版。5.2 廣播數(shù)據(jù)改了手機掃到的還是舊名字現(xiàn)象代碼里改了設(shè)備名并重新編譯燒錄手機端掃出來還是原來那個名字換一臺手機也一樣。原因緩存。手機端對已配對或曾掃描到的設(shè)備會緩存 GATT 和廣播信息Android 側(cè)尤其明顯另一種情況是編譯產(chǎn)物沒真正燒進去燒錄的是舊 hex。解決先在手機藍牙設(shè)置里刪除該設(shè)備記錄或在調(diào)試 App 里清緩存再掃同時核對燒錄日志里的固件時間和大小確認燒的是新產(chǎn)物。判斷是不是緩存最直接的辦法是換一臺從沒掃過這個設(shè)備的手機。5.3 能連上幾秒鐘后自動斷開現(xiàn)象連接建立成功服務(wù)也能看到三五秒后連接斷開反復(fù)重連。原因監(jiān)督超時配置不合理最常見。監(jiān)督超時必須大于 (1 從機延遲) × 連接間隔 × 2如果從機延遲設(shè)成 4、間隔 30 ms超時至少要 300 ms 以上配成 200 ms 就會周期性誤判斷鏈。其次是應(yīng)用層在連接回調(diào)里做了耗時操作阻塞了協(xié)議棧的事件處理。解決先把從機延遲改成 0、監(jiān)督超時放大到 4 s 驗證連接是否穩(wěn)定穩(wěn)定后逐步往回調(diào)找到臨界點再留一倍余量?;卣{(diào)里不要做 Flash 擦寫、不要長延時重活丟到主循環(huán)里做。5.4 功耗比規(guī)格書高一個數(shù)量級現(xiàn)象休眠電流實測幾百微安規(guī)格書寫的是個位數(shù)微安。原因串口沒關(guān)、GPIO 懸空漏電、調(diào)試日志沒關(guān)、外部上拉電阻常供這四樣占了絕大多數(shù)。日志這一項最隱蔽因為功能上完全正常。解決按順序排查——先關(guān)日志測一次再關(guān)串口測一次再把所有未用 GPIO 配成模擬態(tài)測一次。每關(guān)一項測一次電流變化最大的那項就是主因。用 GPIO 翻轉(zhuǎn)配合示波器看喚醒占空比比盯著萬用表數(shù)字猜有效。5.5 AT 固件和 SDK 固件混著燒功能莫名其妙現(xiàn)象按 SDK 例程燒完串口發(fā) AT 指令沒反應(yīng)或者刷回 AT 固件后自定義服務(wù)消失但廣播名還是自己改的那個。原因AT 固件和 SDK 固件是兩套完全不同的應(yīng)用共用同一塊 Flash 但入口和分區(qū)不同。混燒之后配置區(qū)殘留舊參數(shù)表現(xiàn)就是「一半新一半舊」。解決切換固件類型前先做一次全片擦除別只擦應(yīng)用區(qū)。切換完成后用默認配置跑一遍基礎(chǔ)功能確認干凈了再燒自己的業(yè)務(wù)固件。產(chǎn)線上尤其要注意返修板子回爐時先擦再寫。6. OTA 與產(chǎn)線固化把「能跑」變成「能出廠」樣機能跑通和能出廠之間隔著 OTA 和參數(shù)固化兩件事。這兩塊資料包里不一定有現(xiàn)成腳本但基于里面的例程補起來不難。OTA 的核心是分區(qū)。常見做法是應(yīng)用區(qū) 備份區(qū)雙 bank新固件先整包寫進備份區(qū)校驗通過后把啟動標志指過去重啟由 bootloader 搬運或直接跳轉(zhuǎn)。判斷 OTA 是否可靠別只看「升級成功」這一條要專門測三個場景升級過程中斷電、升級包被截斷、降級回滾。斷電測試最容易被跳過但它恰恰是現(xiàn)場最容易發(fā)生的——用戶在升級時鎖屏走了。/* OTA 狀態(tài)機的最小實現(xiàn)關(guān)鍵是每一步都落標志位掉電后可恢復(fù) */ typedef enum { OTA_IDLE, OTA_RECEIVING, OTA_VERIFYING, OTA_READY, OTA_FAIL } ota_state_t; static void ota_on_packet(const uint8_t *data, uint16_t len, uint32_t offset) { /* 1. 先寫備份區(qū)絕不直接覆蓋運行區(qū) */ if (flash_write(OTA_BAK_ADDR offset, data, len) ! 0) { ota_set_state(OTA_FAIL); /* 寫失敗立刻標記下次上電重來 */ return; } /* 2. 每包寫完更新進度標志掉電后從標志處續(xù)傳 */ ota_set_progress(offset len); ota_set_state(OTA_RECEIVING); } static void ota_on_finish(uint32_t total_len) { ota_set_state(OTA_VERIFYING); /* 3. 整包 CRC 校驗通過才允許切啟動標志 */ if (crc32_check(OTA_BAK_ADDR, total_len) 0) { ota_set_state(OTA_READY); ota_commit_boot_flag(); /* 這一步之后才真正生效 */ } else { ota_set_state(OTA_FAIL); /* 校驗失敗保留舊固件不切標志 */ } }這段代碼的重點不在語法在順序先寫備份區(qū)、再校驗、最后切標志。把切標志放到校驗之前一次傳輸錯誤就能讓設(shè)備變磚現(xiàn)場只能返修。進度標志要落在獨立的配置區(qū)別和固件放一起否則搬運固件時會一起被擦掉。產(chǎn)線固化是另一件事。每臺設(shè)備需要寫入唯一的 MAC、設(shè)備名、校準參數(shù)和密鑰這些不該靠改代碼重新編譯。常規(guī)做法是在 Flash 里劃一小塊參數(shù)區(qū)產(chǎn)線工具通過串口指令寫入應(yīng)用啟動時讀取。參數(shù)區(qū)要帶版本號和 CRC升級固件后參數(shù)仍然有效參數(shù)格式變了則按版本號做兼容遷移。驗證方法我一般分三層單機功能回歸廣播、連接、讀寫、通知四項走一遍、異常注入斷電、斷鏈、超長包、錯 CRC、小批量老化十幾臺連續(xù)跑 24 小時統(tǒng)計斷鏈次數(shù)和電流波動。三層都過才敢說這批固件能出廠。從那以后我每次改完固件都強制走一遍「擦全片 → 燒固件 → 斷電重啟 → 手機端刪緩存重掃」這四步不管改動多小。省下的那兩分鐘往往要用兩天去找回來。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久中出| 极品丝袜无码| 91天堂网| 亚洲少妇综合| 欧美日韩系列| 97自拍一区| 5278欧美一区二区三区| 欧美高清无码免费视频高清版| 1204金沙人妻懂旧版免费| 另类专区在线观看| www成人啪啪18秘 免费| 男女日B国产| 日韩专区久久久| 白丝1区2区3区| 久久婷婷色| 久久双插| 无码国产精品96久久久久孕妇| 欧美,亚洲,日韩,v,天堂,手机在线观看| 婷婷九月色| 国产不卡免费在线视频| 91爱综合| 97超碰jingpin| 欧美制服网站美腿丝袜| 亚洲天堂区| 温婉少妇玩3p| 欧美黄色大片在线观看| 91人妻最真实刺激绿帽| 91综合在线| 神马久久午夜| 97超碰9| 色偷偷人人玩人人舔人人操人人摸人人爽| 91欧美偷拍| 色爱欲亚洲| 夜色五月天| 91精品无码人妻系列| 波多野结衣先锋影音| 中文字幕一区二区视频在线观看 | 起碰97| 亚洲中文丝袜美腿诱惑字幕| 欧美日日人人天天| 91热| 国产精品福利视频| 91狠狠综合| 蜜臀99久久精品久久久懂爱| 高潮毛片无遮挡高清免费| 天天上日日上日韩精品| 亚洲国产精品99久久久| 一级黄色视频网| 欧美操逼熟女| 伊人女女资源在线观看| www色色com| 色五月综合| 一区二区偷拍拍视频| 99视频内射三四| 婷婷五月天丁香| 女优免费一区二区永久| 少妇天堂网络| 长久操视频| 国产吹潮女在线观看| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 日韩无码黄色片| 日韩欧美综合激情| 亚洲综合另类| 欧洲亚洲人妻无码中字久久三区四区 | 色九九久九九| 亚洲天堂欧美| 欧美日韩不卡a片| 亚洲av综合色区无码一| 欧美男女午夜啪啪| 天天操人人操骚逼网站| 天天爱天天操| 婷婷色网| av2014 日韩在线中文字幕| 中文字幕一二三| AV一区观看| 亚洲欧洲美腿丝袜| 97在线日韩中文字幕| 色汉综合| 91精品久久综合熟女| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 中文字幕视频2区| 日韩综合97P| 综合亚洲网| 亚洲日韩精品久久久久一区壹牛| 午夜男女爽爽爽在线视频| 91久久国产综合久久| 国产亚洲日本| 国产熟女精品一区二区| 天天日天天干天天整| 天天摸夜夜摸| 综合久久2017| 天天爽爽爽爽| 天堂精品一区| 亚洲国产精品9999在线观看| 99re6久热只有精品6在线直播 | 另类欧美综合| 午夜无码精品免费看性色| 人妻铁牛TV| 亚洲av淫乱| 亚洲 欧美 中文 日韩超碰| 蜜乳av一区二区三区四区不卡| 黄片www视频免费| 太久视频| 999 久久久| 91东北熟女| 99久久婷婷| 亚洲美女黄色| 一本一道波多野毛片中文在线| 热天堂一区二区| 日韩人妻无码不卡网站| 91人妻人人妻| 国产精品视频91久久| 色婷婷视频| 精品国产乱码久久久影院| 少妇3P性爱自拍| 熟妇艹鸡八| 亚洲一区在线观看欧洲 | 少妇高潮喷水无套久久久久久| 伊人网免费视频| 91爱综合| 岛国黄| 少妇三P| 无码国产Av| 色婷婷成人综合| TS人妖另类精品视频系列| 五月婷丁香| 一二三区视频在线观看| 狠狠操狠狠插| 在线视频97| 丁香五月影院| 亚洲欧洲成人在线电影| 加勒比日本在线| 99久久久久久亚洲精品不卡| 日本女优在线视频福利| 91精品人妻一区二区三区蜜臀| 亚洲色啪| 国产家庭乱伦表演| 久久偷偷色综合蜜桃| 久久精品国产亚洲AV片多多| 日韩综合色网| 极品色社| 国产v片在线免费观看| 天天爽夜夜欢视| 国内偷自视频区视频综合| 欧美成人一区二区| 久热久| 自拍盗摄一区| 91午夜无码| 久久同城AV| 欧美操逼熟女| 96久久久久久久| 五月丁香激情啪啪| 男女啪啪网站免费视频| 亚州伊人色综台| 成人a v在线播放免费| 国语人妻精彩刺激| 岛国片在线视频网站| 美欧老女人97| 人妻99p| 超碰色大香蕉| 人妻插插人妻人| 一区在线精品中文字幕| 亚洲精品1区| 自偷自拍的亚洲视频| 一区二区三区麻豆| 亚洲综合另类欧美久久久| 男人女人18禁片免费看网站| 韩日欧亚a级| 欧美爆操91| 国产h片在线观看视频| 人妻喷水| 91人人爽人人爽| 人人看欧美性爱| 欧美性夜| 精人妻无码一区二区三区伊人直播| 乱伦熟女区| 波多野42部激情无码喷潮| 日本一区二区不卡精品| 亚洲一区二区av| 久草视频制服诱惑| 婷婷五月激情综合| 国产51色综合久久免费| 另类小说综合网| 久久宗合97| 屌色在线97视频| 日本韩国国产精品一区| 男人的天堂va| 热热色国产一二区AV| 久久久一级| 黄色AAAAA欧美| 99精品九九九九九九| 丝袜综合| 日韩精品一区二区三区四虎影视| 萌白酱自拍视频| 91老女人| 亚洲国产精品成人久久蜜臀| 视频在线观看青青99国产| 亚洲熟女国产综合另类| 看看小穴| 五月色网| 97在线精品观看视频| 国产自制av蜜乳| 精品国产乱码久久久久久免费| 无码人妻丰满熟妇奶水区毛片| 六十路日本| 亚洲一级性爱视频免费看| 天美传媒AV在线播放| 日本高清一本二本免费不卡| 日韩中文9| 青青草成人视频在线观看二区| 亚洲美乱| 91在线限制级| 极品内射| 亚洲一区制服诱惑| 久久久国产成人一区二区三区在线| 午夜国产乱伦视频| www亚洲免费| 啊啊啊啊网站| 亚洲欧美色图片| 蜜桃午夜视频一区二区 | 天天插夜夜爽| 日韩97视频| 蜜桃久久精品一区二区三区| 人人搡人人肉久久精品| 欧美韩国你懂得在线| 久久综合日韩亚洲欧美| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 精品九九九九九九九九九| 久久男人网| 精品乱子一区二区三区99| 亚洲 图片 综合91| 人人妻人人色| 久草草一二三四区久久| 少好三P| 久湿久久| 97色操| 亚洲成人ab| 日骚逼视频| 国产精品久久久吖| 国产精品区在线12p| 18禁在线视频| 在线a亚洲视频播放在线| 日本人妻中文字幕| 欧美午夜一区二区三区| 开心激情婷婷| 天天综合网久久ww| 九七毛片九九毛片| JuliaAnnXXX888| 啪啪啪综合网| α√在线| 精品无码一二三四区| 60秒免费小视频| 国产精品国产| 91青青草| 五月婷网站| 1769精品一区二区三区| 中文伊人大香蕉视频| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 99日精品欧美国产| 96精品久久久久中文字幕| 神马久久啊啊| 久久超碰网| 成人性爱全视频观看| 婷婷五月天福利| 999九九精品| 超碰碰97资源站| 免费伦费视频在线观看| 亚洲精品视频二区| 亚洲色综网| 日本一道在线播放高清| 丰满人妻大屁一区二区| 大香蕉欧美国产日韩高潮| 99999re| 色欲无码人妻日韩欧美精品| 国产青青美女玩逼视频| 91人妻少妇| 亚洲乱码国产乱码精网站| 欧美图片偷拍| 无套后入双马尾| 国产精品黄色三级av| 色婷久久| 丝袜 中出 制服 人妻 美腿 中文字幕| 日本人妻丰满熟妇久久久久久| 亚洲砖码砖专无区2023| 久偷拍欧美日韩三区| 青青草好吊色| 99热超碰在线| 青青青在线高清视频在线一二三四区| 国产色综合亚洲色综合吹潮| 欧美色偷拍| 欧美精品,四区。五区| 污色区网站| 麻豆天美国美国产| 一级乱伦网站| 色999人与兽| 东北女人高潮视频| 婷婷色色五月天| 欧美综合传媒| 国产精品探花视频| 久久综合久色欧美综合狠狠| 熟女人妇一区二区三区| 亚洲色图欧美色图综合| 亚洲AV无码国产精品久久久久| 色诱中文字幕| 亚洲成aⅴ人片不卡无码| 激情文学网伊人| 四虎影视国产精品| 一区二区三区精品久久| 国模精品娜娜一二三区| 天天操天天日青青草超碰av| 911av网站免费观看| 成人热久久精品| 亚洲 无码 偷拍| 99精品网| 97国产人人| 蜜桃久久综合视频| 韩日色费| 超碰在线97国产| www亚洲免费| 亚洲欧洲无码97久久精品| 日韩精品人妻一区二区| 婷婷成人五月天| 久草成人| 啊啊啊好舒服好爽啊啊啊视频| 秋霞免费无码视频日韩A片| 色第一页| 中国国国产一级特黄毛片| 久草毛片| 在线观看国产黄色| 亚洲欧美成人网站AAA| 91在线美女| wwwxxx日本爽| 亚洲性猛| 久久婷婷五月天| 精品九九九九| 爱爱久久| 欧美色图亚洲色图成人在在线| 91精品国产91久久福利| 影音资源男人日韩| 五月天综合在线| 日本免费一级AAA大片器 | 人妻内射一区二区在线视频| 亚欧免费| 97久久精品| 国产精品久久久久久久久久梁医生| 亚洲AO在线| 久久精品国产亚洲AV片多多| 淫荡网址| 婷婷五月天色网| 亚洲人妻一区二区三区| 日韩人成网站在线播放| 91亚洲欧美| 97AV在线免费观看| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 欧美综合自拍亚洲综合图| 91丨国产丨白浆| 欧美天天干| 大香蕉伊人75| 日本高清加勒比| 久久人妻办公室视频| 无码高清国产AV| 欧美性性性| 爱丝福利| 青娱乐大香蕉| 一本道综合色图| 思思热免费在线视频| 天天噜| 97在线无精品| 少妇一线天久久久久久| 欧美日韩免费性爱| 成人av在线播放| 亚91网| 中亚黄色三级大片| 观看视频图片一区二区三区| 精品人妻1237| 玖玖视频在线资源一区二区三区| 五月丁香综合激情| 色婷婷综合视频| 高清无码在线播放网站| 亚洲男人久久综合天堂| 久久这里只精品免费福利| 水滴偷拍| 亚洲丝袜二区在线| 加勒比av网| 99精品伊人| 啊啊啊好湿国产一二| 大香蕉九九| 新版天堂中文资源8在线| 色哟哟AⅤ| 日日夜夜精品视频| 色香天天| 熟女人妻一区二区三区| 黑人性欧美| 情色五月天就去干| 日本最新1区2区3区| 美女91在线观看| 亚州中文字幕超碰97| 伊人久久大香线综合无码| 91啪9色| 美女啊啊啊啊啊啊啊| 开心激情婷婷| 啊啊啊好爽快点啊啊啊嗯嗯| 久久婷婷色综合一区二区三区| 午夜精品99久久久久传媒| 麻豆天美国美国产AV| 九九久久综合| 夜夜嗨一区二区| 91丝袜美女国产| 天天干,夜夜爽| 99久久久无码国产精品性男| 天美国产精品| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 久久久久久久性爱| 亚洲一区二区三区在线激情| 黄色大片免费在线| 国产AV激情无码久久无码| 亚洲国产精品无码AV在线| 国产操偷| 久热伊人| 黄色十八禁| 国产国产亚洲一二三久久| 99少妇内射| 中日韩免费看男女操逼大全| 在线观看岛国有码| 亚洲欧美精品91| 欧美aⅴ99久久黑人专区| 亚洲精品 欧美精品| 亚洲怡春院| 国产精品在线免费| 欧美aa一级片| 国产小u女在线观看| 99热思思| 青青草华人在线欧美在线| 黑人性欧美| 福利视频合集| www网站黄| 啊啊啊 在线观看| 97久久国产亚洲精品超碰热| 国产精品嫩草影院午夜两性| 亚洲av乱伦色图网站| 综合色图区| 2019AV天堂| 五月天人妻综合| 国产捆绑一区| 大色综合网| 三级网站超变态精品| 欧美综合色| 三级精品三级在线观看| 婷婷五月影院| 日日碰视频网| 51久久夜色精品国产麻豆| 欧美视频在线第3页| 日韩少妇在线视频| 亚洲视频中文一区| 久久曰曰| 少妇人妻激情四射| 日韩中文字幕视频| 欧美日日夜夜| 伊人91| av片在线观看免费播放| 综合网97| 蜜乳Av成人片网站| 久久久久久久久久久久久久久乱码| 超碰美国| 91热爆在线| 91 国产丝袜在线播放-百度| 亚洲欧洲无码bt精品合集| 嗯嗯啊中文字幕| 97视频免费在线| 日韩AC| 91 综合 色| 18禁在线视频| 天天色悠悠激情| 97操b| 乱伦熟女区| 国产免费小视频| 中文字幕狠狠玩| 日日夜夜模| 成人自拍三级在线观看| 午夜福利区| 免费中文综合精品| 中出后入| 国模无码一区二区三区在线| 香蕉大久久久| 搡老熟女免费视频| 免费操逼视频下载| 宗合情欲网| 这里只有精品视频在线| 激情网五月天| 天天看,天天做| 国产色精品午夜大片| 中文字幕日韩电影人妻| 日本成人A片免费看| 爱欲AV| 亚洲s在线观看| 伊人97超碰| 久久久久久久少妇| 超碰激情808| 91麻豆天美传媒HD| 亚洲自拍欧美国产首页网曝| 精品人妻一区二区三区夜夜| 欧美精品三区| 99超碰网| 东京热综合久久一区二区| 91色狼| 中文字幕精品亚洲熟女| 99精品九九九九九九| 老汉网| 国产精品第二页| 新视频sss国产| 色偷偷超碰亚洲| 国内毛片四区| 国产v亚洲v日韩v欧美v片另类| 黑人精品XXX一区一二区| 久久超碰国产一区二区三区| 人人干黄色| 91操人| 无码自拍SM| 久久麻豆一区二区| 老女人日韩美91| 国模不卡一本二本三电影| 人人超碰在线观看黄| 久久99精品九九久久久婷婷| 九九人妻| 久久综合97| 美女操逼A A| 日本性爱少妇| 宅男午夜在线视频| 青青草日韩免费观看高清在线| 全国男人天堂网| 97久久综合网| 中文字幕日韩人妻视频| 国产一级片| 中文字幕在线观看AV| 亚洲 欧美 另类 日韩 人妻一区| 欧美精品,四区。五区| 97操碰| 74成人在线| 丁香六月东京热| 91N欧美| 欧亚日韩三区| 久久久涩| 91在线精品| 蜜臀av在线播放一区二区三区| 亚洲综合在线高清| 亚洲天堂一区二区| 中文字幕第9页萱萱影音先锋| 五月婷婷丁香中文字幕| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 国产青视频| 中国一区二区亚洲人妻| 夜夜嗨AV一区天天| B049AV在线播放| 精品久久97| 在线a v| 日韩人体偷拍| 九九免费影片| 夜夜欢天天干| 亚洲午夜av| 国产精品网站www| 久久超碰com| 人人操人人操人人操人人操人人操人人人11.CM | 久欲AV| 亚洲97综| 色吧综合网| 天天日天天屌天天操| 97免费在线观看| 久久性爱网站| 久操视频免费观看| 亚洲 欧美 精品专区 极品| 午夜男人一级A片7777| 天天日天天舔东京热 | 97视频在线视频| 欧美乱伦专区| 女同在线视频一区| 久操频道免费在线呗看| 静品嫩模一区二区| 欧美性五月| 小视频国产| 国产极品999| 国产精品一区二区三区四区五区| 六月色色| 96一区二区三区| 乱伦图一区| 和协影院中文字幕三区| www.色吧5.com| 亚洲天堂自拍| 亚洲黄片免费在线播放| 亚洲精品蜜桃久久久一区二区三区| 亚洲天天自拍| 久久婷色| 欧美97| 后X久久| 久久久久久久唑| 五月天丁香网| 91性感在线| 色逼综合| 韩日精品四区| 久久人妻| 成人老鸭窝人人在线视频| 欧美一区二区福利在线| 天天内射| 亚洲欧美日韩精品久| 久久色AV线| 亚洲AV成人无码久久精品播放| 日韩AV噜噜噜一区二区三区四区 | 亚洲清纯综合| 久久黄黄| 亚洲在线网站| 玖玖爱一区在线| 日va操| 国产区在线| 欧美综合骚| 精品久久久av无码免费| 青青青艹在线视频| 日本精品不卡一二三区| 蜜臀在线视频| 夜夜操一区二区| 秋霞欧美性爰视频| juliaann欧美丝袜办公室| 欧美日韩理论一区| 成年女人黄网站| 国内精品久9| 伊人网av| 欧美性爱免费短视频| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 熟女精品va中文字幕| 99最新日韩偷拍视频| 欧美性爱五月天| 中国和日本人色哪个不下载能放| av操操不卡| 久久成人国产| 精品传媒在线一区| 中文字幕97色| 久久侵犯人妻爽爽爽| 天天操人人操狠狠插| 国产中午字一暮区| 青青操97| 操碰91| 91搞逼视频| 日本ZZ高免费A级视频| 东北女人av| 日本视频在线观看污污污| 日本阿v天堂在线观看| 亚洲欧美一区二区不卡视频播放 | 欧美人妻精品一区二区| 亚洲欧美黄| 亚洲性猛| 一牛一区二区三区久久| 亚洲AV免费在线| 国产成人欧美一区二区三区的国产| 亚洲国产天堂| 97在线青| 国产馆极品诱惑| 久久久久九九九| 黑人精品XXX一区一二区| 超碰偷拍| 男人的亚洲天堂| 精品一区96| 91GD.COM| 丰满高潮18xxxx| 欧美草草高清日韩视频| 国产精品大屁股999| 亚洲色图加勒比| 最新欧洲欧美日本激情网站| 家庭乱伦网站国产| 成年人黄色小视频网站| JIZZJIZZ亚洲女人被躁| 亚洲图片欧美偷拍| 破处bbq| 夜夜福利| 欧美激情久久久久| 中文字幕加勒比海高清无码免费视频| 99热精品在线观看| 国模精品娜娜一二三区| 国产成人久久久精品免费AV| 多毛小伙内射老太婆 | 91亚州| 熟女人妻精品一区二区视频 | 日本色婷婷| 久草网站免费在线观看| A级毛片在线看免费| 九九九999久久久网站| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 又黑又大又粗 | 国产综合色精品在线观看| 啪啪自拍九九综合| 96精品久久| 欧美在线电影| 欧美色综合网| 蜜臀久久99精品久久久久久成人小说 | 九九九九九九亚洲| 天天色悠悠激情| 一本道综合色图| 五月婷婷啪啪| 九九热免费国产视频婷婷伊人| 99免费在线视频| 国产热RE99久久6国产精品首| 乱伦AVxx| 亚洲五月丁香花狠狠干一区二区三区| 亚洲激情av| 色区久久| 97视频网站在线观看| 青草香蕉网| 秋霞一区二区三区四区五区六区七区| 免费人人搞97| 大香蕉欧美国产日韩高潮| 绑缚麻绳人妻寝取完整版| 亚洲欧美91√| 国产精品丝袜在线| 亚洲se91| AV麻豆免费一区| 浪人综合网| 3p国产欧美99热| 色99视频| 亚洲91色在线| 亚洲蜜臀精品视频久久| 久久久久久久9| av三级电影在线播放| 被男人添B超爽视频| 超碰成人公开| 婷婷亚洲天堂| 欧美日韩情色一区二区| 三级网站超变态精品| 99热日| 啊啊啊好大好深| 日韩99精品视频综合区| 国产精品自在自拍视频| 激情五月激情综合网| 久久久9视频| 精品久久久久成人码免| 97资源久久| 欧美一二三级精品在线| 国产精品视频白浆免费| 麻豆国产原创AV色哟哟| 日日嗨AV一区二区夜夜| 人妻天堂网| 天天视频网站黄| 五月婷婷激情网| 久久综合女优| 91天天综合在线| 中文字幕国产在线天堂| 婷婷视频网| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 国产在线综合福利网站| 亚洲午夜福利在线影院| 91亚洲精品青草| 无卡一区=区| jazzjazz国产精品麻豆| 国产强奸乱伦xd| 婷婷激情四射| 中文字幕久久亚州无码| 日本一本一区二区三区四区五区欧美日韩中文字幕| 人妻 欧美 中文| 丝袜美腿操av| 中文字幕AV乱伦| 天天干少妇| 日日爽熟女| 日本操逼视频不卡直接放| 色婷婷丁香五月| 操美女人妻| 久久婷婷电影网| 99久久婷婷| 97超碰总站| 亚洲天堂AV在线播放| 国产suv精品一区二区四区999| 午夜九九| h4610国产人妻| 日日骚 av| 亚洲综合999| 二色av| 国产人人干| 亚洲 欧美日韩 另类| 久久鲁夜| 日韩av在线精品观看| 极品色www影院| 欧美亚洲宗合色性图| 日本操逼aaaaa| 青娱乐导航AV| 91在线免费精品视频| 三级三级三级日本99| 欧美久久人体| 少妇高潮对白在线观看| 国产中文日韩欧美一区二区三区人妻丝袜美腿 | 国内黄色精品| av三级电影在线播放| 久久久九97| 日韩99999| 天天综合91在线| 九久久精| 激情第四色| 97在线视频免费| 鲁鲁色综合网| 欧美牲| 日韩另类色图| 91被操| 97九色人妻| 国产精品久久久吖| 久久一二三四五六七八九区区| 亚洲啪啪视频免费| 久久久久无码一妻区| www.99中文字幕| 久久成人精品| www.色婷婷| 一区二区三区高清| 亚洲另类在线观看| 综合色好色| www老逼91| 国产自制av蜜乳| 欧美 牲| 久久三| 91热色| 国产在线不卡导航| 色哟哟 日韩精品| 玖玖爱一区在线| 成人一二| 欧洲一区二区三区四区在线观看| 欧美疯狂做爰xxxx| 色欲久久99国产精品久久久久久| 91色黑人少妇| 青草青草久热| 欧美碰碰综合色| 嗯嗯嗯嗯啊啊啊好紧好大| 中国一级操逼视频| 欧亚韩国999| 狠狠狠狠狠狠| 97碰碰色| 九九自拍伦理| 久久久精品,3| 亚洲91少妇| 99re公开精品免费视频| 国产中午字一暮区| 七久久久| 亚洲午夜福利在线影院| 综合色欧美| 人人爽夜夜操| 精品日韩中文在线| 日日摸日日碰夜夜爽视频| 美女人妻色网站| av在线免费一区二区| 97啪啪| 国产性爱欧美性爱在线| 亚洲天堂久久| 日韩乱伦影音先锋| 久久99国产精品| 欧美激情片一区二区| 亚洲导航深夜福利| 国产综合色精品在线观看| 劲爆欧美人妖三区91| 韩国女主播青草福利视频| 伊人黄色视频免费观看| 国产60页| a啊啊啊啊啊啊啊啊一区二区| 欧美午夜色妇色鬼| 国产激情视频在线观看| 国产自产一区视频在线| 国产深喉视频一区二区| 欧美丝袜美女电影一二三四区| 亚洲国产剧情少妇激情| 日本免费亚洲欧美| 家庭乱伦国产| 啊啊啊啊在线播放| 97色色国产视频| 日韩有码一区三区| 亚洲国产高清福利视频| 大香蕉久| 亚洲中文字幕熟女| 久久老熟女| 国产夫妻性生活视频| 天美一二三在线观看Av| 男人的天堂亚洲| 亚洲色色色| 日韩一级成人毛片免费观看| 青娱乐国产剧情av一区| 男人的天堂va| av影院十区| 91路www| 欧美猛交黑寡妇中文字幕| 一色网男人的天堂| 麻豆这里只有精品| 国产成年精品高清在线观看91| 亚洲**2021在线观看| 性一级黄色录像片网站导航| 五月天欧美色图| 亚洲中文字幕网| 强奸抽插av| 99操逼| 60秒免费小视频| 亚洲欧美激情另类色图| 日本三级R| 国产亚洲精品农村妇女 | 亚洲色丰满少妇高潮| 天天日日舔舔| 亚洲中文字幕av| 熟女五十路一区二区三| 日本狂喷奶水在线播放212| 家庭乱伦麻豆| 中文字幕蜜乳av| 97这里只有精品| 91天天综合网| 91色香| 秋霞怕怕片| a片 xxxx受爽视频| 久久伊人最新网址视频| 乱伦熟妇一区二区| 亚洲精品一区二区日本| 国产精品视频内谢女人| 欧美不卡在线一区二区| 粉嫩少妇自慰在线| 欧美狠狠操| 久久久久元码视频| 亚洲欧洲激情| 男人的天堂三级| 亚州综合色| 欧美亚洲激情| TS人妖另类精品视频系列| 亚洲国产精品无码AV久久久| 操逼视频色| 黄色片,com| 久久久国产三级黄色片| 操人无码| 国产熟女少妇一区| 国产亚洲欧洲在线观看| 香蕉免费一区二区三区不读| 97热视频在线观看| 91亚洲人| 成人小说另类在线| 中文久久| 秋霞蝌科网日本一区| 婷婷久月| 天堂九九九九九九九九九| 欧洲Au麻豆| 狠狠躁天天躁日日躁| 极品美女嘿咻| 婷婷伊人五月| 日韩一级特黄av毛片| 大香蕉宗合网在线| 亚洲综合图文| 少妇99| 97在线观看免费视频| 岛国黄片网站| 狠狠色噜噜狠狠狠狠狠色综合久久| 五月丁香婷婷啪啪| 天天日日日射| 91草草草| 一起草视频在线| 国模无码人体一区二区三| 色综合久久av| 99操逼| 日本裸体久久色噜噜| 亚洲成人AB| 日韩啊V| 96久久精品一二三区色欲| 67194无码不卡| 熟妇激情| 中文字幕欧美日韩三级| 日韩AV熟女乱伦| 精品久久久中文字幕不| 色九九久九九| 日本性交操一区二区不卡系列| 亚洲最大AV网| 人人搡人人肉久久精品| 久久免费9| 亚洲中文一区二区三区| 中文字幕少妇色| BBBBB97COM| 日韩精品中文字幕人妻| 色吧综合网| 成人熟女区| 亚洲国产成人精品久久久国产成人一区二区 | 亚洲资源网| 久操免费在线| 婷婷五月天激情网| 好屌色综合| 试看日韩黄片| 丝袜美腿欧美| 久久精品国产97欧美精品亚洲| 少妇熟女1区2区3区| 久久秀这里有精品| 欧美日韩不卡传媒| 久久精品国产亚洲AV先锋| 大香蕉啪啪啪| 亚洲久久东京热一二三四五区视频| 国产精品ⅴ无码大片在线看.| 久久久久久性爱免费视频| 在线免费观看日韩一区| 99综合自拍| 懂色aV一区二区天美传媒| 中文字幕av乱伦| 亚洲精品黑丝| 天天操夜夜嗨| 亚洲日韩乱码中文无码蜜桃臀网站 | 99热97| 超碰色97| 欧美后进式| 超碰精品97| 欧美精品久久久久久久久88| 1024手机看片欧美日韩| 亚洲天天在线| 一区二区 韩日AV| 欧美91变态| 五月天综合在线| 久久青青草在线视频| 日本九九九九| 综合色区偷拍| 精品精品精品| 丰满人妻一区二区三区| 丝袜制服字幕在线| 久久久久少妇| 日本少妇va7777| 午夜福利激情在线视频| 欧美色图亚洲色图成人在在线| 一级毛片电影免费看| 日韩97超碰中文字幕| 超碰97丝袜| 亚洲免费日韩在线一区二区| 九九精品99| 久久人妇| 国产三级日产三级韩国三级| 久久久久一本一区二区青青蜜月| 97欧美| 黄片免费日韩| 亚洲欧美国产中文视频| 日韩熟女三十乱伦| 亚洲影视高清三级-草1024榴社区入口-品爱AV| 久久久久亚洲精品| 992这里有精品| 欧美熟妇乱码在线一区| 久久免费99精品久久久久久| 东北女人| 狠狠色狠狠色狠狠五月| 97资源站国产精品| 农村妇女一级二级三级视频| 国语对白露脸XXXXXX| 日本A级视频| 天堂中文日本在线观看| 72av视频| 嗯嗯,啊啊,国产精品| 人人摸.人人色| 精品女同一区| 日日日日日| 人人操人人操人人人操| 少妇色综合| 99在线精品视频| 国产AAAAAABBBBB| 国产精品密臀网在线观看| 国产精品久久久久中文字幕| 欧美少妇高潮| 一区二区三区男女操逼黄色小电影| 欧美性爱无码一区二区三区| 偷偷人人精品女女久久| 久久久草成人网站久久久草成人久久久草久久久 | 秋霞曰韩R级| 最新日本中文字幕| 亚州综合图片| 欧美九九爱| 中文字幕一区二区在线日韩精品| 在线情色电影 91大 | 欧洲综合无码| 四虎在线播放| 不卡超碰护士AV在线免费播放| 在线中文字幕| 友优传媒精品在线一区二区| 久久人人爽爽爽人久久久| 久久人人爽人人爽人人片Ⅴ| 免费视频一二三区| 丝袜视频一区二区在线播放国产中文 | 99热99色| 韩国手机不卡无码三级视频| 校园春色美腿丝袜 | 国产精品夜夜夜| 99精品网| av日韩在线观看电影| 亚洲天堂男人天堂| 欧美成人贴图| 97精品国产手机| 18一区二区三区| 国产在线精品偷| 黄在线| 人人操,人人液| 噜噜瑟| 九九九九97| 青青草黑寡妇男人天堂| 操少妇很爽av| 男男H黄动漫啪啪无遮挡网站| 国产人妖的免费的视频| 欧洲精品一级二级精品综合视频综合| 免费啊啊啊| 九一综合精品视品av| 在线播放中文字幕| 久久久久久AⅤ无码免费肉站 | 91国内外在线| 一区二区三区日韩欧美 | 思思热一热婷婷热一热| 久久久久久久| 欧美偷偷网| 诱惑人妻欧美一区在线播放| 蜜桃臀 后入 一区 二区 三区 在线| 日韩AV一起草| 亚洲精品日日夜夜52| 欧日a| 黄色毛片A片| 韩国一级AAA| 综合免费无码中文| 亚洲春色欧美激情自拍| 久久久久亚洲熟妇熟女| 精品人妻中文字幕高清| 亚洲欧美色图片| 国产日韩久久| 欧美美女视频| 色综91| 中国熟妇| 亚洲毛片基地专区| 嗯嗯不要 视频| 91成人无码| 亚洲精品97| 日本色日夜干| 99人妻碰碰碰久久久久禁片| 久草午夜| 亚洲男人综合| 97无码视频在线播放| 综合av社区| 欧美性爱第一页久久| gogogo免费高清看中国国语| 最新日本中文字幕| 久久性生大片免费观看性| 久久精品店| 精品97久久| 网友自拍第1页| 久久影视二区三区行押| 亚洲色图片区| 在线天堂资源亚洲| 亚洲综合电影| 性夜影院爽黄A爽免费动漫| 日韩欧美午夜一区二区| 色婷婷六月丁香七月婷婷| 狼狼色丁香久久婷婷综合五月| 亚洲成人性| 国产99 中文字幕日韩小视频| 黄片在线免费在线观看| 日本三级久| 亚洲熟女乱色| 大香蕉综合在线| 欧美精品,四区。五区| 欧美姓爱综合网| 蜜臀久久99精品久久久久久| 色婷婷六月丁香七月婷婷| 无码高清操逼网址| 国产福利第一视频| 狠狠操天天干| 麻豆性爱视频在线播放| 欧美大片天天看| 91天美传媒在线| 伊人午夜福利视频| 欧美一级A一级a爱片久久| 熟女激情综合网| 美女操逼福利视频| 国产家庭乱伦网址| www.五月天| 60秒试看最爽10分钟网站|