国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲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
返回資訊列表
成人毛片免费| 婷婷丁香五月天综合东京热| 人人操人人狠狠操| 欧洲精品一二三在线| 干B网| 久久性爱精品一区| 亚洲情色在线| 四虎午夜影院| 91爱看| 成人性爱免费播放| 欧美色九九九| 国产日韩精品suv| 97人肏| 日韩精品一区二区人人人| 逼操网站| 中文字幕久久亚州无码| 黄色网址在线免费观看| 91黑丝操| 在线看免费无码AV天堂的| 大香蕉啪啪啪啪在线| 加勒比综合网| 91福利网在线观看| 色好看av| 国产精品麻豆免费视频| 操b网站亚洲无码| 久久啊啊| 天天欧美欧美亚洲网| 91伊人久久在线| 欧美综合自拍成人自拍第二十页| 精品人妻一区二区三区不卡断| 操逼操网| 人人操超碰在线| 免费看A片毛毛片在线播| 伊人991| 欧美极品美女aaaaaa级黄片| 91久久国产综合久久| 天美传媒av 在线| 亚洲中文字幕熟女| 男人的天堂2018.| 92一区二区| 日本综合久久| 欧美色青| 欧美乱妇狂野欧美在线视频| 丝袜美腿制服人妻二区中文字幕 | 激情露脸爱| 国产强奸乱伦第1页| 韩国一区二区精品亚洲| 91美女视频| 性做久久久久久免费观看软件| 人妻精品视频一区二区三区| 丁香婷婷激情五月天无毒不卡| 国产午夜精品理论片一二三区区| 97精品久久久久久久| 国产午夜在线观看| 伊人AAA| 另类天堂| 91欧美性| 亚欧国产无码精品在线| 欧美色狠| 日日做夜狠狠爱欧美黑人| 亚洲啪啪视频一区二区| 91男女| 超碰久久性爱| 日本成人A片免费看| 久久久精品一区二区| 中文字幕 国产区| 九热中文字幕| 91狠狠综合久久| 伊人五月天青青草婷婷| 中文字幕中文字幕一区二区| 亚洲色图A| 97香焦色区| 国产精品嫩草久久久久| 怡红院成人视频| 日韩伦理视频| 99自拍视频在线观看| 中文字幕乱亚洲美女精品一区| 日韩不卡码| 99久在线精品99re8热| 欧美亚洲情色| 久久国产精品视频| 91高跟美女在线播放| 乱伦系列一区二区| 欧美亚洲性爱一区二区| 曰本人妻人人澡人人夹| 亚洲国产av中文字幕久久| 91综合天天看| 五月天综合网| 91网站18在线观看| 亚洲激情在线一区二区| 午夜福利1区2区3区| 欧美综合天堂| 日韩无码服务区| 激情文学欧美| 校园春色制服丝袜中文字亚洲| 国产日韩精品人妻久久久久色欲网站 | 天天看高清麻豆| 97日本超碰综合| 亚洲色图亚洲无码强奸乱伦| 天天操夜夜操狠很操| 色妇综合网| 91精品婷婷国产综合久久| 岛国AV一区二区电影| 五月天黄色激情视频| 色综合国产在线观看| 无码九九九九| 人妻无码视频一区二区三区久久| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 色婷婷视频| 欧美一级黄色18片免费看| 一级@啪啪视频| 国产无码精品成人| 性在久久久久久| 激情五月综合开心五月| 国产精品成人无码a v毛片| 91网九色蝌蚪操熟女| 92一区二区| 中文字幕乱妇免费视频| 欧美色吧综合| 日本二三四区| 风月影院男女十八禁| 91日日| 无码视频一区二区| 精品一二三区四视频| 又黄又粗又硬又长又大| 青青草玖玖爱| 久久高清无码夜夜操| 绑缚麻绳人妻寝取完整版| 亚洲自拍欧美国产首页网曝| 97 超碰 人人做 人人爱| 人妻精品综合中文字幕在线 | 影音先锋视频在线| 亚洲图片欧洲图片aⅴ| 亚洲最大的综合性av| 日韩免费大片一级播放| AV麻豆免费一区| 亚洲图片激情小说| 97人妻免费中文字幕| 看日韩黄片| 夜色综合| 欧美性爱一级操| 国产乱子伦一区二区三区在线观看| julia国产在线 | 精品一区二区三区四区外站| 欧洲亚洲综合| 色爱天堂| 免费一级性爱久久| 青草青草久热| 少妇免费视频| 色综合超碰超| 一二三四区操操Av| 婷婷午夜清品久久久久久久性色视频观| 国产色呦呦| 日本国产成人亚洲精品无码| 99久久com免费视频′| 美腿色图| 大香蕉在线SuP| 好湿好紧视频| 91AV入口| 丁香六月婷婷久久综合| AV高清一区| 激情小说亚洲图片| 亚州中文字幕超碰97| 国产精品一区二区麻豆| 无码人妻一区二区三区色欲aⅴ | 欧美黄色图片| 97天天插| 日韩成人性日韩成人性爱视频在线免费观看 | 色噜噜国产在线| 久久九精品| 日韩无码第3页| 国产亚洲色停停久久99精品91| 国产操逼视频在线观看| 久久国产视频性吧 | 麻花豆传媒剧国产MV出差| 国产一区二区三区导航| 亚洲色吧网| 人人超碰在线观看黄| 很狠操| 精品人妻一二三| 日韩成人在线性爱视频| 一本久道久久综合狠狠爱| 久久久草成人网站久久久草成人久久久草久久久| 伊人网在线点播| 欧美日韩欧美| 一类av片在线看| 激情99| 91在线免费观看处女| 久久 久久国内精品亚洲| 久久久久九九九九| 久久精品国产亚洲AV无码电影| 欧美性特| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 少妇二级| 欧美日韩另类字幕中文| 在线免费观看高清无码视频| 久久久久9999| 亚洲s色图| 一个人免费视频观看在线WWW | 久久久久亚洲熟妇熟女| 亚洲成?V人片在线观看福利| 少妇蜜汁| 97超碰护士| h在线看免费版在线看| 国产后入清纯| 热久久九九热| 亚洲久久久久| 日韩欧美麻豆| 欧美色吧综合| 97在线欧| 久久久久久国产无码精品| 免费看国产曰批40分钟怎么下载| 亚洲精品天天影视综合网| 欧美精品一二三| 黄色欧美性爱视频| 使劲用力艹少妇视频一区二区| 九九九九精品九九九九| 超碰亚洲欧美日韩无| 91少妇人妻| 人妻二区| 爱妻综合网| 国产成人欧美一区二区三区的国产| 青青草原综合久久大伊人精品| 岛国网址国产| 蜜臀久久99精品久久久老,,| 夜夜免费视频| 欧美人妻制服| 人妻天天操天天爽视频免费| 99热婷婷一区二区三| 91精品国产麻豆国产自产在| 欧美AB在线| 加勒比无码一区二区三区| 国产精品香蕉| 精品176精品2| 久久久无码av精| 欧美性爱一区| 国产日逼视频| 精品人妻一区二区蜜桃视频 | 精品国产精品一区二区| 欧美色图在线视频少妇| 亚洲精品人妻吞精av| 亚洲做性| 欧美一区二区日韩传媒搭讪精品| 亚洲中文一区二区三区视频| 黑人综合网| 久久久9视频| 嗯嗯不要 视频| 熟女久久| 人人贴人人摸| 风骚少妇视频中文字幕| 色五月网址| 欧美亚洲天堂| 欧美色图片色哟哟| 淫色网综合| 日韩免费福利在线观看| 久久熟女嫩草成人片免费| 五月天婷婷色| 午夜乱轮操逼视频免费看| 久艹99| 婷婷综合五月天| 香蕉欧美| 蜜臀99久久国产| 美女诱惑爱爱| 天天视频综合在线观看视频| 91色婷婷综合久久中文字幕二区| 久久久九九九九| 91色久| 影视综合无码少妇| 欧美资源| 日产成人久久| 精品久久久久瑟瑟| 日日夜夜骚| 亚洲成a人片在线观看中文!!!| 中文三一区| 75大香蕉| 天天弄欧美| 热九九精品| 国产综合色精品在线观看| 操操操操操操| 神马麻豆福利院| 亚热日本熟女| 2025亚洲男人天堂| 天天操狠狠日夜夜干超碰撸com视频在线观看| 粉嫩av在线| 操操碰| 欧美黄色大香蕉一区二区| 91丨人妻丨国产丨丝袜| 大逼色网站| 日日黄色三级网站| 亚洲中文人妻色| 色综合久| 久久精品国产96精品亚洲拳交| 91亚洲综合| 亚洲欧美校园| 久久久久久裸体| 美女淫穴| 六月色婷婷| 国产午夜无码片在线观看影视| 思思热在线视频免费| 中文字幕黄色一起草| 精品无码久久久久| 精品十三区| 东京热激情视频一二三区| 日本精品高清一二区一本到| 久久av成人无码免费| 中文字幕高清精品一区| 超碰97人妻免费在线| 亚洲无992tv| 欧美宗合网| 日韩欧美偷拍美女视频| 国产自偷| 亚洲第二页| 国产精品毛片| 国产精品制服丝袜中文字幕日韩一区二区三区 | 成人丁香五月| 极品极品色影院| 亚洲午夜福利视频| 日韩一级成人毛片免费观看| 操逼操网| 日本九九九九| 日韩女优中文字幕| 伊人色综合超碰| 久久e6只有精品| 老熟女熟妇| 97久精品| 男女91| 三级网站超变态精品| 精品一区二区三区四区女 | 综合一区中亚洲国产成人综合精品| 亚洲国产综合久久久性感熟妇| 欧美日不卡| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 欧洲黄色网| 日日夜夜精品| 午夜偷拍久久熟女| 伊人五月天| 96AV精品| 日本不卡一区二区三区| 日韩欧视频| 777超碰| 国产av激情无码久久天堂| 懂色中文一区二区三区 | 9热9热综合网| 欧美综合网1| 91超碰在线观看| 好爽视频在线观看| 中文字日本乱码| 在线观看av区| 屁屁影院一区二区三区国产| 国产极品美女高潮无套在线观看| 日韩午夜啪啪视频| 翔田千里AV无码秘 三区| 久久久久久加勒比| 岛国视频免费在线观看| 抽插亚洲无码| 岛国黄| 美女毛片999| 欧美色66| 日本道人妻久久久在线不卡色视频| 色天堂在线观看| 中文在线视频| 亚洲91网站| 色偷偷色偷偷欧美日韩| 中文乱码字幕观看| 无码聚合| 97资源免费视频| 熟妇人妻丰满久久久久久久无码| 秋霞免费AV| 免费观看的av| 日本亚欧爱爱| 九九热av| 亚洲色图欧美视频| 亚洲AO在线| 懂色av中文字幕| 网站A V在线| 大香蕉五月天婷婷| 久久人妻无码毛片A片麻豆| 9999久久久久| 97干色| 婷婷视频网| 欧美激情久| 欧美日韩在线视频网站| 中文字幕在线免费观看视频| 欧美超碰96| 777超碰| 乱老女人一区二区视频| 亚洲男人的天堂网| 国产亚洲精品美女久久久久久2021| 日本九九九九| 欧亚日本情色| 日韩成人无码| 日韩美一区| 国产二区三区粉嫩在线| 成全动漫视频观看免费下载| 国产精品天美传媒| 人妻精品一区二区| 亚洲欧美中文日韩视频中国语| 97精品一二区| 久久伊人最新网址视频| 麻豆久久视频在线地址| 超碰人妻久久| 一色网男人的天堂| 加勒比伊人| 精品区9| 日韩十八禁| 久久婷婷亚洲| 天天久久| 少妇国产不卡| 久久九九综合| 东北女人高潮视频| 色综合色欲色综合色综合色综合| 99re6国产精品99re| 日韩精品碰碰| 99热99re6国产在线播放| 久久伊人亚洲AV无码网站| 天堂麻豆天美| 欧美综合娱乐久久| 欧美极品少妇| 亚洲日韩一区电影| 日韩免费一级性爱视频| 丝袜亚洲91| 97色伦97色伦国产欧美| 国产成人主播| 久久超碰网| 国产天天骚| 国产欧美在线观看免费观看| 1204金沙人妻懂旧版免费| 欧美αv.com| 欧洲大香蕉| 久综合网| 久久久久久久| 色女99一级片在线观看| 人妻丝袜美腿中文字幕| 偷拍超碰| 久热91| 国产精品人妻无码久久久互動交流| 五月婷婷六月丁香| 久夜视频| 久久99精品九九久久久婷婷| 五月综合激情网| 亚洲欧美首页| 99啪啪视频| 国产精品人妻无码久久久老鸭窝 | 岛国小电影| 天天日天天干天天色| 大香蕉色网| 手机看片1025| 97在线免费| 久久99草| α√在线| 亚洲人妻中文在线视频| 欧美一区二区三区成人性生活 | 欧美性高潮| 九九热视频这里只有精品| 亚洲av淫乱| 热99这里有精品综合久久| 中文字幕久久亚州无码| 中文字幕 av v| 欧美成人A天堂片在线观看| 超碰人妻久久| 96精品一区| 人妻久热在线| 久久久精品视频免费观看| 免费操逼91| 欧美日韩人妻少妇 一区二区三区| 偷拍欧美综合| 亚洲精品成人| 久久亚洲AV无码专区首页| 好色综合| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 目产99999久久999| 激情色色| 在线中文字幕| 青青草国产欧美非洲黑人| 日韩八十路老熟女| 天美传媒一二三区永久网站| 黄片在线免费在线观看| gogogo免费高清看中国国语| 日本精品九九九| 青娱乐大香蕉| 欧美欲色| 性吧在线视频| 97色婷| 蜜臀AV网站| 欧美日韩性爱无码| 日韩卡一卡二卡三在线| av天堂精品久久| 亚洲AV无码秘 蜜桃臀国精产品| 96超碰网| 99少妇| 超碰9 7女人 | 六月色婷婷| 综合久久中文字幕综合日韩精品| 秋霞无码av鲁丝片一区| 天天干人人干天天日97| 91啪啪| 人妻精品一区二区| 欧美色青| 欧美999| 欧美成熟性爱精品| 操啊国产| 另类小说综合网| 国产无码高清操逼视频| 国产亚洲精品激情| 日本高清_区二区三区| 日韩人妻免费精品| 国产亚州精品美女久久久免费| av在线观看不卡网站| 国产免费黄色一级大片| 69少妇一区二区| 免费看黄视频亚洲网站| 风流老熟女一区二区三区l| 综合五月婷婷亚洲一区| 亚洲一区二区三区四区视频| 亚洲欧美经典一区二区| 日韩有码免费视频| 天天操天天射青青草| 一区,二区,三区网站| 欧美另类色图片| 啊嗯好大视频在线观看| 久久超碰98| 亚洲超碰综合网| 欧美热图99| 白丝AV| 浓厚中出中文字幕在线| 天天躁日日躁XXXXYY| 日本三级日本三级99| 青青草视频这里只有精品| 一区二区三区男女操逼黄色小电影| 欧美午夜色妇色鬼| 激情视频图片| 欧美亚洲中文| 亚欧无码在线| 欧美亚洲日韩人妻在线观看| 中日无幕一二三四区| 国产熟女精品区| 亚州欧美一区| 超碰在线免费一区二区三区| 黑白配性爱AV成| 视频一区二区免费在线| 精品性爱一二三区| 久久熟女人| 九九九九精品一区| 中欧人妻丝袜中文字幕| 夜夜天天噜狠狠爱2021| 男人夜色天堂ss| 99re在线视频| 张柏芝国产一区在线观看| www.99中文字幕| 亚洲老熟妇xxx| 欧美性爱网97| 国产老女人久久毛| 九九色逼| x97av| av亚欧| 性爱1区| 国产乱人妻精品入口| 亚州性色| 免费岛国一级片| 欧美丰满熟妇XXXX性ppX人交| 曰本精品久久久| 91成人精品| 日美免费黄片| 97看操| 黄页av| 国产一级高跟丝袜| 精品免费一区二区三区在线亚洲人成| 亚射在线| 97操| 天天插天天干| 97网站在线观看 | 蜜色网色哟哟| 日日骚一区二区三区| 久久天天艹| 国产精品一区人妻精品阁在线| 99热导航| 亚洲欧洲日本精品中文a∨| 99精品热| 青青草原成人| 日操粉逼逼| 九九热男人天堂| 欧洲精品欧洲精品| 岛国视频免费在线观看| 东京热av男人的天堂| 久久久性| 极品粉嫩一区二区| 小说区 图片区色 综合区| 99热这里只有精品9| 色眯眯av| 殴美大黄片| 欧美色自拍| 欧美日韩色综合网| 自拍二页| 日本一级特级毛片视频| 精品久久在线区一区| 日日夜夜免费| 性色乱AV一区二区| 1769成人国产精品视频| 欧美日韩情色一区二区| 国产福利精品98视频| 东北黄色电影| 国产久久免费精品视频| av优播| 欧美碰碰综合色| 欧美熟爽综合| 摸奶性爱视频网站在线免费播放| 青青欧美在线| 婷婷色色五月天福利| 丁香五月天激情网站| 日本天堂网| 国语精品av| 综合av影片| 密乳AV免费观看| 欧美999999| 五十路三级片| 大香蕉琪琪日本女优不卡| 17c在线成人免费A片观看| 欧美91精彩| 囯产操逼片| 欧美亚洲今日在线| 亚洲影院小综合| 亚欧性爱无码| 疯操AV| 一区二区你上我| 亚洲欧美国产va在线播放频| 97资源超碰| 涩综合导航| 9.1小视频| 黑人无码一区二区| 17c嫩草51久久91嫩草| 97久久网| 96国产污污污丝袜| 天天干美少妇一区| 白嫩少妇| 青青草中日韩在线| 亚洲综合色男人网| 日小BB小视频| 女人久久久| 亚洲一二三| www.色婷婷.com| 中文字幕在线免费观看2| 色色色色色色色色综合| 欧美激情综合| 操逼操逼逼操操逼91| 后入福利视频| 亚洲国产精品乱码在线观看| 国产精品久久久久中文字幕| 午夜爽爽爽| 蘋果手機免費看成人Av| 91视频国品一二三区| 精品性爱| 欧美色交| 精品久久青青草| 国产在线激情| 性爱免费视频成人| www久久久| 天天色天天干天天爱| 超碰久超碰久| 熟女自慰久久久| 日韩一区二区精品视频| 蜜乳成人AV| 久操国产在线| 9 1超碰九色| 天天天乱色综合全| 中文字幕老熟妇黄色视频| 色色福利| 九九干| 91亚州| 亚洲久久久久| 亚洲色图 图片| 欧美综合第一| 欧美高清性猛交| 婷婷色导航| 操逼操网| 91c色| 黑人白女精品一区| 国产精品高潮久久久无码| 亚洲天堂资源网| 国产精品情侣啪啪| 一本道综合色图| 色婷婷在线视频| 精品一区二区成人动漫| 3p国产欧美99热| 人妻 中文 日韩| 天天插夜夜操| 秋霞网—男女啪啪亚洲免费体验区| 国产主播福利| 日本熟妇浓毛hdsex| 国产精品爆乳懂色蜜乳| 日本孕妇一区二区视频操逼免费看| 国产精品网址| 亚洲伊人成综合成人网| 91老熟妇| 国产一级舔足在线观看| 揉揉日日日日| 干b网| 四虎av在线| 亚洲欧洲日韩中文字幕一区| 久久啊啊| 性欧美999| 91精品导航| 亚洲区 欧美区| 黑人在线91| 久久免费少妇| 人人干人人操人人爱| 久久久久久久久久久免费精品| 国产精品久久久吖| 涩涩涩综合| 久久精视频美日韩在线视频| 日韩中文字幕视频在线观看| 色色香蕉| 白嫩国模丰满一二三区| 99RE在线视频精品,这里只有精品| 波多野42部无码喷潮在线观看 | 欧美日韩情色一区二区| 少妇蜜汁| 另类av天堂| 玖玖资源视频一区二区三区| 亚洲无码日韩电影| 亚洲黄色电影| 国产精品午夜高潮呻吟久久av| 少妇熟女1区2区3区| 91性片| 亚洲精品一二牛牛| 中文操逼字幕| 亚洲精品国产专区在线观看| 日韩精品资源专区二区| 日逼视频日本| 欧美久热| 偷拍五区| 另类综合另类| 国产高清MV操逼视频| 超碰人人操97碰| 久久精品99| 激情小说五月天| 亭亭丁香激情| 插B在线观看| 丰满人妻一区二区三区色-百度| 天天日天天搞天天干| 91狼人| 91色综合激情| 欧美最婬乱婬爆婬牲视频| 人人妻人人色一区二区三区| 亚洲精品自拍| 欧美日韩第一页| 久久精品一区| 欧美激情亚洲| 污污汅18禁网站在线永久免费观看| 中文字幕在线观看二区三区| 99精品在线观看| 777琪琪午夜免费A片| 婷婷色一区| 青青草女人天天干| 久操不卡视频| 岛国999| 熟妇的味道HD中文字幕| 久久9 9 9精品| 秋霞 色色| 欧美色偷拍 | 久久在线观看免费视频| 国产免费一区2区3区| 久久久久久精品免费看A级| 色情五月综合婷婷| 亚洲丨在线| 亚洲国产一级黄色视频| 97超碰欧美手机在线| 高清国产精品福利网站| 午夜天堂啪啪| 日韩美女,国产传媒,视频一区| 久热热| 日本国产欧美一区三区二区| 婷婷五月色| 91 综合 色| 久久精品一区二区| 国产精品老师| 欧美日韩97| 亚洲日韩成人性爱视频| 国产精品久久久久久久久久久久久久久久久久| 老司机午夜精品福利视频一区二区| 91视频综合| 丁香五月婷婷啪啪| 少妇精品久久久八区九区| 日日插夜夜| 亚洲。日韩。欧美| 超碰免费人妻在线| 色穴精品| 日本二三四区| 久久99视频| 老鸭窝日丰县女人| 97人人操人人摸| 国产久久一区二区| 熟妇的味道HD中文字幕| 欧美成人一区二区| 丰满岳乱妇一区二区三区| 97超碰色屌| 92性色国产午夜福利在线661| 爆操无码| 激情文学亚洲| 丰满人妻av一区二区三区| 97超碰超欧美。| 91艹B视频| 日韩精品电影| 激情接吻视频久久久久久| 久久国产999| 中日韩久久久| 美女91av| 中文熟女五十乱码在线| 色综合大香蕉| 久久成人国产| 中字一区| 综合色99| 亚州欧美在线| 成人综合色网| 亚洲 欧美 精品专区 极品| 2001天天操| 日韩精品字幕| 超碰中文字幕人妻草一区| 美女极品一区二区三区| 啊嗯嗯啊好大好爽| 国产精品呦一区二区三区| 夜夜免费视频| 欧美国产伊人久久久久| 97爱爱官网| 九九九九九九九精品视频| 亚洲自拍偷拍视频在线| 日韩传媒在线| 人人干人人操人人..com| 99精品无码| 人妻久热在线| 麻花豆传媒剧国产MV出差| 91模特在线观看| 亚洲欧美日韩夜夜| 97精品久久| 欧美青青视频| 97最新在线播放视频| 97超碰超碰| 精品国产久久乱码| 五月色综合| 国产极品精品美女视频| 中文字幕一二三av| 夜夜高潮夜夜爽高清视频一| 狠狠色狠狠色狠狠五月| 骚逼自拍99| 九九九九九九九九九九九免费国产| 天天伊人| 东北操逼| 奸色色 男人天堂 天天射| 日韩激情啪啪啪| 人妻蜜桃臀| 美女毛片999| 激情小说五月天| 国产传媒操逼视频| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 欧美综色欧| 大香蕉免| 先锋精品av色鲁| 午夜一区二区三区国产| 欧美精品三级黄片| 国产黑白丝在线| 亚洲欧美天堂在线| 丰满人妻大屁一区二区| 国产最火爆久久国产网站网站| 性色高清..……| 欧美 日韩 婷婷 五月| 中文字幕精品一区二区精品| 新婚人妻扶着粗大强行坐下| 国产精品一区二区a| 久久久国产护士丝袜美腿一| 久久a久久| 色哟哟 日韩精品| 在线观看啊啊啊啊啊| 九九热超碰97亚洲最新香蕉| 五月天久久久| 欧美精品久久久久久久久88| 性色av大全| 亚洲丝袜综合| 人妻超碰青青草98| 婷婷五月天丁香| 日本一区二区三区四区免费观看| 99这里只有精品国产| 人人操人人肉久久精品| 麻豆尤物视频网| 欧美激色| 夜夜嗨绯色| 久久天天躁日日躁狠狠躁| 久久久啊啊| 日韩三级一区 | 97操97干| 欧美色图片色哟哟| 亚洲综合骚逼| 欧美色图成人网一区二区 | 午夜国产成人福利视频| 2019天天干天天操| 性爱免费视频成人| 精品十八在线观看| 亚洲久草AV色图| 亚洲午夜蜜臀| 成人情色综合网| 美女网站黄页| 情色五月天就去干| 精品网站99999| 五月婷婷六月天| 国产激情久久久| 久色网| 五月激情天| 99精品久久| 99色色网| 久久精品视频久久久| 色鬼在线综合| 校园春色综合色| 动漫区日韩区欧美区| 久久婷婷欧美| 欧美亚洲国产日本在线,久久精品国产| 在线中文AV| 熟妇女伦乱视频视频| 亚州精品人妻一二三区| 亚洲狠狠入| 久久人妻无码毛片A片麻豆| 国产AV天美传媒一区二区三区 | 国产1769在线| 九九RE视频在线精品| 色色五月婷婷| 亚洲色吧网| 亚洲成人精品久久久| 久久鲁夜| 啊啊在线| 色香天天| 成人一二| 人人操人人摸人人看人人干| 亚洲自拍偷拍视频在线| ji熟女.com| 美女自卫慰黄网站免费| 图片区小说区| 大香蕉在线视频15| 亚州色图狠狠干| 青青青艹在线视频| 亚洲国产97在线精品一区| 精品视频一区二区| 国产成年免费大片黄在线观看| 六十路日本| 夜夜嗨AV蜜臀av| 色欲色香天天天综合网www-亚洲综合国| 夜夜春夜夜操| 欧美色综合| 免费看黄视频亚洲网站| 超碰在线国产| 精产国品一区二三产品| 国产精品久久久久久久久久二区三区| 国产97亚洲| heyZO天然素人无码AⅤ专区| 被体育老师抱着c到高潮| 秋霞蝌科网日本一区| 97超碰69| 99热日| 欧美少妇人妻| 国产一区二区在线电影| 好淫网一二三视区| 日韩BBN| 久久精品国产亚洲妲己影视| 男人的天堂一区三区| 91国产精品熟女| 欧美天天影院| 久久午夜鲁丝片| 久久五十路熟女人妻| 无码色| AV丝袜东京热| 天天操妹子| 国产成人自拍视频视频| 精品视频日日夜夜| 丁香7月婷婷| 日韩特级毛片免费观看全集| 亚洲AV成人无码一区二区三区在线观看| 少妇六月天| 蜜桃香蕉久草精品在线| 亚洲性爱电影| 国产怡红院| 91青青| 亚洲制服欧美另类内射| 久久久久久久久久久久久久久乱码| 成人一区二区三区四区| 99999re| 91丨九色丨国产打屁股| 99超级碰免费视频| 综合网97| 国产一进一出视频网站| 久久激情视频| 97精品人妻一二三四| 大香蕉视频一二三区| 一区三区啪啪| 日韩综合97P| 日日操丁香五月天| 2017大香蕉国产精品久久| 91操熟女| 久久大香蕉手机高清视频| 久久成人东京热人妻| 亚洲第一精品在线视频| 91色综合激情| 性无码专区2020| 99精品久久久久久久婷婷蜜桃| 欧洲精品一区二区三区| 男女啪啪网站免费视频| 大鸡巴久久久| 97国产超碰| 另类一区| 俺也射| 少妇滛荡视频| 国产97在线播放| 操逼逼福利视频| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 亚洲素人综合| 多乙久久久久久| 国产高清不卡视频| 毛片久久| 99re95| 亚洲系列第一页| 久久久日本电影| 国产黄a三级三级三级av在线看| 久久精品超碰| 婷色五月| 国产亚洲日韩欧| 亚洲自拍青操视频| 五月丁香激情综合网| 野狼福利社区| 亚洲精品男人的天堂| 天天视频黄| 五月天精品| 日韩少妇丰满亚洲| 国产原创自拍| 欧美日韩啪啪电影| 二级久久网| 亚洲欧美在线观看免费| 大香蕉在线SuP| 欧美嗯啊……在线观看视频免费| 欧美性爱精品一区二区| 欧美精品庄| 东北女人av| 在线啊啊啊| 欧美日韩国产中文精品字幕自在自线,| 久久男人| 东京太热久久久| 激情五月天插| 一牛一区二区三区久久| 日本午夜操逼| 丝袜无码a片| 女人被添高潮免费视频| 青青在线视频日韩欧美| 大香蕉综合| 全球成人中文在线| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 91精品国产91综合久久蜜臀| 99色色| 91大神精品长腿在线观看网站| 97超碰色五月| 欧美性爱免费短视频| 麻豆一区在线| 日韩国产乱子伦App| 视频二区美腿制服人妻欧美| 884t在线| 久久激情网| 欧美大波激情xxxx| 99re6在线视频播放免费精品| 国产精品制服丝袜中文字幕日韩一区二区三区 | 亚欧国产无码精品在线| 亚洲av性爱电影| 99九九久久| 国产乱伦一二三区| 九九视频黄色片| 日韩无码服务区| 欧美亚洲第1页| 欧美日本中字另类在线| 国产精品久久久| 激情露脸爱| 一块操欧美性爱| 再深点灬舒服灬太大了添视频 | 色欲天天综合网| 国产黄色视频久久| 国产精品国产| 人人操av| 金莲网址| 清纯唯美激情| 亚洲男人综合网| 嗯嗯啊啊用力视频免费| 明星性猛交ⅹxxx乱大交| 91四海无码日韩欧美| 欧美天堂亚洲电影院一区在线播放| 亚洲成人av色网| 久久久久久久伊人精品| 久久精视频美日韩在线视频| 800zy一区二区| 色综合久久夜色精品国产天堂| 久久视频少妇美女| 天天色欧美| 欧美人妻久久精品二区三区| 人人操人人摸avav| 人人干人人操人人..com| 国产黄片精品在线| 激情丁香五月婷婷| 人妻啊啊人妻啊啊| 国产三区免费在线观看| 欧美后入视频| 亚洲有薄码区日本系列中文字幕| 一二三四视频中文字幕在线看| 久久久久9999| 性欧美999| 尤物视频偷拍免费| 亚洲精品白丝| 欧美色天堂网在线视频| 久久久精品国产亚洲伊人| av天堂影视中文在字幕在线中文 | 色臀aV| 大香蕉综合在线| 抽插爽| 少妇与黑人高潮在线| 国产日韩精品一区二区三区| 久久性视频| 秋霞一级视频在线观看免费| 国产亚洲色婷婷久久99精品91葵花宝典 | 日韩女模中文造逼| 久久精品中文字幕无码l| 欧美午夜视频免费观看| 欧美性爱91| 日韩在线性爱免费视频| 九月激情婷婷| 亚洲一曲日韩精品| 久干9操| 国产精品秘 福利姬在线观看| 另类TS人妖一区二区三区 | 久久99干一本高清| 少妇熟女视频一区二区三区| 精品视频一区二区| 欧美综合综合| 日韩中文字幕精品一二三事国产精品| 欧美性天天影院| 人妻少妇无码| 9久久久久| 97干97色| Av手机版天堂网| 99久久精品无码一区二区| 每日更新AV| 丁香九月激情啪| 亚洲日产专区| 天天摸天天插天天日| 少妇500双飞99| 黄日韩| 亚洲另类色综合网站| 69麻豆天美| 国产三级在线现体验区| 中文字幕精品一区欧美| 国产区性爱在线视频秋霞豆 | 色欲久久99国产精品久久久久久| 国产一级高清免费观看| a片在线播放| 国产高清精品福利| 丁香五月色| 男人的天堂2018东京热啪啪啪| 欧美色图天堂网m| 日本高清一本二本免费不卡| 精品对白久久不卡| 99老司机精品视频在线观看| 探花精品视频|