色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

STM32WB5x BLE OTA卡死原因分析與分層超時(shí)復(fù)位策略

STM32WB5x BLE OTA卡死原因分析與分層超時(shí)復(fù)位策略 前幾天又遇到一次典型的STM32WB5x BLE OTA卡死問題手機(jī)端顯示固件包傳輸?shù)揭话脒M(jìn)度條不再前進(jìn)設(shè)備側(cè)此時(shí)本來應(yīng)該在收包、寫Flash但就是沒有任何回包。等了幾分鐘手機(jī)端BLE連接超時(shí)斷開之后不管怎么掃描都找不到設(shè)備廣播。重新上電也一樣——好像固件升級(jí)把整臺(tái)設(shè)備送進(jìn)了某個(gè)“黑洞”狀態(tài)。這個(gè)問題的標(biāo)題很直接STM32WB5x BLE OTA gets stuck mid-update with no way to reconnect — is a firmware-side timeout/reset the right approach? 我先說結(jié)論不能用一套簡(jiǎn)單的 timeout reset 邏輯去掃尾但也不能完全不處理。關(guān)鍵是要找到卡在哪個(gè)階段、誰在卡、以及復(fù)位后從哪里啟動(dòng)。這篇文章就圍繞這個(gè)思路把 STM32WB5x 上 BLE OTA 卡死的原因、排查手段、分層超時(shí)設(shè)計(jì)和可落地的復(fù)位策略完整拆開聊。1. 卡死現(xiàn)場(chǎng)從“傳輸中”到“徹底失聯(lián)”的三種表現(xiàn)1.1 下載階段卡住數(shù)據(jù)傳著傳著就沒有ACK了第一種卡死最容易被誤判為“藍(lán)牙斷連”?,F(xiàn)象是手機(jī)APP通過 BLE 自定義服務(wù)向設(shè)備持續(xù)發(fā)送固件分片前面幾十個(gè)包都正常設(shè)備也回了 Write Response 或 Notify ACK在某個(gè)分片之后設(shè)備突然不回任何 Confirm 了。手機(jī)端要么等本次 GATT 寫操作超時(shí)要么等到 BLE 連接事件丟失最終報(bào)錯(cuò)斷開。這種卡在下載階段的問題根源幾乎都不在協(xié)議棧而在 M4 應(yīng)用核。STM32WB5x 的雙核架構(gòu)里M0 核負(fù)責(zé) BLE 協(xié)議棧M4 核負(fù)責(zé)用戶的業(yè)務(wù)代碼。GATT 寫請(qǐng)求來了M0 會(huì)把數(shù)據(jù)通過 IPCC 放進(jìn)共享內(nèi)存然后通知 M4 去取。M4 收到數(shù)據(jù)后要做的是把分片寫入目標(biāo) Flash。如果這段 Flash 寫入邏輯寫得很“霸道”——比如在擦寫整個(gè)扇區(qū)時(shí)長時(shí)間關(guān)中斷或者HAL_FLASH_Program一次寫入后再做 CRC 校驗(yàn)?zāi)敲?M4 處理完這個(gè)分片的時(shí)間可能超過 BLE 的連接間隔M0 側(cè)的 ACK 隊(duì)列就會(huì)越積越多。積壓到一定程度M0 的接收緩沖區(qū)滿協(xié)議棧開始丟棄新的 GATT 寫請(qǐng)求。手機(jī)端發(fā)出去的包沒人應(yīng)答連接事件也會(huì)因?yàn)闆]有及時(shí)交換空包而觸發(fā)鏈路監(jiān)督超時(shí)。此時(shí)設(shè)備并沒有死只是 M4 忙到忘記喂 BLE 協(xié)議??雌饋砭拖癖豢ㄋ懒?。1.2 安裝階段卡住FUS 一張接管設(shè)備直接消失第二種卡死比下載階段更迷惑人。所有固件分片都傳完了校驗(yàn)也通過了然后 APP 端發(fā)送“開始安裝”的命令設(shè)備收到命令后可能回了一幀 ACK然后連接斷開。此后無論怎么掃描設(shè)備再也不會(huì)廣播。重新上電也一樣設(shè)備仿佛人間蒸發(fā)。如果你用 ST-Link 接上芯片很可能會(huì)發(fā)現(xiàn) M4 還在跑但 M0 停在某個(gè) FUS 服務(wù)里——這時(shí)設(shè)備并不是“壞了”而是進(jìn)入了無線棧固件升級(jí)Wireless Stack Update的安裝流程。STM32WB5x 的 FUSFirmware Upgrade Service運(yùn)行在 M0 核上負(fù)責(zé)安全安裝無線棧固件、管理密鑰等。當(dāng) FUS 開始安裝或者擦寫無線棧區(qū)域時(shí)BLE 協(xié)議棧必然停止運(yùn)行所有無線活動(dòng)都會(huì)終止。這個(gè)階段本來就不應(yīng)該期望還能搜索到設(shè)備。問題在于FUS 安裝完成后可能需要幾秒到幾十秒一旦安裝失敗或 FUS 卡在某個(gè)內(nèi)部狀態(tài)設(shè)備就永遠(yuǎn)停留在“沒有無線??膳堋钡木置孀匀灰膊粫?huì)有廣播。1.3 復(fù)位后卡住看起來是醒了其實(shí)在裸奔第三種情況出現(xiàn)在“timeout/reset 已經(jīng)寫進(jìn)固件”的設(shè)備上。工程師發(fā)現(xiàn) OTA 卡住后在 M4 側(cè)加了一個(gè)看門狗或者收到“開始安裝”后倒計(jì)時(shí) 10 秒強(qiáng)制NVIC_SystemReset()。結(jié)果是設(shè)備確實(shí)能重啟但重啟后既不廣播、也不進(jìn)入正常應(yīng)用調(diào)試器連上去發(fā)現(xiàn)程序跑飛或死在 HardFault。這通常是復(fù)位后的啟動(dòng)入口出了問題。OTA 過程如果已經(jīng)把新的應(yīng)用固件寫入了當(dāng)前運(yùn)行分區(qū)但復(fù)位后 bootloader 沒有做“鏡像有效性檢查”直接跳轉(zhuǎn)到一個(gè)寫了一半或者 CRC 校驗(yàn)失敗的鏡像CPU 就會(huì)取指失敗卡在啟動(dòng)階段。還有更隱蔽的一種OTA 期間使用獨(dú)立看門狗 IWDG但喂狗邏輯放在主循環(huán)里。當(dāng) M4 阻塞等待 FUS 回復(fù)時(shí)主循環(huán)停擺IWDG 超時(shí)復(fù)位。運(yùn)氣好時(shí)復(fù)位后舊應(yīng)用還在但升級(jí)標(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é)議棧對(duì)外呈現(xiàn)為“無線核”。兩個(gè)核通過 IPCC 硬件單元和共享內(nèi)存通信。M4 不需要知道 BLE 連接的底層細(xì)節(jié)它只負(fù)責(zé)從共享內(nèi)存里取數(shù)據(jù)和發(fā)送命令。FUS 是 M0 上的一套系統(tǒng)服務(wù)類似一個(gè)運(yùn)行在無線核上的 mini bootloader。M4 可以通過 IPCC 向 FUS 發(fā)送命令比如查詢版本、安裝無線棧、刪除無線棧、管理安全密鑰等。FUS 有自己的安全狀態(tài)和錯(cuò)誤碼。當(dāng)執(zhí)行覆蓋無線棧區(qū)域的寫操作時(shí)FUS 會(huì)暫停當(dāng)前無線棧運(yùn)行因此 BLE 連接一定會(huì)斷。很多第一次做 STM32WB OTA 的人會(huì)以為“BLE OTA”就是把數(shù)據(jù)寫到 Flash 然后跳轉(zhuǎn)但實(shí)際上要區(qū)分升級(jí)對(duì)象升級(jí)用戶應(yīng)用固件數(shù)據(jù)寫入應(yīng)用分區(qū)通常與 FUS 無關(guān)。升級(jí)無線棧固件必須通過 FUS 或類似機(jī)制不僅要寫 M0 的代碼區(qū)域還要更新藍(lán)牙棧版本和配置。同時(shí)升級(jí)兩者先升級(jí)用戶應(yīng)用再升級(jí)無線?;蚍催^來中間需要明確的狀態(tài)管理。如果沒有做這個(gè)區(qū)分就會(huì)在應(yīng)用 OTA 過程中試圖調(diào)用 FUS或者在無線棧 OTA 過程中關(guān)閉了 FUS導(dǎo)致整個(gè)狀態(tài)機(jī)錯(cuò)亂。2.2 應(yīng)用固件OTA和無線棧OTA是兩條完全不同的路應(yīng)用固件 OTA 通常走雙 Bank 方案當(dāng)前從 Bank1 啟動(dòng)新固件寫入 Bank2寫完后置位切換標(biāo)志復(fù)位后 bootloader 檢查標(biāo)志并嘗試從 Bank2 啟動(dòng)如果 Bank2 無效則自動(dòng)回退 Bank1。這種方式的好處是即使新固件寫壞了Bootloader 還能救回來前提是 Bank1 的舊固件仍然可用。無線棧 OTA 就復(fù)雜一點(diǎn)。無線棧代碼和 FUS 安全性綁定不能由 M4 直接寫入只能讓 FUS 去處理。M4 要做的是把無線棧固件包傳給 FUS再由 FUS 完成校驗(yàn)、擦寫、安裝。這個(gè)過程中 M4 與 FUS 通過 IPCC 異步交互不能一邊等 FUS 一邊又把 BLE 協(xié)議棧殺掉。從調(diào)試角度看應(yīng)用 OTA 卡住大多能在 M4 用戶代碼里找到原因無線棧 OTA 卡住則要優(yōu)先查 FUS 返回的錯(cuò)誤碼和 M0 狀態(tài)。兩者排查手段完全不同所以“一堆 timeout 邏輯走天下”在雙核 OTA 里根本行不通。2.3 “無法重連”的深層原因往往不在BLE超參數(shù)而在于狀態(tài)機(jī)遇到設(shè)備不能重新連接時(shí)很多人的第一反應(yīng)是調(diào) BLE 廣播參數(shù)縮短廣播間隔、打開可發(fā)現(xiàn)模式、延長連接超時(shí)。這些參數(shù)調(diào)整可能有效但治標(biāo)不治本。真正的深層原因往往是沒有把 OTA 狀態(tài)持久化。比如OTA 下載了一半設(shè)備復(fù)位舊應(yīng)用還在但 SFlash 里某個(gè)“升級(jí)進(jìn)行中”的標(biāo)志位被誤寫成了“升級(jí)完成”。新固件寫入 Bank2 后由于復(fù)位發(fā)生在標(biāo)志位寫入之后、CRC 校驗(yàn)完成之前Bootloader 檢查標(biāo)志時(shí)認(rèn)為可以切換結(jié)果跳到損壞的 Bank2。FUS 安裝無線棧時(shí)M4 因?yàn)槌瑫r(shí)執(zhí)行了復(fù)位復(fù)位后 FUS 尚未完成安裝M0 沒有任何可運(yùn)行的無線棧設(shè)備自然無法廣播。這些問題不是靠“多等幾秒”或“多復(fù)位幾次”能解決的。你得有一個(gè)“升級(jí)狀態(tài)機(jī) 啟動(dòng)驗(yàn)證 回退路徑”讓設(shè)備無論什么時(shí)候掉電都能從持久化狀態(tài)里判斷該繼續(xù)升級(jí)、該回退舊版本、還是進(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è)備是否“活”著以及是哪個(gè)核在跑。如果連接失敗優(yōu)先檢查目標(biāo)板電源以及在 CubeProgrammer 連接設(shè)置里選擇正確的接口模式和復(fù)位模式。有時(shí)設(shè)備運(yùn)行在不正常狀態(tài)需要把 BOOT0 拉高進(jìn)入系統(tǒng) Bootloader 再連接。不過 STM32WB5x 的內(nèi)部 Bootloader 走的是 USART/USB不是 SWD所以如果 SWD 連不上通常說明芯片內(nèi)部時(shí)鐘或電源出了大問題或者調(diào)試引腳被 M4 代碼復(fù)用并配置成了模擬輸入。3.2 第二眼看RCC_CSR這臺(tái)設(shè)備是“怎么死的”如果 SWD 能連上下一步我會(huì)讀取復(fù)位原因寄存器RCC_CSR。這個(gè)寄存器能告訴你最后一次復(fù)位是由誰觸發(fā)的上電復(fù)位 / 欠壓復(fù)位外部復(fù)位引腳獨(dú)立看門狗 IWDG 復(fù)位窗口看門狗 WWDG 復(fù)位軟件復(fù)位 NVIC_SystemReset其他原因在項(xiàng)目里用一個(gè)調(diào)試命令把復(fù)位原因打印出來會(huì)非常有價(jià)值。比如你發(fā)現(xiàn)設(shè)備每次 OTA 卡死后的復(fù)位原因是 IWDG那說明問題出在“沒有及時(shí)喂狗”如果復(fù)位原因是軟件復(fù)位說明你的超時(shí)邏輯真的執(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òng)早期清除它導(dǎo)致 Bootloader 以為上一次 OTA 異常退出不斷觸發(fā)回滾。這種“歷史復(fù)位原因”沒有清理干凈也會(huì)造成奇怪的啟動(dòng)行為。3.3 第三步翻FUS狀態(tài)和無線棧版本STM32CubeProgrammer 有一個(gè)專門的 FUS 頁面打開后能直接看到 FUS 版本、無線棧版本、當(dāng)前運(yùn)行的安全狀態(tài)以及上一次 FUS 命令的執(zhí)行狀態(tài)。如果上位機(jī)顯示無線棧區(qū)域?yàn)榭栈蛘?FUS 狀態(tài)不是 Running那基本可以判斷設(shè)備是卡在無線棧升級(jí)的安裝階段。此時(shí)你要么重新通過腳本刷入一套完整的無線棧固件要么用 Flash 全擦除后重建。注意STM32WB5x 的無線棧區(qū)域有安全校驗(yàn)單純?cè)?MDK 里隨便寫一個(gè)地址是沒用的必須走 FUS 或官方工具鏈。在自定義 OTA 流程中我建議把 FUS 命令的返回碼納入日志系統(tǒng)。比如FUS_ERROR_IMG_NOT_AUTHENTICATED固件包簽名校驗(yàn)失敗。FUS_ERROR_OP_ABORTED操作被中斷。FUS_ERROR_NO_DEVICE_ACCESSM4 沒有對(duì)應(yīng)權(quán)限。這些錯(cuò)誤碼能幫你判斷問題出在 OTA 包的合法性還是出在 FUS 命令交互流程。3.4 如果連SWD都連不上優(yōu)先懷疑Flash被寫花假設(shè)設(shè)備徹底沒反應(yīng)SWD 也連不上這時(shí)不要上來就懷疑芯片壞了。先強(qiáng)制進(jìn)入系統(tǒng) Bootloader把調(diào)試口重新救出來。如果 STM32CubeProgrammer 能連接系統(tǒng) Bootloader再對(duì) Flash 做整片擦除擦除后一般都能通過 SWD 重新連接。這種情況多發(fā)生在 FUS 安裝過程中被 M4 側(cè)硬復(fù)位打斷。雖然 STM32WB5x 在 Flash 擦寫上做了一些保護(hù)但復(fù)位發(fā)生在閃存編程時(shí)序中間仍可能導(dǎo)致無線棧區(qū)域處于不穩(wěn)定狀態(tài)。而一旦無線棧區(qū)域內(nèi)容損壞M0 無法啟動(dòng)協(xié)議棧整顆芯片就表現(xiàn)為“BLE 完全消失”但 M4 可能還在空轉(zhuǎn)。所以從設(shè)計(jì)層面講任何可能中斷 Flash 編程的操作都必須格外小心。尤其是無線棧升級(jí)期間不是萬不得已不要用 M4 側(cè)看門狗去打斷 FUS 流程。4. 固件側(cè)timeout/reset能解決什么不能解決什么4.1 超時(shí)機(jī)制的正確分層傳輸層、安裝層、啟動(dòng)層回到標(biāo)題里的問題firmware-side timeout/reset 到底是不是正確方案我的答案是timeout 是必須的但 reset 要分級(jí)、分層不能一把梭。可以把整個(gè) OTA 流程分成三個(gè)層次層次典型超時(shí)場(chǎng)景正確處理方式是否建議直接復(fù)位傳輸層長時(shí)間沒有收到下一個(gè)固件分片中止本次下載保持廣播等待重連通常不需要復(fù)位安裝層FUS 安裝無線棧超時(shí)查詢 FUS 狀態(tài)記錄錯(cuò)誤再?zèng)Q定復(fù)位謹(jǐn)慎需先保護(hù)標(biāo)志啟動(dòng)層Bootloader 檢測(cè)到鏡像無效回退到上一分區(qū)或進(jìn)入恢復(fù)模式通過跳轉(zhuǎn)邏輯完成不屬于普通復(fù)位4.2 傳輸層超時(shí)該中止但不該急著復(fù)位傳輸層的超時(shí)最簡(jiǎn)單。M4 收到固件分片后維護(hù)一個(gè)last_rx_tick。如果超過某個(gè)閾值比如 5 秒沒有收到新的分片就認(rèn)為本次傳輸已經(jīng)失敗。此時(shí)正確的做法是把 OTA 狀態(tài)機(jī)切到OTA_STATE_FAILED。記錄失敗的偏移量和錯(cuò)誤碼。釋放本次 OTA 占用的緩存。判斷當(dāng)前正在運(yùn)行的應(yīng)用是否有效如果有效繼續(xù)跑舊應(yīng)用同時(shí)繼續(xù)保持 BLE 可連接。如果舊應(yīng)用已經(jīng)被部分覆蓋比如采用了單 Bank 原地升級(jí)則應(yīng)讓設(shè)備停留在“可發(fā)現(xiàn)且可重新下載”的狀態(tài)等待手機(jī)端重連后重新把完整固件包傳一遍。為什么不要立即復(fù)位因?yàn)閭鬏攲映瑫r(shí)往往只是手機(jī)空中的射頻干擾、BLE 連接參數(shù)不匹配、或手機(jī)端 APP 異常此時(shí)設(shè)備本身沒有掛。你復(fù)位自己反而會(huì)讓手機(jī)端徹底丟掉連接不復(fù)位至少手機(jī)端還能通過當(dāng)前連接繼續(xù)補(bǔ)發(fā)幾包。我在實(shí)測(cè)中發(fā)現(xiàn)BLE OTA 傳文件時(shí)如果手機(jī)屏幕熄滅或系統(tǒng)進(jìn)入省電模式連接會(huì)進(jìn)入 dormant 狀態(tài)幾秒鐘沒有數(shù)據(jù)是很正常的。把傳輸超時(shí)設(shè)成 2 秒會(huì)誤傷設(shè)成 10 秒又會(huì)讓卡死恢復(fù)太慢。一般建議根據(jù)實(shí)際數(shù)據(jù)包間隔設(shè)置比如你的 APP 每 20ms 發(fā)一包可以設(shè) 2 秒如果每 100ms 發(fā)一包可以設(shè) 4~5 秒。4.3 安裝層超時(shí)需要“先確認(rèn)狀態(tài)再?zèng)Q定是否復(fù)位”安裝層指的就是“固件傳輸完成開始擦寫/切換”這個(gè)階段。如果是應(yīng)用固件雙 Bank 切換整個(gè)過程很短M4 直接操作 Flash超時(shí)主要關(guān)注擦寫時(shí)間是否異常。如果是 FUS 安裝無線棧過程可能跨越數(shù)秒到幾十秒此時(shí) M4 與 FUS 基于 IPCC 異步交互。這個(gè)階段最忌諱的就是“M4 等不到回復(fù)后直接調(diào)用NVIC_SystemReset()”。為什么因?yàn)?FUS 可能在擦寫無線棧 Flash此時(shí)硬復(fù)位可能會(huì)打斷 FUS 的擦寫流程。STM32WB5x 的 FUS 內(nèi)部有一定恢復(fù)機(jī)制但你在錯(cuò)誤的時(shí)間點(diǎn)打斷它可能讓無線棧區(qū)域處于“存在但校驗(yàn)失敗”的狀態(tài)。與其這樣不如在進(jìn)入安裝前就設(shè)計(jì)好先通過 FUS 查詢當(dāng)前狀態(tài)如果 FUS 還活著讓它繼續(xù)跑或者主動(dòng)發(fā)送一個(gè)放棄命令。如果查詢 FUS 也得不到響應(yīng)才考慮復(fù)位并且復(fù)位后要檢查無線棧版本和 FUS 錯(cuò)誤碼決定是否進(jìn)入“恢復(fù)模式”。4.4 啟動(dòng)層回退把最后一道防線放在bootloaderOTA 中最重要的一道防線不是“超時(shí)復(fù)位”而是“啟動(dòng)時(shí)驗(yàn)證”。無論你采用雙 Bank 還是單 BankBootloader 都要在跳轉(zhuǎn)到應(yīng)用之前驗(yàn)證目標(biāo)鏡像的有效性。STM32WB5x 的雙 Bank 結(jié)構(gòu)非常適合做 A/B 升級(jí)。你可以在 Bootloader 里做以下檢查讀取用戶分區(qū)頭部的鏡像 CRC 或簽名。如果 CRC 有效正常跳轉(zhuǎn)。如果 CRC 無效檢查另一個(gè) Bank 的 CRC。如果另一個(gè) Bank 有效切換啟動(dòng)。如果兩個(gè) Bank 都無效進(jìn)入串口或 BLE 恢復(fù)模式。我在項(xiàng)目里把這條規(guī)則固化為“啟動(dòng)鏈”Bootloader - App A / App B。OTA 寫入只寫非運(yùn)行 Bank寫完置位 “pending” 標(biāo)志復(fù)位后 Bootloader 根據(jù)標(biāo)志和校驗(yàn)結(jié)果決定正式切換還是回滾。這樣一來即使安裝階段復(fù)位時(shí)機(jī)不對(duì)只要舊 Bank 還完整設(shè)備至少能回到舊版本而不是“徹底失聯(lián)”?;赝藱C(jī)制雖然不能替代超時(shí)復(fù)位但它能在超時(shí)復(fù)位做錯(cuò)時(shí)兜底。很多“OTA 卡死無法重連”的最終原因其實(shí)是 Bootloader 沒有做鏡像有效性檢查啟動(dòng)鏈斷了。5. 一套可以落地的OTA超時(shí)復(fù)位參考設(shè)計(jì)5.1 狀態(tài)標(biāo)志和數(shù)據(jù)布局先行在設(shè)計(jì) OTA 邏輯之前先確定狀態(tài)標(biāo)志放在哪。ST 官方的雙 Bank 方案一般會(huì)使用幾個(gè) Flash 字或 Option Byte 作為升級(jí)標(biāo)志。由于 Flash 寫入要擦除不建議頻繁修改同一個(gè)字。更穩(wěn)妥的做法是用一個(gè)獨(dú)立的配置扇區(qū)專門保存 OTA 狀態(tài)。一個(gè)簡(jiǎn)單的狀態(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)啟動(dòng)區(qū)域 uint32_t last_error_code; uint32_t crc32_of_struct; } OtaPersistentStatus;每次更新狀態(tài)后先計(jì)算整個(gè)結(jié)構(gòu)體的 CRC32再寫入保存區(qū)。Bootloader 啟動(dòng)時(shí)先檢查 magic 和 CRC32如果校驗(yàn)失敗就認(rèn)為狀態(tài)不可信強(qiáng)制走安全啟動(dòng)路徑。別小看這一步很多 OTA 卡死就是狀態(tài)標(biāo)志半寫半不寫造成的。5.2 傳輸超時(shí)的計(jì)算和喂狗節(jié)奏傳輸超時(shí)不能拍腦袋定。先量一下你的 BLE 連接實(shí)際帶寬手機(jī)端每隔多少毫秒收到一個(gè) Write Response如果平均間隔是 30ms那 3 秒內(nèi)沒有任何包就說明鏈路已經(jīng)斷了或者對(duì)端已經(jīng)放棄。設(shè)計(jì)喂狗時(shí)也要注意喂狗不能放在while(1)主循環(huán)里因?yàn)?OTA 接收數(shù)據(jù)時(shí)主循環(huán)可能長時(shí)間阻塞。更好的做法是“事件驅(qū)動(dòng) 后臺(tái)任務(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擦寫期間長時(shí)間不進(jìn)這里 }如果在接收回調(diào)里直接寫 Flash而且 Flash 擦寫時(shí)間比較長要注意在擦寫前開一個(gè)足夠?qū)捜莸目撮T狗窗口?;蛘吒纱喟呀邮站彌_做深一點(diǎn)數(shù)據(jù)先放進(jìn) RAM后臺(tái)慢慢寫 Flash。這樣 BLE 協(xié)議棧能更及時(shí)地回 ACK連接不容易斷。我在實(shí)測(cè)中比較推薦“RAM 緩沖 后臺(tái) Flash 寫入”的模式。每次 BLE 收滿一個(gè)扇區(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)入安裝階段時(shí)我會(huì)把流程拆成三步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); // 對(duì)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. 超時(shí)處理先記錄錯(cuò)誤再考慮復(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)展時(shí)才執(zhí)行復(fù)位。復(fù)位后用 Bootloader 的鏡像校驗(yàn)來兜底。5.4 實(shí)測(cè)驗(yàn)證哪些方案能“救回來”哪些會(huì)“越救越死”我實(shí)際測(cè)試過三種策略結(jié)果差別很大策略 A傳輸層超時(shí)后立即NVIC_SystemReset()。結(jié)果設(shè)備重啟后能起來但如果 OTA 有大量緩存沒有落盤導(dǎo)致寫了一半Bootloader 沒有回退邏輯設(shè)備卡死。越救越死。策略 B傳輸層超時(shí)后中止升級(jí)但保持廣告等待重連。結(jié)果設(shè)備能重新被發(fā)現(xiàn)手機(jī)端重新連接后可以重新傳輸雖然浪費(fèi)時(shí)間但可靠。策略 CFUS 安裝階段從HAL_GetTick()到 30 秒超時(shí)后硬復(fù)位。結(jié)果有幾次設(shè)備能恢復(fù)正常有幾次無線棧區(qū)域被寫壞需要用 ST-Link 全擦后重刷。風(fēng)險(xiǎn)很高。綜合來看最可靠的設(shè)計(jì)是傳輸層盡量不重啟安裝層盡量不硬復(fù)位啟動(dòng)層盡量依賴 Bootloader 自動(dòng)回退。6. 幾個(gè)關(guān)鍵決策和給后來者的建議回到最開始的問題firmware-side timeout/reset 是不是正確做法我的看法是timeout 必須放在 OTA 的每一層但 reset 是最后手段不能放在傳輸層“每等不到回包就復(fù)位”。正確姿勢(shì)是把 OTA 設(shè)計(jì)成狀態(tài)機(jī)每個(gè)狀態(tài)都有明確的超時(shí)行為、持久化標(biāo)志和恢復(fù)路徑。復(fù)位只是所有恢復(fù)路徑都不生效時(shí)的最終兜底。我在實(shí)際項(xiàng)目里踩過坑尤其建議注意這幾點(diǎn)第一不要讓 M4 在等待 FUS 回復(fù)時(shí)完全阻塞。哪怕是一個(gè) 5ms 的HAL_Delay也要保證主循環(huán)仍然能喂狗、能處理其他后臺(tái)任務(wù)。第二復(fù)位之前一定要保存錯(cuò)誤信息。你可以把last_error_code和ota_state寫到備份寄存器或者 Flash 的專用區(qū)域這樣復(fù)位后可以通過日志直接看到“上次是為什么復(fù)位”。沒有這一步你只能靠猜。第三升級(jí)無線棧之前先確認(rèn)當(dāng)前 FUS 版本和無線棧版本確保無線棧固件包與 FUS 兼容。版本不匹配導(dǎo)致 FUS 安裝失敗的情況比硬件問題常見得多。使用官方 OTA 例程時(shí)也要看清示例中給的無線棧版本不要隨手拿別的版本刷進(jìn)去。最后再分享一個(gè)排查技巧OTA 卡死時(shí)用 STM32CubeMonitor 或一個(gè)簡(jiǎn)單的串口日志把 M4 側(cè)收到的 BLE 數(shù)據(jù)字節(jié)數(shù)和 FUS 返回的每一條命令狀態(tài)都記錄下來。我靠這招定位過很多“看起來像玄學(xué)”的升級(jí)失敗——其實(shí)只是某個(gè)包在傳輸層丟了但上層一直沒等回來。把日志打印到 Flash 尾巴上掉電也不丟。這樣即使設(shè)備徹底失聯(lián)接上 ST-Link 還能從 Flash 里把最后的現(xiàn)場(chǎng)數(shù)據(jù)讀出來比盲猜高效得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久久久深夜无码| 情色五月天网| 激情久久av一区av二区av| 91黄站| 亚州再线| 6080yy午夜理论三级一区二区三区无码 | 小骚逼被操的爽不爽| 91啪啪视频| 日韩精品国产一区二区| 91综合网| 精品传媒在线一区| 亚洲深夜福利| 大香蕉日韩| 国产情色第一第二页在线观看| 久久99黄色卞西瓜| 欧美中文字幕男人天堂久久精品| 粉嫩国产精品久久粉嫩| 五月丁香色综合| 中国一区二区亚洲人妻| 萌白酱自拍视频| 色综合一本| 91 丝袜在线播放| 97碰| A级在线视频| 99精品人妻| 天天操妹子| 99蜜月精品久久| 一二三四视频在线社区中文字幕| 九九九九九九九九九五码| 亚洲色图激情小说| 亚洲 欧美 中文 日韩超碰| 激情五月天丁香| 国产18精品亚洲精品| 伊人久久在线视频观看| 少妇熟女视频一区二区三区| 69少妇一区二区| 日韩性爱小视频| 日韩精品一区二区人人人| 青青草AV色| 欧美性视频二区三区| 日产成人久久| 老熟乱一区二区三区四区| 日日爽熟女| 毛片99-全集电影手机免费观看完整-B029AV| 安徽熟妇视频| 91精品少妇搡搡搡| 中国特猛少妇色xxx| 亚洲九九视频| 日本色日夜干| 三级特黄60分钟播放| 久久久久久亚洲Av无码| 国产激情av女片自拍| 操逼日韩无码| 在线 制服丝袜中出 人妻| 97人人草| 欧美国产有色电影| 青青草影视蜜久久| 尹人免费观看视频在线| 多毛小伙内射老太婆| WWW黄片COM| 色综合久| 91色噜噜狠狠| 性欧美第一页| 精品国产无码中文| 久久思思热| 久久久久久久少妇| 亚洲欧洲第二视频在线观看色图| 日韩天天综合| 青椒国产97在线熟女| 免费精品中文字幕| 美女啊啊啊啊pc| 神马午夜久久久| 日韩中文9| 91色插| 精品欧美不卡在线播放| 新婚人妻扶着粗大强行坐下| 一区二区三区日韩欧美| 国产精品白丝www| 韩国免费播放一级毛片| 99色在线| 欧洲精品久久| 国产精品九九九| 日本三级一区二区 在线| 天天干夜夜操网| 超碰资源亚洲97| 2017超碰| 成人性爱视频在线看| 深爱五月天| 欧美日韩人妻婷婷一区| 国产成人亚洲精品无码最新在线| 精品成人av一区二区三区在线| AV中文在线可看| 亚洲日韩欧美一区二区| 91国产操逼视频| 很很干很很操| 美女91| 亚洲成人美女无吗| 久久精品99久久久久久| 1人人看人人摸人人操| 久久精品美女一区| 91成人18| 天天看天天综合成人网| 精品欧美日韩在线观看| 亚洲AV无线| 乱理日韩中文| 精品999999| 成人午夜无码视频| 探花视频免费观看国产专区| 日本三级中国三级99人妇网站| 久草成人影片| 狠狠躁AV| 久久久久久9| 狠狠狠一区二区三区| 老司机香蕉| 久久鲁干| av天堂加勒比| 99天堂网| 天美传媒婬乱在| 亚洲一区中文字幕一区| 91精品国产91综合久久蜜臀| 91久久精品国产| 久操免费观看| 中文字幕在线免费观看| 精品一久久久| 九九综合久久中文字幕| 五月天欧美色图| 福利视频一区二区微拍| 亚洲清纯唯美| 不卡啪啪视频| 99999国产精品| 91亚·色| 久久久久久久伊人精品| 国内97干免费看| 影音先锋少妇| 亚洲欧美另类图片| 91大神电影天堂| 欧美精品宗合| 劲爆欧美人妖三区91| 黄色小视频日本txt| 亚洲熟女偷拍在线观看| 午夜精品99久久久久传媒| 天美91| 吉田爱美AV在线| 成人小说视频在线精品欧美| 久久久月天| 欧美色棕合| 激情 欧美 亚洲 小说| 九草在线大香蕉| 日韩精品中文字幕一| 色777999综合| 黄色污污污污污污网站| 五月天久久综合网| 欧美性第一页| 99re在线视频国产| 六九九九| 在线观看色视频| 三久久久四久久久久| 青青草视频在线观看一区二区| ,成人免费啪啪视频| 亚洲欧美综合网站| 久久久一热在线播放| 国产最火爆久久国产网站网站| 97操在线| 亚洲熟妇图片| 静品嫩模一区二区| a片久久久久久久久久久久| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 日本久久久久久久久久| 久久国色天香香蕉| 激情第四色| 影音先锋视频在线| 中文字幕丰满人妻日本| 国产一区在线播放| 97欧美色| 蘋果手機免費看成人Av| 日韩 人妻 精品| 91粉嫩萝控精品福利网站_精品影音先锋国 | 试看60秒 爽| 日韩不卡码| 91在线免费观看处女| 成年人性爱日韩| 成人免费看吃奶视频网站| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 69超碰综合| 国内精品伊人久久久久影院会| 男人天堂网站| 亚洲男人天堂2017| 91精品国| 欧美在线干| 校园春色中文字幕AV| 99色悠悠| 国产精品老熟女一区二区| 无遮挡猛进视频免费无限观看| 国产无吗在线播放| 亚洲熟伦熟妇AV无码春色| 深喉吞精| 麻豆视频国产一区二区| 国产精品露脸在线观看| 亚洲不卡三级手机播放| 9999久久久| 偷拍盗拍亚洲色图图片| 一区二区影视| 丰满人妻区一区二区三| 久久久久亚洲Av无码专区老牛影视| 午夜精品人妻二区三区| 狠操91,com| 日本精品性生活久久久| 91色综合色| 久久久久幕乱码| 精品人妻伦一区二区三区久久| 日韩国产十八禁| 欧美日日夜夜| 狠狠亚洲| 99热99re6国产在线播放| 婷婷香网站| 欧美大片天天看| 青青草中日韩在线| 日日摸日日碰夜夜爽视频| 亚洲色图欧美色18直播在线| 成人国产视频在线观看| 日本人妻丰满熟妇久久久久久| 九九九九九九视频免费| 亚洲精品国产无码高清| 看一级特黄a大一片| 国产网红精品| 一区二区 韩日AV| 亚洲综合小说另类图欧美视频激情小说色五月天 | AV乱伦专区| 吖在线不卡一区二区国产剧情| 老熟女搡BBBB搡BBBB视频| 久草免费福利在线播放| 秋霞视频一区二区| 欧美日不卡| 亚洲欧美国产中文字幕| 蜜桃AV天堂| 免费在线看黄片av| 综合五月婷婷亚洲一区| 啪啪91| 成人贴图日韩欧美| 97频视在线| 91亚洲网站| w w w.久久精品| 波多野42部无码喷潮在线观看 | 97色97好| 久久99国产精品| 可以免费看黄片的视频| www.zbzhongsen.com| 亚洲精品丝袜| 啊啊啊啊免费视频| 99久久久无码精品国产人| 九九香蕉网| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 超碰碰碰碰| 国产精品乱人伊人网| 日韩专区久久久| 99无码狠狠久久| 自拍偷拍2025在线观看| 国产13区| 精品人妻一区二区三区不卡断 | 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 综合97| 97国产高清视频在线观看| 91人妻丝袜无码| 死我十八禁| 日本人妻伦在线中文字幕| 亚洲成?V人片在线观看福利| 男人网站婷婷| 啪啪免费| 超碰综合色| 亚洲天堂欧美| 久草综合京东| 精品对白久久不卡| 久久女婷| 男人的天堂kva| 久操视频资源站公开| 97精品国产97久久久久久户外免费| 日韩精彩视频| 8050无码八戒| 久草精品一区 | 色女综合| 日韩av电影成人在线| 可以看的av| 欧美综合色综合| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 欧美日韩大陆黑人少妇99| 久久系列| 欧美天天插| 欧美色视| 天天摸夜夜摸| 欧美另类精品xxxx| 77国产精品| 操逼操逼视频操逼| 一二三四区电影| 日本岛国黄色网址| 亚洲色交| 国产精品一区二区在钱播放| av亚欧| 亚洲AO在线| 三级日韩一区二区三区| 久久綜合很很很| 美女在线H91| 最新日本中文字幕| 欧美变态激情网| 欧美成人性爱视频免费观看| 日本97久久| 91色久| 伊人操| 亚洲欧美天堂在线| 久久久国产亚洲精品系列| 足交视频老司机| 免费中文在线| 91n处女在线观看| 天天影视色香色欲| 国产一区二区三区白丝| 色香综合天天影视综合 | 国产欧美精选自拍一区| 综合97久久| 超碰九色| 眼镜人妻101.com| 亚洲精品不卡一二三区| 五月婷婷激情综合| 精品国产91av一区二区三区| 中文字幕三四五区| 无码视频一区二区| 另类综合另类| 乱论91| 97碰碰色| 老女人老91妇女老热女| 久热九九| 性爱视频无打码在线观看| 一二区在线观看视频| 亚洲国产精品无石码久久| 午夜性| 亚洲色图殴美色图激情乱伦| 襙一襙| 欧美色爱综合| 日韩噜噜69| 五月天开心网| 人妻乱仑一区二区三区| 无码免费在线观看黄色片| 国产不卡的视频| 中文字幕制服欧美久久一区| 国产玖玖| 手机看片1024你懂的国产| 亚洲一区二区在线观看91| 校园春色宗合网| 免费看美国人人爽,人人操| 蜜乳Av成人片网站| 偷拍精品一区二区三区| 狠狠色五月亚洲91| 熟女网站最新| 日日天天久久啊啊aaa| 7777欧美成是人在线观看| 中文字幕黄片在线| 亚洲在线欧美| 狠日欧美| 欧美姓爱综合网| 国产免费一区| 国产精品suv一区| 操九九九九九九| 久99热| 国产区91柔拿会所技师| 操人人| 91视频综合网| 超碰91在线| 国产精品老熟女一区二区| 色欲日韩欧美在线一区| 国产精品制服丝袜清纯唯美 | 精品网站9999| 亚洲国产综合久久久性感熟妇| 爱射综合| 超碰在线看| 日韩不卡av一二三| 99色色网| 亚洲高潮少妇| 97超碰69| 91色噜噜狠狠| 天天日天天舔东京热| 九久9热| 亚洲AV无码| 久久发布国产伦子伦精品| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 91制服丝袜| 大逼色网站| 四虎AV在线播放| 天美传媒精品久久视频| 性色综合网| 亚洲毛片基地专区| 久久狠狠色噜噜狠狠狠狠97| 蜜臀一区二区三区在线 | 国产激情久久久| 人妻精品一区二区| 亚洲精品国产精品乱码不99| 日韩精品碰碰| 69精品久久久久中文字幕| 综合操逼| 日韩操人| 91青视频| 乱老熟女一区二区三区| 肉丝中文无码高清| 无码粉嫩白虎一线天b区| 夜夜躁狠狠躁日日躁av| 人妻色偷色噜| 国产强奸超碰AV| 乱伦熟女区| 人妻少妇一区二区| 青青草大香蕉在线视频| 日韩青久久| 欧美精品庄| 日韩免费a级毛片无码a∨| 国产精品麻豆免费视频| 精品人妻美妇91job| 色色色综合网| 日韩精品9区| 欧美色97| 久久久久久久伊人精品| 免费黄色A片| 素人播放一区| 亚洲超碰综合网| 99夜夜操| 国产成人手机视频激情| 亚洲丝袜色| 超碰1024久久| 97久久国产精品女不卡| 亚洲熟女精品| 欧美天天插| 国产后入内射| 天天干天天舔| 天天综合网站| 久操网线| 四虎国产成人精品免费一女五男| 午夜操一视频一区| 日韩人妻 中文字幕| 国产欧美精品日韩区二区麻豆天美| 亚洲男人的天堂AV| 好爽视频在线观看视频 | 欧美操人| 精品9区| 91精品人妻一区二区三区蜜桃| 国产一区二区三区视频在线看| 五月天婷婷色| 欧美图片色五月天| 日韩亚洲中文有码视频| 91人妻丝袜无码| 国产农村妇女毛片精品久久| 国产久久av| 丝袜喷水在线| 超碰午夜| 天美一二三在线观看Av| 超碰97精品| 天天干,夜夜爽| 爱丝福利| 欧美日韩性爱精品| 大香交| 日韩欧美国产一区二区三区四区| 黑丝日韩av丝袜av| 最新av中文字幕高清| 精品四五区| 色臀AV| 99久在线精品99re8热| 超碰在线1234区| 亚洲无码免费看| 91天美传媒在线观看| 无码高清操逼网址| 蜜臀AV成人精品蜜臀AV久久| 欧美少妇一区二区三区| 超碰91在线| 熟女丰满人妻一区| 白丝av| 精品91摸| 在线有码中文字幕| 都市激情人妻一区二区青青操视频| 亚洲黄片免费在线播放| 欧美国产视频| 超碰在线观看av不卡| 中文字幕精品久久久久人妻红杏ⅰ| 欧美在线永久天堂| 欧美在线视频播放| 99re国产中文字幕| 好吊色综合| 久久久久久亚洲精品中文字幕人妻| 操逼操逼操| 性色中出| 国产成人免费观看在线视频| 老熟乱一区二区三区四区| 亚洲综合在线视频| 黑人娇小av在线播放| 欧美性暴力猛交XXXX| 爽极品影院| 亚洲素人综合| 青娱乐导航AV| 午夜爽爽爽在线观看永久入口姬片| 综合一区二区影视| 五月激情小说| 日本一区二区三区午夜观看| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 国产熟女完整版中字 | 欧美少妇性爱网站| 一区二区三区高清| 人人澡综合涩| 99热综合| 久久黄色视频一区二区三区| 五月丁香大香蕉| 蜜臀无码视频在线观看| 美女91av| 青娱乐亚洲热| 最新国产亚洲精品精品国产亚洲综合| 色香综合| 舔舔啊| 九九视品黄色| 日韩免费性爱视频在线观看| 一区二区三区免费视频入口 | 国产精品69人妻无码久久久| 欧美的精品的视频| 18禁久极品美女久久哦哟呀!| 综合五月婷婷| 超碰国产精品久| 777超碰| 国产欧洲精品亚洲午夜拍精品| 欧美色五月| 欧美一区二区三区另类精品| 欧美在线91| A一级色女| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 国产综合久| 日本东京热大香蕉a片| 五月婷婷激情| 国产精品亚洲美女久久久久| 日本成人A片免费看| 综合色一区三区二区| 一本色道久久综合狠狠操| 伊人麻豆传媒| 亚洲日韩视频二区| 97色碰| AV天堂国产| 免费精品无码一级毛片牛牛影视| 超碰久草| 夜色97| 伦在线97| 欧美97视频| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 就去色综合| 欧美青青视频| 青青草男人天堂| 久久一区,青青青青草视频在线播放| 色综合色综合网| 中文字幕狠狠玩| 日韩人妻制服丝袜av| 久久精品人人做人人看| 欧美黄色手机在线观看| 超碰97久久| 中文字幕三四五区| 男人久久天堂| 女人天堂av在线播放| 国产99999| 91美女小视频| 中文字幕国产在线天堂| 99久久99久久免费精品蜜臀| 男人的天堂2018| 日韩欧美日韩| 你懂的在线观看区国产| 性色av大全| 成人日韩3| 欧美性爱中文字幕无线码| 在线一道啪| 国语av最新自产拍在线观看| 乱伦熟女区| 97婷婷色| 亚洲s在线观看| 欧美色997| 亚洲一二三| 天天躁夜夜躁狠狠躁AV| 91久久国产精品| 国产精品久久久久久久久久久久久久吹| 97超碰欧美中文字幕| 97免费视频在线观看| 亚洲AV成人精品网站在AV| AAAA欧美日韩| 日操粉逼逼| 激情综合五月| 婷婷激情一区二区三区俺也去| 青青久操| 国产又粗又长的视频| 校园春色亚洲| 波多野结衣先锋影音| 操逼网站地址| 中文字幕精品丝袜| 福利视频合集| 久99视频| 久久这里精品国产99丫e6| 天天日天天干少妇日| 日本中文字幕在线电影| 国产精品久久久久久高清无码免费看| 五月天激情网图片| 日日爱99| 国产自产自拍| 欧美夜夜狠| 婷婷15月天青娱乐| 啊啊啊啊免费视频| 男女激烈网站最新| 91丝袜美女国产| 亚洲网污污污污| 一本久道久久综合狠狠爱一密臀精| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 亚洲 欧美综合| 成人AV超碰免费在线| 丁香色五月 97干| 中文字幕在线观看网页| 亚洲第一男人天堂| 涩综合导航| 97自拍视频在线| 欧美日韩大陆黑人少妇99| 大香蕉草草| 欧美性爱日韩性爱| 精品久久在线区一区| 超碰在线成人电影| 免费公开人人操| 日韩 人妻 精品| 欧美日韩狠狠爱| 91快色色色色色| 色婷婷综合久久久久中文一区二区| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 九九99久久| 欧美日韩资源在线| 97超碰美女| 国产精品免费视频人成| 最新av在线| 欧美亚洲自拍另类人妻| 欧美午夜精品久久久久久超碰| 无码操逼天堂| 超碰国产精品久| 久久综合中文国产| av三级电影在线播放| www.99色| 九七超碰人人乐| 玖玖爱免费观看视频| 一区二区三区蜜桃成人撸久久东京热 | 亚洲精品久久久久毛片A片拉屎 | 射综合网| 激情五月天综合网| 日韩三级av片| 五月天丁香网| www.久久超碰| 亚洲综合九九| 98超碰欧美| 日韩中文字幕视频在线观看| 久久久久96| 日韩性爱小视频在线观看| 欧美最大综合网| 无码人妻丰满热妇又大又粗| 91亚洲丝袜| 色综合久| 欧美色图20P| 日韩三级一区| 精品无码秘 人妻一区二区| 偷拍伦理视频| a片久久久久久久久久久久 | 99无码| 亚洲黑人在线| 欧美熟妇人体| 日韩国产乱子伦App| 久久成人午夜狠狠| 国产精品另类| 国内91熟女人妻丝袜天天精品视频在线| 久9无限国产| 密臀在线免费观看| 97在线精品观看视频| 久久久国产精品亚洲精品| 日本五十路熟女一区二区| 大香蕉日亚洲日本亚大 | 日韩精品怡红院| 丁香六月东京热| 91久久婷婷| 九九九久千久久激情蜜桃在线看 | 伊人色综合网| 日韩AV无码网站| 啊啊啊不要嗯嗯在线观看| 色色五月天激情| 日日爱99| 国产女人9999| 国内91熟女人妻丝袜天天精品视频在线 | 欧美一品道| 92福利社视频| 超碰人人操97碰| 欧日韩一二三f区| 欧美专利1区2区3区4区5区免费| 天天做日日做| 久久岛国| 精品视频久久区| 91九久| 屁屁影院一区二区三区国产| 欧美色宗合| 91AV天美在线视频| 黄色二级片网站| 色一色综合网| 欧美18 在线观看| 亚洲综合嫩| 午夜啊啊啊| 激情五月天色播| 中文字幕一区二区在线日韩精品| 婷婷五月天成人网| 很黄很色的视频在线观看| 天天亚洲| 91激情国产| 99综合自拍| 欧美国产日韩清纯唯美| 欧美亚洲另类在线蜜桃| 翔田千里AV无码秘 三区| 亚洲清纯唯美| 欧美暴力猛交| 无码一区二区三区四区五区六区七区八区九区十区视频 | 美女操逼福利视频| 国产精品白丝在线播放 | 最新一二三区视频| www.激情| 国产一级作爱毛片| 青娱乐亚洲热| 婷婷丁香六月| 国产精品香蕉热久久新品| 成人小说另类在线| 少妇熟女一区二区三区| 综合大香蕉美。| 国产精品视频| 亚欧中文字幕在线视频| 国产欧美美女免费观看视频| 99色在线观看| 国产成人无码久久精品| 黄片免费久久久久久久| 日本欧美一区二区三区视频麻豆| 色图综合网| 超碰美国| 999久久久国产精品| 96一区二区三区| 国产怡红院在线| 亚洲另类色综合网站| 久久高清无码夜夜操| 亚洲视频,小说| 亚洲人妻熟妇三十三区| 国产污视频麻豆传媒一区二区| 九色 人妻 大香蕉| 久久国产精品91| 96精品在线| 四虎 精品 WWW| 久久激情网| 亚洲色人阁| 九九热免费国产视频婷婷伊人五月 | 国产男人又猛又粗又爽| 亚洲av影音先锋| 夜嗨影院| 五月丁香婷婷综合网| 五月天激情四射| 久久精品小视频| 青青爽| 国产精品网站www| 日日嗨AV一区二区夜夜| 亚洲交换| 欧美精品一二三| 欧美精品三级黄片| 国产黄色在线播放观看| 中文字幕亚洲热播人妻| 日本肉体xxxx裸交| 天美传媒国产原创中文字幕亚洲欧美另类| 艳美熟妇先锋一二三区| 精彩国产视频播放1区2区| 乱老熟女一区二区三区| 婷婷精品国产欧美精品亚洲人人爽| 夜夜做夜夜爽精品视频| 人人妻人人澡人人爽久久av| 天天影视色香欲综合网小说| 伊人久久在线视频观看| 欧美啪啪女女| 丝袜狠狠草尤物人妻av91| 精品乱码久久久久| 亚洲丝袜在线观看| 翔田千里AⅤHD无码| 精品区国产区一区二区三区| AV天天在线观看| 超碰在线97国产| 欧亚 另类 久| 色欲Av人妻精品一区二| 看日韩操逼| 按摩中文字幕| 超碰 国产熟女精品一区| 97超碰香蕉| 人妻 中文 日韩| julia高潮后不停追击中出| 99啪啪| 日本精品一区二区不卡| 欧美偷拍区| www.狠狠| 久操影视| 亚洲成人精品在线一区| 日本99久久| 97亚洲欧美日韩| 天天网综合| 无码免费精品高清| 青青草视频久久久久| 欧美在线大香999| 无码外流操逼视频| 插入综合网| 99久在线精品99re8| 91人妻人人澡人人爽人人精品| 操逼网免费无码视频| 91国产大片| 久久超碰97| 国产福利影视| 五十路熟女工口| 亚洲丝袜天堂| 蜜臀久久99精品久久久久久酒店| 亚洲国产尤物yw在线观看| caopeng97| av天堂加勒比| 欧美人妻久久精品二区三区| 91女神在线视频| 东京太热男人的天堂久久久| 久久av成人无码免费| 91伊人影视综合| 中文字幕一二三| 色色色综合网| 久久有码视频| 女人高潮抽搐喷水视频网站| 老熟妇一区二区三区啪啪| 你懂的在线观看区国产| 中文字幕国产精品1区| 欲色综合| www久久久| 日韩AV噜噜噜一区二区三区四区| 风流老熟女一区二区三区l| 欧美在线大香蕉| 国产精品直播在线观看直播| 超碰资源亚洲97| 超碰人妻97| 五月丁香综合| 91网站18禁| 日韩在线视频1234| 亚洲一区二区在线观看91| 五月天综合网| 亚州欧美色图| 午夜久久一区二区无码中出| 神马久久午夜| 欧美色图亚洲色图成人在在线| 97综合| 九九九九九九亚洲| 综合av社区| 人妻少妇精品久久久| 国产大学生口爆吞精合集| 蜜桃狠狠色伊人亚洲综合| 久久激情亚洲精品无码?V| 97伦乱| 丁香六月啪啪| 日韩一级二级三级免费看完整版| 啊啊啊com| 黑人精品XXX一区一二区| 高潮嗯啊性感美女久久久| 精品九九国产无码| 美国三级日本三级久久99| 天天躁日日躁AAAXX| 欧美天天搞| xxx亚洲午夜天堂| 亚洲AV秘无码一区..| 嗯嗯啊好大| 第一高清av中文字幕| 日韩猛交| 久久99999| 黄片www.| 欧美亚洲激情| 60秒免费小视频| 日本网色| yiqicaoav| 男人的天堂久久狠| 五月丁香综合| 伊人久久综合影院精品久久久| 热的中文 热的有码 热的国产| 亚洲日韩精品在线播放| 草草草视频在线免费看| 欧美大色交| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 国产v亚洲v日韩v欧美v片另类| 国产污视频麻豆传媒一区二区| 日本性爱网址| 亚洲无线观看久久| 看看日B真人视频| 97色在线观看| 国产成人自拍视频在线| 沈阳熟女高潮对白视频| 中文无线日韩一区| 91色噜噜狠狠| www.久久久久| 亚洲图片日本AⅤ欧美在线| 国产美女高潮视频| 亚洲区限制级| 91xingse| 99啪啪视频| 台湾成人无码AV| 干超碰碰熟女| 国产精品久久久午夜夜伦鲁鲁| 一及黄久一点| 69超碰综合| 日本肉体xxxx裸交| 国产女同视频在线播放| 亚洲色图一区二区三区| 午夜视频久久久| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 91AV入口| 色亚洲欧美| 最新精品久久蜜桃 | 2020久久免费视频| 懂色AV网| 亚州欧美综合| 性性久久| 欧美亚洲第1页| 国产欧美第五页| 欧美性爱十八禁| 偷拍亚洲熟女视频播放| 欧美男人天堂| 亚州性色| 亚洲一区二区中文字幕| 精品乱码在线观看| 欧美猛交黑寡妇中文字幕| 夫妻四区五区六区| 亚洲色图在线视频| 国产亚洲一黄| 激情婷婷丁香| AA丁香综合激情| 无套内射性感少妇视频| 午夜福利视频在线一区| 国产欧美精选激情视频| 无码高清操逼网址| 97极品无码| 天欧美在线| 国产精品久久久吖| 蜜臀久久99精品久久久久久成人小说 | 国产成人精品必看| 欧美日韩国产一区二区小黄片大全| 夜夜躁狠狠躁日日躁av| 加勒比aⅴ| 欧美日韩人妻精品系列一区二区三区| 久久噜噜噜精品国产亚洲综合| 狠狠躁天天躁日日躁97| 大乔未久88一区| 亚洲蜜臀视频精品久久| 久久骚| 亚洲人精品久久久| 91日韩网站| 男人天堂2030| 精品九九九九九| 私人尤物在线精品不卡| 高清无码久操视频| 嫩呦国产一区二区三区AV| 爽极品影院| 91小视频| 六月丁丁香| 美国美女AV在线| 麻豆福利视频导航| 97在线无精品| 亚洲蜜臀精品视频久久| 熟女熟妇一区二区三四区 | 青青草密桃在线播放| 99久久无色码| 精品久久大胆人体| 欧美亚洲清纯| 亚洲色宗合| 99re热有精品视频国产| 青青伊人这里只有精品| 色五月丁香五月| 超碰久久性爱| 久久久久久久久久久久久久久久9| 天天综合麻豆视频| 超碰在线免费一区二区三区| 97在线观看免费视频| 影视综合无码少妇| 亚洲色欲天天人妻无码系列专区| 男人夜色天堂ss| 欧美日韩精品国产91| 精品无人区麻豆乱码1区2区图片| 97亚洲中文| www亚洲免费| 91精品国产麻豆国产自产在| 久久人人妻| 亚州欧美综合| 精品国产乱码久久| 久久精品国产亚洲AV片多多| 免费夜夜爱黄色视频毛片| 欧洲精品在线播放| 72av视频| 美女午夜福利免费视频| 久久草草欧美精品| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | http://qxhbdz.com| 女人的天堂大香蕉网| 天天天干977| 国产女人和拘做爰视频| 五月婷婷六月丁香| 九九九精品一区二区无码| 男人的天堂一区| 日韩亚洲国产视频| 91原创在线观看| 好色美女九七第一页| 欧美爱三级日韩久久| 久久久久婷婷| 亚洲日韩东京热一区| 91东北熟女| 国产精品三级视频网站| 在线黄色污污网站| 97国产精品| 99热网站| 国内外毛片在线观看| 亚洲无码国产精品久久| 亚洲 91 在线| 亚洲欧美校园| 玖玖玖玖精品国产剧情| 国产专区路线| 狠狠超| 日韩午夜啪啪视频| 国产免费一区| 天堂а√在线最新版在线| 久久久不能久久久久| 亚洲熟女人妻中文字幕一区二区 | 暴力av在线| 亚洲精品亚洲人成在线麻豆| 青青草日本中文字幕| 69视频入口| 青青草日本无码| 极品肉射| 婷婷色综合| 大香蕉中文网| 色九月婷婷| 久久伊人东京热| 日本 欧美 国产一区| 国产精品在线一区二区| 视频黄色国产一级| 狠狠2050在线观看| 艹精品| 亚洲av资源| 美女自卫慰黄网站免费| 国产精品视频麻豆入口| 久久一留热品黄| 欧色网址| 秋霞曰韩R级| 久久久性少妇| 国产精品99久久久www| 国产又长又大又粗的视频| 亚洲精品影视老司机| 一本久久精品中文字| 一本一道波多野毛片中文在线| 美女AV一区二区| 亚洲第一狼人丝袜美女另类| 亚熟hd视频在线| 温婉少妇玩3p| 99最新日韩偷拍视频| 亚洲Av无码成人精品国产| 蜜臀99久久精品久久久久久| 一区二区三区视频| 鸥美中出| 丁香五月天婷婷姐| 亚洲欧美日韩制服另类| 欧美中字二区| 国产亚洲精品第一最新| 玖玖爱视频网站| 国产剧情一区在线观看| 超碰地址久久| 一区二区三区四区姦女| 乱伦a片视频| 日本中文字幕熟妇| 亚洲第一综合| 久久久久久网址| AV99热18这里只有精品| www.人人cao| 97超碰精品图片| 日本一二区免费| 一级黄色视频网| 天天射天天色成人| 97 亚洲 日韩 欧美 在线| 巨爆乳一区二区爆乳区| 91超碰在线观看| 99国产精品人妻人伦| 欧美精品日韩久久久九| 97ai亚洲| 国产视频一区二区在线观看| 日本免费一级AAA大片器| 亚洲丝袜二区在线| 日本一区二区三区精品| 逼逼逼逼操操操操操操操操操午夜剧场 | 色婷婷电影网| 强奸乱伦免费网站| rivers-china.com| 人妻在线臀日韩| 中文自拍欧美影视| 亚洲阿v天堂在线| 欧美激情亚洲情色| 中文字幕 av v| 在线视频日韩欧美国产| 色在线视频导航| 激情内射| A啊啊在线观看| 五月色综合| 老熟女乱子伦中文字幕一区二区| 美女91AV| 亚洲综合草草| 青青草日本中文字幕| 久久怡红院| 男人a天堂手机在线版| 无码不卡亚洲成?人片| 丝袜美腿91| 丝袜无码a片| 国产肏逼网站| 8050午夜少妇无码| 深爱五月婷婷| 99re99在线视频| 中文字幕久久精视频久久大全| 91精品丝袜久久久久久| 一区二区三区黄色片a| 97视频免费在线观看| av橘色网站| 亚洲日韩XXX| 日韩精品人妻系列无码天堂| 香蕉久久国产AV一区二区| 大黄片做爱的大的| 欧美国产精品久久九九| 91精品国产91熟女| 久久后入制服| 狠狠躁日日躁夜夜躁A| 久久精品国产97欧美精品亚洲| 久久精品国产亚洲av水密被窝| 超碰97在线中文| 熟女一区二区| 欧美极品女人的天堂| 亚洲色久| 最近的最新的中文字幕视频| 91c色| 天天草夜夜草高潮片| 久久日韩精品一区二区| 91精品国产91久久青草| 久草这里只有精品 | 9118禁| 老女人综合| 欧美一区二区| 精品国产乱码久久久| 午夜美女诱惑电源网| 欧美,日韩,中文,另类| 丰满少妇精品一区二区| 在线播放中文字幕| 97在线观看免费| 97久久天天综合色天天综合色电影| 欧美色图 人妻| 亚洲天堂日本| 人妻熟女一区二区| 水多多映视AV| 人妻三级在线中文字幕| 神马久久久久久| 亚洲婷婷综合网| se吧提供国产乱老熟视频胖女人 | 亚洲第一二区另类图| 亚洲视频小说| 久久偷偷色综合蜜桃| 997色在线| 日比av无码| av三级电影在线播放| 欧美日韩大香蕉| 91影库|