久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

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
返回資訊列表
伊色久人大在线| 性爱av在线免费观看| 青青伊人久久| 亚洲偷拍自拍在线视频| 国产福利一区二| 国产原创自拍| 口爆吞精在线观看| 狠狠色伊人亚洲综合网站色| 91亚洲欧美综合高清在线| 内射白嫩美女| 人人考人人摸人人干| 欧美精品宗合| 亚洲无码日韩电影| 色婷婷A V一二三四区麻豆综合| 嗯嗯嗯嗯啊啊啊好紧好大| 欧美日本中字另类在线| 亚洲本色精品一区二区久久| 日韩不卡在线一区二区| 91青青| 精品久久大胆人体| 超碰偷拍| 亚洲熟女综合网| 亚洲日本天堂| 欧美传媒一区| 亚洲97p| 国产精品探花视频| 成年女人黄网站| 日韩黄片视频试看| 免费中文综合精品| 激情综合网激情综合| 亚州五月| www久久精品| 丰满人妻-区二区三区免费| 国产精品无码av| 人妻丰满熟妇一区二区三| 天美传媒精品一区二区| 中文字幕丰满子伦无码专区在线视频最新 | 蜜臀va69| 男人天堂毛片| 999色欧美中文字幕| 天天舔天天日天天射| 亚洲天堂区| 柠檬AV导航| 无码视频黄色网战| 成人欧美一区二区三区黑人一| 久久肏大逼| 一级免费啪啪片| 欧美性爱日韩高清| 大香蕉免费3| 狠狠久久手机视频精品| 三级特黄60分钟播放| 操逼视频亚洲| 九九热精品| 狼人综合婷婷激情四射 | 中文字幕第页| 一区中文字幕二区日韩| 亚洲高潮影院| 久久久新亚洲AV| 国产精品免费1区2区视频| heyZO天然素人无码AⅤ专区| 操操逼操操逼操操逼逼| 五月婷婷丁香| 亚洲吊色| 激情久久日韩精品中文字幕麻豆| 日本免费一区二区不卡| 天操天操夜操夜月月年年操操 | 婷婷九月| 日日干日日操五月天伦理视频| 久久只有精品一区二区三区| 亚洲色悠悠久久88| 97无码视频在线播放| av强奸乱轮| 大香网站| AV老汉| 超碰在线974| 欧美大战久久久伊人| 97射欧美| 日韩乱伦AⅤ| 女人被添高潮免费视频| 97视频观看| 爱爱动态120秒| 97久久国产亚洲精品超碰热| 男人女人18禁片免费看网站| 亚洲美女自拍偷拍视频| 青青草吊丝| 色阁阁AV综合网| 欧美天天综合在线| 91色婷婷综合久久中文字幕二区| 在线综合 亚洲 欧美中文字幕| 色九九综合AV| 男人天堂新| AAAAAAAAA黄片| 九九久久九九久久| 中文字幕久久精视频久久大全| 婷婷九月国产| .精品人妻一区二区三| 我要看免费韩日黄片| 宗合情欲网| 91制服丝袜| 18禁精品网站在线看| 亚洲综合小说另类图欧美视频激情小说色五月天 | 国产精品扒开腿做爽爽爽视频| 亚洲久久久久| 999岛国大片| 日韩ab网 | 日日躁夜夜躁狠狠躁超爽| 黄色视频60分钟| 长长久久免费视频| 日本一区二区三区四区五区六区七区八区九区| 艹少妇网站| 日韩久久超碰色| 精品国产乱码久久久久久蜜臀| 91精品国产日韩欧美综合| 精品人妻一区二区三区-国产精品| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | WWW黄片COM| 亚洲男人的天堂网| 97精品熟女少妇一区| 夜夜高潮夜夜爽高清视频一| 试看60秒 爽| 99热这里只有精品9| 天天超级碰碰碰| 欧美性爱日韩高清| 亚洲国成人情色好看电影| 久久久蜜桃臀无码视频| 蜜桃久久一区二区三区| 成人无码在线视频网站| 国产丰满熟夫69mpp| 精品高潮| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 户外裸露刺激视频第一区| 久久久穴999| 日韩免费高清大片在线| 亚洲综合图色在线| 操逼操操操91| 久久禁| 强奸乱伦AV网址| 天天综合影院91| 国产精品黑人一区二区三区| 天天摸天天碰天天添青青| 日韩免费a级毛片无码a∨| 大香蕉AV丝袜| 秋霞一级A片黄色视频| 日本少妇va7777| 午夜a成v人电影| 大香蕉综合久久| 丝袜美腿制服人妻二区中文字幕| 亚洲男人的天堂在线看| 无码伊人久久大杳蕉中文无码| 超碰在线综合97| 日韩欧美中文| 99re这里只有| 亚洲少妇诱惑| 亚洲欧美大| 91P0RNY大屁股人妻| 劲爆欧美人妖三区91| 自拍偷拍 日韩无码| 久久精品国产97欧美精品亚洲 | 色天使大香蕉| 日本性爱少妇| 国产精品福利资源在线尤物| 激情五月天校园春色网| 五月天丁香欧洲日韩| 国产免费内射视频| 在线亚洲精品久久久| 久久无码电影| 黄色片,com| 色噜噜人妻av中文字幕| 四虎AV无码| 国产 亚洲 丝袜 制服| 91亚洲网站| 无码欧美有限公司| 综合色色网| 国产精品熟女一区二区三区| 综合视频91| 亚洲有码 视频一区| 尤物视频一区| 无码直播久久久| 亚洲色天堂九9| 天堂种子在线www网资源| 亚洲人天堂| 欧美精品三区| 天天日日本| 97人人超| 免费的av网| 啪啪资源网| 国产v亚洲v日韩v欧美v片另类| 97亚洲国产影视| 亚洲色 国产 欧美 日韩| 99热在线观看| 欧美 色 亚洲| 在线小说视频一区| 日本黄色裸日本黄色裸体 | 最新中文字幕av| 免费在线观看AV无码网站| 欧美十八禁视频| 91欧美情色| 夜夜騷av、一區二區| 黄污污污污| 国产女性无套 免费观看| 成全在线观看免费观看| 丰满少妇乱子伦精品无| 大黄片做爱的大的| 国产无吗在线播放| 国产自制av蜜乳| 综合色区偷拍| AV中亚| 桑老女人九区| 9丨久久九九九| 中文熟女五十乱码在线| 亚洲十八禁止| 色哟哟精品1精品2| 玖玖资源视频一区二区三区| 国产欧美另类久久久精品课程| 熟妇艹鸡八| 免费国产电影一区二区| 精品三级在线专区| 久久透逼视频| 一级岛国大片| 在线综合色| 亚洲性爱免费电影| 囯产操逼片| 天天草天天干天天日| 天天色综亚洲91污| 99久热| 日本三级黄页| 日韩成人色图| 欧美熟妇精品黑人巨大一二三区| 99热97| 欧美一二三区四五区| 麻豆黄色五月天| 欧美 亚洲 大香| 中文字幕人妻色偷偷久久皮 | 91亚洲最新在线| 国产AB视频| 97日韩欧美亚洲| 99re9| 中文字幕精品码亚洲| 亚洲97| 日本熟女不卡视频| 国产绿奴视频在线观看| 99久久九九| 日本熟妇熟色97一本在线观看| 大香蕉 222| 美骚妇av高清在线| 亚洲欧美综合网 | 伊色综合天堂色97| 操b网站亚洲无码| 曰韩少妇无码| 亚洲天堂资源在线| 熟妇在线视频一区二区| 男人的天堂在线2| 欧美熟女丝袜| 亚洲精品少妇| 柠檬AV导航| 无码99| 亚洲精品一区二区免费在线观看| 欧美人妻一区二区| 美国黄片aaa| 黄色视频特级毛片| 色呦呦、国产精品| 骚货操死你| 性爱综合一区二区| 综合婷婷| 久久精品99久久久久久| 精品九九九九| 任你草| 成人热久久精品| 麻豆成人影音在线| 亚洲综合中文字幕有码| 欧美国产视频| 免费在线看黄片av| 无码精品一区二区三区潘金莲| 亚洲高潮少妇| 欧美特黄视频网站| 日韩色欲久久一二三四区| 天综合网| 蜜桃午夜视频一区二区 | 少妇天堂| 被体育老师抱着c到高潮| 亚洲男人天堂网久久| 欧美一区二区三区成人性生活 | 在线97视频| 99久久精品无码一区二区| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 亚洲少妇视频| 无码自拍SM| 亚州欧美一区| 色情乱伦AV| 免费成人在线熟妇网| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 超碰98综合网| 国产毛片在线| 久久久久ab| 蜜臀久久99精品久久久久久酒店| 亚洲天堂热| 97超碰国产亚洲精品| 国产宅男宅女在线观看| 97超碰天天爱天天爱| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 久久精彩免费视频| 日韩精品三级| 婷婷久草一区二区三区| 爱妃国产亚洲视频中文字幕| 亚州色站 日韩电影| 国产精品人妻无码久久久老鸭窝| 激情五月天婷婷| 97超碰中文| 亚洲AV无码黄色强奸| 色综和网| 少妇滛荡视频| K8久久久久| 大香蕉婷婷| 91在线观看,天天综合| 国产日韩区| 少妇内射www在线观看视频| 日韩中文字幕精品一区在线| 91麻豆一二三区| 色呦呦呦在线观看视频| 97av,com| 婷婷五月天网| 91老司机精品| 超碰爽人妻熟女Av| 强歼乱伦资源网| 怡红院网站在线视频| 大香蕉五月天婷婷| 天天综合网~91| 天天流夜夜操| 精品日日人妻| 韩国女主播青草在线| 国产绿奴视频在线观看| 亚洲超碰97| 欧美 亚洲 大香| 一级日本牲交大片好爽在线看| 熟妇高潮精品一区二区三区下载| 国产精品亚洲天堂网址| 久久久人妻| 九九热超碰97亚洲最新香蕉| 欧美性爱伊人| 久综合国内精品自在自线| 美女丝袜激情小说| 青青操在线亚洲视频观看欧美在线 | 日本福利二区视频| 久久黄片国产一区二区| 99这里只有精品| 成人久久无码www| 深夜国产一区二区三区在线看| 色屁屁影院www国产| 精品一二三区久久AAA片| 国产97在线播放| av中文字幕在线熟女| 中国AV美女| 国语精品对白| 男人的天堂2000| 天天做天天爱天天爽| 波多野结衣之双飞调教在线播放 | 欧美姓爱综合网| 亚洲美女 晚间男人天堂| www.色操逼| 韩国三级一线观看久| 超碰97人人乐| 国产av热热色| 久久神马影院| 九九久久久久久爱| 丁香五月天堂网| 亚洲黄色a级片| 精品无码产区一区二| 欧美极品女人的天堂| 激情黄色片在线观看| 91N综合网| 亚洲天堂另类美腿| 开心五月婷婷| 91人妻Pr| 色婷婷影视| 欧美午夜一区二区三区| 影音先锋新男人| 久久久999| 国产人妻久久精品一区二区三区| 青青草玖玖爱| 9999九九九久久久| 国产第11页| 美女诱惑在线一区| 女人的天堂大香蕉网| 国产精品经典一卡久久久| 五月婷婷六月天| 久草视频在线视频在线视频在线观看 | 亚洲综合图片在线| 超碰97久久国| 98超碰日本| 老女人碰碰在线碰碰视频| 国产农村妇女精品1区二区| 超碰调教97| 亚洲日本韩国极品一区二区| 久久国色天香香蕉| 人妻天天爽夜夜爽精品2| 翘臀vidoes| 伊人97超碰| 91天天日| 91热情品| 97国产精品久久久久| 韩日精品福利视频一区不卡在线免| 日产狠狠干| 大香蕉色十月| 亚熟hd视频在线| 国产欧美成人精品| 日本二区不卡| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 日日爱99| 蜜乳中文字幕a在线| 亚洲欧洲av影音| 日韩黄片影院| 国内精品a| 久草网站免费在线观看| 色一色综合网| 超碰色大香蕉| 啊啊啊想要| 国产辣妈在线视频福利| 国产一区二区三区导航| 人人色97| 91美女视频在线| 国产成人啪一区二区| 亚州精品人妻一二三区| 亚洲天堂加勒比| 中文字幕美女91| 国产黄色在线播放观看| 国产大学生口爆吞精合集| 亚洲国产激情国产av| 男人夜色天堂ss| 超碰 另类 欧美 | 人妻少妇久久| 国产精品一区二区a| 熟女乱伦A| 男女猛烈无遮掩视频免费软件| 制度丝袜99| 欧美日韩啪啪电影| 蜜乳AV.COM| 五月丁香激情综合网| 992这里有精品| 天天日夜夜爽| 天天操人人操骚逼网站| 97免费在线视频| 欧美成人A√在线一区二区| 秋霞欧美性爰视频| 欧洲中文字幕| 骚女天天综合网| 国产高清在线观看欧美| 亚洲不卡不卡中文字幕不卡| 天天干人人乐| 果冻国产精品麻豆成人av| 国产青一二三| 亚洲丝袜少妇在线| 一区二区视频在线播放| 五月婷婷激情网| 欧美亚洲成人在线一区二区三区| 欧美一级A一级a爱片久久| 国产一级作爱毛片| 欧美狠狠弄| 蜜桃久久一区| 久久夜黄色无码A级大片| 91视频观看网站| 综合网亚洲在线| 最新中文字幕在线亚洲| 嗯嗯啊好大| 亚洲码在线中文在线观看| 婷婷大香蕉| 久久是精品| 2019久久久久久久久福利| 亚洲、日韩、综合、另类| 日本布卡一区二三区| 思思热在线cao| 2020久久免费视频| 91N欧美| v91av| 三级三久久线久久99久目本WW| 女生自91网站| 国产精品无码av嫩草| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 中文字幕第页| 亚洲男人天堂av| 99精品在线| 中文字幕精品三级久久久| 国产精品网址| 精品一区二区久久| 亚洲码专区| 一区二区播放| 综合久久99| 狠狠干2020| 亚洲国产麻豆一区二区三区| 亚洲性综合9| 亚洲精品人体| 五月婷婷久久综合| 五月天亚洲网| 天天干天天干天天干| 成人青青草原伊人| 日本三级中国三级99人妇网站| 清纯唯美第一页| 啊…啊…操我用力操我 | 加勒比在线视频一区二区三区| 久啪| 极品白嫩美女白浆成人福利在线看| 九九亚洲色在线观看| 1人人看人人摸人人操| 10000部十八禁看电影| 亚洲另类小说卡通动漫| 欧美性天天影院| 色婷婷五月综合激情中文字幕| 少妇天堂| 熟妇熟女一区二三区| 日小BB小视频| 高清无码91| 亚洲高清内射| 久久亚洲精品成人av| 中国91AV| 狠狠久久手机视频精品| 中日无幕一二三四区| 另类TS人妖一区二区三区| 99热8| 91婷婷| 精品国产三级av韩国在线| 美女毛片999| 大屁股xxxxx| 久久精品国产亚洲5555| 日韩97精| 亚洲色图 欧美热图 清纯唯美 另类自拍| 亚洲春色欧美激情自拍| 久久风骚城市人| 超碰色中文| 亚洲自拍天堂| 美女t无毒不卡不卡| 色九九九| 蜜桃色色网站视频三区| 一本一道波多野毛片中文在线| 亚洲图片小说欧洲| 久久综合久久综合人久久夜精品| 人人做人人妻人人夜视频| 国产偷拍网站| 久久这里只精品| 中文字幕女同在线| 九九九综合精品| 日本性爱不卡视频| 午夜超爽| 国产精品不卡av免费在线观看| 99久久9| 少妇与黑人高潮在线| 无码av永久免费专区网站| 欧亚日韩中文在线| 中国熟妇| 五月天人妻综合| 婷婷另类小说| 蜜臀亚洲中文| 欧美日韩m| 色综合色色| 欧美日韩国内不卡| 欧美一区二区观看在线| 国产欧美精选激情视频| 国产精品高清2021在线| 人妻色偷色噜| 精品人妻中文字幕高清| 60秒不遮不挡| 天天亚洲| 亚洲欧美第一页| 久久国产乱子伦精品免费女,网站| 玖玖爱综合网| 青青草色情网站视频| 91五十路| 精品久9| 98超碰欧美| 国产一线二线三线av| nuu12国产麻豆精品| 亚洲图片 激情小说| 艾草av| 天操天操夜操夜月操月年年操| 极品丝袜无码| 成年男人的天堂| 第四色色综合91| 9超碰免费| 麻豆性爱视频在线播放| 天美精品一区二区三区四区在线观看| 久插不卡| 久久只有精品一区二区三区| 成人久久无码www| 国精综合一二三区影视| 经典丝袜一区| 蜜桃臀av一区二区| 欧美天天| 啪啪啪东京| www.黄色在线| 免费看一级a性色生活片久久无| 欧美刺激色黄片免费看| 啪啪啪大香蕉| 久久的网站啊啊啊啊啊| 色香在线| 少妇精品| 欧美一区二区一级岛国大片| 欧美顶级黄色大片免费| 日本三级日本三级99| 久久激情视频| 日本天天色| 久久久久久久久久久久久久久乱码| 亚州久久9| 狠狠干妹子| 天天干电影| 色欲av一区二区三区蜜芽| 国产h片在线观看视频| 婷婷操逼| 97超碰亚洲| 99re99视频在线免费观看| 人妻人久久精品中文字幕| 一区二区三区四区在线不卡| 精品午夜福利导航| 中文字幕诱惑制服人妻丝袜美丝袜美| 夜夜嗨老熟女AV一区二区三区| 色妇综合网| 天天操天天射天天日| 成人电影一区| 精品久久久不卡一区二区| 九九精品网| 中文人妻av高清一区| 色婷婷成人| 亚洲精品国产av天美传媒| 欧亚 另类 久| 国产久久av| 色诱中文字幕| 日韩色图 一区二区| 日本一级真人黄色性爱视频| 熟女乱伦A| 中文字幕av色| 国产激情在线| 日韩欧美午夜视频在线| 麻豆久久久久久久久丝袜| 久久精品国产97欧美精品亚洲| 日韩免费簧片| 亚洲有码 欧美精品| 长久操视频| 国产在线能看的你懂的| 91人妻尻屄视频| 亚洲永久AV无码精品秋霞| 97综合国产| 黄片www.| 大香蕉在线视频重口味毛片在线| 97资源久久| 婷婷丁香久久| 安微少妇操BBB| 国产精品无码久久久久2028| 久久超碰亚洲人| 超碰欧美97| 国产精品无码在线| 亚欧美综合网。| 懂色中文一区二区三区| 真实高潮91| 久久久久国产精品久久久| 日本中文字幕在线电影| 97操综合| 日本人妻A片成人免费看片| 天天干1区2区在线| 日日碰狠狠添天天爽超| 日本道日本道中文字幕日本道最新日本道在线观看 | 超碰在线一区二区| 密臀在线视频| 亚洲午夜av| 欧美综合色图网| 色小视频蜜乳| 91性感在线| 大香蕉黄色一区| 蜜臀99久久精品久久久久久| 丁香六月婷婷综合| 超碰地址久久| 亚洲熟妇图片| 999精品乱码| 欧美制服另类丝袜| 人妻精品视频一区二区三区| 91天天日| 78精品在线| 国产日本熟女顶级一区二区三区视频 | 国产亚洲精品A在线观看下载| 欧美一区91大爱| 国产精品96| 99999久久久久9国产精品| 思思热在线视频在线| 熟女中出视频| 精品视频一二三中文| 狠狠躁AV| 国产精品一区av在线| 美女干逼2| 日韩黄色成人性爱| 久久久人妻| 偷拍亚洲高清图片| 色牛aV| 啊啊啊好大好湿| 99操碰| 欧美不卡五十路| 天天操夜夜操| 夜夜草天天| 国产少妇内射| 日本精品人妻少妇一区二区| 国产欧美一级在线观看| 欲色综合| 久久一二三四不卡| 色官网在线| 中文字幕乱妇免费视频| 欧美日韩黄色片一区二区三区四区人与兽做爱| 欧美国产欧美在线观看| 九九热精品视频六| 国产精品久久久久久久久久久久久久久久久久| 国产黄色 A 片免费看| 欧美色网络| 天天狠| 91三级理论片播放器| 日本媚薬中文字幕在线| 亚洲区限制级| 天美传媒国产原创中文字幕亚洲欧美另类| 96久久久久| 制服诱惑亚洲一区二区三区在线观看| 99视频只有精品| 日韩综合无码色欲vv| 天天天干977| 国产精品久久久久久夜夜夜| 留下AⅤ黄色片| 国产精品99精品视频网站| 日本熟妇自慰性高潮一区二区三区| 用力操死我| 激情色色| 中文AV制服乱伦| www.男人的天堂| 偷拍亚洲情色| 男人精品天堂一区| av情色影音| 伊人AAA| 人看人人摸人人操| 伊人精品久久网站| av毛片aaaaa免费看| 91美女小视频| 久久精品国产97欧美精品亚洲| 9久久美女首页| 欧美日韩情色一区二区| 久久草大香蕉| 日本色色的视频| 波多野结衣被操50分钟免费视频 | 78m啪啪啪| 爱丝福利| 亚洲色图第一页| 骚女高跟AV在线| 天堂在线一区二区| 九九英色视频| 韩日男人的天堂| 久操视频免费在线观看| 夜夜爽爽爽| 天天综合,91综合永久| 国产亚洲精品农村妇女 | 日韩AV一区二区三区三州三州| 长长久久88视频| 99热啪啪| 色欧美天天| 色嘟嘟人妻天堂网| 欧美大码在线视频| 欧美最婬乱婬爆婬性视频| 久久久久久久久久久久久9999| 性色一线| 在线天堂999| 曰本精品久久久| 久久AV无码1区2区3区| 日本丝袜美腿人妻九九| 东北女人的毛片| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 欧美色图成人网一区二区 | 国产特级毛片AAAAAA高潮流水| 国产亚洲性生活视频播放| 久久精品国产亚洲AV高清演员表| 家庭乱伦国产| 2019天天干天天操| 亚洲中文字母在线播放| 色9999日韩国产| 亚洲日韩肥臀视频在线观看| 欧美一二三区四五区| 精品999日本| 国产热av| 精品视频一二三中文| 老司机福利青青草| 国产日韩欧美中文在线播放| 亚洲黄色a级片| 长长久久88视频| 日日日啊啊啊| 超碰一区二区| 亚州男人天堂| 国产一级137片内射麻豆| 黄色视频特级毛片| 蜜臀久久99精品久久久老,,| 欧美美女在线高潮999| 日韩精品人妻中文字有码在线| 丝袜视频网国产90| 欧美亚洲20p| 日日A∨| 四虎av在线| 8x福利精品第一福利视频导航| 370p日韩欧美亚洲精品| 99久久精品国产高潮| 麻豆视频test| 99re综合伊人| 久久亚洲中文字幕视频| 99久久e免费热视| 久久精品亚洲婷婷| 天天热精品| 一级片视频啪啪| 超碰99热| 有码免费观看| 九九九国产精品| 日韩精品午夜操呦呦不卡影院| 综合激情二| 成功精品影院| 亚洲天天影视色综合| 精品视频一二三中文| 中文字幕蜜乳av| 国产成人免费观看在线视频| 大香蕉伊人一区在线观看| 一区二区三区男人的天堂| 亚洲97成人在线观看| 91综合在线| 操老熟女AV| 伊人网高清| 欧美日韩国内不卡| 精品国产乱码久久久久久影片| 五十路熟女,国产欧美精品区一区二区三区 | 欧美狠狠| 九九热精品| 九九九九九九九| 一级岛国大片| 精品免费一区二区三区在线亚洲人成| 天天综合网1| 激情综合网亚洲| 日本视频在线观看污污污| 91色黑人少妇| 97爱爱| 96精品在线| 国产女同性恋视频| 91欧| 激情视频网址| 一本色道久久综合狠狠操| 欧美色宗合| 99免费在线视频| 亚洲一区二区 麻豆传媒| 日韩无码一级黄色av片| 国产农村一一级特黄毛片| 久久久久斤小| 国产精品久久久无码AV网站| 97国产天堂岛| 亚瑟国产精品久久无码| 一区 欧美 日韩 麻豆| 亚洲无码视频免费在线观看网址!| 麻豆国产尤物AV| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 三级特黄60分钟播放| 人妻社区男人天堂| 成人免费看吃奶视频网站| 91精品人妻一区二区三区蜜桃臀| 欧美精品成人一区二区在线观看| 狠狠躁AV| 91丝袜美女视频| 久久天天摸| 久久超碰网| 精品人妻二区三区| 欧美特大AA级黄片| 欧美变态激情网| www.99中文字幕| 国产精品内射婷婷一级二| 日日骚一区二区三区| 欧美熟女丝袜| 久久久人体| 熟妇熟女视频一区二区三区| 大奶啊啊好爽 | 97色爱| 精品日韩人妻视频| 亚洲色图欧美另类在线| 日本成人电影资源网| 97国产精品在线观看| 亚洲欧美日韩制服另类| 裸体美女久久久| 欧美色婷婷| 肏逼视频日本| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 人人看人人插| 熟女久久久| 操穴国产| 日韩欧美中文| 91免费看一区二区三区| 亚洲视频二区| 亚洲高潮少妇| 中文字幕一区二区免费在线| 久久精品六区| 美女啊啊啊啊pc| 操迟操逼在巾线Fre看| 亚洲性刺激| 亚欧美天堂在线| 久久久久成人亚洲国产| 97爱亚洲| 日韩淫色网| 成人5码视频| 野狼福利社区| 日日日骚女人精品| 成人欧美一区二区三区黑人一| 天天夜躁日日躁狠狠2002| 熟女熟妇伦久久影院毛片一区二区 | 丁香五月大香蕉| 综合五月婷婷亚洲一区| 精品欧美老熟女一二区| 色婷婷日韩精品一区二区三区| 中文字幕免费观看| 99久久e免费热视| 亚洲国产成人7777| 天堂无码| 老司机香蕉| 日本加勒比无码专区一二三| 爽爽爽免费视频| 天天流夜夜操| 97自拍视频在线| 久久久 国产精品| 国产高清精品一区二区三区毛片 | 一区二区三区 日韩欧美| 日婷婷| 欧美亚洲首页| 成年在线视频日本亚洲在线视频区精品江靖宇公司| 国模不卡一本二本三电影| 五月丁香影院| 狠狠色丁香| 婷婷综合在线| 日韩欧美经典在线观看| 91成人精品在线播放| 黄色区免费观看中文字幕| 日本性感人妻91| 91情色| 亚洲日韩狠狠撸视频| 中文字幕第95页| 超碰碰小说97| 试看福利| 亚洲精品欧洲精品| 人妻密肉在线观看| 精品国产少妇高潮视频| 欧美色棕合| 精品久久久九九九孕妇| 亚洲宅男天堂| 欧美日韩夜夜| 亚洲综合网图| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 性色avv| 国产精品九9| 熟女一区二区| 国产精品。| 亚洲污污网站| 男女激情中文字幕| 超碰免费欧美7| 舔人妻中文免费视频| 久久精品综合| 狠狠爱夜夜| 在线日韩精品一区二区三区| 色网色网色网色网色网色| 国产激情视频一区区三区| 美国日韩黄片| 国产精品爱欲| 国产成人精品日本视频| 九九aV| 人妻熟女午夜精品在线| 无码一区二区三区四区五区六区七区八区九区十区视频 | 91亚洲人| 国产精品九九九| 天天干天天燥| 亚洲欧洲综合视频在线| 好湿好紧视频| 日日夜夜精品视频| 久操com| 国产乱伦亚洲| 99热精品在线播放| 日本不卡三级网在线播放| 亚洲情色一区三区| 精品二区三四区五电影| 欧美天天射| 9国产超碰| 日本日皮视频逼| 殴美性色a级欧美| 欧美熟妇精品黑人巨大一二三区| 精品一二三区女同| 草草草草视频| 嫩草美女久久| 99久在线精品99re8热| 欧美激情 日韩精品| 使劲用力艹少妇视频一区二区 | 欧美18 在线观看| 破苞ⅩXXX性无码动漫无码| 1956日韩精品| 天天做天天爱天天爽AV| 91M一社| 久久久久亚洲AV无码专区少妇| 香蕉黄色一级视频| 日本天天操| 欧洲亚洲人人爽爽视频| 亚洲久9| 久草网站免费在线观看| 99热免费| 2019亚洲男人天堂| 国产肏逼网站| 九九热视频在线观看| 色穴精品| 久久日韩肥臀| 丰满人妻无码一区二区三区| 777奇米影视777四色| 五月天久久婷婷亚洲| 亚欧成人一级片在线播放| 毛片久久| 999久久久精品国产| julia ann久久| 麻豆91熟妇人妻中文字幕茄子| 做爱A级亚欧| 亚洲美女30b| 春色综合免费| 青椒国产97在线熟女| 偷拍亚洲高清图片| 国产精品在线一区二区| 中文?日韩?免费?精品| 日本三级中国三级99人妇网站| 无卡一区=区| 国产乱伦亚洲| 青青爽| 东京太热男人的天堂久久久| 国产成人午夜视频网址| 九九热精品免费视频| 大鸡巴久久| 在线人人人人人人精品超 | 综合五月天| www.av在线观看| 97超碰久久色| 中文色综合| 大香蕉啪啪啪啪在线| 性生活性生大爱77AV国产| 男人a天堂手机在线版| 白丝在线一区| av无码av无码专区| 久久久久久久久久久久黄色| 13小男生GAY自慰脱裤子| 国产精品乱人伊人网| 久久在肏| 情色AV电影| 94色色电影网| 免费视频无码| 美女啊啊啊啊啊啊| 久久国产精品一级二级三级| 91老司机精品| 玖色AV| 亚洲精品一二牛牛| 免费精品人妻一区二区三| 伊人伊人LD| 久久久亚洲欧美综合| 综合激情一一91| 可以免费观看的日韩av毛片| 中国熟女91| 精品免费成人久久| 欧美日韩岛国大片在线观看| 哑洲在线| 一区二区激情国产熟女| 91在线观看,天天综合| 五月丁香亭亭| 国产自制av蜜乳| 久久国产对白激情浪潮 | 蜜臀操逼黄色视频操的好爽| 熟女少妇一区二区三区| 国产亚洲 中文欧美久久| 在线综合网| 精品国产乱码久久久兰草影视| 黄片aaaaa一区| 亚洲第一页综合在线| 又大又黄国产| αⅴ天堂| 青青操少妇| 国产九九九九九九九九| 精品国产乱码久久久久久网站入口| 欧美在线伊人色| 双插性欧美一二三区| 国产麻豆91欧美一区二区久久婷婷国产精品| 天天插天天插| 91视频精品| 欧美激情一| 天堂资源欧美| 欧美日韩中文亚洲v在线综合| 日韩日韩日韩-国产乱码精品一区二区| 国产女人高潮视频| 亚洲第一精品在线视频| 亚洲在钱| 亚洲国产综合久久久性感熟妇| 亚洲导航深夜福利| 怡春院久久| 五月香婷婷| 欧美片第一页| 久艹99| 大香蕉伊人亚洲| 亚洲一级特黄大片在线播放91| 久久精品黄色| 久久久国产护士丝袜美腿一| 亚洲成人久久美女| 日本人妻伦在线中文字幕| 亚洲做性| 操死我了嗯嗯嗯| 亚洲激情四射| www国产天美久久久| 国产精品又黄又猛又粗| 欧洲一区二区三区免费| 大香蕉五月天婷婷| 隔壁邻居波多野结衣中文字幕| 欧美 亚洲 第一页 | 亚洲性刺激| 欧洲精品网| 操我啊啊啊啊啊| 伊人久久综合精品欧美| 黄网在线播放| 欧美在线播放aaaa| 在线看的av| 97超碰精品| 欧美性暴力猛交| 极品久久久久久久久久久久久久| 男人的天堂啪啪| 国产小u女在线观看| 69一区二区三区 | aV中文麻| 大香蕉在线SuP| 欧美 传媒 麻豆 日韩 偷拍| 国产精品老熟女一区二区| 午夜精品视频777| 久久精品高清AV| 欧美人人操人人插| 亚洲爽图| 91丝袜在线观看| 97 九色| 内射中出日韩在线观看视频| 亚洲男人bt天堂| 欧美日韩美女精品久草一区二区三区 | 婷婷五月综合激情| 无码日韩人妻av一| 国产精品制服丝袜清纯唯美| 国产精品永久免费10000| 一区二区三区美女超清| 欧美 亚洲精品首页| 久久黄黄黄| 亚洲第一页色网| 熟女熟妇一区二区三四区| 五十路熟女在线不卡观看一区二区| 日本顶级天天操狠狠操夜夜操中文字幕| 日韩国产十八禁| 五月天婷婷色| 亚州情色j区| 天天淫人人妻日日色| 美女黄页| 91久热这里只有精品| 99re6国产精品99re在线| 热天堂一区二区| 欧美色图私拍91| 色诱中文字幕| 久久日本熟女精品一区| 亚洲日韩乱码中文无码蜜桃臀网站| 国产性爱欧美性爱在线| 日韩无码AB| 天天性射网| 亚洲se91| jizz啪啪|