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

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

STM32G431 IAP升級(jí)實(shí)戰(zhàn):Ymode協(xié)議從零搭建Bootloader

STM32G431 IAP升級(jí)實(shí)戰(zhàn):Ymode協(xié)議從零搭建Bootloader 簡(jiǎn)介本資源面向STM32嵌入式開(kāi)發(fā)者與需要實(shí)現(xiàn)固件遠(yuǎn)程升級(jí)的工程師提供一套基于Ymode協(xié)議的IAP在線升級(jí)Bootloader完整工程可直接用于STM32G431平臺(tái)的產(chǎn)品固件迭代與維護(hù)場(chǎng)景。壓縮包共200個(gè)文件約10.62MB以C源碼與頭文件為核心包含26個(gè).c與69個(gè).h文件覆蓋HAL庫(kù)外設(shè)驅(qū)動(dòng)、Flash讀寫、串口通信等模塊同時(shí)附帶Keil工程文件、編譯中間產(chǎn)物、hex燒錄文件及map映射表便于直接編譯驗(yàn)證與二次開(kāi)發(fā)。目前已有205人學(xué)習(xí)下載。讀者可從中獲取Ymode協(xié)議解析、IAP跳轉(zhuǎn)邏輯、Flash分區(qū)規(guī)劃與串口收發(fā)等關(guān)鍵實(shí)現(xiàn)思路并借助完整工程結(jié)構(gòu)快速搭建自己的Bootloader框架減少?gòu)牧阏{(diào)試的時(shí)間成本適合具備一定STM32基礎(chǔ)、希望深入理解固件升級(jí)機(jī)制的開(kāi)發(fā)者參考。1. STM32G431 上用 Ymode 協(xié)議做 IAP為什么值得從零搭一遍手里有一塊 STM32G431 的開(kāi)發(fā)板想讓它能通過(guò)串口自己給自己升級(jí)固件不用每次都把調(diào)試器插上去燒錄——這個(gè)需求在量產(chǎn)設(shè)備、現(xiàn)場(chǎng)部署、遠(yuǎn)程維護(hù)場(chǎng)景里非常常見(jiàn)。IAPIn-Application Programming的核心思路是芯片里同時(shí)存在兩段程序一段是 bootloader負(fù)責(zé)接收新固件并寫入 Flash另一段是用戶應(yīng)用App負(fù)責(zé)實(shí)際業(yè)務(wù)邏輯。bootloader 永遠(yuǎn)不參與升級(jí)App 可以被反復(fù)替換。那 Ymode 協(xié)議在這里扮演什么角色簡(jiǎn)單說(shuō)它是一種輕量級(jí)的串口傳輸協(xié)議用來(lái)在 PC 和單片機(jī)之間可靠地傳輸固件數(shù)據(jù)。相比自己裸寫一個(gè)「發(fā)一包、回一個(gè) ACK」的私有協(xié)議Ymode 提供了更完整的幀結(jié)構(gòu)、校驗(yàn)機(jī)制和握手流程能顯著降低傳輸過(guò)程中丟包、錯(cuò)包導(dǎo)致的升級(jí)失敗概率。STM32G431 自帶 128KB Flash、32KB RAMCortex-M4 內(nèi)核跑 170MHz資源做 IAP 綽綽有余關(guān)鍵是把分區(qū)規(guī)劃、跳轉(zhuǎn)邏輯和協(xié)議解析寫對(duì)。這篇文章面向的是有基本 STM32 開(kāi)發(fā)經(jīng)驗(yàn)、會(huì)用 Keil 或 CubeIDE、能看懂 HAL 庫(kù)代碼的嵌入式工程師。如果你之前沒(méi)做過(guò) IAP跟著走能跑通如果你做過(guò)但用的是自定義協(xié)議這里能看到 Ymode 的幀設(shè)計(jì)和分區(qū)方案有什么不同。下面從 Flash 分區(qū)開(kāi)始一步步把 bootloader 搭起來(lái)。2. Flash 分區(qū)規(guī)劃與 Ymode 幀結(jié)構(gòu)動(dòng)手前必須定下來(lái)的事2.1 STM32G431 的 Flash 頁(yè)分布與分區(qū)方案STM32G431 的 Flash 按頁(yè)擦除每頁(yè) 2KB總共 64 頁(yè)128KB。做 IAP 的第一步不是寫代碼而是畫一張分區(qū)表。分錯(cuò)了后面全要返工這是血淚經(jīng)驗(yàn)。我一般會(huì)這樣分區(qū)域起始地址大小用途Bootloader0x0800000020KB10頁(yè)存放 bootloader 代碼參數(shù)區(qū)0x080050002KB1頁(yè)存放升級(jí)標(biāo)志、固件長(zhǎng)度、CRCApp 區(qū)0x08005800100KB50頁(yè)存放用戶應(yīng)用固件預(yù)留區(qū)0x0801E8006KB3頁(yè)后續(xù)擴(kuò)展或備份Bootloader 放最前面是因?yàn)?Cortex-M4 復(fù)位后從 0x08000000 取向量表這是硬件決定的。參數(shù)區(qū)單獨(dú)占一頁(yè)用來(lái)存「是否需要升級(jí)」「新固件多大」「CRC 校驗(yàn)值」這幾個(gè)關(guān)鍵信息掉電不丟。App 區(qū)從 0x08005800 開(kāi)始注意這個(gè)地址必須是 2KB 對(duì)齊的否則擦除時(shí)會(huì)誤傷前一頁(yè)。注意G431 的 Flash 擦除粒度是頁(yè)寫入粒度是雙字64位。寫之前必須整頁(yè)擦除不能像 EEPROM 那樣按字節(jié)改。2.2 Ymode 協(xié)議幀格式與校驗(yàn)邏輯Ymode 的幀結(jié)構(gòu)不復(fù)雜但每個(gè)字段都有存在的理由。典型幀格式如下| 幀頭(1B) | 命令(1B) | 長(zhǎng)度(2B) | 數(shù)據(jù)(NB) | CRC16(2B) |幀頭固定為 0x59Ymode 的標(biāo)識(shí)命令字段區(qū)分握手、數(shù)據(jù)、結(jié)束等操作長(zhǎng)度字段告訴接收方后面跟多少字節(jié)數(shù)據(jù)CRC16 覆蓋命令長(zhǎng)度數(shù)據(jù)部分。接收方收到幀后先驗(yàn)幀頭再驗(yàn) CRC兩步都過(guò)了才處理。為什么用 CRC16 而不是簡(jiǎn)單累加和因?yàn)楣碳鬏敂?shù)據(jù)量大累加和漏檢率太高CRC16 能檢出絕大多數(shù)隨機(jī)錯(cuò)誤和突發(fā)錯(cuò)誤。Ymode 的 CRC16 一般用 CCITT 多項(xiàng)式0x1021初始值 0xFFFF這個(gè)組合在嵌入式里很常見(jiàn)代碼也好找。命令字段我一般定義這幾個(gè)0x01握手請(qǐng)求PC 問(wèn)單片機(jī)「你準(zhǔn)備好了嗎」0x02握手應(yīng)答單片機(jī)回「我準(zhǔn)備好了」0x03數(shù)據(jù)幀攜帶固件內(nèi)容0x04結(jié)束幀告訴單片機(jī)「發(fā)完了」0x05應(yīng)答 ACK接收方確認(rèn)上一幀正確0x06錯(cuò)誤 NAK要求重發(fā)握手階段很重要不能省。它讓雙方確認(rèn)波特率、數(shù)據(jù)格式一致避免 PC 已經(jīng)開(kāi)始發(fā)了、單片機(jī)還在初始化的情況。2.3 用代碼定義幀結(jié)構(gòu)和 CRC 計(jì)算先看幀結(jié)構(gòu)體的定義和 CRC16 的實(shí)現(xiàn)#include stdint.h #include string.h #define YMODE_HEADER 0x59 #define YMODE_CMD_HANDSHAKE 0x01 #define YMODE_CMD_HANDSHAKE_ACK 0x02 #define YMODE_CMD_DATA 0x03 #define YMODE_CMD_END 0x04 #define YMODE_CMD_ACK 0x05 #define YMODE_CMD_NAK 0x06 #define YMODE_MAX_DATA_LEN 256 typedef struct { uint8_t header; // 幀頭固定 0x59 uint8_t cmd; // 命令字 uint16_t data_len; // 數(shù)據(jù)長(zhǎng)度小端序 uint8_t data[YMODE_MAX_DATA_LEN]; // 載荷 uint16_t crc; // CRC16 校驗(yàn)值 } ymodem_frame_t; // CRC16-CCITT 查表法實(shí)現(xiàn)速度快適合 170MHz 的 G431 static const uint16_t crc16_table[256] { 0x0000, 0x1021, 0x2042, 0x3063, /* ... 完整表省略實(shí)際使用需補(bǔ)全 ... */ }; uint16_t ymodem_crc16(const uint8_t *buf, uint32_t len) { uint16_t crc 0xFFFF; // 初始值 for (uint32_t i 0; i len; i) { crc (crc 8) ^ crc16_table[((crc 8) ^ buf[i]) 0xFF]; } return crc; }這段代碼里ymodem_frame_t結(jié)構(gòu)體定義了幀的內(nèi)存布局注意data_len和crc都是小端序因?yàn)?STM32 是小端芯片PC 端打包時(shí)也要按小端來(lái)。CRC 計(jì)算覆蓋范圍是cmd到data末尾不包括幀頭本身——幀頭只用來(lái)做同步不參與校驗(yàn)。參數(shù)方面YMODE_MAX_DATA_LEN設(shè) 256 是權(quán)衡結(jié)果太小則幀數(shù)多、握手開(kāi)銷大太大則接收緩沖區(qū)占 RAM 多而且串口中斷處理時(shí)間變長(zhǎng)。256 字節(jié)在 115200 波特率下大約 22ms 傳完中斷不會(huì)阻塞太久。2.4 串口接收狀態(tài)機(jī)別在中斷里做重活串口接收不能收到一個(gè)字節(jié)就處理一個(gè)字節(jié)那樣容易丟數(shù)據(jù)。常見(jiàn)做法是中斷里只往環(huán)形緩沖區(qū)塞主循環(huán)里再解析幀。下面是一個(gè)簡(jiǎn)化的狀態(tài)機(jī)typedef enum { STATE_IDLE, // 等待幀頭 STATE_CMD, // 收到幀頭等命令字 STATE_LEN, // 等長(zhǎng)度字段2字節(jié) STATE_DATA, // 收數(shù)據(jù) STATE_CRC, // 收 CRC2字節(jié) } rx_state_t; static rx_state_t rx_state STATE_IDLE; static ymodem_frame_t rx_frame; static uint16_t rx_data_idx 0; static uint8_t rx_len_bytes[2]; static uint8_t rx_len_idx 0; void ymodem_rx_byte(uint8_t byte) { switch (rx_state) { case STATE_IDLE: if (byte YMODE_HEADER) { rx_frame.header byte; rx_state STATE_CMD; } break; case STATE_CMD: rx_frame.cmd byte; rx_state STATE_LEN; rx_len_idx 0; break; case STATE_LEN: rx_len_bytes[rx_len_idx] byte; if (rx_len_idx 2) { rx_frame.data_len rx_len_bytes[0] | (rx_len_bytes[1] 8); if (rx_frame.data_len YMODE_MAX_DATA_LEN) { rx_state STATE_IDLE; // 長(zhǎng)度非法丟棄 } else { rx_data_idx 0; rx_state (rx_frame.data_len 0) ? STATE_DATA : STATE_CRC; } } break; case STATE_DATA: rx_frame.data[rx_data_idx] byte; if (rx_data_idx rx_frame.data_len) { rx_state STATE_CRC; rx_len_idx 0; } break; case STATE_CRC: rx_len_bytes[rx_len_idx] byte; if (rx_len_idx 2) { rx_frame.crc rx_len_bytes[0] | (rx_len_bytes[1] 8); // 校驗(yàn)對(duì) cmd len data 算 CRC uint8_t tmp[YMODE_MAX_DATA_LEN 3]; tmp[0] rx_frame.cmd; tmp[1] rx_frame.data_len 0xFF; tmp[2] (rx_frame.data_len 8) 0xFF; memcpy(tmp[3], rx_frame.data, rx_frame.data_len); uint16_t calc ymodem_crc16(tmp, rx_frame.data_len 3); if (calc rx_frame.crc) { ymodem_frame_ready(rx_frame); // 交給主循環(huán)處理 } rx_state STATE_IDLE; } break; } }狀態(tài)機(jī)的邏輯是逐字節(jié)推進(jìn)只有完整收到一幀且 CRC 通過(guò)才置標(biāo)志位。ymodem_frame_ready只是把幀拷到另一個(gè)緩沖區(qū)并置一個(gè) volatile 標(biāo)志主循環(huán)看到標(biāo)志再處理這樣中斷里不會(huì)做 Flash 擦寫這種耗時(shí)操作。注意rx_frame和rx_state如果主循環(huán)也要讀需要加 volatile 或關(guān)中斷保護(hù)否則編譯器優(yōu)化可能出玄學(xué)問(wèn)題。3. Bootloader 跳轉(zhuǎn)與 App 接收從握手到寫入 Flash 的完整鏈路3.1 跳轉(zhuǎn)前的準(zhǔn)備工作關(guān)中斷、設(shè)棧頂、改向量表Bootloader 收到完整固件并寫入 App 區(qū)之后下一步是跳過(guò)去執(zhí)行。跳轉(zhuǎn)不是一句goto就完事要做三件事第一關(guān)閉所有中斷和外設(shè)。SysTick、USART、DMA 都要 DeInit不然跳過(guò)去之后中斷向量還指向 bootloader 的處理函數(shù)一觸發(fā)就 HardFault。第二設(shè)置主棧指針MSP。App 的向量表第一個(gè)字就是棧頂?shù)刂诽D(zhuǎn)前要把它讀出來(lái)賦給 MSP。第三設(shè)置向量表偏移。App 的向量表在 0x08005800而 SCB-VTOR 默認(rèn)指向 0x08000000必須改過(guò)來(lái)。typedef void (*app_entry_t)(void); void jump_to_app(uint32_t app_addr) { uint32_t stack_top *(volatile uint32_t *)app_addr; uint32_t reset_handler *(volatile uint32_t *)(app_addr 4); // 檢查棧頂是否合法在 SRAM 范圍內(nèi) if (stack_top 0x20000000 || stack_top 0x20008000) { return; // 非法棧頂不跳 } // 關(guān)中斷 __disable_irq(); // 關(guān) SysTick SysTick-CTRL 0; SysTick-LOAD 0; SysTick-VAL 0; // 反初始化 HAL 和串口 HAL_DeInit(); // 設(shè)置向量表偏移 SCB-VTOR app_addr; // 設(shè)置 MSP __set_MSP(stack_top); // 跳轉(zhuǎn) app_entry_t app (app_entry_t)reset_handler; __enable_irq(); app(); }app_addr就是 0x08005800。棧頂檢查那一步別省如果 App 區(qū)是空的全 0xFF棧頂讀出來(lái)就是 0xFFFFFFFF直接設(shè) MSP 會(huì)立刻 HardFault連調(diào)試信息都看不到。加上范圍檢查至少能安全返回。3.2 接收固件并寫入 Flash按頁(yè)擦、按雙字寫Flash 寫入流程是收到數(shù)據(jù)幀 → 攢夠一頁(yè) → 擦除該頁(yè) → 寫入 → 回 ACK。G431 的 HAL 庫(kù)提供了HAL_FLASH_Unlock、HAL_FLASHEx_Erase、HAL_FLASH_Program三個(gè)函數(shù)用起來(lái)不復(fù)雜但有幾個(gè)參數(shù)必須設(shè)對(duì)。#define APP_START_ADDR 0x08005800 #define FLASH_PAGE_SIZE 2048 static uint32_t write_addr APP_START_ADDR; static uint8_t page_buf[FLASH_PAGE_SIZE]; static uint16_t page_offset 0; int flash_write_page(uint32_t addr, uint8_t *data, uint32_t len) { HAL_FLASH_Unlock(); // 擦除目標(biāo)頁(yè) FLASH_EraseInitTypeDef erase {0}; erase.TypeErase FLASH_TYPEERASE_PAGES; erase.Page (addr - 0x08000000) / FLASH_PAGE_SIZE; erase.NbPages 1; uint32_t page_error 0; if (HAL_FLASHEx_Erase(erase, page_error) ! HAL_OK) { HAL_FLASH_Lock(); return -1; } // 按雙字64位寫入 for (uint32_t i 0; i len; i 8) { uint64_t dword 0; uint32_t remain len - i; uint32_t n (remain 8) ? 8 : remain; memcpy(dword, data[i], n); if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, addr i, dword) ! HAL_OK) { HAL_FLASH_Lock(); return -2; } } HAL_FLASH_Lock(); return 0; }erase.Page的計(jì)算方式是(addr - 0x08000000) / 2048因?yàn)轫?yè)號(hào)是從 Flash 基地址開(kāi)始算的。HAL_FLASH_Program的第二個(gè)參數(shù)是目標(biāo)地址第三個(gè)參數(shù)是 64 位數(shù)據(jù)注意最后一個(gè)雙字如果不滿 8 字節(jié)要補(bǔ) 0xFF 而不是補(bǔ) 0因?yàn)?Flash 擦除后的狀態(tài)就是 0xFF。數(shù)據(jù)攢頁(yè)的邏輯每收到一幀數(shù)據(jù)就往page_buf里拷page_offset累加到 2048 就調(diào)flash_write_page寫一頁(yè)然后page_offset歸零。最后一頁(yè)不滿也要寫不足部分補(bǔ) 0xFF。3.3 升級(jí)標(biāo)志與 CRC 校驗(yàn)讓 bootloader 知道該不該跳B(niǎo)ootloader 上電后第一件事是讀參數(shù)區(qū)看有沒(méi)有升級(jí)標(biāo)志。如果有就留在 bootloader 等 PC 發(fā)固件如果沒(méi)有直接跳 App。參數(shù)區(qū)的數(shù)據(jù)結(jié)構(gòu)我一般這樣定義#define PARAM_ADDR 0x08005000 typedef struct { uint32_t magic; // 魔數(shù)0x5A5A5A5A 表示參數(shù)有效 uint32_t upgrade_flag; // 1 表示需要升級(jí) uint32_t fw_size; // 固件字節(jié)數(shù) uint32_t fw_crc; // 固件 CRC32 } param_t;上電流程void bootloader_main(void) { param_t *param (param_t *)PARAM_ADDR; if (param-magic ! 0x5A5A5A5A || param-upgrade_flag ! 1) { // 無(wú)升級(jí)請(qǐng)求直接跳 App jump_to_app(APP_START_ADDR); } // 有升級(jí)請(qǐng)求初始化串口等 PC 發(fā)固件 uart_init(115200); ymodem_receive_firmware(); // 接收完成后校驗(yàn) CRC uint32_t crc crc32_calc((uint8_t *)APP_START_ADDR, param-fw_size); if (crc param-fw_crc) { param-upgrade_flag 0; flash_write_param(param); // 清除升級(jí)標(biāo)志 jump_to_app(APP_START_ADDR); } else { // 校驗(yàn)失敗留在 bootloader 等重發(fā) uart_send_nak(); } }CRC32 用標(biāo)準(zhǔn)多項(xiàng)式 0x04C11DB7PC 端算好之后通過(guò)結(jié)束幀發(fā)過(guò)來(lái)bootloader 收到后對(duì) App 區(qū)數(shù)據(jù)再算一遍兩邊一致才跳轉(zhuǎn)。這一步是最后一道防線能攔住傳輸過(guò)程中被干擾但 CRC16 沒(méi)檢出的錯(cuò)誤。3.4 PC 端發(fā)送工具的關(guān)鍵參數(shù)PC 端用 Python 寫一個(gè)發(fā)送腳本核心是pyserial庫(kù)。關(guān)鍵參數(shù)import serial import struct import time ser serial.Serial( portCOM3, baudrate115200, bytesizeserial.EIGHTBITS, parityserial.PARITY_NONE, stopbitsserial.STOPBITS_ONE, timeout2 ) def send_frame(cmd, datab): length len(data) payload struct.pack(BH, cmd, length) data crc crc16_ccitt(payload) frame b\x59 payload struct.pack(H, crc) ser.write(frame) # 等 ACK resp ser.read(1) return resp b\x06 # 假設(shè) ACK 用 0x06 表示波特率 115200 是保守選擇G431 跑 170MHz 可以上到 921600 甚至更高但前提是串口時(shí)鐘配置正確、線材質(zhì)量過(guò)關(guān)。第一次調(diào)通建議先用 115200穩(wěn)定后再提速。timeout2是等 ACK 的超時(shí)太短容易誤判重發(fā)太長(zhǎng)則升級(jí)慢。4. 避坑與排查IAP 升級(jí)中最容易翻車的五個(gè)地方4.1 跳轉(zhuǎn)后 App 跑不起來(lái)卡在 HardFault現(xiàn)象bootloader 跳轉(zhuǎn)后App 沒(méi)有任何輸出調(diào)試器顯示停在 HardFault_Handler。原因最常見(jiàn)的是向量表沒(méi)設(shè)對(duì)。App 編譯時(shí)鏈接地址還是 0x08000000但實(shí)際燒在 0x08005800中斷向量表里的地址全是錯(cuò)的。另一個(gè)可能是跳轉(zhuǎn)前沒(méi)關(guān) SysTickSysTick 中斷觸發(fā)后跳到 bootloader 的舊向量。解決App 工程的鏈接腳本.ld 或 Keil 的 IROM 設(shè)置必須改成起始 0x08005800同時(shí)在 App 的main函數(shù)開(kāi)頭加SCB-VTOR 0x08005800;。跳轉(zhuǎn)前確認(rèn)SysTick-CTRL 0已執(zhí)行。4.2 Flash 寫入返回 HAL_ERROR現(xiàn)象HAL_FLASH_Program返回 HAL_ERROR數(shù)據(jù)寫不進(jìn)去。原因三種可能——目標(biāo)頁(yè)沒(méi)擦除、寫入地址不是 8 字節(jié)對(duì)齊、Flash 沒(méi)解鎖。G431 的 Flash 寫入要求地址 8 字節(jié)對(duì)齊如果write_addr是奇數(shù)或者不是 8 的倍數(shù)直接報(bào)錯(cuò)。解決檢查write_addr是否從 0x08005800 開(kāi)始且每次加 8確認(rèn)HAL_FLASH_Unlock()在擦除和寫入之前都調(diào)了擦除后讀一下目標(biāo)地址應(yīng)該是 0xFF。4.3 串口丟數(shù)據(jù)升級(jí)到一半卡死現(xiàn)象升級(jí)過(guò)程中進(jìn)度條走到某個(gè)位置就不動(dòng)了PC 端等 ACK 超時(shí)。原因接收中斷優(yōu)先級(jí)太低被其他中斷打斷導(dǎo)致串口溢出或者環(huán)形緩沖區(qū)太小主循環(huán)處理不及時(shí)。解決把串口中斷優(yōu)先級(jí)設(shè)到最高搶占優(yōu)先級(jí) 0環(huán)形緩沖區(qū)至少 512 字節(jié)主循環(huán)里處理幀的速度要快Flash 擦寫操作放在幀處理之后不要阻塞接收。4.4 升級(jí)完成后 App 的全局變量初值不對(duì)現(xiàn)象App 跑起來(lái)后一些初始化為非零的全局變量值是 0。原因啟動(dòng)文件里的.data段拷貝邏輯依賴鏈接腳本如果鏈接腳本沒(méi)改.data段的加載地址和運(yùn)行地址對(duì)不上拷貝出來(lái)就是錯(cuò)的。解決App 工程的鏈接腳本要同時(shí)改 Flash 起始地址和.data段的 LMA加載地址。用 CubeIDE 的話在STM32G431XX_FLASH.ld里把FLASH的ORIGIN改成0x08005800.data段會(huì)自動(dòng)跟著調(diào)整。4.5 參數(shù)區(qū)數(shù)據(jù)掉電丟失現(xiàn)象升級(jí)標(biāo)志寫進(jìn)去了斷電再上電讀出來(lái)是 0xFFFFFFFF。原因參數(shù)區(qū)所在的頁(yè)沒(méi)有正確擦除就寫入或者寫入后沒(méi)有等 Flash 操作完成就斷電。解決寫參數(shù)前先擦除整頁(yè)寫入后調(diào)HAL_FLASH_Lock()并加一個(gè)短延時(shí)比如 10ms再斷電參數(shù)結(jié)構(gòu)體加魔數(shù)校驗(yàn)?zāi)?shù)不對(duì)就認(rèn)為參數(shù)無(wú)效走默認(rèn)跳 App 流程。5. 進(jìn)階技巧雙區(qū)備份與差分升級(jí)的取舍把基礎(chǔ) IAP 跑通之后下一步自然會(huì)想如果升級(jí)過(guò)程中斷電了怎么辦App 區(qū)被擦了一半跳也跳不過(guò)去設(shè)備變磚。這就是雙區(qū)備份要解決的問(wèn)題。雙區(qū)方案是在 Flash 里劃兩個(gè) App 區(qū)比如 App-A 從 0x08005800 開(kāi)始App-B 從 0x0800C800 開(kāi)始各占 50KB。bootloader 里維護(hù)一個(gè)「當(dāng)前活動(dòng)區(qū)」標(biāo)志升級(jí)時(shí)往非活動(dòng)區(qū)寫寫完后校驗(yàn) CRC通過(guò)則切換活動(dòng)區(qū)標(biāo)志并跳轉(zhuǎn)不通過(guò)則繼續(xù)用舊區(qū)。這樣即使升級(jí)中斷舊區(qū)仍然完整可用。代價(jià)是 Flash 利用率減半。G431 只有 128KB雙區(qū)之后每個(gè) App 最多 50KB 左右稍微大一點(diǎn)的工程就放不下。所以雙區(qū)適合對(duì)可靠性要求極高、固件體積可控的場(chǎng)景。另一個(gè)方向是差分升級(jí)只傳新舊固件之間的差異部分減少傳輸時(shí)間。但差分算法比如 bsdiff需要額外的 RAM 和 Flash 來(lái)解壓和合并G431 的 32KB RAM 跑起來(lái)比較吃力而且 bootloader 里要集成解壓庫(kù)復(fù)雜度上升不少。我的習(xí)慣是如果串口速率能到 921600全量升級(jí) 100KB 固件也就十幾秒差分帶來(lái)的收益不值得那個(gè)復(fù)雜度。最后說(shuō)一個(gè)驗(yàn)證技巧每次升級(jí)完成后不要只看「跳轉(zhuǎn)成功」就完事。在 App 里加一段代碼上電后往參數(shù)區(qū)寫一個(gè)「啟動(dòng)計(jì)數(shù)」如果連續(xù)啟動(dòng)失敗三次自動(dòng)回退到 bootloader 等待重新升級(jí)。這個(gè)機(jī)制在實(shí)驗(yàn)室里可能永遠(yuǎn)用不上但在現(xiàn)場(chǎng)部署時(shí)能救命。我自己就遇到過(guò)一批設(shè)備因?yàn)殡娫醇y波導(dǎo)致 App 啟動(dòng)偶發(fā)失敗靠這個(gè)回退機(jī)制遠(yuǎn)程恢復(fù)了大部分剩下的才需要現(xiàn)場(chǎng)處理。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
999 久久久| 色色婷婷五月天| 超碰九7免费| 天天插天天操| 国产精品乱码久久| 久久久久久性爱视频| 91P0RNY大屁股人妻| se..亚洲欧美| 亚洲色图综合网| 日韩性爱网址| 老司机午夜精品视频| 日本精品国产视频| 婷婷六月色开| 操逼免费视频无码国产| 亚洲成人ab| 91色爽欧美| 18禁超污无遮挡无码免费网| 亚洲无码日韩电影| 欧美另类自拍 | 亚洲色人阁| 一区二区 电影 亚洲| 亚洲成av人片色午夜乱码| 国产9 9在线 | 亚洲| 91欧美少妇| 午夜激情床戏激情| 综合一区中亚洲国产成人综合精品| 日韩性爱小视频| 91视频综合在线| 无码9区| 久久欲| 97久久久久久久久久| 91久久久久久久久久久| 午夜丁香婷婷| 天天日少妇逼AV| 人人贴人人摸| 韩国三级一线观看久| 精人妻一区二区三区| AV天堂男人的天堂| 啊啊啊啊好疼| 亚洲自拍97| 欧美 亚洲精品首页| 久九色| 草B在线| 亚洲AV乱码专区国产噜噜亚洲| 欧美性爱在线无码| 狠狠干综合| 亚洲自拍天堂| 91精品大奶人妻| 秋霞欧美性爰视频| 欧洲色| 欧美综合自拍成人自拍第二十页| 天天操女人| 二对二中文字幕。| 我中文字幕6区| 精彩久久中文| 九九九色| 国产黄色视频久久| 99中文字幕| 操逼网站网站| AV和黑人在线播放| 干干干天天| 欧美性爱精品七区| 日韩AV无码中文一区二区| 97超碰香蕉| 久久一二三四| 欧美日韩香蕉| 美女毛片999| 十八禁视频网站| 日韩AV电影网站| 富二代亚洲精品99| 亚洲丨在线| 日韩啪啪啪视频| 欧美专利1区2区3区4区5区免费| 日本三级韩三级99久久| 爱爱动态试试看6 0秒| 欧美伦乱| 激情小说日韩无码| 亚洲导航深夜福利| 婷婷五月丁香五月| 97超碰资源网| 老熟女91视频| 中文一区在线视频| 91国产精品熟女| 少妇内射www在线观看视频| 欧美在线色图| 欧美97av| 97视频免费在线观看| 国产成人精品必看| 男人精品天堂一区| 伊人久久综合精品欧美| 色色香蕉| 综合网久久| 久久精品视频28| 美女t无毒不卡不卡| 国产v片在线免费观看| 欧美自拍偷拍免费观看| 涩爱AV在线| 欧综合网| 国产玖玖| 老鸭窝成人| 麻豆国产视频精品观看| 啊啊啊不要啊啊受不了了视频在线| 2017,超碰| 成人五月天丁香激情综合| 五月丁香婷婷啪啪| 久久超碰天天| 人妻激情偷乱视频一区二区三区 | wuyechaopeng| 精品美女少妇一区二区| 精品国产人成在线| 91性感网站| 思思久热在线精品66| 九九香蕉网| 18一区二区三区| 九t超碰| 十八岁啪啪视频免费看| 夜夜操一区二区| 人人做天天爱| 大香蕉欧美伊| 亚洲国产精品无码AV久久久| 91网站18在线| 国产欧美一级在线观看| 久久国色天香香蕉| 老司机福利青青草| 操操AV电影| 9久9久| 久久久久9| 欧美激情高清性猛交| 欧亚免费视频| 草久在线| 午夜毛片高清免费不卡| 影音先锋中文字幕日本好一区二区| 国产黄a三级三级三级av在线看| 天天干人人乐| 91天天综合网,天天综合网| 成人性爱AV在线免费观看| 中国AAAAAA黄色片| 91国产美女丝袜足交精品视频| 亚洲激情综合另类男同| 天天干人妻| 91三级理论片播放器| 玖玖综合视频| 情色AV电影| 中文熟女五十乱码在线| 五月婷丁香| 夜夜夜夜久久久久| 男人天堂站| 岛国黄| juliaann精品熟女一区| {男男暴菊gay无套网站| 亚洲色图综合网| 韩日无码在线观看| 特污精品女优骚货黄色视频在线免费观看| 91欧美高清| 亚洲啪啪视频免费| 欧美日韩小说| 亚洲天堂人人妻| 爱av免费| 亚洲阿v天堂无码z2018| 2020天天色综合| 欧美日韩淫加| 日日碰狠狠添天天爽超| 亚洲自拍天堂| 亚州性9| 欧美日韩人妻少妇 一区二区三区| 日韩成人电影AV| 少妇厨房愉情理伦片bd在线观看| 欧美综合网在线| 亚洲综合图片在线| 69超碰综合| 三级AV入口| 日韩一二三区| 啊啊啊97视频| 婷婷五月影院| 亚洲 无码 偷拍| 久久是精品| 97香蕉碰碰人妻国产欧美| 在线播放成人高清免费视频 | av亚欧| 中文字幕第95页| 色久桃花影院在线观看| 超碰久久综合| 亚洲熟女一区| 久久精品天美| 黑操B| 国产精品制服丝袜清纯唯美 | 久久精品国产亚洲AV高清演员表| 欧美一区二区| 爱丝福利| 人人九九精| 97超碰色屌| 理论久久婷婷网 8| 肥臀熟女福利视频一区二区| 五月天婷婷成人网| 欧美疯狂做爰xxxx| 国产日韩欧美三级片| 91精品微拍福利| 日本Suv精品一区二区| 区自美91| 蜜桃香蕉久草精品在线| 91国内外在线| 欧美玖玖爱免费玖玖| 亚洲另类久操网| 情色日播放AV| 欧美在线官网| 亚洲熟妇图片| 91色碰| 69精品少妇一区二区三区蜜桃| 91九色精品熟女内射| 欧美日韩性爱视屏免费看了| 最新日产中文在线麻豆| 在线无码操| 3028国产精品| 热99这里只有精品| 操91| 亚洲另类综合欧美| 91日日| 啊啊啊好湿久久| 人妻天天爽夜夜爽精品2| 性色avv| 中文一区二区婷婷视频| 久久久少妇诱惑精品视频| 老熟女中文字幕高清| 日韩av色图| 日韩精品大香蕉伊人在线| 亚洲系列欧美| 一区二区三区国产在线播放 | 香蕉视频精品亚洲一区二区三区在线播| 亚州欧美在线| 一级性爱视频免费在线| 欧美日韩日产免费网站看| 男人天堂黄片| 大香蕉五月天婷婷| 好爽,再快点啊哈嗯嗯嗯嗯| 中文字幕在在线观看网站| 97超碰免费人人性爱| 亚洲熟女乱综合一区二区三区 | 中文?日韩?免费?精品| 亚洲人成网站7777| 色色色色日本| 人妻少妇一区二区| 欧美人妻色| 粉嫩av一区二区三区四季| 久久99久久99精品天美传媒棢·纸:.| 熟妇综合一区二区三区| 久精品无码av一区二免费国产在线观看 | 在线二区不卡| 家庭乱伦麻豆| 欧美日本国产日韩激情视频| 人妻啊啊人妻啊啊| 久久久久国产| 日本媚薬中文字幕在线| 国产91精品福利在线| 乱伦熟女区| 国产精品对白内射| 亚洲狠狠入| 国产91影院| 美中日韩无码| 青苹果影院男人的天堂| 密臀成人视频久久久| 狠狠操使劲操| av天堂5| 天美一二三在线观看Av| 神马麻豆福利院| 国产精品麻豆视频网站| 亚州乱码中文字幕综合久久久| 屁股久久久久久久久| 亚洲无线观看久久| 国产亚洲色婷婷久久99精品91| 国产SV一线| 国产精品另类一区大香蕉| 久久无码一区二区二三区性色| 亚洲AV成人无码久久精品播放| 少妇毛片久久| 探花精品 一区二区| 亚洲AV无码成人精品久久| 嗯阿好爽好紧| 国产 日韩 欧美一区| 欧美日本国产日韩激情视频| 69人妻精品丰满熟女区| 亚洲人妻在线精品| 嗯嗯啊好大| 国产成人手机视频激情| 一个人在线看的黄色电影网站| 伦理日韩国产久久| 国产精品免费视频人成| 人妻蜜桃臀| 久久av成人无码免费| 欧美成不卡网| a片 xxxx受爽视频| 欧美少妇大量自拍视频在线观看| 久久久久99精品成人片蜜臀| 日韩av乱伦| nuu12国产麻豆精品| 91亚洲色人| 国产精品乱人伊人网| 日韩十八禁| 污到发麻的视频 国产| 亚洲男人天堂手机版| 浪人综合网| 美日韩在线不卡人妻| 先锋影音av先锋一区| 亚洲骚女一区二区三区| av黄图片在线观看| 69人妻精品丰满熟女区| 日婷婷| 久久久久密臀一区二区| 插穴性爱视频在线观看| 4虎在线视频| 乱伦AVxx| 中文三一区| 人妻天天夜夜爽一区二区| 怡春院久久| 婷婷色色五月| 精品久久久久久中文字幕视频免费| 男人天堂2019亚洲| 亚洲精品乱码线路中文字幕| 久久宗合亚洲| 日韩啪啪网| 色九久| 少妇毛片久久| 91黑人无码激情在线| av日韩中文字幕| 伊人99热| www.91理论| 小电影欧美91| 欧美性色综合网| 国产在线强奸视频| 精品久久久一本一道| 伊人亚洲国产一成人久久精品,久久| 国产后入| 久久久久久久久久久久欧美日| 多乙久久久久久| 99精品人妻| 国产精品视频| 后入 亚洲 美女 射| 日韩极品无码B| 超碰 国产熟女精品一区| 丁香五月成人| 岛国艾薇凹凸视频天堂| 91亚洲色图| 性色av网站| 99久久99久久免费精品蜜臀| 一级免费精品| 久久九七| 91久久久久久久久久久| 天堂中文资源在线bt| 亚洲久久久久| 日韩电影免费网站麻豆视频| 97碰碰日本乱偷人妻中文的| 欧美嗯啊……在线观看视频免费| 亚洲情色中文字幕一区| 最新岛国大片| 日韩精品资源专区二区| 去干网最新版| 欧美一区二区三区互相| 久操国产在线| 日韩有码回春沙龙第一页| 亚洲网自拍| 超碰av在线| 综合五月婷婷亚洲一区| 被操高清无码视频| 中文字幕在线免费观看 | 亚洲最新a在线观看| 伊人国产成人av网站| 亚洲欧美综合图片| 死我十八禁| 99热日| 久草精品国产蜜臀| 内射黑人| 超碰97资源大奶| 亚洲。日韩。欧美| 中文字幕日韩综合| 蜜桃色色网站视频三区| 看日韩美女二区三区免费操逼视频 | 日韩97P| 97国产精品在线观看| 精品一区二区三区四区女| 久操高青| 蜜臀av在线播放一区二区三区| 看一级黄色视频| 国产小视频91| 天天插天天操| 国产情色在线| 久久黄黄| 狂操嫩妻视频一区二区三区| 久久久久成人网| 疯操AV| 亚洲有薄码区久久在线一区| 老女人爆菊| 自拍偷拍第26| 国产精品麻豆免费视频| 国模无码人体一区二区三| 亚洲欧美第一页| 人人操人人肉久久精品| 九九九一二三| av一区二区三区不卡| 中文一区二区三区影院| 亚洲一区日韩精品中文字幕| 国产亚洲色停停久久99精品91| 国产精品ww久久| 亚洲欧美高清无码| 久久亚洲AV无码专区国产精品| 少妇3P性爱自拍| 精品一啪| 99热综合在线| 黑丝日韩av丝袜av| 亚洲天天精品| 人妻精品一区二区| 91影库| 秋霞影音一区二区三区| 日韩三级视频一区二区三区| 操穴国产| 亚洲丝袜99| 亚洲清纯综合| 色欲Av人妻精品一区二| 黄色一级视| 色激情五月天| 亚洲鸥美色图| 久艹日日日| 95自拍视频在线观看| 蜜臀AV网站| 男人天堂.AB| 色哟哟av网址| 中文字幕后石码四区五区| 一级日本牲交大片好爽在线看| 亚洲成人性爱在线观看| 日本操逼无码| 超碰成人国产| 亚洲女毛多水多21P| 校园春色亚洲欧洲| 9999九九九久久久| 啊啊啊啊二区好大| 欧美Ⅴ性爱| 国产日韩区| 五月天综合网| 亚洲欧美91√| 国产在线综合网| 日韩乱伦影音先锋| 麻豆影音天美视频| 另类欧美色| 天天操天天射天天日| 麻豆人妻精品一区二区| 中文字幕欧美日本乱码一线二线| 中日韩免费看男女操逼大全| 黄色一级视| 四季AV一区二区凹凸精品小说| 一本色道人妻久久| 精品久久人妻成人网| 精品人妻夜夜草| 久久久青青草| 牛黄色久午久| 超碰久久精品| 天天操夜夜嗨| 日韩天堂av电影在线观看| 一二三四区电影| 人人艹亚洲| 97AV爱| 人人妻人射| 中日韩久久久| 欧洲中文字幕| 免费看黄片现成| 综合激情97| 97九色人妻| 亚洲啪啪视频一区二区| 日本丝袜美腿人妻九九| 26uuu最新| 亚洲欧洲小说图片视频 | 亚洲色综网| 亚欧成人综合影院| 吉川爱美亚洲二区在线| 久久久精品中文字幕爱豆| 日韩成人色图| 探花精品 一区二区| 91美女中出| 老熟妇91| 色九九九综合| 久久久熟妇熟女国产| 亚洲影视综合网| 夜夜精品视频| 刺激性视频黄页| 92性色国产午夜福利在线661| 久操高青| 国产操逼视频在线观看| 亚州色阁| 亚洲色综合| 欧美性91| 国产美脚女优尤物在线观看| 秋霞网—男女啪啪亚洲免费体验区 | 天天天肏屄肏屄肏屄欧美欧美| 国产成人网站在线观看| 91人人| 大香蕉综合| 中文色综合| 蜜臀在线看片| 夜夜中出国产| 欧美国产精品| 精品免费囯产一区二区三区| 黄页大片在线观看| 免费看黄视频亚洲网站| 久艹免费| 天天舔九色婷婷| 九九探花视频在线观看| 91精品91久久久中77777| 97干在线视频| 综合欧美日韩在线| 少妇超碰在线| 麻花豆传媒剧国产MV出差| 日韩无码服务区| 大香蕉伊人一区在线观看| 色天使亚洲综合在线观看| 人妻另类| 最新av在线| av片在线观看免费播放| 欧美一区二区三区互相| 殴美色网| 二三四区精品| 国产乱子伦一区二区三区在线观看| 超碰在线99| 亚洲综合色图欧美| 精品无码一二三四区| 婷婷久久网| 中文字幕奈奈美被公侵犯| 欧美亚洲丝袜人妻制服中文99| 亚州综合AⅤ| 五月婷婷激情| 91丨熟女丨丰满熟女| 日本成a人v网站在线观看| 亚洲脚交| 色眯眯av| 欧美色图成人网一区二区 | 麻豆天美国美国产| 伊人色综合网电影| 99老司机精品视频在线观看| 欧美色女人| 久久大香蕉97| 91劲爆| 精品一久久久| 久久这里精品国产99丫e6| 亚洲国产一级精品毛一级精品看免费视频 | 爱做久久久久久| 亚洲av无码成电影在线播放| 中文字幕99999| 亚洲精品影视老司机| 亚洲黑人在线| 欧美78P| 一区二区不卡免费| 超碰在97| 97精品视频免费| 99性爱| 婷婷九月色| 亚洲一区二区三区欧美日韩| 五月天伊人网| 哈哈操电影| 欧美手机在线综合| 蜜臀在线网站| 亚州欧美综合| 欧美日韩另类字幕中文| 欧美国产操逼| 69久久久久久久久久久久久| 久久人妻无码毛片A片麻豆| 亚洲情色一区综合| 91在线美女| 你操综合| 国产天天骚| 又大又黄国产| 国产精品乱码久久| 加勒比综合a∨| 欧美亚洲首页| 无码区蜜乳| 97操操| 久久久五月天| 欧美aa一级片| 人妻 中文 日韩| 亚洲精品三区在线观看| 国产精品无套内谢| 婷婷深爱五月| 午夜一区| 女同在线视频一区| 亚洲天堂第一页| 亚洲www91| 五月天亚洲网| 搡老女人老熟女91老熟女综合网| 91欧美经典| 夜草网站| 一类无码操逼视频| 日本一级性爱| 玖玖在线视频| 国产精品一区二区在钱播放| 老鸭窝黄色视频网站| 亚洲精品人伦一区二区| 亚洲一二三| 久久精品无码不卡| 亚洲图片欧美| 在线a v| 国产精品秘 福利姬在线观看| 强奸乱伦中文字幕AV| 国产一区二区三区视频在线看| 青青久久手机线视频| 户外裸露刺激视频第一区| 熟女精品一区二区三区| 美女大乳久久久久久久女人18| 亚洲脚交| 欧美18老人禁| 国产成人bd在线观看| 看日韩美女二区三区免费操逼视频| 日本有码久久| 天操天操夜操夜月月年年操操| 亚洲综合网91| 激情抓乳插进去啪啪啪日韩 | 加勒比久久av| 亚州色综合| 97欧美性爱| 日本熟妇一区二区三区| 九热超碰| 成人国产视频在线观看| 人妻日日干| 亚州色站 日韩电影| 春色综合免费| 99色热国产视频精品| 激情综合五月| 丝袜喷水在线| 天天综合~91| 欧美黄色大香蕉一区二区| 男生女生啊啊啊啊| 校园春色五月天| 中文自拍欧美影视| 西西美女视频网| 日逼97| 国产超碰| 久久久久网站-538在线视频-欧美永久乱码| 久久区| 国产18精品亚洲精品| 99热超碰| 丝袜综合网| 一级啊性爱在线视频| 青女在线| 女人与公拘交酡2020视频| 夜夜操2028| 亚洲中文字幕av | 性爱av在线免费观看| 99精品伊人| 亚洲欧洲av影音| 精品久久一区二区三区四区五区| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 福利伊人玖玖国产| 免费9 1久久| 在线人成亚洲视频免费观看| 猛交交| 后入式免费视频| 精品国产肉丝袜在线拍国语| 高清肉丝中文无码| 国产成人精品无码久久| 国产不卡中文字幕免费avi| 日韩 国产 欧美自拍| 男人的天堂2018.| 无遮挡男女激烈动态图| 英伦大奶子熟妇吊带| 欧美97色| 色爱欲亚洲| 色欲Av人妻精品一区二| 黑丝日韩av丝袜av| 自怕偷自怕亚洲精品| 有码人妻系列| 26uuu久久| 一区 欧美 日韩 麻豆| 91av一区二区在线观看| 熟女欧美日韩综合婷婷| 成人 日本A片无码8888| 道久久五香丁月婷婷激情综合| 在线视频 亚洲精品| 超碰人妻久久人妻中文97| 欧美性爱第一页久久| 一直超碰| 欧美精品日韩一区二区| 久久久97| 亚洲欧洲无码97久久精品| 日韩在线一区高清在线| 国产91丝袜 在线播放| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 国产操操日韩三级黄| 欧美色吧综合| 日本欧美韩国日产片片在线看免| 私人尤物在线精品不卡| 91国产美女丝袜足交精品视频| 岛国免费黄色网址| 青青青在线高清视频在线一二三四区 | 综合色99| 亚洲精品白浆高清久久久久久 | 欧美天天干| 久久久久婷婷精品av电影| 国产精品 亚洲情色| 啊啊啊轻点在线观看| 精品国产乱码久久久| 久视频在线观看| 伊人久操| 999久久久九九九九| AV在线资源| 亚洲欧美国产日本一区二区三区| 综合伊人网12色| 使劲用力艹少妇视频一区二区 | 色婷五月天| 国产精品盗摄 偷窥盗摄| avav青青草久久夜| 欧美日韩人人精品| 欧洲综合无码| 91天美| 男人的天堂在线 | 综合五月天| 亚洲激情色片| 婷婷爱五月| 人妻乱仑一区二区三区| 亚州综合| 日韩无码第3页| 日韩少妇丰满亚洲| 麻豆久久久一区二区| 在线无码网站| 在线亚洲欧美| 超碰色97| 熟女91网| 偷拍五区| 婷婷三区| 亚洲色图超碰在线| 强免费黄色网址| 国产精品久久久无码AV网站| 日本孕妇一区二区视频操逼免费看 | 青青草在线视频人人想人人上| 青娱乐福利99| 四虎在线视频| 午夜呻吟欧美| 99re6久热只有精品6在线直播| www…国产操逼| 久久九九国产精品| 国产亚洲精品激情| 影音先锋乱伦资源| 亚洲精品美女久久久久久久久| 天天色天天干天天射| 搡老熟女免费视频| 2023天天操夜夜操| 天堂无码| 激情小说图片亚洲首页| 欧美天天综合| 人人妻人人玩人人澡人人爽| 亚洲风情在线观看| 欲色综合| 欧美体内射精| 中文字幕乱碼在线| 久热久一区二区三区| 99久久com免费视频′| 久99热| 九九热免费视频| 91Chinese在线| 五月天偷拍| 99色视频| 青苹果影院男人的天堂| 四虎永久在线精品免费网址| 91视频观看网站| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 亚洲综合色网| 99色热| 丁香五月激情婷婷| 狂操嫩妻视频一区二区三区| www.99热| 9热9热综合网| 97bbn| 国产丁香精品露脸视频| 亚洲狠狠入| 中文字幕丰满人妻日本| 亚洲av综合伊人久久| 一区二区三区免费岛国片| 国产三区免费在线观看| 激情综合五月婷婷| www.97在线| 91久久久老司机| 亚洲日韩97| 欧美乱欲| 国产精品原创巨作?v网站| 无码久久国产 | 亚洲情色在线| 久久99干一本高清| 亚欧美色| 加勒比久久综合网高清| 美国aaaaa一级黄片| 色婷婷基地| 激情五月天综合网| 黑人中出21连凳花野真衣| 国产偷人妻精品一区二区在线| 久久中久文96| 久久AV无码AV| HEYZO高无码国产精品227| 蜜桃视频精品一区二区| 久久夜精品一区二区三区| 精品女同一区二区三区| 91人精品妻入口| 久久久九九网站| 91黑丝美女| 中国少妇啪啪视频| 日韩av在线免费网站| 毛片中心9视频99| 北野未奈加勒比av| 欧美综合自拍| 中文字幕在线高清男人的天堂| 色精品极品| 久久9免费视频| 人妻献身系列第54部| 亚洲操人| 精品美女少妇一区二区三区| 日本三级精品| 午夜激情成人在线观看| 丝袜熟女一区二区三区| 亚洲大色堂| 欧美中文综合| 丁香五月婷婷啪啪| 裸体美女久久久| 人人性爱视频免费| 水野优香在线观看| 亚洲日精品| 久久精品欧美一区二区三区不卡| 天天综合AV| 高颜值美女口爆高潮浪叫| 亚洲中文日韩欧美大香蕉视频| 青青草九九九九九| 97资源久久| 激情啪啪拍91| 国产乱不卡| 免费精品中文字幕| 秋霞一区二区三区四区五区六区七区| 久久久久久久97| 天天影视网综合少妇| 九99久久| 国产精品亚洲美女久久久久| 1024手机看片欧美日韩| 国产AV色黄看到爽| 欧美综合97www| 九九九久久久| 99色视频| 97香蕉网| 色五月首页| 午夜九九九九九九| 国产91美女高潮| 999国产精品999久久久久久| 日韩在线观看中文字幕视频| 9九九国产| www.久久99| 欧美三级偷拍| julia高潮后不停追击中出| 性高潮久久久| 人妻少妇色综合| 婷婷人妻激情| 亚洲.欧美.丝袜.中文.综合| 亚洲男人在线观看天堂| 加勒比无码一区二区三区| 国产suv精品一区二六| 日韩欧美亚洲一区二区三区影院| 天天超级碰碰碰| 女同女同恋久久级三级| 久久999久| 国产亚洲精品美女久久久久久2021| 嗯嗯啊啊好疼| 综合影院永久入口国产| 色婷婷综合久久久久中文一区二区| www男人天堂| 67914亚洲精品| 国产在线观看一区二区三区| 欧美九九99久久精品| 日本黄色大片一级视频免费麻豆| 亚av顶级裸体一区二区三区四区五区 | 综合久久99| 亚洲成人激情小说视频| 有码免费观看| 亚洲欧美自拍偷拍| 啊啊啊啊免费视频| 蜜色网色哟哟| 香蕉人人操tv| 99少妇| 操b网站亚洲无码| 91在线精品| 人妻三级在线中文字幕| 躁躁日曰躁2020| 岛国片在线观看视频亚洲| 久久久久久久性爱| 久干网| 蜜乳av首页| 豆花视频操逼网址| 综合色区偷拍| 精产国品一区二三产品| 久久婷婷色| 91精品国产91久久青草| 亚洲一区制服诱惑| 97电影院超碰| 超碰国产精品久| 蜜臀99久久国产| 91精品成人| 天美麻花大全视频| 午夜a成v人电影| 97se亚洲综合自| 欧美日韩国产电影| 九九热精品免费视频| 自拍偷拍 高清无码| 插入逼91| 亚洲色棕合| 日韩不卡码| 色性综合| 精品超碰国产| 乱伦1色页| 超碰97久久| 美女黄页网站| 亚州高清色综合| 日本丝袜美腿人妻九九| 色婷亚洲五月在线观看| 国产理论视频在线播放| 中文字幕一区二区三区50路| 国产精品69久久久久久久| 2001天天操| 国产高潮AA片免费看| 免费精品人妻一区二区三| 久操97| 91欧美色| 亚洲另类色综合网站| 精品国产久久乱码| 91情色| 91美女视频直播| 豆1无夜无码| 99热导航| 大香蕉伊人在线成人AV在线观看| 亚洲精品一区中文字幕乱码| 综合色99| 国产熟女免费观看久久| 韩国成人精品久久久免费看| jizz啪啪| 欧美人人曰人人操人人射射| 国产二区三区免费视频| 大色综合| 欧美成人性活片| 超碰人人干天天射| 四虎AV在线播放| 久久久久久中文| 东京男人天堂| 色偷偷色偷偷欧美日韩| 欧美色图成人网一区二区 | 搡老女人老熟女91| 国产精品天干天干综合网麻豆| 欧美色一二三| 在线观看 99热| 艳尻美人妻| 新视频sss国产| 怡红院成人av| 亚欧洲一区二区视频| 美女的肌被草喷水视频| 久久人爽| 国产熟码AV| 色婷婷A V一二三四区麻豆综合| 不卡六六在线91| 日日嗷| 久久精品国产亚洲av水密被窝| 骚日日av| 日韩色香| 无码高清操逼网址| 色y情视频免费看| 中文字幕日韩人妻视频一区二区三区 | 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 综合亚洲欧美| 精品国产乱子伦一区二区三区,精品一| 国产激情在线| 天天综合色图| 亚洲欧美国产va在线播放频| 一类无码操逼视频| 国产大学生口爆吞精合集| 大香蕉黄色一区| 涩五月婷婷| 九九热超碰97亚洲最新香蕉| 欧美精品在线观看| 精品人妻一区二区三区视频| 人妻色情天天操| 日韩精品一区二区人人人| 测评在线观看AV| 亚洲图片激情综合另类| 国模精品娜娜一二三区| 少妇毛片久久| 久久m| 女优大全 - 91n| 极品国产内射| 久久99午夜精品一区人妻| 操碰97| 欧美综合网1| 国产97在线视频| 一级一性爱免费视频| AV男人天堂网| 色欧美色交综合| 亚州熟女乱伦| 国产一区二区欧美日本| 日韩一级二级| 日韩精品国模| 亚洲丝袜少妇在线| 蜜臀av中字字幕网站| www久久99| 蜜臀人妻少妇久久在线观看| 日韩欧美久久婷婷网站| 久久超碰97| 屁屁影院一区二区三区国产| 五月天偷拍| 亚拍在线| 青娱乐福利99| 欧美丰满熟妇XXXX性ppX人交| 五月天色图| 日本97久久| 亚洲无线码欧洲精品区别| 婷婷五月成人| 好舒服视频| 性色AV蜜色av色欲av| 亚洲制服欧美另类内射| 91精品丝袜久久久久久无码人妻| 亚洲精品91| 能在线播放的国产三级| 天天摸夜夜摸| 啪啪啪男女亚洲中文字幕99| 思思热影视| 西西美女视频网| 污色区网站| 狠狠躁AV| 亚洲图片 欧美电影| 免费观看的黄色的网站| 欧美老妇女内射网址| 四虎在线视频| 久久亚洲AV无码专区国产精品| 国产白领连续中出在线观看| 999精品女人| 国产大学生口爆吞精合集| 91高跟美女在线播放| 国产亚洲精品一区二区三区| 成人欧美一区二区三区黑人一| 精品少妇高潮久久| 国语精品内射在线观看| 老女人老91妇女老热女| 乱伦一区二区三区‘| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 日韩一卡二卡三卡| 9999免费精彩视频| 欧美色爱综合| 亚洲一区二区性爱电影| 国产91丝袜 在线播放| 91久久免费视频互動交流| 亚洲网自拍| 久热在线精品免费观看| 少妇被玩视频二三区| 久久草草亚洲蜜桃臀| 欧美熟女妇同| 国产最新小视频在线播放下载| 天天综合网AV91| 欧美日韩日产免费网站看| 欧美色色人| 欧美黄色大香蕉一区二区| AV中文字幕剧情1区2区3| 国产午夜无码片在线观看影视| 久欲AV| 无码人妻丰满热妇又大又粗| 色欲久久99精品久久| 日韩欧美亚洲一区二区三区影院| 亚州,欧美在线| 欧美久久九九| 综合久久少妇中文字幕| 久热久一区二区三区| 一区二区视频在看| 中亚av| 操www| 人妻丰满熟妇av无码区蜜桃| 亚洲成人久久美女| 97国产精品| 射丝袜高跟鞋99| 亚洲精品国产熟女| 欧美成人精品一区二区男人蜜臀| 熟妇操花| 97色碰| 九一性生活免费视频| 亚洲操人| 国产强奸乱伦无码视频| 麻豆天美在线喷水AV| 久久香蕉国产线看观看猫咪av| 亚洲人妻爽爽爽| 久久久久久中文版| 嫩草一区二区在线观看| 香蕉综合网| 欧洲精品网| 曰韩av中文字幕专区| 日韩免费在线观看不卡| 97伪v| 香蕉在线一区二区三区| 曰本人妻人人澡人人夹| 欧美色吧综合| 欧美色图中文字幕| 99天堂网| 香蕉欧美| 国语精品对白| 东京热熟女亚洲视频网站| 人妻99p| 国产精品久久久久久久AV大片| 久久老熟女| 成人日韩中文字幕| 在线不卡视频| 美女午夜福利免费视频| 欧美性爱一区二区三区| 久久m| 九九热免费国产视频婷婷伊人五月 | 天天日天天干天天色| 亚洲第一视频 欧美风情 日韩| 日韩欧美亚洲国产日韩| www成人啪啪18秘 免费| 亚洲男人综合| 偷拍导航视频网站| 四虎视频在线观看| 伊色综合天堂色97| 一级特级aaaa毛片免费观看| 麻豆国产精品午夜视频| 夫妻日逼| 韩国嫰模上门援交视频| 91嫩草欧美| 91在线欧色| 欧日a| 国产成人一级av88| 亚洲精品白浆高清久久久久久| 婷婷久久久精品| 婷婷九月国产| 久久久禁| 很黄很污的免费网站| 国产一区96在线| 99热这里是精品| 黄色网址在线免费观看| 亚洲图片婷婷五月天| 在线人成亚洲视频免费观看| 91白嫩| 久久久久久十| 国产精品97视频| 精彩久久中文| 射丝袜大香蕉| 欧美 综合 亚洲| 麻豆天美传媒在线视频天堂| 久久手机视直播| 丝袜夫妻自拍| 超碰国产在线| 992这里有精品| 久久综合五月天| www.色吧5.com| AⅤ片水多多| 人妻偷拍一区二区三区| 无码137片内射在线影院| 一区二区三区视频| 免费精品无码一级毛片牛牛影视| 91天天| 精品午夜福利| 黄色无码高清黄色无码网站| 婷婷超| 高潮精品| 澳门黄片一香蕉视频| 日熟女| 日本乱人伦片中文三区| 中文字幕高清精品一区| 久久社区一区二区三区| www熟女乱伦com| 成人26uuu| 黄片aaaaa一区|