色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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
返回資訊列表
777超碰| 欧美天堂第二区| 中文字幕第9页萱萱影音先锋| 青青欧洲黑| 情色AV电影| 熟女五十路一区二区三| 免费AV中文网在线观看| 极品少妇久久久久| 亚洲欧洲第二视频在线观看色图| 日本在线一二 | 人人爽天天爽| 亚洲国产剧情少妇激情| 女人高潮大叫一级毛片| 思思热在线cao| 搡老女人911熟妇老熟女| 91四海无码日韩欧美| 9 7超碰在线免费观看| 九九色综合| 免费观看啪视频| 久久久久国产一区二| 日韩av电影成人在线| 欧美国产精品久久九九| 老妇女91| 亚洲精品国语在线播放| 操国产高清| 欧美日韩制服| 最近二区三区视频大全| AV有码在线| 哑洲在线| 大二网站亚洲| 日韩有码 一区二区三区| 东京热综合久久一区二区| com 首页 18岁 禁区 女优 免费 精选 同城 | 色色操| 久草免费在线一区二区| 亚洲综合中文字幕有码| 中文字幕日本久久| 激情综合网激情五月天| 人妻嗯啊啊在线播放| 天天日天天操心| 色官网在线| 国产成人无码网站在线视频| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 国产精品久久久久久高清无码免费看 | 国产亚洲精品A在线观看下载| 成 人 A V免费视频在线观看| 激情婷婷综合久久| 自拍视频一区在线观看| 欧美一级A片在线看视频性色| 97香蕉碰碰人妻国产欧美| 亚洲高清在线| 91精品婷婷国产综合久久| 熟妇一区,二区,三区。| 无码137片内射在线影院| 黄色人人| 亚洲午夜免费狠狠干| 久久麻豆一区二区| 台湾佬中文娱乐自偷自拍| 超碰 另类 欧美| 啊好爽快点-国产一区二区三区撒尿在线-成人AV | 蜜臀无码一区二区| 亚洲色系另类精品国产| 欧美特大黄一级片片免费| 国模吧 一区二区三区| 亚洲AV无码天美传媒一区| 欧美三级免费伊人| 舔人妻中文免费视频| 加勒比综合88| 亚洲精品xxx| 抽插无码高清一区| 超碰 国产熟女精品一区| 啊啊啊啊免费视频| 国产精品 久久久精品一牛| 天天躁日日躁AAAXX| 韩国女主播青草福利视频| 久久6热精品99视频| 超碰2017| 久久欧美性爱视频| 美女主播色欲91抠b在线播放| 男女香蕉一区二区| 久久性生大片免费观看性| 中文字幕一区二区在线日韩精品| 天天欧美色| 2019亚洲男人天堂| 国产精品女生av| 日韩精品区二区三区不卡| 99黄页网站| 男人天堂新在线| 欧美极品| 330Dv国产女人终合视频极品人与兽| 玖玖资源综合在线视频| 久久天天躁日日躁狠狠躁| 性欧美| 免费少妇一区二区| 97色色色综合网站| 欧美色999| 亚洲av综合色区无码一| 久久精品老司| 亚洲国产精品无码AV久久| 一级特级aaaa毛片免费观看| 亚洲Av噜噜一区二区三区妖精| 91欧美色| 日本三级韩三级99久久| 五月天婷婷社区| 日本色色的视频| 亚洲视频二区| 26uuu偷拍亚洲欧洲综合| 91人妻超碰| 91N综合网| 99久热| 国产一区二区在线看| 日本东京热加勒比久久| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | x97av| 岛国福利在线精品播放| 天天综合网91入口| 国产毛片毛片4p懂色| 色婷婷丁香五月| 春色91| 久/久精品99看9| 欧美最婬乱婬爆婬牲视频| 精品性爱一二三区| 亚洲第一页色网| 97在线精品| 四虎精品永久在线观看| 97人人射| 欧美性爱综合,免费| 按摩中文字幕| 极品欧美一区二区三区| 亚洲色性情三级| 蜜乳视频网站| 精品一二三区女同| 久久99人妖视频国产| 日本好吊色视频| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 色制服丝袜夫妻av一区| 国产亲戚伦亲在线| 丰满人妻一区二区三区免费| 欧美人妻二区三区| 久久精品国产亚洲AV无码做| 久久成人精品| 欧美亚洲丝袜美女电影| 在线免费观看日韩一区| 久久久久亚洲Av无码专区老牛影视| 国产怡红院| 国产女人极品高潮毛片| 亚洲高清色综合| 欧美 传媒 麻豆 日韩 偷拍| 亚州AV无码国产精品| 人人操人人精品影片| 亚洲激情在线| 久久久久久久久久va| 蜜臀一二三区| 欧美激情 日韩精品| 无色无码| 色yeye成人免费视频| 国产精品97视频| 青娱乐亚洲热| 久草大| 国产精品一二三区18| 涩涩久久精品| 色综合中文字幕不卡| 久久久久久久亚洲Av无码| 黄色工厂这里只有精品| 亚洲天堂人人妻| 久久婷婷伊人| 中文字幕一区日韩精| 一中国女人毛片水真多| 欧美高清16| 精品成人女人久久| 打av高清| 亚洲AV无码天美传媒一区| 国产精品自在自拍视频| 国精精品无码一二三区水多多| 久久久久国产精品久久久| 亚洲drav色图| 99啪啪| 69人妻精品一区二区绯色| 亚洲成人免费中文字幕| 91被操| 少妇蹲下露出大唇5| 欧美天堂超碰97| 97久久久久久久精| 九九精品热| 久久国内| 99久久婷婷丁香| av网站免费看| 久久久亚洲熟妇熟女| 韩国毛片一区二区三区| 97精品视频网站| 亚洲另类久操网| 欧美丰满熟妇XXXX性ppX人交| 欧美不卡在线一区二区| 大肥女高潮bbwbbwhd视频| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 超碰97人妻在线| 欧美肥臀在线| 超碰九九| 欧美日韩久久精品爱爱| 国产精品乱码久久久久久久久| 久久国产精品熟女人妻| 五十路熟女,国产欧美精品区一区二区三区| 无码人妻丰满熟妇奶水区毛片| 青青爽| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 国产精品99精品视频网站| 蜜桃av色偷偷av老熟女| 日韩精品一区二区高清| 人人看人人爰人人操| 一区二区三区免费视频入口| 中文字幕精品免费一区二区| 国产精品爱欲| 操逼啊啊啊91| 色99在线| 人妻久热在线| 亚洲熟久久| 欧美91丝袜| 四虎免费视频| 深夜视频| 国内毛片热久久思思热| 伊人久久大香线蕉无码| 秋霞一级视频在线观看免费| 99精品热| 欧美夜色| 99久久久| а√天堂资源官网在线资源| 丝袜美腿制服人妻二区中文字幕| 爽 好舒服 无码刺激久久| 丁香五月婷婷基地| 91红杏| 久久 久久国内精品亚洲| 997色在线| 一级AAA片一区二区三区| 亚欧美综合网| 日本狂喷奶水在线播放212| 3d成人精品一区二区| av凤凰久久久| 九九九九九九亚洲| 久草成人影片| 嫩草美女久久| 99成人| m欧洲一级午老| 麻豆av一区二区| 久久精品国产亚洲AV清纯| 郑州宾馆老熟女露脸啪啪| 婷婷久久五月天| 亚91亚洲网| 曰本特级特黄特色黄色A级网站高清在线免费看 | 另类老少妇| 日韩啊V| 亚洲 一区二区 自拍| 大奶啊啊好爽 | 久久鲁干| 久久九精品| 国产成人精品网站| 岛国色情视频在线观看| 色91综合网| 欧美一区二区三熟女剧情| 五十路三区在线| 国产亚洲美日韩Aⅴ中文字幕无码成人| 2018色综合天天操| 少妇人妻激情四射| .精品人妻一区二区三| 色色激情| 中文字幕在线第二页| 国产精品爆乳懂色蜜乳| 亚洲高潮少妇| 999久久久久久久久| 中文字幕日韩专区精品系列| 五月丁香| 欧美熟妇色| ?亚洲伊人伊成久久人综合网| 国产精品经典一卡久久久 | 亚洲天堂男人在线| 亚洲精品蜜桃久久久| 成人无码在线超碰网| 狠狠中文字幕| 婷婷爽人人婷婷爽视频| 九九无码视频| 日本大香蕉综合网红本杳社区| 手机在线人成免费视频| 亚洲精品蜜桃久久久| 91操人| 一区二区三区成人 | 91成人久久| 欧美1区二区三区公司| 超碰性爱97| 97免费视频在线观看| 日本福利社| 懂色Av一区二区三区| 黄色片大香蕉| 校园春色AV天堂| 天天拍天天操| 97爱| 狠狠热这里都是精品| 九九九九精品九九九九| 色婷婷在线视频精品导航| 欧美天天干| 狠狠干狠狠干| 国产成人亚洲精品无码最新在线| 玖玖综合色| 欧美日韩午夜精品一区二区三区| 日韩精品99久久久久久中文字幕| 中字幕人妻一区二区三区| 精品176精品2| 免费看日产一区二区三区| 欧美淫乱视频| 国产精品交换一区二区| 在线日韩精品一区二区三区| 午夜精品人妻二区三区| 情侣开房子拍 日韩无码 女的很漂亮| 日日夜夜摸| 蜜臀久久99精品久久久久免费观| 国产操偷| 色九久| 日少妇亚洲版| 日本性爱不卡视频| 欧美性天天| 超碰天天操| 人人透人人操| 大香蕉视频一二三区| 九九九九九九视频| www.狠狠| 久久精品中文字幕观看| 久久久久久久唑| 亚洲瓯美色图| 日本网色| 男人的天堂午夜av| 大香久久| 精品久操| 大香蕉99热| 九九综合久久| 超碰日韩人妻| 青青草好吊色| 国产女人9999| 麻豆一区在线| 爽爽淫人网| 视频黄色国产一级| 欧美精品一区二区少妇免费A片| 日韩成人人妻网站| 亚洲男人的天堂AV| 亚洲成人av色网| 四虎影视永久在线免费| 密乳视频在线| 東南亚性呦成人伦理资源在线视频| 亚洲射综合网| www.五月天| 免费在线黄片视频| 欧美日韩*字幕一区| 欧美日韩色| 97在线资源| 国产综合久久久鬼色| 色噜噜综合在线| 欧美一级黄色18片免费看| 一级片视频啪啪| 国产9l 大屁股| 国产又黄又粗又猛大片| 色吊丝 日日骚 清纯唯美| 亚洲污污网站| 亚州人妻| 91亚州欧美| 免费看污网站| 99少妇精品视频| 国模吧 一区二区三区| 国产在线激情视频| WWW操逼| 亚洲精品97| 9丨久久九九九| 91美女视频直播| 久久久天美| 婷婷久草| 破处bbq| 久久精品高清无码一区| 四虎在线免费视频| 激情内射| 特污精品女优骚货黄色视频在线免费观看| 99999久久精| 久射吧| 9997se| 亚洲欧美国产精品久久久久久久| 久久久久久中文| 亚洲九九视频在线观看| 91免费看中出视频| 思思热国产高清| 国产精品久久久吖| 色色网91| 亚洲成A∨人影院在线欢看| 嫩草一区二区在线观看| 色色色色综合网| 婷婷丁香五月激情啪啪| 九九综合| 亚洲国产剧情少妇激情| 久久久久久久久久黄色网| 天天操美美| 国产热av| 78精品| 国产精品视频91久久| 久久黄片国产一区二区| 欧美成人A天堂片在线观看| 国语国产操逼伊人AV网| 亚洲一区二区麻豆影院| 亚洲A色| 中文字幕文字幕无码一区二区三区电影99| 国产麻豆91欧美一区二区久久婷婷国产精品| 五月天AV资源| 亚洲熟妇一,二,三期| 一级片在线观看高清无码| 久久鲁干| 久久综合久久综合人久久夜精品| 日韩久草| 3PAV乱伦视频| 无码精品一区二区三区潘金莲| 九热视频| 操b网站亚洲无码| 久久久天美| 久久久久久久精| 成人一级性爱| 爽爽淫人网| 极品后入免费视频| 欧美人黑A片无码免视费| 小视频国产| 婷婷激情五月| 熟女熟妇一区二区三区视频| A级在线视频| 亚洲精品日韩国产欧美| 九一精品牛牛一区二区| 国产熟女无套内射| 久久美女国产| 国产精品经典一卡久久久 | 最新中文字幕在线亚洲| 九久久九精品视频| 日日97| 插穴性爱视频在线观看| 精品人妻一区二区三区-国产| 精久久久| 国产午夜激片Av毛片不卡| 日韩美女久久一区二区三区| 99精品无码| 亚洲一曲日韩精品| 亚洲一二三精品久久网| JuliaAnnXXX888| 色欲蜜臀AV| 久插综合| A片大香蕉在线| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 亚洲熟女一区二区| 欧美经典一区二区三区| 国产一区麻豆免费观看| 日韩色香| 2001天天操| 亚洲综合20p| 久99久视频| 丝袜天堂网| 亚洲AV噜噜狠狠网址蜜桃动漫| 宅男午夜在线视频| 97超碰碰| www.操| 久久超碰网| 五月天激情小说| 骚鸭AV| 亚洲国产激情国产av| 五毛骚逼极品美女怕怕| 天天干夜夜一操| 免费超碰97久久| 思思热久久成人| 97天天操天天干| 亚洲成人在线高清| 伊人991| 婷婷五月天补不补| 蜜桃臀一区二区三区久久| 欧美黄片视频在线观看免费 | 天天做天天爱| 暖暖精品二区三区观看| 天天网综合| 日韩无码嘿咻黑热久| 蜜臀AV午夜精品久| 精品无吗久久| www.大香| 97操97干| 嗯嗯啊啊视频在线看| 亚洲天天更新| 99色婷婷中文字幕乱色| 艹精品| 96精品一区| 99热综合| 久久精品 六十路 熟女 欧美| 自拍盗摄一区| 国产精品无套内谢| 夜夜嗨一区二区三区直播内容| 九九热最新| 成人小说另类在线| 9精品久久| 5月婷婷6月六月丁香| 另类欧美色| 吉川爱美98堂在线| 亚洲精品亚洲人成在线麻豆| 天美传媒AV在线| 成人女人国产| 亚欧国产无码精品在线| 又大又大又大又粗爽高潮观看| 亚洲欧洲无码97久久精品| 把腿张开老子CAO烂你| 色香天天| 青青欧美| ,国产乱人伦精品一区二区三区| 国产女人和拘做爰视频| 78精品在线| 熟女欧美日韩综合婷婷| 999久久久精品国产| 久操凹凸视频| 男人在线天堂| 亚洲影视第一页| 九九热免费在线国产视频伊人五月| 精品午夜福利国产一区二区在线观看| 日本三级精品| 欧美日韩亚洲电影| 97高清啪啪| 国产67194| 在线观看免费视频国产| 国产白丝精品在线观看| 96一区二区三区| 欧美日韩婷婷中文| 国产精品久久久亚洲一区| 久久一级无码精品毛片6| 日产操逼| 人妻少妇精品| 91N综合网| 中文字幕久久亚州无码| 欧美性区| 爱射综合| 超91综合网| 日本欧美国内在线| 欧美久久伊人| 国产专区第一页| 日韩精品资源专区二区| 国产精品精品系列在线观看| 天天cao在线| 99日视频在线免费| 久久久神马影院| 大香蕉欧美国产日韩高潮| 久久久久久久久久久人妻| 99成人| 99九九久久| av国产无码| 久久精品国产免费观看99| 国产亚洲美日韩Aⅴ中文字幕无码成人| 亚欧无码线免费观看视频| 热热色中文无码| 蜜臀AV午夜精品久| 伊人九九九| 久久精品导航| 91老司机在线| 九九AV| 校园春色综合网| 99999精品| 大JI巴好深好爽又大又粗视频| 精品无吗m| 97超碰中文在线| 日韩亚洲欧美中文字幕| 在线日韩日本亚洲国产| 精品欧美不卡在线播放| 日韩簧片免费看| 中文色综合| 精品亚洲国产成人精品| 欧美国产伊人久久久久| 欧洲熟妇xxXx欧美老妇裸体| 欧美日韩成人在线| 野狼激情网| 亚洲AV乱码专区国产噜噜亚洲| 曰本精品久久久| 蜜臀久久在线视频| 国产精品粉嫩福利在线| 日本 情色 1区| 婷婷五月天激情四射| 婷婷婷婷婷婷久久久久| 男人的天堂午夜av| 偷看洗澡一二三区美女| 精品国产乱码久久久久久久久1| 日韩亚洲美女一区久久| 国产乱人妻精品入口| 欧美色图在线视频少妇| www国产精品| 日韩免费三级黄片电影| 屁屁影院一区二区三区国产| 狂操嫩妻视频一区二区三区| 欧美日韩一干二干| 亚洲在线综合| 91精品国产91久久福利| 欧美性爱视频免费一区一A| 丁香五月婷婷五月| 美骚妇av高清在线| 日本在线伊人啪啪| 成 人片 黄色大片| 激情五月丁香五月| 秋霞一区二区三区四区五区六区七区| 91热热色| 国产精品网址| 97超碰国产亚洲精品资源| 欧美综合制服在线| 久久 精品| 亚洲蜜乳av| 日本久操视频| 国产乱不卡| 黄色香蕉视频网站一区| 97色色网| 加勒比性爱成人在线| 91视频精品| 女人爽到高潮潮喷18禁网站| 一本大道综合伊人精品热热| 啊啊啊草死我| 国产懂色精品国产av| 亚洲五区熟女| 日躁天天爽爽| 男女一级A片大黄,一进一出| 久久久久网站-538在线视频-欧美永久乱码| 91白嫩| 玖玖资源综合在线视频| 二级久久网| 亚洲一二三四区| 99人人干| 4tube欧美女厕所| 国产操操日韩三级黄| 97超碰天天爱天天爱| 亚洲成人贴图| 婷婷五月天av| 中文字幕乱妇免费视频| 岛国成人av在线播放网址| 欧美97视频| 国产成年女人免费视频播放a| 亚洲国男人的天堂| 男同专区一区二区三区在线| 天天干人妇| 男人成人黄色视频在线观看免费下载| 69少妇一区二区| 欧美亚洲20p| 日韩性爱小视频| 午夜男人天堂| 一级一性爱免费视频| 97天天摸天天碰| 天天干电影| www.狠狠干.coom | 五月天婷婷色| 啊啊啊啊好爽好舒服一区二区易域| 欧美一级做a爰片免费视频| 精人妻无码一区二区三区伊人直播| www亚洲免费| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 96超碰网| 少妇超碰在线| 91精品国产91综合久久蜜臀| 老熟女91av| 欧美不卡在线一区二区| 91成人国产综合久久精品蜜月| 女欧美一区二三区| 超碰这里只有精品| 天堂中文资源在线bt| 二级毛片| 色噜噜综合在线| 国产免费黄色一级大片| 懂色AV中文| 上海一级黄片| 中韩中文字幕在线观看| 日韩欧美女优电影| 无码高清少妇久久| 亭亭在线资源| 亚洲第一综合| 影音先锋日本乱伦| 91 国产丝袜在线播放-百度| 日本三级大片| 精品无码一区二区三区色欲| 97操在线| 久久久婷婷| 国产资源中文字幕在线| 欧美综合 站| 激情五月天色色| a片久久久久久久久久久久| 亚码人妻| 天天拍天天操| 国产操伦| 日比av无码| 99色日| 久久婷婷五月综合| 99亚洲精品| 97网站在线观看| 亚州成人a∨| 日韩不卡毛片Av免费高清| 91人妻少妇| 97超碰免费生活| 亚洲欲色9532548967一区| 99国产精品视频尤物| 99re视频这里只有精品| 黄日韩| 97人妻色| 精品人妻美妇91job| 热思思免费视频| 97超碰国产亚洲精品| 蜜桃视频精品一区二区三区| 久久99精品视频| 亚洲精品性爱片| 99re超碰| 欧美日韩亚洲少妇寂寞影院正在播放 | 91人妻素女| 熟妇综合一区二区三区| 久久久78| 亚洲熟女乱色一区二区三区久久久 | 五月丁香影视| 97人人操人人摸人人爱| 另类图片欧美激情综合| 怡春院久久| 久久成人午夜狠狠| 久久久久9999妇女| 欧美老熟另类| 日日夜夜天天| 亚洲av无码成人精品国产| 天天色天天干天天射| 无码高清操逼| 97天天综合| 91熟女丨老女人| 限制级中的三级片中的黑粗大屌屌日人妻熟女| 久久神马影院| 99999精品成人| 91人人看| 啊啊啊啊啊啊啊国| 天天综合网国产| 久久极品伊人| 七久久久| 久久精品欧美一区蜜桃| 五月激情综合网| av九九| 色五月婷婷网| www.婷婷五月天| 99视频在线| 91九色网| 日本高清电影欧美色图| 伊人网av| 欧美熟妇视频| 麻豆久久久久久久久丝袜| 啊好爽受不了无码| 超碰97网址| 磁力99AV| ...日韩成人一区二区三区字幕| 91久久久老司机| 国产精品国产| 亚洲 欧美 日本 国内 首页| 校园春色 亚洲| 国产精品一区二区密臀| 亚洲乱妇p22| 国产福利合集| 国产精品爱欲| 探花熟女,姿勢到位,體驗感也到位| av在线一区二区三区| 亚洲精品aa久久伊人| 亚洲欧美日韩综合在线尤物 | 97久久超碰国产网站| 69人妻精品丰满熟女区| 九九av| 人妻另类| 色图综合网| WWW啪啪的com| 日韩乱插| 久久久久中出| 欧美91丝袜| 国产免费小视频| 69视频入口| 国产精品久久久久久久毛片1| 秋霞欧美性爰视频| 大香蕉碰碰| 亚洲少妇激情视频| 欧美人妖内射| 91网九色蝌蚪操熟女| 欧美成人四级在线播放| 欧美久热| 美女大乳久久久久久久女人18| 蜜臀无码一区二区| 97欧美| 日韩亚洲国产视频| 天天爽天天爽| 在线情色电影 91大 | 网页导航五月天免费一二三区| 91久久久久久| 欧美性爱一区二区三区四区| 东京热,男人的天堂| 欧美传媒| 五月丁香网站| 日本久久999| 国产又黄又爽| 欧美成人性爱视频大全| 九九英色视频| 欧美宗合网| 亚洲va有码在线天堂| 亚洲,欧美,春色,另类| 超碰97首页| 亚洲日韩av专区无码| 国产精品亚洲免费| 久久婷婷亚洲欧| 亚洲日韩国产精品| 久草视频分类在线| 青青伊人久久| 亚洲伊人久久综合97| 色吧五月| 中文子幕一二三| 国模无码人体一区二区三| 色五月网址| 欧美综合777| 一本精品日本在线视频精品| 四虎永久在线精品免费网址| 校园春色 亚洲| 久久久久九九九| 91日产欧美| 自拍偷拍草一草| 麻豆蜜桃视频在线观看| 青青青青青手机视频| 精品一区二区成人动漫| 欧美在线色| 在线综合 亚洲 欧美中文字幕| 国产四虎在线| 999综合网| 2010男人的天堂| 精品夜夜澡人妻无码AV| 九九无码视频| 中文字幕国产| 久久性爱免费送| 超碰在线综合97| 爆操无码| 日1区2区3区2020| 不卡啪啪视频| 91热热色| www.天天干| 亚洲 欧美 色图| 五月丁香啪啪啪| 亚洲女人91| 吻戏激情性巴克| 欧美日韩亚洲天堂| 91N欧美| 亚洲欧美综合| 人人操天天爽| 久久国产免费激情视频| 青青伊人久久| 国产av美女被艹的乱叫| 久久精品人妻一区二区三区| 国产福利影视| 伊色久人大在线| 亚洲 综合 欧美| 麻豆久久精品亚洲精品88| 69AV女优男人的天堂| 69视频入口| 超碰538| 竹菊影视国产一区二区| 九久久九九久视频| 97精品国产97久久久久久免费| 日产操逼| 亚洲无限观看| 国产热RE99久久6国产精品首| 欧美综合1性辶| 中文字幕国产精品1区| 国产精品嫩草影院午夜两性| 久久久99999久网站| 在线国产一区二区av| 久久香蕉国产线看观看亚洲女人 | 国产家庭乱伦网址| 国产精品白丝www| www四虎| 国产一级不卡在线观看| 天天久久久久久| 99久久无色码| 黄片aaaaa一区| 欧综合网| 青青伊人久久| 免费观看欧美日韩操逼视频| 久久透逼视频| 91N综合网| 欧美色997| 亚洲啪啪性视频| 秋霞一级鲁丝片A片| 青青草中日韩在线| 国产精品青青草| 国岛片视频| 黄色大片视频在线免费看| 欧美传媒一区| 国产女上位好爽在线| 亚洲免费成人精品电影| 欧美天天弄| 精品无码产区一区二| 国产丝袜美女诱惑| 日韩一级片在线看| 乱操乱伦AV| 揉揉揉夜夜| 综合视频91| 十八禁网站在线| 精品国产精品一区二区| 国产亚洲精品A在线观看下载| 中文字幕av片| 天天看片麻豆| 久久综合18p| 国产无马av| 脫衣舞一区二区三区| 九九九热| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 91亚洲狠狠色| 手机久操欧美综合色码| 久操B网| 99操碰| 人人操人人摸人| 懂色中文一区二区三区 | 亚洲一二三精品久久网| 色久综合| 五月天色图| 手机在线看片免费人成视频| 国产精品久久久久久久电影渣男| 亚洲天堂2020| 国产搭汕a级片| 久久久久久免费电影| 伊人991| 精品国产99| 91 丝袜在线| 久久理论字幕视频| 天天色香欲综合网| 人妻熟女午夜精品在线| 色色色五月婷婷| 一区二区三区精品视频| 国产午夜激片Av毛片不卡| 国产高清精品一区二区三区毛片 | 中 文字幕一区二区三四 五 区日 日 骚| 91亚州日韩高清| 韩国久久97| 亚州色交| 操人妻丝袜高跟| 综合网,亚洲,欧美| 偷拍 亚洲| 好吊色在线观看| 欧美日日网| 日韩天堂av电影在线观看| 免费看美国人人爽,人人操 | 亚洲精品一区二区精华| 久久中文字幕不卡人妻| 我要去看2个日本美女.com曹逼| 久久亚洲AV无码白度| AVE乱伦| 国内毛片无遮挡国产| 日逼逼免费看| 欧美日韩国产高清在线一二三区| 亚洲精品无码久久AV| 日韩 欧美 另类 人妻| 黄片aaaaa一区| 中文字幕一区日韩精| 丁香色色网| 天天日老熟妇| 99天天超碰| 亚洲熟女一区| 日韩无码服务区| 亚欧美色| 成人av福利在线观看| 欧美另类综合久久| 亚洲日韩精品在线播放| 国产人妻精品久久久一区二区三区 | 美女91在线观看| 长久操视频| 91白嫩| 亚欧无码线免费观看视频| 天天操夜夜操狠很操| 无码视频黄色网战| 六月婷激情福利天堂69| 日韩av色图综合| AV天黑人| 91情色| 日韩色| 大香蕉免费中文| 精品国产99| 天天性射网| 97超碰人人模人人拍人人| 性在久久久久久| 久久天堂婷婷网| 97欧美色资源| 天堂综合网| 少妇一区二区三区精选| 国产亚洲精品自在线亚洲情侣| 色穴精品| 欧美日本视频一区| 亚洲在线网站| 国产乱伦性爱AV| 免费9 1久久| 大鸡巴久久| xxxx网站亚洲精品| 天天爽爽爽爽| 9999久久久久| 日本爽爽爽爽爽爽免费视频| 九九无码视频| 天天看片麻豆| 极品白嫩美少妇在地板上位骑射淫水泛滥| 福利社区午夜一区二区| 人妻少妇一区二区| 91男同| 国产精品4p在线观看| 亚洲精品视频在线| 国产精品天干天干综合网麻豆| 久久久久久九| 国产一区二区三区影片| 性生活无遮挡纯毛片在线看| 狠狠爱大香蕉| 亚洲国产无码精品首页久久久| 欧美熟女妇同| 中文字幕蜜乳av| 五月天婷婷色色| 日韩 女同 综合| av一区二区三区四区| 91麻豆天美国产欧美| 久久青娱乐| 2021久久国产综合精品青草| 操操操操操操| 日韩特级毛片免费观看全集| 天天干天天拍| 97人人夜| 影音先锋国产精品| 97欧美色综合| 岛国黄色短视频| 国产精品久久久777| 亚洲无码 国产无码| 青青草视频这里只有精品| 日比av无码| 九九黄色网| 美女黄页网站| 亚洲AV免费在线| 大粗鳼巴久久久久| 免费看一级a性色生活片久久无| 热热色色综合| 日韩乱伦影音先锋| 青青伊人加勒比海| 性色av蜜臀av色欲aV| 97欧美日韩中文| 日韩操逼HD| 欧美亚洲厕所精品偷拍91| 男女激烈网站最新| 美女AV一区二区| 欧美一区二区三区入口| 久久日本熟女精品一区| 人人操人人插人人摸人人干| 91丝袜激情在线| 欧美丰满少妇xx高潮| 亚洲视频二区 | 久久精品99久久久久久| 温婉少妇玩3p| 另类欧美| 99精品免费| 亚洲综合另类| 东北女人被操| www.91理论| 久久精品国产97欧美精品亚洲 | 欧美日韩国产一区二区小黄片大全| 欧美人妻二区三区| 青草草免费网站av| 人妻无码视频一区二区三区久久| 全免费a敌肛交毛片免费| 欧美色图99| 国产精品女同| 人人看人人爰人人操| 丰满人妻一区二区中文| 亚洲欧洲综合视频在线| 日躁天天爽爽| 91撸色网 玖玖网 欧美| 精品亚洲国产成人精品| 97久操| 国产精品国产自产拍高清AV| 午夜亚洲国产理论秋霞| 日本高清一本二本免费不卡| 91超级碰碰碰| 国产高清亚洲日韩一区| 日本五十路在线| 国产日韩欧美三级片| 久久91| www.男人天堂| 26uuu国产| 夜夜操美女| 大香蕉2017| 97干com| 国产高清成人mv在线观看| 校园春色美腿丝袜 | 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 极品综合| 天天干人妻视频| 啊嗯好大视频在线观看| 欧美丝袜制服久久| 91美女在线观看| 北野未奈加勒比av| 国产乱码久久| 国产精品一区午夜福利| 好爽视频在线观看| 色制服丝袜夫妻av一区| 91视频国品一二三区| 男女性感激情网站| 欧美色图亚洲色| 美日韩一二三区| 国产欧美一区二区| 男女真人网18| 综合av社区| 夜夜性| 亚洲天堂久| 北京美女一区二区| 麻豆蜜桃视频在线观看| 熟女人妻一区二区三区| 日本人妻丰满熟妇久久久久久| 色噜噜人妻av中文字幕| 欧美情色男人的天堂| 999久久久精品国产| 免费A V在线播放| 免费?级毛片无码?∨蜜芽试看| 97chaopengongkai| 97超级色碰碰| 伊人991| 蜜臀AV一区二区三区激情综合| 手机看av网站在线看| 黄色电影在线播放综合网站| 丰满熟女一区二区三区在线播放| 亚洲区小说| 成人在线午夜视频一区| 人人爽夜夜操| 最新加勒比丝袜在线| 我要看免费韩日黄片| 国产欧美一级在线观看| 香蕉黄色一级视频| 翔田千里AV无码秘 三区| 91天堂| 91精品人妻一品二品三品| av草草在线电影| 偷拍五区| 强奸熟女一区二区三区| www.高清无码诱惑一区.com| 亚洲国产精品久久久久婷婷青年| 天天天天干| 婷婷爱五月| 能看的av| 99热精品在线观看| 大香蕉AV在线| 99热啪啪| 青青草日韩无码| 六月色婷婷| 亚洲图片欧美日韩| 97天天摸天天碰| 美女尤物福利视频| 99色悠悠| 91九久| 极品粉嫩一区二区| 有码人妻系列| 亚洲囯产精品女人久久久| 爱av免费| 国产在线综合福利网站| 丝袜视频网国产90| 欧美日韩国产电影| 日韩AV一区二区三区三州三州| 久久色情| 婷婷五月天基地| 亚洲综合五月天| 亚洲综合小说另类图欧美视频激情小说色五月天 | 久久婷婷欧美| 亚洲欧美日产国产91毛片| 伊人久久大香蕉线AV五月天| 在线 亚洲 网爆 自拍| 日韩AV一区二区三区三州三州| 国产后入精品| 夜夜操91744565| 9超碰免费|