久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码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
返回資訊列表
久久久久久久久久久六六| 久久久久密臀视频| 欧美亚综合色图| 99视频内射三四| 亚码激情| 伊人少妇久久久| 91美| 很很操在线| 激情久久av一区av二区av| 亚洲人妖网| 国产精品欧美激在线| 蜜桃臀久久| 97免费视频在线观看视频| 青青草一区二区三区四| 日韩在线观看三级电影| 国产一级αv免费看片| 97中文天堂| 九九超碰综合网| 亚洲美女精品九九视频| 干干干天天| 一区二区 韩日AV| 91爱看| 在线不欧美| 欧美偷拍| 乱人伦 国语对白:视频直接看| 免费观看啪视频| JIZZJIZZ国产精品喷水| 高跟伊人julia ann| 五月天亚洲色图| 婷婷丁香久久| 青娱乐 青青青操 日逼| 日韩午夜精品一区二区三区电影| 97久久久精品| 性久久| 国产欧美后入| 日本高清有码网址视频| 久久久久免费少妇| 啊啊啊啊啊好多水| 夜夜操91744565| av网站在线观看了| 91嫩草在线| 男女激情黄色网址| 精品久久大胆人体| 少妇xx精品| 丁香婷婷激情五月天无毒不卡| 国产精品乱码久久久久| 婷婷色导航| 妇女一区二区三区| 天天弄欧美| 欧美大的香蕉有线电视视频| 国产成人精品亚洲日本| 亚洲欧美97| 精品人人插人人操| 国产精品96久久久久久| 920日本午夜免费| 精品无码一区二区三区| 人妻大香蕉| 精品少妇人妻av久久免费| 啊嗯嗯啊好大好爽| 99ri视频| 96久久久| 97超碰免费人人性爱| 亚洲砖码砖专无区2023| 久久国产精品m码| 久久久亚洲Av| 夜夜操夜夜高潮夜夜爽国产精品区| 国产又大又硬又长又粗| 人妻无一区二区三区| 青青草视频久久久久| 久久91精品国产9丨久久分亭| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 人妻熟女一区二区| 欧美日韩国产高清在线一二三区 | 乱人乱色一区二区三区免费| 五月婷婷五月天| 俺去啦俺来也久久综合| 日本一区二区不卡精品| 欧美AB在线| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 日本男人天堂| 亚欧中文字幕在线视频| 破苞ⅩXXX性无码动漫无码| 懂色aV一区二区天美传媒| 高清不卡视频| 天天综合亚在线| 国产主播福利| 久久成人东京热人妻| 99欧美| 狠狠操使劲操| 日韩中文9| 蜜臀久久99精品久久久老,,| 99精品久久久久久久婷婷| 91丝袜美女视频| 99re在线视频| 欧美少妇性乱| 偷拍欧美激情| 蜜臀av在线播放一区二区三区| 亚洲最新av无码成人精品区| 亚洲阿v天堂无码z2018| 91精品国产91久久青草| 91插B网站| jiujiujiujingpin| 自拍二页| 91色黑人少妇| 日韩乱码av| 91精品大奶人妻| 国产精品国产自产高清AV| 黄骗免费网站| 国产吹潮女在线观看| 2025亚洲男人天堂| 天天看综合网| 国产一区二区视频在线播放| 人人摸人人添人人操| 超碰97网站| 啊啊啊骚| 国产馆| 中出人妻中文字幕91在线| 另类av天堂| 久久精品视频久久久| 久久xxxx| 美女黄色91| 亚州再线| 青草香蕉网| 亚洲色欲一区二区三区| 婷婷五月天激情网| 国产精品大香蕉| 成人免费在线网站| 久草免费在线一区二区| 中国一区二区亚洲人妻| 国产操逼逼网| 91小视频| 超碰国产在线| 九九综合| 超碰人人乐97| 黑丝91视频| 超碰人人色| 久久人人爽人人爽人人片Ⅴ| 亚洲午夜免费狠狠干| 色综合久久888| 一区二区三区免费岛国片| 国内毛片婷婷六月色| av强奸乱轮| 亚洲国产欧美另类自拍| 亚洲精品aa久久伊人| 欧美黑人精品在线播放| 熟女色图在线| 97干天天| 97网址97| 人人艹亚洲| 一本一道vs波多野结衣| 婷婷久久久精品| 91站街按摩店老熟女熟女| 嫩草一区二区在线观看| 视频国产精品未满十八禁止在线观看| 色噜噜国产精品视频一区二区| 久久久久久久久国产| 91亚洲网| 欧美系列在线一区二区| 久久欲| 亚洲资源一区| 五码视频在线观看| 亚洲国产精品久久久久久久久久| 一二三啪啪专区| 天天操天天射青青草| 亚洲综合影片| 久久久专区| 国产AV人人夜夜澡人人爽麻豆| 欧美后入式| 五月天AV资源| 国产精品99精品视频网站| 日韩精品人妻一| 变态乱伦伪娘灌肠一区二区| 99精品成人免费看| 99热自拍| 后入式在线免费观看60秒| 超碰在线成人电影| 日本性爱视频一级| 欧美v亚洲v日韩v最新在线二区| 狠狠干狠狠干| 久久精品中文| 天天视频黄| 国产野战露脸在线播放| 欧美三级一级| 亚州,欧美在线| 深夜激情 | 蜜乳AV一区二区三区四| 翔田千里av一区二区三区| 久操99| 超碰97在线中文| 97视频在线播放| 天天操夜夜嗨| 99啪啪| 久久久久久久久九九久孕交| 91白嫩| 性爱乱伦视频免费| 亚洲欧美校园另类春色| 国际精品久久久| 欧美自拍偷拍综合图片| 女优免费一区二区永久| 熟女久久久| 亚洲av噜噜噜噜噜噜| 精品一啪| 日韩一级二级三级免费看完整版国语版 | 久久黄片国产一区二区| 国产无吗在线播放| 99re公开精品免费视频| 亚洲狼狼干综合1| 亚洲在线综合| 久操com| 97在线国产精品| 欧美第二页午夜| 精品国模无码| 裸体美女免费看网站青草| 人妻素股| 亚洲国产成人精品久久久国产成人一区二区三.| 美女刺激久久国产欧美| 久久九九97| 亚洲中文日韩欧美大香蕉视频| 97天天搞在线| 国产精品白领在线观看 | 久久超碰、| 高清孕妇孕交 交| 操逼视频免费日韩无码| 大香蕉琪琪日本女优不卡| 亚洲性爱乱操x| 少妇高潮99p| 91中出视频| 高清国产av无码| 欧美日韩人妻婷婷一区| 蜜桃av综合网发布| 色与欲影视天天看综合网| 日日操丁香五月天| 超碰久在线天天做| 婷婷午夜成人色中色| 99xav| 午夜精品久久99蜜桃的功能章节| 久久午夜伦| 男人的天堂99| 熟女精品一区二区三区| 丰满人妻-区二区三区免费看 | 日日夜夜干| 大鸡巴久久| 国产免费久久久久| 国内毛片四区| 婷婷久草一区二区三区| 91无遮挡| 欧美图片色综合| 免费精品国偷自产在线在线| 欧美综合色站| 日韩无码视频黄色| 久久99精品国产| 99国产在线 精品 视频| 欧美96交| 欧美网站免费| 97久久久久久久久久| 日韩另类| 性色A∨91| 久热这里| 亚洲无码电影久久久| 嗯嗯啊啊亚欧精品| 日日噜噜夜夜狠狠视频无| 口爆欧美91| 91香蕉国产尤物视频| 日本天堂网| 大肥女高潮bbwbbwhd视频| 嗯啊不要在线观看嗯啊| 美国日韩黄片| 亚洲熟久久| 国产精品熟女乱伦| 婷婷久久五月综合激情| 麻豆久久视频在线地址| 欧美资源| 1204金沙人妻懂旧版免费| 玖草在线视频| 搞中出视频在线观看| 中文字幕亚韩| 亚洲综合 欧美| 天天干天天插| 伊人超碰97| 偷窥自拍A片| 青青草公开在线免费不卡视频| 亚洲丝袜色| 精品亚洲一区在线观看| 四虎精品亚洲| 色欲人妻一区二区在线| 国产激情综合五月久久| 麻豆国产视频精品观看| 日韩精品电影| 婷婷综合激情| 无码最新| 日本一区二区不卡| 欧美熟女逼久久久久久| baisiav| 操操逼操操逼操操逼逼| yiqicaoav| 999熟女精品| 又大又长又爽| 岛国成人av在线播放网址| 亚洲人天堂| 乱子伦一区二区三区国产精品| 两性色网| 美女被啪到深处抽搐视频| 亚洲国产剧情少妇激情| 五月综合色| 国产日韩区| 久久成人网站| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 日本99热| 18禁无码永久免费无限制| 熟女久久| www.99热在线只有精品| 日本在线不卡123| 性爱网站一区二区| 丝袜美腿91| 粉嫩AV输入| 欧美日韩色图片| 亚洲AV无码国产精品久久久久| 国产在线视频午夜精华在| 伊人久大| 久久99深爱久久99精品| 欧美影音在线| 狠狠久久亚洲欧美专区| 曰韩av中文字幕专区| 久久精品国产99精品亚洲蜜...| 97超碰超| 国产97在线 | 亚洲| 激情婷婷丁香网| 十八禁黄色成人网站观看| 欧美激情综合色综合啪啪五月| 欧亚性爱啪啪| 凹凸久久人人| 国产女人操逼视频| 99精品欧美一区二区三区桃色| 欧美色网| 综合网亚洲| 成人小电影网站tex| 97国产精品久久久久| 青青草白白色| 少妇极品熟妇人妻无码| 欧美天天综| 中文字暮97| 久久人妻视频| 91超级碰| 国产97视频免费观看| 日韩有码专区| 久久久久久久9| 综合色欧美| 美女t无毒不卡不卡| 久久久精品一区二区| 久久久久久久六六| 超碰98综合网| 久久久精品一区二区| 四虎国产成人精品免费一女五男| 免费农村成人少妇人妻Aa一区二区视频 | 九九九国产| 99精品久久久久久| 超碰97.com| 蜜臀va69| 清纯唯美激情| 欧美人体性爱互联网第一页婷婷日本| 爱逼综合| 99re久久| 欧美裸体美女日麻屄| 男人天堂网址| 国产中文字幕在线点播| 思思热在线cao| 高清无码一区二区三区| 午夜视频久久久久一区| 手机在线视频国内精品| 中文字幕奈奈美被公侵犯| 狼狼色丁香久久婷婷综合五月| 国产亚洲日韩欧| 亚洲精品国产无码高清| 国模私拍一区二区三区神乳| 91爆操视频| 日韩中文字幕精品一区在线| 久草免费福利在线播放| 中文字幕在线高清男人的天堂 | 人人妻人人操人人乐| 97九色人妻| caopeng97| 亚91亚洲网| 亚洲色图欧美另类在线| 天天影视激情欧美| 国产精品久久久久久9999| 久久久久久久久9| 后入式免费视频| 亚洲欧美日韩制服另类| 夜色AV无码手机在线影院| 亚洲最新中文字幕免费| 国产精品大香蕉| 色性荡荡荡荡视频| 国产精品久久久久久久久久久久久久久| 97干综合网| 日韩大香蕉AV影片| 七月丁香婷婷| a级成人毛片免费视频高清| 五月丁香啪| 精品美女在线视频| AV在线播放网址| 天美传媒AV在线播放| 久久精品国内Av熟女高清| 噜噜噜在线视频| 久久婷婷亚洲| 熟妇熟女一区二三区| 天天影视之亚洲综合网| 日韩精品午夜操呦呦不卡影院| 国产高清亚洲日韩一区| 蜜桃无码AV一区二区| 亚洲丁香花色| 中文字幕在线2| 国产精品扒开腿做爽爽爽视频| 久久精品国产亚洲AV高清演员表| 色哟哟的毛片| 后入式福利| 秋霞一区二区三区四区五区六区七区| 亚洲影视第一页| 超碰97 线线 在现| 久久久久久久国产a∨| 小泽玛利亚一二三| 欧美色图人妻| 测评在线观看AV| 自慰白浆在线观看| 欧美曰韩国产精品| 婷婷综合伊人一区| 国产伦精品一区二区三区在线观| 东京热不卡视频| 狠狠婷婷亚洲中文综合久久| 思思热免费在线视频| 亚洲 日韩 欧美 国产综合体| 亚热日本熟女| 啪啪啪综合| 国产亚洲禁久一区二区| 久久水蜜臀亚洲AV无码精品| 美女啊啊啊啊啊啊| 手机在线观看不卡无码av| 91人妻视频| 国产 日韩,欧美 自拍| 无码少妇精品一区二区60岁老人| 日本99一区二区| 国产真实子伦对白| 久久久久久亚洲精品不卡人乳| 天天色踪合| 免费一级黄色录像影片| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 后入式五六区| 免费又黄又裸乳的视频| 老师充足的奶水小说| 亚洲欧美另类图片| 亚洲欧美大| 操一对老熟妇爽上天视频| 日韩性爱免费视频在线网站| 嗯嗯啊啊视频一区二区三区| 日韩免费高清大片在线| 一区二区三区网站日日骚| 国产精品96久久久久久| 天天爽夜夜操| 丰满人妻一区二区中文| 操逼啊啊啊91| 久久久久久久久久黄色网| 3PAV乱伦视频| 欧美美女在线高潮999| 欧美同性恋 的搜索结果 - 91n| 操逼www.| 久久精品无码不卡| 丁香色色网| 密臀在线一区尤物| 色墦五月丁香| 色噜噜国产精品视频一区二区| 丰满的三级少妇欧美久久久| 毛片麻豆91糖心精品毛情片| 午夜寂寞欧美| 新怡红院| 国产精品久久久久久久久AV大片| 情色五月天就去干| 免费人成?大片在线播放| 超碰这里只有精品| 巨爆乳一区二区爆乳区| 成人精品欧洲亚洲| 2020中文在线一区二区三区| 精品国产乱码久久久兰草影视| 亚洲性爱免费电影| 国产精品97超碰| 亚洲一区中文字幕一区| 男人精品区| 三级片大波波| 欧美性爱91| 亚洲综合69| 蜜桃无码AV一区二区| 高清无码91| 综合五月婷婷| 国产1024在线播放| 超碰 av 女人天堂| 国产69精品久久久久99尤物| 9九九国产| 九九在线视频| 噜噜噜在线视频| 在线 欧美 亚洲| 红杏大香蕉| 国产无码三级视频在线观看| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 久草电影网| 亚洲熟妇自偷自拍另欧美| 久久久久久九九九九| 99999精品成人| 尤物网址| 欧美精品激情| 欧美激情久| 亚洲国产ⅴ高清在线观看| 97欧美色| 亚洲综合在线高清| 去干网最新版| 91 欧美| 97碰碰日本乱偷人妻中文的| 三级三级三级日本99| 中文字幕精品免费一区二区| 国产精品一区在线播放| 欧美黄色图片| 欧美三级中文字幕hd| av网站免费看| 情色五月天就去干| 91色噜噜狠狠| www99热| 欧美一区二区福利在线| 少妇天堂| 色综合久久夜色精品国产天堂| 欧美色婷婷| 日韩欧美午夜视频在线| 美女黄页网站| 久久黄黄| 欧美黄片视频在线观看免费 | 久久婷婷亚洲| 伊人久久综合精品欧美| 84YTCOM性无码| 婷婷国产精品一区二区| 97爱b| 天天综合网久久ww| 五月丁香色综合| 乱伦av麻豆| 97精品人妻一二三四| 97中文超碰| **一级毛片国产| 欧美五十路熟| 97这里只有精品| 天天性射网| 国产亚洲色婷婷99精品91| 91色碰| 五月丁香激情综合| 日本激情免费大片| 国产精品久久久久久久电影渣男| 91精品老女人| 91女日逼| 成人青青草原伊人| 97天天插| 国产成人精品一区| 九九自拍伦理| 亚洲欧洲色情高清| 97 超碰 人人做 人人爱| 色婷婷五月天| 成人av免费观看| 中国乱伦一区二区| 一本精品日本在线视频精品 | 男同专区一区二区三区在线| 97超碰免费人人性爱| 真实高潮91| 精品久久久中文字幕不| 97WW精品| 精品视频久久久久九九九九9999| 激情五月婷婷综合| 日本综合久久| 国产亚洲国产超碰| 91色色色| 99久在线精品99re8| 中文字幕精品资源在线| 丰满高潮18xxxx| 日本免费专区| 国产女人操逼视频| 免费看日产一区二区三区| 亚洲αv一区二区三区| 亚洲色 国产 欧美 日韩| 亚洲一区在线观看欧洲| 亚洲一区在线观看欧洲 | 激情六月婷婷| 少妇无码太爽| 91偷拍欧美亚洲| 老女人碰碰在线碰碰视频| 青娱乐手机日韩在线视频| 搞中出视频在线观看| 欧美大战久久久伊人| 91久久久老司机| 欧洲一区二区三区免费| 日本九九久久99| 久久精品电影| 久久精品电影| 国产又粗又长的视频| 中文字幕欧美精品亚洲日韩蜜臀| 91亚洲网站| 啊啊啊啊啊在线| 国产主播福利| 人人人人插| 美女午夜福利免费视频| 超碰AV在线| 920日本午夜免费| 国产久久久9999| 久久久不卡区一区二区三区久久久| 久神马| 我爱操| 亚洲日韩电影| 熟妇xxxxx性春色| 97摸视频| 天美传媒国产原创中文字幕亚洲欧美另类| 国产极品久久久| 99re在线视频| 国产精品精品系列在线观看| 十八岁啪啪视频免费看| 日韩成人电影AV| 精品国产污一区二区三区| 二三四区精品| 亚洲天堂男人天堂网| 亚洲日韩视频二区| 色狠狠色| 性性欧美| 青青草久草| 无码天天操| 国产免费一区二区三区最新不卡| 久久久久久久久久久久黄色| 自拍亚洲综合| 97超碰中文在线| 333kkkk·亚洲com久久| 日韩97超碰中文字幕| 亚洲激情色片| 欧美翘臀视频网站一区二区三区| 久久久久久人妻一区精品色欧美| 色五月亚洲| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 亚洲精品丝袜| 久久精品国产97欧美精品亚洲 | ai欧美亚洲小说| 色97干| 久久99人妖视频国产| 欧美综合97www| 天堂av最新电影网| A 在线网址| 丰满人妻-区二区三区免费| 97超碰人操| 久久久久久九九九| 精品久久久亚洲AV成人网站| 亚洲揄拍网| 91亚洲色图| 激情AV| 欧美日韩人妻婷婷一区| 亚洲乱色熟女一区| 欧亚综合一卡二卡中文字幕| 亚洲区限制级 99| 91成人高清在线观看| 欧美综合站| 黑白配性爱AV成| 丰满人妻一区二区三区四区| 久九九九九九九热| 国产免费内射视频| 日韩av影片在线观看| 台湾大香蕉99热| 欧美三级免费伊人| 激情五月婷| 国产精品不卡少妇白| 韩国一级做A片免费的| 日韩精品人妻| 99re8免费高清在线| 三级精品三级在线观看| 亚洲天堂男人在线| 亚洲欧美国产va在线播放频| 亚洲九九视频在线观看| 91人妻超碰| 亚洲国产精品9999在线观看| 男人的天堂亚洲| 亚洲一区二区中文字幕| 日韩乱伦视频| 内射黑丝袜| 粉嫩粉嫩一区性色AV片| 嗯嗯啊啊好大好爽| 不卡一区二区日本视频| 伊人久久亚洲中文字幕不卡| 免费观看性欧美一级| 免费看污网站| 欧美精品二区视频在线| 欧美日韩资源在线| 999久久久免费精品国产牛牛| 亚洲丝袜色| 91综合网在线| 精品精品精品| 天天干天天操天天操夜夜操天天操| 五月丁香亭亭| 日韩一级二级三级免费看完整版 | 97精品熟女少妇一区| 手机av亚洲丝袜美腿日韩第一页二页| 亚洲欧美色图片| 久久久蜜桃一区二区三区| 老熟妇91| 久操视频免费在线观看| 青青青国产手线观看视频2| 日本91白丝| 欧美色图片| 精品一区96| 久久透逼视频| 97久久天天综合色天天综合色电影| 欧美人与性动交a美精品| 日本不卡一区二区三区| 免费黄色A片| 东北女人高潮视频| 青娱乐导航AV| 亚洲精品成人动漫在线| 欧洲精品欧洲精品| 亚洲欧美经典一区二区 | 亚洲色系另类精品国产| 中文字幕精品乱码| 在线观看中文av字幕| 日韩射图| 国产超碰在线一区| 国产尤物AV尤物在线观看不卡| 人妻大香蕉| 久操大香蕉手机视频在线看| 天堂v无码免费视频| 一区二区三区蜜桃成人撸久久东京热| AV一区观看| 国产三级中文字幕粉嫩| 久久午夜伦| 淫淫综合网| 欧美综合第一| 狠狠爱综合| 国产精品久久久| 欧美 日韩 婷婷 五月| 中文字幕av乱伦| 蜜臀久久99精品久久久久久成人小说 | 人人摸人人干人人拍97| 日韩精品人妻一区二区| 欧美少妇第一页| 日韩一级成人毛片免费观看| www.男人的天堂| 天堂麻豆天美| 桃花色涩综合影院| a片久久久久久久久久久久 | 亚洲超碰综合网| 性吧在线视频| 377p欧洲日本亚洲大胆| 久操国产在线| 秋霞午夜视频一区二区| 色99视频| 国产av强奸美女| 欧美天天综合网| 亚洲凸凹超碰成人| 超碰97爽| 99久在线精品99re8| 亚洲 中文字幕 精品| 在线天堂资源亚洲| 精品人妻一区二区三区夜夜| 成人看片网站| 久久无码成人| 黑人与人妻| 蜜臀无码一区二区| 97精品中文字幕| 91中文字幕在线观看| 偷拍亚洲情色| 色哟哟精品1精品2| 第二页中文字幕| 亚洲一区二区中文字幕| 久久久无码视频| 久久久久久九九九九九九| 欧美人妻二区三区| 激情久久久| 日韩人妻 中文字幕| 乱伦熟妇一区二区| 最新AV在线| 91 国产丝袜在线播放-百度| 亚洲一二三精品久久网| 五月婷在线| 久久国产性爱| a片 xxxx受爽视频| 在线视频资源| 极品少妇久久久久| 97热视频在线观看| 性吧在线视频| 九九色热| 一区二区三区欧美激情| 日韩中文字幕人妻视频| 亚洲天堂在线怕怕视频| 国产精品亚洲高清在线| 91女人的网站| 久久噜| 午夜精品久久99蜜桃的功能章节| 日本一本一区二区三区四区五区欧美日韩中文字幕 | AV乱伦专区| 清纯唯美亚洲综合| 人妻第一页| 精品中文日韩字幕视频| 91欧美另类| 歐美性天天| 欧美嫩性色| 花野真衣| 美女诱惑1区2区| 大鸡吧尹人在线| 久热色情精品| 粉嫩国产精品久久粉嫩| 精品国产自在在线99| 久久色人体| 天天流夜夜操| 美女刺激久久国产欧美| 人妻激情偷乱视频一区二区三区 | www.伪伪| 岛国AB视频| 极品尤物女神在线观看| 国产AV激情无码久久无码| 秋霞免费AV| 久久草在线综合视频| 中文字幕在线观看永久| 欧美经典一区二区三区| 国产精品激情久久久久久久| 国产大学生口爆吞精合集| 狠狠色狠狠色狠狠五月| 岛国大片国产| 色哟哟511老熟女| 人人操人人摸人| 五月婷婷久久综合| 丁香婷婷大香蕉| 国产精品一二三区福利| 亚洲色图超碰在线| 欧洲免费一区二| 午夜毛片高清免费不卡| 美女让帅哥通她小鸡鸡| 一区,二区,三区视频| 国产不卡的视频| 精品一区二区三区18| 好爽视频在线观看视频| 中文字幕第9页萱萱影音先锋| 婷婷av在线中文字幕| AV不卡在线| 久久色情| 吉川爱美98堂在线| 欧美天天综合站| 中文字幕十五区| 天天性射网| 丝袜足交视频| 激情综合 婷婷五月 红杏| 欧美97| 无码一区二区精品视频久久久春药 | 欧美亚洲另类在线蜜桃| 综合久| 欧美日日夜夜| 国产后入内射| 欧美双插| 三级激情网站| 9久久精品| 粉嫩少妇自慰在线| 久久中文字幕人妻熟av女蜜柚| 91w欧美| 综合五月婷婷亚洲一区| 91啪啪视频| 九九九九九九成人| 97精品一区| 亚州熟女乱伦| 牛黄色久午久| 久久婷婷五月天| 综合97亚洲| 四虎影视欧美| 日日噜噜夜夜狠狠视频无| 国产精品老师| 秋霞男人网| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 极品销魂美女一区二区 | 亚洲精品免费中文字幕| 成人黑料社久久| 麻豆久久久久久久久丝袜 | 色婷婷成人| 97色色国产视频| 97操B| 免费一级性爱久久| 日韩欧美经典在线观看| 欧洲无码一区二区| 国产熟女高潮一区二区三区| 亚洲伊人久久综合97| 日本国产欧美高清在线| 一区黄二区黄| 加勒比色99999| 一区不卡在线观看av| 中文字幕五区| 久久激情四射婷婷丁香五月天| 黑人精品一区二区在线播放| 日本一级黄色电影| 五十路二区在线| 大但人体久久久久| 日韩性爱免费观看视频| 中文字幕一区av| 人妻无码一区二区三区久久99| 成人免费视瓶| 国产伦精品一区二区三区视频女| 蜜臀av中文字幕| 国产日韩精品suv| 婷婷丁香五月综合| 狠狠图片青青草| 蜜臀久久99精品久久久久久-DVD原版全| 亚洲精品一区二区三区在线播放| 97在线国产精品| 天天天干977| 久久高清欧美国产| 偷拍片久久| 久久无码一区二区二三区性色 | 亚洲黄色影视| 岛国不卡超碰护士AV在线播放| 强奸乱伦AV一天堂网| 黑操B| 91热| 精品-91人妻子系列| 色偷综合| 激情综合二| 麻豆国产成人精品| 国产精品动态一区二区三区四四| 中文字幕一区二区三区蜜臀| 啊v在线观看视频| 九九成人视频| 91日韩网站| 入口操逼网站| 久久视频,这里只有精品| 无码天天操| 国产精品suv一区| 成人av福利在线观看| 日本免费不卡二区| 日本羞羞的视频在线播放| 欧美少妇大量自拍视频在线观看| 国产免费内射视频| 强奸乱伦大香蕉网| 91伊人久久在线| 日韩一级成人毛片免费观看| 中文一区在线日| 国产免a费看黄片在线| 91爰爱欧美| 26uuu偷拍亚洲欧洲综合| 九九热五区| 国内精品a| 青青草色插素人| 久久男人精品| 情色五月天网| 亚洲成a人在线观看久| 九九亚洲色在线观看| 人人操人人干网页| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 超碰吊日色| 亚洲男人的天堂AV| 成人性爱高清视频免费看| 干B| 国产熟女少妇一区| 亚洲麻豆精品二区三区| 国产激情av女片自拍| 久久99干一本高清| 一区 欧美 日韩 麻豆| a级成人毛片免费视频高清| 久久免费99精品久久久久久| 天美av在线观看| 日韩无码第3页| 啊啊啊想要| 乱老熟女一区二区三区| 亚洲色久| 日韩性爱小视频在线观看 | 精品人妻一区二区三区在线视频不卡| 狠狠色噜噜狠狠狠狠2018| 91丨九色丨国产丨人妻在线 | 大香蕉国产中文自拍| 超碰91在线| 国产精品无码久久久久2025| 91天美| 东京热,男人的天堂| 97色插| 亚洲一级性爱视频免费看| AV天堂男人的天堂| 久久免费中文字幕在线观看| 歐美一級亂黃99在綫精品| 精品区9| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 青青草在线视频人人想人人上| 日本91白丝| 极品色社| 九久9热| 日韩AV片| 亚洲第一页色| 6080yy午夜理论三级一区二区三区无码| 91久久久久久久| 天天肏美女| 日韩精品高清资源在线| 强奸乱亚洲| 无遮挡猛进视频免费无限观看| 欧亚性爱啪啪| 色翁荡息又大又硬又粗又爽| 三级日韩一区二区三区| 91色插| 热热色91| 欧美综合综合| 久草新在线| 国产人妖的免费的视频| 午夜福利无毒不卡| 女人高潮抽搐喷水视频网站| 加勒比大香蕉视频在线| 91精品国久久久久久无码| 91丨精品丨国产丨丝袜| 婷婷丁香激情| 操逼逼中文字幕| 亚洲另类色图片| 熟女91网| 加勒比av官网在线| 久久精品亚洲婷婷| 成人短视频在线观看| 日韩人妻有码免费视频| 久久少妇| 夫妻AV网站| 亚洲成人网站在线观看| 超碰人妻天天干| 丁香九月婷婷| 又黄又硬又粗又长国产视频| 精品97精品97| 青青11操操操操操操操操| 日本理论在线| 精品亚洲一区在线观看| 大鸡巴久久| 色九月综合| 东京太热久久久| 91丨熟女丨丰满熟女| 午夜福利av电影在线| 中文字幕久久婷婷丁香五月天| 蜜臀一二三| 97超碰天天爱天天爱| 中文字幕av亚洲在线| 在线A日本| 看免费一级在线播放毛片| 久久9久| 99精品无码| 国产噜噜噜噜噜久久久久久久久| 91美腿丝袜在线观看| 99精品视频在线观看| 亚洲天堂 视频你懂的| 国产AV精久久| 美国精品国产精品| 亚洲天天操| 成人性生活高清视频在线播放| 99久久9| 无码男人天堂| 啊啊啊啊啊操我视频| 亚洲成av人片色午夜乱码| 国产精品视频一区二区三区八戒| 岛国免费视频在线| 人妻一区二区三区四区视频| 成人久久久| 青娱乐91| 97在线观| 久久东京热久久| 91欧美色| 躁躁躁日日躁2020| 99在线精品视频| 四虎影视国产精品| 操一区| 白 大 人妻 区 在线| 亚洲老熟妇xxx| 裸体美女免费看网站青草| 天天干美少妇一区| 亚洲男人的天堂亚洲| 激情五月天综合网| 日韩人妻精品久久久久| 久久精品小视频| 六六久久日韩不卡| 97国产超湿| 五月天春色激情网| 亚州成人a∨| 殴美日韩m| 插老姨肥穴| 内射黑人| 性色高清在线| 97久久久久久久精| 嗯啊不要啊在线| 久悠悠av| 欧美最婬乱婬爆婬性视频 | 成人五月天色网| 屁股久久久久久久久| 亚洲日韩黑丝| 麻豆精品.欧美精品.日韩精品.| 啊啊啊啊啊好多水| 超碰在线一区二区三区| 又粗又长又大国产不卡| 国产精品伦理| 精品人妻av区天天看片| 亚洲色图欧美一区二区不卡| A片A5445444| 国产精品极品美女视频| 欧美十八禁在线看| 国产91美女高潮| 久草资源在线视频官方总站日韩丝袜美腿| 91亚州欧美| 91精品免费| 偷拍新久久| 麻豆久久一区二区三区| 人人看人人插| 亚洲综合一区二区| 9久超碰| 欧美天天综合站| 外国免费性情大片| Av手机版天堂网| 色狠狠 - 百度| 极品五月天噜噜| 99热色精品| 白 大 人妻 区 在线| 九九热精品在线| 日本黄色天堂| 校园春色亚洲无码| 91美女小视频| 日小BB小视频| 免费一级视频特黄色大片| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 9色在线| 亚洲图片欧美制度| 蜜桃臀一区二区三区久久| 校园春色亚洲| 亚洲精品国产专区在线观看| 91人妻丝袜无码| 精品一区二区成人动漫| 97WW精品| 欧美天堂第二区| 老熟女91视频| 日韩Va亚洲va欧美Ⅴa久久| 婷婷九月| 国产人伦精品一区二区三区| 精品无人区麻豆乱码1区2区图片| 日本淫乱女一区二区三区视频| 91丨熟女丨丰满熟女| 99青草| 欧美色交| 久久精品福利影院| 夜夜中出国产| 人澡逼| 国产精品区在线12p| 天天做天天爽| 97国产亚洲中文在线| 久久国产精品一区二区| 亚洲欧洲综合av在线| 久久精品小视频| 2019亚洲男人天堂| 青青操网| 激情综合五月| 日本好吊色视频| 亚洲激情视频| 亚洲成A∨人影院在线欢看| 欧美一二三区四五区| 亚洲天堂另类| 久久久久久国产无码精品| 国产夜夜操| 丰满人妻-区二区三区免费看 | 亚洲欧洲第二视频在线观看色图| 加勒比综合| 国产精品久久久久中文字幕| 亚洲美女30b| 超碰超碰超碰超碰的大鸡吧操黑丝袜 | 亚洲在钱| 九九视频黄色片| 九九精品热| 东北操逼|