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
返回資訊列表
国产午夜精品一区二区| 678五月丁香亚洲综合| 99热日韩| 丁香婷婷色情社区成人小说| 亚洲五月天天| 色色丁香| 91黄址| 国产肥白大熟妇BBBB视频| 色在线视频网2025| 婷婷五月天人妻| 亚洲综合久| 久久五月婷天天干| 成人午夜天| 久色大| 五月的婷婷六月丁香| 五月亭亭色| 乱精品一区字幕二区| 噜噜噜噜综合在线| 丁香五月停停av| 色五月综合在线| 日本色超碰| 九色PORNY9l原创自拍| 99热久| 六月丁香综合999| 久久久www| 五月天婷婷久草丁香| www.久久| 色婷婷99| 99在线精品免费视频| 91操在线视频| 婷色五月| 9久精品| 色婷婷久久| 色五月婷婷老师| 97色色色视频| 六月丁香综合| www.91在线观看| 99色色色色| 狠狠狠人妻| 色久播播| 久久99热免费| 婷婷五月婷婷五月天| 丁香婷婷久久 | 五月天.com| 日韩三级高清无码| 五月天激情网站| 亚洲狠狠操| 色色色综合视频| 色播丁香| 深爱激情五月天色婷婷| 99热国产在线| 婷婷欧美激情综合| 婷婷亚洲综合| 色色三级视频| 婷婷五月天大香蕉| 九九Av| 日本三级中国三级99人妇网站| 色色五月天丁香婷婷| 伊人激情网| 超91热| 99天天操夜夜操| 成人免费黄色短视频| 极品人妻VIDEOSSS人妻 | 国产av一区二区三区| 亚洲国产精品SUV| 丁香五月婷婷啪啪| 午夜日日| 丁香五月1页| 六月婷婷之青青草| 激情六月日韩| 97人人干| 亚洲欧洲美女在线观| 琪琪狠狠干| 色月丁| 影音先锋 一区| 日本一级一片免费视频| 久久香蕉婷婷五月天| 日韩色情亚洲五月天婷婷| 久久久久久丁香五月| 色五月在线视频观看| 五月天婷婷激情| 国产精品大香蕉| 亚洲操操操| 亚洲精品V天堂中文字幕| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 国内久久婷婷| 99开心五月五月丁香激情| 丁香综合伊人| 天天艹夜夜艹| 黑人巨粗进入警花疼哭A片| 久久婷婷超碰| 九九精品片一| 亚州操操| 一起草日本| 婷婷射综合| 五月天激情网图片 - 百度| 色色色色色爱| 婷婷五月天福利| 超碰人人插| 日韩一级A片黄色| www.25五月婷婷| 99热久草| 无码AV免费精品一区二区三区| 五月停亭久久电影| 欧美婷婷五月无砖| 丁香五月六月综合激情| 色色色五月婷| se影音资源在线观看| 97人人干| 婷婷永久在线| 久久九区| 精品久久婷婷| 播播网色播播| www.1024久久| 亚洲99在线视频| 婷婷五月丁香久久| 密乳Va| 五月丁香激情婷婷综合字幕| 超碰免费人人| 182TV大香蕉| 日韩av干| 亚洲亚洲人成综合网络| 久久综合网免费视频| 天天综合亚洲| 91九九九九九九| 色啪网| 九九婷婷五月天| 久久九色| 五月丁香亚洲校园欧美| 婷婷导航| 丁香五月激情天AV无码| 久久五月丁香| 全网最新网黄大秀直播高清,主播国产录屏在线 | 99热综合| 涩涩涩,com| 五月激情婷婷播播开心| 色欧美日| 天天舔天天摸| 久久久久8888| 色色色图| 美女丁香五月天| 五月丁香婷婷色| 手机旧版看人妻1025| 九九激情视频| 香焦网五月天| 另类专区在线| 五月份婷婷| 激情九月婷婷| 美女婷婷六月色| 啪啪啪大香蕉| 爱的综合网| 一本道在线电影| 欧美在线骚货| 久草婷妨| 九九这里是免费的视频5| AV成人在线播放| 99热这里只有精品在线观看| 久久人人九| www.婷婷| 激情丁香婷婷五月天| 天天射美女| 丁香久久综合| 99视频内射三四| 免费成人va| 激情第四色| 韩国情人在线电视剧免费观看高清版全集| 国产人妻人伦精品一区二区| 成人视频婷婷| 人人干天天舔| 97在线日韩| 97 A I色色| 青青草Avb在线| 婷婷免费视频| 99国产小视频2013| 热久免费视频9| 久久免片| 五月天六月丁香| 91精品久久久久久久久久| 婷婷五月天熟妇| 色级停停| AA丁香综合激情| 开心婷婷五月花| 丁香五月大香蕉在线99| 五月色色色| 性爱动图国产麻豆一区二区三区| 婷婷五月综合丁香久久| 亚洲综合五月天婷婷丁香| 激情小说五月天| 欧美成人精品A片免费一区99| 亚州日本欧州韩美高青高潮一| 5月丁香美女影院| 婷婷六月五月| 99热久只有精品首页| 99热午夜精品| 九九精品热| 丁香五月天婷婷久久综合| av在线免费播放观看| 人人摸人人澡人人| 色情五月天婷婷| 亚洲乱码日产精品BD在线观看| av网址在线| 深爱 五月天| 天天碰夜夜操| 五月丁香激情综合网| 玖久精品视频9| 丁香婷婷久久综合在线| 日韩精品AV一区二区三区| 开心五月天激情网站| 色婷婷久久久| 亚洲视频在线网| 色五月婷婷中文字幕| 我爱宗和色| 超碰在线99热| 日本少妇AA一级特黄大片| 六月婷婷综合| 五月丁香六月成人| 激情六月天婷婷| 激情综合网络插| 日逼影音先锋AV男人资源站| 日韩成人精品中文字幕电影| 五月天精品| 热99在线精品| EEUSS鲁片一区二区三区| 99热无码精品| 六月婷婷无码| 久热这里只有精品性色AV| 丁香六月激情综合网| 欧洲色色| 无码免费人妻A片AAA毛片西瓜 | 天天操比比| 婷婷五月天开心激情网| 色五月婷婷DVD| 天天草人人摸| 久久久久久久久久久久久久人妻视频 | 美国不卡视频| 大香伊人婷婷| 伊人青涩网| www.9操| 五月婷婷色五月| 国产激情在线| 丁香五月六月综合激情| 五月婷婷,狠狠操| 婷婷五月天激情五月天深爱五月天| 五月激情丁香久久综合网| 91人人爽狠狠狠| 国产免费av在线| 色婷婷AV在线观看| 色婷婷综合丁香五月天| 成人色图情色成人网 www.5b5b5bcom 五月天 | 五月丁香六月婷婷成人| 色婷婷综合在线| 婷婷五月丁香性爱| wwww.色婷婷| 最新婷婷五月丁香| 欧美激情久| 六月婷婷最新网址| 九九热中文| 99热1| 夜夜躁婷婷AV| 激情五月天黄色小说| 久久性视频| 五月天开心色情网| 色婷婷丁香六月| 精品人妻伦| 99热这里只有精品手机在线观看| 天天色伊人| 久久A热| 互月天综合| 丁香六月天婷婷开心综合| 婷婷激情五月综合丁香社| 国产在线另类五月婷婷| 激情开心五月天| 99热99极品观看| 九九99热| 能看的av| www:99热视频| 天天爱天天日| 亚洲色色香蕉| 亚洲成人免费在线| 69超碰在线| 黄色高清无码| 99在线精品视频| 五月丁香婷婷啪啪| 五月天激情开心网| 婷婷性爱影院| 51精品国自产在线| 97碰碰在线观看视频| 亚洲第一成人无码A片| 丁香五月天导航| 亚洲色情免费网| 久久性爰视频这里只有精品| 99热在线精品观看| 狠狠干最新地址| 免费操超碰| 无码激情| 亚艹艹| 亚洲无码播放| 91re色综合视频| 色婷婷超碰| 99热免费精品热久久66| 最新va在线播放| 99精品在线| 五月综合激情久久| 秋霞免费三级片| 婷婷精品在线| 亚洲色五月天| 精品99在线观看| 操操操操操操婷婷五月天| 狠狠操狠狠狠| 丁香五月天堂| 丁香花五月天社区| 色五月在线| 婷婷婷婷婷婷婷婷| 黄色片久久| 丁香婷婷五月色成人网站| 99精品这里只有免费视频| 26uuu亚洲欧美日本| 丁香色五月 97干| 另类丁香五月天区图| 婷婷五月丁香花综合| 五月丁香色婷婷基地| 黄色片区子| 婷婷五月在线影院| 日日干日日色| 天天天天操| 丁香五月婷婷激情完整版| 亚洲婷婷丁香五月天激情小说| 婷婷五月综合视频免费播放| 婷婷丁香18| 看婷婷五月天网| 天天做天天爱天天爽| 亚洲蜜桃精久久久久久久久久久久| 啪色综合| 这里只有精品视频在线| 激情婷婷综合网| 亚洲色vA| 琪琪色综合网站| 色婷婷婷av| 色婷婷精品视频| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 91性高潮久久久久久久久| 国产一区18| 色五月六月婷婷| 狠狠干综合| 色婷婷丁香五月天| 国产激情久久| 亚洲激情网| 日本三级中国三级99| 久久激情四射| 精a品a| www久久久久久久久久久久久久久久久| 婷婷五月深情丁香深爱日韩| 亚洲免费婷婷| 伦乱美欧| 蜜臀久久99精品久久久久久酒店| wwwxxx五月婷婷小说| 最近韩国日本免费高清观看| m色激情网| 国产成人综合亚洲| 99热这里只有免费精品| 日韩婷久| 任你爽精品免费视频6| 天天综合网~91综合网| 超碰人人干| 色哟哟精品| www.婷婷六月天| 另类激情五| 婷婷丁香花五月天| 六月丁香激情综合网| 天天干天天操天天拍| 久久99综合| 五月婷丁香| 色五月婷婷视频| 成人中文网| 亚洲性爱日韩无码| 99热在线观看99| 成功精品影院| 99在线观看亚洲| 天天草天天爽| 丁香五月五婷| 91超级碰在线视频| 国产一区二区三区影院| 丁香五月六月婷婷殴美综合| 97五月婷婷| 五月婷亚洲精品AV天堂| 婷婷丁香一月| 九九激情视频| 欧美日综合| 激情综合网,婷婷五月天| 婷婷五月激情黄色| 色婷婷9| 五月天婷婷一起草| 五月天大香蕉婷| 可以直接看的av| 另类视频综合| 久久久五月天婷婷| 婷婷五月天色| 丁香六月婷婷综合在线| 超碰免费人人| 91操黄| 色噜噜狠狠色综合网| 五月天色婷婷激情综合| AV网在线观看| 99热只有| 草一草avb| 五月久久噜噜| WWW色色色COm| 亚洲超碰中文字幕| 99操碰| 婷婷综合精品视频97| 婷婷丁香激情综合色情| www.韩日视频| 久久思思热| 99精品热| 色婷婷在线视频综合| 五月丁香婷婷婷激情爱爱| 婷婷亚洲综合| 免费黄色AV| 五月婷婷伊人久久| 欧美va亚洲va| 欧美五月婷婷| 久碰久| 日本人妻伦在线中文字幕| www.婷婷| 狠狠狠狠狠狠狠狠| 亚洲成人电影aaaa| 国产色丁香| 玖玖综合玖玖| 99久久婷婷综合| 99re这里只有| 色婷婷影视| 五月色色激情网| 激情综合色五月六月婷婷| 超碰97干| 久操干| 亚洲成AV人片在线观看| 亚洲亚洲人成综合网络| 中文AV网站| 激情亭亭五月| z色五月播播久久| 六月婷婷色宗合| 人妻久久久久久久久妻久久久久久久久 | 色五月成人婷婷| 波多野结衣AV无码Porn| 婷婷久久女人| 日韩AV在线免费| 夜夜操加勒比| 青草视频在线播放| 1000部毛片A片免费观看| 五月色婷婷影院| 思思精品视频| 99这里| 日日夜夜爽| 激情五月综合六月丁香婷婷狠狠干| 婷婷综合五月天| 国产4P视频精品五区| 情色五月天 网站| 91男人操女人视频| 国内精品99| 丁香五月天操B| 日韩av一区二区在线/日产精品久久久| 欧美成人va| 五月天伊人网| 99精品偷自拍| seuuu婷婷| 青青草原亚洲久| 青草视频在线播放| 永久天堂日本| 69色婷婷| 色墦五月丁香| 天天舔天天摸天天射| 色久婷婷网| 色天天久婷婷| 欧美va在线| 思思精品视频| 成人片在线播放| 99热精品在线播放| 欧美槡BBBB槡BBB少妇| 97干干干丁香| 色99免费视频中文| 五月天婷婷激情网| 激情五月天网页| 色丁香六月| 激情五月天综合| www.久久99热地址发布| 五月天综合网| 校园春色亚洲色| 91se在线观看| 婷婷五月天播| 99热这里只有精品最新| 99啪99| 精品人妻一区| 99五丁香月| 婷婷爱爱蜜臀天天操| 天天日天天舔天天摸| 精品视频99看在线视频| 四色五月婷婷在线观看| 99久re热视频精品98| 九九Av| 五月天丁香婷婷久久九| 日本高清久| 热99精品视频在线观看| 久久色五月天综合网| 另类精品视频在线观看| 国产精产国品一二三在观看| 狠狠色噜噜狠狠| 激情图片亚洲| 97热这里只有精品| 精品夜夜澡人妻无码AV| 小骚穴电影| 亚洲亚洲激情| 久久Xx| 天天日天天舔| 天天综合色丁香| 九九热这里有精品23| 丁香五月天在线| 天天日天天摸| 激情九色| 26UUU精品一区二区Com| 夜夜骑夜夜操| 欧美乱码国产一级A片| 99热6这里之有精品| 日日撸夜夜操| 91无码一区人妻A片蜜| 97色婷婷五月天| 可以免费看的av网站| 99色在线观看| 欧美操逼天堂| 丁香五月婷婷俺也要去| 九九av| 99久在线| 99九九视频| 国产熟妇的荡欲午夜视频| 天天操天天曰天天射| 婷婷五月天激情综合网| 色玖玖| 色五月天堂| 丁香狠狠色婷婷久久无码视频| 99色色网| 久久五月天激情美女| 日本天堂免费99| 久久丁香综合香蕉| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 人人妻人人澡| 另类激情中文| 极品五月天| 99在线视频精品| 婷婷在线视频| 97在线碰| 国产成人av在线| 亚洲色基地| 99r这里只有精品在线观看| 婷婷色婷婷| 五月丁香大香蕉| 97热这里精品在线视频| 色综合久久88色综合天天看| 91色在线 | 日韩| 久艹伊| 激情小说 五月天| 国产五月视频| 婷婷五月婷婷五月天| 久青草影院| 99色最新在线视频| 免费看欧美成人A片无码| 另类五月婷婷| 天天操夜夜操| 五月天激情网址| 国产精产国品一二三在观看| 这里只有精品日韩精品| 国产古装妇女野外A片| 五月丁香六月婷精品视频| 色婷视频| 这里只有精品99www| 国产毛片精品一区二区色欲黄A片| 五月天开心激情网色欲无码| 午夜不卡久久精品无码免费| 第四色婷婷色五月| 丁香婷婷五月综合欧美另类| 五月开心色| 九色无码| 夜夜撸日日操| 九九久久99| 91九色PORNY肉丝在线| 综合伊人狠狠| 狠狠色丁香久久| 91婷婷在线| 激情综合五月激情XXXX| 99只有精品9| 99在线精品视频在线观看| 99热www| 激情婷婷久久| 亚洲性爱干干| 一本九九色| 色综合天堂| 六月丁香视频网站| 婷婷五月天亚洲综合网| 婷婷涩五月| 99这里有精品免费| 日本欧美啪啪| 日本丁香五月| 26uuu欧美宗合| 色色综合激情| 99热这里| 久久亚洲无码| 天天操天天爽天天爱| 大鸡巴伊人网| 欧美六月婷婷| 99这里只有精品|v| 超碰人人干| 亚洲精品V天堂中文字幕| av人人操| 大香蕉综合| 亚洲性爱AV在线| 久久思思热| 欧美va亚洲va| 色婷婷色五月综合| 中文字幕无码人妻少妇免费视频| 婷婷九月丁香| 色久五月| 色色婷婷丁香| 日本三级色| 色婷婷久久| 99无码黄色视频| 色婷婷综合久色AV五色最新| 色综合狠狠色| 激情五月成年| 亚洲国产99| 激情五月婷婷丁香| 少妇激情五月婷婷| 玖玖综合色| 男人的天堂在线婷婷| 色五月婷婷五月天| 美国十月色婷婷在线观看| 五月激情网五月综合网| 四色永久成人网站| 视频1区2区| 丁香五月婷婷综合啪啪| 亚洲天堂热| 色婷婷免费视频| A久网| 激情图片亚洲| 五月婷精品| 婷婷丁香www视频日本韩国| 久久99国产综合精品免费| 另类激情五月| 99ri视频在线播放| 五月六月伦理| 五月婷婷二月丁香| 婷婷五月精品中文字幕| 四五月婷婷| 精品婷婷五| 亚洲AV人人操| 国产成人AV在线播放| 丁香亚洲色综合| 亚洲无AV在线中文字幕| 五月天婷婷基地| 国产操碰| 激情五月综合网最新| 亚洲综合五月天| 五月激情久久| 日本社区五月天激情| 综合色色婷婷| 色噜噜在线| 日逼免费视频| 26uuu亚洲欧美| 激情二色月| 亚洲AAA| 六月丁香五月亭亭| 中文字幕 久久9999| 日日操,日日爽| 色综合五月婷婷狠狠干| 激情亚洲色图片丁香综合| 色婷婷最爱五月| 激情五月天之五月婷婷| 三十路磁力链接| 开心五月丁香啪| 婷婷五月天男人影院色色网| 丁香婷婷色情社区成人小说| 九九热只有精品| 五月婷婷在线视频观看| 五月天久久网站| av在线观看网站| 啪啪一区| 最近免费中文字幕大全高清大全1 免费看欧美成人A片无码 | 五月婷婷六月激情| 黄色片久久| 婷婷五月成人社区| 少妇婷婷五月天| 91婷色| 成人噜噜网| 丁香五月婷婷久久久| 五月色情婷婷开心五月色情| 日日肏天天操| 中文av网站| 色99在线观看| 中文人妻AV久久人妻18| 狠狠狠狠狠狠草| 五月丁香成年黄色| www.婷婷五月天,com| 婷婷五月天伦理| 色色色色色爱| 五月婷婷色综图片| 欧美性猛交AAAA片黑人 | 97人人妻人人艹| 婷婷色色欧美| 五月天丁香啪啪综合| 丁香五月激情性色郤| 久久99网| 五月丁香啪啪| 婷婷成人av| 日韩在线视频中文字幕| 狠狠狠激情网| 日本九九视频| 丁香婷婷综合激情五月色| 中文字幕成人日韩| 俺也去婷婷五月天第五色| 狠狠久综合| 五月丁香啪啪婷婷| 碰97 久| 激情五月天啪啪| 99热日| 97丁香婷婷| 99丁香婷婷综合网| 五月天开心色情网| 亚洲成人黄色网| 精品人妻久久久久久| 婷婷丁香大香蕉| 丁香九月激情| 深爱激情婷| 亚洲黄色影视| 九九大香蕉黄色影院| 狠狠狠狠狠狠草| 五月激情网站| 久久久aaa| 丁香五月婷婷深爱综合激情| 久久538| av高清无码| 97操碰视频| 中文字幕婷婷五月天在线观看| 激情五月天影院| 久草丁香婷婷五月天婷| 六月色色婷婷| 大香蕉五月天| 中文字幕综合| 六月婷婷久久| 婷婷激情五月呦呦| 天堂爱爱| 99这里只有精品|v| 天天综合网~91综合网| 久久人妻视步| 丁香五月婷婷图片综合| 激情精品久久| 六月激情婷婷| 91无码视频| 丁香五月av| 啪啪视频99| 这里只有国产精品在线| 777精品久无码人妻蜜桃| 久久HD| 久久综合影院| www.sebowuyue| 五月丁香中文字幕| 9色小视频在线观看| 这里只有精品在线播放| 国产精品18久久久| xxxx五月| 91蜜桃婷婷狠狠久久综合9色| 色色婷婷丁香| 丁香五月影院| 久久99综合| 91久久久久久久久18| 婷婷丁香色情| A片一曲| 人人摸人人操人人爽| 激情图片婷婷丁香五月| 狠狠情色| aaa久久| 91碰在线| 色五月激情| 亚洲无码成人网| 天天操比比| 国产亚洲色婷婷99精品| 婷婷综合激情| 五月天色婷婷小说| av婷婷六月丁香社区在线观看| 一二三区视频韩国| 大操人妻| 五月天.com| 91精品又长又大又粗又爽又猛| 99性爱| 非洲一级AV| 天天日夜夜拍| A√天堂网在线| 91|疯狂丨高潮丨对白| 26UUU精品一区二区c〇m| 九九久久9 9在线观看| 日韩色五月| 丁香婷婷九月| 日本片日本片祼观看网站在线看中文版网页在线看 | 啪啪小说五月天| cao久久| 九九黄色网| 欧美色播综合在线观看| 日韩99无码| 天天综合色丁香| 天天色综合天天| 三人荫蒂添的好舒服A片| 五月天婷婷青青草| 91在线日本| 天天拍天天操| 伊人午夜综合色啪| 久久婷婷色综合| 欧美色婷婷| 好激情在线综合网| 在线中文亚洲| 国产毛片精品一区二区色欲黄A片| 极品五月天| 久热黄色| 国产欧美日韩综合精品一区二区| 色欲一区二区三区精品A片| 欧美啪啪9| 九九伊人网| 六月丁香六月婷婷欧美| 天天爽爽日日做做| 色综合色综合色综合| 五月天激情四射| 视色综合| 噜噜噜噜噜在线| 久草婷| 激情丁香五月天| 六月丁香婷婷在线波多 | xxxx五月| 狠狠综合区| 国产精品18久久久| 日本在线99| 狠狠擼综合| 激情视频综合| 国产一级片色色| 五月丁香啪啪综合| 五月天激情婷婷小说| 日韩成人中文字幕| 在线一起草av| 精品一区二区三区四区五区六区| 99爱视频在线观看| 人人爽人人爽人人爽人人爽| 丁香五月天黄色片| 另类图片五月天激情| 久久性爱视频| 日韩久热| 日日夜夜狠狠操| 日本精品。999| 五月婷婷影院| 丁香五月www| 久久小说网| 青青草激情网| 久婷久婷| 激情五月婷婷五月丁香五月开心五月| 99热精品在线播放观看| 自拍偷窥99热| 无码九九九九| 91九九九色在| 91在线就要啪| 五月激情影院| 激情性爱五月天| 久青草影院| 中文字幕色色| 丁香五月成人在线| 岛国资源网| 中文字幕婷婷五月天| 久久久久久9| 天堂网色色| 久久一操| 9 9热这里有精品| www.91五月| 亚洲亚洲人成综合网络| 五月婷婷色色| 国产毛片精品一区二区色欲黄A片| 少妇性按摩无码中文A片| 久久99性爱| 婷婷五月天偷拍| 伊人婷婷五月天av| 五月婷婷深爱六月| 思思综合热| 五月丁香啪啪啪啪| 丁香五月天精品| 岛国av网| 99精品在线下载| 日逼免费视频| 中文字幕色色色| 综合五月激情网| 婷婷五月天成人综合网| 激情综合网激情五月丁香| 欧美性爱5月天天天看| 婷婷丁香五月天小说| 国产热精品| 色爱终和网| 深爱激情五月婷婷| 久久婷婷五月| 五月丁香色婷婷久久| 99九九99九九九视频精彩| 五月丁香色综合| 99热碰碰热| 99爱在线免费视频| 成人视频网| 九九操屄| 五月天色欧美| 亚洲六月色婷婷| 久久大香蕉| 五月婷婷五月丁香综合| 激情综合激情五月| 九九久热| 97碰| 激情六月天| 91久久久久| 中文字幕成人影视| 五月婷久久| 婷婷另类开心| 亚洲视频伍月婷婷| 99九九在线视频| 特级西西4444www无码| 内射在线CHINESE| AV中文字幕夜夜操b天天摸bb | 久99热| 熟女五月天久久综合| 色爱终和网| 69久久99精品久久久久婷婷| www.狠狠| 韩国97天堂| 亭亭色色五月天| 欧美毛片www| 日欧大屏操| 思思热视频在线| 香蕉久操| 婷婷五月天六点丁香五月| 国产激情综合五月| 五月丁香免费看| 婷婷九月丁香| www.金莲av| 色五月五月婷婷| 五月丁香五月激情综合色综合| 国产精品色婷婷AV综合色色| 五月丁香| 五月婷婷性爱视频| 色五月婷婷婷婷婷婷婷婷婷婷| 婷婷激情五月综合丁| 婷婷五月色惰| 成人精品一区日本无码网| 俺去婷婷 丁香| www.婷婷五月天,com| 五月婷婷自拍视频| 五月天激情亚洲| 色婷婷第四色| www.99热最新视频8| 色综合久久88色综合天天99| 日本天天操| 色狠狠综合入口| 欧美视频在线观看噜噜| 色~性~乱~伦~噜| 丁香深五月婷婷| 久思思久视频| 五月激情小说| 丁香六月丁香婷婷激情| 伊人久久婷婷| 色五月天电影| 操人妻AV| 天天做天天爱天天摸| 这里只有精品视频免费在线观看| 狠狠干综合| 五月丁香色色| 婷婷丁香五月在线播放| 另类视频在线| 五月婷婷影院| 人人摸人人澡人人| 日韩国产AV播放| 六月婷婷狠狠| 九九色综合九九色| 狼人婷婷久久| 激情综合丁香五月| 久久久久久久11111111111| 久久五月丁香| 国产成人高清| 51XX嘿嘿午夜无码| 99色最新在线视频网站| 99∨VTV| 婷婷丁香五月天婷婷| 99re热在线观看| 色综合久久无码| 婷婷伊人五月| 九九九九精品精| 九九这里只这里只有精品| 色色五月婷| 色色色在线| 99视频这里有精品| 96色婷婷| 亚洲成人在线五月天| 九月丁香很很色| 国产六月婷婷| 久久久天堂国产精品女人| 丁香婷婷六月婷婷六月婷婷六月婷婷| 五月婷精品| 婷婷久久99| 91丨九色丨熟女|新版| 成人免费在线电影| 成人在线综合| www98日本小时间到了| 五月婷婷深深爱| 人人操女人| 婷婷五月,偷窥偷拍网| 91精品啪| 六月色婷婷| 久久3p| 色一情一乱一乱一区91| 97人人干人人操| 日日夜夜天天综合| 六月婷婷天天操夜夜爽视频| 欧美性丁香色色五月天干干| 激情五月天色| 欧美大肥婆大肥BBBBB| 亚洲婷婷丁香五月天激情小说 | 色婷婷丁香五月天| 久久丁香五月婷婷| 久色成人| 五月婷婷碰碰| 五月丁香六月婷婷操操操| 亚洲无码www| VA色婷婷| 亚洲在线激情婷婷五月| 婷婷五月花| 思思久久99热只有频精品66| 九九精品丁香花| 婷婷成人五月天成人文学小说| 欧美日本97| 99九九99九九九视频精彩| 欧美一级色| 搡BBBB搡BBB搡18| 淫荡综合网| 色综合狠狠色| 婷婷欧美| 天天天摸夜夜夜玩| 十区av| 99ri精品视频在线观看| 丁香亭亭久久| 开心婷婷五月综合| 婷婷成人AV| 开心久久xxx色| 综合久久激情久久| 丁香婷婷性久久| 激情综合网五月在线播放| 成人综合网站| 婷婷综合在线| 九九热色视频| 级人人91| 日本一道久久| 俺也去综合| 特级操b片| 五月丁香啪| 91婷婷五月天嫩女| 日本色频| 日韩久久日| 激情久久久| 日本激情综合| 香蕉久久国产AV一区二区| 国产婷婷婷| 9 1超碰九色| 久久久五月婷婷| 9 1超碰九色| 日韩中出视频| 天天干夜晚夜操| 99视频这里有精品免费观看| 亚洲人妻av| 五月综合激情图片| 亚洲精品亚洲人成人网| 丁香五月综合AV在线| 色婷婷五月天亚洲| 人人草碰| 韩国真做片在线观看| 色五月婷婷在线| 婷婷九月激情网| 日韩久久色| 婷婷五月另类网站| 99久久久久| 综合啪啪| 亚洲激情综合五月婷婷啪啪| 丁香色色网| 成人啪啪色婷婷久| 草了bav视频在线观看| 天天噜日日噜综合无码| 毛片毛片毛片毛片| 91操色| 综合色99| 成人色图情色成人网 www.5b5b5bcom 五月天 | 99久热这里只有精品视频删减版| 99热www| 一二线视频 另类| 99热这里只有精品青草| 99亚洲视频| 大地资源色婷婷视频在线| 好吊操这里只有精品| 成人电影在线免费试看| 97成人在线视频| 亚洲精品白浆高清久久久久久| av九九| 日本婷久久| 五月婷婷六月丁香综合在线| 深爱五月亚洲| 五月激情婷婷开心五月| 日夜操B| 九热久| 人人综合91网| 97se在线视频| 九九婷婷热| 久热婷婷综合| 精品夜夜澡人妻无码AV| 婷婷激情图片| 噜噜五月天综合| 综合久久9| 99啪啪网| 婷婷成人五月天成人文学| 五月丁香六月综合基地| A网在线欧洲| 另类小说婷婷色| 99热这里只有精品2016| 婷婷在线五月天观看| 亚洲丁香五月综合| 欧美成人Va| 日本a片网址| 色VA| 久久性爱视频免费| 九九这里有精品视频| 国产1区2区3区在线观| 五月婷婷六月丁香免费| 丁香五月婷婷激情小说| 99久久免费性爱视频`| 人人草公开操| 一夜福利不卡| 啪啪婷婷五月天激情| 五月丁香啪啪拍| 色欲丁香久久| 99色一| 婷婷五月花西瓜| 婷婷五月六月| 蜜臀av粉嫩av懂色av| 丁香五月婷婷亚洲综合精品| 久久作爱| 婷婷另类小说| 农村熟妇高潮精品A片| 99精品偷自拍| www.婷婷五月.com| 欧美一线视频| 涩综合网| 看婷婷五月天网| 亚洲 日韩色色| 五月天激情国产综合AV| 婷婷色av| 91肏| 天天做夜夜爽| 9色91视频| 久婷视频| 久操福利| 色色色视频免费无码| 人人爱操| 都市激情小说婷婷| 五月婷亚洲精品| 色婷婷精品视频| 中文字幕在线不卡| 婷婷成人五月天| 亚洲99精品九九在线| 91人碰| 九九国产视频| 蜜乳国产网站| 日日干天天| 色五月综合| 99热午夜精品| 99男人天堂| 久久综合网免费视频| 婷婷六月花| 欧日韩成人| 成人做爰A片免费看视频 | 在线亚洲综合网| 另类伊人婷婷| 五月伊人视频在线看| 96丁香六月婷婷蜜桃综合久久| 小视频久久久aaa| 色综合99无码| 久热欧美| 五月婷网站| 五月天综合久久| 激情小说色五月| 性爱网五月天| 丁香五月丁香伊人| 五月婷婷亚洲| 日本久久激情| www.色五月.com| 日日肏天天操| 久久九九综合| 欧美日韩婷婷五月天| 男女99免费视频| 就爱射中文字幕资源网| 亚洲综合成人网| 99色人| 五月婷婷激情综合在线| 天天婷婷| 最近中文字幕在线中文视频| 亚洲综合999| 九九九九九九九热| 久久婷婷六月综合| 精品九九网| 五月天全国最大成人网| 欧美va视频| 大香蕉太香蕉视频97| 天天爽天天弄| 色欲av伊人久久大香线蕉影院 | 五月丁香婷婷婷激情爱爱| 婷婷五月激情黄色| 久久欧洲久久| 亚洲免费观看高清完整版AV线| 九色综合网| 开心久久xxx色| 激情亭亭五月| 亚洲精品九九| 丁香五月激情综合在线观看| caop在线视频| 欧美日韩国产一区二区| 色婷婷色五月综合| 97人妻碰碰中文无码久热丝袜| 亚洲午夜电影| 久久久久久人妻久久久久久久久久人妻久久久 | 久久一热免费视频| 97天堂| aaa久久| 天天色天天| 久久久久久9热不雅视频| 五月激激网w'w'w| 激情六月婷婷| 午夜免费试看| 另类精品视频在线观看| 五月天丁香综合在线| 狠狠色精品综合| 99精品成人无码A片观看金桔| 9久久精品| 久久婷婷五月综合色奶水99啪| 日本在线wwww| 国产精品五月天婷婷| 91麻豆国产三级精品福利在线观看| 亚洲avjiujiur91| 99无码视频| 亚洲综合在线视频| 五月激情啪啪| 婷婷久久网| 五月丁香啪啪| 人妻av在线| 玖玖精品视频| 91天天操天天干天天射| 99在线热| 操人无码| 538在线精品| 青草青草久热这里只有精品| 久久综合五月天| 激情五月天色网站| 中文字幕在线日亚洲9| 婷婷丁香97| AV九九| 婷婷欧美色| 日本人妻伦在线中文字幕| 午夜性爱影视一区77| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com |