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

ARTICLE DETAIL

資訊詳情

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

STM32在線IAP升級實戰(zhàn):從Bootloader設計到Flash分區(qū)與跳轉避坑指南

STM32在線IAP升級實戰(zhàn):從Bootloader設計到Flash分區(qū)與跳轉避坑指南 IAP不是一個新話題但真正要把它做到穩(wěn)定可靠能踩的坑絕不比開發(fā)一個新功能少。很多人第一次接觸STM32在線IAP升級都是從一張Bootloader原理圖、一段跳轉代碼開始的結果燒進去要么跑飛要么一進中斷就死機調了一整天發(fā)現只是向量表偏移沒設置對。這篇文章我就圍繞STM32在線IAP升級從方案選型、Flash分區(qū)、協議設計、代碼實現到實測排障把它完整講清楚。適合正在做Bootloader開發(fā)的嵌入式工程師也想給手里的小項目加上遠程升級能力卻不知道從何下手的開發(fā)者。1. 什么是STM32在線IAP升級它到底在解決什么問題1.1 IAP、ISP、OTA三者不能搞混先講清楚概念。IAP全稱是In-Application Programming意思是應用程序在運行過程中自己對自己所在的Flash進行編程。聽上去有點繞但本質上是把固件更新能力做成應用的一部分設備出廠前燒一版Bootloader引導程序之后用戶通過串口、CAN、以太網甚至無線通道把新固件傳給BootloaderBootloader再把固件寫到App區(qū)最后跳轉到App運行。ISP是In-System Programming利用芯片出廠時固化的系統引導程序通過串口、USB或JTAG/SWD把程序燒到Flash里。ISP不需要自己寫引導程序但它的升級工具和下載器流程依然依賴外部主機屬于“離線燒寫”。OTA本來是Over-The-Air指的是通過無線網絡升級固件比如Wi-Fi、藍牙、4G。把OTA的傳輸通道換成有線串口或CAN本質上就是IAP。所以我經常跟同事說IAP是一種機制OTA是它的一種傳輸場景。做IAP核心是把“接收固件→寫Flash→跳轉”這套流程打通至于數據用什么方式傳過來反而可以后選。為什么非要折騰IAP三個字省成本。設備裝到現場、封進殼子之后還想改程序傳統做法是拆機、接下載器、重燒一次兩次還行產品量大了誰受得了。IAP讓設備在網絡可達的地方就能自己更新這才是它最大的價值。1.2 Bootloader App雙區(qū)架構IAP系統的基本盤IAP系統的軟件架構通常分成兩個部分Bootloader和App。Bootloader放在Flash起始地址也就是0x08000000芯片上電后CPU從那里開始執(zhí)行。Bootloader的任務很簡單初始化基礎外設串口、CAN、定時器等檢查要不要升級如果要升級就進入接收和寫Flash流程如果不需要就跳轉到App首地址。App存放在Flash的其他區(qū)域比如0x08008000。App就是你的真正業(yè)務程序它編譯時要把起始地址改成所在區(qū)域同時在運行時把中斷向量表重映射到對應位置。這兩個工程在開發(fā)時是獨立的最終燒錄時Bootloader一次性燒到Flash開頭App可以通過Bootloader升級也可以先用下載器臨時放到App區(qū)。雙區(qū)架構有幾個明顯好處第一Bootloader和App互不干擾App崩了只要Bootloader還健康設備就能恢復第二升級邏輯集中在Bootloader里App側只需要配合一點代碼第三同一塊板子可以通過更換App實現不同的功能硬件完全不用動。我個人的建議是哪怕你現在用不到遠程升級也盡量在產品開發(fā)初期就把Boot和App的分區(qū)模型搭好。后期再加Bootloader會遇到App需要挪位置、中斷向量表要重設、鏈接腳本要改一堆東西工作量只會更大。1.3 在線升級該走哪條傳輸通道在線升級的“在線”體現在傳輸通道上。項目里最常見的幾種通道選型我列個表供參考通道典型速率適用場景注意事項串口UART115200bps調試、現場本地升級實現最簡單線纜距離短CAN總線500kbps/1Mbps工業(yè)設備、車載設備需要CAN收發(fā)器距離遠抗干擾強以太網10/100Mbps網關、工控、服務器類設備可通過HTTP/TFTP拉取固件包4G/Wi-Fi視模塊而定物聯網、遠程運維需要模組介入協議較復雜適合OTAUSBFull Speed消費類電子、調試工具需要USB協議棧常用于DFU做項目選通道時不要只看快慢。串口雖然慢但最穩(wěn)定調試時打日志也方便CAN在工業(yè)現場比串口可靠得多抗干擾強以太網適合固化在內部網絡的設備配合TFTP協議幾乎不用自己設計傳輸協議。對大多數學習者和中小項目我建議先用串口跑通整個IAP流程后面再換通道因為Bootloader側的編程邏輯和通道無關換通道只需要改收發(fā)函數。2. 升級方案設計Flash分區(qū)與固件協議2.1 Flash分區(qū)怎么規(guī)劃才安全Flash分區(qū)是IAP設計的第一個關鍵決策。分區(qū)沒做好后面所有代碼都會別扭。以STM32F103ZET6為例它有512KB的Flash起始地址0x08000000結尾0x0807FFFF。我常用的劃分方式Bootloader區(qū)域0x08000000 ~ 0x08007FFF占32KBApp區(qū)域0x08008000 ~ 0x0807BFFF共480KB參數區(qū)域0x0807C000 ~ 0x0807FFFF占16KB用于存放升級標志、固件版本、CRC校驗結果等Bootloader為什么不能用滿因為后續(xù)加功能、升級協議版本都要空間留一點余量總沒壞處。F1系列的Flash頁大小是1KB其他系列可能不同F4有的是2KB一個扇區(qū)所以App起始地址必須按頁對齊否則擦寫Flash時會出現覆蓋Bootloader區(qū)域的嚴重事故。參數區(qū)域在IAP系統里很容易被忽略但它的價值很大。升級標志、版本號、校驗結果這些數據如果放在App里面每次升級App都要改風險高單獨劃一塊參數區(qū)Bootloader啟動時先讀這里再決定下一步動作整個流程就清晰了。Flash容量小怎么辦比如只有64KB的芯片Bootloader占16KBApp只能占不到48KB這時候就別想著A/B備份了。把參數區(qū)壓到一頁App區(qū)盡量大回滾方案用“失敗后重新升級”而不是“自動回滾舊版”。容量緊張時的取舍優(yōu)先級是Bootloader穩(wěn)定性 App可用空間 回滾能力。2.2 自定義固件幀結構在線升級的本質是數據傳輸而數據在總線上傳輸必須有協議。很多項目用現成的Ymodem協議簡單方便但我想說的是自己定義一套輕量協議往往更貼合項目需求排查問題時也更直觀。我常用的一套幀結構長這樣幀頭(2B) | 命令字(1B) | 包序號(2B) | 數據長度(2B) | 數據段(N B) | CRC16(2B) | 幀尾(2B) 0xAA 0x55 | 0x01 | 0x0001 | 0x0100 | 256字節(jié)數據 | 0x3A2B | 0x0D 0x0A命令字定義了升級流程的交互命令字方向含義0x00主機→Boot開始升級附帶固件總長度、固件CRC32、版本號0x01主機→Boot數據幀附帶一段固件數據和該段序號0x02主機→Boot升級結束Boot確認整體校驗0x03Boot→主機應答幀ACK表示成功NAK表示失敗并附原因0x04主機→Boot查詢狀態(tài)用于重連場景數據長度字段我覺得設成兩字節(jié)比較穩(wěn)妥一字節(jié)最多255不夠用。數據段大小要結合Flash編程方式定我一般用256字節(jié)原因后面說。CRC16只對命令字、包序號、數據長度和數據段做計算幀頭和幀尾不參與這樣接收端可以先找?guī)^、再做CRC校驗邏輯清晰。這套協議還有一個細節(jié)包序號一定不能省略。沒有序號一旦某一包在傳輸中丟失接收端無法通知對端重傳哪一包。串口偶爾丟一個字節(jié)總線通信偶爾丟一包都是正?,F象協議里必須有序號機制兜底。2.3 升級主狀態(tài)機Bootloader的升級流程不建議用一大坨if-else硬堆最好設計成狀態(tài)機。我實際項目里的狀態(tài)枚舉大致是這樣typedef enum { ST_IDLE, // 空閑等待開始幀 ST_START, // 收到開始幀校驗固件信息 ST_DATA, // 正在接收數據幀 ST_FINISH, // 收到結束幀整體校驗 ST_ERROR, // 錯誤狀態(tài)記錄錯誤碼 ST_JUMP // 升級成功跳轉App } UpgradeState_t;狀態(tài)轉移的核心邏輯IDLE態(tài)收到0x00命令字校驗固件總長度是否超過App區(qū)容量通過后進入STARTSTART態(tài)擦除App區(qū)全部頁面發(fā)送ACK進入DATA態(tài)。注意擦除動作放在這里而不是放在第一包數據到來時是為了避免過程中掉電導致部分App區(qū)被覆蓋但Boot又沒收到完整數據DATA態(tài)收到0x01按序號寫入FlashCRC或者序號不對就回NAK并請求重傳DATA態(tài)收到0x02Boot把已收到的字節(jié)數、CRC32和開始幀里聲明的內容對比一致則寫入“App有效”標志進入JUMP不一致進入ERRORERROR態(tài)會打印錯誤碼并等待主機重新發(fā)送開始幀這個狀態(tài)機看起來簡單但實際執(zhí)行時對邊界條件的要求很高超時怎么算、重傳多少次、掉電后怎么恢復都要在設計時想清楚。我把每個狀態(tài)都加了一個超時計時比如DATA態(tài)超過500ms沒有收到新包就強制回到IDLE態(tài)避免設備卡死在升級模式里出不來。3. 實操核心Bootloader與App側代碼實現3.1 Bootloader入口判斷要不要升級Bootloader的main函數邏輯是所有IAP工程的起點代碼風格大同小異int main(void) { // 基礎時鐘、串口初始化打開指示燈 SystemClock_Config(); MX_USART2_UART_Init(); // 判斷是否需要進入升級模式 if (CheckUpdateFlag() 1) { // 進入升級流程 UpgradeProcess(); } else { // 直接跳轉App JumpToApp(); } }CheckUpdateFlag的實現有幾種方式。最原始的是檢測一個GPIO按鍵電平按住按鍵上電就進升級更通用的做法是查參數區(qū)的Magic標志字比如某地址存儲了0xA5A5A5A5就進升級模式。App在收到“升級指令”時可以先把這個標志寫到參數區(qū)然后調用軟復位等Bootloader起來后一查標志自然就進入升級流程了。這里有個細節(jié)升級標志一旦寫入就要確保在升級成功或失敗的流程里把它清除否則會出現一種情況——用戶明明升級完了Bootloader一上電又進升級模式卡在等待主機連接。我遇到過好幾次最后發(fā)現就是標志沒清干凈。3.2 Flash擦寫與數據接收的實現要點Flash寫入是IAP的核心動作代碼不復雜但細節(jié)多。以F1系列和HAL庫為例擦除一個頁1KB的典型寫法FLASH_EraseInitTypeDef eraseCfg {0}; uint32_t pageError 0; HAL_FLASH_Unlock(); eraseCfg.TypeErase FLASH_TYPEERASE_PAGES; eraseCfg.PageAddress app_addr; eraseCfg.NbPages 1; HAL_FLASHEx_Erase(eraseCfg, pageError); HAL_FLASH_Lock();寫入一個半字F1必須按半字16位寫入F4可以按字32位或雙字64位寫入HAL_FLASH_Unlock(); HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, app_addr, (uint16_t)data); HAL_FLASH_Lock();寫Flash之前必須確保目標區(qū)域已經擦除Flash只能把1寫成0不能把0寫成1。這就是為什么擦除要在寫數據之前整體做完而不是邊擦邊寫。如果上一版固件沒擦干凈新數據寫進去就會出現隨機錯誤App跑起來各種怪問題。數據接收這塊我強烈建議給串口加DMA至少用中斷接收。Bootloader在擦除Flash的時候CPU是卡住的擦一頁雖然只要幾十毫秒但如果有串口數據在這個窗口到達查詢接收方式就丟了。解決方法是用DMA接收把數據先緩存到RAM里擦除完成后再從緩存寫入Flash。如果用的還是查詢接收建議把串口緩沖區(qū)加大到至少兩包的大小并用環(huán)形緩沖。3.3 從Bootloader跳轉到App的注意事項跳轉是所有IAP項目里最容易被問到的部分看網上代碼可能十個人有十種寫法但核心只有幾件事校驗App區(qū)合法性、關閉中斷和外設、設置棧指針、跳轉到Reset Handler。我常用的跳轉函數#define APP_START_ADDR 0x08008000 typedef void (*pFunction)(void); void JumpToApp(void) { uint32_t sp *(volatile uint32_t *)APP_START_ADDR; uint32_t reset *(volatile uint32_t *)(APP_START_ADDR 4); pFunction appEntry; // 棧指針必須落在RAM范圍內Reset Handler必須在Flash范圍內 if ((sp 0xFFF00000) ! 0x20000000) { // 非法App區(qū)停在Bootloader等待重新升級 while (1); } // 關閉全局中斷 __disable_irq(); // 復位外設避免將Bootloader的外設狀態(tài)帶到App里 HAL_RCC_DeInit(); SysTick-CTRL 0; SysTick-LOAD 0; SysTick-VAL 0; // 設置App的棧頂指針 __set_MSP(sp); // 取App的Reset Handler地址并跳轉 appEntry (pFunction)reset; appEntry(); while (1); }這段代碼有幾個點要解釋清楚。為什么跳轉前要關中斷因為中斷向量表默認還指向Bootloader區(qū)域跳轉瞬間如果來了一個中斷CPU會從Bootloader的向量表里取中斷服務函數地址但此時棧指針已經切到App的棧了棧上下文對不上極容易死機。更安全的方法是先關所有外設中斷并清掉NVIC里pending的中斷標志。為什么HAL_RCC_DeInit()Bootloader初始化過串口、定時器等外設跳轉后App會重新初始化這些外設。如果外設的時鐘配置還停留在Bootloader的狀態(tài)App初始化時可能讀到錯誤的狀態(tài)寄存器導致配置混亂。這條我在實際項目里驗證過很多“跳轉到App后能跑但串口打印亂碼”的詭異問題根源就在外設時鐘沒復位。為什么那行if ((sp 0xFFF00000) ! 0x20000000)這是App合法性的第一個檢查。如果App區(qū)是空的或者數據不對跳轉進去就是死機。檢查時只判斷高位是否需要落在RAM范圍內是因為不同的STM32型號RAM大小不同但片內RAM的基地址都是0x20000000用這個判斷足以過濾掉大量非法地址。3.4 App側必須做的三件事VTOR、編譯地址、固件標志App側的代碼改動比很多人想象的要少但漏掉任何一個都會出問題。第一件事中斷向量表重映射。Cortex-M3/M4內核里有一個VTOR寄存器專門存放當前使用的中斷向量表基地址。芯片默認值是0x08000000也就是Flash基地址。App被鏈接到0x08008000之后它的中斷服務函數向量表也跟著到了0x08008000但CPU還傻乎乎地按默認地址取向量于是一觸發(fā)中斷就取到了Bootloader代碼區(qū)的地址跑飛了。解決辦法是在App的main函數開頭加上一行int main(void) { // 必須在HAL_Init之前設置否則初始化過程一旦發(fā)生中斷就會出問題 SCB-VTOR 0x08008000; HAL_Init(); ... }注意地址的低幾位必須是0VTOR要求128字節(jié)對齊你的App起始地址只要是頁對齊的天然滿足要求。第二件事編譯地址。App的鏈接腳本或IDE的ROM起始地址必須改成0x08008000。Keil里在Options for Target的IROM1里把Start改成0x08008000Size改成0x00078000對應480KB如果用STM32CubeIDE需要在鏈接腳本里修改FLASH的ORIGIN和LENGTH。這一步漏掉的話編譯出來的固件向量表還鏈在0x08000000即使VTOR設置了向量表本身放的位置也不對App的中斷依然會亂。第三件事固件標志。App在正常運行之后可以把參數區(qū)里的“App有效”標志寫掉表示新固件已經穩(wěn)定運行。有些方案還會在App啟動后通過串口上報自己的版本號讓Bootloader或上位機確認當前運行的固件版本方便排查。4. 可靠性設計校驗、回滾、掉電保護4.1 CRC校驗與固件完整性固件在傳輸過程中可能被干擾、被截斷所以完整性校驗不能只靠數據幀的CRC16必須有整體校驗。我通常在協議的開始幀里帶上整個固件文件的CRC32Bootloader收完所有數據幀后對寫入Flash的App區(qū)從頭到尾算一個CRC32兩個值相同才允許跳轉。HAL庫里可以直接用硬件CRC外設uint32_t crc32_calc(uint32_t *data, uint32_t len) { __HAL_RCC_CRC_CLK_ENABLE(); HAL_CRC_Init(hcrc); return HAL_CRC_Calculate(hcrc, data, len); }但要注意不同平臺對CRC32的初始值、位序、結果異或等參數定義可能不同上位機計算固件CRC的算法必須和單片機側保持一致否則兩邊算出來的結果永遠對不上。我自己踩過這個坑最后老老實實把上位機和Bootloader的CRC算法統一成同樣的參數才解決。4.2 回滾策略對比升級最怕的是新固件有Bug寫入成功了、也能跳轉但跑起來就死機。這時候如果Bootloader沒有回滾機制設備就徹底變成磚了。業(yè)界常見的兩種回滾策略各有取舍。A/B升級是最內涵的方案Flash里放兩個App區(qū)A區(qū)跑舊固件新固件寫入B區(qū)校驗通過后再更新啟動標志下次啟動運行B區(qū)。如果B區(qū)運行不穩(wěn)定由Bootloader或App把標志切回A區(qū)。這個方案最穩(wěn)但代價是Flash容量直接翻倍只適合大容量芯片比如F4/F7/H7系列。小容量芯片比如只有128KB甚至64KB更適合做“故障重刷”方案App區(qū)只有一份升級失敗后Bootloader不跳轉停留在等待接收固件的狀態(tài)上位機可以重新發(fā)送固件包。代價是設備在修復前處于不可用狀態(tài)但至少不會變磚現場維護人員拿著升級工具重新刷一遍即可。回滾方案的另一個細節(jié)是版本號策略升級前先記錄舊固件版本升級完成后如果App側檢測到自身運行異??梢栽趨祬^(qū)標記回滾請求。這屬于較高級的設計常規(guī)項目可以先不做。我建議第一步先把A/B或故障重刷的框架搭好再考慮自動回滾。4.3 掉電保護參數標志與寫入順序升級過程中掉電是最糟糕的場景處理不好設備會白屏、死機甚至損壞Flash。保護方案的核心是“寫入順序”。我習慣在參數區(qū)維護這樣的標志#define APP_VALID_MAGIC 0xA5A5A5A5 // App是健康的 #define APP_INVALID_MAGIC 0xAAAAAAAA // App不可用/正在升級 #define UPDATE_REQUEST_MAGIC 0x5A5A5A5A // 請求進入升級模式升級流程是這樣的收到開始幀先寫UPDATE_REQUEST_MAGIC表示要進入升級流程擦除App區(qū)逐包寫入新固件全部寫入完成且CRC32整體校驗通過再寫APP_VALID_MAGICBootloader下一次啟動發(fā)現APP_VALID_MAGIC有效直接跳轉App如果在“逐包寫入”階段掉電啟動時Bootloader看到的App區(qū)無效或CRC不對不會跳轉而是停留在等待升級的狀態(tài)。因為升級標志和App有效性標志是分步更新的App區(qū)數據不完整時有效標志不會被寫入安全邊界就清晰了。另外一個容易忽略的點寫標志位置不要固定一個地址建議放在參數區(qū)末尾一個單獨的頁里。如果標志和App的末尾數據在同一個頁App區(qū)重新擦除時會連帶把標志也擦掉那就麻煩了。5. 實測中的常見問題與排查技巧5.1 跳轉后卡死或跑飛這類問題排在IAP故障第一位現象是Bootloader那行跳轉執(zhí)行完設備就卡死了。排查順序我一般按下面這個來先查App起始地址的前8個字節(jié)前4字節(jié)是初始棧指針必須落在RAM地址范圍0x20000000開頭后4字節(jié)是Reset Handler地址必須落在Flash范圍。打印這兩個值基本能排除App區(qū)為空、燒錄地址錯誤、鏈接腳本沒改的問題。再查跳轉前的中斷處理。SysTick在Bootloader里被初始化過如果跳轉時不關閉SysTickApp啟動時又會初始化一次SysTick容易出問題。記得把SysTick的CTRL、LOAD、VAL全部清零同時調用__disable_irq()關閉全局中斷。最后查App側的VTOR。很多App代碼是在HAL_Init之后才設置VTOR這其實存在風險窗口。我的建議是App的main第一行就寫SCB-VTOR然后才是HAL_Init。我還遇到過一種特殊情況跳轉前Bootloader把串口中斷掛在NVIC里沒清跳轉后App初始化串口時一使能中斷CPU立刻進入一個中斷服務函數而那個函數地址是Bootloader的遺留值直接HardFault。解決辦法是在跳轉前調用HAL_NVIC_DisableAllIRQs()并把NVIC的pending位清掉。5.2 升級中斷、Flash擦寫失敗升級到一半斷連最常見的原因是串口緩沖溢出。Bootloader一邊擦Flash一邊用查詢方式收串口擦除期間進來的數據全丟了。我在3.2里已經提過這里再強調一次用DMA接收或者把串口接收中斷優(yōu)先級調高讓數據先落到RAM緩沖區(qū)擦寫完成后再處理。Flash寫入失敗則優(yōu)先檢查三件事有沒有先調用HAL_FLASH_Unlock()目標地址是不是頁對齊的App區(qū)容量是不是不夠了。F1的頁是1KBF4的低密度扇區(qū)有的只有16KB不同芯片差異很大寫之前一定要查參考手冊里的Flash內存映射表。另一個隱蔽問題芯片開了讀保護RDP等級為1或2Flash寫保護生效時擦除和編程都會被拒絕。這種情況在量產板上比較常見通過SWD重新設RDP等級才能恢復。如果項目有量產燒錄步驟一定要在燒錄流程里把讀保護狀態(tài)統一規(guī)劃好。5.3 升級完成后App功能異常能跳轉、能跑但外設不正常十有八九是外設狀態(tài)被Bootloader污染了。典型現象是App啟動后串口打印亂碼、GPIO電平不對。原因就是跳轉前沒有復位外設Bootloader把串口波特率改過、把某個GPIO配置成了輸出App重新初始化時配置寄存器里還殘留著之前的狀態(tài)。處理手段就是HAL_RCC_DeInit()把所有外設時鐘關掉再把SysTick歸零。這里有個細節(jié)要注意HAL_RCC_DeInit會影響Flash預取緩沖和時鐘樹跳轉后App的SystemClock_Config會重新配置這沒問題。但如果JumpToApp里在HAL_RCC_DeInit之后又調用任何HAL庫函數那些函數會因為它內部依賴HAL狀態(tài)而出現異常所以跳轉函數的最后一段盡量只做裸寄存器操作。還有一類問題出在App本身App里用了某個外設中斷但沒有初始化對應的NVIC使能或者中斷優(yōu)先級分組和Bootloader不一致。升級后死機不一定都是Flash的問題有時候就是兩個工程的中斷配置互相打架。開發(fā)時建議把Boot和App的中斷優(yōu)先級分組設為同一個值比如都是HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4)。6. 實測中的常見問題速查表故障現象可能原因排查方法跳轉后死機App首地址數據非法打印棧指針和Reset Handler地址檢查是否在合法范圍跳轉后死機中斷向量表偏移未設置App main第一行設置SCB-VTOR確認地址等于App起始地址跳轉后死機跳轉前中斷未關閉干凈__disable_irq() 清NVIC pending SysTick歸零升級中途斷連串口緩沖溢出啟用DMA接收或加大環(huán)形緩沖Flash寫入失敗Flash未解鎖HAL_FLASH_Unlock()后再操作Flash寫入失敗地址未按頁/扇區(qū)對齊查閱參考手冊確認頁大小Flash寫入失敗讀保護開啟檢查RDP等級量產時統一規(guī)劃App能跑但功能異常外設狀態(tài)被Boot污染跳轉前HAL_RCC_DeInit復位所有外設重復進入升級模式升級標志未清除升級成功或失敗流程里清除標志CRC校驗總失敗上位機和設備算法不一致統一CRC參數初始值、位序、輸出異或這張表我建議直接打印出來貼在工位旁邊很多問題其實看一眼就知道方向了。7. 最后再分享幾點個人經驗做IAP項目這幾年我最大的體會是讓系統跑起來只需要半天讓它穩(wěn)定跑一年才是真正的難點。代碼里那些看起來不起眼的細節(jié)比如跳轉前關中斷、App區(qū)合法性檢查、升級標志的寫入順序才是防住線上事故的關鍵屏障。這里補充三個我習慣用的小技巧算是壓箱底的東西。第一在Bootloader和App兩條分支里都留一個串口打印的入口。Bootloader啟動時打印自己的版本和“upgrade mode”或“app mode”狀態(tài)App啟動時打印自己的版本。這樣設備到手插上串口一看日志就知道它停在哪一步排查效率能翻倍。第二升級固件建議用bin文件而不要用hex文件。hex是Intel格式的文本文件包含地址信息和校驗段Bootloader解析起來要額外處理分段、字節(jié)數、地址對齊等問題復雜度高。bin文件就是純代碼數據從起始地址開始連續(xù)排列Bootloader按順序寫Flash就行簡單直接。生成bin文件的辦法是在IDE里配置一個后處理命令比如Keil的fromelf命令網上資料一搜就有。第三給每個固件包加一個版本字段放在開始幀里。Bootloader可以檢查新版本和當前版本是否一致一致就直接拒絕升級。這個功能看起來小但在現場批量維護時特別有用省得運維人員一遍遍刷同一個版本還看不出效果。IAP這套東西看起來是幾段代碼的拼湊但實際牽扯到芯片架構、編譯器、協議、存儲布局多個層面。這篇文章講的是我踩過的坑和驗證過的方案如果你正準備做集成建議先拿一塊開發(fā)板把串口IAP從Boot到App完整跑通再去考慮CAN、以太網、OTA的改造?;A鏈路穩(wěn)了剩下的都是錦上添花。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
丁香六月婷| V A在线| 国产精品自在线发布| 91蜜臀人妻中文字幕在线| 欧美一区二区三区大综合| 黑人白女精品一区| 操逼网站视频漫画国产| 综合久久久久久久久91| 蜜臀视频网站| 欧美后入式| 波多野结衣之双飞调教在线播放 | xxx0国产在线播放| 免费AV中文网在线观看| 999国产精品999久久久久久| 国产国产亚洲一二三久久| 欧美色图亚州激情| 91狠婷| 无色无码| 在线色导航| 91国产操逼视频| 91爱| 国产v片在线免费观看| 欧美亚洲清纯| 97久久国产亚洲精品超碰热| 少妇内射视频| 九九国产热| 91老熟女逼| 婷婷五月av| 日韩欧美aⅴ综合网站发布| 色爱亚洲| 国产999精品久久久| 成人在线午夜视频一区| 国产精品一区在线播放| 夜夜无码| 超碰97COm中文| 蜜臀久久99精品久久久久久成人小说 | 天美传媒国产原创中文字幕亚洲欧美另类| 99久久精品国产高潮| 日韩精品一区二区高清| 天天视频网站黄| 日韩视频中文字幕| 91久久免费视频互動交流 | 精品射1999| 欧美综合站| 另类综合另类| 久妇网| 男人夜色天堂ss| 黑丝少妇在线观看| 无码人妻丰满熟妇奶水区毛片| 久久久久国产亚洲一区欧美色图日韩| 视频在线观看一二三区| 麻豆福利视频导航| 中文字幕av片| 黄片www视频免费| 色噜噜国产精品视频一区二区| 国产精品一区二区三区在线| 97干色| 狠狠色噜噜狠狠狠狠2018| 国产免a费看黄片在线| 熟女字幕| 高跟伊人julia ann| 大香伊人在线一区| 超碰是碰在线观看| 欧美色图亚洲色| 欧美亚洲自拍另类人妻| 亚洲操逼视频网站| 久7色| 人妻少妇精品久久久| av草草在线电影| 99re99在线视频| 射久久| 日韩性爱1级片视频| 午夜影美女日鸡鸡天天视频国产| a网站免费观看| 精品少妇一区二区三区| 人人操人人肉久久精品| 男女日B国产| www.av在线观看| 旡码电影特区| 白嫩91在线亚洲| 久久精品久| 国产黄片精品在线| 超碰av在线| 日韩三级网址| 日韩三级伊人| 亚洲欧美日韩综合在线尤物| 中文字幕久久亚州无码| 国产午夜激片Av毛片不卡| 亚洲男人天堂2019| 久草看看看| 亚洲图片婷婷五月天| 欧美日韩性感| 色老大| 久久久国产av美女私房| 天天插天天插| 色97干| 激情干在线| 操学生天天| 看全色黄大色大片免费视频| 亚洲天堂热| 97bbn| 亚洲 暴爽 AV人人爽日日碰| 亚码激情| 少妇淫妇久久久久久久| 婷婷久热| 欧美色图欧美| 91暧暧| 中文字幕乱码在线| 色嘟嘟人妻天堂网| 国产精品久久久久久久久久久久久久吹| 欧美专区日本专区| 久久综合av| 黄色激情电影在线观看| 狠插 制服 自拍| 人妻精品视频一区二区三区| 日本三级人妻a人妻一在线| 天天噜| 射 色综合| 亚洲人妻日日日| 99久久婷婷| 蜜桃精品视频一区二区三区| 九九性爱网| 国产91专区| 日本Xx性爱| 少妇第一页| 黄页视频网站野外| 超碰社区97| 亚卅熟女乱色| 天天肏天天干| 久久综合日韩亚洲欧美| 操逼www.| 麻豆区久久久久亚| 久无码| 翔田千里爆乳巨臀无码| 四虎AV影视国产精品亚洲精品| 操逼日批| 伊人少妇久久久| 思思99热| 人人操,人人插| 你草精品在线视频| 成人片在线播放| 91综合网在线| 黄久在线| 丁香五月成人| 无码动漫av中文字幕| 少妇毛片久久| 欧美亚洲另类在线蜜桃| 国产精品白领在线观看 | 黄色操人| 亚洲中文sv| 欧美1727免费观看视频| 八戒无码国产午夜福利| 一本大道青青| 九热大香蕉| 熟女六十路| 国产精品操| 伊人久久大香蕉线AV五月天| 激情综合五月| 日本性交操一区二区不卡系列| 亚洲日韩少妇一道本视频| 色色婷| 99精品国产户外露出| 老女人碰碰在线碰碰视频| 亚洲精品三| 国产精品一二三区18| 无码男人天堂| 91久热这里只有精品| 国产精品无码av在线 | 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 亚洲中文字幕日产无码久久| 巨爆乳肉感一区二区三区竹菊影视| 老女人综合网| 中出20p| 青青草十区九区爱夜| 丁香五月天激情网站| 亚洲一区日韩精品| 久久国产成人精品国产成人亚洲| 欧美97免费| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 日本精品一区二区不卡| 婷婷丁香一区二区三区| 亚洲熟妇图片| 91GD.COM| 久久国内| 在线人人人人人人精品超 | 人妻免费观看| 欧美激情片一区二区| 色五月综合网| 天天精品| 国产粉嫩出水在线播放| 爱av免费| 人看人人摸人人操| 日本一区二区成人在线| 九九视频黄色片| 国产区日韩区在线观看| 91大神精品长腿在线观看网站| 99999国产| 超碰 国产熟女精品一区| 大香蕉男人的天堂| 国产欧美成人精品| 青青草国产盗摄一二三区| 蜜桃久久久久久久| 青青草黑寡妇男人天堂| 超碰97久久国| 国产人妻精品一区二区三区秋霞| 亚洲熟久久| 综合网欧| 国产第11页| 欧美日韩亚洲五月天婷婷| 国产农村妇女精品一| 91狠狠综合久久久久久| 欧洲中文字幕| 亚洲欧美日韩有码| 玖玖草久草99蜜月一区二区三区| 亚洲日韩欧美一区二区| 好湿好紧视频| 国产精品视屏| 亚洲成人免费中文字幕| 日韩无码黄色片| 在线强奷到舒服的无码视频 | 国产乱码久久久久久| 亚洲91网站| 久操网在线| 啊啊啊啊啊啊啊在线| 精品二区久久| 亚洲婷婷丁香在线| 人妻献身系列第54部| 亚洲性爱电影| 国产一区二区欧美日本| 久99视频| 九九久久99| 久久久久久九九九九九九| 中文字幕欧美精品亚洲日韩蜜臀| 亚洲熟女综合一区二区| 欧美gv在线观看| 热无码中文亚洲H一道本一区二区| 波多野结衣一级视频| WWW黄片COM| 欧美精品成人亚洲| 欧美激情久久久久| 91久久婷婷| 操逼视频国产无套| 人妻少妇一区二区| 男人的天堂在线| 黑白配性爱AV成| 操一操摸一摸| 色综合久| 精品无码一区二区人妻久久蜜桃| 毛片一区二区| 精品国产久热在线观看| av操操不卡| 欧美九一精品久久久熟妇| 97超碰大| 五月丁香色情| 国产91专区| 中文字幕后石码四区五区| 久久国产免费激情视频| 97精品一二区| av橘色网站| www.色吧5.com| 97操操| 99re69| 欧美不在线| 日韩性爱电影一区| 欧美 青青草| 中文字幕一区二区三区人妻不卡| 免费一级特黄特色大片在线观看看| 国产剧情一区在线观看| 舔舔啊| 国产av激情无码久久天堂| 婷婷综合激情| 夜夜嗨免费视频| 亚洲 日本 国产 综合| 亚洲激情AV| 久日综合网| 亚洲国产精品成人综合| 人妻加勒比东京热| 夜夜骑夜夜操| 人妻精品综合中文字幕在线| 无码人妻一区二区三区免费九色| 激情久久久| 亚洲欧美国产va在线| 久久国产成人精品国产成人亚洲 | 久9九综合在线| 免费操逼视频下载| 精国久久一区二区三区98| 操逼操2| 久悠悠av| 亚洲天堂精品日韩电影| av在线人气| 亚洲欧美首页| 丁香六月天| 亚洲丝袜在线观看| 久久精品国产精品亚洲艾通辽熟妇| 一区超碰一区| 五月天婷婷色色| 一二三四区电影| 国产 三级自拍| 亚洲欧美日韩国产丝袜自拍中文| 三级色综合| 91强在线播放| 嫩草影院在线观看精品| 男女香蕉一区二区| 亚洲激情av| 国产传媒日韩| 少妇69中文| 国产野战露脸在线播放| 日本欧美m v精品网站加| 日韩免费看黄片| 清纯唯美综合亚洲| 五月天伊人| 久久久久久97| 大香蕉伊人在线成人AV在线观看| 亚洲无码太久| 漂亮人妻被强中文字幕hd| 欧洲色色| 免费久久一级毛片大黄| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 超碰精品| 亚洲激情网| 91精品网站| 高清不卡一二三区视频......| 人人搞人人插人人操| 日日夜夜国产综合| 婷婷五月天伊人| 中文操逼字幕| 精品人妻视频一区二区在线播放| 91ise欧美| 久久久久人妻二区精品叶可怜| 欧美在线 亚洲| 国产这里只有精品| 日韩欧美tv一区二区在线观看| 好爽要喷了| 国产超碰国产97| 精品毛片av一区二区| 东京热91| 色天堂综合| 99熟女| 国产久久成人| 亚洲av性爱电影| 美女骚尻视频| 啊啊啊啊啊在线视频| 日韩去日本高清在| 国产女同视频在线播放| 啊v在线观看视频| 日夜干射色啊| 免费看毛片操穴| 久久免费精品视频免一| 午夜国产综合视频在线观看| 精品国产乱码久久久影院| 亚洲欧美性生活| www.色99| 欧美黑人精品一区二区| 国内精品a| 亚州性色| 中文字幕丝袜| 蜜桃网熟妇| 午夜啊啊啊| 天天综合~91入口| 日本日皮视频逼| 人人艹亚洲| 欧美色视| 国产精品久久泡妞网站| 99在线精品视频| 久艹视频在线| 亚洲精品97p| 日本大香蕉| 91精品人妻一区二区三区蜜桃臀| 91在线页| 亚洲一级性爱视频免费看| 玖玖视频在线资源一区二区三区| 亚洲av总站| 小日子操bb在线看| 91性网| 天天综合站| 亚洲精品美女操逼| 大香蕉国产中文自拍| 嗯啊不要啊在线| 探花激情视频| 国产精品国产拍高清AV| 动漫爆乳3D奶水一区在线观看| 日本成人A片网站| 亚洲无码国产探花在线观看| 乱伦熟女论坛| 一级性爱视频免费观看 | 日本黄色精品专区网站| 成全动漫视频观看免费下载| 国产拍偷精品网站| 久久性生大片免费观看性| 搡老女人老91二区| 伊人国产成人av网站| 97超碰人妻| 美女91网站| 激情黄色片在线观看| 激情黄色片在线观看| 国产精品嫩草影院午夜两性| 日本操逼视频导航| 99操视频| 情色五月天久久久| 亚洲色图伊人网| 国产熟女高潮一区二区三区| 人妻娇喘 激情视频| 综合久久99| 丁香婷婷五月| 婷婷影院入口| 亚州操操穴网| 大香蕉色欲AV| 欧美亚洲丝袜人妻制服中文99| 中日韓欧美高清| 十八禁视频一区二区| 国产精品女生av| 抽插无码高清一区| 91精品电影18| 91老熟女91老女人| 国产精品操| 精品丝袜无码一区二区三APP| 亚洲AV无码黄色强奸| 99热在线观看| 久久精9| 免费视频一二三区| 99精品视频在线观看免费| 在线另类| ...日韩成人一区二区三区字幕| 国语精品av| 欧洲在线性爱视频| 极品极品色影院| 欧美丝袜激情| 97K超碰在线| 老外又粗又长一晚做五次| 日韩一区二区三区四区五区| 91色艳| 亚洲丰满很很操| 尤物av网站免费在线播放| 久久riav中文精品| 天天干天天日天天射黄色大片| 亚洲偷91色| 男人天堂网址| 久综合网| 超碰久草| 亚洲天堂人妻熟妇视频| 超碰公开久久网| 最新9久久久9免费视频| 中文日本免费高清| 暖暖精品二区三区观看| 久久大香蕉97| 偷拍自拍在线视频观看| 日夜久久久九九九久| 国产精品一区二区密臀| 黑人无码一区二区| 国产视频小说| 午夜一区二区三区国产| 大香蕉中文aV在线| 黄片免费视频2019| 亚洲色性情三级| 熟妇视频一区二区三区在线| 黄色AV影视| 凹凸 69堂 在线播放| 亚洲国产一级精品毛一级精品看免费视频| 牛牛久久国产精品视频一二三| 久久精品人妻一区| 久久,精品一二三| 国产2.3.4区| 久久人人舔人人爽舔人人av片| 亚州色站 日韩电影| 9丨久久九九九| 强奸a片网| 中文一区二区| 婷婷中文网| 天美传媒av在线| 黄页视频网站野外| 国产精品在线一区二区| 93人人操人人| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | www.acm成人黄色毛片| 久操凹凸视频| 九七人妻在线| 天天日少妇逼AV| 天美传媒婬乱在| 青青草原人妻| 国产日韩色综合| se,,,亚洲欧美| 亚洲精品xxx| 91久久久久久久| 91操人| 日韩无码第3页| 99热精品在线| 麻豆国产97在线| 女人的天堂大香蕉网| 人妻丰满熟妇一区二区三| 精品人妻一区春色| 丁香婷婷九月| 超碰在线欧美性爱激情| 亚洲鸥美色图| 久久草草欧美精品| 欧美精品宗合| 亚洲区限制级 99| 26uuu国产| 青娱乐国产剧情av一区| 欧洲精品一二三在线| 色色婷婷丁香| 欧美大香蕉久| 亚洲中文字幕久久无码精品| 日韩美女久久一区二区三区| 中国东北熟女老太婆内谢| 亚洲色性| 青青草五月天| 99久久婷婷国产综合精品草原| 久久大黄片| 97在线资源| 日韩97超碰中文字幕| 日韩操p| 久久久免费高清中文视频| 欧美综合97www| 国产精品自在线发布| 久久免费9| 亚洲日韩乱码中文无码蜜桃臀网站| 狠狠五月天| 国产黄片精品在线| 亚洲欧美人妻| 深喉吞精| 超碰欧美在线欧美| 超碰激情808| 婷婷天堂站| 天堂俺去俺来也www久久婷婷| 亚洲Av诱惑| 国产视频大全| 亚洲成人精品久久久| 国产成人网址| 国产人妻天天干精品| 大香蕉乱级| 欧美九九九九九| 果冻传媒A片一二三区| 欧美欲色| 天天综合AV| 久热婷婷| 欧美成人黄网色网站| 无码高清少妇久久| 日本成人在线不卡一区二区三区 | 国产99热| 亚洲av强奸乱伦| 操逼不卡中文字幕| 超碰国产精品久| 精品无码久久久久久久久果冻糖心| 97精品一区| 亚洲 欧美 综合 91| 中文字幕-区二区三区四区视频中国| 国产精品一二三免费网站| 人妻精品视频一区二区| 日韩不卡a级视频专区| 欧美日韩国产黄色片| 蜜乳AV免费观看| 日韩成人性日韩成人性爱视频在线免费观看| 狠狠躁久久躁| 国产蜜臀精品一区二区尤物| 亚洲资源吧| 国产AV线| 亚洲蜜臀精品视频久久| 精品无人区麻豆乱码1区2区图片| 婷婷九月丁香| 青青草依人大香蕉| 黑人性欧美| 五月天伊人网| 91在线视频国产网站| 老司机福利青青草| 伊人操你| 插穴性爱视频在线观看| 操逼片中文| 欧美黑人精品一区二区| 免费看久久久性性| 日本狠狠干| 成人贴图日韩欧美| 青久操| 素人无码中文字幕| 日韩丨制服丨中文|在线| 国产精品高朝久久久久久久| 少妇激情一区二区三区视频| 97干97色| www.久久最新地址| 日本岛国黄色网址| 欧美最婬乱婬爆婬性视频| 国产视频一区二区三区久久亚洲天堂| 亚洲情色在线| 九九五月天| 四虎精品永久在线播放| 超碰国产精品久| 国产成人久久久精品免费AV| 日韩一级二级| 色九九九综合| 可乐操亚洲蜜911| 国产精品美女视频诱惑| www.91理论| 99精品热| 欧美国产有色电影| 麻豆视频一区二区| 亚洲免费成人在线高清无码视频| 无码少妇精品一区二区60岁老人| www四虎| 久湿久久 | 欧美性巨大╳╳╳╳╳高跟鞋| 色99在线| 91成人久久| 天天综合91| 久久精品国产96精品亚洲拳交| 香蕉在线一区二区三区| 91处女在线视频| av中亚| www成人啪啪18秘 免费| 伊人久久亚洲中文字幕| 国产精品另类一区大香蕉| 欧美片第一页| 91大学精品激情戏| daxiangjiao你懂的| 亚洲97综| 国产 码在线成人网站| 天天舔九色婷婷| 熟女人妻精品一区二区视频 | 超碰久草| 两性色网| 白 大 人妻 区 在线| 色妇综合网| 26uuu国产免费观看| 日韩在线97| 亚洲超碰97| 狠狠操狠狠爱| 另类老少妇| 天天摸夜夜添无码小视频| 久九干| 懂色Av一区二区三区| 亚洲精品中文字幕一区在线视频| 久久久久亚洲精品| 性爱网站一区二区| 九月丁香婷婷| 97超碰色色| 久久99热这里只频精品6学生| 久久亚洲天堂| 精品v日韩欧美国产| 夜夜操一区二区| 国产亚洲精品无码三区| 97露脸精品丝袜| 一级乱伦网站| www.一本大99| 欧美精品精品一区二区| 99久久com免费视频′| 97免费视频在线| 农村妇女一级二级三级视频| 99re99| 日韩美一区| 2023天天操夜夜操| 岛国小电影| 欧美日韩黄片精品在线| 日日黄色三级网站| 97人人操人人摸| 色综合超碰超| 欧洲熟妇xxXx欧美老妇裸体| 超碰导航97| 夜夜操二区| 伊人国产成人av网站| 色好看av| 日韩人妻制服丝袜av| 精品一区二区三区蜜桃臀www| 欧美日韩国产高清在线一二三区| 日本一级不卡一二区| 久操不卡视频| 91视频综合网| 国产白丝在线| 天天操天天舔| 好吊色青靑草| 九九英色视频| 午夜福利视频在线一区| 60秒不遮不挡| 啊啊啊97视频| 色人久久| 国产亚洲精品一区二区三区| 囯产精品强| 激情综合五| 国产亚洲精品A在线观看下载| 国产精品久久久九九九| 国产高潮AA片免费看| 97视频在线播放| 成人在线永久| 天天做天天爱天天高潮| 1000部熟女视频在线观看| 色阁阁AV综合网| 婷婷五月天av| 精品人妻一区二区视频| 熟女熟妇一区二区三四区| 日韩一区二区熟女| 精品久久人妻成人网| 欧美色女人| 无码人妻系列少妇| 热久久精品| 国产超碰人人爽人人做| 亚洲一区在线观看欧洲| 天天综合欧美黑人| 鸥美插入视频| 女优免费一区二区永久| 国产女乱淫真高清免费视频| 亚洲丝袜诱惑| 91碰碰| 欧美无圣光在线| 色五月亚洲| 国产高清26uuu| 放黄片放3级黄片没穿衣服| 中字一区| 狠狠躁天天躁日日躁| 天天干天天干天天干| 国产精品欧美日韩久久| 国产精品又黄又猛又粗| 久久三区四区| 久9爱经典视频| 麻豆精品A片免费观看| 日本三级韩国三级99| 国产黄色 A 片免费看| 91av熟女人妻| 欧美成人性活片| 91操熟妇| 九久久精品| 日韩精品9区| 人妻大相焦在线| 四月丁香婷婷| 天天综合~91入口| www.99热| 亚洲综合激情五月久久| 激情啪啪拍91| 欧美专区日本专区| 人妻 丝袜美腿 中文字幕| 国产成人超碰在线| 永久电影三级在线观看| 男人天堂网站| 少妇久久久| 羞涩视频| 韩国免费播放一级毛片| 婷婷丁香激情| 草草电影院| 香蕉欧美| 狠狠色噜噜狠狠狠狠2018| WWW.操逼.COM| 亚洲 无码 偷拍| 1769成人国产精品视频| 大象AV在线| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 欧洲精品二区| 男同专区一区二区三区在线| 天天欧美97| 超碰导航97| 春色综合网| 久久精品| 欧美日韩电影成人在线| 欧美黄色大片在线观看 | 久久婷婷五月综合| 99精品无码| 日本曲间由美性生活片| 日本九九久久99播| 超碰97最新人妻| 中文字幕文字幕无码一区二区三区电影99| 亚洲有码第一页| 黄页网站成人免费| 婷婷久月| 国产亚洲性生活视频播放| 色综合天天| 亚洲国产成人高清在线| av天堂影视中文在字幕在线中文 | 亚洲日韩视频二区| 人人操,操人人| 色色五月婷| 超碰激情808| 伊人亚洲综合| 欧美成人精品欧美一级乱黄一区二…| 国产深夜福利| 色色色色日本| 中文字幕在线观看视频www| 亚洲 日本 一 二 三| 色老汉色| 人妻人久久精品中文字幕| 日韩在线电影| 免费日韩黄片| 亚洲高清在线| 天天α片| 天天久久| 操逼啊啊啊91| 花野真衣| 久9爱经典视频| 久久只有精品| 日韩欧美俄罗斯A片| 欧美午夜精品久久久久久3D| 东京热熟女亚洲视频网站| 亚洲无码一区成人免费午夜| 亚洲高清无毛一区二区| 99热超碰| 超碰1997| 精品国模无码| 五月天色综合| 99re在线视频| 欧美性爱第一页久久| 亚洲日本韩国在线| 97公开久久| 九九九九热| 亚洲精品日韩国产欧美| 人妻大相焦在线| 五十路三区在线| 美国日韩黄色片| 日韩ab网 | 日韩熟女精品无码专区一区二区| 东京热AV男人的天堂| 久久久久久久久久va| 97久久精品亚洲| 狠狠躁久久躁| 亚洲av影音先锋| 日本女厕偷拍| 欧洲精品一级二级精品综合视频综合 | 欧美在线播放aaaa| 亚洲啪啪啪啪视香蕉| 亚洲性爱成人| 熟妇高潮一区二区免费视频| 中国91AV| 成人片在线播放| 精久久久| 精品区国产区一区二区三区| 精品国产乱码久久久兰草影视| A级在线视频| 91 亚洲 欧洲| 久草资源在线| 欧美精品第3页| 男人的天堂VA| www.色五月| 日日干日日摸| 色情五月综合婷婷| 久久婷婷一区| 激情色色| 超碰在线91| 婷婷六月天| 欧美性暴力| 欧美亚洲玖玖玖| 色图综合| 天天淫人人妻日日色| 激情小说亚洲色图| 久久熟女人| 亚洲 暴爽 AV人人爽日日碰| 日韩亚洲美女一区久久| 啊啊啊网站| 精品免费1| 亚洲另类欧美精品| 狠综合网| 亚洲色图殴美色图激情乱伦| 久久久久深夜无码| www狠狠| 精品999一区二区| 99青草| 欧美日韩性爱电影在线| 欧美亚洲涩涩| www网站黄| 99夜夜操| 91色综合激情| 国产女人与拘做受视频免费| 国模91| 日日狠狠久久偷偷色综合免费| 9久久久久| 97这里都是精品| 国产精品极品美女视频| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 天天视频综合在线观看视频| 九九九九一区| 97青青操视频| 久久综合亚洲色1080p| 中文字幕精品三级久久久| 婷婷99狠狠躁天天躁| 亚欧色图在线激情| 精品美女久久一二三| 亚洲精品久久久久久久蜜桃臀| 亚洲性高潮| 男人天堂日日夜夜| 日本三级R| 欧差乱伦二三| 很狠操| 久热69九色熟妇97| 超97在线精品视频| 中文字幕在线免费观看 | 国精综合一二三区影视| 免费看久久久性性| 家庭乱伦麻豆| 欧美人妻一区二区| 精品人妻夜夜草| 一区在线观看中文字幕| 一级黄色性爱裸体视频| 色婷婷一区二区三区久久午夜成人不| 又黑又大又粗 | 久久久青青草| 成人十八禁日韩欧美一二三| 无码99| 亚洲av影院在线观看| 日本操逼无码| 91痴汉| 一直超碰| 九九久久首页| 另类天堂| 8050午夜少妇无码| 尤物视频一区| 日本影视久久免费| 亚洲一区二区av| 精品一区二区三区蜜桃臀www| 啪啪视频mP4| 任你爽视频| 强奸乱伦资源| 自怕偷自怕亚洲精品| 99999精品| 国产后入式在线观看| 超碰这里只有精品| 18精品一区| 欧美一区91大爱| 999国产精品999| 日本精品无码三级网站| 视频国产成人精品日本亚洲18| 在线播放欧洲免费av| 人妻超碰青青草98| 91精品成人| 亚欧美天堂在线| 女同在线视频一区| www.丁香五月| 国产超碰| 亚洲Av无码成人精品国产| 国产日产精品久久快鸭的功能介绍| 综合久久少妇中文字幕| 欧美天天干| 97国产|免费| 青青操日韩| 日韩人人精品| 男人天堂网手机版婷婷| 日本新免费二区三区| 久久色一区二区| 男人天堂日日夜夜| 亚洲男人的天堂AV| 夜夜嗷嗷一区二区| 亚洲永久永久永久永久一级一级一级精品| 天天操女人| 日产国产精品中文久久婷婷| 国产精品天美传媒| 大香蕉伊利av| 91女网站| 白丝jkav| 骚人妻少妇视频| 欧美在线干| 欧美性暴力猛交| 九九九九热只有精品| 久久久98网站免费视频| 色操逼网| 狠狠色婷婷7777久| 狠狠色伊人亚洲综合网站色| 91日产欧美| 99日精品欧美国产| 亚洲中文字幕熟女| 青青青草原| KK色在线影院| 久草色在线观看| 91精品婷婷国产综合久久| 亚洲91网站| 人妻熟女一区二区| 日韩精品一区,二区 九九...老司机| 久久综合乱子伦国产免费| 日韩无码嘿咻黑热久| 人人色97| 人妻无码后入| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 久操影视| 999热日韩精品| 欧美少妇色图| 久久成年片色大黄全免费网站| 先锋影音av先锋一区| 国产精品 久久久精品一牛| 亚洲一区二区久久久久| 久久社区一区二区三区| 超碰91在线| 亚洲精品一区二区三区新线路| 天天日天天舔东京热| 精品人妻伦一区二区三区久久| 精精品人妻一区二区三区| 欧美第五页| 日韩欧无码一区二区三区免费不卡| 97色伦97色伦国产欧美| 男女激情黄色网址| 超碰精品日韩欧美国产| 丰满人妻区一区二区三| 欧美黑人熟妇精品91| 9丨亚洲一区二区在线| 八戒无码国产午夜福利| 国产女生在线| 熟女自慰久久久| 天天舔日美女视频| 这里只有精品视频在线观看麻豆| 五月丁香综合啪啪| 日韩无码AB| 狠狠操使劲操| 99综合| 综合色久欲| 无码区蜜乳| 伊人久久国产免费观看视频| 亚洲在钱| 人妻精品一区二区在线| 欧美一二三区四五区| 啊啊啊啊好疼| 久久精品人体AV| 三及片网站| 91粉芽高清在线一区二区| 人妻少妇久久| 色五月丁香五月| 日韩中文字幕宗合在线| 亚欧免费| 日韩无码久久熟女一级片| 亚洲欧美综合区自拍另类| 抽插爽| 日本在线播放不卡一区| 精品女同一区| 粉嫩在线一区二区懂色| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 92午夜免费福利视频| 呦女网站| 婷婷五月影院| 天天射天天操天天干天天吃2018| 国产黄a三级三级三级av在线看 | 成人一二| 亚洲系列第一页| 天天亚洲综合| 女人喷水视频在线观看| 中文子幕一二三| 殴美性色a级欧美| 精品人体无圣光凹凸| 国内外激情在线| 久久久精久久久| 日韩不卡毛片Av免费高清| 熟妇人妻丰满久久久久久久无码| 国产日本熟女顶级一区二区三区视频| www国产无码| 999熟女精品| 日本中文字幕在线视频 | 久久色一区| 国模精品娜娜一二三区| 伊人国产成人av网站| 夜色97| 青青草亚洲一区| 狠狠操狠狠插| 亚洲免费成人在线高清无码视频| 夜夜欧美| 99re在线视频国产| 激情终合网| 精品国产一区二区久久| 一区二区娱乐网站| 无码动漫av中文字幕| 久久久久久久| 免费男人的天堂| Aa东京男人的天堂| 99热精品国产| 免费网站观看www在线观| 亚洲精品一区中文字幕乱码| 色婷婷综合视频| 乱伦3P视频| 国内精品a| 台湾成人无码AV| {男男暴菊gay无套网站| 欧美一级黄色免费专区| 97免费在线观看视频| 97欧美日韩| 91美女在线观看| 日本操逼视频免费| 91丝袜在线观看| 亚洲国产精品无码AV久久久| 日韩精品在线视频,日韩精品……| 白丝一区| 一级婬片120分钟试看| 欧美高清无码免费视频高清版| 啊啊啊好疼| 色婷网| 亚洲精品久久久久久久蜜桃臀| 亚洲AV噜噜狠狠网址蜜桃动漫| 69少妇一区二区| 人妻乱仑一区二区三区| 欧美成人黄网色网站| 黑丝内射一区二区三区| 欧美一二在线| 欧美大色交| 91久久| 亚洲高清国产理伦片| 91oumei| 蘋果手機免費看成人Av| AV女优男人的天堂| 精品国产乱码| 大香蕉亚洲中文| 老司机午夜福利视频一区二区| 日本加勒比无码专区| 国产精品久久久久久照片| 丁香久久| 蜜桃狠狠色伊人亚洲综合 | 国产日韩欧美三级片| 亚欧美天堂在线| 青草一区二区| 亚洲av淫乱| 九九成人精品| 免费试看60秒| 激情五月婷婷综合| 狠狠躁日日躁夜夜躁A| 中文字幕精品免费一区二区| 久久精品国产72国产精品福利| 99精品热| 午夜人人操| 欧美少妇一区二区三区| 91精品国产91久久久久久久久久久久| 家庭乱伦国产| 日韩精品9999| 国产强奸乱伦无码视频| 殴美,日韩国产伦精品| 精品无码少妇| 99色天堂| 国产三级片在线观看| 人人操AV| 我想要 啊 啊 啊| 台湾佬激情综合| 久久久久国产精品久久久| 玖玖97综合| 乱伦熟女专区| 黑人中出21连凳花野真衣| 中文字幕五月婷婷免费| 草久久久| 中文字幕狠狠玩| 狠狠入| 爆乳免费黄网站| 九99久久| 高潮的A片激情扒开一区| 欧洲乱码一区二区| 国产成年女人免费视频播放a| 国产精品视频在线播放| 精品一区二区综合熟妇| 91大香蕉伊人| 丁香五月性| 9色国产精品一区粉嫩| 大香蕉天天看妹子| 四虎影院成年人片| 探花视频免费观看国产专区| 精品然女一区二区| 中文自拍欧美影视| 偷拍 欧美 日韩| 国产又长又大又粗的视频| 人妻夜夜爽天天爽麻豆三区网站| ji熟女.com| 欧美东京热青青草| 国产精品电影推荐| 四虎永久在线精品免费网址| 夜间福利片1000无码| 91在线视频国产网站| 超碰到97情色| 极品久久久久久久久久久久久久| 五月婷婷AV| 大香蕉专区| 成人国产视频在线观看| 国产白丝网站| 久久久久元码视频| 超碰97资源中文字幕| 欧美操逼一二三区| 狠狠色综合网| 柠檬AV导航| 中文字幕在线观看二区三区| 免费啪啪一级视频| 色狠狠 - 百度|