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
返回資訊列表
六月丁香啪| 深爱五月最新网址| 五月五月婷婷| 国产91在线视频| 九九色综合| 人人草人人爱手机视频看看| 天天天操天天天爰| 伊人婷婷青青cao| 9久热在线精品| 婷婷天天五月天| 天天综合精品| 天天狠狠六月婷丁香影院| 色网站99| 婷婷在线观看五月天在线视频| 奇米四色五月天| 激情婷婷五月天| 天天日天天干天天天| 五月丁香美女| 婷婷综合在线| 激情色播| 色欲人妻综合aaaaaaaa网| 亚洲无码黄色| 亚州婷婷五月激情综合| 日韩久久日| 一区二区三区视频| 99激情视频| 五月综合丁香婷婷| 超碰女人天堂| 色五月综合激情| A久网| 五月天色导航婷婷资源婷婷| 五月色丁香综合| 国产9色在线/日韩| 五月天堂色| 9久热在线精品| 激情六月婷婷啪啪| 伊人成综合五月婷婷| 婷婷五月天网| 丁香五月婷婷激情97| 五月丁香六月婷婷啪啪| 麻豆AV一区二区三区| 综合色色婷婷| 女人高潮内射99精品| 久久九九热视频| 婷婷九月在线| 99精在线| 亚洲性爱AV在线| 婷婷五月天成人网| 亚洲传媒在线观看| 中文字幕激情综合| 91操人| www.色综合.com| 手机旧版看人妻1025| 欧美在线视频9| 色婷婷啪啪综合网| 99啪| 26UUU在线观看| 五月大香蕉| 五月婷婷黄| 99在线小视频| 九九激情网| AV伊人青草丁香六月| 六月丁香婷婷视频综合在线观看| 婷婷五月天在线观看av| 色吧五月婷婷| 欧美丁香五月97色| 久久精品一区二区三区四区| 97av在线视频| 校花娇喘呻吟校长陈若雪视频| 99热超碰在线| Y11111111111少妇电影院| 日日操,夜夜爽| 激情五月综合六月丁香婷婷狠狠干| 成人天天爽| 包操45分钟网站| 婷婷天天舔| 射久久丁香五月| 99久在线精品99re8热| 无码人妻一区| 97久久视频| 97干干干丁香| 91在线日| 午夜做爱影院| 婷婷五月综合在线| 婷婷丁香成人五月天| 色香蕉影院| 婷婷区日本| 婷婷伊人綜合中文字幕| 婷婷婷婷午夜| 97av在线视频| 色噜噜狠狠插综合| 噜噜噜狠狠色综合| 久99热在线观看| 中文字幕在线免费观看视频| 丁香五月婷婷色| 欧洲色| 久热无码| 熟美女麻豆| 久久综合婷婷| 成人丁香| 欧美五月停| 91porn一起草| 五月色网| www夜夜操wwwcon| 99这里只有| 97在线碰| 亚洲视频在线网| 99re久久| 类似婷婷激情综合网站| 日本综合99| 色碰碰| 少妇口诉沐足视频播放器网址| 亚洲激情久久| 成人无码髙潮喷水A片| 六月丁香成人| 国产26uuu视频| 天天日夜夜拍| 欧美美女视频| 亚洲欧洲国产精品| 亚洲激情婷婷| 亚洲欧美综合7777色亭亭| h亚洲| 天堂爱爱| 国产亚洲色婷婷久久99精品91| 久99| 色99网| 好好干av| 天天爽天天爽| 99综合免费视频| 99热这里只有精品热| 亚洲无线视频| 亚洲影院婷婷色| 婷婷激情伍月网| 99精品综合在线| 99日本精品视频热| 丁香婷婷色五月激情综合| 婷婷久久五月天| aV欲望人妻中文字幕| 丁香色五月 97干| 色五月婷婷激情| 五月婷婷深深爱| 伊人玖玖精品| 9999三级片| 99热综合在线观看| 精品五月天| 免费看欧美成人A片无码| 日韩精品999| 丁香五月婷婷六月| 97干在线看| 五月丁香六月婷婷啪啪| 丁香五月777| 天天做天天爱天天做| 五月丁香成人网| 在线不卡视频| 五月丁香综合| 色天天综合色| 色综合77777| 六月丁香深深爱| 99热综合| 亚洲精品V天堂中文字幕| 超碰色天堂| 五月丁香人人婷婷在线观看| 无码激情AAAAA片-区区| 天天天摸夜夜夜玩| www.丁香黄色五月天人与| 成人操呦av| 色婷婷综合久久久久| 东京热人妻一区二区三区在线| 六月丁香深深爱| 九九九九这里只有精品| 伊人五月天97| 91精品久久久久久综合五月天| 欧美色色色色色色色色色色| 99热在这里只有精品| 丁香五月91| 棕合影院色色| 成人国产欧美大片一区| 六月色播| 大香蕉婷婷丁香| 超碰91人人操| 丁香五月 综合| 熟妇内谢69XXXXXA片| 99激情视频热| 99超级超级超级碰| 五月丁香啪啪啪| 丁香五月色色色色| 色五月开心久久网| 激情性爱五月天| 六月婷婷网| 欧美色综合天天久久综合精品| 婷婷激情五月综合基地| 久综合九| 国产亚洲成AV人片在线观黄桃| 九九久久99| 人人操碰| 色情综合| 五月丁香六月婷婷网| 色哟哟性爱av| 久久只有精| 香蕉久久国产AV一区二区| 免费黄色片子| AA片在线观看视频在线播放 | 日本网站久久| 9热精品| 久久久久8888| 中文中文在线| 99视频精品在线| 综合一区二区三区| 99热亚洲| 丁香五月激情月| 婷婷五月激情基地| 日韩99视频| 婷婷久久亚洲| 色天天综合成人网| 色九月婷婷综合| 五月天伊人| 激情五月综合ì香亚洲| 9999热在线免费观看| 996热re视频精品视频| 五月丁香在线婷婷美女| 色婷婷在线播放| 97超碰,人人舔,人人操,人人摸 | 欧美日韩99| 五月天激情网图片 - 百度| 天天透天天干| 中文字幕不卡网站| 色五月情| 99色色网| 99热9999| 六月丁香五月激情网| 怡春院天天干| 久操热线| 播播网色播播| 精品99网站| 婷婷五月天综合AV| 五月婷婷很很色| 91婷婷色| 婷婷.com| 亚洲色五月天在线| 欧美日韩成人在线网站| 日本人妻伦在线中文字幕| 人妻啪啪啪| 九九色综合| 夜夜撸夜夜骑| 五月综合婷婷网| 国内久久久精品99| 超碰人人摸人人操| 99爱在线免费视频| www.色婷婷.com| 男人综合网| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 少妇人妻丰满做爰XXX| 99热这里只有精品3| 99精品在线观看| 欧美一级a| 欧美日韩99| 伊人啪啪网| 色五月丁香六月资源站| 97碰碰在线观看视频| 疯狂做受XXXX高潮A片| 丁香婷婷老司机久操| 99精彩视频| 婷婷久久综合| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 少妇人妻人伦A片| 色色婷| www.99日本| 天天做天天爱天天综合网| 伊人午夜综合色啪| 91婷婷五月天嫩女| 色99自拍| 五月婷婷久久综合| 国产第99页| 综合九九久久| 亚洲成人一区| 婷婷五月天Av| 久色资源网| 丁香五月婷婷色| 战争与艾拉电影免费观看| 丁香丝袜五月| 操日视频| 五月天激情国产综合婷婷婷| 色九月丁香婷婷蜜桃在线观看| 91聚色综合网| 久久在线大香蕉| 婷婷五月丁香色综合| 玖玖婷婷精品| 丁香五月婷婷无码AV| 97自拍视频在线| 婷婷成人五月天| 全部老头和老太XXXXX| 大香蕉久久视频久久视频 | 五月婷婷我| 另类小说激情五月天| 六月丁香VA| 免费精品99| 五月婷婷色影院| 99热99ai| 99色色色色| 9有码中文| 人人爱操| 成人在线视频一区| 美臀自射自家人妻| 天天日日夜夜| 中文字幕日产A片在线看| 香蕉网婷婷| 色综合久久8| 日本99在线| 欧美狠狠草| wwwxxx五月婷婷小说| 噜噜色婷婷| 婷婷五月丁香六月| 操91综合网| 婷婷五月天综合久久| 中文字幕丁香五月| 另类A片| 日韩无码专区| 天堂A∨在线| www.色婷婷。com| 色XX综合网| 99热偷拍| 密视AV综合在线| 思思热天天看| 婷婷六月色开 | 丁香六月婷婷综合啪啪| 襙比视频| 色婷婷99| 色香久久| 色五XX| 99爱精品| 国产亚洲在线观看| 精品女人九九九| 国产XXXX搡XXXXX搡麻豆 | 婷婷五月综合亚洲| 欧美黄色一级录像| 五月天婷五月天综合网在线观| 天天日本夜夜谢| 最近韩国日本免费高清观看| 大香蕉520| 99亚洲无码| 国产精品美女| 这里只有精品免费在线视频| 狼人婷婷久久| 激情五月天的婷婷| 久热这里只有精品6| 成人中文网| 操一区| 激情图片五月天| 99ER热精品视频| 九九久久五月天| 99亚洲视频| 伊人婷婷综合| 天天插天天射天天干| 97久久久| 三级三久久线久久99久目本WW| 亚洲激情五月天| 9热超碰| 天天搡日日搡aaaaⅩ| 亚洲视频色色| 伊人网啪啪| 涩五月婷婷| 亚洲天堂九九九| 九九99在线免费在线观看视频| 中文字幕簧片| 五月丁香六月婷婷操操操| 99这里只有精品视频| 丁香五月婷婷免费视频| 婷婷六月激情小说网| 日本欧美999久久久三级片| 色婷婷免费视频| 中文无码精品一区二区三区| 天天射综合网站| 万月丁香狠狠爱| www.91久久| VA国产在线综合网站| 婷婷丁香花五月天| 9色免费网| 精品无码色| 激情丁香五月婷婷| 操97在线观看| 久久在这里有精品| 五月色综合| 中文字幕性爱视频| 色色免费网战视频| 久久久婷婷五月天| 亚洲欧洲色色| 色五月激情五月天| 碰97久久| 色五月婷婷亚洲最大| 青青草国产亚洲精品久久| 狠狠色丁香久久| 激情久久综合网| 天天干天天干天天干| 狠狠综合区| 色五月久久成人婷婷| 99九九综合久久九九| 丁香五月停停av| 色婷婷成人影片| 中文字幕AV在线| av在线观看网址| 米奇影视资源婷婷狠狠色激情欧美五月丁香 | 五月香蕉网| 六月丁香开心婷婷欧美| 婷婷五月天激情综合深爱| 久久香蕉网| 91久久五月天| 91九色在线视频| 丁香五月www| 丁香五月婷婷骚视屏| 超碰99在线观看| 亚洲第一黄网| 久久精品人妻| 大香蕉五月婷婷| 国产va视频| 依人大香蕉在钱1| 六月色色综合| av中文网| 亚洲成人噜噜| 99天堂网最新| 五月天色不卡| 色五月激情综合| 六月丁香VA| 五月丁香在线观看国产| 欧美VA在线观看| 亚洲狠9| 啪啪激情网站| 香港九九六区八区99| 久久66精品| 久久精品无码一区| 久久这里有精品视频| 九九热青青草| 久久超级碰碰| 99爱视频精品| 99久久国产宗和精品1上映| 亚洲俩性性爱图片久久第六页| 国产激情综合| 2w在线视频| 国产免费一区二区三州老师F1…… | 婷婷五月激情欧美| 色婷婷五月天| 亚洲精品国产精品乱码不99| 九九九九成人| 影音先锋噜一噜| 亚洲人妻AV| 丁香婷婷激情| 色情一区二区播放| 99碰| 天天日天天舔| 狠狠色综合网站| 超碰婷婷五月| 色九亚洲| 99热在这里只有免费精品| 无遮挡国产高潮视频免费观看| 五月丁香六月合| 亚洲成人日韩无码精品| 久久性爱视频| 天天综合插插| 91九色PORNY中文啦| 激情丁香九九五月综合网| 日本综合久久| www婷婷色| 九九精品网| 久久久性爱网| 五月丁香六月激情综合| 人人干人人操人人摸| 在线观看av网站| 激情五月婷| 婷婷丁香五月欧美人| 婷婷五月丁香综合桃花色网| 99re6久热只有精品6在线直播| 五月丁香综合久久| 在线观看996精品| 中文字幕日产A片在线看| 五月天久久丁香| 天天肏天天肏天天肏| 99久久99九九99九九九| 五月婷婷激情综合网 | XX色综合| 97九色视频| 中文人妻主播久久| 色综合香蕉| 欧美色婷婷| 丁香六月在线| 色吧五月婷婷六月丁香| 六月婷欧美| 婷婷伊人久久| 丁香色五月天| 深爱激情四射| 99久在线精品| 4399精品一区二区| 免费观看18视频网站| 天天干天天色综合| 婷婷五月天激情在线观看| 久久青青日本视频| 免费91久久精品| 九九综合精品| 日日夜夜狠狠| 快色t v在线入口| 五月伊人网| 思思热99er| 深爱激情五月天| 五月天另类激情在线| 五月天精品综合在线| 午夜天堂啪啪| 亚洲第二AV| 在线播放人妻| 伊人综合网站| 1区2区视频| 小视频aaa久久久| 亚洲免费观看高清完整版AV线| 激情婷婷| 日本99视频| 五月天成人综合| www、色色色| 月婷婷亚洲| 激情丁香社区| 色99色| 丁香花狠狠婷婷亚洲中文字幕| 婷婷综合网| 久久东京热婷婷五月| 婷婷五月激情天| 九九在线免费观看| 五月熟妇婷婷久久| 亚洲婷婷视频| 97色在线视频| 婷婷五月天奸女| 天天艹| 色婷婷综合丁香五月天| 青青草99re| 丁香婷婷五月份| 成人在线日韩| 操操碰| 99操| 九九激情| 91viP在线看| 美欧日韩国产成人在战| 丁香婷婷色情| 婷婷97碰碰| 亚洲综合五月| 人人干人人操人人摸| 日本VA视频| 999影院成人在线影院| 日日操,天天操| 深爱开心激情网| 色播播之激情五月婷婷| 狠狠干2007| 婷婷五月天视| 五月天激情小说电影| 五月丁香婷婷无码中文| 人妻操逼| 五月丁香婷中文| 婷婷丁香五月噜噜噜| 天天成人综合视频| 久久久久er热| 91婷婷在线| 久久婷婷伊人| 亚洲乱码精品久久久久..| 国产精产国品一二三在观看| 国产精品久久久爽爽爽麻豆色哟哟 | 丁香五月婷婷色播艳门照| 天天综合网亚洲网站| 婷婷五月激情天| 久久五月天婷婷| 991精品在线视频| 色婷婷久久综合| 在线播放中文字幕| 色吧婷婷五月亚洲| 五月花激情网| 中文字幕黄色片| 五月天天丁香婷婷在线中| 亚州精品色情在线观看| 色婷婷丁香AV综合| rr天天操| 丁香五月另类小说| 91日韩在线| 色婷婷电影网| 久久99激情五月天| 91成人电影| 丁香婷婷精品视频| 淫荡工a| 99爱精品视频| 激情五月天婷婷| 亚洲国产精品二二三三区| 五月伊人91| 超碰精品国产首页| 五月婷婷黄色| av免费人人| 激情人妻综合| 丁香婷婷天堂| 99ri精品在线| 天天在线久久综合| 六月婷婷激情| 精品一二三区久久AAA片| 亚洲av电影在线| 色五月大香蕉| 国产婷婷五月天| 五月婷婷丁香综合| 99九九这里有免费视频| 九九五月天| 青草热视频这里只有精品| www.夜夜操| 成人综合网站| 另类激情四射| 色 五月婷婷基地| 激情久久久久久久久久| 91九九九九| 99热日| 九九九成人在线视频| 亚洲欧洲国产精品| 国内自拍97在线| 五月丁香999| 久久这里有精品在线观看| 另类图片激情五月| 国模九区| 99热精在线九九久久保| 狠狠爱综合| 免费日本aⅴ中文字幕| 色婷婷狠狠爱| 丁香婷婷影院| 久久综合99综合| 久久视频婷婷视频| 十月丁香九月婷婷综合| 午夜不卡久久精品无码免费| 97性视频| 美国色五月天婷婷资源站| 日韩999| 香蕉网久久| 99在线国| 日本黄色三级片内射| 久婷五月| 操逼三区| 一起操 91N.com| 婷婷深爱五月亚洲综合| 丁香五月成人| 久操大香蕉| 天天爱天天做天天| 伊人大香蕉爱聚| 少妇激情五月婷婷| 五月婷婷深深爱| 色爽九九| 五月丁香成人网| 开心婷婷五月综合| 天天色色婷婷| 欧美日韩精品人妻狠狠躁免费视频| 五月丁香久久网| 偷拍五月丁香| 久久女人九九| 丁香五月激情婷婷婷婷在线观看| 67194线路二在线观看| 天天色天天爱天天舔| 思思热精品在线| 久久五月网| 综合网啪| 亚洲天堂爱爱| 久操人妻| 91超碰在线观看| 99热这里都是精品| 操操自拍| 欧美大香蕉视频| 婷婷射图| 欧美 日韩 成人 在线| 成人网站av免费网站推荐| 天天色综网| 日本97人人| 久久婷婷激情视频| 欧美偷偷操| 日韩五月丁香| 久久狠婷婷| 久久这里只有精品热在99| 激情骚五月| 色色色成人网| 99热在线爱| 91九色熟女| 色五月婷婷在线| 影音先锋一区| 亚洲sesesese| 亚洲中文字幕在线观看| www。五月天。com| 91久久18| 天天做天天爱天天玩| 国产性爱一级| 天天综合在线网| 婷婷激情肏屄网| 狠狠色色| 色婷婷激情视频| 色婷婷激情视频| 色播五月婷婷| 丁香激情网| 中文字幕在线日亚洲9| 五月婷婷开心爱| AV在线免费观看不卡| 99热精品中文字幕| 久久久99视频| 99精彩视频| 开心五月激情五月丁香五月婷婷| 九九精品re免费视频| AV在线资源| 色五月激情问网站| 伊人喵咪a V| 狠狠干综合| 午夜丁香丁香婷婷| 亚洲春色奇米影视| 婷婷久久99| 亚洲色色色色色| 大香蕉在九| 激情五月天小说网| 色色综合成人网| 五月丁香啪啪| 天天做天天爱天天玩| av九九| 狠狠色噜噜狠| 日本操碰碰| 婷婷激情五月天在线视频| 色婷婷五月综合色婷婷| 婷婷丁香六月| 婷婷综合伊人丁香| 五月丁香无码| 99视频在线观看地址| 色噜噜狠噜噜视频| 五月婷婷激情色情网| 激情啪啪五月天| 伊人在线视频| 《蜘蛛女》梁铮1995| 99re6热在线精品视频播放速度 | 九九九九这里只有精品| 亚洲 五月 婷婷 成人| 伊人久久大香蕉网| 日日狠夜夜狠| 性韩日色婷婷五月天激情啪啪XXX| 午夜天天精品视频| www.五月婷婷| 99热日韩| 在线国产精品色| www.com亚洲网站在线免费| 色婷婷综合网站| 婷婷五月天激情免费在线观看| 66精品国产成人| 亚洲不卡123| 丁香六月婷婷综合| 99久久99九九九99九他书对| www.亭亭五月天| 日日爱678| 日韩美女在线视频19| 国产精品99久久久久久久女警| 色99在线| 都市激情小说婷婷| 五月天开心色情网| 九九色精品| 欧美性交一区二区三区| 五月天网址在线刘玥| 97综合在线| 久久婷婷五月天| 人人做天天爱| 思思99精品视频| 美欧日韩国产成人在战| 超级久久久| 亚洲成人无码专区| 婷婷久久综合久| 五月玖玖| 天天插天天射| 天天婷婷色六月| 精品皮股午夜AV| 激情五月深爱五月| 婷婷丁香成人| 色天堂A| 激情骚五月| 九一牛视频探花| 99丁香婷婷综合网| 亚州美女| 99热这里只有精| 久久综合人妻| 青青草五月天| 99爱这里只有精品免费视频| 五月天综合激情网| 丁香久久综合| 九九激情视频| 色99婷婷五月天| 中文字幕不卡网站| 精品综合网在线| 久久婷婷五月综合色欧美| 99热这里是精品| 五月综合激情婷婷六月色窝| 国产激情综合五月久久| 婷婷色五月丁香六月欧美啪| 久久资源网五月婷| 67194中文字幕| 超碰色色综合| 色色激情网| 午夜成人天堂久久无码日韩久久| www.maotanji.com| 色欲一二三| 荷兰av一级| 播播网色播播| 亚洲秘 无码一区二区三区妃光/1| 五月天婷婷丁香| 色操b| 深爱激情综合网| 色五月婷婷九月| 丁香五月综合| 日韩久久色| 九色91国产| 色5月婷婷色| 欧美操人| 色婷婷成人| 无码激情AAAAA片-区区| 久久五月丁香综合| 9视频1在线| 人妻久久婷婷| 9999久久久久| 蜜臀av无码久久久久久久久| 丁香五月人妻熟女| 亚美欧色影院| 婷婷 伊人 久久| 久久久婷婷婷| 综合五月婷婷| 丁香网五月天| 色色综合热| 五月丁香六月婷婷成人| 久久久这里都是精品| 五月天色五月天| 五月综合色播播丁香婷婷| 夜夜夜夜夜操| 91精品无码| 色九月婷婷| www.cao.com久久| 91|九色|动漫| 伊人春天av| 婷婷性爱无码视频| 可以直接看的AV| 丁香五月天欧美成人| 涩涩五| 五月婷婷第四色| 人人澡玖玖一| 性无码专区无码| 性爱网六月丁香| 国产一级片| 婷婷五月天99| 久久人妻视频| 欧美叉叉叉BBB网站| 亚洲人成网站999久久久综合| 97色女人在线| 天天插天天草人人玩| 人人干人人操人人摸人人做| 欧美乱码国产一级A片| 我爱大香蕉| 大香人妻| 九九视频免费| 婷婷五月婷婷| 玖玖色综合| 六月丁香成人| 五月天婷婷基地丁香| 六月丁香好婷婷| 国产性爱亚洲是图| 99色嘟嘟精品网站| 91精品婷婷国产综合久久| 五月丁香亚洲五月| 日本一道久久| www.com久久久久久久久久久久久久久久久| 五月天伊人久久久久| 91精品熟女| 99色热视频在线| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 五月丁香亭亭AV女优| 久热精品视频在线观| 综合久久六月| 久久一热| 色五月欧美| 99热九九在线| 可以看的AV| 成人免费网站免费看| 啪啪啪啪五月天| 9久久久久久久久久久| 亚洲成人在线观看av| 人妻综合网| 婷婷娱乐丁香综合网| 色优久久| 超碰人人操| 五月天艹天天| 大香蕉520| 久久性爱视频| 玖玖婷婷五月天| 91打屁股免费看| 日韩色色色色色| 91综合色| 91九色在线观看免费| 丁香婷婷五月天色播| 激情五月丁香五月| 丁香五月天社区婷婷| 在线成人国产| www,欧美干干干干干干| 婷婷开心激情| 九九综合88| 色丁香婷婷| 成人中文网| 丁香五月天天哦| 久久丁香五月| 丁香婷婷五月综合影院| 色色色成人网| 亚洲成人在线电影网站| 色欲五月天| 熟妇人妻中文字幕无码老熟妇| 51成人| 丁香九月综合| 日韩无码性爱| 狠狠干婷婷| 久久五月婷综合网| 五月丁香婷婷激情澎湃四射| 全部老头和老太XXXXX| 婷婷久久亚洲| 日本三级韩三级99久久| 婷婷五月天丁香社区| 色情婷婷五月天| 极品人妻VIDEOSSS人妻| 99在线观看精彩视频| 色色色色色综合| AV在线免费播放| 激情六月天婷婷| 99热国内精品| 久久3p| 丁香五月在线自慰| 夜夜爱伊人| 欧美精品999| 97人人干人人操| 色色丁香婷婷综合| 亚洲精品影视| jiujiu热在线视频| 伊人在线视频| 激情综合网络插| 久久九九网| 色色色.com| 激情五月天婷婷播播久久综合91| 激情www.98com| 国产成人AV不卡| 深爱五月网| 五月丁香最新| 国产精品视频| 秋霞AV淫| 婷婷综合网站| 人妻videos人妻高清| 江苏少妇性BBB搡BBB爽爽爽| 中文字幕丁香五月| 91九色超碰| 色色网五月激情| 大香蕉人人网| 国产超碰在线| 久久成人性爱| 婷婷五月天国产传媒| 99色最新在线视频网站| 久久九九99桃花视频| 欧日韩成人| 色五月xxx| 在线18av | 日韩色色视频| 在线色色| 成人精品视频99在线观看免费| 人人爽人人射-美女久久久久久久久久-成人AV| 538在线精品| 色五月激情婷婷| 婷婷色五月开心五月| 五月丁香色色网| 五月四色色| 久久久久久18| 丁香五月天网站| 天天骑日日爽| 欧美综合激情| 99这里只有| 亚洲精品国产成人AV在线| 狠狠操狠狠爱| 五月丁香欧美综合| 日本高清久久| 婷婷五月天VI| 五月天婷婷基地综合网| 婷婷五月小说色综合| 天天狠狠综合精区| 亚洲激情另类| 二人电影免费版在线观看| 亚洲国产色婷婷| 这里只有精品在线观看视频| 久色五月婷婷综合| 丁香五月欧美色综合| 国产偷人爽久久久久久老妇APP| 五月天激情无码| 97人人操人人干| 99久视频| 99热这里只有精品3| 婷婷久久婷婷色五月| 中美日韩成人在线| 欧洲亚洲欧洲99久久| 狠狠狠狠青草| 中文AV网站| 男人的天堂五月丁香| 五月婷婷久久综合| 日逼影音先锋AV男人资源站| 丁香五月婷婷六月| 激情五月天色婷婷| 国产成人AV在线播放| 亚洲亚洲人成综合网络| 97亚洲婷婷| 人人舔天天| 激情婷婷丁香五月天小说| 一本狠婷婷综合| 任你爽视频| 五月婷婷在线视频| 99aese| 亚洲美女高潮久久久久久69| 97超级啪啪在线观看| 免费观看的av| 开心婷婷五月| 激情五月色综合国产精品| 五月丁香无码| 99热全是精品| 天天揷综合网| 五月丁香六月成人| 五月综合丁香婷婷| 五月成人综合| 五月天婷婷自拍图片在线观看| AV网址大全在| 大战熟女丰满人妻AV| 日本综合久久| 久机视频这只有精品| 五月天激情中文字幕| 五月激情啪啪| 中文字幕激情综合| 色五月综合97| 9色婷婷| 九热视频| 综合视频久久| 99免费热视频在线| 五月婷婷乱| 99在线视频免费| 亭亭丁香aV| 久久网日本| 五月丁香六月婷婷久久| 国产亚洲色婷婷久久99精品9j| 1024亚洲无码| 夜夜穞天天穞狠狠穞AV美女按摩| 天天干天天操天天爽| 久久婷.com| 99综合| 丁香五月天无码| 亚洲尤物在线| 色噜噜,噜噜色| 天天玩天天摸| 另类五月婷婷| 97精品综合| 国产成人av在线播放| 另类激情五月| 任你操精品免费| www.色情五月天.com| 综合超碰熟| 91成人看| 草久私拍| 九九中文字幕九| 成人 九九九九| 激情超碰网| 综合久久伊人| 99啪视频在线观看| 综合九九日本| 激情五月综合第一页| 欧美一线视频| 婷婷五月天综合AV| 91碰碰视频| 五月婷婷激情久久| 九色七七| 色蜜婷婷| 亚洲愉拍99热成人精品| 9191avse| 五月婷婷综合社区| 欧洲亚洲免费视频9| 99re视频在线播放| 婷婷99中文字幕| 99开心五月五月丁香激情| 26uuu视频欧美| 开心久久xxx色| 清色五月天| 色狠狠综合网| 五月婷婷狠狠干| 色 色 色综合com| 五月香婷婷| 91avse| 久99| 91九色最新视频| 91在线97视频| 婷婷五月,偷窥偷拍网| 亚洲小电影在线观看黄999| 色三级色三级| 日本精品。999| 五月天婷婷黄色| 密乳视频| 国产毛片精品一区二区色欲黄A片| 中文久久婷婷| 色情五月婷婷| 久九色| 六月丁香啪啪啪| 成人无码髙潮喷水A片| 影音先锋五月天婷婷丁香在线观看| 亚洲视频1区| 九九综合图片网| 丁香六月激| 五月天综合区| 五月丁香婷爱在线| 天堂综合久| 欧洲亚洲精品| 亚洲一二三网| 九月av| 激情五月深爱五月| 色婷婷五月中文字幕在线dvd| 欧美激情综合色综合啪啪五月| 丁香婷婷网| 男人大jjc女人免费视频| 丁香色影院| 玖热精品综合视频| 色婷婷九月| 久久综合中文字幕| 日韩人妻无码专区| 99caobi| 91欧美| 婷婷五月蜜桃成人桃色丁香| 人人草人人视| 啊v视频在线观看| 色综合77777| 国产免费一区二区三区三州老师F1F1.CC | 五月丁香六月婷婷激情视频在线观看免费| 91狠狠色色丁香婷婷综合久久| 青青草成人网| 日本三级网址| 五月天天天综合| 五月天全国最大成人网| 97热这里精品在线视频| 免费观看全黄做爰的视频| 狠狠爱婷婷| 五月亭亭激情综合| 激情av在线| www.wuyuetian啪啪| 91九色丨国产丨爆乳| 婷婷色五月天综合网| 久99| 4399精品一区二区| 亚洲视频a| 九九在线精点品| 激情五月天网站| 色婷婷综合电影| 婷婷五月综合欧美在线播放| 精品久久这里热66| 婷婷五月天国产传媒| 玖玖综合色| 九九热精品6| 开心五月色婷婷综合开心网| 婷婷五月天AV在线| 99热久只有| 大香蕉精品视频| 99热免费18| 色五月视频无码播放| 97资源碰碰| 一区二区乱视频码| 婷婷操逼网| 这里只有精品1| 熟女国产在线一区二区三区四区| 99rewww| 伊人婷婷综合| 国产44页| 色婷婷a三区麻| 久久久久久久人妻| 五月婷中文字幕| 天天婷婷| 久久久久久久久久久jjjj| 五月天综合缴情网网站0| 99热1| 亚洲爱婷婷| 久久精品66| 97av在线视频| 999婷婷综合| 亚洲另类视频| 久久综合香蕉国产国产蜜臀AV| 五月丁香久久久日婷婷久久婷婷日| 天天久综合| 男人的天堂在线婷婷| 久9视频| 天堂久久大香蕉| 婷婷丁香五月综合网上| 狠狠操天天干| 亚洲日韩国产黑丝黑丝AVAV一区二区三区| 91九色中文| 丁香婷婷久| 天天色·欧美| 久机视频这只有精品| 肏屄色播伊人97婷婷| 婷婷五月激情网| 日本丰满久久| 亚洲五月天婷婷综合| 丁香性爱在线视频| 天天综合天天做天天综合| 久草五月| 只有精品在线观看| 国产67194| 91久久婷婷| 亚洲av网站| 久操热线| WWW.99热| 99熟女视频| 九九AV| 色播丁香| 五月天色色网站| 丁香婷婷精品视频| 99久视频| 天天色播| 大香蕉AV在线| 丁香婷婷六月激情文学 | 五月婷久久| 1024在线一区| 色色婷婷综合网| 96丁香六月婷婷蜜桃综合久久| 日日日日做夜夜夜夜无码| 色五月婷婷中文字幕| 丁香五月婷婷动漫视频| 少妇性按摩无码中文A片| 五月激情丁香五月| 99国产精品白浆在线观看免费| www.sd-xiangsu.cpm| 欧美顶级少妇做爰HD| 九九色99| 一婬一伦一区二区三区| 丁香五月天电影| 99热在线观看精品| www.狠狠| 色五月天天| 国产原创视频91九色| 色色日本| 国产成人av在线播放| 综合网五月| 天天激情5月天亚洲| 免费观看全黄做爰的视频| 日日做天天操夜夜爽| 激情五月天婷婷色色色色色色色色色色色| 久久狠狠干| 婷婷午夜| 中字幕视频在线永久在线观看免费| 99热日韩这里只有精品| 色婷婷8| 欧美丁香婷婷五月| 综合色色婷婷| www.婷婷六月天| 人人爱人人添| 免费亚洲成人电影AV| 97色在线视频| 五月丁香婷婷综合在线| 国产在线激情视频| 99热| 九九99在线观看视频| 久热伊人91| 日本欧美成人片AAAA| 激情q青青草在线婷婷| 丁香五月婷婷欧美性爱| 狠狠狠狠狠狠色| 六月婷婷六月天天在线免费| 人妻AV在线| 99在线小视频| 久热九九| 香蕉视频性爱BB做爱| 超级碰碰91| 久热这里只有精品99re,久热这里只有精品7| 999热这里只有美国精品| 久久精品婷婷| 丁香六月婷婷色XXXX| 久久性刺激| 国产精产国品一二三在观看|