免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

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

PB03藍(lán)牙5.2二次開(kāi)發(fā)資料:從SDK到GATT與OTA實(shí)戰(zhàn) 簡(jiǎn)介面向使用安信可PB-03藍(lán)牙模塊進(jìn)行二次開(kāi)發(fā)的嵌入式工程師與物聯(lián)網(wǎng)學(xué)習(xí)者這份資料合集圍繞PHY6252低功耗藍(lán)牙SoC展開(kāi)重點(diǎn)解決BLE5.2開(kāi)發(fā)環(huán)境搭建、外設(shè)驅(qū)動(dòng)參考與固件升級(jí)等常見(jiàn)需求。壓縮包共1163個(gè)文件、約66.23MB以C源碼與頭文件為主體輔以Keil工程文件、鏈接腳本、啟動(dòng)匯編、INI配置、批處理腳本及PDF文檔覆蓋從工程配置到編譯燒錄的多個(gè)環(huán)節(jié)并包含串口AT指令、FOTA升級(jí)與低功耗休眠等相關(guān)參考材料。已有2248人學(xué)習(xí)說(shuō)明其在PB-03二次開(kāi)發(fā)人群中具有一定參考價(jià)值。讀者可從中獲取較完整的SDK目錄與示例工程結(jié)構(gòu)借助源碼與配置理解UART、GPIO、ADC、PWM、I2C、SPI等接口的調(diào)用方式對(duì)照文檔和工程文件排查編譯、鏈接與下載問(wèn)題也可為Windows開(kāi)發(fā)環(huán)境下的二次開(kāi)發(fā)與固件遠(yuǎn)程升級(jí)提供直接可用的素材。1. PB03 藍(lán)牙 5.2 二次開(kāi)發(fā)資料一份資料包能省掉哪些摸索手上有一塊 PB03 模組想讓它從「能廣播」走到「能跟自己的 App 收發(fā)自定義數(shù)據(jù)」中間這段路很多人卡過(guò)兩三天不知道 SDK 該從哪個(gè)文件下手廣播包改完手機(jī)掃不到燒錄工具一連上就報(bào)握手失敗。PB03 藍(lán)牙 5.2 二次開(kāi)發(fā)資料這套文檔資料的價(jià)值就在這兒——它把 SDK 工程、硬件設(shè)計(jì)文件、AT 指令手冊(cè)、燒錄工具和幾套可編譯的例程收在一起拿到手就能編譯、能下載、能跟自己的板子對(duì)比差異不是芯片手冊(cè)的中文翻譯版。適合三類(lèi)人第一次碰 BLE 5.2 模組、需要兩周內(nèi)出樣機(jī)的固件工程師要畫(huà)底板、核對(duì)引腳復(fù)用和天線凈空的硬件工程師以及做方案選型、想判斷這顆模組扛不扛得住自己場(chǎng)景的技術(shù)負(fù)責(zé)人。2. 資料包拆解SDK 目錄、協(xié)議棧分層與二次開(kāi)發(fā)的可改邊界二次開(kāi)發(fā)資料包最容易出現(xiàn)的浪費(fèi)是不是「東西不夠」而是「不知道哪份東西該信」。同一個(gè)功能AT 指令手冊(cè)里有一套說(shuō)法例程里又有一套寫(xiě)法SDK 里的宏開(kāi)關(guān)還是第三套。第 2 章先把包里的結(jié)構(gòu)捋清哪些目錄只讀、哪些是主要修改區(qū)域、協(xié)議棧哪一層能改哪一層碰了就麻煩以及硬件那份資料該在什么時(shí)候看。等把邊界劃清楚后面編譯、燒錄、調(diào) GATT 才有參照系不然每改一行代碼都像在賭。2.1 目錄分工哪幾個(gè)文件夾看完就該鎖上PB03 這類(lèi)模組的二次開(kāi)發(fā)包目錄結(jié)構(gòu)基本是固定的幾個(gè)部分區(qū)別只在命名習(xí)慣。我一般拿到包先做一件事ls一遍把每個(gè)目錄歸到「只讀」和「會(huì)改」兩類(lèi)里心里有個(gè)地圖再動(dòng)手。下面這張表是按常見(jiàn)組織方式整理的實(shí)際包里的名字可能差一兩個(gè)字但功能對(duì)應(yīng)得上。目錄常見(jiàn)命名典型內(nèi)容二次開(kāi)發(fā)時(shí)的用途是否修改doc/數(shù)據(jù)手冊(cè)、AT 指令手冊(cè)、天線設(shè)計(jì)指南、功耗實(shí)測(cè)表查引腳定義、指令集、射頻指標(biāo)只讀sdk/協(xié)議棧庫(kù)文件、應(yīng)用層源碼、Keil 工程、鏈接腳本改業(yè)務(wù)邏輯、加自定義服務(wù)主要修改區(qū)域sdk/lib/預(yù)編譯的協(xié)議棧與射頻驅(qū)動(dòng).lib/.a只調(diào)用不反編譯只讀hw/原理圖、PCB 封裝庫(kù)、BOM、匹配網(wǎng)絡(luò)參數(shù)畫(huà)底板、核對(duì)引腳復(fù)用只讀tool/燒錄上位機(jī)、串口助手、固件合并腳本、量產(chǎn)工具下載固件、看日志、批量寫(xiě)參數(shù)只讀example/透?jìng)?、主從一體、HID、OTA 四類(lèi)例程抄配置、對(duì)比差異、當(dāng)回歸基線可改但先備份表里最關(guān)鍵的一行是sdk/lib/。協(xié)議棧以預(yù)編譯庫(kù)的形式給出意味著鏈路層、射頻校準(zhǔn)、跳頻這些邏輯你既看不到也改不了出問(wèn)題只能從應(yīng)用層參數(shù)倒推。這不是資料包偷懶是認(rèn)證和射頻一致性要求的常規(guī)做法。知道自己改不到那一層排查思路就會(huì)變——連不上先懷疑參數(shù)和時(shí)序而不是去翻協(xié)議棧源碼。動(dòng)手的第一步我個(gè)人的習(xí)慣是把sdk/整份復(fù)制一份出來(lái)改個(gè)名字比如sdk_myproj/原始包保持原樣。原因很實(shí)際二次開(kāi)發(fā)過(guò)程中一定會(huì)改宏、改鏈接地址、刪例程改亂了想回退重新解壓一遍是最快的后悔藥。同理example/里的透?jìng)骼探ㄗh單獨(dú)復(fù)制一份當(dāng)「金標(biāo)準(zhǔn)」你自己的工程跑不通時(shí)把它燒進(jìn)去對(duì)比能立刻區(qū)分是硬件問(wèn)題還是代碼問(wèn)題——這個(gè)動(dòng)作在兩塊板子都調(diào)不通的時(shí)候能救命。還要提醒一個(gè)細(xì)節(jié)很多包的doc/里放著兩三個(gè)版本的 AT 指令手冊(cè)文件名只差一個(gè)后綴。別默認(rèn)最新的那份就對(duì)應(yīng)當(dāng)前固件。判斷方法是看手冊(cè)里描述的指令集和你手上模組實(shí)際返回的響應(yīng)是否一致隨手發(fā)一條查詢(xún)指令回什么就知道版本對(duì)不對(duì)得上。這個(gè)核對(duì)只花兩分鐘能省掉后面半小時(shí)的自我懷疑。2.2 協(xié)議棧分層GAP 廣播、GATT 屬性、應(yīng)用回調(diào)各管什么BLE 的分層概念網(wǎng)上一搜一大把但落到「我到底能改哪一行」還是得按這個(gè)資料包的實(shí)際結(jié)構(gòu)重新講一遍。從下往上看控制器層含射頻、鏈路層、跳頻以庫(kù)形式封裝你只通過(guò) API 配置參數(shù)主機(jī)層的 GAP 負(fù)責(zé)廣播、掃描、連接建立GATT 負(fù)責(zé)屬性的組織和讀寫(xiě)再往上是你自己的應(yīng)用邏輯和串口協(xié)議。二次開(kāi)發(fā)里 90% 的工作量集中在 GATT 和 GAP 參數(shù)這兩塊。廣播包內(nèi)容的填充、連接間隔的取值、自定義服務(wù)屬性表的順序、CCCD 的讀寫(xiě)回調(diào)——這些全在應(yīng)用層改起來(lái)不用碰庫(kù)。反過(guò)來(lái)凡是涉及「連接建立之前的射頻行為」和「鏈路穩(wěn)定性」的比如發(fā)射功率、射頻信道、白名單過(guò)濾的底層實(shí)現(xiàn)基本都在庫(kù)里你只能通過(guò)上層參數(shù)間接影響。新手最容易誤改的是啟動(dòng)文件和鏈接腳本。它們長(zhǎng)得像普通源碼里面也確實(shí)有可以改的數(shù)字但改錯(cuò)的表現(xiàn)往往不是編譯報(bào)錯(cuò)而是燒進(jìn)去之后跑飛、或者廣播正常但一連接就復(fù)位。我見(jiàn)過(guò)有人為了省幾 KB 空間去動(dòng)鏈接腳本里的段地址結(jié)果應(yīng)用區(qū)和 OTA 備份區(qū)重疊升級(jí)一次直接變磚。這類(lèi)文件在包里通常放在sdk/project/下面看到.sct、.ld、startup_*.s這種后綴動(dòng)之前先備份改完必須做一次完整的燒錄和連接驗(yàn)證。另一處邊界是中斷優(yōu)先級(jí)。協(xié)議棧對(duì)射頻中斷和定時(shí)器中斷的響應(yīng)時(shí)間有隱含要求應(yīng)用層如果把串口中斷優(yōu)先級(jí)配得比射頻還高重負(fù)載時(shí)會(huì)出現(xiàn)連接間隔抖動(dòng)甚至斷鏈。資料包里的例程一般給了一套可用的優(yōu)先級(jí)配置直接沿用比自己重新分配更穩(wěn)非要改就一次只改一個(gè)改完拿連接穩(wěn)定性壓測(cè)一遍。2.3 工具鏈版本對(duì)齊編譯器和燒錄工具比你想的挑嵌入式資料包最容易被忽略的一句話是「本 SDK 在某某版本下驗(yàn)證通過(guò)」。這句話不是免責(zé)聲明是硬約束。編譯器版本差異會(huì)帶來(lái)兩個(gè)后果一是 C 庫(kù)行為不同導(dǎo)致的隱性問(wèn)題比如某些優(yōu)化等級(jí)下的對(duì)齊訪問(wèn)二是生成的代碼體積變化本來(lái)剛好塞進(jìn)應(yīng)用區(qū)的固件突然超了。具體要核對(duì)三項(xiàng)編譯器主版本、器件支持包、燒錄上位機(jī)版本。前兩項(xiàng)決定能不能編譯出行為一致的固件第三項(xiàng)決定能不能把固件寫(xiě)進(jìn)去。燒錄工具的版本和模組內(nèi)部固件版本之間通常有協(xié)議對(duì)應(yīng)關(guān)系版本差太多會(huì)表現(xiàn)成「能識(shí)別串口但握手失敗」這種報(bào)錯(cuò)信息往往很含糊看著像硬件壞了其實(shí)換個(gè)工具版本就好。串口驅(qū)動(dòng)的坑也值得一提。同一臺(tái)電腦上裝過(guò)多個(gè)串口工具時(shí)虛擬串口偶爾會(huì)被別的軟件占用表現(xiàn)是燒錄工具提示打不開(kāi)端口但設(shè)備管理器里看著一切正常。遇到這種情況先關(guān)掉所有串口助手再試別急著懷疑板子。2.4 硬件資料怎么用天線凈空和電源紋波比原理圖重要hw/目錄里的原理圖很多人掃一眼就跳過(guò)直接照著引腳表畫(huà)底板。真正會(huì)被忽略又最容易出事的是兩塊天線的凈空區(qū)和電源的紋波要求。天線部分資料里一般會(huì)給一個(gè)推薦布局模組天線端到板邊要保持一段無(wú)銅無(wú)走線的凈空底下不走線不鋪銅附近不要放電池和金屬結(jié)構(gòu)件。這段距離具體多少看包里的天線設(shè)計(jì)說(shuō)明但「凈空」這件事必須當(dāng)真。我踩過(guò)一次底板為了塞結(jié)構(gòu)把電池挪到天線正下方傳導(dǎo)測(cè)試一切正常實(shí)際通信距離掉了一大半查了兩天才定位到。電源部分BLE 模組在廣播瞬間有脈沖電流LDO 選型偏小或者去耦電容離得太遠(yuǎn)會(huì)出現(xiàn)「空閑正常、一廣播就復(fù)位」。資料里的參考設(shè)計(jì)給了電容位置和容值照著抄就行別自己優(yōu)化。表里這幾個(gè)點(diǎn)硬件階段確認(rèn)一次能省掉固件階段一半的玄學(xué)問(wèn)題。檢查項(xiàng)資料里看哪硬件階段怎么驗(yàn)天線凈空天線設(shè)計(jì)指南目視 卡尺凈空區(qū)內(nèi)無(wú)銅無(wú)器件匹配網(wǎng)絡(luò)原理圖匹配電路按參考值貼不自行改容感值電源去耦參考設(shè)計(jì)布局電容靠近模組電源腳地平面完整復(fù)位與啟動(dòng)腳引腳定義表上電時(shí)序符合要求不懸空調(diào)試串口引腳復(fù)用表留出測(cè)試點(diǎn)方便抓日志3. 跑通第一個(gè)工程宏配置、命令行編譯與燒錄驗(yàn)證把資料包里的例程編譯通過(guò)、燒進(jìn)去、手機(jī)能掃到這三步做完心里才算有底。這章按順序走一遍先在 IDE 里改對(duì)幾個(gè)關(guān)鍵宏再用命令行把編譯過(guò)程腳本化后面接自動(dòng)化構(gòu)建也方便然后校驗(yàn)固件尺寸別越界最后燒錄并驗(yàn)證廣播。每一步都給出判斷標(biāo)準(zhǔn)做完能明確知道「這一步過(guò)了」。3.1 打開(kāi)工程先改三個(gè)宏別急著編譯第一次打開(kāi) Keil 工程不要直接點(diǎn)編譯。先找工程配置里的預(yù)定義宏通常在Options for Target的 C/C 頁(yè)確認(rèn)三個(gè)方向上的開(kāi)關(guān)日志輸出、休眠使能、設(shè)備名與地址來(lái)源。日志開(kāi)關(guān)決定你能不能看到串口打印。出廠狀態(tài)的例程有時(shí)為了省電把日志全關(guān)了燒進(jìn)去串口一片安靜你會(huì)以為程序沒(méi)跑起來(lái)實(shí)際上是沒(méi)打印。調(diào)試階段先打開(kāi)功能驗(yàn)證完再關(guān)掉關(guān)掉之前記得測(cè)一次功耗因?yàn)槿罩颈旧砗芎碾?。休眠使能決定空閑時(shí)會(huì)不會(huì)進(jìn)低功耗。帶休眠調(diào)試連接問(wèn)題很痛苦因?yàn)閱拘研枰獣r(shí)間某些時(shí)序會(huì)被拉長(zhǎng)。我一般調(diào)試期先關(guān)休眠等連接穩(wěn)定了再打開(kāi)專(zhuān)門(mén)測(cè)一輪。設(shè)備名和地址來(lái)源這一項(xiàng)很多 SDK 用宏來(lái)控制是「用芯片內(nèi)部地址」還是「用代碼里寫(xiě)死的地址」。如果兩片模組廣播出來(lái)名字和地址完全一樣手機(jī)端會(huì)出現(xiàn)只能連上一片的情況看著像連接問(wèn)題其實(shí)是配置重復(fù)。/* 這幾個(gè)開(kāi)關(guān)通常定義在工程宏或 board_cfg.h 里名字隨 SDK 有差異 */ #define CFG_LOG_EN 1 /* 調(diào)試期開(kāi)量產(chǎn)關(guān)關(guān)掉能省下幾 mA */ #define CFG_SLEEP_EN 0 /* 調(diào)試期關(guān)穩(wěn)定后再開(kāi) */ #define CFG_USE_CHIP_MAC 1 /* 1用芯片唯一地址0用下面寫(xiě)死的地址 */ #define CFG_DEV_NAME PB03-DEV /* 廣播里的設(shè)備名長(zhǎng)度計(jì)入廣播包 */ #define CFG_UART_BAUD 115200 /* 調(diào)試串口波特率和上位機(jī)保持一致 */這段配置不需要解釋太多重點(diǎn)是養(yǎng)成「先確認(rèn)再編譯」的順序。血淚經(jīng)驗(yàn)是改代碼之前先確認(rèn)宏改完之后記錄改了什么否則三五天后自己都不記得當(dāng)初為什么把這行設(shè)成 0。3.2 命令行編譯把錯(cuò)誤從日志里撈出來(lái)IDE 里點(diǎn)編譯適合調(diào)試但只要開(kāi)始多人協(xié)作或者想把構(gòu)建掛到自動(dòng)流程里命令行編譯就必須能跑通。資料包里的工程是標(biāo)準(zhǔn) Keil 工程可以用它的命令行模式批量編譯。#!/usr/bin/env bash # 一鍵編譯并提取關(guān)鍵信息適合本地快速驗(yàn)證或掛到構(gòu)建機(jī) set -euo pipefail KEIL_BIN/c/Keil_v5/UV4/UV4.exe # 按本機(jī)安裝路徑改注意 Windows 路徑在 bash 下的寫(xiě)法 PROJsdk_myproj/project/pb03_app.uvprojx # 工程文件相對(duì)路徑要先 cd 到倉(cāng)庫(kù)根目錄 LOGbuild/compile_$(date %Y%m%d_%H%M%S).log mkdir -p build build_log # -b 批量編譯(不彈窗) -j0 抑制對(duì)話框 -o 輸出完整日志 $KEIL_BIN -b $PROJ -j0 -o $LOG || true # Keil 的進(jìn)程返回碼不區(qū)分警告和錯(cuò)誤掃日志比看返回碼可靠 echo ---- 錯(cuò)誤與告警 ---- grep -nE error:|Error:|Warning: $LOG | tail -n 30 || echo 無(wú)錯(cuò)誤 echo ---- 代碼體積 ---- grep -nE Program Size|Total RO|Total RW $LOG | tail -n 8 || true幾處說(shuō)明。-b是批處理編譯模式不彈界面適合腳本調(diào)用-j0用來(lái)抑制可能出現(xiàn)的模態(tài)對(duì)話框不然在無(wú)人值守的構(gòu)建機(jī)上會(huì)卡住等點(diǎn)擊-o把完整日志落盤(pán)這是排查的關(guān)鍵——IDE 窗口里滾過(guò)去的告警往往被忽略落盤(pán)之后grep一遍才發(fā)現(xiàn)有「隱式聲明」這類(lèi)會(huì)埋雷的告警。|| true是有意加的。Keil 命令行在某些版本下即使編譯成功也返回非零碼直接set -e會(huì)把腳本中斷在成功的那一步。真正判斷成敗看日志里的error:計(jì)數(shù)這也是為什么腳本里要單獨(dú) grep 一遍。如果編譯報(bào)的是「找不到某個(gè)頭文件」九成是工程里的相對(duì)路徑和你移動(dòng)目錄之后的實(shí)際位置對(duì)不上。解決辦法不是改代碼里的#include而是回到工程配置的 Include Paths 里修路徑這樣所有引用同一處配置的源文件都能一起好。3.3 固件尺寸校驗(yàn)別讓?xiě)?yīng)用區(qū)越界這一步很多人省略直到 OTA 升級(jí)失敗才發(fā)現(xiàn)固件的末尾壓到了備份區(qū)。做二次開(kāi)發(fā)尤其是加了自定義服務(wù)和日志之后代碼體積是會(huì)長(zhǎng)的靠肉眼判斷不靠譜寫(xiě)個(gè)腳本卡住更穩(wěn)妥。#!/usr/bin/env python3 按分區(qū)表校驗(yàn)編譯產(chǎn)物是否越過(guò)應(yīng)用區(qū)上限防止燒進(jìn)去跑飛或 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ù)記錄其余類(lèi)型不影響地址占用 top max(top, addr length) elif rectype 0x04: # 0x04 擴(kuò)展線性地址高 16 位要左移拼接 # 這里只做上限判斷遇到擴(kuò)展地址記錄時(shí)把高位記下來(lái)即可 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ù)只有一個(gè)APP_LIMIT它的值必須來(lái)自你自己的分區(qū)表不是隨便寫(xiě)的常數(shù)。腳本里的rectype 0x00判斷的是數(shù)據(jù)記錄只有這一類(lèi)才真正占用 Flash 地址0x04那條分支是留給你擴(kuò)展高位的如果固件地址超過(guò) 64KB 就必須補(bǔ)全否則算出來(lái)的上限會(huì)偏小反而誤報(bào)。把這個(gè)腳本掛到編譯之后跑一次返回非零就中斷構(gòu)建。養(yǎng)成習(xí)慣之后加功能時(shí)會(huì)不自覺(jué)地關(guān)注體積增長(zhǎng)比事后救火強(qiáng)。3.4 燒錄與上電驗(yàn)證兩個(gè)判斷標(biāo)準(zhǔn)燒錄一般有兩條路串口 ISP 和調(diào)試器。串口 ISP 需要把啟動(dòng)腳拉到指定電平再上電讓芯片進(jìn)下載模式調(diào)試器則是直接連 SWD 口能順帶在線調(diào)試。第一次建議用調(diào)試器出問(wèn)題能看到芯片有沒(méi)有起來(lái)量產(chǎn)和維護(hù)用串口不依賴(lài)調(diào)試器。燒完之后的驗(yàn)證分兩步。第一步看串口日志上電后有沒(méi)有打印啟動(dòng)信息初始化到哪一步有沒(méi)有報(bào)錯(cuò)。日志停在哪一行問(wèn)題就在那附近。第二步用手機(jī)端的通用 BLE 調(diào)試 App 掃描看能不能掃到設(shè)備名信號(hào)強(qiáng)度是否正常服務(wù)列表里有沒(méi)有你預(yù)期的 UUID。判斷標(biāo)準(zhǔn)要具體能掃到但連不上問(wèn)題在連接參數(shù)或配對(duì)配置能連上但服務(wù)列表是空的問(wèn)題在屬性表注冊(cè)順序掃都掃不到先查廣播使能有沒(méi)有調(diào)用再查天線。這三條分清楚排查就不會(huì)亂撞。4. 自定義 GATT 服務(wù)廣播數(shù)據(jù)、屬性表與連接參數(shù)例程能跑通只是起點(diǎn)真正落地時(shí)一定要加自己的服務(wù)和特征值。這章講三件事廣播包 31 字節(jié)怎么分配、屬性表怎么注冊(cè)出一個(gè)最小可用的自定義服務(wù)、連接參數(shù)和 MTU 怎么先測(cè)再定。最后補(bǔ)一段低功耗配置因?yàn)楹芏囗?xiàng)目死在「功能都對(duì)功耗超標(biāo)」這一步。4.1 廣播包與掃描響應(yīng)31 字節(jié)怎么分配傳統(tǒng)廣播包上限 31 字節(jié)每一段都由「1 字節(jié)長(zhǎng)度 1 字節(jié)類(lèi)型 內(nèi)容」組成長(zhǎng)度字節(jié)不包含它自己。BLE 5.2 支持?jǐn)U展廣播可以超過(guò) 31 字節(jié)但手機(jī)端的兼容性和模組側(cè)的支持度都不統(tǒng)一實(shí)際項(xiàng)目里我一般還是按 31 字節(jié)來(lái)規(guī)劃把廠商自定義數(shù)據(jù)放到掃描響應(yīng)里。/* 廣播數(shù)據(jù)長(zhǎng)度字節(jié) 1(類(lèi)型) 內(nèi)容長(zhǎng)度 */ static uint8_t adv_payload[] { 0x02, 0x01, 0x06, /* Flags通用可發(fā)現(xiàn)不支持 BR/EDR */ 0x05, 0x09, P, B, 0, 3, /* 0x09 完整設(shè)備名長(zhǎng)度 14 */ 0x03, 0x03, 0x0F, 0x18, /* 0x03 完整 16bit UUID 列表 */ }; /* 掃描響應(yīng)單獨(dú)一包也限 31 字節(jié)廠商自定義字段放這里更寬松 */ static uint8_t scan_rsp[] { 0x06, 0xFF, 0x34, 0x12, 0x01, 0x02, /* 0xFF 廠商自定義前兩字節(jié)是廠商 ID(小端) */ }; /* 使能廣播函數(shù)名以實(shí)際 SDK 為準(zhǔn) */ ble_gap_adv_start(adv_payload, sizeof(adv_payload), scan_rsp, sizeof(scan_rsp), 100 /* 廣播間隔 ms100~500 之間按需取 */);最容易錯(cuò)的地方是長(zhǎng)度字節(jié)。比如設(shè)備名是 4 個(gè)字符那么長(zhǎng)度應(yīng)該是 5類(lèi)型 1 字節(jié) 名字 4 字節(jié)寫(xiě)成 4 會(huì)把名字最后一個(gè)字符吃掉手機(jī)端顯示成三個(gè)字母看著像編碼問(wèn)題。加一段內(nèi)容就重新數(shù)一遍別憑感覺(jué)。廣播間隔這個(gè)參數(shù)要權(quán)衡調(diào)小被發(fā)現(xiàn)更快但平均功耗直線上升調(diào)到 500 ms 以上某些手機(jī)的掃描窗口覆蓋不到會(huì)表現(xiàn)為「偶爾能掃到」。100~300 ms 是常見(jiàn)的起步區(qū)間。4.2 屬性表注冊(cè)一個(gè)自定義服務(wù)的最小閉環(huán)GATT 服務(wù)在代碼里就是一張屬性表表項(xiàng)順序決定 handle 順序handle 又是客戶(hù)端讀寫(xiě)的尋址依據(jù)。所以順序不能亂中間也不能插空項(xiàng)。一個(gè)能讀、能開(kāi)通知的最小服務(wù)需要四項(xiàng)服務(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. 特征值聲明屬性位決定客戶(hù)端能不能開(kāi)通知這里給讀通知 */ { .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é)果對(duì)齊別寫(xiě)成 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客戶(hù)端寫(xiě) 0x0001 開(kāi)通知0x0000 關(guān) */ { .type ATT_TYPE_CCCD, .perm ATT_PERM_READ | ATT_PERM_WRITE, .value { .buf user_cccd, .len 2 } }, }; /* 寫(xiě)回調(diào)里按 handle 分派handle 用注冊(cè)后的返回值別寫(xiě)死數(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); /* 開(kāi)/關(guān)通知 */ } else if (handle user_val_handle) { /* 業(yè)務(wù)數(shù)據(jù)處理注意 len 可能小于 max_len */ handle_user_cmd(data, len); } }三處說(shuō)明。max_len 20對(duì)應(yīng)默認(rèn) MTU 23 減去 3 字節(jié)協(xié)議開(kāi)銷(xiāo)如果后面協(xié)商到更大 MTU這個(gè)值要同步放開(kāi)但在沒(méi)協(xié)商之前設(shè)太大只是白占 RAM。CCCD 必須占一個(gè)獨(dú)立表項(xiàng)漏了它客戶(hù)端開(kāi)不了通知表現(xiàn)是「訂閱了但收不到數(shù)據(jù)」。回調(diào)里判斷 handle 一定要用注冊(cè)后返回的變量寫(xiě)死數(shù)字在后期插入新服務(wù)時(shí)必然錯(cuò)位而且錯(cuò)位之后的行為很詭異——寫(xiě) A 特征值卻觸發(fā)了 B 的邏輯。注冊(cè)完之后手機(jī)端能看到服務(wù)但點(diǎn)開(kāi)可能是空的。這種情況先確認(rèn)屬性表里的 UUID 字節(jié)序128 位 UUID 在內(nèi)存里通常按小端倒序存放寫(xiě)反了客戶(hù)端解析出的 UUID 和你以為的不一樣服務(wù)會(huì)被當(dāng)成未知服務(wù)折疊起來(lái)。4.3 連接參數(shù)與 MTU先測(cè)再定別抄別人的數(shù)連接參數(shù)直接決定吞吐、延遲和功耗三者互相牽制。參數(shù)沒(méi)有通用最優(yōu)值只能按場(chǎng)景定。先把幾個(gè)參數(shù)的物理含義和邊界搞清楚再用實(shí)測(cè)收斂。參數(shù)常見(jiàn)取值影響注意廣播間隔100~500 ms被發(fā)現(xiàn)速度、平均功耗低于 100 ms 收益不明顯功耗接近翻倍最小連接間隔15~30 ms吞吐、響應(yīng)延遲部分手機(jī)端會(huì)向上收斂到它認(rèn)可的粒度從機(jī)延遲0~4空閑時(shí)省電設(shè)太大配合小間隔寫(xiě)操作容易超時(shí)監(jiān)督超時(shí)2~6 s斷鏈判定速度必須大于 (1延遲) × 間隔 × 2否則頻繁誤判斷鏈MTU23 或 247單包有效負(fù)載默認(rèn) 23即 20 字節(jié)協(xié)商后按實(shí)際值算調(diào)試連接問(wèn)題光看手機(jī)界面不夠得把空中抓到的廣播和連接行為拆開(kāi)看。下面這段腳本用來(lái)解析抓包工具或串口導(dǎo)出的廣播十六進(jìn)制串檢查 AD 結(jié)構(gòu)是否合法、有沒(méi)有超長(zhǎng)。#!/usr/bin/env python3 把廣播原始 hex 逐條拆成 AD 結(jié)構(gòu)定位長(zhǎng)度寫(xiě)錯(cuò)或類(lèi)型寫(xiě)錯(cuò)的那一段。 def parse_adv(hexstr: str) - None: data bytes.fromhex(hexstr.replace( , ).replace(\n, )) if len(data) 31: print(f[警告] 長(zhǎng)度 {len(data)} 超過(guò)傳統(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[錯(cuò)誤] 偏移 {i} 處長(zhǎng)度 {ln} 越界包被截?cái)? 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 粘進(jìn)來(lái)空格可有可無(wú) parse_adv(02 01 06 05 09 50 42 30 33 03 03 0F 18)i ln 1是核心跳過(guò)一個(gè)長(zhǎng)度字節(jié)加 ln 個(gè)字節(jié)的內(nèi)容。ln 0提前退出是因?yàn)閺V播包尾部常用零填充。這段腳本不依賴(lài)任何第三方庫(kù)抓包工具導(dǎo)出的數(shù)據(jù)直接粘貼就能用定位「名字少了最后一個(gè)字母」「UUID 類(lèi)型寫(xiě)成 0x02」這類(lèi)問(wèn)題比肉眼數(shù)快得多。MTU 協(xié)商的結(jié)果要在連接建立后主動(dòng)打印一次。有些平臺(tái)默認(rèn)不協(xié)商你以為能發(fā) 200 字節(jié)實(shí)際每包只發(fā)出去 20 字節(jié)剩余全被截?cái)啾憩F(xiàn)是「指令發(fā)一半設(shè)備不響應(yīng)」。日志里加上協(xié)商前后的 MTU 值這個(gè)問(wèn)題一眼就能看出來(lái)。4.4 低功耗休眠、GPIO 與廣播間隔的取舍功耗超標(biāo)是二次開(kāi)發(fā)里最典型的翻車(chē)點(diǎn)。規(guī)格書(shū)上的數(shù)字通常是「僅射頻MCU 廣播」的理想值你板子上多一個(gè)上拉電阻、多一路常開(kāi)的串口數(shù)字就完全不一樣。第一件事是確認(rèn)休眠真的進(jìn)去了。很多 SDK 有休眠前后的鉤子函數(shù)在里面翻轉(zhuǎn)一個(gè) GPIO用示波器看這個(gè)腳的占空比就知道實(shí)際醒著多久。比看電流平均值直觀得多。第二件事是 GPIO 狀態(tài)。休眠時(shí)懸空的輸入腳會(huì)因電平不確定產(chǎn)生漏電上拉電阻在外部有下拉時(shí)會(huì)持續(xù)耗流。原則是不用的腳配置成模擬或下拉輸出外部上拉能省則省能加大阻值就加大。第三件事是外設(shè)時(shí)鐘。串口、定時(shí)器、ADC 在休眠前該關(guān)的關(guān)掉尤其是串口——調(diào)試完忘記關(guān)一晚掉幾百微安很常見(jiàn)。廣播間隔的調(diào)整放在最后先把漏電堵住再談間隔否則你怎么調(diào)間隔都對(duì)不上規(guī)格書(shū)。5. 常見(jiàn)問(wèn)題排查燒錄、連接、功耗的五條踩坑記錄有些坑幾乎每個(gè)項(xiàng)目都會(huì)踩一遍寫(xiě)在這里省得重復(fù)試錯(cuò)。下面五條都按「現(xiàn)象 → 原因 → 解決」組織遇到相似癥狀可以直接對(duì)照。需要強(qiáng)調(diào)一點(diǎn)BLE 調(diào)試最忌諱同時(shí)改多個(gè)變量一次只改一處改完立刻驗(yàn)證否則問(wèn)題解決了你也不知道是哪一步生效的。5.1 燒錄報(bào)握手失敗換線換板都沒(méi)用現(xiàn)象燒錄工具能識(shí)別到串口點(diǎn)開(kāi)始后幾秒提示握手失敗或超時(shí)換 USB 線、換板子癥狀一樣。原因多半是沒(méi)進(jìn)下載模式。串口 ISP 需要在復(fù)位釋放的瞬間采樣啟動(dòng)腳電平手動(dòng)按鍵的時(shí)序經(jīng)常對(duì)不上另一種可能是燒錄工具版本與模組內(nèi)部固件版本不匹配協(xié)議對(duì)不上同樣表現(xiàn)為握手失敗。解決先改成調(diào)試器燒錄排除時(shí)序問(wèn)題確認(rèn)固件本身沒(méi)問(wèn)題如果只能用串口用工具里的「自動(dòng)進(jìn)入下載模式」選項(xiàng)讓工具通過(guò) DTR/RTS 控制復(fù)位和啟動(dòng)腳別手動(dòng)按。工具版本按資料包tool/目錄里配套的那份用不要用電腦上殘留的舊版。5.2 廣播數(shù)據(jù)改了手機(jī)掃到的還是舊名字現(xiàn)象代碼里改了設(shè)備名并重新編譯燒錄手機(jī)端掃出來(lái)還是原來(lái)那個(gè)名字換一臺(tái)手機(jī)也一樣。原因緩存。手機(jī)端對(duì)已配對(duì)或曾掃描到的設(shè)備會(huì)緩存 GATT 和廣播信息Android 側(cè)尤其明顯另一種情況是編譯產(chǎn)物沒(méi)真正燒進(jìn)去燒錄的是舊 hex。解決先在手機(jī)藍(lán)牙設(shè)置里刪除該設(shè)備記錄或在調(diào)試 App 里清緩存再掃同時(shí)核對(duì)燒錄日志里的固件時(shí)間和大小確認(rèn)燒的是新產(chǎn)物。判斷是不是緩存最直接的辦法是換一臺(tái)從沒(méi)掃過(guò)這個(gè)設(shè)備的手機(jī)。5.3 能連上幾秒鐘后自動(dòng)斷開(kāi)現(xiàn)象連接建立成功服務(wù)也能看到三五秒后連接斷開(kāi)反復(fù)重連。原因監(jiān)督超時(shí)配置不合理最常見(jiàn)。監(jiān)督超時(shí)必須大于 (1 從機(jī)延遲) × 連接間隔 × 2如果從機(jī)延遲設(shè)成 4、間隔 30 ms超時(shí)至少要 300 ms 以上配成 200 ms 就會(huì)周期性誤判斷鏈。其次是應(yīng)用層在連接回調(diào)里做了耗時(shí)操作阻塞了協(xié)議棧的事件處理。解決先把從機(jī)延遲改成 0、監(jiān)督超時(shí)放大到 4 s 驗(yàn)證連接是否穩(wěn)定穩(wěn)定后逐步往回調(diào)找到臨界點(diǎn)再留一倍余量?;卣{(diào)里不要做 Flash 擦寫(xiě)、不要長(zhǎng)延時(shí)重活丟到主循環(huán)里做。5.4 功耗比規(guī)格書(shū)高一個(gè)數(shù)量級(jí)現(xiàn)象休眠電流實(shí)測(cè)幾百微安規(guī)格書(shū)寫(xiě)的是個(gè)位數(shù)微安。原因串口沒(méi)關(guān)、GPIO 懸空漏電、調(diào)試日志沒(méi)關(guān)、外部上拉電阻常供這四樣占了絕大多數(shù)。日志這一項(xiàng)最隱蔽因?yàn)楣δ苌贤耆?。解決按順序排查——先關(guān)日志測(cè)一次再關(guān)串口測(cè)一次再把所有未用 GPIO 配成模擬態(tài)測(cè)一次。每關(guān)一項(xiàng)測(cè)一次電流變化最大的那項(xiàng)就是主因。用 GPIO 翻轉(zhuǎn)配合示波器看喚醒占空比比盯著萬(wàn)用表數(shù)字猜有效。5.5 AT 固件和 SDK 固件混著燒功能莫名其妙現(xiàn)象按 SDK 例程燒完串口發(fā) AT 指令沒(méi)反應(yīng)或者刷回 AT 固件后自定義服務(wù)消失但廣播名還是自己改的那個(gè)。原因AT 固件和 SDK 固件是兩套完全不同的應(yīng)用共用同一塊 Flash 但入口和分區(qū)不同?;鞜笈渲脜^(qū)殘留舊參數(shù)表現(xiàn)就是「一半新一半舊」。解決切換固件類(lèi)型前先做一次全片擦除別只擦應(yīng)用區(qū)。切換完成后用默認(rèn)配置跑一遍基礎(chǔ)功能確認(rèn)干凈了再燒自己的業(yè)務(wù)固件。產(chǎn)線上尤其要注意返修板子回爐時(shí)先擦再寫(xiě)。6. OTA 與產(chǎn)線固化把「能跑」變成「能出廠」樣機(jī)能跑通和能出廠之間隔著 OTA 和參數(shù)固化兩件事。這兩塊資料包里不一定有現(xiàn)成腳本但基于里面的例程補(bǔ)起來(lái)不難。OTA 的核心是分區(qū)。常見(jiàn)做法是應(yīng)用區(qū) 備份區(qū)雙 bank新固件先整包寫(xiě)進(jìn)備份區(qū)校驗(yàn)通過(guò)后把啟動(dòng)標(biāo)志指過(guò)去重啟由 bootloader 搬運(yùn)或直接跳轉(zhuǎn)。判斷 OTA 是否可靠別只看「升級(jí)成功」這一條要專(zhuān)門(mén)測(cè)三個(gè)場(chǎng)景升級(jí)過(guò)程中斷電、升級(jí)包被截?cái)?、降?jí)回滾。斷電測(cè)試最容易被跳過(guò)但它恰恰是現(xiàn)場(chǎng)最容易發(fā)生的——用戶(hù)在升級(jí)時(shí)鎖屏走了。/* OTA 狀態(tài)機(jī)的最小實(shí)現(xiàn)關(guān)鍵是每一步都落標(biāo)志位掉電后可恢復(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. 先寫(xiě)備份區(qū)絕不直接覆蓋運(yùn)行區(qū) */ if (flash_write(OTA_BAK_ADDR offset, data, len) ! 0) { ota_set_state(OTA_FAIL); /* 寫(xiě)失敗立刻標(biāo)記下次上電重來(lái) */ return; } /* 2. 每包寫(xiě)完更新進(jìn)度標(biāo)志掉電后從標(biāo)志處續(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 校驗(yàn)通過(guò)才允許切啟動(dòng)標(biāo)志 */ if (crc32_check(OTA_BAK_ADDR, total_len) 0) { ota_set_state(OTA_READY); ota_commit_boot_flag(); /* 這一步之后才真正生效 */ } else { ota_set_state(OTA_FAIL); /* 校驗(yàn)失敗保留舊固件不切標(biāo)志 */ } }這段代碼的重點(diǎn)不在語(yǔ)法在順序先寫(xiě)備份區(qū)、再校驗(yàn)、最后切標(biāo)志。把切標(biāo)志放到校驗(yàn)之前一次傳輸錯(cuò)誤就能讓設(shè)備變磚現(xiàn)場(chǎng)只能返修。進(jìn)度標(biāo)志要落在獨(dú)立的配置區(qū)別和固件放一起否則搬運(yùn)固件時(shí)會(huì)一起被擦掉。產(chǎn)線固化是另一件事。每臺(tái)設(shè)備需要寫(xiě)入唯一的 MAC、設(shè)備名、校準(zhǔn)參數(shù)和密鑰這些不該靠改代碼重新編譯。常規(guī)做法是在 Flash 里劃一小塊參數(shù)區(qū)產(chǎn)線工具通過(guò)串口指令寫(xiě)入應(yīng)用啟動(dòng)時(shí)讀取。參數(shù)區(qū)要帶版本號(hào)和 CRC升級(jí)固件后參數(shù)仍然有效參數(shù)格式變了則按版本號(hào)做兼容遷移。驗(yàn)證方法我一般分三層單機(jī)功能回歸廣播、連接、讀寫(xiě)、通知四項(xiàng)走一遍、異常注入斷電、斷鏈、超長(zhǎng)包、錯(cuò) CRC、小批量老化十幾臺(tái)連續(xù)跑 24 小時(shí)統(tǒng)計(jì)斷鏈次數(shù)和電流波動(dòng)。三層都過(guò)才敢說(shuō)這批固件能出廠。從那以后我每次改完固件都強(qiáng)制走一遍「擦全片 → 燒固件 → 斷電重啟 → 手機(jī)端刪緩存重掃」這四步不管改動(dòng)多小。省下的那兩分鐘往往要用兩天去找回來(lái)。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久狠色噜噜狠狠狠狠97| 99热日本| 九九99热精品| 久久曰曰| 天天激情欧美美女| 这里只有国产精品在线| 日本三级韩三级99久久| 婷婷色色欧美| 丁香婷婷五月天色播| 92久久久| 中文成人在线| 大香蕉啪啪| 日日操夜夜爽天天天| 国产三级在线播放| 天天干在线播放| 六月丁香婷婷综合狠狠爱夜夜爱| 亚洲色激情| 久久综合婷婷| 国产五月天婷婷| www.99热这里精品| 亚州性爱99| 插逼综合网| 六月丁花香啪啪激情欧美| 5月婷婷6月六月丁香| 思思色播| 九九色图| 久青操| 无码激情AAAAA片-区区| 五月天婷婷色| 91中文在线| 色婷婷狠狠18| 六月丁香五月天| 深爱五月天婷综合| 久久五月天激情婷婷| 婷婷综合九月| 99热一本久道| 曰韩五月丁香色婷婷无码| 色吧五月婷婷| 中美日韩成人在线| 色婷婷超碰| 五月天婷爱综合| 99热大全在线观看| 9九热视频| 色婷婷四色| 婷婷五月花| 9色在线| 五月婷婷色激情| 久久er九九| 国产精品国产| 黄色五月婷婷| 色情五月天视频网| 99热99成人| 婷婷亚洲天堂| 超碰免费在线| 国产亚洲在线| 少妇性按摩无码中文A片 | 九九亚洲视频| 风流少妇A片一区二区蜜桃 | 色综合久久88色综合天天人守婷| 婷婷色香六月综合激情| 五月天性色| 天天爽天天爽天天爽天天爽天天爽| 日本婷婷在线| 九九视频网| 六月丁香开心婷婷欧美| 91九色欧美| 大香婷婷| 91成人品| 7月婷婷六月丁香| 超碰人人干| 久99久热| 五月天六月丁香| 九九激情网| 久99久在线| 亚洲成人中心| 色五月婷婷久久| 丁香啪啪| 北京熟妇搡BBBB搡BBBB| 五月丁香六月片| 婷婷丁香九色| 六月丁香六月婷婷欧美| 久操大| 久久精品五月天| 亚洲性爱电影| 丁香六月婷婷综合麻豆| 开心五月丁香婷婷| 狠狠干在线| 97人人操| www.婷婷| 69人人操人人爽| 国产高潮白浆一区二区| 99九九综合久久九九| 在线视频另类| 思思久久精品视频| 天天激情站| 综合婷婷五月天| 97在线刺激| 日韩成人免费电影| 五月社区婷婷激情| 夜夜谢天天干| 五月丁香综合激情| 五月色激情综合网| 天天天久久久| 日本色色色| 伊人网啪啪| 色色五月丁香婷婷| www.金莲av| 变天就操逼婷婷五月| 久热99热| 婷婷之六月丁香| 婷婷激情小说| 欧美久热| 国产精品岛国片在线观看免费| 五月婷婷,狠狠操| 久久66er久久| 婷婷五月在线观看| 日本精品久久久久中文字幕| 色天堂97| 色噜综| 婷婷色六月| 思思久久精品| 亚州激情九月| 97在线天堂| 先锋资源婷婷| 99爱无码| 成人国产综合| 五月色婷婷夜色| 大香蕉婷婷色| 狠狠色噜噜狠狠狠狠综合| 99热综合| 亚州综合色| 99热99ai| www色色色com| 免费亚洲成人电影AV| 久久视网36| 婷婷六月伊人| 亚洲欧洲中文日韩久久AV乱码| 99九九热播在线免费视频| 色九月婷婷综合| 99色6爱9热| 拳交大逼| 九九XX视频| 婷婷五月大香蕉| 人人干AV| 国产69久久久欧美黑人A片| 九九九九中文字幕| 美腿丝袜AV天堂网| 中文网av| 欧美性生交A片免费看| 丁乡久久| 天天爱天天操| 91人人爽人人操| 丁香激情五月综合网| 丁香六月激情综合| 日韩欧美婷婷丁| 色婷婷五月天激情久久| 五月天丁香网站| 久久综合香蕉国产国产蜜臀AV| 久久久妻人人人| 丁香婷婷色色| 狠狠色五月| 五月婷婷开心六月激情小说| 中文字幕日产A片在线看| 五月婷婷黄色毛片| 亭亭五月色男人| 99这里有精品视频| 五月天激情综合首页| 五月天丁香| 久久免费少妇高潮99精品| 久久久人妻久久久| 强伦轩人妻一区二区电影| 六月合五月婷| 大大香蕉综合在线| 婷婷丁香五月高清| 东北黄色一级| 9热在线观看| 青吴乐视频| 免费日韩99| 五月丁香综合啪啪| 色婷婷基地在线| 成人av中文字幕| 九月色婷婷综合亚洲| 国产色网站| 九九这里只有精品| 99热伊人综合| 狠狠草天天草| 天天骑日日爽| 在线色婷婷| 综合久久婷婷五月丁香| 激情综合五月天| 99免费在线视频| 五月婷狠狠| 五月婷婷色色| 五月婷六月丁| 99综合网| 婷婷综合五月激情| 少妇被下春药玩弄A片| 色综合色综合色综合| 久久9久| 97色伦另类图片小说视频 | 九九亚洲综合| 大香蕉伊人久久| 中文字幕综合| 婷婷色五月激情| 99热只有| 伊人色综在线| 激情亭亭五月| www.99热| www五月天激情com| 99热销国产这里有精品| 一本久道综合色婷婷五月| 91色逼| 久久99久久久久久| 五月丁香AV、伊人业余、性色熟妇| 久久小说| 婷五月天| 婷婷激情五月天天天开心| 人妻系列久久久久久久久久久 | 九九色精品| 婷婷在线五月天观看| 久久这里只有精品热在99| 亚洲丁香花色| 最近中文字幕2019视频1| 婷婷丁香五月天中文字幕| ZpRSw| 丁香五月成人av| 天堂久久性| 超碰91在线| 美女天天久久| 五月婷综合激情| 人妻激情综合| 五月涩涩网| 综合婷| 激情综合无码| 久久深爱激情网| 啪啪操操| 日比网免费国产| 久久免费视频62| 丁香玖玖| 伊大人久久| 五月丁香久久| 99热欧美在线观看| 国产婷婷久久| 国产XXXX搡XXXXX搡麻豆| 国产三级在线播放| 色播播五月天| 五月丁香六月色| 激情五月天99色| www.婷婷五月| 婷婷色导航| 久久视频66| 午夜在线成人网站免费观看| 婷婷五月成人| 日本色色网站| 五月婷婷开心亚州在线| 丁香六月婷婷综合激情欧美| 97人妻碰碰碰久久久久-最近国语高清| 五月丁香六月婷婷网| 99re思思精品在线观看| 九九热再线九九视频免费在线观看| 久久这里只有精品视频15| 91操片| 玖玖九九99| 99在线视频资源| 日本三级韩三级99久久| 少妇高潮一区二区三区99欧美| 婷婷香五月| 超碰人人超碰| 特级操b片| 极品人妻VIDEOSSS人妻| 亚洲成人一区| 五月亭久久无码视频| 国产精品电影网| 操逼在线视频| 开心五月激情站| 激情人妻综合| 婷婷激情五月天小说| 人妻少妇色综合| 久久99热免费最新版| 久久这里只有精品无码| 天天上天天爽| 婷婷色播色五月五色五月天色妇| 操人91| 99操不停| 亚洲天堂制| 疯狂做受XXXX高潮A片动画| 六月色播| 激情婷婷丁香五月天| 五月丁香六月婷婷综合| 五月久久丁香| 人人操人人爱丁香五月| 99热这里只有精品官网| 99热99干| 色情综合网| 婷婷成人五月天一区| 深爱五月月天| 久久久这里都是精品| 综合网网欲色| 婷婷综合九月| 超碰在线观看成人视| 夜夜干夜夜操| 天天噜噜| 思思热在线观看| 操一操插一插| 婷婷五月天狠狠搞干| 99爱免费在线视频| 五月丁香在线婷婷美女| 夜夜爱网站| 婷婷va| 久久综合五月| 天天狠狠夜夜狠狠2023| 激情内射p| 丁香成人色情五月天| 激情五月丁香在线观看直播| 丁香五月激情六月| 狠狠搞亚洲| 国产精品久久久60086| 狠狠999| 激情五月天色| 天天色天天爱天天舔| 噜噜噜噜噜日本视频| 男人天堂亚洲综合| 丁香婷婷综合激情五月色| 插插插色综合网| 日本婷婷丁香五月| 五月激情综合深爱| 26uuu亚洲精品国产| 五月丁香龟婷婷| 99re8这里只有精品99re8热视频| 色琪琪一综合久久激情五月视频| 天天色天天搡| 久久午夜理论| 开心五月网 | 免费观看全黄做爰的视频| 激情综合久久| 99热综合| 91欧美日韩| 亚洲精品九九| 亚洲黄色影视| 色综合开心五月深爱五月| 亚洲99在线| 色五月影视| 人妻久久久久久| 99热在线只有精品| 色九月| 午夜少妇在线观看视频| 丁香五月婷婷综合激情啪啪啪啪啪啪啪 | 天天爽天天摸天天爱| 丁香六月婷婷综合| 超碰精品在线| 99在线小视频| 996er在线观看| 台湾佬天天日丁香婷婷五月天| 五月丁香啪啪综合| 亚洲中文字幕av| 男同91 | 国产AV网页| 婷婷五月无码| 97色碰碰公开视频| 亚洲性受XXXX五月丁香| 六月婷婷九月丁香亚洲综合| 天天操天天操天天操天天操天天操| 麻豆WWWCOM内射软件| 国产欧美大香蕉一区| 26uuu偷拍亚洲欧洲综合| 侠女刀之记忆电影在线看免费| 五月天堂在线| 精品久久久人妻| 大香蕉AV在线| 国产综合婷婷| 六月丁香婷婷在线波多| 久热婷婷| 国产成人亚洲综合亚洲| 日本色婷婷五月天成人电影| 99婷婷国产最新视频| 亚洲亚洲人成综合网络| 9久久婷婷国产综合精品性色| 久久996re热这里只有精品无码| 五月丁香六月婷婷色情| 婷婷五月天99综合网站| 91婷婷搞| 99久久玖玖| 激情五月天婷婷| 91日综合欧美| 久久综合天天综合| 九九Av| 婷婷激情五月天小说| 日本乱子人伦在线视频| 久久伊人9| 色五月婷婷成人视频| 久久五月婷婷丁香| 五月天色欧美| 婷婷五月开心中文字幕在线| 色99色| 伊人狠狠色婷婷综合丁香一区| 我要色综合五月婷婷| 久久婷婷网| 97色综合| 青青草视频福利| 99热这里只有精彩| av久热| 天天草比天天爽| 国产伦亲子伦亲子视频观看| 91人人网| 婷婷激情小说| 丁香五月天影院| 五月天色官网| 六月丁香啪啪| 思思视频久久| 五月婷视频| 婷婷综合97| 色五月婷激情| 五月丁香婷婷欧美色图视频五月丁香777电影 | 久久久8| 特级西西4444www无码| 久久综合婷婷| sS丁香五月婷婷| 五月丁香综合啪啪| 五月丁香激情怕怕| 台湾无码A片一区二区| 久久久潮喷-久久久九九-成人AV| 久久亚洲婷婷| 激情五月瑟瑟| 色欲天天综合| 日韩熟女啪啪视频| 五月花综合视频| 爱穴久久| 开心婷婷五月天激情网| 97伦色婷婷| 天堂婷婷丁香六月网| 六月天婷婷| 亭亭五月丁香综合欧美| 中文字幕成人| 热久久成人| 五月丁香激情综合| 中日韩美欧成人一区二区精品在线| 五月天激情四射| 欧美色色色色色| 日韩超碰在线| 综合久久99| 热的五码久久精品| 婷婷在线视频| 性99网站| 九九色之九九色之88| 激情综合激情五月一起草| 五月丁香婷婷五月色| 五月丁香伊人网| 色99综合色88| 丁香色五月婷婷| 九月婷婷综合网| 五月天婷婷久久| 亚洲 视频 导航 一区| 日本三久久| 婷婷丁香久久| 丰满少妇乱A片无码| 色噜噜在线| 伊人丁香五月天丁香在线婷| 色五月天综合网| 色日本综合| 先锋五月婷婷丁香草草| www99热| 色综合久| 五月婷婷五月| 五月天开心婷婷久久| 五月婷婷黄色网址| 色色热| 超碰操网| 天天色情站| 人人视频色| 大伊香蕉玖玖爱| 99热在线播放| 天天天天天久久久久久| 天天久综合网永久入口18| 婷婷五月天高清无码| www.婷婷五月.com| 久超超碰| 激情二色月| 亚洲亚洲人成综合网络| 99操免费视频| 千人斩操逼| 久久大香蕉伊人| 99日在线视频| 五月婷婷六月丁香| 婷婷天天日婷婷| 亚洲综合五月天婷婷丁香| 天天色天天操天天射| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | www.99热国产| 大香蕉九九热| 五月丁小婷婷激情四射| 天天色宗合| 伊人五月天婷婷| 久久hd| 极品人妻XXXXOOOO| 成人免费va| 狠狠干狠狠色| 超碰色热| 在线看黄色| 操操天堂| 婷婷五月天综合小说网| 亚洲艹网| 99热线观看9| 99爱免费在线视频| 丁香婷婷久久 | 九九操屄| 热久久99热欧美国产亚洲| 狠狠擼综合| 玖玖婷婷色五月| 国内一级片| 99操视频| 快乐婷婷五月天| 狠狠婷婷色| 色综合久久天天综合网| www,色色色网站| 99亚洲天堂| 亚洲深喉aV| 综合性爱网| 麻豆五月丁香婷婷| 99精品这里只有免费视频| 9久操| 久久激情综合| 婷婷五月综激情| 日韩操| 色综合播放| 国产在线网址1| 亚洲精品V天堂中文字幕 | av在线免费网站| 久久伊人日日夜夜| 色色亚洲无码| 丁香色五月婷婷17C| 婷婷五月综合丁香久久| 亚洲精品a成人在线播放| 婷婷五月色情天| 亚洲操操操| 久久婷婷亚洲五月天| 婷婷丁香视频在线观看免费| 中文字幕av久久爽一区| 色级停停| 天天干天天做| 91蜜桃婷婷狠狠久久综合9色| 九九成人视频| 婷婷五月天网址| 人人摸人人摸| 五月天婷婷视频小说| 婷婷亚洲五| 久久精品4| 欧美日本不卡黄色片| 性欧美大战久久久久久久83| 少妇人妻丰满做爰XXX| 久热只有精品| 日本综合色图| 亚洲第精品| 色999亚洲人成色| 91大神操美女| 超碰国产在线| 99色最新在线视频| 中文字幕婷婷五月天| 四色五月视频| 色五月激情五月| 久久久久久久人妻| 亭亭玉月丁香| 五月丁香啪啪啪综合网| 国产 码在线成人网站| 久久婷婷精品| 99成人| 婷婷亚洲色| 六月婷婷激情| 亚洲V国产V欧美V久久久久久| 亚洲无码色| 午夜不卡久久精品无码免费 | 五月婷婷六月丁香在线视频免费在线观看| 夜夜夜夜撸夜夜操| 99riAV国产精品视频| 丁香婷婷色色| 天天插天天干| 六月丁香久久| 色99欧洲色19| 狠狠狠色激情综合适合| 夜夜爱伊人| 91色在线/日韩| 可以看的AV| 91精品91久久久中77777| 蜜桃人妻无码AV天堂三区| av大香蕉| 国产婷婷综合| 亚洲色婷婷| 99综合网| av人人操| 日韩人妻在线观看| 亚洲婷婷丁香五月亚洲| 色五婷婷开心缴| 中文字幕,综合,91| 色五月婷婷基地| 丁香婷婷成年| 五月狠狠| 婷婷性爱视频在线| 狠狠色丁香久久久婷| 玖玖在线资源视频| 99热首页| 丁香五月色情| www.91AV.com| 99热在线资源| 九色综合网| 日韩成人无码片| 成人精品视频99在线观看免费| 99噜噜噜在线播放| 亭亭五月基地在线| 色婷婷成人在线| 丁香激激情网| 激情五月婷婷综合| 五月婷婷伊| 综合AV在线| 婷婷色播综合五月| 丁香大香蕉| 爆乳熟妇一区二区三区四区| 久久久精品AV| 亚洲色亚洲精品| 婷婷五月天影院| 色播综合| 五月婷婷六月丁香首页| 日韩抽插操逼| 五月丁香激情综合| 伊人婷婷五月天| 男人操女人高潮91视频| 久re热视频| 色婷婷丁香五月观看| 无码99| 成人av在线网| 天天操天天曰天天射| 免看黄大片AA | 婷婷丁香黄色| 少妇久久诱惑视频| 大香蕉综合网| 九九综舍久久| www开心激情网| 99操| 成人视频在线免费播放| 新五月天婷婷激情电影| 欧洲色| 不卡的AV网站| 五月综合婷婷开心网| 99免费热视频在线| 在线91日韩| 五月花婷婷丁香| 国外亚洲成AV人片在线观看| http:色情日本com| 亚洲小视频免费播放| 精a品a| 精品亚洲国产成AV人片传媒| 五月6香色婷婷视频| 婷婷五月天亚洲综合| 五月丁香激情婷婷| 国产精自产拍久久久久久蜜| 超碰97久久| 色噜噜狠狠色综合日日| 亚洲成人在线在线| 五月天激情亚洲| 天天射综合网站| 中文字幕性爱视频| 九九色色网| 婷婷久月| 年轻的妺妺伦理HD中文 | www.狠狠艹| 99色在线视频| 97久久视频| 91超级碰在线视频| 99热丁香五月| www.狠狠狠狠| 五月婷婷六月丁香| 99久久综合| 91九色在线| 热99视频精品在线| 天天综合亚洲综合| 日本欧美成人片AAAA| 激情五月图| 色色色色热| 337p大胆噜噜噜噜噜91Av| 亚洲成人网站在线播放| 成人婷婷| 久久综合丁香激情五月| 午夜成人网站在线观看| 亚洲精品视频电影| 99人碰碰碰| 丁香五月性爱| 五月丁香久久| 久热这里只有精品性色AV| 99久在线精品99re8热| 久热超碰| 图片区 小说区 区 亚洲五月| www99热| 色婷婷五月综合| 午夜色色色极品视频| 人人摸人人干| 亚洲精| 六六久久黄色| 丁香五月成人社区| 欧美婷婷综合| 99色视频| 婷婷久久久| 亚洲色五月| 五月婷婷六月激情网| 婷婷色情 | 五月停停激情网| www.色色com| 色区域网站视频| 欧美在线视频9| 五月丁香色色综合| 丁香五月天久久| 丁香婷婷激情网站| 五月婷啪啪| AV五月婷婷露脸| 久久婷婷夜| 日本99婷婷| 天天舔天天摸视频| 91狼友视频网页更新| 深爱五月天 开心网| 亚洲视频另类| 91五月天| 米奇影视资源婷婷狠狠色激情欧美五月丁香 | 天天综合永久| 大香蕉人在线65| 婷婷五月天AV| 亚洲激情色色| 一起肏在线视频| 婷婷丁香小说| AV天堂淫乩| 五月天堂六月丁香亚州中文字幕久久| 五月丁香六月激情| 欧洲亚洲免费视频区| 激情丁香五月天图片| 婷婷五月中文在线视频| 综合婷婷| 激情综合色五月丁香| 夜夜爱网站| 97狠狠碰| 久9视频免费播放| 欧亚洲在线高清视频| 日本精品人妻无码77777| 天天干天天做| 婷婷开心综合人妻小说网址| 99在线观看精品| 国产AV一区二区三区日韩| 激情五月天激情五月天| 六月婷婷无码| 九九综合图片网| 激情99| 日韩在线一级| 伊人五月人妻精品| 五月天色综合| 丁香五月天综合| 丁香婷最新动态| 色九九一二| 99无码视频| 五月亚洲| 国产日批视频| 五月丁香啪啪啪啪| 久热伊人| 日本久久婷婷| 色婷丁香五月| 六月丁香综合| 91碰操| 男男野外做爰全过程69| 91Chinese在线| 少妇达人正片在线播放_ikun_福利吧| 国产伦理精品高清在线观看网站一区二区 | 国产性爱亚洲是图| 五月婷婷六月丁香| 天天色天天爱天天爽| 色婷婷五月开心六月综合| 婷婷九月丁香中文| 色九月激情综合网| 99在线精品视频| www久久99| 欧美色性色好| 开心 五月 综合| 激情久久肏屄视频| www综合久久| 久久综合55| 99热综合| 日韩AAAAA| 激情五月天网站| 毛片毛片毛片毛片| 婷婷色5月天在线。| 久xxxx| 久久丁香综合香蕉| 黄桃AV无码免费一区二区三区 | 超碰国产在线| 婷婷伊人综合中文字幕| 成人婷婷五月| 久久久久综合激动五月天| 爱射综合| 内射综合网| 九月婷婷综合网| 日本一区二区三区精品视频| 久久99草五月婷婷| 国产成人99久久亚洲综合精品| 天天插天天插| 天天插天天爽| 丁香六月婷婷色播| 激情网婷婷五月天| 久久久免费精彩视频| 五月丁香六月婷婷的女人| 九月丁香很很色| 性做爰A片免费视频A片直播| 国产真人做爰视频免费| 久久久99精品免费观看| 伊人久久婷婷| 色爱亚洲| www.夜夜| 国产真实乱了老女人视频| 99re思思久久| 天天弄天天操| 国产成人精品一区二三区熟女在线 | 五月综合视频| 日本一级淫| 日本波多野结衣视频| 综合久久五| 婷婷色资源| 成人无码精品1区2区3区免费看| 国产乱子轮XXX农村| 日韩小视频在线99| 开心五月婷| 电影蜘蛛女| www.9797国产| 伊人久久婷婷| 日韩一66精品| 五月天色视频| 人人摸人人| 丁香五月婷婷亚洲综合精品| 久草热在线视频| 欧美日韩成人在线| 大香蕉啪啪啪| 无码少妇高潮喷水A片免费| 高清资源站日A美A欧亚…| 激情五月,婷婷五月,丁香五月| 精品人妻久久久久久久| 婷婷免费精品视频| 69激情小说| 丁香婷婷中文字幕| 成人 视频免费观看网站| 99久久婷| 人妻体体内射精一区二区| 丁香婷婷五月份| 久草丁香婷婷五月天婷| 丁香九月综合在线| 深夜男女福利刺激影院一区| 99热在线里有精品| 人人色性网| 丁香婷婷成人在线播放| 亚洲亚洲永久无码777777| 79精品视频在线观看,| 香蕉综合在线| 激情五月婷婷综合秋霞| 久久婷婷五月天激情四射| 丁香六月婷婷综合激情欧美 | 99热| 成人中文网| 精品一区久热| 激情性爱网站| 伊人网碰碰| 欧美va视频不用播放器的va视频网| 婷婷五月天AV激情| 天天做天天爱天天高潮| 久久精品99| 日本在线观看91| 色综合色综合婷婷热| 玖玖玖婷婷婷| 激情5月舔| 日撸夜撸日操| 可以看的AV| 操B视频在线播放| 狠狠综合区| 六月色 亚洲| 俺来也综合网精品一区| 亚洲精品国产精品乱码视99| 综合久久婷婷| 2016日日夜夜操| 无码一区二区日韩| 自拍盗摄 另类| 超碰色色综合| 999热这里只有美国精品| 五月丁香婷婷久久| 日韩乱玛久久| av狠狠操| 九热网站| 天天色·欧美| 亚洲性爱干干| 五月天综合| 国产精品色| 69人人操人人爽| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 婷婷六月激情在线视频| 婷婷五月综合激情| 丁香五月天天| 色综合久久久久久久久五月| 五月天婷婷视频| 久操大香蕉| 97久人人| 五月丁六月香| 九月综合| 99热国产免费| 人人九色| 五月婷婷婷婷| 2023天天日夜夜爽| 九九热免费视频| 丁香五月激情啪啪综合| 日韩五月天婷婷| 人人人操| 五月丁香综合影院| 五月六月婷婷| 九九伊人网| 91精品久久久久久综合五月天| 婷婷五月天久久| 丁香婷婷浪潮AV久久综合| 狠狠人妻久久久久久综合丁香| 99热这里有精力| 97在线刺激| 操逼三区| 色色热| 亚洲婷婷性爱| 成人网站免费sxj| 99久久99久久综合| 婷婷五月天AV网| 婷婷激情四射| 91色色色| 色久女| 大香蕉婷婷五月| 婷婷五月天在线综合| AⅤ网站在线看| www.五月天。com| 99综合视频一体| 五月丁香婷婷色| 婷婷九月丁香| 色欲影香| 9精品在线| 欧美三级视频下载| 人妻精品久久久久久| 五月天婷婷综合网| 99er6| 色啪网| 日本久久99| 狠狠色成人影片| 图片区 小说区 区 亚洲五月| 久久丝丝热| WWW久久久| 五月天堂色| 九九热免费视频| 五月天激情久久| 五月激情视频| 久久综合九九| 欧美色五月| 婷婷5月开心6月| 裸体做A爰片毛片A片免费| 激情五月天之六月婷婷| 激情五月成年| 五月激情婷婷六月| 六月婷基地| 九九干视频| 婷婷五月色综合| 色99网站| 九九热视频网站| 亚洲三A| 99热这里只有精品66| 97色色综合| 伊人色综合网| 婷婷综合亚洲| 久久综合人妻| 天天舔天天摸天天射| 99久久婷婷精品视频| 亚洲va欧美va天堂v国产综合| 久久综合网桃花| 99re免费精品视频| 激情婷婷人妻| 婷婷9月天| 日本婷婷在线| 亚洲色色五月天| 五月婷婷丁香在线| 五月丁香亚洲综合网| 五六月婷婷久久| 婷婷六月激情| site:minyis.com| 91久女| 婷婷操超碰| 综合五月草| 婷婷五月天激情综合深爱激情| 色涩影院六月丁香| 99热这| 国产精品色一哟哟| www.一区二区三区| 99干视频| 天天做天天要天天爽| 丁香六月婷婷操逼网| WWW免费视频碰碰碰碰| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 日本三级黄色大片| 嫩草免费视频| 亚洲黄色影视| 丁香六月天之亚州热女 | 91凹凸在线| 国产精品国产成人国产三级| 天天射夜夜爽| 日本久久9| 综合久久婷婷| 激情综合一| 丁香婷婷人妻综合网| 色婷婷色综合激情91| 五月婷婷中文| WWW夜夜| 91久久久久久| 五月婷婷无码专区| AAA久久久| 亚洲AV成人无码精品| 色人久久| 五月婷视屏在线观看| aaa丁香五月天| 亚洲人妻电影| 激情五月天啪啪| 欧美色偷偷大香| 九九婷婷网五月天| 色婷婷社区| AV天堂淫乩| 1024在线观看免费视频| 亚洲人人操| 亚洲人成色A777777在线观看| 六月香五月婷| 97人人干| 91porn一起草| 激情五月综合网| 婷婷丁香五另类网站| 日韩色五月| 肏日网在线看| 亚洲A片成人无码久久精品青桔| 五月丁香啪啪激情| 日本婷色| 欧美综合激情五月天| 六月婷婷AV| 国产日韩精品SUV| 九九综合九九| 五月丁香拍拍激情综合| 伊人激情啪啪| 99热天堂| 国产,欧美,学生妹,视频| 亚洲激情网| 996热re视频精品视频| 色色网站| 欧亚洲在线高清视频| 久久日九九| www.9操| 超碰成人免费| 丁香五月成人在线| 日操夜操天天操不卡| 天天天天操| 国产激情av| 天天人人天天爽| 碰97 久| 六月婷婷综合| 五月天激情视频| 国产精品热搜丁香五月婷婷| 五月丁香久久久| 久久亚洲网| 欧美噜噜免费观看| 久久天天天| 97碰人人操| 男女啪啪视频久 9| Aaa久久| 99成人精品视频| 丁香五月婷婷啪| 婷婷色网站| 国产成人在线不卡AV| AⅤ在线播放网| se婷97| 啪啪啪丁香五月| 国产午夜伦鲁鲁| AV网在线| 亚洲综合网在线| 天天爽天天| 无码少妇高潮喷水A片免费| 国产精品色色| 97高清国语自产拍| 操一区| 精品夜夜澡人妻无码AV| 天天干夜夜想| 中文激情网| 最近中文字幕大全免费版在线 | 国外亚洲成AV人片在线观看| 亚洲欧美成人在线| 国产毛多水多女人A片| 99热思思| 婷婷五月花| 色五月,com| 五月婷婷,狠狠操| 色热久| 人人播| 免费看欧美成人A片无码| 丁香五月激动深爱欧美| 丁香五月色情av| 日韩AV在线免费| www.99精品视频| 97狠狠色| 美女va| 久久99久久99精品免视看婷婷| 丁香五月婷婷成人网| 狠狠搞综合色| 99er精品视频| 天天婷婷色六月| 婷婷五月噜噜| 狠狠色婷婷丁香六月| 丁香五月天啪啪| 六月丁香婷啪射| 噜噜久| 丁香五月激情综合| 五月丁香六月情| 婷婷成人基地| 国产亚洲精品AAAA片APP| 五月丁香色欲| 99色五月| www.久久爱.com| 99热乎| 日韩AV在线电影| 大香蕉 伊人夜| 色五月大香蕉| 无码网| 99热最新| 丁香六月啪| 日本精品人妻无码77777| 五月丁香婷婷色播无码| 激情五月天综合网| 成人婷婷桔色| 五月成人天| 综合五月婷婷| 欧美日韩成卜| 91九色大屁股| 色很久综合| 激情婷婷五月天。| 亚洲激情97五月天| 激情美女五月天激情在线| 丁香五月手机在线| 成人在线99| 天天揷综合网| 日韩在线观看亚洲| 狠狠va| 日日夜夜狠狠操| 五月丁香免费看| 日本丰满久久| 欧洲永久精品| 人妻激情视频| 九九99视频精品| 婷婷五月色天| 色激情五月天| 五月天堂六月丁香亚州中文字幕久久| 五月天丁香网站| 伊人五月久久| 类似婷婷激情综合网站| 国产小精品| 亚洲av网址| 伊人婷婷五月天av| 亚洲AV激情五月综合网| 婷婷久久内射| 久久六月天| 国产色五月婷婷| 99热这里只有精品免费| 婷婷激情四射五月天| 激情精品久久| 久久婷婷婷| 五月停性愛| 色啪影院| 久热只有精品| 五月天久久色| 丁香婷婷激情综合五月激情| av性爱网站| 激情综合五月| 好看的国产精品| 久久精品视频9| 婷婷五月天影院| 日韩综合网络男女香蕉a片| 五月天婷婷影院影院观看| 狠狠色五月| 婷婷五月激情图片| 久久久久99精品成人网站| 久久伊人日日夜夜| 天天做夜夜爽| 国产精品视频免费看| 激情婷婷丁香色五月综合| www好屌操| 国产激情综合五月久久| 婷婷性爱网| 丁香午夜天| 91fuliwang| 色大综合| 91欧美| 黄色片精品| 婷婷五月天视频亚洲| www.一区二区三区| 五月婷婷六月丁香激情综合网| 丁香激激情网| 天天日天天草| 婷婷五月丁香国产| 无码G高清天| 午夜丁香| 色婷婷丁香综合中文字幕| 欧美性爱中文字幕| 任你干线上免费视频有3吗| 亚洲日韩26uuu| 欧美大肥婆大肥BBBBB| 久婷婷五月天影院| 久久天天| 五月花激情网| 丁香五月色五月婷婷宗合| 五月天激情四射| 激情五月丁香五月| 久色网| 五月天大香蕉视频| 色婷五月| 成人免费120分钟啪啪| 伊人婷婷激情| 丁香色色色| 六月婷婷av| 亚洲成人综合在线| 夜夜大香蕉婷婷丁香| 激情丁香五月婷婷| 六月激情丁香一道本7777| 日日爽夜夜爽| 激情骚五月| 色婷婷精品| 操人精品| 99热精品观看| 亚洲国产精品VA在线看黑人| 色一情一乱一乱一区9| 新激情五月天天在线网| 日本久久精品18| 甈吧vv| 老师高潮流白浆喷水的A片| 日韩精品二三区| 丁香五月成人丝袜| 五月天婷婷在线播放| 91黄色五月天视频| 色色色图| 另类视在线| 色婷久久| 六月婷婷av| 99热这里只有精品2| 伊人久久99| 亚洲国产精品VA在线看黑人| www.激情五月天.com| 九九色热| 婷婷夜夜操| 日本九九九九九九| 久久亚洲天堂| 99九九精品| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 99色播| 91jiuseshunv| 天天操B| 五月婷婷色色网址| 欧美大道不卡| 久久国产精品乱子伦_靑青草…| 日韩成人中文| 激情五月婷婷网| 五月丁香网站| 欧美日韩成人在线| 五月色网| 久久AAAA片一区二区| 伊人色综在线| 色射影院| 玩熟女五十AV一二三区| 五月婷婷在线视频|