免费国产精品自在自线-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
返回資訊列表
99小视频在线| 五月天狠狠色| 亚洲人成网亚洲欧洲无码久久| 丁香六月婷婷姐网| 在线视频99| 婷婷五月天开心网| 丁香婷婷黄网站| 91se在线视频| 久香草视频在线观看| 久久在线视频免费观看| 5月丁香啪啪啪| 秋霞少妇毛片| 成人视频网| 777久久综合视频| 丰满老熟妇BBBBB搡BBB| 26uuu日韩| 五月丁香久久呀| 1024国产| 日韩精品一品二区三区的使用体验| 久久这里面只有精品视频| 五月视频日本免费观看| 91 九色大美女| 亚洲婷婷五月天激情综合| 九月丁香网婷婷| www天天爽| 人妻久热| 草榴视频黄色网| 色婷婷五月天激情在线观看| 伊人超碰| 久久精品婷婷| 99re在线视频精品,这里只有精品18,| 91综合国免费久入| 日韩一级网站| 99热9| 婷婷亚洲在线| 狠狠五月激情婷婷直播片| 色欧美日| 精品成人无码A片观看香草视频| 亚洲欧美999| 国产激情综合| 99riAV国产精品视频| H亚洲| 九热视频| 97热精品| 99视频只有精品| 狠狠操.com| aaaa.黄| 丁香六月成人网| 91碰免费视频| 人人操9| 日韩成人影片网站| 亚洲激情综合五月婷婷啪啪| 热热久久99| 久久久人人人妻丝丝丝| 天天综合天天做天天综合| 久青草大香蕉| 91九色无码内射| 九九草草逼| 日日夜夜狠狠| 欧美色五月| 亚洲综合激情五月久久| 综合久久综合久久| 丁香五月婷婷激情网| 精品久久久久久久人妻| 婷婷六月激情综合| 色婷婷九月| 久婷五月| 五月丁香91| 色五月婷婷久久| 99久久激情视频| 色优久久| 成人在线观看一区| 99视频超级精品| 99久久国产宗和精品1上映| 丁香五月婷婷丫| 亚洲AV免费在线| 99精品高潮| 九月性爱网| 五月丁香六月激情网站| 激情淫乱男女| 久婷婷五月激情| 激情综合青草| 日本操B视频| 天天婷婷综合亚洲亚洲| 激情五月天丁香| 97超级啪啪在线观看| 婷婷中文网站| 天天综合图片| 99热这里只有精彩| www.99热| www激情| 在线色五月婷婷| 五月婷婷激情四月| 狼人婷婷久久| 五月天婷婷激情| 国产激情视频在线观看| 中文字幕丰满乱孑伦无码专区 | 五月婷婷丁香大陆免费| 色99色| 天天做天天爱天天爽| 99热都是精品| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 九九色色色| 精品激情| 婷婷综合成人五月天| 涩婷婷五月天在线精品视频 | 婷婷丁香激情综合色情| 九九热精品| 婷婷丁香大香蕉| 大香蕉婷婷丁香视频在线| 在线中文字幕视频| 丁香五月六月| 97干在线免费| 亭亭丁香久久五月| 九九激情网| 爱草人视频| 91狠狠综合久久| 九九99九九精品视频| 美女天天久久| av在线免费网站 | 热的无码综合视频| 国产3p露脸普通话对白| 久久这里只有国产| 久青草影院| 第五婷婷伊人丁香| 五月人人丁香婷婷五月人人丁香| 日婷婷久久开心| 国产69精品久久久久999小说| 亚洲AV成人精品网站在线播放| 色婷操逼| 成人片在线播放| 少妇人妻人伦A片| 色婷婷精品视频在线播放| 日韩不卡DvD| 欧美人妻一区二区| 丁香 亚洲 久久| 五月天电影网| 亚洲va在线| 色丁香五月婷婷| 亚洲五月婷婷| 这里只有精品久久| 国产日日夜夜操| 婷婷丁香人妻天天爽| 超碰亚洲欧美| 丁香五月花婷婷开心| 在线中文字幕av| 久热91精品| 丁五月激情视频免费| 久久久久视剧HD| 五月激情网综合| 91人人爱| 狠狠爱婷婷丁香| www.99免费视频| 五月天婷婷丁香蜜桃91| 亚洲成人在线观看av| 婷婷五月天六月综合| 亚洲综合九九| 熟女乱论网| 99久久九九| 182TV大香蕉| 操骚货在线| 色色色com| 深爱激情久久| www.丁香六月婷婷久久天堂影院.con| 天天成人五月天| 日本精品久久久久中文字幕 | 六月伊人婷婷| 五月色婷婷夜色| yazhou seshipin| 天天日日夜夜| 亚洲精品午夜国产va久久成人| 视频一区二区在线| 色婷婷导航| 如何安全看伊人婷婷| 色欲久久久久久综合网综合网| 天天操B| 色丁香五月| 色爽九九| 熟女少妇内射日韩亚洲| 九热...av| 91viP在线看| 深爱五月天 开心网| 色五月婷婷操逼| 超碰成人免费| 久久综合五月情| 亚洲这里只有精品| 99热国内| 懂色av蜜臀av粉嫩av永陈冠希| 婷婷色丁香五月| 在线区区区| 久久婷五月影院| 久久92| 九月大香蕉| 色婷婷在线视频| 婷婷五月天综合激情| 大战熟女丰满人妻AV| 六月丁香影院| 97久人人| 国产一级片| 人人舔人人| 热久久91| 丁香香蕉婷婷| 黄色中文字目| 99亚洲视频| 五月天激情小说婷婷基地| 97五月婷婷| 久久五月视频| 九九aV| 五月天婷婷高清无码| 综合视频久久| 91精品久久久久久综合五月天| 第四色婷婷色五月| 大香蕉狠狠爱主页| 亚洲精品视频在线| 色爱综合网| 色丁香六月| 五月婷婷大香蕉| 91操操| 五月丁香婷婷啪啪| 99热在线精品观看| 99色中文| 五月丁香六月婷婷成人电影| 丁香五月婷婷色播艳门照| 色999五月色| www网站在线观看| 色色色综合网| 99视频自拍| 久久人妻视频| 色五月综合资源推荐| 久热a| 99碰超| 激情性爱网站| 射久久丁香五月| 黄急一级视频| 中文字幕婷婷9月天| 丁香六月欧美| 99热综合| www.婷婷| 97婷婷五月| 五月天婷婷一起草| 天天日天天狠狠操| 26uuuu精品一区二区| 这里只有精品日韩| 九九色之九九色之88| 人人操AV| 国产美女无遮挡裸体毛片A片 | 激情图片婷婷| 日本婷久久| 亚洲乱码日产精品BD| 久久久8| 99热新网址| 久久精品夜色噜噜亚洲a∨| 99亚州综合精品成人网| 久久久久人妻精选| 激情六月色| 99色性爰网络| 99自拍网| 国产精产国品一二三在观看| 婷婷五月综合性爱| 伊人久久大香线蕉AV最新午夜| 久9热在线免费观看| 天天激情站| 日日操,天天操| 视色网在线播放| 这里只有视频精品| 激情婷婷丁香色五月| 天天日婷婷| 79色色| 激情五月天激情综合网| 99爱视频免费看| 99热这里只有精品无码| 日本色爽| 九九热在线观看视频| 狠狠操综合| 人人插操| 国产精品色婷婷99久久精品| 深爱丁香网| 97综合在线| 综合五月丁香久久| 五月成人综合| 日韩欧美一级大黄网站| 成人在线二区| 婷婷综合五月天| 狠狠艹狠狠艹| 婷婷无码五月天| 亚洲午夜视频| 亚洲综合色婷| 操人91| 色婷婷激情小说网| 丰满人妻一区二区三区| 五月丁香激情综合网| 黄色网址五月婷婷| 欧美在线97| 欧洲亚洲最新精品| 久99久热| 五月九九综合| henhencao国产在线| 婷婷综合精品视频97| 亚洲婷婷基地| 有码一区二区三区| 久久久久婷婷五月热综合| 婷婷五月丁香激情色情| 丁香五月天啪啪| 色婷丁香91| 久久婷丁香五月| 美女五月天婷婷| 这里只有精品网站| 成 人片 黄 色 大 片| 99久久高清视频| 婷婷在线视频| 色婷婷综合网| 五月丁香本色在线观看| 色五月丁香总合网| 91色五月| 色婷av| 五月婷伊人| 色色国产| 国产99久9在线+|+传媒| 婷婷五月天在线观看av| 五月婷婷色| 91久久九| 久久草婷婷丁香网站| 男人的天堂五月丁香| 日日操夜夜擼| 色婷婷五月天激情在线播放| 激情综合亚洲| 婷婷丁香五月麻豆| 日本婷婷五月天| 激情综合色婷婷啪啪五月天| 另类五月婷婷| 99热成人| 激情五月天激情网| 欧美色婷婷| 97色啪| 99在这里有精品| 天堂成人A片永久免费网站 | 99热这里有精品| 99久久.www| 婷婷五月天在婷| 丁香五月天啪啪| 97久久人人| 色婷婷丁香五月在线观看| 午夜天堂一区人妻| 好好日激情五月天| 八戒青柠影视剧在线观看| 五月婷婷色影院| 激情五月色婷婷| 91 久热| 天天爽曰日爽| 亞洲自怕| 五月婷婷第四色| 射婷婷中文字幕| 天堂爱爱| 三级av在线| 色。 日日日| 蜜桃人妻无码AV天堂三区| 成人色五月天婷婷| 婷婷中文字幕| 欧美3AaAa大片| 激情婷婷五月丁香啪啪啪| 丁香激情六月天婷婷| 99无码视频| 久久成人性爱| 五月丁香六月激情综合欧美| 色爱综合五月| 超碰在线观看9| 久久精品综合色| 久久久无码精品成人A片小说| 五月婷综合激情| 五月天婷婷社区| 青青草99热久久精品国| www.婷婷五月天| 色色激情网| 五月丁香六月情| 国产1区2区3区在线观| 婷婷五月丁香基地| 婷色成人| 五月婷久久综合| 玖玖在线资源视频| 人人插操| 九九在线精品| 99爱免费在线观看| 免费操超碰| 久久总和99| 五月丁香婷婷爱激情综合网| 色五月亚洲| 六月丁香婷婷综合在线| 五月丁香亚洲校园欧美| 色婷婷很很丝袜| 婷婷九色| 99热免费| 性天堂久久| 五月天激日本色情在线| 91热久| 色婷网| 狠狠色激情在线| 91av视频| 久久久中文| 26uuu亚洲精品国产| 97精品自拍视频| 久久久久这里只有精品| 特级西西4444www无码| 婷婷伊人综合中文字幕| 91黄色五月天视频| 婷婷色网| 色欲一区二区三区精品A片| 九九亚洲视频| 婷婷伊人五月丁香天堂网| 色五月婷婷综合| 五月丁香六月婷婷综合伊人| 婷婷五月色| 久久婷婷丁香花综合网| 26UUU欧美| 免费播放99性爱视频| 五月婷婷中文字幕| 伦乱人妻| 三年高清大片免费观看国语| 亚洲国产精品成人免费一区久久久在线观看AAAA| 国产特级毛片AAAAAAA高清| 亚洲色婷婷五月天| 六月婷婷影院| 婷婷五月蜜桃成人桃色丁香| 久天综合| 9久久网| 乱岳熟女50岁| 夜夜干夜夜操| 久草五月婷婷| 五月丁香啪啪网| 欧美丁香六月激情视频| 99热在线爱| 婷婷欧美激情| 久久精99| 九月性爱网| 国产毛片精品一区二区色欲黄A片| 9久热在线视频精品| 五月婷婷丁香六月在线| 青青五月天婷婷| 婷婷放心五日爱| 2020日日干| 在线精品97| 丰满少妇猛烈A片免费看观看 | 激情五月天电影| 99高级会所久久| 玖玖无码中文| 久久99操| 日本色色网| 日本99在线| AV中文字幕夜夜操b天天摸bb| 一点色成人网| 日韩一本操| 日日日日日| 色婷婷影院| 色色99| 久久性爱视频网站| 99色精品| 激情綜合網址| 97干网站| 日日夜夜婷婷| 国产这里只有精品| 免费观看18视频网站| 91九色在线| 精品人妻一区| 欧美性猛交 XXXX 乱大交| 婷婷五月天成人| 五月婷婷影| 久久狠狠干| 精品久久久人妻| 成人看片网站| 国产精产国品一二三在观看| 秋霞AV吧| 激情熟女网| 婷婷久久丁香五月| 噜综合| 婷婷另类开心| 这里只有精品视频一区| 天天噜| 女同激情久久av久久| 色婷婷久久综合| 久久综合人妻| 国产婷伊人| 色色色丁香| 欧美网站视频4399| 天天综合久久| 色情综合网| 五月丁香成年黄色| 97久久视频| 少妇高潮呻吟A片免费看软件| 激情98色婷婷五| 日本大逼91| 久久色五月| 久久九九视频网站| 热99只有里视频| 久久超视频| 看片视频在线免费日产在线看| 欧美经典片免费观看大全| 日韩黄在免| 五月天丁香欧美激情| 五月色丁香| 婷婷伊人激情婷婷| 99无码| 五月婷婷五月| 91seAV| 色综合com| 六月丁香综合999| 99热在线观看免费精品| 久久久99精品免费观看| 91视频精品99| 99国产性感视频| 91无码视频| 久久精品99国产精品日本| av五月天婷婷丁香| 亚洲va日| 久9免费视频| 久久精品国产精品| 激情久久久| 99欧美精品99日本精品| 看婷婷五月天网| 激情五月天小说| 欧美在线视频99| 狠狠色综合无线观看| 久久99网站| 丁香婷婷婷五月| 丁香五月天社区| 91久久九色| 激情五月无码| 亚洲激情综合| 五月丁香啪啪激情| 另类小说色婷婷| 超pen个人视频97| 成人av中文字幕| 性生活久久朋友人妻| 99热官网| 九九99免费视频| 婷婷成年人免费视频| 极品人妻VIDEOSSS人妻| 噜噜噜狠狠色综合| 五月婷婷人人人操| 9999热在线观看| 激情婷婷另类| 亚洲乱码日产精品BD| 久久9精品| 五月丁香六月婷婷在线| 日韩在线视频9色| 天天插天天射| 色婷婷综合视频| 激情婷婷六月天| 婷婷色色欧美综合网| 超黄亚洲瑟瑟网站| 天天射影院| 亚洲色碰| 亚洲五月花| 日韩久久色| 99热这里只有精品免费| 97伊人综合婷婷| 婷婷色丁香六月| 精品一区久热| 五月天婷婷永久免费视频| 1000部毛片A片免费观看| 色色丁香| 丁香六月婷婷| 天天人人天天爽| 丁香五月婷婷啪啪| 天天在线久久综合 | 性欧美大战久久久久久久83| 五月开心六月婷婷在线播放网站| 开心五月深爱五月| 色综合天天网| 免费观看欧美成人AA片爱我多深 | 操碰久| 丁香五月成人婷婷| 丁香伊人网| 99在线视频精品| 色五月激情| 丁香六月婷婷综合激情欧美| 五月天开心色情网| 狠狠色综合网| 婷婷综合六| 丁香五月停停av| 一级黄色尤物综合视频手机在线观看| 激情图片婷婷丁香五月| 丁香大香蕉| 五月开心婷婷网| 天天爽天天| 色综合久久天天综合网| 99在线爽| 久久伊人婷婷| 久久婷五月综合色| 五月婷综合激情| 久久久ww| 97涩涩丁香五月天| 99啪在线视频| 99热这里只有精品5| 亚洲十月婷婷综合| 欧美在线看| 六月色色| 国产精品扒开腿做爽爽爽A片唱戏| 99热在线中文字幕| 丁香六月av| 五月婷婷性爱| 武汉美女啪啪视频免费一级片| 色婷婷在线视频观看| 伊人婷婷五月天| 婷婷开心深爱五月天| 国产精品国产成人国产三级| 久久怕怕视频| 国产欧美婷婷| 91丨九色熟女丨首页| 人妻中文在线| 丁香婷在线| 午夜婷婷久久| 日韩成人精品中文字幕电影| 玖玖爱资源站| 亚洲综合婷婷五月天| 久操干| 无码人妻AV久久久一区二区三区| 亚洲人人操| 天堂爱爱| 久青操| 成人免费黄色短视频| 丁香五月激情综合| 婷婷五月免费在线| 99精品久久| 亚洲AV久久久久久久久久久久久久久久 | 狠狠色五月激情| 狠狠婷婷日韩| 538在线精品| 中文字幕av在线播放| xx色综合| 91超级碰碰| 久久国产高潮白浆免费观看99| 国产精品美女| www久久久久久久97| 五月综合激情视频| 色色自拍视频网站| 色九月欧美| 婷婷丁香大香蕉| 免费视频无码| 丁香六月啪| 五月激情婷婷丁香天堂| 色色亚卅| 狠狠色情婷婷| 激情五月婷黄版| 激情久久丁香| 久久9热综合| 在线观看免费人成视频无码| 激情色色| 激情婷婷五月天| 永久免费一区二区三区| 久机视频这只有精品| 五月婷婷婷婷婷婷艺术| 五月丁香天天| 欧洲亚洲免费视频区| WWW色色色COm| 啪啪 综合网| 9999热在线观看| 激情色情五月天| 日韩av免费版| www.色欲丁香婷婷| 9色资源在线| 桃色成人网| 人妻少妇色综合| 开心五月深爱五月| 99视频自拍| 五月丁香网站| 婷婷九月| 色播五月丁香| 99在线精品免费视频| 欧美性做爰大片免费看办公室| 丁香婷婷色五月激情综合| 狠狠色丁香| 婷婷久久综合| 九九热视频在线观看| 激情六月婷婷| 中文字幕日产A片在线看| 丁香色婷婷| 无码AV免费精品一区二区三区| 99网| 蒲京久久无码视频| 怡红院91a√| 六月婷婷九月丁香| 日本色色图| 婷婷久久婷婷色五月| 美女婷婷六月色| 亚洲婷婷婷| 五月天激情社区| 狠狠插狠狠操| 九久9精品| 亚洲操人| 伊人喵咪a V| 夜夜爱爱亚洲| 538任你爽| 电影《战争与艾拉》免费观看| 91免费在线视频6| 九玖欧洲亚洲| 午夜婷婷久久 | 伊人五月天| 中文幕无线码中文字蜜桃| 色婷婷呢狠禁久禁| 大香蕉狠狠爱主页| 日本怕怕视频| 激情综合网激情五月丁香| 91成人性爱视频| 99ri国产| 狠狠爱深色婷婷综合| 激情淫乱男女| 思思久久99热| 色婷视频| 色综合激情| 曰韩五月丁香色婷婷无码| 丁香五月婷婷亚洲另类| 99啪啪| 激情五月,深深爱五月| 99热这里只有精品99| 人人摸人人摸| 五月丁香婷婷激情图片| 国产精品久久久久久白浆色欲| 激情综合色五月六月婷婷| 亚洲狠狠干| 99re这里| 六月丁香啪| 国产婷婷色五月| 99爱免费视频| 天天干电影| 欧美123区免| 激情文学 综合 色| 婷婷丁香人妻天天| www.狠狠操| 啪啪黄页网| 日本性激情色播| 91中文在线| 综合一啪| 高清无码一区二区三区四区| 9色在线视频| 91精品刘玥| 精品视频这里只有精品| 婷婷五月天伊人| 久久久国产精品黄毛片| 99热99在线| 日日.c| 全部老头和老太XXXXX| 伊人狠狠丁香婷婷综合尤物| 婷婷五月图片小说视频| 狠狠五月天| 日韩不卡DvD| 这里只有精品1| 亚洲日本韩国| 99er精品| 婷婷丁香久久| 色女人久久| 天天日夜夜帕| 亚洲超碰青涩| 天天综合图片| 婷婷亚洲综合| 丁香婷婷六月婷婷六月婷婷六月婷婷| 国产.亚洲.欧洲视频在线| 婷婷色资源| 婷婷久久六月天| 激情五月综合网| 在线播放成人网站| 在线婷婷| 激情伊人| 99在线免费视频| 丁香五月天婷婷91| 精品人妻一区| 2013AV天堂| 开心五月网| 色九月综合网| 日本人人xxx| 啪啪视频99| 狠色色狠网| 97超级碰人人| 丁香月六月| 久久婷婷艹| 综合五月激情网| 内射 无码 伊人| 亚洲色婷婷五月| 亚洲va久久久噜噜噜久久天堂| 日韩成人精品一区久久久久| 男妓跪趴把舌头伸进我的嘴巴| 欧美成人无码高清一区二区三区| 日本久久精品| 婷婷九月激情| 国精产品一区一区三区免费视频| 少妇口诉沐足视频播放器网址| 99在线精品免费视频| 亚洲一区先锋影音| WWW.亚洲无码| 丁香久久| 成人在线综合| 在线观看中文字幕| 台湾综合丁香五月蜜桃| 无码少妇高潮喷水A片免费| 丁香花五月天| 色婷婷四虎| 久碰婷婷视频| WWW·天天操·视频?| 99网| 天天日,天天射,天天舔| 色吊丝中文字幕| 丁香婷婷五月色成人网站| 大香蕉综合| www.狠狠| 日日艹思思热| 九九大香蕉黄色影院| 99ri视频| 六月天六月婷| 婷婷激情五月天激情小说| 五月天停婷基地| 丁香五月五月婷婷欧美大香蕉| 狠狠色狠狠色综合日日91| 97婷婷久久丁香| 97资源碰碰| 色狠狠伊人久久五月丁香| 97久久精品视频| 丁香五月另类色婷婷麻豆| 色婷丁香五月| 亚洲第一影院高清无码网站| 色综合色综合网| 婷婷五月天伦理| 九九九九九九九九九九九九九国产精品| 99这里热| 五月丁香va| 天综合日日夜综合7799| 久久99网| 五月丁香激情婷婷| 91人妻色色网| 伊人在线大香蕉网| www.minyis.com【JT】实力收量可预付QQ2101460746 | 精品网站99| 热婷婷在线视频| www.91色| 色色色com| 久久99最新| 日韩一级网站| 国产露脸150部国语对白| 思思热在线| 天天操九九插| 久久婷婷五月天蜜桃| 91se视频| 色五月AV| 狠狠爱五月婷婷| 五月婷婷免费视频| 久久xxxx| 欧美日韩国产一区二区| 无人区码一码二码三码医生系列| 久久九九@| 婷婷伊人五月| 欧日韩AV| 丁香九月婷| 大香蕉人人网| 狠狠一日| 婷婷五月天丁香| 91无码视频| 少妇达人正片在线播放_ikun_福利吧| 777久久精品| 亚洲视频操| 最新久久99视频网站| 欧类av怡春院| 99热这里只有精品在线| 九月av| 激情五月,激情综合网| 天天日日天天| 俺也去婷婷五月天第五色| 久久WW| 色网站9| www.97视频| 天天综合色| 婷婷六月激情| 亚洲成人av在线播放| 79精品视频| 五月婷婷激情综合拍| 色99视| 爱性综合网| 丁香五月香蕉| 91尤物九色在线| 婷婷五月18永久免费网站| 碰99在线| 色和综合网| 日本少妇裸体做爰高潮片| 天天色天天操天天射| 婷婷综合色| 91人人网| 久青操| 99国产精品久久久久久久久久久| 99免费在线| 第四色婷婷丁香五月| 久久99成人性爱高清视频| 我爱婷婷五月天综合88| 色婷婷色久综| 五月婷婷之六月丁香| 开心婷婷五月天电影院| 日本无va视频| www.com操| 丁香五月色情| 五月婷在线视频免费看| 五月婷婷激情视频| 色色色综合网| 亚洲不卡| 日本天天色| 精品亚洲国产成AV人片传媒| 风流少妇A片一区二区蜜桃| 99ER热精品视频| A短视频免费在线观看| 伊人大综合| 色婷婷无吗| 亚洲AV免费国产电影| 99热销国产这里有精品| 四虎成人精品永久免费AV九九| 欧美在线操| 99re99热| 五月丁香六月合| 五月好婷婷| 六月丁香网| 色噜噜狠狠色综合日日| 五月色综合| 天天干在线播放| 九月av在线| 在线视频另类| 九热在线这里有精品6| 激情五月五月五月婷婷| 婷婷五月天小说网| 97碰碰视频在线观看| 婷婷五月在线观看| 久久婷婷九月国产精品| 亚洲免费视频网站| 成人视频一区| 五五月五月| 性色五月天| 天天干天天干天天操| 香蕉久久国产AV一区二区| 丁香五月天婷婷大香蕉| 精品五月天| 久久R激情| 9久热在线视频精品| www色婷婷久久综合久色| 操一操| 色三级色三级| 色婷婷六月| 日本系列_4页_777FP| 另类图片激情五月天| 久久久久丁香婷婷五月天| 夜夜撸天天操| 日韩精品呦呦va| 午夜色婷婷| 六月丁香影院| 激情婷婷六月天| 雪千夏麻豆| 色色色色欧洲| 激情99在线视频| 久久99热这里只有精品| 97碰 在线视频观看| 丁香九月激情| 97色色色色色| 精品亚洲国产成人A片在线鸭王| 色婷婷文字幕| 激情五月婷婷伊人| 91viP在线看| 91怕怕网| 五月社区丁香| 狠狠色婷婷7777久| 五月丁香偷拍| www,五月丁,com| 五月婷婷基地| 婷婷五月天毛片| va婷婷在线免费观看| 超碰免费人人| 青青999| 六月丁香婷婷天堂| 99热网站| 小色小蛇伊人婷婷色香五月| 天天干天天干天天干天天干天天| 久久久婷| 91丨九色丨白浆| 五月丁香六月激情欧美综合| 青柠影视免费高清电视剧| 中文字幕 码精品视频网站| 天天日,天天插| 日本V在线观看不卡视频网站| 好好干Av| 九九99九九99九九99视频网| 国内在线99视频| 色五月婷婷丁香婷婷| 五月婷婷综合视频| 婷婷五月天综合网| 久久玖玖综合| 婷婷伊人五月丁香天堂网| 天天日人人爽| 亚洲国产精品SUV| 去干网av| 99ri视频| 深夜男女福利刺激影院一区| 97热这里精品在线视频| 色一情一乱一乱一区9| www.狠狠干com| 人妻熟女一区二区AV| 久久久久久久久久久久久久人妻视频 | 久热re在线视频| 思思热国产| tingtingcaobi| 日韩av干| 日韩AV无码影片| 先锋男人99资源| 日本欧美成人片AAAA| 成人精品一区二区三区四区五区| 欧美色图天堂网| 超碰成人在线观看| 美女网黄| 九九Av| 99热这里只有精品22| 色丁香五月天| 亚洲激情综合网| 欧美色五月| 天天插天天爱| 亚洲性爱干干| 国产肥白大熟妇BBBB视频| 亚洲视频丁香网va| 久久精品国产AV一区二区三区 | 99热精品在线播放| 久草视频大香蕉99| 国产激情婷婷| 丁香五月婷婷欧美激情-中文天堂最新版在线观看 | 99狠狠色| 开心五月婷婷激情| 五月天婷婷基地丁香| 婷婷亚洲色| 六月婷婷日| 97碰碰草| 亚洲激情网| 天天久综合网永久入口17v| 丁香五月婷婷基地| www.91.com处女在线直播| 日韩免费视频| 99这里有精品视频视频| 激情四射婷婷色色色| www久| 91精品熟女| 97成人丁香| 久色大| 丁香5月激情网| 色五月激情五月| 激情VA视频| 99视频久久| 免费看欧美成人A片无码| 玖玖资源站视频| 色哟哟性爱av| 人妻人人操| 99日这里只有精品| AV成人在线播放| 色情综合网| 天天天久久人人人合| 超碰激情网| 欧类av怡春院| 色婷婷五月天在线观看| 亭亭五月丁香综合欧美| 婷婷综合婷婷| 五月丁香啪啪综合| 国产Va视频| 国产精品岛国片在线观看免费| 久热9| 六月狠狠综合| 91色婷婷综合久久中文字幕二区| 久久视频在线视频| 在线观看亚洲AV| 伊人六月无码视频| 中文字幕,综合,91| 丁香五月花| 99干日本| 天天草天天日| 五月丁香婷婷综合| 婷婷五月另类网站| 26uuu国产| 五月天综合激情网| 深爱 五月天| 黄色91在线观看| 成人做爰高潮A片免费视频| 精品爆操| 永久地址 色| 26uuu欧美日韩| 99婷婷五月天激情| 精品国产乱码久久久久夜深人妻| 99视频激情四射| 亚洲精品久久久久久久久久吃药| 国产精典视频在线观看| 色色9 9| 五月天婷婷基地| 激情99| 无码网站视频| 少妇婷婷五月天| 色综合com| 欧美婷婷综合网| 中文字幕 中文字幕明步| aa久久| 久久激情网| 婷婷五月天另类网站| 激情综合4月| 五月丁香婷中文| 一级黄色操B| 婷婷五月天99综合网站| 久热久| 亚洲成人在线播放| 午夜婷婷久久 | 亚洲综合色婷婷| 99网| 天天舔天天摸视频| 日韩婷婷五月天| 色5在线| 婷婷五月综合在线| 99热综合色图| 成人免费视频一区| 九九久久玖玖爱| 丁香五月天天久久综合小说| 超碰免费人人| 99热这| 亚洲精品无码久久| 欧美Va婷色| 欧美性爱五月天| 五月六月丁香激情| 99热这里只有精品最新地址获取| 国熟女视频| 人人添人人| 五月熟妇婷婷久久| 亚洲色色爱| 九九爱这里只有精品| 久久视频66| 亚洲人成网亚洲欧洲无码久久| 色综合激情| 成人网站免费在线播放| 丁香五月天婷婷中文字幕| 狠狠搞狠狠操| 五月天激情综合| 国产激情在线| 五月天天综合| 欧美综合五月丁香六月婷| WWW.婷婷五月天.COM| 激情床戏| 五月天综合在线| 九九激情| 国产精品久久久久久久久久| 亚洲国产精品二二三三区| 亚洲深喉aV| 丁香花综合永久入口| 91人人爽人人操| A级毛片高清免费不卡播放谢谢谢谢| 大香蕉伊在| 日本啪啪网| 久热精品视频在线观| 开心婷婷五月激情网小说| 77799热| 夜夜操少妇| 青青草原精品久久| 亚洲五月天另类小说图片| 亭亭色网| 色五月首页| 日韩青青| 国产永久一黄| 亚洲国产成人在线| 综合激情网五月激情| 五月婷婷综合色啪首页| 欧美美美女性色视频| 五月丁香激情综合久久| 99久久99九九九99九他书对| 色五月 五月婷婷| 久久性爱网| yiqicaoav| 欧美六月| 五月丁香天天| 色视频五月天| 久婷| 成人国产欧美大片一区| 婷婷丁香黄色| 337p大胆噜噜噜噜噜91Av| 国产寻花在线| 五月天桃色深爱网| 99精品在线观看| 丁香花狠狠婷婷亚洲中文字幕| 操比激情五月综合| sS丁香五月婷婷| 26UUU欧美| 九九这里有精品| 国产av第一专区| www九九| 这里只有免费的精品| 青青草轻轻操| 国产乱妇无乱码大黄AA片| 狠狠色丁香婷婷| 开心婷婷五月激情网小说| 激情五月天伊人影院| 99亚州综合精品成人网| 色欲色欲久久宗合网| 大香蕉久久草| 影音先锋 婷婷| 中文字幕AV网址| 99燥99日| 色婷婷综合久久久久| 我要看激情五月天| 色五月六月| 97在线视频 欧美| 99re思思在线视频| 少妇搡BBBB搡BBB搡毛茸茸 | 天天色综合色色色色色。| 九九综舍久久| 婷婷激情鹿城五月天| 国产免费一区二区三州老师F1F1| 中文字幕乱码亚洲精品一区| 综合激情五月婷婷| 五月丁香激情综合六月涩涩爱| 婷婷五月天综合久久| 婷婷五月五月丁香| 蜜臀AV在线成人| 开心激情播播五月天| 91丨九色丨东北熟女| 日韩精品一区二区亚洲AV观看| 五月天成人在线精品| 激情四射五月天| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 婷婷激情五月天天天开心| 天天操婷婷| 狠狠婷婷色| 婷婷色色狠狠| 伊人五月婷婷| 超级碰碰碰久久网站| 成人婷婷色五月天| 91成人品| 五月天停婷基地| 日本熟女内射| 亚洲视频一区| 色色综合网站| 99视频在线播放大全| 久久婷婷大香蕉| 五月婷婷之激情五月| 操一区| 欧美精品999| 91凹凸在线| 欧美久人人| 成 人 色 色| 1024操逼| 人人天堂操| 亚洲精品一区中文字幕乱码| 色婷婷五月影视| 欧美99热| 久久六月天| 91碰超| 99在线视频免费| 夜夜骑夜夜操| 影音先锋91视频| 成人综合伍月天| 99色热综合| 婷婷五月伦理| 色啦啦视频| 五月天激情婷婷小说| 我淫我色婷婷五月天激情四射| 色色婷五月天| 日本不卡一区二区三区| 天天干天天日天天插| 开心婷婷五月| 亚洲精品乱码久久久久久综合| 色五月婷婷五月天| 好吊操这里只有精品| 99精品在线观看| 欧美丁香六月在线观看视频| 精品一区二区三区免费毛片爱| 国产日批视频| 日韩黄在免| 婷婷日日夜夜| 色色色婷婷| 色欲婷婷五月天|