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
返回資訊列表
日本欧美成人片AAAA| 最新婷婷五月丁香| 欧美性爱特黄一级aaaassss| 91婷婷搞| 夜夜干天天干| 天天插天天草人人玩| 无码视频国内精品久久久| 噜噜噜噜噜色| 亚洲爱爱无码婷婷色五月| 九一牛视频探花| 久热欧美| a毛片二逼wwwwwwwwww| 婷婷激情综合网| 丁香五月天激情AV| 五月夜丁香| 婷婷色五月开心五月| 亚洲妇女熟BBW| 色色五月天婷婷丁香| 亚洲婷婷月丁香五月| 成人网站av免费网站推荐| 五月婷婷激情综合| 狠狠草狠狠草| 五月婷婷AV| 99综合网| 成人版视频在线观看| 思思热精品在线观看| 亚洲va成人va成人va在线观看| 丁香色情五月综合激情| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 五月天激情综合在线| 1024在线视频| 亚洲4区国产欧美| 国产偷人爽久久久久久老妇APP| 欧美内射AA| 狠狠高潮精品亚洲1| 99热大片| 亚洲性爱区无码区| 五月天综合图片| WWW.开心五月天.COM| 丁香婷最新动态| 香蕉视频91| 人人摸人人搞| 色婷婷精品| site:publishdd.com| 做爱夜夜干天天操| 森林影视大全,最好看的2019年视频| 91碰碰碰| 婷婷五月情色| 九九精品视频在线6| 另类图片婷婷五月天| 思思视频精品| 五月激情综合美女久久| 操逼巨乳91| 五月天播播| 九九热思思| 青草青青草| 狠狠色综合五月| 五月婷婷综合色拍| 天天日本夜夜谢| 五月丁香六月婷婷综合网缴情| 色婷婷五月网| 97碰碰视频| 久久丁香综合| 婷婷99狠狠| 婷婷五月天网| 色色a| 色欲久久久久| 日韩无码专区| 51精品国自产在线| 日韩性爱AV| 五月开心网| 激情綜合W W W,激情五月天| 99视频在线观看地址| 五月丁香啪啪啪| 疯狂做受XXXX高潮A片| 激情五月婷婷| 啪啪丁香五月| tingtingzonghewang| 色综合综合网| 五月丁香久久| 热久91| 91大神操美女| 青青久在线视频免费观看| 综合色播| 成年视频免费观看| 五月婷婷久久内射| 亚洲综合色色| 日日懆天天懆| 日日狠夜夜狠| 久久婷丁香五月| 在线观看的av| 日韩999| 色播丁香| 人人看人人97| 亚洲小视频免费播放| 开心婷婷中文字慕| 99热九九九九| 无码人妻丰满熟妇奶水区码| 996黄色片| 成人婷婷| 一丁香五月天月AV| 日本不卡高字幕在线2019| 国产九月婷婷| 激情婷婷丁香五月天小说| 色99欧洲色19| 欧美性色A片免费免费观看的 | 无码任你操| √天堂资源在线人妻熟女| 激情综合色| 91碰碰碰久久久久| 丁香五月第四色88| 7EzOBIhNq85TO| 丁香久月婷| 伊人五月天日日夜夜久久久天天| 人妻精品在线| 久久综合影院| 五月天另类激情在线| 五月婷婷婷婷| 欧洲不卡视频| 日韩黄色电影| 色色色色色五月| 天天综合五月| 色婷婷丁香五月| 91视频久久久| 思思热在线播放| 噜噜五月天综合| 五月天啪啪| 九九久久偷拍| 精品无码99| 丁香色婷婷| 七七久久婷婷| 草逼大片| 淫荡A片| 天天摸天天舔天天爽| 五月天激情网站| 中文字幕丰满乱孑伦无码专区| 五月开心婷婷极品激情| 9l视频自拍九色9l黑人| 久热这里| 99精品7| 色九亚洲| 婷婷综合色| 国产午夜精品久久久观看| 婷婷五月花| 五月激情啪啪| 午夜69成人做爰视频| 成人婷99最新| 人妻少妇色综合| 亚洲碰碰碰| 色色网站免费| 久久怡红院| 国产AV一区二区三区最新精品| 五月丁香91| 播五月开心婷婷欧美综合| 色婷婷影视99| 欧美综合五月丁香六月婷| 人操人人| 色婷另类| 99热在线观看免费中文| 男女啪啪做爰高潮无遮挡| 99热这里只有精品手机在线观看| 无码成人AAAAA毛片AI换脸| 国产熟女日日骚五月丁香爱| 色婷婷8| 丁香婷婷丁香五月欧美人| 色色色色网| 中文字幕婷婷| 欧美99热| 天天舔天天插天天干| 全部老头和老太XXXXX| 激情婷婷内射| 色婷婷亚洲综合网站| 99re这里只有精品视频了| 啪啪色激情五月天| 国产成人99久久亚洲综合精品| 久久大香蕉同僚| 操人91| 91九色首页| 婷婷五月激情五月激情| 这里只有精品99www| 成人国产欧美大片一区| 五月丁香婷婷免费视频| 99色精品视频| 无码一区二区三区四区五区91c| 国产日韩欧美| 丁香婷婷激情综合五月激情| 婷婷六月香| 丁香五月激情网| 久久五月视频| 狠狠色噜噜色狠狠狠综合色 | 色五月婷婷基地| 午夜丁香六月婷| 天天干天天操天天爽| 久久人五月| 五月丁香啪啪综合| 婷婷五月天va| 99 re视频一区| 99热精品无码| 五月婷亚洲精品| 日韩成人电影在线播放| 婷婷色色亚洲| 狠狠狠狠狠干| 久久全色| 五月天开心网| aa久久| 亚洲性爱干干| 9人人操人人看| 五月婷婷色色| 97在线精品| 五月丁香六月婷婷不卡免费无码 | 欧美电影在线播放| 九九视屏| 亚洲夜夜操| 超碰九九热| 韩日另类| 精品一二三区久久AAA片| 丁香五月天综合| 欧美一区二区三区不卡影视| 丁香婷最新动态| 草久私拍| av婷婷丁香| 国产亚洲99久久精品| 亚洲综合婷婷五月天| 成人色色视频| 深爱激情婷| 久9热视频| 精品一二三区久久AAA片| 黄色AAAAA| 思思久久99热| 久久曰曰| 97干在线视频| 婷色五月天| 2015在线中文字幕| 婷婷激情五月呦呦| 青草视频在线播放| 欧美在线视频99| www.五月丁香| www.henhengan| 综合激情网| 欧美97色| 色婷婷久久综合| 日笨久久网| 大香蕉久久综合网| 99re欧美精品| 婷婷综合网伊人| 九九热视频99| 亚洲综合激情五月久久| 天天婷婷综合| 久久er九九| 无码se| 五月久久网| 婷婷伊人欧美| 久久丁香网| 色婷网站| www99xxxx五月丁| 久久R激情| 丰满少妇猛烈A片免费看观看| 色5月婷婷| 久久九九热视频| 99热国内精品| 深爱婷婷网| 99视频自拍| 99日在线视频| 婷婷精品| 嫩模草| 色婷插| 99久久婷婷综合| 久久黄色片| 久热A片| 国产av天天插天天操天天爽| 精品在线网站| 99免费视频网| 天堂综合久| 五月天激情婷婷| 九九热视频在线观看| www.99日本| 丁香五月婷婷色| 日本三级大片| 久久99精品久| 色五月综合网| 26uuuavcom| www.色婷婷| 五月色色色| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 精品网站99| 激情com| www五月| AV大片在线播放| 婷婷丁香五月社区亚洲| 在线成人网址| 色色日韩无码| 色综合中文| 亚洲激情综合| 91超级碰人人操| 婷婷色在线播放| 99ri视频| 久久一热| 激情综合网激情五月天| 精品99在线观看| 激情五月天视频| 五月人妻婷婷| 五月婷婷激情日本| 碰97 久| 五月婷婷导航| 夜夜操少妇| 99色亚洲| 免费看欧美成人A片无码| 狠狠色婷婷丁香五月| 丁香六月情| 丁香五月婷婷色| 精品一二三区久久AAA片| 丁香熟女乱| 99视频内射三四| 久久一二三视频| 天天日综合| 五月丁香啪啪综合| 五月激情啪啪| 欧洲亚洲精品| 激情五月婷婷| 人人色性网| 另类图片色五月| 五月色影院| 99热地址| 婷婷99热| 五月婷亚洲精品| 26uuu最新地址| 新激情婷婷| 在线成人网址| 青青草婷婷五月天| 丁香五月婷婷亚洲色图| 亚洲性爱电影| 3DAV亚洲香蕉久久 一区二区| A一级操| 五月天激情国产综合婷婷婷| 婷婷干六月综合旧址| 夜夜骑日日操| 五月激情六月综合| 九九精品综合| 秋霞AV淫| 色私五月婷婷| 婷婷色导航| Av狠狠色丁香婷| 国产欧美日韩性爱| 久久538| 另类激情码| 99热色在线精品| 天天干,夜夜爽| 成人电影在线免费试看| 可以免费观看的AV| 久99精品视频| 亚洲无码99| 在线一起草av| 激情五月天小说| 香蕉人妻AV久久久久天天| 99久久免费性爱视频`| 99亚洲精品| 好叼操在线观看| 五月婷婷五月丁香综合| 色色色热| 奸逼视频| av在线婷婷| 五月丁香综合精品| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 无码少妇高潮喷水A片免费| 婷婷丁香六月| 五月天激情网图片| site:esunnet.com| 97干在线视频精品店| 中文无码精品一区二区三区| 国产婷伊人| 天天插天天日天天爽| 狠狠干综合| 七七九九色色| 偷拍九九热| 激情亚洲网| 欧美日本99| 五月天亚洲综合网| 婷婷啪啪| 免费观看全黄做爰的视频| 天天操夜夜夜拍拍拍| 免费观看全黄做爰的视频| xxx综合在线| 日韩国产在线精品| 秋霞九九无码| 夜夜爱伊人| 久久人人九九| 嫩草AV久久伊人妇女超级A| WWW.桔色成人.COM入口| 婷婷丁香六月天激情四射网| 综合另类视频| 99视频精品8| 日韩av高清| 婷婷社区五月天| 99精品一二三四视频| 九九成人视频| 丁香久久久| 91打屁股视频网站| 开心婷婷五月| 色五月天婷婷| 色婷婷在线视频久| 欧美久人人| 五月婷婷久久综合| 日日操日日射| 日韩人妻在线观看| 九九99视频精品| 五月天成人综合| 五月花综合网| 狠狠草网| 久久一级AV| 日本丁香五月| 五月社区婷婷激情| 99九九综合久久九九| 五月丁香综合网| 五月婷婷综合久久| 久久亚洲网| 日韩精品电影| 99久久99视频只有精品| 精品热九九| 久久性操| 色婷婷色婷婷五月| 亚洲婷婷丁香五月亚洲| 久久综合中文| 开心五月婷婷综合在线精品素人| 国产欧美精品AAAAAA片| 久久综合激情| 五月天婷婷激情综合| 99小视频在线| 九热免费视频| av五月丁香婷婷网| 色婷婷色综合久久精品V| 婷婷五月av| 99在线精品在线视频| 中文字幕丰满乱孑伦无码专区| 丁香五月婷婷综合激情哟哟哟| 久热99| 黄色笑话深爱激情网丁香五月婷婷啪啪啪啪啪| 婷婷舔| 国产无人区大片| 婷婷五月丁香在线观看| 91成人电影| 欧美日韩成人综合9| 黄网免费看| 操碰色一区就去操| 欧洲色区| 丁香五月婷婷基地| 96丁香六月婷婷蜜桃综合久久| 色噜噜五月天| www.maotanji.com| 五月丁香婷婷免费视频| 婷婷国产成人| 五月丁香色婷婷| 天天综合网亚洲网站| 五月丁香综合伦理片| 四月婷婷五月色综合| 伊人九九热| 伊人久热91| 五月婷婷性爱视频| 美国不卡视频| 五夜丁香| 影音先锋一区二区三区| 久久久久久综合88| 丁香婷最新动态| 免费黄色片子| 99视频精品视频| 五月天婷婷三级黄| 色婷婷欧美在线| 欧美欧盟性爱网| 久久久精品视频79| 五月激情视频网| oVV4WIB3vFi8D| 丁香五月激情六月综合| 俺去也五月天婷婷| www.99热精品| 丁香五月天电影| 开心五月天激情网| 99久久国产宗和精品1上映| 激情五月天色播| 成人做爰高潮A片免费视频| 99久久九九| 亚洲亚洲人成综合网络| 激情综合五月丁香六月婷婷| 性热视频99精品| 婷婷五月丁香六月| 色五月丁香婷婷综合| 激情www.98com| 可以免费看AV网站| 婷婷涩五月| 婷婷五月丁香五月| 国产高潮白浆一区二区| 99 re视频一区| 激情五月丁香婷婷夜夜操| 天天激情夜夜干| 色丁香影院| 九九色大香蕉| 国产毛片精品一区二区色欲黄A片| 九月丁香八月婷婷加勒比| 欧在线一区| 91久久精品无码一区二区三区| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 狠狠色噜噜色狠狠狠综合色| 激情综合网五月丁香| 久久网站观看免费欧洲国产 | 97操女视频| 9热久久| 色婷丁香| 五月婷婷六月基地| 五月婷婷综合网| 狠狠爱深色婷婷综合| 丁香五月婷婷婷桃花影院| 99爱爱| 69激情小说| 五月天社区婷婷丁香社区| 国产亚洲99久久精品| 96色婷婷| 五月丁香婷婷激情| 99操碰| 成人国产网| 久久久五月天| 天天天在线观看| 五月天电影网| 99日本精品视频热| 激情五月婷婷开心网| 天天色天天日| 国产日韩av片| 亚洲欧美另类在线23p| 久久久五月天| 五月天婷婷AV| 丁香五月婷婷www..com| 五月婷婷激情网| 久热播这里只有精品| 天天操B| 99在线视频。| 深爱激情AV| www.jiujiujiu| 午夜激情四射影院| 九九久久这里只有精品XB| 久色网址| www.五月丁香| 色综合色色色| 操操综合网婷婷| 天天日夜夜B久久| 久久婷综合| 亚洲第一av| 激情五月婷婷老师| 五月天婷婷婷| 婷婷五六日| 五月天.com| 色五月婷婷操逼| 99色视频在线| 久久 中文 日本| 五月婷婷网五月在线| 99在线精品免费视频| 国产精品久久..4399| 可以看的av| www. 五月. com| 五月丁香六月激情综合欧美| 99热只有这里才是精品| 大香蕉520| 九九国产视频| 欧美久热| 热的国产,热的综合,热的有码| 思思久久99| 久久综合性| 超碰在线网站| 激情综合婷婷| 丁香九月婷婷| 欧美色五月| 成人在线网址| 五月综合视频| 丁香五月成人论坛| 色五月 婷婷, 大香蕉| 五月六月激情婷婷| 亚洲综合网在线| 人妻尝试久久久久久久久久久久| 激情五月婷婷老师| 深爱婷婷丁香五月激情| 五月天开心色色网| 丁香五月狠狠在线观看| 综合天堂AV久久久久久久| 玖玖精品资源| 97操男人的天堂| 五月天激情小说| 五月婷啪啪| 99热亚洲精品| www.人人操人人看人人想人人摸 人人人人操,COM | 色情综合| 99.色| 97超碰99热99| 婷婷丁香色情| 久久丁香婷婷色情综合| 日日夜夜婷婷| 九九热只有精品6| 91色呦哟| 操逼视频一区| 欧美精品久久久久久视频观看| 国产乱子轮XXX农村| 天天射色五月天| 综合99久久天天综合| 久久精品视频在这里有| 五月婷婷精品视频| 色欲天天综合网| 天天摸,天天爽| 99久热视频在线| 综合五月丁香六月婷婷| 亚洲激情高潮| 狠狠干在线| 婷婷五月婷婷| 五月激情综合美女久久| 永久的网站AAAA| 亚洲无码影片| 婷婷五月天激情文学| 色狠狠综合网| 亚洲综合色色| 伊人天堂婷婷| 丁香五月成人| 射久久丁香五月| 久久五月天激情婷婷| AV在线收看| 六月色婷婷| 婷婷五月丁香六月综合网| 婷婷色色五月天| 婷婷六月天| 色五月天天| 天天肏在线观看| 天天弄天天操| 天天干天天插| 狠狠干青青草| 狠狠色丁香五月婷巨| 中文字幕av网站| 精品久久久人妻| 日本熟女二区| 性爱电影科技贸易有限公司| 五月丁香久久综合| 97干婷婷| 区区欧美你爱| 久久这里只精品66| 激情九月天天天天婷婷| 思思热99er| 色五月综合在线| 成人片黄网站色大片免费毛片| 人人操av| 激情婷婷五月基地| 五月婷高清视频| 亚洲激情视频在线观看| 99久久玖玖| 色婷婷AV久久| 农村熟妇高潮精品A片| 欧美大片| 久久久性爱视频| 久久这里只精品| 淫荡工a| 久久草人妻| 久99久精品视频| 97五月综合网| 人妻中文av| 欧美97超碰| 一级片操逼视频| 五月亭亭开心网| 日韩黄黄| 老司机日日夜夜青草| 五月婷婷激情| 久8色色| 久久婷婷五月综合97色一本| 五月停亭六月,六月停亭的英语 | 国产在这里只有精品| 只有久久精品免费| 婷婷丁香激情五月| 亚洲精品性色| 五月天停停成人网| 欧美日本一区二区三区| 国产片色| 夜夜撸日日骑| 99国产视频网| 五月婷婷丁香啪啪| 欧美精品99| 久99久在线| 在线中文字幕av| www99热| 色色性爱视频| 丁香婷婷综合激情五月色| AA片在线观看视频在线播放| 丁香五月天操B| 操九色| 五月丁香无码| 青青久久五月| 国产精品 的国产| 五月丁香中文婷婷中文| 婷婷色色丁香五月天| www.99热在线观看| 久久丁香婷婷五月天| 五月婷婷狠天天色综合| 人妻VideOssS人妻| 色婷婷在线视频| 超碰激情网| 中文激情网| 双性美人被调教到喷水A片| 婷婷伊人综合| 大香蕉五月天婷婷丁香91| 97色碰| 开心五月婷婷激情网| 毛片色五月| 国产精品色婷婷99久久精品| 五月天婷婷影院| 毛片九九九九九九九九18| 色九月婷婷丁香| 思思久久99热| 天天做天天爱综合| 97色色婷婷| 日本人妻伦在线中文字幕 | 亚洲乱码日产精品BD| 久草五月丁香婷婷综合| 九九aV| 色婷婷五月天激情综合| 婷婷激情图片| 。久久久久久久久久久久久久人妻 | 婷婷五月综合欧美在线播放| 亚洲成人人人操| 色综合久久44| 91狼友视频在线观看| 影音先锋一区| 亚洲激情色色| www.99色| 综合一啪| 在线综合婷婷| 久久综合中文| 欧美日本不卡黄色片| 色婷婷影院| 色五月丁香伊人五月| 久热这里| 色色狼人综合| 五月播播| 欧美性猛交99久久久久99按摩| 亚洲精品网址| 久久九九大香蕉电院| 色色网站在线| 六月婷婷九月丁香| 九九精品视频在线6| 99热这里只有精品9| 狠狠九九婷婷韩| 久久五月丁香综合17C| 五月婷亚洲精品AV天堂| 丁香五月天亚洲综合| 成人色站,在线视频,看片-SS1AV| 婷婷激情人妻| 丁香五月久久社区| 美国天天日天天操| 亚洲乱码精品久久久久.. | 婷婷五月中文在线| 天天摸天天肏| 98永久精品| 思思国产99| 免费观看全黄做爰的视频 | 狠狠爱婷婷| 午夜天天精品视频| 午夜激情久久| 日本99热| 性爱人人网| 99热在线这里只有精品| 天天日天天插| 五月婷六月综合在线观看| 97se视频在线| 国产精品国产| 五月婷婷伦理| 天堂五月婷婷| 婷婷第一页| 婷婷五月图片小说网| 亚洲三级无码| 好好干av| 热99色| 色情激情五月| 久久五月婷婷综合网| 激情五月婷婷网在线观看| 日韩一级片| 婷婷六月丁香综合| 五月丁香久久| 精品婷婷五月天| 欧美成人精品三区综合A片| 日韩色色网| 激情五月天色播| 激情婷婷内射| 中文字幕无码人妻少妇免费视频| 色播播之激情五月婷婷| 国产性av| 深爱婷婷丁香五月激情| 日日噜噜久久婷婷五月天| 天天草天天摸| 五月天婷婷爱| 亚州操人在线视频| 丁香五月狠狠在线观看| 日本人妻伦在线中文字幕| 丁香五月婷婷亚洲综合精品在线| 久久人妻超碰一区| 人人摸人人搞| 激情婷婷丁香五月天| 99视频内射三四| 99久99热| 人人草人人舔| 亚洲天天综合| 99精品视频推荐| 成人欧美日韩| 天天爽成人综合网站| 丁香五月五月婷婷欧美大香蕉 | 丁香六月婷婷综合缴| 激情久久久久久久久| 色五月激情五月天| 五月婷婷之六月丁香| 色综合久久8| 婷婷午夜精品久久久| 激情综合4月| 丁香五月开心七月| 99爱视频| 国产精品在线视频| 激情网色五月| 99免费在线| 99成人无码| www.五月天色色色| 色婷婷成人| 婷婷丁香色五月| 激情婷婷在线中文字幕| 性做爰A片免费视频A片直播| 深爱激情综合网| 亚洲综合激情五月久久| 五月天婷婷狂暴白浆| 青青草原伊人网| 色网站99| 色狠狠综合入口| 青青青在线视频国产| 操一操干一干| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 五月天堂婷婷| 婷婷综合偷拍| 99激情视频| 天天综合天天玩夜夜玩天天玩夜夜玩| 婷婷丁香五月激情中文字幕版| 青吴乐视频| 五月婷精品| 激情小说 五月天| 综合色色婷婷| 色婷婷五月天无码视频| 九色视频91| 5月婷婷6月六月丁香| 狠狠看狠狠| 色爱综合五月| 第四色在线观看| 99精品视频在线观看| 激情校园 亚洲| 日韩欧美一级大黄网站| 久久9热综合| 麻豆WWWCOM内射软件| 免费黄色片子| 99视频只有精品| 99视频精品8| 精品99这里有| 婷婷情色五月天| 九九精品碰| co超碰在线观看| 婷婷天堂站| 99re视频在线播放| 综合网五月| 5月婷婷五月天| 五月丁香婷色| www。五月天激情| 9精品视频在线| 五月婷天堂视频| 日本eVa一区=区视频| 91性高潮久久久久久久久| 亚洲av免费在线| 狠狠色大香蕉| 丁香婷婷六月| 色爱亚洲| 天天激情站| 热99热9| RenRenSe在线视频网站| 五月婷婷久久激情 | 婷婷丁香五月综合久久| 人人摸人人干| 久久综合九九| 天天干,夜夜爽| 天天日,天天干,天天操| 99re视频在线播放| 爱草视频在线| 99在线视频精品| 啪啪色区| 非洲一级AV| 91.com男女操| 99热这里都是精品| 九九久久五月天综合伊人| 亚洲性视频| 伊人五月天97| www99在线观看视频| 69精品人人人人| 微拍92| 亚洲精品一区中文字幕乱码| 九九视频在线观看视频6 | 狠狠操狠狠| 色婷婷亚洲婷婷| 能看的av| 97一区二区| 99在线视频观看| 4438全国最大视频成人网站在线观看 | 不卡的AV网站| 99精品视频播放| 婷五月天| 超碰无码318604| 天天综合五月| 久久只有精| www.爱操com.| www.五月天社区| 激情五月天小说| 色婷婷88| 99久久网站| 欧美槡BBBB槡BBB少妇| 丁香激情综合| 十区av| 九九热精品| 狠狠色狠狠鲁| 亚洲av骚货| 五月色婷| 成人.在线日韩| aaaa.黄| 色色婷婷丁香| www,欧美干干干干干干| 天天天天天久久久久久| 丁香久久久| 精品久久人妻| 91狼友视频在线观看| 996精品热视频| 久久激情网| 国产精产国品一二三在观看 | 国产真人做爰视频免费| 雪千夏麻豆| 久久婷婷网| 爱草视频在线观看| 亚洲最大激情无码| 丁香五月激情五月| 欲求不满的人妻| 欧美色色色| 丁香五月六月激情久久| 日本久久99| 91大操| www.婷婷| 婷婷五月激情视频在线| 国产日韩欧美性爱| 欧美日韩日韩成人| 天天搽天天射| 99激情视频| 国产毛片精品一区二区色欲黄A片 国产人妻777人伦精品HD | 少妇性BBB搡BBB爽爽爽视頻| 黑人无码一区| 婷婷成人丁香色情基地30| 香蕉操亚洲| 精品日本视频444| 操人无码| 婷婷五月天六月丁香| 涩五月婷婷| 久久久久网站| www.丁香黄色五月天人与| 中文字幕在线资源| 中文字幕在线免费观看视频| 免费视频WWW在线观看网站| 91丨九色熟女丨首页| 五丁香激情综合| 九九色人| 九九色天堂| 久久婷婷五月综合色播| 日本人妻A片成人免费看片| 国产黄色大片| 热99久久这里只有精品| 久久婷婷五月综合| 99热99思午夜精品| 色五月开心开心五月激情五月| 91久热| 亚洲四色五月| 欧美va| 天天爽天天| 996er热| 亚洲色频| 婷婷五月开心六月AV| 五月丁香久久综合精品| 精品久久人妻| 激情综合网五月丁香| 五月激情六月丁香| 五月婷视频在线观看| 一本伊人色婷| 无码激情AAAAA片-区区| 婷婷丁香五月天综合AV| 色玖玖导航| 91久久电影| 激情综合五月开心狠狠| 一区二区乱视频码| 午夜电影网VA内射| 91久久精品国产91性色TV| 天天天天天天天干| 色五月色综合| 久久亚洲无码| 五月天天爽| 亚洲区1| 成人电影丁香六月天| 91人人人人人| 熟女五月天久久综合| 久久精彩免费视频| 狠狠狠婷婷五月综合| 婷婷亚洲综合| 婷婷亚洲五| 久久女婷| 婷婷五月天成人动漫| 五月色综合| 日日色五月天| 国产精品久久久久9999小说| 99er在线观看| 久久R激情| 99热成人在线| 五月色丁香婷婷综合| 丁香六月五月天| 久久婷婷大香蕉| 偷拍五月丁香| 99碰网站| 婷婷五月天小说网| 丁香五月在线视频| 99视频| 婷婷五月丁香综合人妻| 丁香社92视频| 99乱视频| 新久久五月天激情| 中文幕无线码中文字蜜桃| 黄色99网| 超碰免费观看| 婷婷激情五月| 91超级碰| 被强行糟蹋的女人A片| 久噜久噜| 日韩无码性爱| 91综合国免费久入| 亚洲VA欧美VA| 婷婷丁香五月天综合激情| 激情五月,激情综合网| 超碰色婷婷| 开心激情婷婷| 好好干av| www.婷婷,com| 五月天六月色| 久久久99精品| 天堂综合久久| 丁香婷婷久久| 婷婷色爱| 久热九九| 激情综合网激情五月丁香五月俺也去| 天天婷婷综合亚洲亚洲| 国产激情AV| 亚洲V国产V欧美V久久久久久| 久月婷婷| 亚洲第一影院高清无码网站| 亚洲婷婷五月天| 五月婷婷丁香| 色五月亚洲| 九月婷婷色色| 婷婷五月天色综合翘| 99热全是精品| 丁香婷婷色五月| 色99网| 婷婷五月天美女| 欧美日韩一区二区三区四区| 婷香五月| 婷婷情色激情| 狠狠综合区| 性爱先锋AV| 婷婷丁香无码专区| 日韩狠狠色| 天天综合天天玩夜夜玩天天玩夜夜玩 | 99er在线观看| 日本不卡中文字幕| 操操操B| 九九九热精品| 啪啪六月婷婷| aaaaaa片| 五月丁香六月婷婷成人| 99久久人妻精品无码二区| 97色天堂| 婷婷六月色播| 狠狠操之狠狠操| 色婷婷综合成人| 激情五月天久久| 婷婷激情综合| 99久超碰| 九九99一区| 婷婷区日本| 一本久道综合99| 婷婷情色五月| 丁香五月色| 91干| 天天色天天操天天射| www激情网| 台湾综合丁香五月蜜桃| 色域五月婷婷丁香| 丁香五月天社区婷婷| 欧洲MV日韩MV国产| 亚洲综合色婷婷| 日本三级日本三级99| 五月天婷婷综合免费| 丁香激情婷婷网| www.狠狠狠狠| 色之综合网| 怡红院 久久| 婷婷久久天堂网| 色婷婷五月综合| 婷婷五月六月激情| 亚洲激情无码久久| 超碰99久久| 91色在线 | 日韩| 超碰啪啪网| 激情五月婷婷视频| 免费无码毛片一区二区A片| 色五月丁香五月| 日本久热| 欧美综合五月丁香六月婷| www.99热| 日本色爽| 天天爽天天干| 亚洲第一综合| 天天天天天天操| www.99热这里只有精品| 色婷视频| 色婷婷五月天不卡| 精品三区影院| 婷婷五月天干干| 99热在线免费| 色色色.COM| 五月激情婷婷六月| 婷婷丁香五月亚洲| 欧美丁香婷婷五月天| 99热国产这里只有精品| 日本熟女二区| 99只有这里有精品在线视频| 日本丁香五月| 97极品在线| 97久久人人| 99精品在这里| 婷婷五月天社区| 91丨九色丨大屁股| 午夜精品人妻无码一区二区三区| 无码少妇高潮喷水A片免费| 国产成人精品123区免费视频| 久久人妻少妇嫩草AV| 激情5月婷婷| 欧美碰碰碰| 丁香久久五月婷综合| 六月色色| 婷婷五月天综合蜜桃| 五月婷婷精品无在线| 免费在线观看欧美激情xx小视频| 99热成人| 亚州色婷婷| 欧美大肥婆大肥BBBBB| 九九成人电影婷婷| 人妻五月天激情开心网| 91色综合网| 色就是色婷婷五月亚洲激情| 337p午夜影院| 99久久玖玖| 91精品无码| 99热这里只有精| 激情涩播| 激情啪啪五月| 婷婷色五月综合丁香| 日日射天天射| 五月激情站| 91碰碰碰| 久久久天堂国产精品女人| AV大片在线观看| 色综合区| 婷婷成人丁香色情基地30 | 久热免费视频| 99在线视频观看| 香蕉视频91| 激情的五月| 婷婷色五天| 五月色综合| 狠狠婷婷日韩| 大香蕉五月丁香| 日逼免费视频 | 无码yw| 狠色狠色狠狠色综合网| 丁香六月婷婷久久综合| 久久久思思热| 狠狠色噜噜狠狠| 六月婷久久| 在线视频区| 97干网站| A A色色| 激情AV在线| 久久R激情| 超碰成人电影| 色丁香婷婷| 激情第四色| 久久久久久久久久久44| 婷婷五月天xxx| 狼人婷婷综合| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 五月婷婷在线视频| 婷婷综合伊人| 五月天激日本色情在线| 丁香五月天综合| 99国产精品久久久久久久久久久| 天堂综合久| 激情五月婷婷伊人| 激情九月综合| 人人操人| 婷婷激情六月中文| 99热这里只有精品1025| 性爱激情五月| 婷婷八月激情| 狠狠色97| 婷婷激情六月中文| anquye伊人| 久久婷婷五月综合色奶水99啪| 激情五月天。| 狠狠88综合久久久久噜噜噜| 夜夜躁婷婷AV| 九九爱精品网站| 婷婷丁香五月天欧美| 99热偷拍| 成人人操| 激情五月四色| 国产精品色情AAAAA片软件| 亚洲成人免费电影| 六月撸婷婷| www.com任你艹| 精品免费99| 风流少妇A片一区二区蜜桃| 婷婷丁香色五月亚洲| 99ri国产在线| 一本色道久久88加勒比—| 综合五月天婷婷色| 五月开心播播网| 草操网| 99色| 婷婷丁香69精华| 思思re99视频在线观看| 六月婷婷啪啪| 色五月婷婷网| 免费成人中文字幕| 玖玖资源站蜜臀| 五月综合人妻| 色情久久久| 9国产在线视频| 六月丁香激情最新更新| 色婷婷av在线观看| 婷婷丁香视频在线观看免费| 99久久综合| 天天操无码| 激情综合网址| YJLZZJLZZ亚洲乱熟无码| www.久久爱.com| 99精品久久久久| 五月久久婷婷天堂视频| 人橾人| www.色婷婷.com| 激情六月丁香| 丁香六月激情综合| 久热无码| 久久五月天婷婷| 久热这里只有精品6官网亚洲| 狠狠操综合| 久久这里面只有精品视频| 五月天综合网| WWW.开心五月天.COM|