日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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
返回資訊列表
亚洲91射| 亚洲精品人妻在线| 九九九九九九九九九九九蜜桃| 97精品97久久| 性高潮久久久| 天天做天天爱| 综合久久久久久久久91| 一本久道在线综合视频| 丝袜熟女一区二区三区| 日本精品不卡一二三区| 91高跟美女在线播放| www.acm成人黄色毛片| 蜜桃传媒视频第一区入口在线看| 天堂亚洲欧美| 久久男人精品| 青娱乐国产精品| 久久国产三区| 一级性爱啪啪视频| 精品国产乱码久久久| 91人妻精华帖| 亚洲男人的天堂网| www.色吧5.com| 日韩在线视频1234| 神马九九| 久久久久国产无av| 久久久久婷婷精品av电影| 日本一级二级三级网站| 国产97在线播放| 色欲日韩欧美在线一区| 高清不卡 中文 人妻| 亚洲一区二区三区中文字幕| 亚洲网污污污污| 久久无码成人| 91欧美情色| 思思在线免费视频| 九七毛片九九毛片| 日韩女模中文造逼| 亚洲欧美高清| 天天综合影院91| 国产精品第一区第一页| 久婷婷一区| 二男一女成人A片| 亚熟hd视频在线| 上海一级黄片| 狠狠爱夜夜| 久久黄黄| 大香焦A片| 91无码人妻精品一区二区三区蜜桃| 超碰这里只有精品| 可以在线观看AV的网站| 天天综合色图| 亚洲熟久久| 国产白嫩漂亮KTV在线| 久久精品夜色国产亚洲AV| 狼狼色丁香久久婷婷综合五月| AV色五月天| 97人人模人人爽人人| 欧美人妻制服| 亚洲男人的天堂AV| 51一区二区三区| 亚洲综合色图欧美| 欧美图片色综合| 国产日韩欧美亚洲精品95| 偷拍亚洲情色| 国产久久久9999| 亚洲伊人a线观看视频| chaopen97久久| 狼天天狼天天大香蕉| 国产在线能看的你懂的| 超碰2017| 超碰97久久国| 天天看片天天爽| 日本 色 导航| 欧美日韩欧美| 国产亚洲色婷婷99精品91| 特级丰满少妇一级AAAA爱毛片| 91欧美情色| 中文字幕精品人妻丝袜| 人人操人人狠狠操| 被男人吃奶很爽的毛片| 天天干夜夜鈤| 激情欧美日韩女同久久| 亚洲国产精品久久久久久久久久| 国产91乱伦| 噜噜噜亚洲精| 97久久精品亚洲中六字幕| 色久桃花影院在线观看| 97在线视频免费看| 激情四射熟女丝袜| 国产乱弄免费在线视频。 | 久久91| 97一区二区三区视频| 激情丁香五月| 婷婷中文网| 精品无码一区二区三区色欲| 新91视频.cmp| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 国产亚洲 中文欧美久久| 中文字幕AV乱伦| 一本色道久久综合精品婷婷| 国产精品高潮久久AV| 欧美久久伊人| 国产亚洲精品美女久久久| 亚洲国产天堂| 青青草原香蕉日本Ap| 五月天色电影| 蜜桃精品一区二区三区ww| 国产熟女乱论| 日韩无码一级黄色av片| 哈哈操电影| 九九亚洲色在线观看| 怡红院怡春院| 99re9在线| 亚州操逼网| 午夜.DJ高清在线观看免费7| 极品销魂美女一区二区| 亚洲狠| 男女香蕉一区二区| 超碰97网址| www.狠狠干.coom| 久久艹逼视频| 久操精品网| 国产精品宅男免费| 伊人五月天激情| 内射夫妻三片| 国产亚洲欧美每日在线| 草草草视频在线免费看| 波多野42部激情无码喷潮| …亚洲黄色厕厕女女在线播…| 淫穴高潮色图| 麻豆av一区二区| 99视频自拍区| 91老妇女| 日韩一级二级三级| 精品亚洲天堂| 欧美日本成人一区二区| 成人精品无码| 99婷婷一区二区| 国产精品点击进入在线影院高清| 欧美99热| 在线国产探花| 可以看的av| 免费AV播放| 国产又色又爽又舒服的三级视频| 日韩人妻无码专区| 97超碰碰碰| 日韩乱码Av| 加勒比无码一区二区三区| 亚洲nv男人的天堂网| 婷婷久久综合久| 综合熟女| 久久av网| 亚洲精品黑丝| 久 久无码人妻AV| 亚洲加勒比久久日本道| 蜜臀AV午夜精品久| 久久av一级av少妇av高潮| 视频国产精品未满十八禁止在线观看| 亚洲一欧洲中文字幕在线| 国产中文精品一区二区在线观看| 国产精品久久久久亚洲av | 日韩三A大片在线观看| 先锋激情∨在线视频播放| 岛国色情视频在线观看| www黄片免费看com| 东京日日夜夜| 天天日老熟妇| 日日日骚女人精品| 99色热| 欧美综合亚洲综合| 日韩国产欧美伦理在线| 啊v视频在线观看| 98一区二区精品| 久久伊人青青草| 97少妇人妻中文字幕久久| 91色综合色| 超碰在线91| 激情五月综合开心五月| 色爱三区| 91久久婷婷| 亚洲有薄码区日本系列中文字幕| 成人综合网 欧美| 亚洲精品 欧美精品| 精品免费囯产一区二区三区| 成人av在线播放| 欧美 亚洲 偷拍自拍| 暖暖精品二区三区观看| 日日噜噜夜夜久久亚洲一区二区 | 一本大道久| 搡老熟女免费视频 | 九九九九免费高| 综合五月天| 精品毛片av一区二区| 成人性爱视频在线看| 另类小说五月天| 欧美黑人与女人91~| 亚洲欧美变态| 很黄很色的视频在线观看| 日韩人妻少妇 一区二区三区| 9精品在线| 91欧美少妇| 乱伦一二三区| 免费视频无码| 亚欧操逼片在线观看| 51国产午夜精品视频| 婷婷丁香成人| 60秒免费小视频| 9Ⅰ老熟女| 黑人狂躁日本妞一区二区三区| 日韩性爱电影一区| 色偷偷色偷偷欧美日韩| 精品欧美不卡在线播放| 美女露胸露屁股| 国产吹潮女在线观看| 无码78| 欧美日韩国产色图在线| 日韩欧美中文字| 日本操逼无码| 蜜臀久久99精品久久综合| 国产精品 久久久精品一牛| 色五月婷婷久久| 78久久久| 97久久超碰| 97久久视频| 色色99| 毛片一区二区| 大香蕉在线视频15| 亚洲天堂男人的天堂| 无码国产精品久久久久| 亚洲青色欧美| 热久久国产| 人妻无码后入| 亚洲精品国产精品成人| 久久久久中出| 国产精品福利资源在线尤物| 91久久婷婷| 超碰社区97| 久久精品店| 淫乱图区| 男人a天堂手机在线版| 内射中出日韩在线观看视频| 国产熟女精品一区二区| 熟女人妻av在线资源,黄色的资源| 熟妇一区,二区,三区。| 亚洲欧美精品福利在线| 欧美热图99| 女人被添高潮免费视频| 极品出轨视频网站| 青青草操逼逼视频| 亚洲啪啪综合?v一区综合精品区| 国产麻豆一级精品视频| 人妻一区视频| 亚洲精品人妻吞精av| 久久精品99久久久久久| 国产成人bd在线观看| 天美传媒AV国产在线| 日韩中文字幕国产| 东京热不卡视频| 亚洲精品啪视频| 嗯嗯啊啊亚欧精品| 高清无码一区二区三区| 精品无码一区二区人妻久久蜜桃| 92人人操人人| 69XX一中文字幕人妻91| 日韩资源网| 久久av一级av少妇av高潮| 色天使大香蕉| 老熟女乱子伦中文字幕一区二区| 亚洲熟女偷拍在线观看| 91粉嫩萝控精品福利网站_精品影音先锋国 | 91亚洲青青草原精品1区| 2024黄色视频| 色综合99999| 天天影视色香欲综合网小说| 国产精品suv一区| 探花熟女,姿勢到位,體驗感也到位| 都市激情人妻一区二区青青操视频| 久久久久久久国产a∨| …中文字幕亚洲乱,97人妻无码费视…| 亚洲精品人妻吞精av| 密臀视频三区免费网站| 人妻在线大香蕉| 玖玖玖玖精品国产剧情| 久操国产在线| 国产青视频| 果冻国产精品麻豆成人av| 亚洲资源站| 欧美日韩国产电影| 欧美做爰无码A片视频| 中欧人妻丝袜中文字幕| AV99热18这里只有精品| 五月天婷婷色| 无码国产Av| 97人人爱人人乐| 内射黑人| 五月丁香久久| 天堂俺去俺来也www久久婷婷| 伊人嫩草| 东北女人被操| 国产激情综合五月久久| 天天色黄色影院天天操| 97干在线| 熟女91网| 91亚洲欧美色图| 色婷久久| 亚洲免费人妻在| 一级性爱视频免费在线| 国产精品天堂| 国产AV线| 秋霞鲁丝午夜无码一区二区三| 国产精品高朝久久久久久久| 成人综合网 欧美| 丁香六月啪啪| 国产92麻豆天美精品色欲5| 精品无码少妇| 欧美性少妇| 福利一级版子| 狠狠干精品一二三四五六2022| 国产欧美精选自拍一区| ji熟女.com| 97综合国产| 91劲爆| 黄呦呦在线| 天天干一区二区| 99综合| 人人妻人人狠人人| 2018天天干在线视频| 久久婷婷一区| 在线电影亚洲色图| 九七毛片九九毛片| 欧美亚洲se91| 欧美少妇第一页| 蜜臀久久久久久999| 8050无码八戒| 久99视频| 久久色情| 岛国在线免费视频| 高清在线不卡一区二区 视频| 日日躁天天躁狠狠躁| 久久偷偷色综合蜜桃| 亚洲中文电影| 91总综合网| 欧美日韩理论一区| 丝袜内射| 99re这里只有精品3| 另类小说五月天| 综合免费无码中文| 婷婷av在线中文字幕| 91色综合| 免费精品国偷自产在线在线| 26uuu最新| 夜夜嗨视频| 婷婷爽人人婷婷爽视频| 懂色AV网| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 大鸡巴久久| 青青草AV色| 骚货操死你| 欧美在线电影| 男人天堂2019| 欧美激情久操网| 黄片免费视频2019| 操逼国产免费| 女人高潮抽搐喷水视频网站| 亚洲天堂,男人| 久久极品一区二区| 夜夜操91744565| 国产超碰在线一区| 91超碰在线播放| 老鸭窝日丰县女人| 男人精品天堂一区| 九九热午夜欧亚国产视频| 亚洲日韩黑丝| 亚洲自拍97| 久久久999| 91亚洲黄色网| 国产精品com| 亚洲婷婷综合网| 亚洲国产av中文字幕久久| 最新岛国大片| 先锋激情∨在线视频播放| 久久久久久日韩| 尤物一级在线免费观看| 亚洲激情网一二三四区| 91欧美偷拍| 打av高清| 少妇色欲综合网2| 丝袜美腿av女优在线| 韩国三级色呦呦| 中文字幕,人妻,日韩| 福利视频一区二区微拍| 97人人操人人干| 色性综合| 少妇人妻精品| 中文字幕乱妇免费视频| 天天综合91| 亚洲黄片免费在线播放| 91精品人妻电影| 大香蕉日亚洲日本亚大| 日本一区二区中文字幕久久| 日操粉逼逼| 天天插天天操| 久久99999| 91少妇通奸网站| 2017天天拍大香蕉| 成人aⅴ一区二区三区| 熟女精品一区二区三区| 91激情综合| 欧美性色欧美| 青青操日韩| 不卡一区二区日本视频| 330dv亚洲成年视频网| 6080YYY午夜理论片在线观看| 美日韩一二三区| 干超碰碰熟女| 久久超碰97中文字幕| 亚欧成人综合影院| 骚熟女AV网| 91 手机在线播放 绯色| 八戒无码国产午夜福利| 欧美性五月| 美女刺激久久国产欧美| 国产精品另类| 97se综合网| 性爱av网站| 中文字幕无码不卡啪啪| 久久免费中文字幕在线观看| 天堂综合网| 99精品无码| 欧美激情内射| 口爆吞精在线观看| 极品色| 久久精品99| 日本美女性生活久久久久久久| 国产美女销魂在线观看不卡| 中文字幕乱妇免费视频| 欧美伦乱爱| 99热综合在线| 99久久婷婷国产综合精品草原| 国内毛片国产欧美拍| 操淫穴亚洲五月丁香| 久久婷婷五月天| 日韩色欲久久一二三四区| 欧美天堂第二区| 亚州中文字幕超碰97| 日韩AV一起草| japan日本高清乱xxxx| 97欧美精品| 国产久久一区二区| 欧美成人精品一区二区三区| 日本大片日本一区二区免费高清| 久久毛卡| 欧美真人抽搐一进一出gif | 日va操| 日韩免费一级性爱视频| 欧美日韩色| 成人天天看站长推荐| 精品免费1| 超91综合网| 国产超碰在线| 成人看片网站| 九九热精品在线| 黄色av一区二区在线| 国产中文字幕曰本毛片| 无码精品蜜桃一区二区三区ww| 热久久国产| 在线播放免费av福利片| 免费精品中文字幕| 久久久久久69国产一区二区| 亚洲黄色视频在线观看视频| 熟妇综合一区二区三区| 国产亚洲精品久久久久小| 日日骚AV| 久操 高清| 青青草综合在线| 国产亚洲精品av一区| 牛牛久久国产精品视频一二三| 午夜免费视频1000| 91亚洲不卡一区| 亚洲91网。| 99re这里只有精品3| 男人 天堂 日 亚洲| 亚洲日韩东京热一区| 影音资源男人日韩| 日韩欧美午夜一区二区| 中国熟女老妇仑乱一区二区三区| 台湾一区国产高清在线| 91丨九色丨国产丨人妻在线| 国产91精品在线免费| 丁香五六月啪啪| 操屄日韩| 久热香蕉精品在线视频| 天天干天天拍| 西西美女视频网| 久久久国产护士丝袜美腿一| 男人天堂毛片| 无遮挡男女激烈动态图| 狠狠操,使劲操| 熟妇操花| 亚洲欧美日韩免费观看| 三男一女不戴套的A片| 欧美性xxxxx狂欢| 亚洲av影院在线观看| 日韩素人无码一区二区三区三州| 亚洲中文字幕日产无码久久| 超碰9 7女人| 极品销魂美女一区二区| 国产av强奸美女| 骚逼高潮久久精品| 国产精品久久久久久久久久久久久久久久 | 欧美色综合网| 九九综合久久中文字幕| 九九黄色视频在线观看| baisiav| 91久久久久| 岛国大片国产| av天堂影视中文在字幕在线中文| 一区二区视频你懂的| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 日日骚网站| 欧美综合亚洲| 久久亚洲AV无码专区国产精品| 九九综合久久| 青青久久艹| 日韩国产不卡在线视频| 亚洲中文制服诱惑| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 91精品人妻一区二区三区蜜臀| 亚洲第一黄色av网站 | a片 xxxx受爽视频| 九九热免费视频| 嗯嗯嗯啊啊在线观看| blacked精品一区国产| 日韩二级| 久久天天艹| 日韩钢筋无码高清啾啾啾| 免费啪啪av| 蜜桃视频一区二区三区 | 亚洲国产美女久久久久| 蜜臀精品1区2区| 国产强奸乱伦第1页| 国产精品91一样| 99少妇| 日韩久久三区| 国产精品久久久久久亚洲色欲| 亚洲国产一区二区三区在线 | 欧美不卡二区| 天美AV片| 91亚洲人| 97色色网| 欧美综合综合| 欧美 亚洲 偷拍自拍| 伦在线97| 高清无码在线播放网站| 久久久久久久78| 国产捆绑一区| 天天综合AV| 亚洲综合20p| 色五月综合| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 思思性爱| 四虎影视永久在线观看精品免费网站 | 偷拍综合亚洲| 在线一道啪| 330dv亚洲成年视频网| 久久中文字幕一区不卡| 超碰99热中文字幕| 国内精品久久人妻性色av| 日本裸体久久色噜噜| 国产一国产一级毛片古装| 超碰79人人乐| 天天干人人看综合| 日本天堂网| 国产91亚洲精品一区二区三区| 精品久久久av| 十八禁视频一区二区| 亚洲AV资源| 伊人专区一区二区三区| 熟女欧美日韩综合婷婷| 日本日逼高清| 偷拍五区| 中文字幕免费看大片| 人妖欧美一区二区| 五月婷婷色色| 伊人加勒比| 综合影视国产无码| 老鸭窝在线视频播放| 中文激情网| 久久精品店| 人妻出轨一区二区三区| 国产最新小视频在线播放下载| 熟女AV一区| 国产精品自拍欧美在线| 超碰人人干天天射| 大香蕉97久久| 日韩免费福利在线观看| 99热日| 制服乱伦| 又粗又长又大国产不卡| 中文字幕十五区| 乱伦av.com| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 欧美超碰97| 美女淫穴| 欧美麻豆成人同性GⅤ在线| 欧美日韩欧美| 欧美色图中文字幕| 国产精品制服丝袜清纯唯美| 亚洲精品国产拍免费91在线| 亚洲情色婷婷五月天| 成人av在线播放| 俺也射| 少妇高潮99p| 91香蕉视频在线观看免费| 色踪合AV| 国产精品青青草| 日韩综合无码色欲vv| 欧美亚洲20p| 无码精品啪啪啪一区二区三区三州| 麻豆视频一区二区| 999亚洲国产视频| 中文字幕黑人大片| 亚精品无码毛片一区二区三区| 丝袜AV一区二区三区| 草草网站影院白丝内射| 天天综合网国产| 欧洲精品欧洲精品| 九九精品美女高溯喷水| 少妇69中文| 东北毛片| 成人五月香网在线| 777AV电影| 精品免费囯产一区二区三区| 97久久精品国产| 九九色婷婷| 亚洲nv男人的天堂网| 久久久久久久久久久久欧美日| 国产精品探花色| 日韩人妻精品久久久久| 久久久久国色αv免费观看| 成人性交免费视屏| 久久久人妻| 精品少妇一区二区| 欧美白嫩在线放| 色色色热| 久久一级无码精品毛片6| 中日韩免费看男女操逼大全| 激情文学亚洲| 色婷婷久久综合超碰| 久久久九97| 热99这里只有精品| 国模私拍一区二区三区神乳| 亚洲久久久| 91在线国产后入风骚翘臀美女素人| 天堂资源欧美| 91美女中出| 多乙久久久久久| 中文字幕日韩专区精品系列| 97资源久久| 天天日骚逼熟女| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 五月丁香六月婷| 成人性爱高清视频免费看| 日欧操屄| 91精品国产乱码| 高潮毛片无遮挡高清免费| 日韩小电影| 久久精品综合| 亚洲熟女一区| 国产美女精品| 免费农村成人少妇人妻Aa一区二区视频| 91GD.COM| 自拍偷拍2025在线观看| 国产绿奴视频在线观看| 在线毛片片免费观看| 天天综合网日韩| 久久久夜夜嗨免费视频| 欧美日韩另类在线播放| 20cm女自慰在线日韩欧美| 九九九九精| 欧美色91| 丝袜美腿91| 91九色丰满高潮| 综合激情一一91| 老女人老91妇女老热女| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 亚洲欧美成人在线| 一区三区啪啪| 久久久不卡区一区二区三区久久久| 黄页视频网站野外| 强奸乱伦AV网站| 黄色片,com| 午夜乱轮操逼视频免费看| 91色人妻| 日韩在线欧美精品一区二区| 国产美女在线精品免费看| 亚洲本色精品一区二区久久| 国产后入| J?P?NESEHD熟女熟妇伦| 91视频精品| 日韩欧美亚欧在线视频| 天堂69亚洲精品中文字| 91精品亚洲内射孕妇| 久久久久久亚洲Av无码| 眼镜人妻101.com| 亚洲欧洲综合av在线| 黄色av网站在线播放| 午夜激情成人在线观看| 色官网色综合| 国人欧美精品一区二区| 免费啪啪啪网站18岁| 一区二区三区机械有限公司| 在线另类| 99热色这里只有精品| 色狠狠综合噜一二三区| 亚洲欧洲无码97久久精品| 亚洲揄拍网| 激情人妻另类| 婷婷10月天青娱乐| 免费视频一二三区| 亚洲人成网站7777| 中文字幕奈奈美被公侵犯| 亚洲欧综合另类无码一区| 国产伦乱91| 亚洲操操操| 亚州成人a∨| 日本久久综合| 欧美图片色五月天| 中文字幕后石码四区五区| 欧美18老人禁| 黄片免费久久久久久久| 激情五月天色色网| 午夜激情床戏激情| 亚洲欧美setu| 亚洲欧美激情小说| 97操| 亚洲一级性爱视频免费看| A片三级无码| 男人的天堂2018东京热啪啪啪| 欧美一二三区四五区| 亚洲综合一| 欧色网址| 日本欧美一区二区三区视频麻豆| 男人下部插入女人下部| 做爱A级亚欧| 依人大香蕉| 97这里都是精品| 神马九九九| 亚洲另类春色| 十八禁的黄污污免费网站| 9久久精品| 色爱欲亚洲| 久久久久久人| 国产真乱mangent| 日韩午夜啪啪视频| 91在线限制级| 熟妇女伦乱视频视频| 热99这里有精品综合久久| 亚洲AV秘无码一区..| 人妻熟女av国产网站| 观看免费区二区三区二| 国产免费一区| 一二三区操逼国产91| 丝袜美腿制服人妻二区中文字幕| 欧美性猛交美女自慰91| 97国产伦理| 大香蕉伊人网| 国产树林里野战在线看| 欧美 亚洲 大香| 免费男人的天堂| 午夜亚洲WWW湿好大| 亚洲天堂 视频你懂的| 自拍欧美| 欧美加勒比| 午夜无码精品免费看性色| 九九热九九热| 91狠狠狠| 免费一级a毛片久久久久久鸭绿欲| 五月婷婷综合网| 亚洲综合69| 操逼网站网站| www.99热| 国产精品动态一区二区三区四四| 2023天天操夜夜操| www.婷婷五月天| 骚人妻少妇视频| 亚洲欧洲av影音| 九九色色| 亚洲 中文 欧美 日韩 在线| 91香蕉视频在线观看免费| 大香蕉碰碰| 干b网| 精品人妻av在线播放| 男人的天堂成人的社区| 三级色影综合网| 在线观看精品国产免费| 2017大香蕉国产精品久久| 97超碰超碰| 久久久国产三级黄色片| 91国产在线精品| 亚洲av综合伊人久久| 激情综合97| 五月天精品| 熟女色综合久久| 91/欧美| 免费av高清无码| 国产精品久久发布| 亚洲图片另类| 东京热亚洲一区二区| 欧美,日韩,中文,另类| 乱伦图av| 美女干逼2| 日韩无码三级影院| 欧美午夜色妇色鬼| 国产精品白领在线观看| 天天影视网综合少妇| 亚洲欧美清纯| 婷婷五月成人| 天堂网亚洲区手机版| 日本亚洲熟女视频| 国内成人圈中文字幕无码视频| 视频黄色国产一级| 久久熟女久| 国产成年免费大片黄在线观看| 白丝少妇一区二区| 免费?级毛片无码?∨蜜芽试看| 成人精品视频一区二区| 国产粉嫩蜜臀av一区二区三区| 素人播放一区| 久久久97| 精品无码一区二区| 高清无码久操视频| 99九九久久| 啪啪啪东京| 久久久久久久久久久久久久久久9 亚洲成人妻日韩在线 | 丁香激情网| 综合色好色| 91狠| 久久性爱视频免费看| 综精品久久久aaaa| 欧美一区二区一级岛国大片| 国产肏屁眼视频| 亚洲国产ⅴ高清在线观看| 一本一首道人妻少妇免费久久| 国产成年女人免费视频播放a| 一区二区视频你懂的| 精品久久久久av影院| 夜夜夜夜爽| 99精品久久久久久久婷婷蜜桃| 久久日韩肥臀| 欧美.亚洲.另类.丝袜.制服.诱惑| 高潮精品| 精品亚州18| 欧美日韩国产高清在线一二三区 | 97最新在线播放视频| 可乐操亚洲蜜911| 99精品在线观看| 无遮挡男女激烈动态图| 91黑丝美女| 综合欧美日韩在线观看| 九九热精品视频六| 久操黄色视频| 综合av社区| 欧美色日| 九九热精品| 午夜精品久久一区二区| 人妻熟女一区二区三区在线| 日韩一级成人毛片免费观看| 91欧| 色爱欲亚洲| aaaa少妇高潮大片| 91宗合网| 欧美白嫩在线放| 亚洲最大网站av| 亚洲国产综合图区中文字幕 | 嗯嗯啊在线视频| 秋霞一级鲁丝片A片| 久久精品人妻一区二区| 亚洲色五月| 性爱网站一区二区| 破处bbq| 1区2区3区在线视频| 色欲无码人妻日韩欧美精品| 日韩射图| 男人天堂久久日韩| 综合欧美日韩在线观看| 亚洲影视综合| 成人久久精品| 99热官网| 370p日韩欧美亚洲精品| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 中文字幕精品区先锋资源| 精品国产乱码久久久久久蜜臀| 欧洲亚洲人妻无码中字久久三区四区| 亚欧国产无码精品在线| 天天日天天干天天操| 中文字幕诱惑制服人妻丝袜美丝袜美| 黑丝少妇在线观看| 无码天天操| 超清中文乱码字幕| 操淫穴亚洲五月丁香| 91亚洲黑人| www国产天美久久久| 97在线免费观看视频| 国产后入清纯| 蜜桃臀 后入 一区 二区 三区 在线| 久久精品国产亚洲AV无码电影| 欧美极品| 青青久久久| 精品十三区| 亚洲色图大香| 日韩人成网站在线播放| 欧美不卡五十路| 哈哈操 大香蕉| 无码男人天堂| 亚洲免费精品一区| www.色操逼| 日韩高清黄片| 大香蕉综合网| 色婷婷A V一二三四区麻豆综合| 欧中日成人免费影视| 五月综合色| 色嗨嗨在线| 综合伊人网12色| 欧美92| 亚洲熟女少妇免费视频| 国产精品色哟哟| 最新AVzaixian| 丁香五月激情综合国产| 无码精品久久久天天影视| 国产一区在线播放| 暴力av在线| 91精品免费| 天天舔九色婷婷| 操我啊啊啊啊啊| 日韩精品99999| 六月丁香久久| 久久久麻豆精品| 亚洲色图欧美色图日韩色图| 亚洲最新Av| 欧洲精品一级二级精品综合视频综合 | 麻豆久久久一区二区| av天堂5| 亚洲中文国际强奸字幕| 内射老妇BBWX0C0CK| 三上悠亚在线毛片91| 欧美成97爱| 噜噜瑟| 自拍第一页| 91n免费处女| 神马久久啊啊| 99RE在线视频精品,这里只有精品| 在线天堂999| 嗯啊啊啊轻点视频 | 亚洲色图20p| 九九热免费国产视频婷婷伊人五月 | 国产久久一区二区| 老师充足的奶水小说| 97 亚洲 日韩 欧美 在线| 男人的天堂2019AV| 丁香五月激情五月| 国产亚洲99久久精品| 中日高清无码操逼视频| 最新日韩黄片| 日本在线播放不卡一区| 黄色性爱网网| 精品在线观看视频在线| 亚洲黄色a级片| 啪啪啪精品视频| 粉嫩av在线一区二区| 中国女人内射6XXXXX| 国产精品极品美女视频| 成人七区| Blackedraw视频一区二区| 亚洲精美粉嫩嫩泬在线观看 | 欧美一区二区三区成人性生活| 99热这里只有是精品10| 欧美日韩青操| 欧美综合 站| 亚洲天堂资源| 久草成人影片| 美女t无毒不卡不卡| 国产熟女一区二区| 好吊色综合| 永久免费观看的毛片的网站| 无遮挡男女激烈动态图| 国语对白露脸XXXXXX| 豆花视频操逼网址| 国产女人和拘做爰视频 | 美国精品国产精品| 脫衣舞一区二区三区| 乱伦日本色图AⅤ| 新版天堂中文资源8在线| 亚洲欧美经典一区二区| 五月丁香大香蕉| 天天透伊人| 情色av电影| 我中文字幕6区| 尤物视频偷拍免费| 97综合激情| 亚洲国产精品久久AV| 日本一区二区三区午夜观看| 又大又长又粗又爽又黄| 久久99午夜精品一区人妻| 丁香五月自拍| 久久人妻97久久久久久久| 熟女天天干| 亚洲男人天堂视频| 国产熟女无套内射| 久久国产熟女影院| 亚洲高清无码在线桃色| 1024日韩| 天天综合影院91| 制服丝袜第二页| 亚洲风情在线观看| 成人五级久久| 日本性爱少妇| 久久久久久亚洲精品不卡人乳| 日少妇亚洲版| 亚洲欧美日韩中文久久自慰| 夜夜性| 亚洲国产成人精品999| 国产极品美女高潮无套在线观看| 色情五月丁香| 男人天堂站| 97天天在线| 啊啊啊操死我| 亚洲制服aⅴ中文字幕| 丁香五月色情| 青青草啪啪网| 精品十八在线观看| 91av熟女人妻| 免费a在线播放v| 江都AV在线| 后入福利视频| 91熟女视频| 国产精品久久久久久久毛片1| 一区二区 韩日AV| 美女毛片999| 欧美日韩欧美| 亚洲阿v天堂无码z2018| 丁香激情网| 亚州熟妇精品| 国产91 丝袜在线播放00-百度| 在线A日本| 禁片 高清 在线观看视频网站| 日韩不卡码| 色图综合| 欧美另类综合久久| 欧美成人9797| 99最新日韩偷拍视频| 亚洲成人激情小说视频| 8050无码八戒| 一区二区 日韩 欧美 国产 传媒| 亚洲乱熟女一区二区| 国产精品午夜福利亚洲综合网| 欧美刺激色黄片免费看| 狠狠搞 亚洲91| 精品美女少妇一区二区| 国产一进一出视频网站| 在线黄页看毛片| 麻豆a'v电影| 国产福利电影| 天天摸,夜夜摸| 蜜臀av中文字幕| 中国操逼无码| 亚洲宅男天堂| 欧美九一精品久久久熟妇| 在线观看亚洲成人精品| 久久大香蕉| 欧美骚少妇| 欧美一区二区三区四区综合| 99热| 天天性射网| 人人艹亚洲| 欧美日本久久精品一区| 色臀AV| a在线视频免费观看| 加勒比海成人视频网| 偷拍偷窥与盗摄视频专区| 97人人草| 大干人妻| 国产高清在线观看欧美| 九九久久99| 色激情综合网站| 国产毛片精品一区二区色欲黄A片| 欧美第一页| 国产性久久久| 综合网久久| 欧美性爽xyxOOOO| 嗯嗯啊在线视频| 亚洲区 欧美区| 99精品久久久久久久婷婷| 女生自91网站| 三级日本一区二区三区| 国产熟女少妇一区| 校园春色亚洲色图| 中文字幕性感少妇av| 蜜臀av中文字幕| 国产精品久久久久久无码红治院| 亚洲丝袜色图| 久久综合九色综合欧洲98| 亚洲一区深夜| 一本色道综合久久欧美日韩精品| 色欲天天综合网| 99精品无码| 日韩性爱播放| 一区二区播放| 在线黄色污污网站| 亚洲人妻中文在线视频| 蜜桃精品一区二区三区ww| 亚洲成人福利电影免费| 嗯嗯啊好大| 黄色大片免费在线| 激情文学 国产一二三aV| 偷拍 欧美 日韩| 九九精品美女高溯喷水| 亚洲国产综合图区中文字幕| 又黄又爽在线观看视频| 国产精品乱码久久| 蜜臀少妇一区二区| 99999国产精品| 情色AV电影| 97超碰护士| 欧美最婬乱婬爆婬性视频| 中文字幕精品探花视频| 人妻精品综合中文字幕在线| 一级一性爱免费视频| 欧洲免费一区二| 日韩欧美操逼xxx| 极品后入免费视频| www.久久最新地址| 本道在线| 免费A V在线| 亚洲se91| 九九九九九九亚洲| 乱伦一二三区| 极品久久久久久久久久久久久久| www.91逼逼.com| 99精品在线| 亚洲精品99| 女人精品内射国产99| 黄色高清久久无码依人| 亚洲精品毛片在线观看| 色拍偷亚洲| 亚洲欧美中文日韩视频中国语| 有码专区最新中文字幕有码| 午夜精品久久久久久久男人的天堂 | 香一区二区三区| 欧美的性爱网站免费| 日韩一级二级三级免费看完整版国语版| 欧美日韩国产高清在线一二三区 | 超碰碰碰碰| 欧美第一页| 久久一二三四五六七八九区区| 美女一区二区国产精品| 天天综合~91| 无码91| 高清无码一区二区三区| 久久久精|