亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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久久久久| 夜夜夜夜爽| 欧美日韩另类在线| 台湾大香蕉99热| 日韩无码第3页| 人人操人人大香蕉| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 久久男人| 717影院理论午夜伦八戒| 欧美性色综合网| 男人天堂资源| 97电影院超碰| 日日躁狠狠躁天天躁精品| 人妻日日干| 97超碰中文| 豆花视频操逼网址| 老熟女熟妇| 久久久久国产精品久久久| 日本女人操逼| 翔田千里A片一区二区| 美女啊啊啊啊啊啊啊| 亚洲中文字幕av| 国产一区二区在线电影| 欧美洲精品一级| 91碰超| 九九热五区| AAAA欧美日韩| 久久夜夜夜夜| 欧美日韩国产色图在线| 中国和日本人色哪个不下载能放| 99精品久久久久久久婷婷蜜桃| 色香伊人| 国产小u女在线观看| 亚洲综合另类色图| 丁香六月婷婷综合| 欧美日韩久久精品爱爱| 国产精品老熟女一区二区| 91麻豆天美传媒在线| 日韩激情啪啪| 欧美亚洲中文| 婷婷精品国产一区二区三区日韩| 99热只有这里有精品| 天天日骚逼熟女| 九九黄色网| 极品另类| 久久鲁夜| 免费A V在线| 亚洲欧美另类图片| 91欧美丝袜| 亚洲最大AV网| 日本一级特级毛片视频| 中文字幕在线观看第二页| 蜜乳AV免费观看| 91女优在线观看| 色色操| 天天看天天日| 老司机午夜精品福利视频一区二区 | 久久人妻丝袜一区二区三| 日日骚中文字幕| 物尤视频一区二区| 91蜜臀在线久久久久| 国产精品ⅴ无码大片在线看.| 亚洲综合射| 综合激情五月天| 色婷婷六月丁香七月婷婷| 亚洲自拍青操视频| 日韩精品熟妇| 丁香久久| 日本高清_区二区三区| 好吊色综合| 97精品视频网站| 丁香六月激情| 四虎国产精品永久地址入口| 蜜臀久久99'精品久久久| 亚洲丝袜二区| 国内精品久久久久影院亚洲| 人人干黄色| 风间由美日韩欧美久久| 综合干干干av久久久综合网 | 中欧人妻丝袜中文字幕| 狠狠躁天天躁日日躁97| 尤物av网站| 色成人Www精品永久观看| 97视频免费| 亚洲日韩久久精品一区| 欧美综合第一| 东京热男人的天堂网| 亚洲人妻中文高清| 国产精品久久久久久久久久梁医生| 亚洲在钱| 色诱中文字幕| 精品一区96| 久热婷婷| 色综合色| 亚洲色久| 毛片电影一区二区三区| www久| 亚洲精品无码久久AV| 国产熟妇 码视频户外直播 | 久久一级无码精品毛片6| 国产美女口爆吞精视频| 国产免费黄色一级大片| 精品黄色电影| 精品国产乱码久久久久久久| 啊啊啊久久久视频| 美女91色黄18| 欧美一区二区三区黄色影视| 免费亚洲国产精品久久一区| 亚洲少妇色图自慰直播| 欧美亚州综合图片| 亚洲综合射| 97人人爱人人做人人乐| AV老汉| 高清无码国产亚洲| 日韩在线观看中文字幕视频| 丁香五月天激情综合| 成人AV在线电影| 国产一级片| www久| 色五月激情网| 无码91| 69AV女优男人的天堂| 欧洲色| 久久性爱视频| 亚洲影视综合网| 丝袜美腿诱惑亚洲欧美视频在线观看 | 婷婷综合久久| 狠狠干,狠狠操| 色综合久久888| 日本道久久综合色色| 日韩视频啪啪| 综合熟女| 九九九久久久久| AV在线资源| 内射卯月麻衣| 天堂av最新电影网| 99婷婷一区二区| 日日操免费视频| 欧美激情性爱视频网站| 日本一级二级三级网站| 国产精品一区二区黄片| 熟妇人妻一区二区三区| 日韩色女精品| 亚洲国产熟妇综合色专区| 亚洲高清自拍| 成人av影院在线观看| 免费中文在线| 天天综合网国产| 亚洲一区二区三区麻豆传媒| 粉嫩国产精品久久久| 97 九色| 素人伊尹大香蕉免费下载视频| 另类欧美色| 蜜乳成人AV| 午夜120视频在线观看| 色9999日韩国产| 爱干爱射网啊啊啊| 久久女同性恋一二区| 后入福利视频| 日本在线999| 人妻另类 专区 欧美 制服| 国产综合在线视频网站| 五月婷婷综合网| 国产精品久久久视频| 91老熟女老女人国产老太| 日日日日做夜夜夜夜做无码97| 精产品久久| 精品日韩人妻精品一二三区| 综合自拍| 欧美香蕉视xxx| 免费99精品国产自在在线| 国产精品9999| 开心五月激情网| 久久一区,青青青青草视频在线播放| AV色五月天| 一道α片欧美| 久久男人的天堂国产| 国产馆极品诱惑| 欧美激情黑人| 激情五月天插| 九九九九久久久久| 啪啪91| 91蜜臀在线久久久久| 久久精品视频一区三区小泽玛利亚| 97亚洲中文| 九九aV| 超碰在线97国产| 熟妇综合一区二区三区| 色五月婷婷久久| 女优免费一区二区永久| 日韩精品资源| 欧美日韩香蕉| 久久综合超碰| 精品国产人成在线| 婷婷九月国产| 深夜激情无码| 无码九九九九| 美女写真| 亚洲素人网| 国产精品一区av在线| 久久久影院| 大逼色网站| 多乙久久久久久| 亚州成人A√| 91欧洲国产成人久久精品网站| 国产小黄片在线免费观看| 久久一区,青青青青草视频在线播放| 欧美午夜熟妇黑人精品91| 久久久久久国产无码精品| 1204av韩国| 国产高清午夜成人在线观看| 亚洲中文人妻色| 欧美亚洲图片| 中文字幕91综合| 综合97| 亚洲欧洲小说图片视频 | 日韩一级成人毛片免费观看 | 日本性爰一道本| 男人的天堂激情| 日韩亚洲欧美中文字幕| 久久一区,青青青青草视频在线播放| 欧美se综合| 五月色综合| 一区二区不卡视| 精品久久99| 99久久精品无码一区二区毛片免费| 2025亚洲男人天堂| 熟妇的味道HD中文字幕| 久久超碰天天| 色五月婷婷在线| 清纯唯美综合亚洲| 97久精品| 日韩精品黄片免费观看| 无码人妻1727| 婷婷色网| 99精品热| 日韩免费大片一级播放| julia国产在线 | 人人看欧美性爱| 中文无线日韩一区| 美女露胸露奶头| 少妇一级婬片免费放一级a性色.| 亚洲清纯唯美| 老女人爆菊| 高清孕妇孕交 交| 在线视频一区二区传媒| 国产精品三级视频网站| 一级黄色性爱裸体视频| 啊啊啊啊,啊啊好多水 | 破苞ⅩXXX性无码动漫无码| 亚春色色| 日韩中文字幕av在线播放| 91人妻中文| 久久久一区二区三区四区五区| 欧美老妇女内射网址| 国产精品自拍欧美在线| 中文一区二区三区影院| 91路www| 天天插天天操| 亚洲另类欧美精品| 国产91 丝袜在线播放| 欧美少妇性乱| 美国一区二区免费视频| 韩国三级一线观看久| 亚洲综合图色在线| 欧美亚洲丝袜人妻制服99| 五十路六十路素人熟女| 中文区中文字幕免费看| 国产人妻精品一区二区三区秋霞| 亭亭丁香激情| 99久久久久| av一区二区三区四区| 亚洲交性| 青青草国产一区二区三区| 嗯嗯啊啊亚欧精品| 吻戏激情性巴克| 色乱二区| 国产精品熟女九色九色蜜臀| 日韩欧美亚欧在线视频| 2017亚洲天堂| 久久黄人人爽视频| 日本不卡中文| 日韩欧美中文字亚洲慕| 91真人天天在线| 操九九九九九九| 五月天综合网| www.色综合| 久久成人国产| 国产色图乱伦| 久久久久久久9| 亚洲影视第一页| 啊啊啊不要啊啊受不了了视频在线 | 欧美激情一| 97精品视频免费| 大香网站| 人人操人人大香蕉| 最新国产亚洲精品精品国产亚洲综合| 国产福利在线视频网站| 亚洲中文字幕在线视频一区二区| 综合自拍| 亚洲一区二区中文字幕| 欧美在线第五页| 99re3这里只有精品| 国产99久久99热这里只有精品15| 午夜寂寞欧美| www黄片免费看com| 亚洲AV无码国产精品久久久久| 国产专区第一页| 操逼啊啊啊91| 久热9| 免费啪啪啪网站18岁| 亚洲国产精品无码AV在线| 亚洲人妻在线一区| 大香蕉乱级| 国产乱伦性爱区| A 在线网址| 99国产在线 精品 视频| 亚洲毛片一级带毛片基地| 在线a v| 亚洲最新中文字幕免费| 亚洲中文字母在线播放| 婷婷丁香五月激情啪啪| 懂色综合久久久| 精品.99999| 天天碰操中国年青熟妇| 精品九九九九九九九九九| 久草男人天堂| 五月天日日操夜夜操| 日韩欧视频| 亚洲av资源| 啊啊啊啊好疼| A片大香蕉在线| 成人aⅴ一区二区三区| 国产精品免费视频不卡| 自拍丝袜美腿人妻| 午夜福利成人免费视频| 亚洲?V高清一区二区三区尤物| 99最新日韩偷拍视频| 欧美性爱一区二区三区| 亚 欧 美 综合| 97久精品| 免费成人在线熟妇网| 狠狠爱夜夜干| 国产精品久久久久久久久久久久久久久久 | 99天天超碰| 国产二区三区粉嫩在线| 欧美亚洲丝袜人妻制服中文99| 少妇蹲下露出大唇5| 思思久热在线精品66| 啪啪免费| 亚洲人成色9999精品久久| 人人搡人人肉久久精品| 97天天摸天天爽| 免费观看国产不卡av| 色色五月天激情| 97天天综合网| 午夜欧美精品久久久| 操逼日批| 在线国产探花| 999综合色| 99999国产| 视频黄色国产一级| 四虎影库国产精品免费| 精品少妇一区二区三区| 亚洲好看强奸乱伦| 亚洲午夜免费狠狠干| 国产精品suv一区| 综合色好色| 国产男人又猛又粗又爽| 日韩9999| 日韩三级伦理中文字幕| 性一交一乱一交A片久久四色| 久久久久精| 亚洲第一男人天堂| 欧美性爱第一页久久| 久热9| 亚洲熟久久| 富女玩鸭子一级毛片| 爆操无码| 亚洲自拍一区夜夜操| 欧美综合亚洲综合| 啊啊啊啊嗯嗯嗯用力好爽 | 五月丁香影视| 激情四射婷婷六月天| 影音先锋日本乱伦| 九九RE视频在线精品| 欧美少妇色综合| 欧美Ⅴ性爱| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 北京美女一区二区| 八戒午夜福利理论片| 99无码视频| 久久久久幕乱码| 中文字幕中文字幕一区二区| 亚洲欧美setu| av绯色| 中国小夫妻勾搭露脸淫荡对白| 久久久新亚洲AV| 99re在线观看| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 丝袜 中出 制服 人妻 美腿 中文字幕| 国产一区二区成人av在线播放| 97人肏| 一起草三级AV电影在线观看| 综合国产97| 白嫩少妇| 玖玖综合色| 亚洲国产精品无码AV久久久| 欧美日韩人人精品| 香蕉国产精品麻豆亚洲欧美日韩 | 免费看久久久性性| 男人精品天堂一区| 国产女人成人精品视频| 亚州黄站| 大香蕉碰碰| 亚洲无线观看久久| 伊人玖玖网| 日本狂喷奶水在线播放212| 麻豆精品A片免费观看| 亚洲久久久久| 欧美白嫩女HD| 欧美日韩国内不卡| 人妻铁牛TV| 久艹伊人精品综合在线| 伊人久久综合精品欧美| 深夜激情 | 乱伦一区二区三区‘| 丝袜综合| 美女黄频a美女大全免费皮| 欧色网址| 欧美日韩大陆黑人少妇99| 日本操逼二区| 少妇一区二区三区| 天堂射| 去干网最新版| 老熟女乱伦片| 国产精品乱码久久久、久久| 精品v日韩欧美国产| 久久久久久久国产| 婷婷综合五月| 操操吧亚洲乱伦视频| 干B| 国产成人网址| 91搞逼视频| 超碰天天去日穴| 校园春色综合| 国产日本久久免费精品| 欧美精品久久96人妻无码| 熟女高潮合集-永久久久-成人AV | 欧美人与性动交a美精品| 校园激情狠狠四射| 精品久久久久久久久久久久| 91在线精品| 欧洲久久一二线| 亚洲自拍欧美色综合| 无码9区| 看免费的黄片| 亚洲高清综合网| 日韩操呦呦影院在线观看| 天天日天天爽| 日韩乱伦影音先锋| 天天日天天干天天色| 超碰吊日色| 国精品一区二区三| 五月激情啪啪| 久久精品国产亚洲AV嘿嘿| 日本一区二区不卡| 久草久日| 91挑色欧美| 日韩三四五区| 777奇米影视777四色| 亚洲日韩精品久久久久一区壹牛| 日韩黄色小说| 大香蕉欧美国产日韩高潮| 99久久久无码| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 黄网站黄视频网站进入口| 国产精品大香蕉| 欧美成人一级免费电影| av天堂精品久久| 亚洲在线网站| 屁股久久久久久| AV色女综合| 亚洲97网站| 视频在线观看一二三区| 九九热精品免费视频| 91美女丝袜诱惑视频| 日韩乱插| 在线观看国产黄色| 国产 无码 一区二区| 亚洲图片激情综合另类| 国产9 9在线 | 亚洲| 久久99九九九九6666免费观看软件| 超碰视97中文| 热久久无毒不卡| 国产60区。| 亚洲AO在线| 六月婷婷激情| 夜夜操2028| 99ri视频| 蜜桃久久综合视频| 99热超碰| 97超碰色屌| 欧美淫穴| 欧美人妻色| 久久最新免费视频23| 花野真衣| 亚洲欧美日韩有码| 乱欲性色| 久久风骚城市| 久久超碰com| 久久久97| 老司机天天操| 成人三一级一片aaa| 殴美在线AⅤ| 免费啪啪啪网站18岁| 色婷亚洲五月在线观看| 深夜操逼网| 欧美日韩人人精品| 亚洲熟女乱综合一区二区三区 | 香港澳门日本三级网站| 亚洲国产一区二区日韩专区| 久久性生大片免费观看性| 美女久久久| 亚洲欧洲中文日韩女优乱码| 日韩一性一交一A片俄罗斯| 日韩一级欧美一级在线观看| 亚洲天堂综合AV| 蜜臀亚洲中文| 一区二区亚州激情久婷婷欧美| 日韩欧美~中文字| 久久69| 秋霞一级A片黄色视频| 在线可观看的黄色网址| 五月花婷婷| 超碰1024久久| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 日韩免费a级毛片无码a∨| 国产高清免费不卡av| 99色色网| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 啪啪啪东京| 激情综合五月| 欧美色图成人网一区二区| 亚州综合图片| 啊啊啊久久| 国产精品白领在线观看| 亚洲九月丁香| 黄色成品网站| 欧美成人精品一区二区男人蜜臀 | 日日骚 av| 欧美日韩小说| 久久五月天婷婷丁香中文字幕| 六月婷婷综合| 久久久禁| 国内毛片欧美香蕉精品| 国产免费久久久久| 久操高青| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 大香蕉一级黄色片久久| 91丨熟女丨丰满熟女| 啊啊啊啊视频免费| 伊人性在线视频| 色在线亚洲视频www| 96AV精品| 亚洲色电影在线| 国模无码一区二区三区在线| 亚洲大色堂| 97综合在线| 蜜乳av首页| 亚洲十八禁止| 无遮挡男女激烈动态图| 欧美午夜精品久久久久久3D| 国产精品午夜精品| 欧美成人性爱视频在线播放| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 精品天堂| 六十路日本| 欧美综合传媒| 亚洲欧综合另类无码一区| 亚洲色9| 大香蕉日韩| 女人被添高潮免费视频| 亚洲青青草| 岛国网址国产 | 91啪啪视频| 久久久久久免费电影| 强奸国产在线| 超碰97久久国| 1769一区二区| 秋霞福利网| 欧美经典一区二区三区 | 日韩人妻一区二区| 丁香五月天婷婷姐| 91 天天综合| 六月婷婷色综合| 亚洲第二页| 久久久夜夜嗨免费视频| 91欧美www| 亚洲激情网| 天天肏夜夜肏| 噜噜在线| 少妇被c 黄 免费观看| 欧美日韩国产中文超碰| 亚洲欧美综合| 综合网久久| 亚洲色图尤物视频| 欧美天天综| 欧色网址| 色哟哟国产精品免费网址| 97亚洲在线| 97亚洲综合电影| 日韩成人私密一级精品av| 一区中文字幕二区日韩| 国产操伦| 亚洲高清少妇| 国产成人+综合亚洲+天堂| 91老司机视频| 久久国产视频专区一二三| ji熟女.com| 麻豆a'v电影| 五月丁香| 无码操逼视频一下| 免看60秒涩涩视频| 青青伊人这里只有精品| 伊人嫩草| 观看免费区二区三区二| 日本狂喷奶水在线播放212| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 在线可观看的黄色网址| 99re6在线视频播放免费精品| 黄色AV影视| 強姦亂倫a| 麻豆国产第一| 激情婷婷五月天| 高清在线不卡一区二区 视频| 九九九九97| 亚洲影视综合网| 波多野42部无码喷潮在线观看 | 国内精品伊人久久久久影院会| 青青草久草| 按摩中文字幕| 日本一级二级三级网站| 日韩成人无码| 色噜噜人妻av中文字幕| 吻戏激情性巴克| 嗯啊抽插大香蕉网页| 久操免费观看| 色偷偷男人的天堂麻豆| 五月婷婷性爱| 国产成年免费大片黄在线观看| 亚洲 欧美 第一页 | 高潮毛片无遮挡高清免费| 欧美97av| 色在线69堂| 婷婷六月天| 性开放中文AV高清无码免费看| 伊人久久AV诱惑悠悠| 国产极品久久久| 99碰碰| www.大香| 亚洲日韩在线a不卡99精品| 久久久月天| 青青欧洲黑| 亚洲日本男人天堂网| 一区二区三区机械有限公司| 一类无码操逼视频| 大香蕉狠狠爱| 欧美色91| 东京热AV男人的天堂| 极品久久久久久久久久久久久久| 黄页大片在线观看| 九九av| 免费强奸av| 国产Aα| 无码不卡八戒| 久久久久久久强迫| 丰满人妻一区二区三区| 中文字幕人妻丝袜乱一区三区| 日韩 欧美 国产 麻豆| 99操| 97色论| 97硬碰| 天天综合网久久ww| 男人的天堂.com| 欧美色棕合| 久久久久久国产精品| 欧美99热| 婷婷激情五月综合| 欧美日韩999| 91丨九色丨国产打屁股| 久久久免费的精品| 无码高清专| 亚洲欧洲综合av在线| 亚洲一卡二卡在线免费| 免费国产电影一区二区| a男人的天堂久久一级A毛片| 视频一区二区免费在线| 亚洲欧美91| 久久久偷拍| 精品人妻av区天天看片| 97久久精品| 夜色91| 国产精品不卡高清在线观看| 插入逼91| 中文色综合| 自拍偷拍 高清无码| 极品尤物女神在线观看| 久久久国产三级黄色片| 丁香五月天堂网| 黑丝内射一区二区三区| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 久久人人爽人人爽人人片Ⅴ| 国产一级αv免费看片| 99ri在线视频| 亚码激情| 欧美久久婷婷| 影音资源男人日韩| 亚洲黄色| 欧美的性爱网站免费| 国产探花精品在线| 凸凹视频在线观看| 天天爱天天韩国日本牛牛牛牛 | www.av家庭乱伦| 永久免费观看的毛片的网站| 亚洲精品尤物yw在线影院| 人妻献身系列第54部| 影音先锋每日最新资源在线观看 | 欧美黑人精品一区二区| 五月丁香啪| 91美乳| 日韩av电影网站| 中国熟妇| 精品人妻1区| 国产一区二区啪啪视频| 婷婷国产精品九区| 久久久久久久国产| AV中文字幕三四五| 日本人妻伦在线中文字幕| 美女一区二区国产精品| 久久大香蕉| 99精品丰满人妻| 亚洲日韩97| 亚洲最新Av| 福利视频一区二区微拍| 被体育老师抱着c到高潮| 射 色综合| 天美传媒av一区二区| 五月天精品| 日本1区2区不卡视频| 99热久| 欧美青青视频| 亚洲色图综合| 欧美 亚洲 偷拍自拍| 日韩精品熟妇| 欧美综合天堂| 一线黄色免费性爱片| 亚洲另类在线观看| 天堂伊人久久| 69国产对白刺激| 色黄色美女大长腿午夜视频| 天天拍天天操| 老鸭窝日丰县女人| 午夜福利1区2区3区| 99色视频| 久9综合在线| 欧美αv.com| 国产原创精品| 91性色| 久久久激情| 九99久久| 亚洲情色中文字幕一区| 亚洲第一页欧美| 国产三级片在线观看| 日韩在线观看中文字幕视频| 亚洲资源网| 五十路熟女人妻一区二区在线观看| 国产一级黄色片在线观看| 欧美中字二区| 人人操人人舒服| 伊人影院中文字幕| www欧美91| 婷婷色综合| 成人情色综合网| 日韩在线观看字幕精品| 久久m| 在线播放一级无码视频| 亚洲网自拍| 97国产中文| 亚洲AV无码国产成人| 色老久久| 粉嫩绯色AV一区二区在线| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 亚洲中文日韩精品| 青青草日韩免费观看高清在线| 成人a级高清视频在线观看| 国产一区麻豆免费观看| 日本不卡一二区| 激情六月天| 国产路线专区| 蜜臀久久99精品久久综合| 日本加勒比无码专区| 狠狠狠狠狠| 国产精品乱码久久| 天堂种子在线www网资源| 本道在线| 超碰av在线| 外国91| 国产精品九9| 中国操逼无码| 日日嗨AV一区二区夜夜| 91精品黄在线观看| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 97色操| 一二三四免费视频| 欧美色综合| 日本东京热大香蕉a片| 91搞逼视频| 97超碰中文| 精品国产精品一区二区| 男人天堂新在线| 久久9久9久99久9久9| 色屁屁影院www国产| 久久久九九九九| 日本人人操人人操| 欧美日韩亚洲天堂| 99.色网| 在线一道啪| 玖玖无码超碰| 五月天春色激情网| av在线不卡一区二区三区| 综合色区偷拍| 午夜欧美J进J出白浆流出久久久| 在线色导航| 玖玖爱视频网站| 亚洲人在线| 日韩丝袜二区| 国产亚洲精品一区二区三区| 操老熟女AV| 日韩成人色图| 风流老熟女一区二区三区l| 精品玖九九久| 99只有精品| 九色PORNY9l原创自拍| 丝袜人妻av一区二区| …中文字幕亚洲乱,97人妻无码费视…| 久久五月综合| 7777奇米影视久久| 日韩精品一区二区人人人| 国产又大又粗又长视频在线| 国产精品老师| 一区二区精品日韩欧美在线观看| 国产中文字幕在线| 色婷婷蜜臀av| 五月丁香六月激情综合| 成人a大片在线观看| 中文字幕国产在线天堂| 国产精品一二三| 欧美 传媒 麻豆 日韩 偷拍| 超碰在线国产| 岛国毛片手机在线观看| 女人综合网| 狠狠亚洲| 91伊人大香蕉| 91oumei| 久久久久久精品免费看A级| 欧美一区二区男人天堂| 亚洲国产97在线精品一区| 婷婷激情一区二区三区俺也去| 亚洲激情网一二三四区| 日本三级R| 黄色片一区二区三区四区五区| 啊啊啊好舒服视频| 国产精品高朝久久久久久久| 国产AV天美| 国产精品一区二区三区在线密挑| 国产亚洲精品第一最新| 精品中文字幕第一页| 91天天| 亚洲人妻精品一区二区| 色天堂综合| 欧美日韩亚洲高清不卡一区二区三区| 清柠毛片| av九九| 偷看洗澡一二三区美女| 亚欧成人综合影院| 国产99精品一区二区三区免费| 熟妇乱伦一区二区| 亚洲影视综合| 色九久| 欧美色九九| 色色97爱| 亚洲在线欧美| 亚洲欧美另类图片| 97亚洲精品超碰| 日日摸日日碰夜夜爽视频| 久久久久久99999国产精品| 九草九九九| 九九九九九九精品| 国产丝袜一区二区三区| 大屁股熟女一区二区三区| 亚洲色图 图片| 国产日产欧产美韩系列麻豆免费| 中文一区在线日| 在线观看视频91| 免费啊啊啊| 久久精品视频一区三区小泽玛利亚| 人妻酒店出差被中出免费在线播放| 成人久久精品| 大香蕉伊然在亚洲91| 射丝袜大香蕉| 婷婷探花久久精品一区| 亚州黄站| 91欧美大片| 久久国产在线一区二区| 在线观看一级α片刺激高潮视频| 思思视频免费看网站| 国产欧美精选激情视频| 国产精品激情久久久久久久| 亚洲精品中文字幕一区在线视频 | 天天综合网网欲色| 人妻精品视频一区二区三区| 9国产超碰| 日韩性爱免费视频在线网站| 五月香婷婷| 91蜜臀在线久久久久| 动漫片子网站3黄| 亚洲第一色页夜| 久偷拍欧美日韩三区| 欧美成人综合| 欧美亚州综合网图片| 搡老女人老熟女91| 自怕偷自怕亚洲精品| 日本高清_区二区三区| 色色婷婷五月天| 日产中文字幕2020| 视频二区熟女人妻| 国产精品成人午夜福利| 亚洲啪啪视频免费| 在线观看黄色电话| 刺激性视频黄页| 夜夜骑操视频| 午夜在线播放| 亚洲图片婷婷五月天| 色爱综合网| 狠狠夜色午夜久久综合在线| 97射欧美| 一区AV| 破苞ⅩXXX性无码动漫无码| 98一区二区精品| 精品国产91久久久久久一区黄无| 91 国产丝袜在线播放-百度| 熟女精品日韩一区二区三区| 另类TS人妖一区二区三区| 亚洲日韩成人性爱视频| 久久久久人妻| 超碰97欧美日韩| 激情文学88| 亚洲 欧美日韩 另类| 熟妇人妻一区二区三区| 日影院久久婷婷夜夜网| 在线视频97| 午夜福利成人免费视频| 精品久久久久瑟瑟| 91高清欧美| 999久久久免费精品国产牛牛| 亚洲福利中文字幕在线| 欧美第38页| 中文字幕人妻丝袜乱一区三区| 日韩高清黄片| 天天弄天天操| 屁股久久久久久久久| 久久精品国产亚洲AV高清演员表| 五月丁香色情| 超碰97亚洲区| www熟女乱伦com| 五月天玖玖资源站| 后入式在线免费观看60秒| 天天综合91入口| 性爱视频无打码在线观看| 18一区二区三区| 青青草无码视频| 欧美性爱一区二区 | 精品无码少妇| 不卡啪啪视频| 欧美乱妇狂野欧美在线视频| 日韩欧美亚洲自拍偷拍| 成人日韩欧美| 熟妇一区,二区,三区。| 日韩免费看在线黄色片| 色优久久| 床戏久久久av一区二区麻豆| 综合操逼| 一本久久精品中文字| 久久国产熟女影院| 99国产精品人妻人伦| 日本不卡在线二区三区| 国产一区二区三区影片| 蜜臀th| blacked精品一区国产| 亚洲91网站| 最新国内自拍av免费| 人人澡人人爽人人精品| 亚洲人天堂| 久久秀这里有精品| 精品福利| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 日韩欧美大力操| 四季AV综合网址| 91人人操| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 国产精品爆乳懂色蜜乳| 激情网五月天| 免费视频97| 欧美黑人XXXⅩ高潮交| 亚洲精品九九九| 人妻天天爽夜夜爽精品2| 亚洲伊人成综合成人网| 91狠狠综合久久久久久| 欧美性爽xyxOOOO| 99国产精品人妻人伦| 超碰色综合| 校园春色欧美色图| 免费中文综合精品| 狠狠躁天天躁日日躁| 久久久久亚洲AV无码专区少妇| 刺激精品视频| 综合在线导航一区| 精品久久九| 婷婷五月天色色| 热热色91| 玖玖综合色| 国产人妖的免费的视频| 97超碰免费生活| 国产农村一一级特黄毛片| 九九九国产| 亚洲日韩青青草色月| 国产成人一级av88| 另类老少妇| 日本久久久久久久久| 国产性爱在线视频一区二区| 91超碰在线播放| 国产亚洲在线观看| 天天干天天操天天操夜夜操天天操 | 亚欧高清| 97网址97| 日韩精品国产精品五码一区二区| 日韩免费高清大片在线| 亚洲偷91色| 国产 v乱码一区二| 啊啊啊啊网站| 大香蕉欧美国产日韩高潮| 999岛国大片| 国产精品精品系列在线观看| 性色中出| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 精品中文字幕一区二区l - 百度| 欧美啪啪色吧在线| 97人人爱人人做人人乐| 岛国艾薇凹凸视频天堂| 九九九九免费| 好爽要喷了| 日韩美女久久一区二区三区| 国产亚洲精品av一区| 超碰99在线| 日本欧美m v精品网站加| 久久天堂婷婷网| αⅴ天堂| 亚洲性高潮| 久久久专区| 日本人体九九九九九九| 乱伦av.com| 人人操人人色人人摸| 日日干日日摸| 欧美久久婷婷| 怡红院一区二区熟女人妻| ji熟女.com| 国产精品欧美在线观看| 日韩欧美天天爽爽爽天天爽爽| 人夜夜精品网站香蕉嫩草| 草草网站影院白丝内射| 大香蕉一级黄色片久久| 亚洲做性| 中文字幕诱惑制服人妻丝袜美丝袜美| 超碰av人人人| 日人妻视频91| 麻豆国产97在线| 日韩欧视频| 天综合网欧美| 久久仑合| 欧美色图亚洲特色| 91N欧美| 一区二区三区机械有限公司| 91快色色色色色| 八戒午夜福利理论片| 国产乱子伦一区二区三区在线观看| 国内一区二区三区| 婷婷15月天青娱乐| 亚欧美天堂在线| 超碰调教97| 国产精品天美传媒| www.天天干| 综合网色| 国产激情综合| 亚洲精品aa久久伊人 | 久偷拍欧美日韩三区| 成人久久精品| 欧美久久毛片基地| 97人肏| 色噜噜人妻av 中文字幕| 五月综合久久| 五月丁香六月激情综合| 人人扣人人操| 亚洲午夜av| 五月天久久久| 婷婷操逼| 中日韩欧美精品无码AⅤ一区二区| 吖在线不卡一区二区国产剧情| 91丨九色丨国产丨人妻在线| 97超碰人人操人人操| 亚洲成a人v欧美综合天堂下载 | 亚洲精品人妻吞精av| 男人的天堂久久久| 亚洲第一视频 欧美风情 日韩| 精品久久9| 人人妻人人色| 男人精品天堂一区| 91成人久久| 国产精品九九| 18精品一二区| 色九久| 啊啊啊免费视频| 精品国模无码| 国产精品久久久无码aV去| 第四色奇米影视777| 黑人操一区二区| 成年人一级黄色毛片大全在线观看| 婷婷视频在线免费观看| 久久精品毛片免费不卡| 911粉嫩人妻| 丁香五月色| 91九久| 欧洲小说色图视频另类| 欧洲大香蕉| 天堂网亚洲区手机版| 另类天堂| 日本人妻中文字幕 | 97精品视频在线播放| 91N综合网| yiqicaoav| 9丨亚洲一区二区在线| 日韩美女操b| 9 9精品一区二区三区| 97国产精品国| 欧美影音在线| 色淫网站优优视频|