99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

STM32WB5x BLE OTA卡死原因分析與分層超時復(fù)位策略

STM32WB5x BLE OTA卡死原因分析與分層超時復(fù)位策略 前幾天又遇到一次典型的STM32WB5x BLE OTA卡死問題手機(jī)端顯示固件包傳輸?shù)揭话脒M(jìn)度條不再前進(jìn)設(shè)備側(cè)此時本來應(yīng)該在收包、寫Flash但就是沒有任何回包。等了幾分鐘手機(jī)端BLE連接超時斷開之后不管怎么掃描都找不到設(shè)備廣播。重新上電也一樣——好像固件升級把整臺設(shè)備送進(jìn)了某個“黑洞”狀態(tài)。這個問題的標(biāo)題很直接STM32WB5x BLE OTA gets stuck mid-update with no way to reconnect — is a firmware-side timeout/reset the right approach? 我先說結(jié)論不能用一套簡單的 timeout reset 邏輯去掃尾但也不能完全不處理。關(guān)鍵是要找到卡在哪個階段、誰在卡、以及復(fù)位后從哪里啟動。這篇文章就圍繞這個思路把 STM32WB5x 上 BLE OTA 卡死的原因、排查手段、分層超時設(shè)計和可落地的復(fù)位策略完整拆開聊。1. 卡死現(xiàn)場從“傳輸中”到“徹底失聯(lián)”的三種表現(xiàn)1.1 下載階段卡住數(shù)據(jù)傳著傳著就沒有ACK了第一種卡死最容易被誤判為“藍(lán)牙斷連”?,F(xiàn)象是手機(jī)APP通過 BLE 自定義服務(wù)向設(shè)備持續(xù)發(fā)送固件分片前面幾十個包都正常設(shè)備也回了 Write Response 或 Notify ACK在某個分片之后設(shè)備突然不回任何 Confirm 了。手機(jī)端要么等本次 GATT 寫操作超時要么等到 BLE 連接事件丟失最終報錯斷開。這種卡在下載階段的問題根源幾乎都不在協(xié)議棧而在 M4 應(yīng)用核。STM32WB5x 的雙核架構(gòu)里M0 核負(fù)責(zé) BLE 協(xié)議棧M4 核負(fù)責(zé)用戶的業(yè)務(wù)代碼。GATT 寫請求來了M0 會把數(shù)據(jù)通過 IPCC 放進(jìn)共享內(nèi)存然后通知 M4 去取。M4 收到數(shù)據(jù)后要做的是把分片寫入目標(biāo) Flash。如果這段 Flash 寫入邏輯寫得很“霸道”——比如在擦寫整個扇區(qū)時長時間關(guān)中斷或者HAL_FLASH_Program一次寫入后再做 CRC 校驗(yàn)?zāi)敲?M4 處理完這個分片的時間可能超過 BLE 的連接間隔M0 側(cè)的 ACK 隊(duì)列就會越積越多。積壓到一定程度M0 的接收緩沖區(qū)滿協(xié)議棧開始丟棄新的 GATT 寫請求。手機(jī)端發(fā)出去的包沒人應(yīng)答連接事件也會因?yàn)闆]有及時交換空包而觸發(fā)鏈路監(jiān)督超時。此時設(shè)備并沒有死只是 M4 忙到忘記喂 BLE 協(xié)議??雌饋砭拖癖豢ㄋ懒?。1.2 安裝階段卡住FUS 一張接管設(shè)備直接消失第二種卡死比下載階段更迷惑人。所有固件分片都傳完了校驗(yàn)也通過了然后 APP 端發(fā)送“開始安裝”的命令設(shè)備收到命令后可能回了一幀 ACK然后連接斷開。此后無論怎么掃描設(shè)備再也不會廣播。重新上電也一樣設(shè)備仿佛人間蒸發(fā)。如果你用 ST-Link 接上芯片很可能會發(fā)現(xiàn) M4 還在跑但 M0 停在某個 FUS 服務(wù)里——這時設(shè)備并不是“壞了”而是進(jìn)入了無線棧固件升級Wireless Stack Update的安裝流程。STM32WB5x 的 FUSFirmware Upgrade Service運(yùn)行在 M0 核上負(fù)責(zé)安全安裝無線棧固件、管理密鑰等。當(dāng) FUS 開始安裝或者擦寫無線棧區(qū)域時BLE 協(xié)議棧必然停止運(yùn)行所有無線活動都會終止。這個階段本來就不應(yīng)該期望還能搜索到設(shè)備。問題在于FUS 安裝完成后可能需要幾秒到幾十秒一旦安裝失敗或 FUS 卡在某個內(nèi)部狀態(tài)設(shè)備就永遠(yuǎn)停留在“沒有無線??膳堋钡木置孀匀灰膊粫袕V播。1.3 復(fù)位后卡住看起來是醒了其實(shí)在裸奔第三種情況出現(xiàn)在“timeout/reset 已經(jīng)寫進(jìn)固件”的設(shè)備上。工程師發(fā)現(xiàn) OTA 卡住后在 M4 側(cè)加了一個看門狗或者收到“開始安裝”后倒計時 10 秒強(qiáng)制NVIC_SystemReset()。結(jié)果是設(shè)備確實(shí)能重啟但重啟后既不廣播、也不進(jìn)入正常應(yīng)用調(diào)試器連上去發(fā)現(xiàn)程序跑飛或死在 HardFault。這通常是復(fù)位后的啟動入口出了問題。OTA 過程如果已經(jīng)把新的應(yīng)用固件寫入了當(dāng)前運(yùn)行分區(qū)但復(fù)位后 bootloader 沒有做“鏡像有效性檢查”直接跳轉(zhuǎn)到一個寫了一半或者 CRC 校驗(yàn)失敗的鏡像CPU 就會取指失敗卡在啟動階段。還有更隱蔽的一種OTA 期間使用獨(dú)立看門狗 IWDG但喂狗邏輯放在主循環(huán)里。當(dāng) M4 阻塞等待 FUS 回復(fù)時主循環(huán)停擺IWDG 超時復(fù)位。運(yùn)氣好時復(fù)位后舊應(yīng)用還在但升級標(biāo)志被寫壞運(yùn)氣不好正趕上 Flash 擦寫中途復(fù)位導(dǎo)致 Flash 內(nèi)容不完整設(shè)備便再也沒能起來。2. 雙核架構(gòu)下的OTA到底是誰在“卡”誰2.1 先理清 M4、M0 和 FUS 的職責(zé)邊界要處理卡死問題首先得把 STM32WB5x 里的三角關(guān)系搞清楚。M4 核跑應(yīng)用邏輯也就是你寫的產(chǎn)品代碼M0 核跑 BLE 協(xié)議棧對外呈現(xiàn)為“無線核”。兩個核通過 IPCC 硬件單元和共享內(nèi)存通信。M4 不需要知道 BLE 連接的底層細(xì)節(jié)它只負(fù)責(zé)從共享內(nèi)存里取數(shù)據(jù)和發(fā)送命令。FUS 是 M0 上的一套系統(tǒng)服務(wù)類似一個運(yùn)行在無線核上的 mini bootloader。M4 可以通過 IPCC 向 FUS 發(fā)送命令比如查詢版本、安裝無線棧、刪除無線棧、管理安全密鑰等。FUS 有自己的安全狀態(tài)和錯誤碼。當(dāng)執(zhí)行覆蓋無線棧區(qū)域的寫操作時FUS 會暫停當(dāng)前無線棧運(yùn)行因此 BLE 連接一定會斷。很多第一次做 STM32WB OTA 的人會以為“BLE OTA”就是把數(shù)據(jù)寫到 Flash 然后跳轉(zhuǎn)但實(shí)際上要區(qū)分升級對象升級用戶應(yīng)用固件數(shù)據(jù)寫入應(yīng)用分區(qū)通常與 FUS 無關(guān)。升級無線棧固件必須通過 FUS 或類似機(jī)制不僅要寫 M0 的代碼區(qū)域還要更新藍(lán)牙棧版本和配置。同時升級兩者先升級用戶應(yīng)用再升級無線棧或反過來中間需要明確的狀態(tài)管理。如果沒有做這個區(qū)分就會在應(yīng)用 OTA 過程中試圖調(diào)用 FUS或者在無線棧 OTA 過程中關(guān)閉了 FUS導(dǎo)致整個狀態(tài)機(jī)錯亂。2.2 應(yīng)用固件OTA和無線棧OTA是兩條完全不同的路應(yīng)用固件 OTA 通常走雙 Bank 方案當(dāng)前從 Bank1 啟動新固件寫入 Bank2寫完后置位切換標(biāo)志復(fù)位后 bootloader 檢查標(biāo)志并嘗試從 Bank2 啟動如果 Bank2 無效則自動回退 Bank1。這種方式的好處是即使新固件寫壞了Bootloader 還能救回來前提是 Bank1 的舊固件仍然可用。無線棧 OTA 就復(fù)雜一點(diǎn)。無線棧代碼和 FUS 安全性綁定不能由 M4 直接寫入只能讓 FUS 去處理。M4 要做的是把無線棧固件包傳給 FUS再由 FUS 完成校驗(yàn)、擦寫、安裝。這個過程中 M4 與 FUS 通過 IPCC 異步交互不能一邊等 FUS 一邊又把 BLE 協(xié)議棧殺掉。從調(diào)試角度看應(yīng)用 OTA 卡住大多能在 M4 用戶代碼里找到原因無線棧 OTA 卡住則要優(yōu)先查 FUS 返回的錯誤碼和 M0 狀態(tài)。兩者排查手段完全不同所以“一堆 timeout 邏輯走天下”在雙核 OTA 里根本行不通。2.3 “無法重連”的深層原因往往不在BLE超參數(shù)而在于狀態(tài)機(jī)遇到設(shè)備不能重新連接時很多人的第一反應(yīng)是調(diào) BLE 廣播參數(shù)縮短廣播間隔、打開可發(fā)現(xiàn)模式、延長連接超時。這些參數(shù)調(diào)整可能有效但治標(biāo)不治本。真正的深層原因往往是沒有把 OTA 狀態(tài)持久化。比如OTA 下載了一半設(shè)備復(fù)位舊應(yīng)用還在但 SFlash 里某個“升級進(jìn)行中”的標(biāo)志位被誤寫成了“升級完成”。新固件寫入 Bank2 后由于復(fù)位發(fā)生在標(biāo)志位寫入之后、CRC 校驗(yàn)完成之前Bootloader 檢查標(biāo)志時認(rèn)為可以切換結(jié)果跳到損壞的 Bank2。FUS 安裝無線棧時M4 因?yàn)槌瑫r執(zhí)行了復(fù)位復(fù)位后 FUS 尚未完成安裝M0 沒有任何可運(yùn)行的無線棧設(shè)備自然無法廣播。這些問題不是靠“多等幾秒”或“多復(fù)位幾次”能解決的。你得有一個“升級狀態(tài)機(jī) 啟動驗(yàn)證 回退路徑”讓設(shè)備無論什么時候掉電都能從持久化狀態(tài)里判斷該繼續(xù)升級、該回退舊版本、還是進(jìn)入恢復(fù)模式。3. 排查套路從復(fù)位原因到FUS狀態(tài)都翻一遍3.1 上ST-Link先看芯片還能不能連上調(diào)試口遇到 OTA 卡死別急著改代碼先把芯片接到 ST-Link打開 STM32CubeProgrammer。如果連接成功你能讀出器件 ID、Flash 大小、當(dāng)前 FUS 版本和無線棧版本。這一步能立刻確認(rèn)設(shè)備是否“活”著以及是哪個核在跑。如果連接失敗優(yōu)先檢查目標(biāo)板電源以及在 CubeProgrammer 連接設(shè)置里選擇正確的接口模式和復(fù)位模式。有時設(shè)備運(yùn)行在不正常狀態(tài)需要把 BOOT0 拉高進(jìn)入系統(tǒng) Bootloader 再連接。不過 STM32WB5x 的內(nèi)部 Bootloader 走的是 USART/USB不是 SWD所以如果 SWD 連不上通常說明芯片內(nèi)部時鐘或電源出了大問題或者調(diào)試引腳被 M4 代碼復(fù)用并配置成了模擬輸入。3.2 第二眼看RCC_CSR這臺設(shè)備是“怎么死的”如果 SWD 能連上下一步我會讀取復(fù)位原因寄存器RCC_CSR。這個寄存器能告訴你最后一次復(fù)位是由誰觸發(fā)的上電復(fù)位 / 欠壓復(fù)位外部復(fù)位引腳獨(dú)立看門狗 IWDG 復(fù)位窗口看門狗 WWDG 復(fù)位軟件復(fù)位 NVIC_SystemReset其他原因在項(xiàng)目里用一個調(diào)試命令把復(fù)位原因打印出來會非常有價值。比如你發(fā)現(xiàn)設(shè)備每次 OTA 卡死后的復(fù)位原因是 IWDG那說明問題出在“沒有及時喂狗”如果復(fù)位原因是軟件復(fù)位說明你的超時邏輯真的執(zhí)行了NVIC_SystemReset()但顯然它沒有解決問題。讀取代碼如下uint32_t csr RCC-CSR; if (csr RCC_CSR_RMVF_Msk) { RCC-CSR | RCC_CSR_RMVF_Msk; // 清除復(fù)位標(biāo)志 } // 判斷 if (csr RCC_CSR_WDGRSTF_Msk) { // IWDG復(fù)位 } else if (csr RCC_CSR_SFTRSTF_Msk) { // 軟件復(fù)位 }我在實(shí)際項(xiàng)目中遇到過很隱蔽的情況設(shè)備上電后RCC_CSR里的 IWDG 復(fù)位標(biāo)志一直存在而代碼里沒有在啟動早期清除它導(dǎo)致 Bootloader 以為上一次 OTA 異常退出不斷觸發(fā)回滾。這種“歷史復(fù)位原因”沒有清理干凈也會造成奇怪的啟動行為。3.3 第三步翻FUS狀態(tài)和無線棧版本STM32CubeProgrammer 有一個專門的 FUS 頁面打開后能直接看到 FUS 版本、無線棧版本、當(dāng)前運(yùn)行的安全狀態(tài)以及上一次 FUS 命令的執(zhí)行狀態(tài)。如果上位機(jī)顯示無線棧區(qū)域?yàn)榭栈蛘?FUS 狀態(tài)不是 Running那基本可以判斷設(shè)備是卡在無線棧升級的安裝階段。此時你要么重新通過腳本刷入一套完整的無線棧固件要么用 Flash 全擦除后重建。注意STM32WB5x 的無線棧區(qū)域有安全校驗(yàn)單純在 MDK 里隨便寫一個地址是沒用的必須走 FUS 或官方工具鏈。在自定義 OTA 流程中我建議把 FUS 命令的返回碼納入日志系統(tǒng)。比如FUS_ERROR_IMG_NOT_AUTHENTICATED固件包簽名校驗(yàn)失敗。FUS_ERROR_OP_ABORTED操作被中斷。FUS_ERROR_NO_DEVICE_ACCESSM4 沒有對應(yīng)權(quán)限。這些錯誤碼能幫你判斷問題出在 OTA 包的合法性還是出在 FUS 命令交互流程。3.4 如果連SWD都連不上優(yōu)先懷疑Flash被寫花假設(shè)設(shè)備徹底沒反應(yīng)SWD 也連不上這時不要上來就懷疑芯片壞了。先強(qiáng)制進(jìn)入系統(tǒng) Bootloader把調(diào)試口重新救出來。如果 STM32CubeProgrammer 能連接系統(tǒng) Bootloader再對 Flash 做整片擦除擦除后一般都能通過 SWD 重新連接。這種情況多發(fā)生在 FUS 安裝過程中被 M4 側(cè)硬復(fù)位打斷。雖然 STM32WB5x 在 Flash 擦寫上做了一些保護(hù)但復(fù)位發(fā)生在閃存編程時序中間仍可能導(dǎo)致無線棧區(qū)域處于不穩(wěn)定狀態(tài)。而一旦無線棧區(qū)域內(nèi)容損壞M0 無法啟動協(xié)議棧整顆芯片就表現(xiàn)為“BLE 完全消失”但 M4 可能還在空轉(zhuǎn)。所以從設(shè)計層面講任何可能中斷 Flash 編程的操作都必須格外小心。尤其是無線棧升級期間不是萬不得已不要用 M4 側(cè)看門狗去打斷 FUS 流程。4. 固件側(cè)timeout/reset能解決什么不能解決什么4.1 超時機(jī)制的正確分層傳輸層、安裝層、啟動層回到標(biāo)題里的問題firmware-side timeout/reset 到底是不是正確方案我的答案是timeout 是必須的但 reset 要分級、分層不能一把梭??梢园颜麄€ OTA 流程分成三個層次層次典型超時場景正確處理方式是否建議直接復(fù)位傳輸層長時間沒有收到下一個固件分片中止本次下載保持廣播等待重連通常不需要復(fù)位安裝層FUS 安裝無線棧超時查詢 FUS 狀態(tài)記錄錯誤再決定復(fù)位謹(jǐn)慎需先保護(hù)標(biāo)志啟動層Bootloader 檢測到鏡像無效回退到上一分區(qū)或進(jìn)入恢復(fù)模式通過跳轉(zhuǎn)邏輯完成不屬于普通復(fù)位4.2 傳輸層超時該中止但不該急著復(fù)位傳輸層的超時最簡單。M4 收到固件分片后維護(hù)一個last_rx_tick。如果超過某個閾值比如 5 秒沒有收到新的分片就認(rèn)為本次傳輸已經(jīng)失敗。此時正確的做法是把 OTA 狀態(tài)機(jī)切到OTA_STATE_FAILED。記錄失敗的偏移量和錯誤碼。釋放本次 OTA 占用的緩存。判斷當(dāng)前正在運(yùn)行的應(yīng)用是否有效如果有效繼續(xù)跑舊應(yīng)用同時繼續(xù)保持 BLE 可連接。如果舊應(yīng)用已經(jīng)被部分覆蓋比如采用了單 Bank 原地升級則應(yīng)讓設(shè)備停留在“可發(fā)現(xiàn)且可重新下載”的狀態(tài)等待手機(jī)端重連后重新把完整固件包傳一遍。為什么不要立即復(fù)位因?yàn)閭鬏攲映瑫r往往只是手機(jī)空中的射頻干擾、BLE 連接參數(shù)不匹配、或手機(jī)端 APP 異常此時設(shè)備本身沒有掛。你復(fù)位自己反而會讓手機(jī)端徹底丟掉連接不復(fù)位至少手機(jī)端還能通過當(dāng)前連接繼續(xù)補(bǔ)發(fā)幾包。我在實(shí)測中發(fā)現(xiàn)BLE OTA 傳文件時如果手機(jī)屏幕熄滅或系統(tǒng)進(jìn)入省電模式連接會進(jìn)入 dormant 狀態(tài)幾秒鐘沒有數(shù)據(jù)是很正常的。把傳輸超時設(shè)成 2 秒會誤傷設(shè)成 10 秒又會讓卡死恢復(fù)太慢。一般建議根據(jù)實(shí)際數(shù)據(jù)包間隔設(shè)置比如你的 APP 每 20ms 發(fā)一包可以設(shè) 2 秒如果每 100ms 發(fā)一包可以設(shè) 4~5 秒。4.3 安裝層超時需要“先確認(rèn)狀態(tài)再決定是否復(fù)位”安裝層指的就是“固件傳輸完成開始擦寫/切換”這個階段。如果是應(yīng)用固件雙 Bank 切換整個過程很短M4 直接操作 Flash超時主要關(guān)注擦寫時間是否異常。如果是 FUS 安裝無線棧過程可能跨越數(shù)秒到幾十秒此時 M4 與 FUS 基于 IPCC 異步交互。這個階段最忌諱的就是“M4 等不到回復(fù)后直接調(diào)用NVIC_SystemReset()”。為什么因?yàn)?FUS 可能在擦寫無線棧 Flash此時硬復(fù)位可能會打斷 FUS 的擦寫流程。STM32WB5x 的 FUS 內(nèi)部有一定恢復(fù)機(jī)制但你在錯誤的時間點(diǎn)打斷它可能讓無線棧區(qū)域處于“存在但校驗(yàn)失敗”的狀態(tài)。與其這樣不如在進(jìn)入安裝前就設(shè)計好先通過 FUS 查詢當(dāng)前狀態(tài)如果 FUS 還活著讓它繼續(xù)跑或者主動發(fā)送一個放棄命令。如果查詢 FUS 也得不到響應(yīng)才考慮復(fù)位并且復(fù)位后要檢查無線棧版本和 FUS 錯誤碼決定是否進(jìn)入“恢復(fù)模式”。4.4 啟動層回退把最后一道防線放在bootloaderOTA 中最重要的一道防線不是“超時復(fù)位”而是“啟動時驗(yàn)證”。無論你采用雙 Bank 還是單 BankBootloader 都要在跳轉(zhuǎn)到應(yīng)用之前驗(yàn)證目標(biāo)鏡像的有效性。STM32WB5x 的雙 Bank 結(jié)構(gòu)非常適合做 A/B 升級。你可以在 Bootloader 里做以下檢查讀取用戶分區(qū)頭部的鏡像 CRC 或簽名。如果 CRC 有效正常跳轉(zhuǎn)。如果 CRC 無效檢查另一個 Bank 的 CRC。如果另一個 Bank 有效切換啟動。如果兩個 Bank 都無效進(jìn)入串口或 BLE 恢復(fù)模式。我在項(xiàng)目里把這條規(guī)則固化為“啟動鏈”Bootloader - App A / App B。OTA 寫入只寫非運(yùn)行 Bank寫完置位 “pending” 標(biāo)志復(fù)位后 Bootloader 根據(jù)標(biāo)志和校驗(yàn)結(jié)果決定正式切換還是回滾。這樣一來即使安裝階段復(fù)位時機(jī)不對只要舊 Bank 還完整設(shè)備至少能回到舊版本而不是“徹底失聯(lián)”。回退機(jī)制雖然不能替代超時復(fù)位但它能在超時復(fù)位做錯時兜底。很多“OTA 卡死無法重連”的最終原因其實(shí)是 Bootloader 沒有做鏡像有效性檢查啟動鏈斷了。5. 一套可以落地的OTA超時復(fù)位參考設(shè)計5.1 狀態(tài)標(biāo)志和數(shù)據(jù)布局先行在設(shè)計 OTA 邏輯之前先確定狀態(tài)標(biāo)志放在哪。ST 官方的雙 Bank 方案一般會使用幾個 Flash 字或 Option Byte 作為升級標(biāo)志。由于 Flash 寫入要擦除不建議頻繁修改同一個字。更穩(wěn)妥的做法是用一個獨(dú)立的配置扇區(qū)專門保存 OTA 狀態(tài)。一個簡單的狀態(tài)結(jié)構(gòu)體大概長這樣typedef struct { uint32_t magic; uint32_t ota_state; // 0: idle, 1: transferring, 2: pending_switch, 3: failure uint32_t transfer_offset; uint32_t target_bank; // 目標(biāo)啟動區(qū)域 uint32_t last_error_code; uint32_t crc32_of_struct; } OtaPersistentStatus;每次更新狀態(tài)后先計算整個結(jié)構(gòu)體的 CRC32再寫入保存區(qū)。Bootloader 啟動時先檢查 magic 和 CRC32如果校驗(yàn)失敗就認(rèn)為狀態(tài)不可信強(qiáng)制走安全啟動路徑。別小看這一步很多 OTA 卡死就是狀態(tài)標(biāo)志半寫半不寫造成的。5.2 傳輸超時的計算和喂狗節(jié)奏傳輸超時不能拍腦袋定。先量一下你的 BLE 連接實(shí)際帶寬手機(jī)端每隔多少毫秒收到一個 Write Response如果平均間隔是 30ms那 3 秒內(nèi)沒有任何包就說明鏈路已經(jīng)斷了或者對端已經(jīng)放棄。設(shè)計喂狗時也要注意喂狗不能放在while(1)主循環(huán)里因?yàn)?OTA 接收數(shù)據(jù)時主循環(huán)可能長時間阻塞。更好的做法是“事件驅(qū)動 后臺任務(wù)輪詢”void OTA_BleOnWrite(uint8_t *pData, uint16_t len) { // 接收更多數(shù)據(jù) OTA_Context.rx_data_happened true; OTA_Context.last_rx_tick HAL_GetTick(); // 寫Flash或者緩存 } void App_MainLoop(void) { uint32_t now HAL_GetTick(); if (OTA_Context.state OTA_STATE_TRANSFERRING) { if (now - OTA_Context.last_rx_tick OTA_TRANSFER_TIMEOUT_MS) { OTA_AbortTransfer(); } } // 其他任務(wù) HAL_IWDG_Refresh(hiwdg); // 不要在Flash擦寫期間長時間不進(jìn)這里 }如果在接收回調(diào)里直接寫 Flash而且 Flash 擦寫時間比較長要注意在擦寫前開一個足夠?qū)捜莸目撮T狗窗口。或者干脆把接收緩沖做深一點(diǎn)數(shù)據(jù)先放進(jìn) RAM后臺慢慢寫 Flash。這樣 BLE 協(xié)議棧能更及時地回 ACK連接不容易斷。我在實(shí)測中比較推薦“RAM 緩沖 后臺 Flash 寫入”的模式。每次 BLE 收滿一個扇區(qū)大小的數(shù)據(jù)就把數(shù)據(jù)優(yōu)先緩存到內(nèi)部 SRAM 或外部 PSRAM然后在主循環(huán)的批量寫入階段統(tǒng)一寫 Flash。缺點(diǎn)是占用 RAM但能極大降低傳輸層卡死的概率。5.3 安裝階段復(fù)位策略的偽代碼思路當(dāng)所有固件包接收完成進(jìn)入安裝階段時我會把流程拆成三步void OTA_StartInstall(void) { // 1. 持久化狀態(tài)進(jìn)入 install 階段 OTA_SaveStatus(OTA_STATE_INSTALLING, target_bank); // 2. 等待FUS或Flash切換完成 uint32_t timeout HAL_GetTick() OTA_INSTALL_TIMEOUT_MS; while (HAL_GetTick() timeout) { HAL_IWDG_Refresh(hiwdg); // 對FUS安裝流程輪詢FUS查詢命令 FUS_Status_t st FUS_QueryStatus(); if (st FUS_STATUS_READY) { OTA_SaveStatus(OTA_STATE_COMPLETED, target_bank); return; } if (st FUS_STATUS_ERROR) { OTA_HandleFusError(st); return; } } // 3. 超時處理先記錄錯誤再考慮復(fù)位 OTA_SaveStatus(OTA_STATE_FAILURE, OTA_GetCurrentBank()); NVIC_SystemReset(); }注意第 3 步的復(fù)位不是首選項(xiàng)。如果 FUS 查詢命令能響應(yīng)我寧可用 FUS 命令去中止或確認(rèn)而不是直接系統(tǒng)復(fù)位。只有 FUS 已經(jīng)無響應(yīng)、且確認(rèn)繼續(xù)等下去沒有任何進(jìn)展時才執(zhí)行復(fù)位。復(fù)位后用 Bootloader 的鏡像校驗(yàn)來兜底。5.4 實(shí)測驗(yàn)證哪些方案能“救回來”哪些會“越救越死”我實(shí)際測試過三種策略結(jié)果差別很大策略 A傳輸層超時后立即NVIC_SystemReset()。結(jié)果設(shè)備重啟后能起來但如果 OTA 有大量緩存沒有落盤導(dǎo)致寫了一半Bootloader 沒有回退邏輯設(shè)備卡死。越救越死。策略 B傳輸層超時后中止升級但保持廣告等待重連。結(jié)果設(shè)備能重新被發(fā)現(xiàn)手機(jī)端重新連接后可以重新傳輸雖然浪費(fèi)時間但可靠。策略 CFUS 安裝階段從HAL_GetTick()到 30 秒超時后硬復(fù)位。結(jié)果有幾次設(shè)備能恢復(fù)正常有幾次無線棧區(qū)域被寫壞需要用 ST-Link 全擦后重刷。風(fēng)險很高。綜合來看最可靠的設(shè)計是傳輸層盡量不重啟安裝層盡量不硬復(fù)位啟動層盡量依賴 Bootloader 自動回退。6. 幾個關(guān)鍵決策和給后來者的建議回到最開始的問題firmware-side timeout/reset 是不是正確做法我的看法是timeout 必須放在 OTA 的每一層但 reset 是最后手段不能放在傳輸層“每等不到回包就復(fù)位”。正確姿勢是把 OTA 設(shè)計成狀態(tài)機(jī)每個狀態(tài)都有明確的超時行為、持久化標(biāo)志和恢復(fù)路徑。復(fù)位只是所有恢復(fù)路徑都不生效時的最終兜底。我在實(shí)際項(xiàng)目里踩過坑尤其建議注意這幾點(diǎn)第一不要讓 M4 在等待 FUS 回復(fù)時完全阻塞。哪怕是一個 5ms 的HAL_Delay也要保證主循環(huán)仍然能喂狗、能處理其他后臺任務(wù)。第二復(fù)位之前一定要保存錯誤信息。你可以把last_error_code和ota_state寫到備份寄存器或者 Flash 的專用區(qū)域這樣復(fù)位后可以通過日志直接看到“上次是為什么復(fù)位”。沒有這一步你只能靠猜。第三升級無線棧之前先確認(rèn)當(dāng)前 FUS 版本和無線棧版本確保無線棧固件包與 FUS 兼容。版本不匹配導(dǎo)致 FUS 安裝失敗的情況比硬件問題常見得多。使用官方 OTA 例程時也要看清示例中給的無線棧版本不要隨手拿別的版本刷進(jìn)去。最后再分享一個排查技巧OTA 卡死時用 STM32CubeMonitor 或一個簡單的串口日志把 M4 側(cè)收到的 BLE 數(shù)據(jù)字節(jié)數(shù)和 FUS 返回的每一條命令狀態(tài)都記錄下來。我靠這招定位過很多“看起來像玄學(xué)”的升級失敗——其實(shí)只是某個包在傳輸層丟了但上層一直沒等回來。把日志打印到 Flash 尾巴上掉電也不丟。這樣即使設(shè)備徹底失聯(lián)接上 ST-Link 還能從 Flash 里把最后的現(xiàn)場數(shù)據(jù)讀出來比盲猜高效得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
www.六月丁香看AV| 色婷婷五月综合| 182tv992tv人之初午夜免费观看| 五月天丁香成人| 久久只有精| 青草视频在线观看视频 | 99在线视频喷水| 激情九月婷婷| 99精品大片| 免费黄色片子| 草草影院爱爱| 日韩三级视频一区二区| 日本精品人妻无码77777| 天天摸天天透天天舔| 九九精品99| 97超碰婷婷五月天| 精品人妻伦九区久久AAA片| 丁香六月婷婷| 色色色综合色| 五月丁香成人小说| 蜘蛛女侠2003满天星免费观看| 26UUU| 91免费试看| 五月色综合| 激情五月天综合网| 欧美性爱五月天| 人妻系列久久久久久久久久久| 久久激情五月网| 9久热精品在线视频| 天天日夜夜拍| 天天做天天爽| 中文字幕按摩做爰| 婷婷爱五月| 亚洲在线操| 免费观看的av| 婷婷五月天亚洲综合| 婷婷开心六月| 老司机伊人| 色视五月天婷婷| 丁香五月天在线观看视频| 人人性久久| 婷婷六月天| 淫五月停停| 色婷婷小说| www.夜夜| 99精品偷自拍| 国产人人操| 一本到不卡高清DVD| 国产成人网址| 男人的天堂婷婷色五月| 野外99热| 日本三级日本三级三级人妇四虎| 亚洲天堂热| 超碰人人91| 激情四射婷婷色色色| 日本色色影院| 久久激情视频| 六月丁香射婷婷欧美色图片 | 91日日日| 99热这里都是精品| 99热爆在线| 国产成人精品一区二区三区视频| 狠狠干最新地址| 99年操人人爽| 色色五月天com| 日本久草福利| 99色啊| 色婷婷久久综合久色| 亚洲性爱干干| 五月婷婷香| 日本色视| 九九热在线精品视频| 色欲天天综合网| 狠狠狠狠狠狠| 99久久.www| 九九色人| 啄木鸟丝袜美女福利视频| 开心婷婷五月天激情网| 第五色婷婷| 五月丁香婷婷色| 久九男女天堂| 99啪啪| 深爱激情网五月| 五月天a婷婷伊人| 去干网最新版本亚洲版| 色五月五月婷婷| 久久五月丁香| 高清成人综合| 综合五月亭亭9| 天天爽夜夜爽天天爽夜夜爽| www.日日夜夜.com| www.91在线看| 天天草天天日| 精品色色| 婷婷久久五月天丁香| 五月色婷婷综合色| 99碰网站| 涩 五月 婷婷 狠狠| 天天色综和网| 色欲午夜无码久久久久久张津瑜 | 毛片色五月| 欧洲亚洲免费视频9| 亚洲精品又粗又大又爽A片 | 色九九综合| 色婷婷成人做爰A片免费看网站| 亚洲av成人一区二区电影在线| 影视av久久久噜噜噜噜噜三级| 五月天色婷婷小说| 丁香婷婷大香蕉| 99热人人操人人操| 欧美婷婷五月天综合| 操一操干一干| 99爱操| 欧美综合五月丁香六月婷| 国产色色网站网址| 五月天婷婷激情| 日韩精品无码AV| 色性综合| 99ri在线观看视频| 久99热在线观看| 天天射综合网天天插| 国产精品大香蕉| 综合99在线| 99视频这里只有免费精品| 五月天婷婷在线播放免费| 99精在线| 日本色道视频网站| 啪啪激情网| 激情五月婷色| 激情六月丁| 日本少妇裸体做爰高潮片 | 99久热这里只有精品视频删减版| 婷婷九九| 成人视屏在线观看| 九九五月天| 999精品久久久久久久| 五月婷婷狠天天色综合| 婷婷在线播放| 最新精品视频99| 精品人妻伦一二三区久| 丁香五月婷婷婷婷欧美综合| 五月天精品| 久久99精品日本| 婷婷五月天在婷| 国产乱子轮XXX农村| BT综合在线视频观看| 丁香五月激情啪啪| 热九九九九| 九九无码视屏| 99久久高清视频| 六月亭亭久久综合激情| 天天肏天天舔AV| 久热最新视频| 绿色小导航AV| 久久综合干| 五月天综合激情网| 久久草大香蕉| 久久婷婷五月草视频| 99久久人妻精品无码二区| 婷婷久久欧美| 色色色五月天婷婷| 五月丁香亭亭| 五月在线婷色| 亚洲AV无码成人电影| 深爱丁香激情| 狠狠综合区| 天天日本夜夜谢| 九月丁香八月婷婷久久综合久97| 久久九九网| 啪啪啪综合网| 色天堂婷婷| 色婷婷丁香中文在线播放| 婷婷的五月天另类视频| AV在线免费播放| 日韩在线视频网站| 天天做天天爱天天搞| 五月婷婷激情网| 亚洲综合新99视频| 婷婷久久在线| 天天爱天天操| 免费不卡狠操美女视频网| 九九99热久久精品66中文字幕| 97色色色| 六月婷五月丁香| 综合狠久久| 五月亭亭性| Www99热| a在线观看| 色播五月婷婷综合| 超碰猛烈的性猛交| 精品久久久91久久影视网| 亚洲五月天婷婷综合| 九九超日本| 激情久久五月天| 欧美五月丁香啪啪响视频| 婷色天堂| 亚洲综合婷婷五月| 女人被躁到高潮嗷嗷叫小| 操日本三片99| 欧美色婷婷| 色五月天影视| 亚洲综合五月天婷婷| 欧美婷婷色五月网| 99这里都是精品6| 婷婷五月天激情四射五月天激情| 无码 av电影| 俺去也在线视频| 婷婷五月激情综合啪啪| 激情小说视频图片| 丁香六月激情网C0W| 色婷婷玖玖影院| 99精品国产热久久91色欲| 第四色五月激情网| 激情九九六月激情免费视频| 337p大胆噜噜噜噜噜91Av| 99热精品综合| 婷婷中文无码| .青娱乐天天操B| 日日夜夜狠狠操| 99免费热视频在线| 成人免费超碰| 国产这里只有精品| 激情五月五月婷婷| 天天舔天天摸天天射| 玖久久网站| 舔色婷婷| 亚洲Av入口| 丁香五月激情网| 亚洲综合成人网| 思思热久久久在线| 伊人五月天日日夜夜久久久天天| 99日在线观看视频| 国产一区二区av免费| 五月婷婷丁香五月婷婷丁香| 亚洲尤物在线| 欧美激情丁香五月| 东京热免费视频网站| 99在线观看精品视频| 丁香五月网在线观看| 久久视频婷婷| 五月丁香龟婷婷| 99欧州偷拍视频| 激情性爱五月天网页| 色综合中文| 日日操日日干| 天天操天天爱天天日| 人人操婷婷| 狠狠操狠狠操AV| 亚洲激情婷婷| www.av骚货| 淫荡家庭AV| 97国产精品女人碰碰| 国产99久久久国产精品免费看| 欧美综合激情丁香五月六月婷| 激情深爱婷婷网| 玖玖婷婷色| 成人在线观看精品| 欧美槡BBBB槡BBB少妇| 五月丁香婷婷色色| 婷婷综合亚洲| 丁香六月综合激情| 婷婷五月天播播| 欧洲日韩一区二区三区| 激情五月伊人婷婷| 亚州精品色情无码A片| 五月天久久激情| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 99热这里只有精品22| 五月天激情电影| 色综合xx| 五月丁香色婷婷伊人| 五月天丁香婷| 热99免费在线| 国产午夜精品一区二区| 99热99思午夜精品| 久久激情婷婷| 国产操逼视频网站| 久热爱大香蕉在线蜜臀悦色 | 六月五月丁香五月欧美| 永久无码色| 91超级碰在线视频| 久久多色| 中文字幕成人| 五月婷五月婷伊人伊人五月婷| 91丨九色丨熟女丰满| 久久久久久久久久久久63| 激情内射人妻1区2区3区| 久草热在线视频| 色色五月天丁香| 激情五月天开心| 狠狠草狠狠草| 久久综合五月天| 高清无码视频网址| 九艹在线| 91狠狠综合久久久| wwwss在线观看| 五月婷婷激情网| 夜夜干天天操| 天天插天天| 凹凸探花电影| 婷婷五月天首页| 日本在线噜噜| rr天天操| 武则天精品久久| 婷婷丁香花五月天| 操一区| 五月丁香黄色视频| 国产一区二区三区影院| 九色综合网| 天堂在线伊久| 亚洲综合999| 狠狠爱婷婷爱| 激情无码五月天| 狠狠色丁香99| 深爱激情六月天| 停婷丁五月在线| 91碰在线| 97色色网| 伊人超碰在线| 色欲九区| 人妻乱码久久久| 天天橾日日橾夜夜橾17| 人人摸人人| www九九| www.色五月| 人人摸人人操人人爱| 色婷婷小视频| 97人妻碰碰碰久| 美女五月激情| 婷婷久久丁香| 99热这里是精品| 日本在线观看99| 综合性爱网| 五月激情六月丁香| 黄页免费一级视频懂色| 色色色色热热| 99热无码首页| 五月婷婷综合网| 丁香88AV五月婷婷| 97碰久久| 综合深爱五月| 五月天婷婷久久视频| 婷婷丁香红五月91C| 国产午夜精品一区二区| 国产探花AV在线| 久久天天| 免费无码毛片一区二区A片| 操97在线观看| 丁香五月婷婷六月婷婷| 99精品视频免费| 伊人干综合| 国产乱妇无乱码大黄AA片| 婷婷新网址| 二色av| 丁香五月欧美色综合| 中文字幕丰满人妻无码专区| 色综合激情图区| 91精品91久久久中77777久久玖玖九九| 久久杏爱视频| 五月天婷婷免费| 欧美性生交XXXXX无码小说| 久久久婷丁香五月天激情综合| 综合婷婷六月| 日本超碰在线| 激情五月天婷婷色色色色色色色色色色色| 五月激情婷婷开心五月| 综合久久综合久久| 99啪在线| 亚洲久久婷婷| 欧美色婷婷| 久热超碰91| 日日干干天天干| 婷婷五月天AV| 亚洲色视频| 国产成人精品123区免费视频| 欧美激情中文字幕| 六月婷婷开心| 任你爽在线视频| 五月丁香啪啪啪| 久久人妻伦理| 五月停视频天堂| 天天 青草 制服丝袜 在线| 亚洲婷婷五月天激情| 亚洲熟妇AV乱码在线观看| 91九色小视频| 五月丁香婷草| www.91婷婷| 婷婷五点亚洲| 淫视馆av三区| 色五月婷婷婷婷| 精品婷婷| caopeng超碰| 色色五月天丁香| 丁香视频| 欧美Va日本Va| 国产资源在线视频| 色色亚洲| 日本欧美国产| 中文字幕综合| 欧美 日韩 成人 在线| 日日操日日撸| 啪啪东京热| 九九热精品6| 成人无码髙潮喷水A片| 色波激情五月天| 婷婷午夜天| 另类小说色婷婷| 婷婷五月情| 伊人久久大香蕉网| 日本啪啪天堂| 天天插天天插天天插天天插| 99er日韩| 欧美色色色| 激情q青青草在线婷婷| 亭亭五月丁香五月天激情| 9精品在线| 欧美在线操| 91人人超碰在线| 婷婷五月色天| 丁香婷婷五月色成人网站| 能看的AV| 婷婷久久五月天| 九九精品热| 看黄的网站18禁| 91色久| 任你艹| 久久久18| 国产99精品免费视频| 色五月婷婷五月天| 日本va视频| 嘿嘿视频免费看9| 久久99热这里只有精品| 97碰超级人人看| 亚洲激情av| 五月亭亭六月色| 成人做爰A片免费看视频| wwccc久久久| 婷婷色色网站| 91成人看片| 五月丁香婷婷基地| 人妻体体内射精一区二区| 色久五月| 另类 在线| 亚洲中文av| 精品亚洲国产成AV人片传媒| 丁香六月婷婷综合啪啪| 91碰| av中文字幕免费观看| 日日噜狠狠色| 五月天婷婷色色| 成人综合网站| 婷婷情爱五月天6| 色5月婷婷色| 欧美成人va| 国产精品久久久丁香五月八戒视频| 9精品国产在热久久| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 日本高清不卡免费一区二区三区| 久久大香蕉同僚| 狠狠操之狠狠操| 中文字幕操比影片| 99热精品中文字幕| 五月丁香六月婷婷视频| 97久久人人| 国产毛片精品一区二区色欲黄A片 国产人妻777人伦精品HD | 色 五月俺去也| 91九色大屁股| 亚洲亚洲人成综合网络| 成人免费在线电影| 狠狠色丁香99| 91狠狠色色丁香婷婷综合久久| 天天拍天天操| 开心婷婷中文字幕| 五月丁香六月激情狠狠| 国产精品成人AV在线| 色五月婷婷网| 国产精品成人AV在线| 丁香成人综合| 超碰二区| 先锋男人91资源| 色五月 五月婷婷| 婷婷五月天开心激情网| 激情五月天在线观看色婷婷| 超碰成人AV| 99ER热精品视频| 激情第四色| 精品国产va久久久久久久| 开心五月婷婷综合在线精品素人| 成人午夜天| 9久国产精品| dingxiangtingtingliuyue| 日韩九区| www.99久久久久99| 丁香五月之久操视频| 五月在线| 91超碰在线观看| 丁香婷婷视频一区二区| www.狠狠干| AV在线大香蕉| www.精品久9| 五月色情| 91啪啪| 天天噜日日噜综合无码| 99re热在线观看| 亚洲AV成人无码久久精品老人法拉利| 五月婷婷激情四季| 99er这里只有精品| 色婷婷亚洲| 激情婷婷综合网| 色五月丁香A欧美com| 97色色色| 五月色亚洲| 婷婷射图| 综激情网| 丁香久久综合| 五月天成人综合| 五月婷婷视频28| 久久婷五月综合色| 亚洲激情99| 深爱综合网| 一级精品999WWW| 五月天婷婷乱论小说| 色射婷婷五月天| 六月丁香综合999| 婷婷色五月综合丁香| 丁香五月久久| 天天情天天狠天天透| 97干免费视频| 久久色情| 色色综合无码| 色色色777| www.色婷婷| 五月天婷婷影院| 九九99九九99偷拍视频免费看| 干一干xxxx| 伊人九九综合| 色狠狠色综合久久久绯色AⅤ影视| 综合爱久久| 色婷婷最新域名| 成人 九九九九| 91精品久| 丁香五月婷婷天堂大香蕉| 金品在线视频99| 欧美性爱中文字幕| 欧美久热| 五月丁香六月婷婷在线小说视频| 森林影视大全,最好看的2019年视频 | 香蕉狠狠爱视频| 啪啪99| 欧美色图天堂网| 婷婷成人网五月天| 99综合婷婷五月| 六月丁香深深爱| www 五月天 com| 五月天激情子轮| 五月激情婷婷丁香| 婷婷性爱网| 99色| 99热每日| 黑人无码一区| 国产人妻操逼| 99色热视频| 国产色色色色| 中文字幕在线免费观看视频| 天天日天天色| 亚洲啪| 婷丁香五月天| 色亚洲视频| 国产婷婷五月天| 色综合五月| 99综合视频一体| 97久久视频| 日曰躁夜夜躁2026| 亚洲欧洲午夜成人精品av| 99热精品在线播放| 婷婷综合丁香| 色婷婷丁香综合中文字幕| 天天做天天爱高潮片| 五月亭亭六月激情| 欧美色五月| www.夜夜操.com| 国产成人AV不卡| 九九九九九九综合| 六月激情婷婷综合| 丁香综合婷婷五月天| 97人妻碰碰中文无码久热丝袜| 人妻少妇色综合| 老师把我爽高潮了免费A片| 91狠狠综合久久| 天天操,天天插| 九九热啪啪| 狠狠精品干练久久久无码中文字幕| 丁香色情五月综合激情| 久久亚洲婷婷综合色五月| 狠狠狠狠狠狠狠狠| 五月激情影院| 九九人人自拍| 久久精品永久免费| 99久久综合网| www.色色com| 五月婷丁香花| 婷婷丁香人妻天天爽| 日本狠狠色| 99免费青青蜜臀| 高清无码 一区 二区 三区| 狠狠干婷婷| 激情婷婷五月天| 99玖玖人人| 狠狠色激情在线| 丁香五月综合激情性爱| 婷婷综合九色伊人| 五月天激情综合在线| 99精品在这里| 色五月丁香五| 琪琪理论片| 激情五月丁香六月综合AVXXXX| 中文字幕按摩做爰| 久久丁香五月综合六月激情红杏视频| 涩综合婷婷| 无码激情AAAAA片-区区| 婷婷成人综合| www.色五月.com| 狠狠色丁香久久综合婷婷亚洲成人福利| 99色综合网| 五月天婷婷伊人| 人人操超碰| 婷婷丁香成人在线视频| 91chinese在线| 六月激情丁香一道本7777| 玖操97| 婷婷色5月天在线。| 手机旧版看人妻1025| 99久久婷婷综合| 久久婷婷六月综合资源| 五月天婷婷基地| 日本久久视频| 婷婷五月天社区| 久久婷婷五月综合色和| 欧美综合丁香网| 亚洲综合色网站| 五月天激情电影| 久久伦乱| 97亚洲婷婷| 中文在线视频久9| 五月丁香狠狠| 人人操9| 丁香网五月网| 青草视频在线播放| 五月激情婷婷播播网| 久久九九综合| 日韩一66精品| 天天爱天天操| 五月婷婷天天色| 另类小说五月天| 激情美女五月天| 国产激情综合五月久久| 天天舔天天插天天爱| 九九AV| 亚洲激情av| 婷婷五月天av| 久久五月视频| 嫩草AV久久伊人妇女超级A| 狠狠艹狠狠艹| 亚洲色无码A片一区二区麻豆| 国产六月婷婷| 激情五月婷婷色综合| 久久久久久五月天| 99久久高清视频| 日日噜噜夜夜狠狠久久丁香六月| 成人AV中文字幕| 五月天丁香综合| 99热久| 97久久视频| 五月天激情婷婷五月天久久| 色色欧美色色色| 在线可以看的av网址| 99干在线| 香蕉狠狠爱视频| 色婷婷手机在线| 青草视频在线观看视频| 婷婷综合五月色播| 97操碰视频| 日日干天天射| 99国产精品久久久久久久久久久 | 五月婷婷色五月| 婷婷六月丁香激情综合| 久久久久视剧HD| 五月丁香色婷婷色| 六月丁香花婷婷| 激情五月婷黄版| 亚洲色久| 成人婷婷色综合| 久久99网| 天天日天天舔天天摸| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 婷婷六月五月天综合| 色婷婷激情四射视频| 激情久久久| 六月丁香综合网| 狠狠色婷婷色| 五月丁香啪啪| 亚洲九九99精品视频在线播放| 2022久久婷婷| 欧美色五月| 色丁香婷婷| 亚洲成人一区| 丰滿爆乳一区二区三区| 九月丁香婷婷综合| 五月婷婷欲色| 91偷拍视频| 日本欧美成人片AAAA| 夜夜夜夜夜骑撸| 色婷视频| 色婷婷久久7777| 第五色婷婷| 国产精品热搜丁香五月婷婷| 97操在线视频| 中文字幕丰满乱孑伦无码专区 | 久久ER视频com| www.AV在线| 99久久久久| 99只有这里有精品在线视频| 99热香港| 99在线公开视频| AAA级久久久精品| 爆乳熟妇一区二区三区爆乳照片| 99色在线观看| 亚洲综合激情五月久久| 超碰人人操人人9| 激情五月激情综合网| 五月婷婷六月天| 五月天激情中文字幕| 99热在线精品观看| 99精品综合在线| 久久综合婷婷| 97干在线| 99久在线精品99re5热视频| 五月丁香色狠狠干大屄| 只有精品视频在线观看| 婷婷久久精品| 欧美成人精品一区二区| 激情q青青草在线婷婷| 久久久99免费视频| 五月婷婷综合在线视频| 狠狠狠狠狠干| 色色丁香| 人妻视频在线| 色五月AV| 天天色,天天日,天天做| 思思热性操| 欧洲激情网站| 大香蕉伊人99| 4399高清无码视频| 操日本色| 婷婷五月丁香色色| 北条麻妃九九九国产精品视频| 欧美激情VA永久在线播放| 日韩人妻在线观看| 99综合网| 婷婷五月丁香六月综合网| 99爱免费在线视频| 丁香五月在线观看综合| 丁香 婷婷五月| 7777激情基地| 99热日韩| 香蕉综合在线| 久久久激情视频| 大香蕉狼人久久| 五月婷免费视频| 亚洲情欲久久| 中文字幕精品推荐免费在线观| 精品亚洲国产成AV人片传媒| 国产毛片精品一区二区色欲黄A片 极品人妻VIDEOSSS人妻 | 91se精品国产| 激情婷婷丁香| 久99婷婷色综合| 激情亚洲五月| 91人人人人人人人| 99精彩视频在线观看| 丁香五月激情啪啪啪啪| 色婷婷久久9.com| 超碰无码老师| 久热re在线视频| 国产第99页| 免费看片操逼| a在线免费v| 五月丁香久人妻中文| 久操福利| 99开心五月五月丁香激情| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 婷婷五月天激情综合| 26uuu亚洲欧美另类| 人人摸人人射| av性爱在线| 久久视频在线| 色偷偷五月天| 婷婷射丁香| 婷婷伊人| 最近中文字幕大全免费版在线 | 精品久久9| 天天干天干| www.夜夜操| 琪琪色综合网站| 五月丁香777| 99热在线观看精品| 婷婷狠狠97| 五月丁香影院| 青草视频在线观看视频 | 玖玖综合网| 99无码视频| 99在线精品免费视频| 婷婷五月天av小说| 丁香密臀AV激情网| 激情综合啪啪啪| 手机激情网| 九九热最新地址| 亚洲激情视频在线观看| 亚洲精品V天堂中文字幕| 九九艹女| 国産精品| 视色网在线播放| 久热播这里只有精品| 九热免费视频| 强壮的公次次弄得我高潮A片日本 | 伊人九热| 另类伊人婷婷| 一本久久亚洲五月婷婷| 777色色色| 婷婷亚洲影院| 丁香五月天AV在线 | 9色资源在线| 成人网站免费在线播放| 色五月天综合| 丁香五月天社区| 亚洲色五月| av在线免费播放观看| 六月丁香中文字幕| 久久亚洲网| 中文在线视频久1| 日本久久精品| 狠狠色综合图片| 亚洲成人免费电影| 激情五月丁香六月婷婷| 久久9视频| 亚洲无码 图片区| 久久精品视频99| 丁香色情五月综合网站| 色999五月色| 99爱在线| 热的五码久久精品| 思思久久精品| 国产又粗又大又爽又黄| 五月婷婷久久久久| 丁香五月激情澎湃一区| 婷香五月| 一级韩国产精品毛| 丁香五月天激情婷婷丁香六月| 午夜丁香婷婷| 午夜69成人做爰视频| 中文精品在| 丁香五月激情婷婷| 另类小说色婷婷| 色色色97| 欧美啄木乌丝袜人妻系列| 99久在线精品99re8| 亚洲久艹| 三级大香蕉网| 色色色热热热| AV成人在线播放| 激情美女五月天激情在线| 婷婷色在线| 伊人狠狠色婷婷综合丁香一区| 婷五月丁香| 九九色图| 玖玖婷婷色五月| 婷婷五月天综合小说网| 人妻丰满精品一区二区A片| 影音先锋四区| 五月丁香五月综合欧美| 青青久久五月| 激情五月综合六月丁香婷婷狠狠干| 思思99久久| 无码AV大香线蕉伊人| 热久久思思热思思| 一起草av| 婷婷免费无马| 婷婷久久综合| 熟女国产在线一区二区三区四区| 中文aV网| 国自产拍偷拍精品啪啪一区二区| 97天堂| 亚洲综合久| 综合色影院| 亚洲色视频| 任我肏视频精品| 另类国产综合| 国产精品久久久爽爽爽麻豆色哟哟| 丁香婷婷久久| 婷婷久久亚洲| 综合婷婷久久| 久久99精品视频| 五月婷婷亚洲| 激情綜合網址| 色九亚洲| 色婷婷免费视频| 91综合色| 色综合综合色| 夜夜资源站| 婷婷五月天综合网| 日良久久| 99久久性爱| 黄色大片又大粗又爽| 五月丁香色| 欧美婷婷六月丁香综合色| 日韩欧美一级大黄网站| 亚洲精品亚洲人成人网| 欧美情月伍月天| 狠狠色综合网站久久久久| 亚洲成人综合在线| 思思热视频在线| 五月综合视频在线| 丁香婷婷噜噜| 超碰97色| 婷婷五月综合啪| 亚洲婷婷丁香| www.99热这里只有精品| 国产精品久久99| 色色婷婷五月天| 五月综合激情图片| 一级AV片| 洗浴中心操B视频| 久久丁香婷婷五月| 玖玖无码中文| 狠狠香婷婷五月| 农村熟妇高潮精品A片| 天天射天天射一道本日本社区| 九月丁香久久网| 婷婷五月天高清无码| www.9797国产| 99国产在线| 色婷婷在线综合色播网| 狠狠色色色| 久久 天天| 亚洲精品亚洲人成人网| www.激情| 婷婷 月 丁香| 国产ava| 婷婷五月天久久久| 99热首页在线30| 丁香综合久久| 日本三级韩三级99久久| 欧美色骚婷婷五月天 | 五月激情婷婷色| 日本天堂网站99| 亚洲第一成人无码A片| 婷婷色播色五月五色五月天色妇| 成人做爰黄A片免费看直播室男男| 这里只有精品免费观看网占| 欧美日韩成人一区二区| 婷婷五月激情综合| 无码色色| 色五月首页| 99原创自拍视频在线观看| 天天插综合| 婷婷五月色| 久久婷婷五月天大香蕉| 五月精品| 这里只有精品视频国产| 丁香五月成人自拍| 激情五月婷婷网| 激情综合另类| 97视频久久| 99视频| 人人九色| 天天干夜夜b| 亚洲无码yw| 精品一二三区久久AAA片| 99热在这里只有精品| 天天插天天玩天天干| 99精品综合在线| www.婷婷五月| 亚洲成人人人操| 丁香午月AV中文字幕| 日韩小视频在线99| 大香蕉五月天婷婷| 99热在线看| www.狠狠操.con| www.综合久久.com| 中文字幕丰满孑伦无码专区 | 99热精地址| 丁香综合网| 五月天堂六月丁香亚州中文字幕久久| 日日爽日日| 色XX综合网| 九九热只有这里是精品| 大香蕉Av在线| 久久大国产香蕉| 久久99网| 丁香五月香蕉| 涩丁香| 五月丁香成人网| 99性爱视频| 婷婷丁香激情五月天色色| 99精品在线播放| 婷五月天六| 97夫妻超碰| 99热最新| 激情六月天婷婷| 婷婷五月18永久免费视频| 亚洲 精品 综合 精品| 99精品在线观看视频| 亚洲精品另类| 国产熟妇乱子伦hd| 5月丁香啪啪啪| 亚洲啪啪网| 五月天综合激情网| 26uuu欧美亚洲日韩| 九九人妻福利| 九月丁香亭亭| 色天堂97| 五月天丁香看婷婷| 亚洲精品白浆高清久久久久久| 开心五月婷婷激情| 玖玖在线| 国产激情婷婷| 丁香六月激情综合啪啪| 26uuuavcom| 《战争与艾拉》完整版| 大香蕉久久伊人婷婷五月丁香| 丁香五月最新地址| 五月婷婷丁香网| 91 久热| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 亚洲无码11| 亚洲色五月婷婷| 五月亚洲| 国产精品香蕉| 深爱五月最新网址| 久久99久久99精品免观看软件 | 91操碰| 天天操婷婷| www.久久| 婷婷五月综合在线| 97热视频| 丁香婷婷性爱| 色综合久久天天综合网| 婷婷人人操| 五月激情网站| 综合AV在线| 性一交一乱一交A片久久四色| 久超超碰| 超碰人人草| 午夜丁香婷婷| 另类视频五月天| 亚洲操操操| 色色色999| 久久精品99国产精品日本| 婷婷五月天福利| 99热在线观看| 欧美成人猛片AAAAAAA| 黄色三级毛片中字| 狠狠色噜噜狠狠狠777奇米| 久综合4| 91主播在线| 伊人久久综合| www.久久久久久| 日本欧美国产| 色色日韩网| 五月丁香日本片| 久久婷婷五月草视频在线播放| 色婷婷在线视频久| 99热精品9| 人妻久久久久久久久久久| 啪啪激情综合| 亚洲精品99| 伊人青草成人| 26UUU精品一区二区Com| 日本操逼九九九九58日本操逼| 超碰熟女拍拍| 亚洲午夜一区二区| 五月天精品视频| 久久久婷婷| 五月婷婷色在线| 国产亚洲色婷婷久久99精品9j| 超碰在线综合| 激情五月,色五月| 99热日本| 另类小说激情五月天| 超碰免费99| 久久婷五月天| 中文字幕人妻一区二区| 性爱五月丁香| 99re99热| 天天做 天天爱| 成人电影AV在线观看| 九九久久精品| 欧美三级韩国三级日本三斤| 久久新| 欧美色骚婷婷五月天| 日韩精品二三区| WWW99热| CHINESE熟女老女人HD视频| 97超级碰碰碰久久久| 丁香九月综合激情| 五月婷婷色综图片| 99色亚洲| 欧美色婷婷| 在线视频九色97| 91碰碰视频| 天天舔天天| 激情人妻综合| 人妻丰满精品一区二区A片| 日本三级色| 婷婷五月天最新综合你懂的| www,五月天激情| 国产9色在线/日韩| 亚洲春色奇米影视| 激情99| 99热99精品在线观看| 亚洲无码色| 亚洲精品V天堂中文字幕| 天天久| 五月天激情美女久久| 丝袜激情网| 国产精品第一国产精品| 五月婷婷九九热| 色五月开心五月激情五月| 日日撸夜夜操| 国产全是老熟女太爽了| 4399高清无码视频| 日韩AAA| 五月丁香六月激情综合| 日本一级淫| 丁香九月激情| 97色色色色色| 99国产精品白浆在线观看免费| 激情五月婷婷啪啪| 激情五月婷婷在线区| 成人视频一区| 激情五月天福利| 日韩黄黄| 99久.| 大大香蕉综合在线| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 丁香六月成人网| 婷婷深爱五月天在线| 色婷婷久久综合| 狠狠操狠狠插| 天天色粽合合合合合合合| 久天综合| 国产26uuu| 成人草榴视频| 天天日综合网射| 色婷婷综合久久久久| 九色porny在线观看激情四射| 无码G高清天| 岛国av网站| 欧美色宗和激情| 欧美中文五月天| 9热成人在线视频| 激情五月天婷婷久久久久久久久久久 | 大香蕉五月丁香| 天天影视天天爽天天草| 丁香五月综合网| 欧洲亚洲免费视频区| 变态另类9| 97碰碰视频| 婷婷五月天激情诱惑| 婷婷五月欧美综合| 五月天快乐开心激情网| 狠狠色丁香| 色人久夂| 99精品视频在线观看| 狠狠色丁香久久综合婷婷亚洲成人福利| 婷婷九月激情网| 婷婷色中文字幕| 色五月天丁香| 五月天成人综合| 国产成人高清| 亚洲免费av在线| 五月丁香六月婷婷的女人| 亚洲最大五月天成人网| av免费在线看不卡无毒| 97深爱伊人综合| 99热成人| 久久丁香五月婷婷激情综合网| 79精品视频在线观看,| 中文字幕在线播放视频| 久久精彩视频| 色综合久网| 五月天婷婷婷| 吾爱AV导航| 五月丁香六月激情欧美综合| 人妻在线观看视频| 婷婷五月天亚洲丁香| 激情综合文学| 青青草原福利在线| 亚洲成人精品三区| 99在线亚洲| 成人网站高清无码| 国产亚洲色婷婷久久99精品91| 色婷婷玖玖影院| 天天噜| 伊人玖玖精品| 操久久网| 91碰碰| 日韩另类| 亚洲五月婷天天操| 丁香香蕉射射射| 99热这里只有精品2024| 婷婷九月久久| 色狠狠婷婷| 九九人人自拍| 97久久人人| 婷婷久久午夜网| 亚洲精品又粗又大又爽A片| 精品99爱免费视频在线观看| 婷婷色色综合| 色色色9| 91凹凸在线| 97色干| 99热国内| 97超美国视频在线观看| 爱草人视频| 91丨九色丨白浆秘| 99热最新| 这里只有精品99www| 五月天大香蕉婷| 欧美色五月| 综合狠狠伊人| 五月婷婷综合激情小说| 婷婷性爱五月天| 欧美色宗和激情| 中文字幕 码精品视频网站| 丁香五月丁香伊人| 五月丁香偷拍| 九九伊人网| 人人综合五月人人婷婷| 狠狠久久婷| 亚洲精品99| 成人色情五月天婷婷丁香| 五月婷性爱| 99热e| 色999五月色| 9 大屁股在线视频精品| 97碰在线视频| 777精品成人a v久久| 97丁香视频| 精品久久99码| 婷婷玉月丁香五月在线视频| 激情婷婷综合网| 五月丁香在线观看| 热99热9| 亚洲成人高清在线| 97在线观视频免费观看| 狠狠色噜噜狠狠狠888| 日本精品在线噜噜噜| 色五月丁香A欧美com| 婷婷五月综合社区| www.狠狠狠.com| 色开心五月丁香| 六月丁丁香| 怡红院视频| 天天日天天添| 五月天色欧美| 五月色综合|