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

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在线观看| 思思热性操| 久久99精品久| 丁香五月开心七月| 影音先锋女人AA鲁色资源| 婷婷丁香五月天中文字幕| 色综合com| www,奇米影视| 欧美肉大捧一进一出免费视频| 欧美99热| 久久一级片| 久久99热这里只频精品6学生| 99热99思午夜精品| 五月花综合| 人人操婷婷| 99碰碰| 深爱五月网| 26UUU成人网| 欧美天堂久久| 久久与婷婷| 久久精品熟女亚洲AV麻豆| 影音先锋色婷婷| www狠狠| 久久久婷婷婷| 他改变了拜占庭| sewuyuetingtingiii| 午夜不卡久久精品无码免费| 黄桃AV无码免费一区二区三区| 丁香五月婷婷激情蜜桃| 亚洲精品性色| 亚美欧色影院| 五月激情在线| 任你爽精品免费视频6| 99热精国产这里只有精品| 九九热99re8热免费观看| WWW.久久久久久久久久久久久| 91性高潮久久久久久久久| 婷婷五月情天| 金品在线视频99| 少妇大叫太大太粗太爽了A片| 国产一级婬片毛片| 五月天停停成人网| 99精在线| 92久久| 亚洲热视频| 香蕉AV777XXX色综合一区| 五月久久亚洲| 99热这里有精品| 99性爱视频网站| 国产片色| 五月丁香综合中文| 天天五月香欧美| 99综合免费视频| 日韩成人AV在线播放| 色色色色区| 色欲影香| 就99这里只有精品| 色爱亚洲| 色五月激情| 超碰在线成人| WwW色婷婷| 国产偷人爽久久久久久老妇APP| 在线只有精品| 天天综合精品| 伊人在线大香蕉网| 亚洲综合99| 五月天丁香久久| 五月丁香综合啪啪| 少妇人妻偷人精品无码视频新浪| 婷婷丁香成人| 五月婷天堂视频| 日噜噜色| 免费精品66| 五月丁香网av| 亚洲激情Av| 久久久久久久人妻| 伊人久久大香| 《诡秘之主》在线观看| 五月花丁香婷婷| 99精品综合视频| 97丁香五月| 久草A片| 日韩成人电影AV| 99色色网| 国产精品国产| 激情五月天婷婷视频| 五月激情综| 丁香 久久| 五月天综合婷婷| 五月天婷婷综合网| 五月天久久www| 五月亚洲激情| 99视频久久| 国产欧美性成人精品午夜| 色五月色情| 丁香五月婷婷黑人妻黄色电影院| 天堂中文国产| 婷婷五月天激情五月天深爱五月天| 丁香六月色情| 97色婷婷成人综合在线观看| 东北熟女视频99| 99综合在线| Va另类视频| 先锋资源婷婷| 狠狠狠狠青草| 99re这里只有精品视频了| 久99久视频| 色色综合网www| 99热这里是精品| 天天做 天天爱| 99精品在线| 久久久91精品| 五区毛片七区毛片| 九月激情婷婷丁香| 青青草深爱激情网| 中文字幕欧美日韩VA免费视频| 天堂成人A片永久免费网站 | 97涩婷婷| 综合五月天天天天天五月| 香蕉国产2013| 五月色丁香| 激情五月天www| 久99视频| 丁香激情五月综合网| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 91人妻人人做人碰人人爽九色| 青青草原亚洲天堂| www婷婷| 国产SUV精品一区二区883| 色综合中文| 人妻精品久久久久久久| 夜色热久| 天天插天天操| 永久热91| 免费黄色AV| 色五月色五天色情网址| 精品五月天| 97超碰,人人舔,人人操,人人摸| yw.av| 婷婷综合五月天激情| 人人97碰| 思思热国产视频| 五月丁香香蕉| 日韩一区二区在线播放| 国产真实乱了老女人视频| 色欲天天综合网| 五月停停999| 超碰AV成人| 久久激情五月天| 爆乳熟妇一区二区三区四区| 久久这里只有国产视频| 操婷婷基地| 99精品大片| 五月丁香久久激情综合| 五月婷婷在线免费观看| 大香蕉啪啪| 99人碰碰碰| 大香蕉伊人99| 婷婷在线视频| 丁香六月激情综合啪啪| 婷婷婷久久久| 日韩婷婷| 精品国产va久久久| www.超碰在线| 五月丁香婷婷五月色| 热热久久久久久久久| 大地9中文在线观看免费高清| 色婷婷国产精品综合在线观看| 色高清无码视频| 99在线精品免费视频| 人人添人人| 激情五月最新网址| 99热精品在线观看| 欧美激情五月| 丁香五月综合婷婷| 丁香五月天堂婷婷| 欧美色色色色色| a色色色色色| 人妻久久久| 精品九九视频| 婷婷色在线观看| 被强行糟蹋的女人A片| 色婷婷丁香AV综合| 99精品久久久久久久婷婷| 99热这里只有精品中文字幕| 五月婷婷激情综合视频| 中海油常州环保涂料有限公司| 大香蕉综合| 婷婷丁香五另类网站| 琪琪布丁香社区激情五月天| 五月伊人网| 亚洲 日韩色色| 韩国不卡AC视频| 五月婷婷色播| 99亚洲色| 亚洲成人色五月天| 综合99综合久久久久久久| 成人无码髙潮喷水A片| 五月天基地| 97资源碰碰在线| 极品人妻VIDEOSSS人妻| 丁香五月婷婷激情网| 九九成人精品| www.sd-xiangsu.cpm| 一起草日本| 99久久激情视频| 亚洲成人va| 性爱网五月天| 99免费偷拍视频| 超碰免费在线| 丁香五月在线| 色你久久| www.日本91| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 五月婷婷狠狠干| 中文字幕人成乱码在线观看| 国产激情综合五月久久| nvrentiantang av| 噜噜网免费视频| 亚洲综合网激情小说| 色情婷| 99热热热99精品丁香| 六月丁香综合| 操九色| 五月六月婷婷| 开心五月深爱婷婷| 婷婷亚洲色| 日日夜夜狠狠婷婷色| 国产色网站| 婷婷不卡基地| 久热re视频在线观看网站| 婷婷六月色| 成人电影AV在线观看| 日日舔夜夜操| 九九久热| 婷婷五月影院| www99精品| 五月婷婷激情久久| 99精品视频免费观看| 精品综合五月| 婷婷激情五月综合丁| 国产精品色色666| 久热综合| 中文字幕丰满乱孑伦无码专区| 日本三级99人妇网站| 婷婷五月天影院| 99精品热| 成人国产欧美大片一区| 国产毛片精品一区二区色欲黄A片| 天天爽天天摸天天爱| 五月丁香婷婷六月天| 再綫Av免费視品| 色情综合网| 99热国产| 免費亭亭成人| 五月天色婷婷基地| 思思热久热| 日日操天天| 五月花丁香婷婷| 五月婷婷狠狠干| 啪啪啪啪五月天| www.日日夜夜| 色色网站在线| 中文字幕黄色片| 大香蕉AV在线| 婷婷97狠狠成人网站| 亚洲 小说 欧美 激情 另类| 五月天久久综合婷婷丁香| 人人草人| 五月天另类小说| 色色色综合网| 九热网站| 激情综合无码| 狠狠操在线视频| 亚洲99在线视频| 99热在线免费| 99啪啪视频| 天天插天天插| 手机在线视频观看9| 日本天堂免费99| 97影院一级片| 精品51XX| 日日干天天爽| 91fuliwang| 99久精品视频| 欧美综合在线五月天色婷婷| 九九99热| 狠狠婷婷色| 精品九九网| 大香蕉五月天| 99re鈥哸鈥唙| 99精品在线观看| 色天使久久综合| 另类激情码| 熟女乱论网| 欧美日韩aaaa| 国产毛片精品一区二区色欲黄A片| 亚洲激情五月天| 国产精品a无线| 69久久久| 丁香五月激情欧欧美| 丁香五月婷婷在线视频| 丁香婷婷影院| 亚洲综合另类| 狠狠色噜噜| 丁香六月啪啪| 日本九九九九九九| 人妻久久久久久久久| 五月精品| 婷婷丁香激情五月天色色色| AV伊人青草丁香六月| 五月丁香无码| 99久久99综合| 亚州激情网站无码| 91丨九色丨东北熟女| 97人人操人人插| 丁香色色网| 久8色色| 超碰人人在线| 六月丁香停| 美女100%露全身无挡网站| 日本女人久久| 婷婷亚洲久久| 五月叮香啪| 精品夜夜澡人妻无码AV| 欧美色图天堂网| 熟女激情五月天| 中文字幕精品无码一区二区| jiujiu热在线视频| 99久re热视频精品98| 丁香五月欧美婷婷| 久久精品永久免费| 极品人妻VIDEOSSS人妻 | 国产黄色一级片| 99久久成人| 99视频只有精品| 亚洲操B视频| 99re热久久| 婷婷亚洲综合| 成人五月天婷婷| 91精品无码| 六月丁香成人| 狠狠干五月天| 99re热在线观看| 这里只有免费精品| 五月天激情黄色网址| 激情黄色小说五月天| 亭亭玉月丁香| 天天肏屄夜夜爽| 色婷婷狠狠| 亚州操逼网| 人人草人人爱| 91大神操美女| 五月婷婷片| 九九精品自拍| 色丁香久久| 就要爱综合| 激情综合网五月激情| 精品成人在线观看| 激情综合网五月| www。五月天激情| 五月天色图| 碰碰91| 操91| 天天综合色综合| 办公室少妇激情呻吟A片在线观看| www.婷婷,com| 91久久99久久91熟女精品| 久久看婷婷| 99碰超| 丁香五月婷婷狠狠色| 99re思思热久久| 99综合网| 色网五月婷婷| 丁香五月社区| 久久五月天色婷婷| 曰韩五月丁香色婷婷无码| 久久这里只有精品16| 玖玖色综合色| 一月婷婷色色| 日韩一区二区三区无码| www.五月婷| 超碰在线综合| 色综久久久| 欧美日韩二区在线| 丝袜激情网| 秋霞免费三级片| 国产做A爰片毛片A片美国| 99久久婷婷五月天| 色五月婷婷基地| 丁香五月婷婷色| 99惹精品视频| 91超碰在线观看| 中文字幕在线免费观看视频| 久久这里只| 91婷婷伊人牛牛| 99精品视频网| 婷婷五月天综合久久| 成人一级片| 五月丁香啪| 色XX综合网| 超碰在线人妻| 操操操91| 99热这里是精品| 99热在线这里| 天天成人综合| www.五月婷婷久久.com| 182无码| 天堂A∨在线| 久久久久99精品成人片| 大香蕉伊人久久| 99热人人艹| 超碰人人操人人干| 老司机伊人| 五月丁香美女视频| 色色五月天婷婷丁香| 成人片在线播放| 五月激情天天干| 亚洲VA欧美VA| 黄色成人网站在线播放| 1024在线视频| 欧美成人AAA片一区国产精品| 五月丁香亚洲五月| 五月丁香六月婷婷精品| 人人干99| 色玖玖玖| 色婷婷玖玖影院| AA片在线观看视频在线播放 | 日本三级99人妇网站| 五月丁香影院| 大香蕉中文| 色婷婷色人人射| 天天操天天日天天爱| 欧美123区免| 欧美69久成人做爰视频| 五月天丁香网站| 97精品综合久久内射| 国产肥白大熟妇BBBB视频| 91九色精品| www.99成人视频| 婷婷四月 成人 狠狠干| 激情综合5| 日本久久人| 字母不卡码人逼| 国产真实乱对白精彩| 九九久久99| 国产毛片精品一区二区色欲黄A片| 91人人操.COM| 久久婷婷色综合| 婷婷久久在线| 亚州综合色| 五月天久草| 在线观看日韩12345区| 国产成人片| 丁香五月激情五月| 五月天啪啪| 日狠狠| 久久九九热视频| 欧美在线干| 91九色视频| 99热日| 性爱久久| 丁香五月日韩| 激情综合网色播五月| 在线成人网站| 色情五月丁香| 国产偷人爽久久久久久老妇APP| www.色婷婷.com| 人人爱摸视频| 欧美 日韩 成人在线| 99热亚洲精品| 激情五月天 婷婷| 天天日综合| 99久久婷婷| 五月天成人综合| 国产亚洲精品AAAA片APP| 九九在线视频| WWW.HENHENL.| 婷婷97碰碰| 色色色999| 99 色色吧| 五月婷综合性中心| 婷婷综合精品视频97| 五月丁香六月天| 日韩成人中文字幕| 成人午夜视频精品一区| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 日韩大片艹艹| 激情五婷网| 丁香五月亚洲激情婷婷射| 99热只有精品在线播放| 丁香五月天激情AV| 天堂五月婷婷| 五月激情在线| 情一色一乱一伦一91A| 玖玖激情五月天| 99热99在线| 九九热这里只有国产精品| 五月丁香狠狠| 激情五月婷| www.五月天| 九九超日本| 91丨九色丨熟女高潮| 一區四區歐美日韓| 日亚二欧美| 51国精产品自偷自偷综合| 婷婷操无码| 怡春院久操| 激情文学天天| 天天干,夜夜爽| 亚洲一色色色色色色色色| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 色五月丁香婷婷| 婷婷综合性爱网| 97黑人精品区| 天天檫天天爽| 婷婷综合在线| 婷婷99热| 婷婷五月天黄色小说| 99热国产这里只有精品| 丁香五月久久社区| 伊人丁香五月| 丁香九月婷| 玖玖九九超碰| 538久久| 丁香五月综合激情啪啪| 97操资源婷婷| 黑人巨粗进入警花疼哭A片| 国产激情在线| www.丁香五月| 日韩黄色中文字幕| 天天久久人人| 色域五月婷婷丁香| 九九激情视频| 99热在线观看亚洲区| 无码色色色| 丁香五月网| 丁香婷婷色五月天| 99国产精品久久久久久久久久久 | 婷综合六月| 青青夜夜狠狠夜夜狠狠| 92久久| 五月深情久久| 亚洲无码九九| 婷婷操无码| 人人人人人人人人人草| 五月婷婷综合在线| 大香蕉啪啪网| 久久婷婷热| 97碰碰在线观看视频| 亚州性爱99| 亚洲蜜桃精久久久久久久久久久久| 色色色五月| 亚洲五月天婷婷综合| 99热精品在线观看| 五月天 综合 在线| 无码AV免费精品一区二区三区 | 丁香五月婷婷五月基地| 久色中文| 夜夜嗨一区二区三区直播内容 | 激情小说五月天| 九洲一级A片| 天天噜| 91九色无码内射| 天天狠狠干| 99热黄| 色婷婷小说| tingtingseav| 成人va在线播放| 99九精品| 色六月婷婷| 99热在线中文字幕| WWW.婷婷| 五月www| 天天色天天操天天射| 亚洲色情一区二区三区四区| 亚洲综合色成丁香五月色| 婷婷五月天亚洲激情戏精品| 久婷狼色诱惑在线| 日本狠狠网| 97色啪| 色五月天激情| 五月丁香激情综合网官网| 欧美内射AAAAAAXXXXX| 中文字幕日韩无码制服诱或| 人操91在线| 婷婷五月色激情欧美激情| 九九热re99re6在线精品| 亚洲AV综合网| 久久国产性爱A V| 疯狂做受XXXX高潮A片动画| 综合激情综合啪啪| 亚洲 欧洲 国产 伦综合| 超碰在线中文字幕| 五月天合网 | 国产精品人人做人人爽人人添| 97色色色| AA片在线观看视频在线播放| 这里只有精品网| 国产免费一区二区三区三州老师F1F1.CC| 激情综合亚洲色婷婷五月| 五月婷婷综合色啪首页| 中文无码婷婷| 天堂婷婷丁香六月网| 91综合色噜噜| 久久精彩视频| 色婷婷成人五月| 九九热99视频| 北条麻妃伊人| 这里只有精品免费视频| 五月开行婷婷色五月| 任你操精品免费| 国产伦亲子伦亲子视频观看| 亚洲美女网Va| 襙逼网| 无码髙清| 丁香五月婷婷天激情| 婷婷五月丁香色综合| 日日天天天| 青青草Avb在线| 丁香啪啪| 91久久精品无码一区二区三区| 九九青草热| 国产SUV精品一区二区6| 97九色视频| 俺去也在线官网| 久久久久9| 色色六月| 国产又黄又爽又色的免费| 色五月播五月| 亚洲九九99精品视频在线播放| 五月天婷婷综合色| 色色a| 99热这里有精品| 天天操夜夜玩!| 色欲色天天香综合| 九九中文字幕九| 99精品成人无码A片观看金桔| 婷婷五月天激情五月天| 影音先锋男人女人| 欧美色婷婷| 夜色综合网| 日日操天天爽| 韩国婷婷丁香五月| 久热2025无码| 深爱五月月天| 91色综合| 亚洲天99| 大香蕉狼人久久| 五月婷久久综合| 国产真人做爰视频免费| a久久| 久久久久久综合88| 国产婷婷综合在线免费视频| 色爱亚洲| 天天日夜夜拍| 九九热只有精品| 激情网婷婷婷| 久久婷婷五月综合色丁香| 五月婷婷色丁香| 操笔无码| 六月婷婷色五月| 日日日日做夜夜夜夜无码| 色色色色色色色色五月先| 丁香五月电影院在线观看| 日日操夜夜操中国无码| 精品九九久久| 五月婷婷色色网址| 婷婷综合九月| 久9视频免费播放| 99九九热视频免费| 日韩另类在线观看| 美女网黄| h在线看免费版在线看| 久久久婷婷婷| 五月婷婷六月丁香| 精品色色| 色婷婷激情五月天丁香| 精品9久| 婷婷五月在线| 九九热在线99| 99视频自拍| 大香蕉综合网| 六月婷婷无码观看| 人人人操B超碰| 婷婷五月在线播放| 青青草轻轻操| 五月天激情综合| 五月天婷婷影院| 日本不卡一区二区三区| 久久久久久久久18久久| 丁香五月激情月| 美女精品一级不卡视频| 日日做A爰片久久毛片A片英语| 婷婷成年人免费视频| 婷婷五月天激情网| 99九九久久| 午夜大香蕉| 九九成人电影婷婷| 五月婷婷六月丁香首页| 九九無碼| 婷婷五月色综合| 国产亚洲色婷婷久久99精品91| 伊人五月天婷婷| 丁香五月六月婷婷综合| 婷婷亚洲综合| 91n啪啪| 综合大香蕉| 亚洲五月天综合| 色五月天成人| 亚洲午夜av| 九九中文色色| 99精品国产在热久久| 91久女| 天堂色色色| 亚洲视频在线观看99| 色婷婷视频综合| 丁香婷婷五月综合色情| 色色五月婷婷狠狠| 538任你爽| 婷婷激情啪啪| 五月天天天色| 91热久| caopeng超碰| 色五月丁香五月天| 丁香激情五月天| 五月综合丁| AV 3P| 天天久久狠狠色综合| 狠狠婷婷色| 99操视频| 天天爽天天爽| 色啪久| 婷婷五月天激情四射五月天激情| 久久久久综合激动五月天| 久热只有精品| 欧美婷婷色| 综合亚洲六月婷婷在线| 久狠狠| 久久五月天激情| 婷婷97| 99.N在线视频| 狠狠色噜噜狠狠亚洲A∨| 美臀自射自家人妻| 婷婷五月天AV| 一区二区免费看| 超碰99热在线观看| 婷婷五月AV| 91久操| 粉嫩av懂色av蜜臀av熟妇| 激情五月四色| 综合天堂AV久久久久久久| 久久久人妻人伦| 综合网啪啪| 婷婷激情四射五月天| 五月丁香婷庭在线| 中文字幕丰满孑伦无码专区| 噜噜色五月| 六月婷婷激情| 久久久ww| 婷婷涩五月| 丁香婷婷综合激情五月色| 伊人五月成人| 91九九九九九九| A A色色| 内射在线CHINESE| 思思视频这里是精品| 五月丁香777| 久久婷婷伊人| 欧美色图天堂网| 日韩成人中文字幕| 色色丁香五月天| 性一交一乱一交A片久久四色| 日日做A爰片久久毛片A片英语| 欧亚中文A V| 亚洲第一精品网站| 久久久日韩特色特黄AAAA| 热99这里只有精品视频| 影音先锋美国A| 婷婷五月天无码熟女| 少妇性按摩无码中文A片| 99免费热在线精品| 五月丁香色综合| 久久五月婷综合网| 天天干在线播放| www.开心激情| 色色丁香色五月| 色五月婷婷老师| ′久久99一| 91婷婷在线| 97人人草| 99热这里有精品| 婷婷五月天激情综合深爱| 色五月婷婷在线观看第一页舔| 丁香五月天堂网| 色婷网| 亚洲婷婷六月天| 中文超碰视在线| 五月天久久婷婷| 亚洲无码成人| 婷婷导航| 四色AVwww| 99资源在线视频| 激情五月天电影| 色五月视频无码播放| 五月伊人91| 五月天激情婷婷| AV九九| 激情网 久久| 久久性爱视频网站| 97婷婷色| 久cao香蕉影院| 狠狠狠狠狠| 99噜噜噜在线播放| 五月婷婷综合天天操| 日本婷婷在线| 色婷婷国色天香综合| 日本nghangse中文字幕| 999热在线视频| 丁香伊人激情| 久热超碰91| 色婷婷中文字母五月丁香| 色色色五月天婷婷| 伊人久久大香蕉网| 亚洲婷婷丁香五月亚洲| 99啪在线| 久久er99热精品一区二区| 青青草激情网| www久久五月com| 99ri视频在线观看| 五月天婷婷小说| 五月婷婷丁香瑟瑟视频| 五月天色色色| 丁香色情五月综合激情| 五月天综合视频| AV五月婷婷露脸| 五月丁香亚洲校园欧美| ou洲色吧| 激情开心五月天| 天天日天天爽| 丁香五月天激情小说| 欧美激情综合色综合啪啪五月| 99re在线视频| 精品少妇蜜臀91| 久9久9久9久9久9久9| 久久激丁香| 久色资源| 99操免费视频| 精品无码99| 五月天综合缴情网网站0| 97超级操操| 婷婷在线五月综合| 91久久久久久久| 久99久在线观看| 丁香婷婷六月在线资源观看| 思思99热这里只有精品| 婷婷五月综合色中文字幕| 一本道在线电影| 成人片在线播放| 丁香五月天堂网| www.26uuu.com亚洲电影| 永久思思热在线| 人人人操| 综合99视频| 日日夜夜亚洲一区| 91中文狠狠综合| 久久xx| 99热伊人| 婷婷午夜精品久久久| 5月婷婷6月六月丁香| 俺去也在线视频| 婷婷伊人激情婷婷| 久久婷婷成人视频| 欧美色图45678| 91丨九色丨高潮丰满日本| 伦99热| 五月天激情图片网| 国内9l视频自拍老熟女九色| AAA级久久久精品| 熟妇无码乱子成人精品| 丁香婷婷啪啪| 夜夜操狠狠操| 五月丁香六月婷婷啪啪| 五月天婷婷色| 91狠狠综合久久久久久| 亚洲成人在线免费| 激情五月丁香五月| 99热国内精品| 久久永久视频| 九九热99视频| 97福利视频| 六月丁香婷| 天天操天天爱天天日| 97av在线视频| 99久久66| 婷婷六月激情啪啪| 五月丁香婷婷人体| 狠狠色噜噜狠狠狠888了| 久热这里只有精品视频6| 69激情小说| 99综合一区| 日日夜夜狠狠操| 99热这里有精品| 亚洲婷婷丁香| 天天色宗合| 免费观看的av| 不卡在线视频| 伊人成综合五月婷婷| 久久五月情| www,色婷婷| 91五月天| 26UUU亚洲欧美| 久久精品亚洲一级牲爱综合| 五月天色区| 国产精品久久..4399| 这里只有精彩视频| 国产AV一区二区三区最新精品 | 天天天天做夜夜夜夜做| 色女伊人| 操逼视频一区| 丁香五月天视频| 人人妖人人97| 亚洲免费观看高清完整版AV线| 精品视频网| 玖玖五月| 亚洲夜五月| 激情综合丁| 狠狠爱婷婷丁香| 六月婷婷激情| 婷婷不卡基地| 啪啪激情综合| 中文字幕日韩无码制服诱或| 亚洲色99| 五月丁香六月婷婷啪啪| 99九九这里有免费视频| 婷婷五月丁香91| 五月婷婷天天色| 人妻久久久久久久 | 色色爽爽天天| 手机激情网| 超碰爱爱爱| 少妇人妻偷人精品无码视频新浪| 99这里有精品视频| 五月亭久久无码视频| 大香蕉520| 五月婷婷丁香色吧网| 99免费热视频在线| 97一区二区| 九月丁香婷婷综合| 色丁香久久久| 久久久这里有精品| 婷五月天| 综合综合色色| 欧美日韩成人在线网站| 成人免费120分钟啪啪| 偷偷操99| www狠狠| 91操人视频| 五月天综合色| 五月天六月天| 婷婷涩五月| 五月婷婷综合成人| 国产精品久久久99视频| 99色在线视频| 激情九月婷婷九月| 丁香五月婷婷深五月| 五月丁香六月欧美综合网站| 性一交一乱一交A片久| 国产精品日日躁夜夜躁| 婷婷色Av| 伊人婷婷五月天| 在线观看欧美| 亚洲色情网站| 久久精品A片777777| 五月婷在线| 日韩精品一区二区亚洲AV观看| 色激情五月天| 97人人做| 爱婷婷都市激情| 丁香婷婷影院| 五月色欧美| 成人片在线播放| 99在线视频播放| 五月久视频| 亚洲成人日韩无码精品| 色天天久婷婷| 五月天色图| 九九九九毛片| 99riAv1国产在线观看| 一级性感毛片| 啪啪亚洲综合| 综合在线观看99| 九九在线免费观看| 国产av天堂| 色五月婷婷狠狠撸| 五月丁香六月成人| 五夜婷婷| 超碰亚洲天堂| 午夜成人AV在线| 精品久久9| 国产av影片| www.日韩国产| 九九色之九九色之88| 天天爽天天干| 激情久久 婷婷| 五月婷激情| 综合玖玖偷拍| 色色日本欧美| 国产免费一区二区三区三州老师F1F1.CC| 色五月丁香激情视频| 狠狠穞A片一區二區三區| 久久婷婷五月综合激情国产| 亚洲va在线∨a天堂va欧美va| 久热大香蕉| 99re免费精品视频| 大香蕉婷婷丁香天堂AV| 亚洲成人AV在线观看| 五月丁香啪啪激情| 一级黄色影片| 亚洲精品视频在线| 色欲五月天| 久久艹 五月天| 九九九九九九九热| 欧美,日韩成人在线| 老司机伊人| 丁香久月| 五月停亭六月,六月停亭的英语| 五月深情久久| 狠狠干综合| 97操在线视频| 超碰人人草| 色综合性视频| 99热亚州综合| 婷婷大乡焦噜噜| 五月天婷婷基地| 免费观看18视频网站| 婷婷色网站| 久9视频免费播放| 色色色成人网| 久久机热这里只有| 欧美日韩中国| 九色PORNY自拍成人精彩视频| 欧美久人人| 亚洲中文字幕AV| 六月综和久久| 激情色情五月天| 亚洲中文字幕AV| 深爱开心激情网| 99视频日韩| 97色婷婷成人综合在线观看| 综合激情五月丁香9999久久精| 色婷婷激情| 五月丁香六月综合激情网| 色青五月天| 五月婷在线| 九九热这里只有精品在线观看| 国成人网| 丁香激情网| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 色老久久| 欧美激情xxxXX| 国产亚洲av片| 五月丁香六月激情综合| 性天天中文网| 97碰| 一级AV片| 日韩欧美颜射| 久久A区B区| 丁香久久| 五月情涩综合婷婷| 色综合婷婷| 五月天天视频| 五月天自拍网| 久久免费9| 99视频日韩| 色情五月丁香| 九九亚洲| 思思热在线精品视频网站| 综合性爱网| 九月丁香婷婷基地| 亚洲激情网| 五月丁香六月婷婷无码| 这里只有精品视频国产| 91在线日本| 狠狠婷婷色| 天天天天天天操| 五月丁香六月婷婷色日| 色五月开心五月激情五月| 婷婷综合97| 涩涩激情五月婷婷| 婷婷五月丁香在线观看| 色色婷婷丁香五月天| 日韩在线看AV| 免费视频无码| 91九色丨国产丨爆乳| 色色色.COM| 婷婷五六日| 婷婷她六月天| 中文字幕综合| 一级七香蕉| 五月婷婷综合激情小说| 色五月婷婷五月天| WWW.99热| 婷婷五月天丁香社区| 欧美啄木乌丝袜人妻系列| 亚洲精品五十一区| 婷婷色婷婷亚洲成人| 91精品婷婷国产综合| 欧美激情 日韩无码 婷婷 五月天| 爆乳熟妇一区二区三区爆乳照片| 亭亭丁香久久五月| 91精品丝袜久久久久久| 色情五月天。| 色色色色区| 亚洲啪啪精品| 婷婷狠狠青青| av在线婷婷| 91919191919久久成人视频| 超碰碰碰碰| 狠狠操综合| 99re6久热只有精品6在线直播| 99热这里只有精品2| 天天操天天日天天爽| 五月天激情小说电影| 欧美成人无码高清一区二区三区| 免费超碰在线| 婷婷久久色| 综合网色综合| 国产在线自| 久久色9| 99玖玖在线视频| 99re在线视频| 久综合色| 九九热精品| 这里都是精品99| 六月丁香啪| 久久久月丁香| 第四色婷婷色五月| 五月丁六月婷| 色色 亚洲| 五月天亭亭俺也| 五月婷婷激情| 九九操操| 五月婷婷激情综合| 全部老头和老太XXXXX| 久草热8精品视频在线观看| 日韩欧美不卡| 色五月激情综合网站| 99日视频在线| 婷婷丁香激情综合色情| 久久五月婷| 婷丁香五月天| 另类视频丁香五月| 色色色色综合| 丁香五月婷婷亚洲综合精品| 97色在线| 深爱激情av| 丁香婷婷基地| 亚洲综合色婷婷| 开心激情站| 色婷婷av综合网| 亚洲色色五月天| 天天操天天日天天爱| 精品无码人妻一区| 激情五月狠狠| 日本高清久| 五月丁香狠狠爱| 影音 五月 婷婷 久久| 亚洲自拍天堂| 亚洲精品乱码久久久久久按摩观| 久99视频在线观看| 五月丁香六月婷婷综合在线| 五月色婷婷综合丁香精品无遮挡| 亚洲avjiujiur91| 欧洲第一久色| 91色涩| 亚洲熟妇AV乱码在线观看| 国产AV网页| 玖玖色综合| 五月天基地| 日本精品99网站| 96自拍视频九色在线观看| 久久婷婷五月激情综合| 色婷婷手机在线| 思思热久久久在线| 婷婷丁香成人| 五月婷婷 婷婷五月 一区二区 久久久 | 色婷婷六月天| 天天模,夜夜模夜夜爽| 激情久久久| 思思热精品在线观看| 久热69| 少妇水多A片太爽了| 欧美精品A片一区在线观看| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 久久久久久丁香五月| 六月丁香婷婷综合狠狠爱夜夜爱| 91大神操美女| 桃色成人网| 99人妻碰碰碰久久久久禁片| www.亚洲激情| 五月天婷婷综合| 99视频在线观看视频| 五月婷婷开心爱| 五月丁香亭亭操逼| 久热re视频在线观看网站| 超碰av在线| 婷婷五月天综合在线| 国产3p露脸普通话对白| 曰曰久久| 五月草视频| 熟妇人妻中文字幕无码老熟妇 | 日本情色一区二区| 五月色无码| 91男同| 2017人人操| 久久无码成人| 丁香婷婷精品视频| 天天日天天草| 久久久精品免费啪啪国| 婷婷开心深爱五月天| 天天天在线观看| 五月婷婷久久爱| 婷婷五月天深爱| 色色色综合色| 97视频91| 婷婷成人五月天成人文学| 色婷婷激情Av久久久| 日日日,com| 亚洲激情在线| 激情伊人网| 日本色色视频| 91操黄| 欧美色小说婷婷| 国产美女无遮挡裸体毛片A片| 久久3级片| 九九成人精品| 色色五月天激情| 这里只有精品视频222| 丁香六月激情| 五月丁香网站| 激情网五月| 久久五月情| 丁香六月情| 色婷综合| 99精品大片| 五月丁香婷婷激情爱爱| 色五月综合网| 六月婷婷综合网2| 国产日日夜夜操| 免费视频WWW在线观看网站| 色色综合成人网| 婷婷五月天社区| 激情五月天婷婷免费观看| 久久婷婷五月| 蜜乳9188| 思思久久99| 五月伊人综合| 亚洲九九夜夜| 丁香五月亭亭六月综合激情网| 天天综合 99久久婷婷| 婷婷五月天精品| 色五月五月婷婷| 色人久久| 国产激情综合五月久久|