欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,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
返回資訊列表
怡红院成人AV| 我爱大香蕉| 久操干| 激情五月天之五月婷婷| 99色在线| 日本成人噜噜| 99色中文| 婷婷91视频| 五月丁婷婷| 婷婷色色网站| 色婷婷超碰| 丁香五月另类色婷婷麻豆| 91超碰人人操| 五月激情婷婷女| 人人操人人添人人摸97| 99精在线| 久播影院免费观看电视剧大全最新网| 色综合色| 开心五月深爱五月婷| 春色激情| 亚洲操b| 亚洲色婷婷色| 涩九九九九| 日逼AV影音先锋男人资源站| 日本99热| 97资源碰碰| 婷婷丁香69精华| 婷婷丁香九色| 黄网在线免费| 狠狠插狠狠插| 色综合久久中文| 激情婷婷五月天在线观看| 嫩草视频| 国产精品99久久久久久久女警| 日本在线噜噜| 只有久久精品免费| 五月天婷婷色紫薇阁| 伊人香大香蕉视频| 六月色婷婷| 久热 91| 六月婷婷狠狠色在线观看| 激情婷婷激情在线不卡| 亚洲乱码日产精品BD| 婷婷五月天综合网| 97色色色| 在线不卡视频| 亚洲成人网站在线播放| 日本美女天天日天天爽| 97超碰免费超级在线观看| 久久婷婷综合五月天| 深爱五月天 开心网| 五月丁香久久| 久久婷婷亚洲| 极品人妻VIDEOSSS人妻| 欧美在线视频免费播放| 人妻久久久久久久 | 亚洲va日| 99热爱爱干干日| 人碰91| 九九 激情 网| 天天干天天干天天干天天干天| 激情婷婷丁香五月天| 五月婷六月丁香| 内射丰满人妻| 婷婷久久草| 这里只有视频精品| 777久久精品| 人妻自慰在线| WwW天天干| Xx色综合| 视色网在线播放| 粉嫩av懂色av蜜臀av熟妇| 91大屁股精品| 高清视频一区| 激情都市五月天| 五月婷综合网| 亚洲成人AV在线观看| 99热免费精品| 9999久久久久| 99热8在线| 色综合爽| 蜜臀嫩草| 五日激情综合| 日韩久热| 亚洲区在线| .青娱乐天天操B| 亚洲啪啪精品| 另类图片激情五月天| 婷婷五月开心中文字幕在线| 天天操综合网站| 丁香五月精品| 色婷婷亚洲婷婷| 婷香五月激情视频| 99久久高清视频| 中文字幕在线不卡| 久久这里只有精品热在99| 91精品婷婷国产综合久久| 国产精品99久久久久久久女警 | 免费99色| 日日干日日s| 五月激情久久| 99亚洲视频| 五月丁香婷婷啪啪| 九洲一级A片| 天插天啪天啪天啪| 国产精品噜噜在线视频| 久热 91| 一级视频网址| 狠狠干在线视频| 色婷婷日本| 国产精品爽爽久久久久久| 婷婷五月六月| 久久丁香五月| 丁香五月婷婷乱| 丁香六月婷婷五月婷婷| 99国产97在线,| 超碰成人在线观看| 日亚二欧美| 9久久精品| 免费看欧美成人A片无码| 月色色综合婷婷网| 99久在线精品99re8热| 久久精品99久久久久久| 99久久.www| 丁香五月激情棕合| 五月天激情小说网| 日本99在线视频| 色情久久久| 超碰在线观看三级片| 综合AV在线| www,五月天激情| 99久久激情视频| 五月丁香久久婷| 亚洲日韩26uuu| 色五月播五月| 丁香五月婷婷深爱综合激情| 丁香婷婷深情五月亚洲| 五月天网址在线刘玥| 五月丁香婷婷色色| 丁香五月六月综合激情| 91蝌蚪窝视频在线| 狠狠色狠狠色综合日日91 | 激情综合网五月婷婷| 99碰网站| 9+1视频网址| 成人AV中文字幕| 26uuu亚洲欧美| 欧美韩国日本| 婷婷综合网| 综合五月天完整| 中文字幕在线免费观看视频| 秋霞午夜理论| 人人操AV| 激情婷婷丁香色情五月天| www久久99| 另类视屏| 久热免费| 五月激情综合激情五月| 婷婷五月花| 精国产品一区二区三区A片| 欧美在线看| 热99热9| 网站免费一站二站| www.夜夜夜| 99re6在线视频精品免费| 超碰免费成人| 丁香六月婷婷| 五月丁香啪啪啪免费看| 欧美综合激情| www.婷婷.com| 国产精品久久久60086| 成人做爰黄A片免费看直播室男男| 狠狠色五月激情| 国产人妻人伦精品一区二区| 色婷婷久久综合中文久久一本| 丁香五月天日韩无码| 五月丁香六月情| 色五月婷婷激情基地| 4438激情网| 超碰人人在线| 91丨九色丨大屁股| 深爱激情网综合| 夜夜久久综合网| 婷婷亚洲影院| 99久久综合精品五月天| 丁香花狠狠婷婷亚洲中文字幕| 日韩黄在免| 99热精这里只有精品| 久久婷青青草原| 精品久久99码| 激情婷婷五月天丁香| 婷婷五月天综合在线| 干一干xxxx| 激情五月天婷婷五月天| 99这里有精品免费| 丁香久月婷| 可以看的AV| 国产片色| 欧美群妇大交乱婬网| 99热这里只有精品8| 六月丁香婷婷色狠狠久久| 99色综合| 中文字幕人妻在线| 99re这里只有精品在线观看| 99视频超级精品| 色五月丁香91| 激情五月久久| 天天日天天色| 九九av| 97超美国视频在线观看| 国产 码在线成人网站| 99婷婷国产最新视频| 91碰碰碰| 色婷婷9| 五月丁香婷中文字幕 | 99热这里精| 9久久久久| 亚洲乱码日产精品BD| 就爱干 在线| 海外网站专业操老外| 成人无码精品1区2区3区免费看 | 婷婷综合久久| www久久99| 丁香五月六月婷婷殴美综合| 五月丁香六月婷婷亚洲视频| 久久机热这里只有 | 亚洲三A| 丁香啪啪| 99日韩| 五月五婷婷| 天天爱天天做天天舔| 丁香五月电影院在线观看| 丁香五月激情综合| 丁香五月天堂| 色五月天电影| 99爱这里只有精品免费视频| 热99精品视频观看| 最新热中文字幕| 狠狠色色综合| 色噜噜狠狠色综合网| 91狼友视频在线观看| 亚洲色视频| 激情五月婷| 玖玖热视频| 亚洲性爱日韩无码| 九九亚洲视频| 欧美色图天堂网色| 免看黄大片AA | 色综合色色| 91久久1118| 五月婷婷五月色| www狠狠| 色五月综合婷婷| 五月丁香狠狠爱婷婷综合| 天天综合色丁香| AV在线资源| www.91在线观看| 五月天婷综合| 日本不卡中文字幕| 玖月婷婷爱丁香| 那里有AV网址| 激情图片婷婷| 婷婷五月丁香基地| 激情综合在线观看| 亚洲激情AV| 极品人妻VIDEOSSS人妻| 91狼友视频网页更新| 色五月综合| 91精品久久久久久综合五月天| 五月婷婷啪啪网| 午夜成人天堂久久无码日韩久久| 狠色狠色综合久久| 日日干天天爽| 在线播放成人网站| 无码激情AAAAA片-区区| 久久丁香网| 激情五月天色色色| 色约约视频一区二区三区四区五区 | 五月天成人综合| 五月丁香啪啪啪啪| 最新精品视频99| 人人干Av| 国产欧美第五十五页| 色人久久| 懂色av粉嫩av蜜臀av| 在线超碰免费| www.色综合| 色婷婷丁香五月丁香| 六月色丁香中文字幕| 丁香五月综合在线视频| 婷婷导航| 色护士综合| 综合福利网| 第四色五月婷婷| 五月天久久久| 97色色色色色| 天天干天天爽| 五月天激情四射网站| 婷婷九九视频| 欧美韩日AAA网站| 五月天激情AV| 国产69久久久欧美黑人A片| 九九激情网| 婷婷黄色网| 亚洲视频五区| 五月丁香六月婷婷视频| 久久激情网| 五月天婷婷激情网| 天天摸.天天mo| 激情五月婷婷色播网| 婷婷五月天奸女| 人妻丰满精品一区二区A片| 91高潮喷水久久久久久久久 | 婷婷五月天丁香久久| Av大香蕉| 丁香五月天成人网站| 夜夜谢天天干| 久久婷婷91| 五月丁香久久激情网| 热五月婷婷| 色狠狠色综合久久久绯色aⅴ影视| 亚洲视频国产一区| 欧美色爱五月天| 天天精品视频免费观看| 日本3级片一区2区| 五月婷激情| 免费看欧美成人A片无码| 久碰综合| 开心网五月色婷婷| 国产综合A片| 天堂婷婷五月色| 婷婷五月电影院| 国洲夜色亚热在线久久| 久久人妻视步| 狼人伊人天堂| 少妇人妻凹凸视频| 丁香五月婷中字在线| 热99国产精品| 桃色激情网| 色色色色欧美| 青青草六月丁香| 色五月激情网| 嫩草AV久久伊人妇女超级A| 狠狠狠狠狠狠| 色播激情| 色播播婷婷| 久久久久久9热不雅视频| 五月激情网五月综合网| 丰满少妇猛烈A片免费看观看| 五月丁香人妻| 色噜噜五月天| 婷婷午夜丁香| 亚洲精品激情| 九九色院| www.超碰在线| 久久九九免费大视频| 超碰久热| 玖玖伦理电影| 欧美五月停| 天天射影视综合网| 天天操精品| 色色色色热| 久久区区一二三av| 日本婷婷在线| 色婷婷狠狠| 青青草成人网| 欧美婷| 香蕉久久国产AV一区二区| 婷婷激情五月吧| 成人午夜无码视频| 狠狠草综合网| 青青日韩| 五月激情婷婷丁香| 婷婷丁香水多多视频| 久久国产一区二区三区| 天天摸色吧天天摸色吧| 91成人电影| 欧美97色| 激情图片婷婷| 狠狠久久婷婷| 婷婷综合五月| 天天做天天爱天天做| 99日视频在线| 涩五月婷婷| 激情五月综合色婷婷| 综合福利网| 99网99热| 久久精品国产色| 操碰色一区就去操| 九热视频在线精品15| 色色操| 亚洲亚洲人成综合网络| 婷婷五月天无码| 欧洲不卡视频| www,99视频| 丁香五月激情网| 91色久| 日韩黄色中文字幕| 婷婷丁香九月| 天天色域综合网| 国内一级精品| 亚洲五月六月婷婷| 五月天精品视频| 婷婷5月天av| 亚洲国产另类av| 大香蕉综合在线| 伊人久久大香蕉网| 久久精品4| 91chinese在线| 天天色,天天日,天天做| 九九热视频精品2| 久爱综合| 久久这里有精品| 婷婷五月天电影在线| www.五月天婷婷| 欧美成人AAA片一区国产精品| www.五月瑟| 狠狠干狠狠色| 大香蕉欧美在线| 中国丰满熟女A片免费观| 欧美色性色好| 激情六月一二| 69五月天视频| 看黄的网站18禁| 婷婷婷五月香蕉| 狠狠操天天干| 五月婷婷色五月| 五月婷婷香| 婷婷黄色五月天在线视频| 久草丁香婷婷五月天婷| 99热午夜精品| 成人无码精品1区2区3区免费看| 成人电影在线免费试看| 思思热精品在线| 日日夜夜青青草| 五月婷婷激情| 九九热在线视频观看免费10| 五月婷婷综合成人| 1024操逼| 免看黄大片AA | 日本久久精品| www久久久| 久99在线视频| 97人人搞| 色婷婷综合亚洲| 99精品福利视频| 狠狠干在线视频| 18av天堂| 色婷婷五月六月丁香综合视频| 九热精品| 亚洲成人av在线| 久久丁香婷婷五月| 在线成人视频免费| 黄色片精品| 欧美色图天堂网色| 色噜噜狠狠色综合网| 久久99三级在线视频| 亚洲视频另类| 91se在线观看| 色婷婷五月在线| 婷婷五月色惰| 色婷婷综合久久久久| 欧美操逼天堂| 六月99天天婷婷激情综合| 免费播放片大片| 国产.亚洲.欧洲视频在线| 五月丁香人妻| AV操逼网| 99热香港| 激情九九综合网| 婷婷深爱五月丁香网| 五月永久激情| 五月开心深深爱激情综合| 五月天婷婷视频30| 激情综合网色播五月| 超碰在线超碰| 五月丁香在线| 国产操B| 九九色插| 亚洲AV网站在线观看| 久久婷婷五月天蜜桃| 色狠狠色综合久久久绯色AⅤ影视| 狠狠五月激情丁香六月| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 色99网站| 色狠狠婷婷| 久9久视频精品| 超碰色人妾| 亚洲婷婷激情综合激情999精品| 九九re精品视频在线观看| 亚洲AV中文在线| 日本女天天爽| AV五月婷婷露脸| 91日日日| 久久人妻熟女一区二区| 婷婷激情综合色五月久久图片| 精品成人在线观看| 欧美毛片www| 久热视频这里只有精品| 日本一级黄色电影| 五月婷婷啪啪啪啪| 啪啪激情综合| 婷婷无码视频| 这里只有精品视频99| 婷婷六月天| 丁香五夜激情四射夜夜夜| 色v综合网| 婷婷六月网| 日本欧美成人片AAAA| 五月天综合网| 久久婷综合网| 婷婷五月天论坛| 五月丁香久久| 人人操人人妻| 影音先锋色色色资源色资源色| 五月开心啪啪| 97久久久| 色丁香五月天| 亚洲色情网站| 国产美女无遮挡裸体毛片A片 | 国产成人在线精品| 日日夜夜狠狠操| 日本欧美成人片AAAA| 日韩AV免费| 婷婷五月丁香六月伊人网| 婷婷六月综合激情| 610018岁成人视频| 丁香五月婷婷六月婷婷| 女人被男人吃奶到高潮| 久久人人添人人爽添人人片αV| 欧美在线干| www,99热| H亚洲| 精品一二三区视频立| 可以免费观看的av| 大香蕉婷婷婷| 综合在线丁香五月| 婷婷激情五月| 婷婷在线精品| 国产avapp 网| 久久加勒比| 人人人操97| 久/久精品99看9| 天天色天天射天天日| WWW.婷婷| 偷偷操九九| 五月丁香六月停停| 一本色综合色| 天插天啪天啪天啪| 97一区二区| 亚洲婷婷月丁香五月| 99在线观看| 成人av免费观看| www.com在线操视频免费观看| sewuyue第四色| 亚洲精品99| 五月天婷婷xxx| 丁香五月性| 丁香婷婷五月综合影院| 国产.亚洲.欧洲视频在线| 2021日韩无码| 日本高清综合网五月丁香| 婷婷伊人欧美| 激情综合色婷婷六月天| 欧美精品久| 天天久| 九九视频在线观看视频在线播放69| 亚洲色色色色| 欧美日韩国产成人在线| 狠狠色噜噜狠狠狠狠综合| 99热黄| 99免费| 五月丁香婷婷综合视频| 色综合久久天天综合网| www.99热| 疯狂做受XXXX高潮A片动画| 26UUU成人网| 国产精品大香蕉| 亚洲精99| 伊人香大香蕉视频| 五月天色五月| 丁香五月婷婷狠狠色| 色色五月婷| 五月伊人综合| 一区二区三区四日本| 人妻精品久久久久久| 任你操精品免费| 99啪| 国自产拍偷拍精品啪啪一区二区| 99综合免费视频| Www.狠狠| 五月丁香在线| 天天视频亚洲| 99热免费精品| 激情五月婷婷| 五月性色| 九月丁香婷婷综合激情| 1024AV视频| 五月丁香色婷婷久久| 丁香五月婷婷狠狠色| 青青草免费公开视频| 色婷婷五月天天天干天天操天天爽| WWW色色色COM| 色墦五月丁香| 亚洲噜色| 五月婷婷啪啪网| 香蕉久久国产AV一区二区| 婷婷丁香五月综合网上| 五月天婷婷色色| AA片在线观看视频在线播放| 色色色com| 激情五月天在线观看婷婷| 亚洲第一成人无码A片| 思思热这里只有精品| 久久婷婷影院| 免费观看高清无码| 婷婷伊人| 激情久久久久久| 99在线精品免费视频| 天天天干夜夜夜操| 婷婷色播综合五月| 久婷婷| 激情5月婷婷| 婷婷四色五月| 狠狠狠狠狠狠狠狠| 热热久久久久久久久| 亚洲综合另类| 五月天婷婷偷拍| 91久久婷婷| 日日噜狠狠色| 婷婷六月插屄激情| 婷婷色激情网| 色色色婷婷| 天天狠狠综合精区| 99综合视频一体| 色婷婷超碰| 99综合激情久久精品久久| 无码四色色色| 91尤物九色在线| 五月刺激丁香月综合| 亚洲丁香花色| 天天干 夜夜爽| 99无码视频| 婷婷五月骚厕所| 久鲁鲁色网 | 日本久久精品| 五月婷婷深深爱| 丁香五月桃花在线激情综合| 亚洲蜜桃精久久久久久久久久久久| 色播婷婷五月天| 九九色综合九九色| 色综合日日| 国产综合激情五月久久| 电影蜘蛛女| 五月婷婷丁香| 91碰| WWW.99热| 99热精品观看| 五月丁香六月激情在线| 婷婷五月丁香啪啪| www.久久爱.com| 色综合久久88色综合天天99| 欧美美美女性色视频| 操啊操av| 丁香五月五月婷婷五月天激情四射| 激情合网婷婷| 婷婷五月久久| 婷婷瑟瑟五月天| 欧美色色色色色色色| 色婷五月| WWW,婷婷,COM| 五月天亭亭俺也| 亚洲成人五月| 991国产精选视频在线播放下载| 天天色天天日天天舔| 五月亭亭狠狠| 亚洲成人高清在线| 97人妻碰碰中文无码久热丝袜| 国产精品日日躁夜夜躁| 激情五月婷婷| 久久婷婷五月天| 国产精产国品一二三在观看| 香蕉久久av一区二区三区| 亚洲三A| 精品国婬伦V无码久久久| 丁香婷婷激情四射五月| 色www.con| 欧美精品啪啪| 99热99日…..| 五月婷婷激情综合视频| 亚洲成人av在线播放| 亭亭丁香久久五月| 99在线视频在线观看| 久热网在线视频| 另类图片五月天| 五月天激情小说| 欧美大肥婆大肥BBBBB| 欧美日韩成卜| 久久九精品| 99久久99九九99九九九| 春色激情第四色| 丁香六月激情毛片| 欧洲亚洲免费视频9| 人人操Av| 日韩爱操视频| 五月天激情电影| 亚洲无AV在线中文字幕| 新激情综合| 婷婷激情伍月网| 第四色26uuu| 97久久精品| 中文字幕丰满孑伦无码专区| 婷婷性爱视频在线| Av狠狠色丁香婷| 亚洲成人在线五月天| 操一区| chaopengdaxiangjiao| 欧美色97| 森林影视大全,最好看的2019年视频 | 高清激情av在线观看| 丁香六月在线| 777精品久无码人妻蜜桃| 超碰99成人在线| 中文资源在线a | 成人免费高清在线播放| 国产人妻人伦精品一区二区| www91精品| 婷婷亚洲丁香五月| 碰超99| 五月婷视频| 六月99天天婷婷激情综合| av性爱网站| 成人做爰A片免费看视频| 超碰人人99| 99热这里只有精品23| 在线中文字幕视频| 9999热精品| 凹凸7777操操操| 天堂中文国产| 丁香婷婷综合喷| www.婷婷五月天啪啪| 久久久ww| 欧美色色色色色色色色| 79色色免费| 九九黄色网| 91无码视频| 亚洲综合99| 综合色图婷婷| 天天在线久久综合| 色噜噜狠狠色综无码久久合欧美| 91成人看片| 色亭亭五月天丁香综合AV - 百度 - 百度| 碰97 久| 婷婷激情丁香五月婷婷激情丁香五月婷婷| 婷婷五月色情| 色99无码| 九九热10| 天天干天天日天天操| 日韩欧美老妇性视频91久久久| 婷婷五月天天aV| 欧美精品中文字幕亚洲专区| 深爱五月激情综合| 久久色情| 丁香六月婷婷综情欧美| 色五月综合激情| 99久操| 丁香五月av| 东京热人妻一区二区三区在线| 深爱激情五月天婷婷网| 97超碰免费超级在线观看| 色噜噜,噜噜色| 中文字幕日产A片在线看| 日韩三级片一区二区| 99热这里只有精品9| 婷婷97| 亚洲色五月| 99热这里只有精品21| 丁香五月在线观看| 综合激情五月丁香9999久久精| 热九九精品| 色婷婷在线视频久| 97夫妻超碰| 丁香婷婷六月在线资源观看| 成人五月天。COM| 五月婷av| h亚洲| 九九aV| 婷婷五月色花丁香社区| 黄桃AV无码免费一区二区三区| 99热20| 亚洲欧洲中文日韩久久AV乱码| 这里只有精品在线播放| 色五月色开心开心五月| 99九九视频| 97人妻碰碰碰久久香蕉| 五月婷婷激情综合网| 丁香婷婷综合五月天| 国产真实乱对白精彩| 99爱在线视频观看| 另类激情码| 热99在线| 大伊久久| 大香蕉久久婷婷| 五月婷婷婷婷| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 五月婷婷天| 国产26uuu视频| 五月丁香 狠狠爱| 色色热| 热九九在线| 一级黄在线| 天天日夜夜| 九九热亚洲中文在线观看免费| 亚洲偷| 午夜成人综合| 激情五月丁香综合蜜桃| 国产性爱大片久久| 亚洲AV网站| 婷婷五月天激情小说网站| 久久人操-久草婷婷-成人AV| 97在线精品| 五月丁香婷婷婷婷综合网| 九九九九中文字幕| 思思久久99| 婷婷五月情天| 華人性愛AV在線| 一区=区操屄高清大全av| 五月丁香六月婷综合成人综合| 人人人人人人人人人草| 日韩大片艹艹| 日韩成人精品中文字幕| 色婷婷久久| 草美女在线观看视频在线播放| 97在线视频 欧美| 综合五月天| 天天操天天操天天操天天操天天操| 欧美激情综合| 婷婷亚洲久久| 99精品偷自拍| 大香蕉久艹| 看久久性爱视频| 色婷婷丁香网| 久久久久久久久久久44| 亚洲亚洲人成综合网络| 精品人人操| 丁香六月婷婷综合啪啪| xx色综合| 66精品国产成人| 青青操丝袜美腿| 婷婷色情 | 久热只有精品| 99riAV国产精品视频| 国产精品激情五月天色婷婷| 五月丁香成人网| 97干在线观看| 五月天堂六月丁香亚州中文字幕久久| 乱岳熟女50岁| 99精品亚洲| 激情六月婷婷| 激情网婷婷婷| 啪啪啪啪五月天| 91欧美| 久久婷婷人人| www色综合亚洲92| 九九九激情综合| 久久亚洲婷婷| 色婷婷视频| 91色色色18| 国产精品色色| 久久久噜噜噜久久人妻| 婷婷五月天激情网站| 这里只有国产精品在线| 亚洲色情免费网| 67194国产| 日本久久天堂| 丁香五月婷婷啪啪啪| 任你擦免费视频| 六月婷色| 婷婷丁香成人五月天| 手机在线视频观看9| 影音先锋秋秋五月婷婷| 99婷婷狠狠成为人免费视频| 久久精品一区二区三区四区| A久久| 91碰碰| 狠狠色丁香| www.zbzhongsen.com| 一本色道久久综合狠狠躁小说| 国产激情久久久| 久久97| 丁香五月欧美| 亚洲免费看片| 亚洲无AV在线中文字幕| AV成人在线网站| 岛国AAAV| 97久久超级| 久久综合五月| 久婷久婷| 色九九综合| 久久五月婷婷电影| 欧美99热| 五月天婷婷五月| 五月丁香操亭亭网| 久久免费精彩视频| 91欧美日韩综合| 丁香婷婷影院| 国产3p露脸普通话对白| 99re资源在线视频导航| 五月天激情图片网| 丁香六月激情| 久久久久久久久久久久久久人妻视频| 热热久久精品视频| 99er视频在线| 天天澡天天狠天天天做| 色婷婷在线播放| 色色色综合| 牛牛澡牛牛爽| 中文AV在线观看| 丁香五月成人| 丁香五月婷婷激情123| 99这里只有精彩视频| 26uuu精品一区二区| 久久女人天堂| 婷婷五月在线视频| 婷婷五月天性爱视频| 久久香蕉福利| 日本乱子人伦在线视频| 99热很操老逼| 人人爱操| 日韩人妻操逼视频| 91丨九色丨丰满人妖| 五月丁香在线| 丁香婷婷五月人体| 欧美激情丁香五月| 久久这里只有国产视频| 久热黄色| 久久婷婷青青草| 色天堂在线| 五月综合激情图片| 婷婷五月丁香手机在线视频| 大香网伊人久久综合| 高潮毛片又色又爽免费| 98永久精品| 免费色色色| 五月欧美丁香在线观看| 天天干天天拍| 婷婷性爱视频在线| 五月丁香六月婷婷中合网| 婷婷深爱五月天| 超碰国产在线| wWW九九在线播放| 婷婷玉月丁香五月在线视频| 大香蕉丁香五月| 天天色综合综合| 久久婷婷网| 超碰一区二区| 伊人丁香六月婷婷| 九九视屏| www.婷婷com| 久久这里只有国产| 另类小说色婷婷| 日韩人妻AV在线| 九九国产视频| 免费精品99| 激情小说色五月| 婷婷中文字幕| 九九视屏| 色噜婷婷| 亚洲第精品| 婷婷伊人五月天| 日韩国产在线免费观看| 色婷婷五月亚洲| 色色色综合网| 99在线精品视频| 99热网站| 九色在线五月婷婷网址| 婷婷五月天视| 另类视频一区| 97九色视频| 婷婷五点亚洲| 丁香婷婷激情网站| 婷婷五月天六月综合| 五月天婷婷色综合| 99九九玖玖| 天天爱天天做天天操| 国产AV影片| 婷婷五六日| 亚洲免费看片| 色天天综合天天综合频道。| 玖玖爱综合网| 啪色综合| 噜噜噜久久| 久久国产AV| 久久色五月天激情小说| 96丁香婷婷九月蜜桃综合久久| 色婷婷视频| 丁香五月天啪啪| 色狠狠五月天| 99无码黄色视频| 97在线精品| 婷婷六月久久综合导航| 91人人网| 色99在线视频| 免费亚洲婷婷中文字幕| 久99久视频| 丁香五月性| 色九月婷婷| 99色婷婷| 亚洲va综合va国产va中文| 五月丁香六月激情综合网 | 婷婷狠狠狠爱| 特级西西4444www无码| 国产综合丁香五月天| 人人摸人人搞| 五月丁香久久色| 久草狼人| 亚洲综合99| 欧美激情综合色综合啪啪五月| 五月丁香美女| 亚洲精品一区无码A片| ss99热| 99热九九九九| 色五月丁香婷婷久草| 久久九九国产| 五月丁香六月激情欧美综合| 丁香无月在线观看| 超碰v| 久久久久久综合五月婷婷| 7777久久亚洲中文字幕| 色偷偷综合| 色综合激情| 激情五月天婷婷| 色婷五月| www.九月婷婷丁香.com| 精品网站:999WWW| 91chinese在线| 八戒青柠影视剧在线观看| 五月丁香六月情婷婷久久| 婷婷色色宗合网| 久久六月天| 五月天婷婷在线啪啪视频| www.丁香黄色五月天人与| 婷婷五月激情小说| 色色色999| 日本精品人妻无码77777| 丁香婷婷视频一区二区| 天堂综合久久| 99日韩| 九九视频这里只有精彩| 欧美视频五区| 欧美三级巜人妻互换| 思思热视频| 婷婷,五月天,丁香,第一| 久久久久久久久久久久久9| 天天做天天爱天天爽综合网| 97人人射| 99婷五月| 久操大香蕉| 日韩久久这里只有精品| 超碰色女| 强壮公让我夜夜高潮A片视频| 亚洲视频伍月婷婷| 欧美黑人大吊| 丁J香六月首页| 亚洲六月婷婷| 五月婷婷69| 99成人网站| 草草影院爱爱| 国产真实乱了老女人视频 | 久久天堂色| 五月天色色色| 婷婷五月花| 欧美噜一噜| 久久伊人婷婷| 婷婷激情六月中文| 色日本五月天| 日婷婷| 五月花婷婷最新| 久草 天堂| 无码人妻一区二区一牛影视| 婷婷在线播放| 丁香五月六月婷婷综合| 五月丁香婷婷激情久久| 99re视频在线播放| 另类国产欧美视频| 粉嫩AV久久一区二区三区 | 五月婷婷日本| 狠狠爱成人综合网| 激情丁香五月| 淫视馆AV在线| 这里只有精品网站| 66久久视频在线| 日良久久| 久久大香免费| 羞羞嫩草视频| 成人做爰A片免费看视频| 久九色| 天天色天天| 午夜婷婷五月天在线| 九九国产精视频| 97色色婷婷五月天| 丁香五月很很肏| 九色99视频| 欧美叉叉叉BBB网站| 色五月在线观看| 香焦网五月天| 欧美丁香婷婷五月| 婷婷五月丁香久久| 亚洲第精品| 五月丁香六月婷婷综合免| 丁香五月久久| 精品成人在线观看| 97碰碰在线观看视频| 99re视频在线精品| 综合色七七| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 久久久久婷婷| 熟女激情网| 九九青草热| 综合亚洲AV| 丁香六月欧美| 精品国产a| 久久33视频| 婷婷丁香久久网| 天堂久久久久天堂网| 1024操逼| www.ywav| 大香蕉丁香婷婷| 亚洲正能量欧美| 91人人看| 99热69| 五月婷六月| 99ri久久| 色欲天天综合网| 五月色在线| 亚洲 日韩色色| 五月婷婷六月激情在线| 婷婷六月丁香激情综合| 五月婷婷在线网站| 亚洲激情五月丁香久久久久| 蜜臀嫩草| 99热这里只有精品4| 五夜丁香| 激情性爱五月天| 色婷婷视频在线| 加勒比色色| 夜夜夜夜做天天天做无码视频| 思思热性操| 丁香五月中文字幕久色| 五月天婷婷在线AN| 激情五月综合亚洲另类| 久久 婷婷 五月天| 亚洲激情网| 极品少妇XXXX精品少妇偷拍| 色五月婷婷7777| 综合激情sV| 99人人干| 97干婷婷五月天| 日屌日日操日日色| 欧美日韩成人在线观看| 99色视频在线| 曰韩少妇内射免费播放| 天堂久久久久天堂网| Caop在线| 久久丁香婷婷五月天| 日本九九热| 九九在线精品| 色婷婷小说网| 色色色香蕉五月婷| 婷婷五月中文字幕| 欧美激情五月综合| 五月成人网天天| 激情五月综合亚洲另类| 欧美精品999| 九色亚洲| 91色色色18| 99精彩视频在线观看| 丁婷婷五月天在线播放| 激情五月婷婷综合| 日本人人超碰| 欧美天堂久久| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 天天草天天摸| 亚洲激情五月天| 五月天婷婷青青草| 中文字幕综合网| 天天干天天干天天干天天干天天| 97色色色| 免费无码毛片一区二区A片| 丁香色五月AV在线| 开心深爱五月天| 天天弄天天操| 国产精品第一国产精品| 96精品久久久久久久久| 思思色综合网站| 亚洲操逼网| 91n啪啪| 激情宗合哪里能看| 性爱视频99| 国产精品99久久久久久久女警| 啪啪色区| 亚洲九九在线| 亚洲综合激情五月久久| 色99无码| 99秘 在线| 丁香五月天色婷婷| 亚洲另类AV| 五月欧美色色五月| 九九热只有精品| 色综合香蕉| 99er6热在线观看精品6| 五月天婷婷久久| 啪啪黄页网| 亚洲色 视频| 九九热免费视频| 丁香九月婷| 丁香五月婷婷五月天| 五月停视频天堂| 色综合爱综合| 国产激情久久久| 91久久久久久久久久| 这里只精品热在线18| 亚洲无AV在线中文字幕| 97在线视频观看| 综合久久高清| 激情AV中文| 婷婷五月天亚洲丁香| 国产精品a无线| 日本女va| 婷婷五月天丁香花| 91超级碰在线视频| 五月丁香激情综合网| 91人人看| 色99欧洲色19| 玖玖色综合色| 丁香五月婷婷激情123| 国产亚洲精品久久久久久牛牛| www.激情五月天。com| 色婷婷久久久| 久草性爱| 香蕉视频91| 超级碰碰碰97免费| 天天做天天爽| 综合精品99| 五月天激情婷婷久久| 久久五月热| 天天操天天草天天草天天| 久久99最新地址| 大伊久久| 久久九九99视频| 天天射夜夜骑| 99热xx| 五月丁香基地| 久久婷婷一级片| 开心五月综合| 97碰 在线视频观看| 色婷婷综合网站| 九色激情| 26uuu精品国产| 色99视| 9l视频自拍9l视频自拍九色学生| 日本3级片一区2区| 99免费热视频在线| 色五月综合网| 婷婷激情综合| 五月婷婷丁香伦理网|