亚洲有码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一区二区三区| 亚洲中文字幕妇伦久久| 国内精品不卡无毒99999| 在线观看成人性爱免费小视频| 人妻熟女一区二区在线视频| 欧州激情视频在线一区二区| 中文字幕 国产 精品| 日本不卡在线二区三区| 啊啊啊好疼| 亚洲久热| 最新的亚洲无吗| 久久这里只精品免费福利| 99精品丰满人妻无码| 免费视频无码| 操逼日韩无码| 国产视频一区二区免费| 男人的天堂一区三区| 蜜臀99久久精品久久久懂爱| 色网亚洲人| 激情图片伦理国产一区二区日韩| 久久久久婷婷| 另类一区| 午夜爽爽爽在线观看永久入口姬片| 老熟乱一区二区三区四区| 干B| AV综合中文字幕干| 三级三久久线久久99久目本WW| 熟女在线视频| 国产乱伦搜索结果91P| 精品人妻伦一二三区久久| 欧色网址| 国产高清在线观看欧美| 国语人妻精彩刺激| 乱伦系列一区二区| 欧美成人一级免费电影| 妺妺跟我一起洗澡没忍住| AV天堂国产| 操逼视频亚洲| 91性片| 久久啊啊| 日韩欧美成人综合在线| 中文字幕少妇色 | 欧美一区91大爱| 免费一级毛片在线视频观看| 91高潮喷水美女| 91久久久久久久久久久| 男人下部插入女人下部 | 美女毛片999| 久久綜合很很很| 亚洲AV乱码专区国产噜噜亚洲| 久久久久国产精品久久久| 日韩天天综合| 一级一性爱免费视频| 久久综合婷婷| 精品少妇一区二区三区在线视频| 欧美性爱三区二区| 熟女这里只有精品6| 国内91熟女人妻丝袜天天精品视频在线 | 无遮挡男女激烈动态图| 日日夜夜精品视频| 青娱乐淫乱1314| 欧美大香蕉久| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 国产绿奴视频在线观看| 日本高清有码网址视频| 91人妻PORNY九色大屁股| 午夜欧美女人操逼| 色丁香五月婷婷| 伊人97色天使| 91无码人妻| 日韩欧美中文字| 九九超碰综合网| 久久久久久中文| 亚洲在线A| 精品中文一区二区| 天天日夜干| 免费人成毛片乱码| julia中文字幕在线观看| 极品白嫩福利在线| 天天看高清麻豆| 亚洲加勒比色图| 中文字幕99999| 日本东京热加勒比久久| 欧美.亚洲.另类.丝袜.制服.诱惑| 日本人体九九九九九九| 欧美日韩青操| 超碰97 线线 在现| 中文字幕一区二区韩| 老熟女搡BBBB搡BBBB视频| 国产亚州高清国产拍精| 图色综合网| 成人AV在线网站| 亚洲天堂男人的天堂| 国产成年女黄特黄| 久久老子无码午夜伦不卡| 熟女人妻av在线资源,黄色的资源| 亚洲无码久久久久久久| 麻豆 亚洲 97| jizz啪啪| 蜜臀国产AV中文字幕| 国产精品丝袜久久亚洲不卡| 福利视频网站| 99ri在线视频| 中文字幕人乱码中文字的预防方法 | 欧美亚洲综合999| 欧美色图 色综合图| 国产日韩在线播放av| 激情五月天综合网| 亚洲欧美情色| 久热91| 国产九九九九九九| 日韩人妻制服丝袜av| 精品夜夜澡人妻无码| 日韩无码服务区| 日韩激情毛片一级久久久| 夜夜嗨一区二区| 中文字幕av片| 入口操逼网站| 国产高清在线自在拍69| 国产精品无码在线| 亚洲色图 图片| 伊人欧美大香蕉视频| 老熟女搡BBBB搡BBBB视频| 精品夜夜澡人妻无码| 日韩精品人妻一区二区| 玖玖视频在线资源一区二区三区| 中文字幕狠狠玩| 国产精品无码成人精品| 丁香五月激情综合国产| 久久精品一区二区| 亚洲精品乱码久久久久久蜜桃麻豆| 五月婷色| 九九性视频| 国产懂色精品国产av| 国产不良强奸视频免费看| SUV一区二区在线看| 日本九九久久99播| 国产在线76页| 中文字幕乱碼在线| 97 超碰 人人做 人人爱| 久久婷婷色综合一区二区三区| 国产精品自在线发布| 精品少妇人妻av久久免费| 色哟哟 日韩精品| 亚洲中文字幕在线视频一区二区| 麻豆久久精品亚洲精品88| 欧美大干日韩| 丝袜美腿91| 日韩欧美三级| 国产无码成人无码| 强奸乱伦亚洲第一页| 国产日韩在线播放av| 亚洲国产一区二区入口| 久久香蕉综合一本到3atv| 中文字幕在线日亚洲9| 色婷婷影院| 国产尤物AV尤物在线观看不卡| 欧美成人四级在线播放| 九九99精品| 色999人与兽| 婷婷三区| 亚洲第一视频 欧美风情 日韩| 精品视频久久| 色色香蕉| 欧美激情一区二区| 另类图片天天影视| 亚洲AV无码国产精品久久久久| www.色综合| 1区2区3区中文字幕日韩| 99热亚洲天堂| 在线视频 亚洲精品| 一区二区三区免费视频入口| 久久大香蕉手机高清视频| 啪啪啪东京| 91欧洲入口| 欧美少妇第一页| 亚欧Av| 激情小说五月天| 一级黄色视频网| 97久久资源| aⅴ日韩成人电影av在线免费看av大全 | 人妻爽爽啪视频| 亚洲AV免费在线| 少妇高潮对白在线观看| AV乱伦国产| 97伦综合| 精品9999| 久久久久久久久国产| 国产免费操逼| 免费看国产曰批40分钟怎么下载| 中文字幕丰满人妻日本| 欧美亚洲情色| 男人的天堂va| 大香久久| 欧美狠狠干| 日本韩高清无砖码22o| 亚洲性高潮| 日韩精品 欧美激情| 五月开心网| 久久AV无码1区2区3区| 99热这里只有精| 亚洲熟女一区| 亚洲成人一区二区精品| 玖玖爱综合| 干少妇视频| 3D污黄视频在线观看| 中日韩熟女| 嗯嗯啊啊亚欧精品| 夜夜久久久| 中国东北熟女老太婆内谢| 精品久久久久久中文| 国产乱婷婷精品二区三区| 欧中美三级一区二区三区| 久久精品国产亚洲妲己影视| 九九九精品一区二区无码| 日韩射精| 亚欧免费观看视频| 国产h小视频在线观看免费| 亚洲av资源| 大肉棒导航| 欧美日韩一干二干| 亚洲日韩乱码中文无码蜜桃臀网站| 久久久久久大| 情侣操 逼视频99| 夜夜高潮夜夜爽高清视频一| 欧美日日夜夜| 一品道视频一区二区三区| 久久久久久久亚洲Av无码| 久久久久亚洲三级电影| 国产强奸乱伦第1页| 国产精品爆乳懂色蜜乳| 精品无码不卡视频| 婷婷色导航| 狠狠色丁香| 欧美有码亚洲中文字幕一区二区三区四区| 日韩精彩免费| 粘花网06av视频| 久久99精品九九久久久婷婷| 思思热国产高清| 91大学精品激情戏| 97bbn| 久久91| 亚洲成人精品在线一区| 探花熟女,姿勢到位,體驗感也到位| 在线国产探花| 亭亭在线资源| 国产福利一区二| 91精品丝袜久久久久久| 欧美综合亚洲综合| 亚洲熟妇一,二,三期| 狠狠入| 天天日熟妇| 国产精品一区二区密臀| 人妻一区二区三区四区视频| 人人摸.人人色| 大香蕉乱伦视频网| 亚 欧 美 综合| 亚洲色堂免费视频| 2017大香蕉| 成人福利视频网| wuyechaopeng| 国产 丝袜 欧美中文 另类| 欧美亚洲| 东北夫妻性偷拍| 97精品97久久| 人妻22p| 欧美狠狠干| 亚洲揄拍网| 精品毛片久久久精品毛片| 国内精品久9| 日韩99神马视频播放片在线播放| 午夜福利av电影在线| 九七超碰人人乐| 久久精品国产免费观看99| 成在线人在线观看视频| 蜜臀国产AV中文字幕| 国产成人www免费人成看片| 天天色天天干天天射| 婷婷久久五月天| 91亚洲欧美色图| 超碰538| 欧美成人精品一区| 黄色片大香蕉| 久久原创中文| 少妇人妻好深太紧了vr91| 影音先锋国产精品| 欧美日韩亚洲国产中文永久天天看 | 老汉网| 国产精品操| 操逼网免费无码视频| 欧美激情超碰777| 强乱老妇中文字幕| 免费中文在线| 精品一区99999| 日本免费中文字幕在线| 色女综合| 国内精品嫩模A∨私拍小视频| 婷婷丁香五月综合| 欧州91高潮| 一区二区三区机械有限公司| 后入合集| 亚洲天堂久久| 夜夜爽夜夜操| 五月丁香色综合| 麻豆色99999| 亚洲国产高清福利视频| 91少妇高潮| 99re国产中文字幕| 欧美亚州综合网图片| 亚洲色图亚洲无码强奸乱伦| 欧美第五页| 再深点灬舒服灬太大了好硬好爽| 2020天天色综合| 欧美综合区| 蜜臀一二三区| 女人高潮大叫一级毛片| 校园春色欧美| 免费看欧美美女黄色大片 | 无码不卡亚洲成?人片| 日韩乱码Av| 啊啊啊啊啊啊在线观看| 欧美日韩222| 久热在线精品免费观看| 中文字幕 一区二区 亚洲无码| 一区二区三区看视频| 五月丁香啪啪啪| 日韩有码中文字幕女同性恋| 一牛影视久久久一区二区三区| 91狠狠| 超碰综合色| 欧美强奸乱能| 91狠狠综合久久| 日韩97超碰中文字幕| 天天欧美| 伊人久久青青草| 日韩日本欧美在线观看| 后入式视频国产自| 国内自拍 日韩激情 99| 香蕉人欧美综合| 日本不卡高清免v欧美日韩在线观看| 精品性爱| 欧色性第一页| 97国产高清视频在线观看| 亚洲综合一| 欧美日韩午夜精品一区二区三区| 九久久九九久视频| 97超碰资源网| 亚洲有码 欧美精品| 成人一道本免费视频| 二级毛片| 97超碰热线| 成人av影院在线观看| 久久久久久99999国产精品| 一个人在线看的黄色电影网站| 中文字幕乱在线伦视频中文字幕乱码在线 | 欧美91网站| 五月婷婷色| 亚洲h片在线免费观看| 久久久999国产精品| 亚洲高清在线| 亚洲一区二区三区在线激情| 麻豆区久久久久亚| 麻豆天美制片厂网站视频| 黑人精品成人一区二区三区 | 青青操轻轻| 超碰九7| 亚洲97网站| 激情露脸爱| 久久草大香蕉| 一级特级aaaa毛片免费观看| 99人妻碰碰碰久久久久禁片| 人妻精品一区二区| 天天综合~91| 久久伦理视频久久大香蕉视频| 欧美嗯啊……在线观看视频免费| 97人人干| 激情综合亚洲| 激情婷婷五月天| 黄色性爱网网| 国产熟女完整版中字 | 免费家庭乱伦视频| 测评在线观看AV| 久久精品国产亚洲粉嫩| 一本色道久久综合狠狠操| 330dv亚洲成年视频网| 麻豆久久久久久久久丝袜 | 91国产美女丝袜足交精品视频| 99热| 国产最新AV| 美女超碰978| 久久午夜伦| 九九99久久| 久久久com| 熟女被操视频网址| 国产精品青草综合久久| 五月丁香六月婷| 日韩欧美俄罗斯A片| 最新av网站在线观看| av亚欧| 国产成人啪一区二区| 中文字幕视频2区| 五月天久久人妻| 亚洲欧洲日本精品中文a∨| 精品黄色电影| 国产精品成人AV片免费看网站| 精品人妻一区二区免费蜜桃视频| 天天色图| 999亚洲国产视频| 国产精品黄色三级av| 艹少妇网站| 黄片www.| 亚洲欧美成人在线| 98一区二区精品| 亚州操操穴网| 精品国产国产AV| 日韩无码久久熟女一级片| 天天干1区2区在线| 色图四区| 青草成人免费视频一COm| 久久久91福利姬| 夜夜久久久| 精…码一二三区| 日韩熟女操逼| 操逼网免费无码视频| 91美女中出| 美女久久久久久久| 偷拍新久久| 欧美91精品国产自产| 久久天天艹| 韩国三级理论在线| 偷窥自拍亚洲色图| 嗯嗯啊好大| 99re99在线视频| 亚洲伊人久久综合97| 啪啪资源网| 加勒比大香蕉视频在线| 老鸭窝黄色视频网站| 91成人亚洲色图| 一起草三级AV电影在线观看| 丝袜熟女一区二区三区| 久久久不能久久久久| 加勒比综合a∨| 天天干人人看综合| 爽 好舒服 无码刺激久久| 激情文学 国产一二三aV| 97chaopenrihan| 欧差乱伦二三| 久色网| 91欧美另类| 久草在线| 成人在线视频网| 欧美曰韩国产精品| 国产60页| 男人天堂一区二区| 91成人亚洲色图| 人妻 丝袜美腿 中文字幕| 97天天摸天天碰| 91在线丝袜| 天天综合中文字幕 91| 青草青草久热| 密臀视频一区二区三区| 超碰2017| 亚洲男人bt天堂| 久久宗合97| 亚洲欧美综合| 亚洲日韩一区电影| 女人香蕉久久毛毛片精品| 郑州宾馆老熟女露脸啪啪| 亚洲欧美中日韩| 欧美色乱| 天天色综合图片| 国产精品夜夜夜| 久久精品国产亚洲AV嘿嘿| 尹人大香蕉视频在线| 一本久久久精品| 在线观看日韩av不卡| 五月开心久久AV官网| 人妻献身系列第54部| 蜜伊人色综合97| 综合久久2017| 99少妇精品视频| 日韩天天本| 加勒比海人人操超碰在线| 最新日韩黄片| 亚洲 欧美 色图| 亚洲综合激情五月久久| 91综合无码| 五十路成人在线视频二区三区| 午夜福利av电影在线| 一直超碰| 久草福利在线资源站| 狠狠操狠狠燥| 日本中文字幕在线电影| 久久在肏| 天天透伊人| 激情黄色片在线观看| 亚洲国产一级中文综合久久天堂在线免费观看 | 永久免费av无码网站国产app| 婷婷五月在线视频| 9色国产精品一区粉嫩| 五月天色图| 国产一区二区在线播放量| 亚热日本熟女| 色婷久久| 青娱乐福利99| 99国产精品自在自在| 丁香九月激情| 白丝被操91| 97欧美久久久久久久| 婷婷亚洲色| 日韩欧美性爱电影在线观看| 天天看高清麻豆| 911粉嫩人妻| 亚洲欧美电影| 啊啊啊好疼| 美女一区二区国产精品| 欧美性天天| 中文字幕文字幕无码一区二区三区电影99 | 人人干人人搞人人摸| 九热久| www.AV有限公司一区| 國產尤物AV尤物在線觀看| 果冻传媒A片麻豆熟妇人妻| 人人爽夜夜操| 操逼啊啊啊91| 精品人妻一二三| 老熟女中文字幕高清| 九九热精品| 双插性欧美一二三区| 97Ai亚洲| 91久久久久| 殴美日韩m| 国人欧美精品一区二区| 亚洲啪啪视频免费| 综合亚州欧美| 欧美日韩人妻婷婷一区| 91女人的网站| 中文字幕五区| 日本123区操B视频| AV一区观看| 亚洲情色 无码专区| 中文字幕人妻色偷偷久久皮| av一区二区三区 中文| 吖在线不卡一区二区国产剧情| 欧美人妻制服| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 欧美不卡五十路| 呻吟 欧美 日本 中出| 日韩久久超碰色| 天天爽天天干| 国产女生在线| 性在久久久久久| 人人么人人操| 欧美色亚洲| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 99re6国产精品99re| 欧美爆操91| 亚洲欧美精品91| 亚洲AV无码久久久国产精品| 久久肏大逼| 亚洲成?V人片在线观看福利| 亚洲电影中字一区二区| 青青操网| 一级AV性爱| 日韩成人私密一级精品av| 亚洲毛片基地专区| 97日韩| 黑人综合网| 东京热综合久久一区二区| 天天操熟妇| 人妻熟女午夜精品在线| 国产精品无码av在线| a片亚洲一本通视频| 亚洲精品国产AV天美传媒| AND人妻系列| 少妇被玩视频二三区| 日韩美女久久一区二区三区| 99爱久久视频频| 久久亚洲骚逼综合| 久久99手机免费视频| 69精品人人人人| 欧美人妻中出| 97操综合| 殴美性天天| 老熟女阿 国产91| 易易A毛视频| 久久久久久精| 久久受www免费人成| 18禁免费视频| 97色色色综合网站| 69精品少妇一区二区三区蜜桃| 日本操逼aaaaa| 国产夜夜艹| 9丨久久九九九| 日韩 欧美 视频 在线 一区| 97国产精品久久久久| 熟妇高潮一区二| 香蕉免费一区二区三区不读| 日韩综合色网| 97资源亚洲| 富女玩鸭子一级毛片| 国产精品99精品视频网站| 亞洲久久直播| 中文伊人大香蕉视频| 亚洲日本激情| 欧美v亚洲v日韩v最新在线二区| 大香蕉色欲AV| 久久久久久中文版| 欧美色997| 碰人碰碰人人开房人肉| 熟女人妻精品一区二区视频| 熟女乱伦A| 色色综合网站| 你草精品在线视频| 综合色欧美| 久久婷婷电影网| 网页导航五月天免费一二三区 | 最新AVzaixian| 激情人妻另类| 丝袜人妻av一区二区| 9999免费精彩视频| 天天弄天天操| 亚洲诱惑天堂| 一级做a爰片性色毛片久久| 动漫爆乳3D奶水一区在线观看| 久久久9品一区二区三区| 亚洲一二三四区在线免费看视频| 伊人热综合| 超碰九色| 91操人| 色欲天天婬色婬香WWW夜色| 久热伊人| 午夜福利一区二区三区四区五区色婷婷| 丝袜美腿亚洲| www.久久爱| 欧美激情亚洲情色| 思思热久久成人| 久久侵犯人妻爽爽爽| 亚州,欧美在线| 日本三级一区二区 在线| 精品女人999| 蜜桃臀一区二区三区久久| 91成人高清在线观看| 日本九九久久99播| 女人天堂av在线播放| 五月天婷婷基地| 91热色| 亚洲第一无码播放立川理惠| 熟妇国产免费一区| 欧美丝袜制服久久| 久久九精品| 一二三四视频中文字幕在线看| 91老熟女91老女人| 久久久亚洲高清不打码| 黄色大片一区二区密桃丝袜| 97天天综合| 日韩在线AB| 俺去啦俺来也久久综合| 国产精品乱码久久久久久久久久久久| 99无码狠狠久久| 久久精品免费| 草草电影院| 激情图片亚洲色图| 香蕉久久AⅤ...| 99蜜桃臀亚洲成人在线观看| 国产精品内射婷婷一级二| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 先锋女优在线观看视频| 欧亚综合一卡二卡中文字幕| 亚洲黑人在线| 超碰97在线 欧美 国产| 超碰人人操97碰| 国产一区二区三区久久精品太古里| 超碰色男人操熟女| 麻豆福利视频导航| 日韩国产在线观看av| 欧美日韩国产色五月综合在线| 中文字幕精品区先锋资源| 97精品一区| www.色婷婷| av网站国产主播在线| 久久久久密臀一区二区| 操我无码| 成年人黄色| 伊人一区二区三区| 美国一区二区免费视频| 青草地一本线一区二区三区| 九九九久千久久激情蜜桃在线看| 啊啊啊啊免费视频| 欧美永久激情一区二区| 美日韩男女操屄视频| 少妇专区一二三四五| 婷婷亚洲综合| 97香蕉网| 久久夜嗨| 亚洲综合激情五月久久| 91人精品妻入口| 97草草| 久久9 9 9精品| 亚洲成人日韩小说| 中文熟女五十乱码在线| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 国产免费一区| 校园春色 男人天堂 | 男人天堂最新手机版在线青青草| 蜜臀少妇一区二区| 操操逼操操逼操操逼逼| 超碰91在线| 精品综合久久久久久97| 欧洲综合视频| 婷婷深爱五月| 在线观看黄色电话| 后入综合久久| 欧美老妇综合网| 亚洲欧洲综合成人av一区| 国产熟女精品区| 国产精品大香蕉| 伦理第一页| 精品乱子一区二区三区99| 99久久久无码精品国产人| 欧美超碰人妻97| 日本女人操逼| 亚洲成人在线高清| 99热99在线| 亚州精品丝袜-不卡成人免费| 蜜桃无码AV一区二区| 天天舔天天 | 尹人大香蕉视频在线| 午夜男人av| 百度百度日本操逼| 农村少妇久久久久久久| 97se综合| 日韩精品三区四区| 国产毛片精品一区二区色欲黄A片| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 亚洲欧美日韩电影网站一区 | 在线视频97| 九九精品网| 日韩青久久| 人澡逼| 欧美色自拍| 插插综合网天天影视网| 中国东北熟女老太婆内谢| 蜜乳av首页| 99热线麻豆 | 国产欧美在线观看免费观看| 日韩内| 色97国产69香蕉| 亭亭在线资源| 成人AV素股で擦久久| 97日本超碰综合| 91精品丝袜在线观看| 亚洲性爱无码乱伦av| 国产Av超碰| 久久久久久久伊人精品| 日本大香蕉综合网| 狠日欧美| 青娱乐休闲视频在线观看| 久久久蜜桃臀无码视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 丁香五月电影| 97综合国产| 九九九久久久| 欧洲黄色网| 一区二区免费电影久久| heyZO天然素人无码AⅤ专区| 极品人妻少妇综合| 夜色91| 日本淫乱女一区二区三区视频| 国产又粗又长视频| 97视频在线播放| 91久久久亚洲| 久久成人午夜精品影院 | 亚洲精品久久久久久久蜜桃臀| 九一综合精品视品av| 抽查国产福利主播| 久久精品中文| 骚熟女AV网| 亚洲欧美另类小说| 东京男人天堂| 久久久久久精| 黑人狂躁日本妞一区二区三区| 91小视频| 性爱综合网| 久久综合乱子伦国产免费| 99啪啪| 性生活性生大爱77AV国产| 97色亚洲| 亚洲欧美日韩二区视频| a级理论午夜日本| 久久久九97| 成人欧美日超碰| 91欧美www| 色哟哟 日韩精品| 中文字幕aⅴ在线视频| 欧美麻豆成人同性GⅤ在线| 青青草视频久久| 98超碰日本| 九九九九精| 搡老女人老91妇女老熟女| 日韩人妻一二三区视频| 97干在线| 91天射| 热热色综合网| 欧美高清18A片| 在线观看黄色电话| 青草av在线| 色诱avtt| 亚洲高清综合网| 国产精品干干干| 亚洲有码 视频一区| 亚洲色图 图片| 精品久久久一本一道| a片自拍直播视频| 婷婷色影院| 禁止观看美女黄| 啊啊在线| 操逼片国产| 97操97色| 亚州色图欧美| 国产老太乱伦一区| 精品久久久久久中文字幕三区| 国产69精品久久久久99尤物| 日韩另类色图| 噜噜噜噜天天狠狠| 欧美αv.com| 夜夜高潮夜夜爽| 天天综合站| 中国乱伦一区二区| 欧美日韩国产电影| 91n处女在线观看| 欧美午夜一区二区三区| 天天夜夜久久| 人人摸人人叼| 嫩草 人人网精品| 亚洲图片欧美色图| 五月激情小说| 国产精品一区二区三区在线| 思思热免费视频观看| 亚洲男人综合网| 精品国产91av一区二区三区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 在线色导航| 亚洲天堂自拍| 少妇厨房愉情理伦片bd在线观看| 国产精品国产自产拍高清AV| 99人妻| 91丝袜美女| 久久久久亚洲熟妇熟女| av一区二区三区 中文| 蜜桃午夜视频一区二区 | 夜夜精品视频一区二区| 久久99午夜精品一区人妻| 天堂网 主播 亚洲| 粉嫩av在线一区二区| 91精品人妻五十路| 国产免费一区在线观看| 狠狠入| 射 色综合| 超碰午夜| 在线黄色污污网站| 天堂俺去俺来也www久久婷婷| 中文字幕日韩人妻视频一区二区三区交换夫妻| 人人做天天爱| 人妻在线中出视频| 岛国片在线视频网站| 超碰综合色| 亚洲成a人片在线观看中文!!!| 一区二区三区四区在线不卡| 2024人人操人人摸| 亚洲91色| 久久亚洲天天做| 久久久精品日本一道| 国产91会所女技师在线观看| 久久久久久大| 精品午夜福利国产一区二区在线观看| 使劲用力艹少妇视频一区二区| 白丝被操91| 亚洲久久东京热一二三四五区视频| 久操精品网| 蜜臀久久99精品久久久电影| 特级大荫道BBwBBwBBW| 亚洲情色 自拍| 五月激情天| 亚洲欧洲无码bt精品合集| 久热大香蕉网站| 国产av尤物| 强奸乱伦Av网| 亚洲se91| 国产地址二三| 综合久久欧美| 大地资源在线观看中文第二页| 男人的天堂2019AV| 9 7超碰在线免费观看| 日本精品久久久久久久| 熟妇乱伦一区二区| 性在久久久久久| 看黑人AV不卡| 久久久久久久免费A片国产成a人亚洲精∨品无码| 成年人网站在线免费观看| 操迟操逼在巾线Fre看| 国产精品亚洲美女久久久久| 日韩精品三级片长长久久| 亚洲成人帖图| 激情欧美日韩女同久久| 国产精品操| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 国产欧美精选自拍一区| 清纯唯美激情| 1204金沙人妻懂旧版免费| 五月天激情小说| 亚洲欧洲日本精品中文a∨| 91天天综合在线观看| 精品97精品97| 日本三级韩三级99久久| 加勒比久久综合网高清| 97AV在线观看| 人妻精品一区一区三区蜜桃91| 国产白领连续中出在线观看| 中文字幕一区日韩精| 日本性交操一区二区不卡系列| 亚洲无限观看| 在线综合 亚洲 欧美中文字幕 | 狠狠中文字幕| 九九视频黄色片| 日少妇视频| 亚州中文字幕超碰97| 香一区二区三区| 丁香五月激情综合国产| 思思热久久成人| www国产精品| 亚洲深夜福利| 曰本特级特黄特色黄色A级网站高清在线免费看| 亚洲、日韩、综合、另类| 久久精品国产亚洲AV无码电影| 东京热视频网| 天堂性色| 奶水 人妻 哺乳 在线| 91欧美巨乳| 中文字幕啊啊啊在线观看视频| 日本岛国黄色网址| 亚洲AV无码国产精品久久久久 | 日本精品第一视频在'| 色爱三区| 成人日本视频人妻在线| 国产福利精品最新在线| 91色婷婷综合久久中文字幕二区| 丁香六月东京热| 亚洲精品人妻吞精av| 亚洲AV秘 精品久久老牛影视| 中国乱伦一区二区| 日韩性爱小视频在线观看| 一区二区三区黄片免费观看| 美女黄频a美女大全免费皮| 秋霞蝌科网日本一区| 精品一区二区亚洲国产| 97人人射| 青青草日韩无码| juliaann精品熟女一区| 天天做天天爽| 国产日本熟女顶级一区二区三区视频 | 超碰天天操你比| 国产AB视频| 丝袜美腿91| 国产成人亚洲精品无| 中文字幕黄片在线| 特级特黄一级毛片免费| 亚洲加勒比久久日本道| www.色吧5.com| 粉嫩粉嫩一区性色AV片| 亚洲啪啪性视频| 夜夜久久久| 欧美精品三级黄片| 中文字幕一区二区日韩网| 美国一区二区免费视频| 日本特黄f c2| 国产91精品久久久久久久网曝门| 中文日韩欧美熟| 综合五月天| 色视频蜜乳| 91在线无码精品秘 软件| 狠狠久久亚洲欧美专区| 色婷婷久久综合超碰| 久久东京热成人| 中文字幕av亚洲精品| 国产女人操逼视频| www.婷婷五月天| 中文幕97| 啊啊啊操死我| 中文字幕一区二区日韩网| 99亚洲天堂| 欧美亚洲高清不卡| 日本 情色 1区| 99re国产精品视频| AV无码久久久精品| 热天堂一区二区| 色欧美在线| 呦呦影院| 乱伦图一区| caorenqi shipin| 国产中文福利| 久久在肏| 青青久久手机线视频| 大香樵伊人网| 日韩精品一区,二区 九九...老司机| 东京热大香蕉| 夜间福利片1000无码| 亚洲精品影视老司机| 欧美视频在线第3页| 色777999综合| 欧美色视频在线| 婷婷在线播放| 蜜臀va69| 操逼操网| 超硑97精品| 亚洲欧美综合| 91色综| 久久激情视频| 在免费jIzzjIzz在线视频| 久久99999| a级免费在线观看| 嗯嗯嗯好爽| 青青草在线视频播放器| 人妻少妇被猛烈进入中| 超碰 av 女人天堂| 国产精品白丝| 天天干美少妇一区| 日日骚网站| 强奸乱伦日韩AV| 天天日美女的B| 国产曰批免费观看久久久| 好淫网一二三视区| av日韩中文字幕| 亚洲成人av电影在线| 99久久婷婷丁香| 91色欧美| 99精品久久| 91网亚洲| 久久精品国产亚洲AV清纯| 激情六月天| 巨乳特殊服务按摩| 国产91乱伦| 熟女欧美日韩综合婷婷| 综合少妇网| 久久久久婷婷| 国产精品97超碰| 亚洲最大AV网| 成人精品水蜜桃久久久久久久| 国产精品一区二区三区,亚洲综合| 久湿久久| 免费伦费视频在线观看| 九九九九九九九| 极品色www影院| 97在线观看免费| www.久久99| 亚洲九九九九| 97精品一二区| 日韩无码精品综合久久| 热久日综合| 超97在线精品视频| 久久9999| 99视频内射三四| 日韩在线电影| 密臀在线免费观看| 久久国产免费激情视频| 亚洲和欧美裸体美女双飞视频| 色爱三区| 福利视频网站| 国产精品制服丝袜中文字幕日韩一区二区三区 | 五十路六十路素人熟女| 成人天天爽| 午夜色婷婷| 国产强奸乱伦无码视频| 99黄页网站| 国产 v乱码一区二| 干少妇视频| 91综合国产精品| 欧美黄色手机在线观看| 亚洲国产精品久久久男人的天堂| 亚洲欧美国产其他二区| 亚洲蜜臀精品视频久久| 东京热激情视频一二三区| 操逼天美3区| 欧美92| 性欧美体内射精| 国产小视频91| 尤物网站91| 一区二区三区成人| www.色婷婷.com| www.yeyecao| 亚洲色图8| av亚洲天堂资源网站| 色色操| 超碰97久久| 后入式999| 一区二区三区日韩欧美 | 91色黑人少妇| 丰满高潮18xxxx| 国产白丝精品在线观看| 欧 美 自 拍 偷 拍| 久九九九九九九九热| 久久9 9 9精品| 欧美日韩第一页| 久久久久久久伊人精品| 青女偷拍网| 亚洲综合九| 亚洲人成色9999精品久久| 国产熟女免费观看久久| 人人模人人看| 精品美女少妇一区二区| 天美一二三在线观看Av| 曰韩精品九九无码| 亚洲砖码砖专无区2023| 香蕉综合网| 国产精品乱码久久久久久| 偷拍亚洲高清图片| 首页亚洲国产高跟丝袜诱惑视频| av网站在线观看了| 91丨国产丨白浆秘 洗澡动漫| 综合亚洲欧美| 加勒比东京热五月天天堂网| 91最新综合| 久久国产99精品72福利| 蜜乳Av成人片网站| 明星性猛交ⅹxxx乱大交| 美女诱惑久久| 亚洲精品国产拍免费91在线| 老司机免费视频在线91| 日韩超碰精品综合| 91欧美高清| 综合免费无码中文| 日韩精品在线视频在线观看| 亚洲综合九九| 色与欲影视| 久久久青青草| 久久久精选| 天天综合站| 欧美精品不卡一二三四在线91| 精品国产乱码久久久兰草影视| 99热超碰| 日本熟妇熟色97一本在线观看| 成人情色一区二区| 久操网视频| 久操com| 韩国手机不卡无码三级视频| 无码人妻精品一区二区三区99不卡| 97资源久久| 玖玖爱影院| 2024黄色视频| 蜜臀久久99精品久久久| 九九九九国产| 视频国产欧美在线播放| A级国产欧美激情在线| 欧美v日韩v亚洲v最新在线| 久久性爱视频免费看| 日本高清视频xxxx| 亚欧毛片基地国产毛片基地|