免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

嵌入式固件進(jìn)階:?jiǎn)?dòng)流程拆解與OTA工程化實(shí)戰(zhàn)

嵌入式固件進(jìn)階:?jiǎn)?dòng)流程拆解與OTA工程化實(shí)戰(zhàn) 1. 為什么嵌入式老手都在重啃啟動(dòng)流程先說個(gè)有點(diǎn)反直覺的現(xiàn)象做了三五年嵌入式開發(fā)的人很多人能把業(yè)務(wù)代碼寫得飛起中斷、定時(shí)器、狀態(tài)機(jī)玩得滾瓜爛熟但你要問他“芯片上電后第一條指令到底在哪執(zhí)行”“U-Boot為什么要分SPL和TPL兩段”“RT-Thread的$Sub$$main鉤子到底什么時(shí)候被調(diào)用”他大概率只能答個(gè)大概。這真不怪誰。日常開發(fā)里啟動(dòng)流程被IDE和廠商SDK層層封裝掉了。你新建一個(gè)STM32工程點(diǎn)一下編譯下載代碼就跑起來了沒人逼你去關(guān)心Reset_Handler之前的那些事。但只要往深處走——做低功耗喚醒、做OTA升級(jí)、做Bootloader、做固件加密、排查上電即死機(jī)的問題——啟動(dòng)流程立刻變成繞不過去的坎。我這次在CSDN開的這個(gè)付費(fèi)專欄連載的核心就是“嵌入式固件進(jìn)階”這條線本篇是上篇重點(diǎn)集中在三塊啟動(dòng)流程深度拆解、故障定位方法論、OTA升級(jí)工程化實(shí)戰(zhàn)最后附上篇的課后思考題完整解析。這篇博文我會(huì)把三個(gè)主題的骨架和精華邏輯抽出來用自己的語言重新揉碎了講一遍配合實(shí)際工程里的經(jīng)驗(yàn)和坑盡量讓不管是剛?cè)腴T還是做了一兩年的朋友都能對(duì)上號(hào)。適合看這篇內(nèi)容的人我大致分三類一是準(zhǔn)備嵌入式面試、被“啟動(dòng)流程”這類八股文折磨的求職者二是正在做Bootloader或OTA、需要把啟動(dòng)這塊徹底搞透的工程師三是想系統(tǒng)梳理自己嵌入式知識(shí)體系、發(fā)現(xiàn)“好像都會(huì)但講不清楚”的老手。不管你是哪一類這篇內(nèi)容都能幫你把碎片知識(shí)串成線。2. 上電之后發(fā)生了什么MCU和SoC的啟動(dòng)路徑全拆解啟動(dòng)流程這玩意兒最大的坑在于MCU和SoC的啟動(dòng)路徑是兩套完全不同的邏輯。很多人用慣了STM32突然去看Linux的啟動(dòng)直接懵掉。所以這一章我會(huì)拆成兩條線來講最后匯個(gè)總。2.1 MCU啟動(dòng)從Reset_Handler到main的100毫秒MCU以ARM Cortex-M為例的啟動(dòng)流程看似就三步取復(fù)位向量→跑SystemInit→進(jìn)main。但每一步背后都有值得深挖的細(xì)節(jié)。上電復(fù)位后硬件會(huì)做一件非常關(guān)鍵的事從向量表的起始地址讀取兩個(gè)值——初始棧指針MSP和復(fù)位向量Reset_Handler地址。向量表一般放在Flash起始地址0x08000000STM32為例芯片硬件固定從這個(gè)地址取數(shù)不需要軟件參與。這就是為什么你在啟動(dòng)文件里看到的.isr_vector段必須鏈接在Flash開頭鏈接腳本里VECTOR_TABLE的地址不能亂改。然后是Reset_Handler它干三件事拷貝.data段把初始化了的全局變量從Flash拷到RAM。清零.bss段把未初始化或零初始化的全局變量所在的RAM區(qū)域清零。調(diào)用SystemInit→ 調(diào)__mainC庫入口→ 最終進(jìn)main。這里有個(gè)特別容易忽略但面試官愛問的點(diǎn)**為什么在進(jìn)main之前必須完成data段拷貝和bss段清零**原因很簡(jiǎn)單——你的C代碼里隨便一個(gè)全局變量賦值依賴的RAM在程序跑起來之前就應(yīng)該是正確的初始狀態(tài)。如果跳過這步所有全局變量都是隨機(jī)值程序跑到一半就會(huì)以極其詭異的方式出bug而且極難排查。另外SystemInit這個(gè)函數(shù)在STM32的庫里主要做兩件事配置Flash等待周期、設(shè)置系統(tǒng)時(shí)鐘。注意SystemInit并不是C標(biāo)準(zhǔn)規(guī)定的而是廠商SDK加進(jìn)去的。所以不同芯片的啟動(dòng)流程細(xì)節(jié)會(huì)有差異比如有些芯片直接硬件固化時(shí)鐘配置連SystemInit都可以不要。踩過的一個(gè)真實(shí)坑自己寫鏈接腳本時(shí)忘了給向量表做4字節(jié)對(duì)齊結(jié)果編譯出來的固件下載后第一次復(fù)位能跑一旦軟復(fù)位就死機(jī)。查了半天最后發(fā)現(xiàn)是向量表地址不對(duì)齊硬件取中斷向量時(shí)錯(cuò)位。這提醒大家向量表對(duì)齊這個(gè)細(xì)節(jié)是硬約束不是風(fēng)格問題。2.2 SoC啟動(dòng)BootROM→SPL→U-Boot→Kernel的四級(jí)跳到了SoC比如i.MX、Rockchip、全志這些跑Linux的芯片啟動(dòng)路徑就復(fù)雜太多了。核心原因是芯片內(nèi)部的SRAM太小裝不下完整的Bootloader而外部DDR初始化又需要代碼去配置于是只能分階段加載。啟動(dòng)基本是這么一條鏈BootROM芯片出廠固化的只讀代碼上電后最先執(zhí)行。它檢查啟動(dòng)引腳電平確定從哪啟動(dòng)SD卡、eMMC、NAND、USB等然后把下一級(jí)代碼從介質(zhì)加載到SRAM并跳轉(zhuǎn)執(zhí)行。SPLSecondary Program Loader也叫MLO或TPL本質(zhì)是一個(gè)極簡(jiǎn)化的U-Boot主要負(fù)責(zé)最基礎(chǔ)的硬件初始化尤其是DDR初始化然后把完整的U-Boot從存儲(chǔ)介質(zhì)加載到DDR。U-Boot完整的Bootloader提供命令行、環(huán)境變量、網(wǎng)絡(luò)啟動(dòng)等能力最終引導(dǎo)內(nèi)核。Kernel解壓自身掛載根文件系統(tǒng)啟動(dòng)init進(jìn)程。這里有一個(gè)非常核心的思路**為什么不能像MCU那樣一個(gè)Bootloader搞定一切**因?yàn)橥獠緿DR的初始化需要大量代碼和配置而芯片內(nèi)部的SRAM通常只有幾百KB。BootROM階段SRAM還沒有DDR可用代碼執(zhí)行環(huán)境極其受限所以只能“小馬拉小車”先跑一個(gè)極小的SPL把DDR初始化好再加載重量級(jí)的U-Boot。這就是分階段設(shè)計(jì)的根本原因理解了這點(diǎn)再看U-Boot的源碼結(jié)構(gòu)就不會(huì)覺得亂了。2.3 RT-Thread和uCOS的啟動(dòng)差異操作系統(tǒng)視角RTOS的啟動(dòng)流程跟裸機(jī)相比最大的變化在于在進(jìn)main之前或之后要多一步系統(tǒng)初始化。以RT-Thread為例它的啟動(dòng)可以走兩條路一是$Sub$$main方式編譯器在main之前插入一個(gè)鉤子先執(zhí)行RT-Thread的啟動(dòng)代碼再進(jìn)用戶main二是直接以rtthread_startup作為程序入口不經(jīng)過main。內(nèi)部執(zhí)行順序通常是rt_hw_board_init關(guān)中斷、配置時(shí)鐘、初始化內(nèi)存→rt_system_heap_init初始化堆→rt_application_init創(chuàng)建main線程→rt_system_scheduler_start啟動(dòng)調(diào)度器。uCOS-III類似在main里創(chuàng)建起始任務(wù)然后調(diào)用OSStart。這里的核心差異是裸機(jī)是順序執(zhí)行、跑完就結(jié)束或者跑死循環(huán)RTOS則是在一個(gè)死循環(huán)調(diào)度器里通過時(shí)間片和優(yōu)先級(jí)切換任務(wù)。啟動(dòng)流程的區(qū)分點(diǎn)在于“調(diào)度器何時(shí)啟動(dòng)”。調(diào)度器啟動(dòng)之前代碼是裸機(jī)邏輯啟動(dòng)之后才進(jìn)入多任務(wù)世界。說實(shí)話這塊對(duì)面試特別重要。嵌入式八股文里繞不開這類題但光背概念容易翻車最好自己真的用調(diào)試器單步走一遍啟動(dòng)代碼把每一步對(duì)應(yīng)到源碼上。我建議有條件的同學(xué)拿一塊開發(fā)板在Reset_Handler處打斷點(diǎn)單步跟蹤再結(jié)合反匯編看啟動(dòng)流程立刻就有體感了。3. 定位上電就掛的硬故障一套能落地的排查方法論啟動(dòng)流程搞清楚了接下來就是實(shí)戰(zhàn)中最痛苦的環(huán)節(jié)固件上電就跑飛、卡死、進(jìn)不了main。這類故障不像業(yè)務(wù)邏輯bug有日志可查往往發(fā)生在任何日志機(jī)制生效之前非??简?yàn)排查思路。3.1 先理清四種典型死法再動(dòng)手查我在排查啟動(dòng)故障時(shí)會(huì)先按表現(xiàn)分個(gè)類分類對(duì)了方向就對(duì)了完全無反應(yīng)上電后什么現(xiàn)象都沒有電流也不對(duì)。優(yōu)先查電源、復(fù)位電路、時(shí)鐘配置甚至芯片是否被鎖死。反復(fù)復(fù)位看電流表能發(fā)現(xiàn)周期性跳變。常見原因是看門狗沒喂、供電跌落導(dǎo)致欠壓復(fù)位、或者異常進(jìn)HardFault后觸發(fā)了復(fù)位。卡在某個(gè)階段比如LED點(diǎn)亮一下就不動(dòng)了或者串口打印了第一行就停。這種最友好直接定位卡住的那行代碼。隨機(jī)崩潰時(shí)好時(shí)壞和環(huán)境溫度、電壓相關(guān)。多半是時(shí)序問題、外部器件初始化不穩(wěn)定、或者全局變量初始值錯(cuò)誤。分類之后下面這套排查鏈路是我個(gè)人實(shí)踐下來效率最高的。第一步接調(diào)試器看PC指針停在哪。如果芯片還活著用J-Link或ST-Link連上暫停內(nèi)核直接在IDE的Call Stack窗口看當(dāng)前執(zhí)行位置。這個(gè)方法能解決70%的“跑飛”問題。如果PC指向一個(gè)非法地址比如全F說明棧已經(jīng)亂了需要看?;厮荨5诙讲橄蛄勘砗蜅?。上電就跑飛十有八九是棧指針不對(duì)或向量表不對(duì)。檢查啟動(dòng)文件里的棧大小定義、鏈接腳本里棧和堆的放置位置、向量表首地址是否在Flash開頭。一個(gè)常見坑是IAR里通過__vector_table符號(hào)強(qiáng)制定位向量表而GCC是用鏈接腳本段名換編譯器后忘了同步。第三步加一盞LED或一行串口打印構(gòu)建最小觀測(cè)點(diǎn)。在Reset_Handler入口、SystemInit之前、SystemInit之后、main入口各放一個(gè)觀測(cè)動(dòng)作LED點(diǎn)亮順序不同或用不同串口字符就能非??焖俚匕选八涝谀膫€(gè)階段”定位出來。很多工程師一上來就全速運(yùn)行然后干瞪眼這是效率最低的方式。第四步硬件上優(yōu)先懷疑復(fù)位和時(shí)鐘。用示波器量NRST引腳是否有毛刺量外部晶振是否起振。我遇到過一塊板子上電后不定期復(fù)位折騰了兩天軟件最后發(fā)現(xiàn)是復(fù)位引腳走線太長(zhǎng)被電機(jī)啟停干擾加了顆104電容搞定。3.2 一個(gè)HardFault定位實(shí)戰(zhàn)從異?,F(xiàn)場(chǎng)反推根因說一個(gè)具體的排查案例。某個(gè)項(xiàng)目上電后正常運(yùn)行十幾秒必死一次時(shí)間還不完全固定。當(dāng)時(shí)第一反應(yīng)是看門狗沒喂或者某個(gè)任務(wù)棧溢出但檢查都排除了。后來想到內(nèi)核有個(gè)特性Cortex-M系列進(jìn)入HardFault時(shí)硬件會(huì)自動(dòng)壓棧一部分寄存器R0-R3、R12、LR、PC、xPSR到當(dāng)前棧。通過調(diào)試器把SP指針對(duì)應(yīng)的內(nèi)存扒出來解析這個(gè)異常幀就能找到觸發(fā)異常的PC現(xiàn)場(chǎng)。具體操作是在HardFault_Handler里打斷點(diǎn)或者直接用調(diào)試器的“捕獲異?!碧匦浴MO潞蟛榭串?dāng)前SP值。按Cortex-M異常幀布局從SP位置依次讀取R0、R1、R2、R3、R12、LR、PC、xPSR。找到PC值切到反匯編窗口看那條指令是什么基本就能定位到是哪一行C代碼觸發(fā)的異常。那次查到的結(jié)果是一個(gè)全局結(jié)構(gòu)體指針在某個(gè)中斷里被賦了空值主循環(huán)里沒做判空就解引用。由于中斷觸發(fā)是異步的時(shí)間就不固定極其隱蔽。這類問題如果不靠異常幀光靠看代碼難度會(huì)翻好幾倍。建議每個(gè)MCU項(xiàng)目都保留一份HardFault定位代碼核心思路是在異常Handler里把異?,F(xiàn)場(chǎng)PC、LR、棧頂數(shù)據(jù)保存到RAM里的固定位置然后在調(diào)試器里可以隨時(shí)查看甚至重啟后通過特定按鍵把這段信息打印出來。這相當(dāng)于給MCU配了一個(gè)微型的崩潰日志系統(tǒng)性能開銷極小但排查疑難雜癥時(shí)價(jià)值巨大。3.3 三件套日志系統(tǒng)、異常捕獲、JTAG調(diào)試的配合順序把故障定位方法論落到工程上我習(xí)慣搭一套“三件套”輕量日志系統(tǒng)串口打印或者Flash環(huán)形緩沖區(qū)記錄關(guān)鍵節(jié)點(diǎn)必須有日志。注意日志要分級(jí)INFO/DEBUG/ERROR分開正式版里關(guān)掉DEBUG。異常捕獲與現(xiàn)場(chǎng)保存上面說的HardFault現(xiàn)場(chǎng)保存機(jī)制再加一個(gè)專門的任務(wù)棧溢出檢測(cè)鉤子。調(diào)試器與硬件觀測(cè)SWD接口保留必要時(shí)用SWO單線輸出做時(shí)間戳分析。這三樣配合的順序是先用日志縮小范圍到具體模塊再用異常捕獲拿到現(xiàn)場(chǎng)PC反推代碼行最后用調(diào)試器單步或斷點(diǎn)精確驗(yàn)證。最忌諱上來就全速仿真亂試純靠猜效率極低。另外提一句SWD調(diào)試口在量產(chǎn)固件里通常會(huì)關(guān)掉但開發(fā)階段務(wù)必保留。放在外部引腳上加TVS保護(hù)別為了省幾個(gè)電阻把調(diào)試口省了——等你遇到疑難bug卻沒有調(diào)試器可用的時(shí)候真的會(huì)想把板子扔了重畫。4. OTA升級(jí)工程化不是“能升級(jí)就行”是“掛了還能救回來”O(jiān)TAOver-The-Air升級(jí)做過的人都知道難點(diǎn)根本不在“能跑通一次升級(jí)”而在“升級(jí)過程中任何一步掛了設(shè)備都不能變磚”。工程化OTA的核心競(jìng)爭(zhēng)力就是容錯(cuò)和可恢復(fù)。4.1 先選型MCU的OTA和Linux的OTA完全是兩碼事對(duì)接OTA需求前先想清楚運(yùn)行平臺(tái)。MCU和Linux的OTA在實(shí)現(xiàn)路徑、存儲(chǔ)方案、回滾策略上有本質(zhì)差異維度MCU OTALinux OTA存儲(chǔ)介質(zhì)內(nèi)部Flash分區(qū)eMMC/SD卡/NAND分區(qū)升級(jí)包大小幾十KB到幾MB幾十MB到幾百M(fèi)B差分算法常用節(jié)省Flash空間可選取決于帶寬成本雙備份方案A/B雙區(qū)或BootloaderApp區(qū)A/B雙槽位或數(shù)據(jù)盤保留舊系統(tǒng)回滾時(shí)機(jī)應(yīng)用啟動(dòng)后自檢失敗即回滾內(nèi)核起不來或根文件系統(tǒng)掛載失敗即回滾主要風(fēng)險(xiǎn)Flash擦寫壽命、斷電中斷文件系統(tǒng)損壞、分區(qū)表被改寫MCU方案里最常見的兩種存儲(chǔ)布局雙區(qū)方案A/BFlash里分兩個(gè)App區(qū)當(dāng)前運(yùn)行A升級(jí)寫入B完成后切標(biāo)志位重啟到B。如果B起不來Bootloader檢測(cè)到異常自動(dòng)回滾A。安全度最高但Flash占用翻倍。單區(qū)備份方案一個(gè)App區(qū)一個(gè)備份區(qū)升級(jí)前先擦備份區(qū)寫入舊固件再擦App區(qū)寫入新固件。省Flash但多一次擦寫操作斷電風(fēng)險(xiǎn)窗口更大。我的建議是Flash容量允許優(yōu)先雙區(qū)方案容量緊張至少保留備份區(qū)。不要貪圖省空間而犧牲可恢復(fù)性設(shè)備變磚的售后成本遠(yuǎn)高于那幾百KB Flash的成本。4.2 差分升級(jí)的工程落地bsdiff和HDiffPatch怎么選OTA升級(jí)包如果每次都是全量固件流量和存儲(chǔ)壓力都不小。尤其是MCU場(chǎng)景Flash空間有限動(dòng)輒1MB的全量包放在256KB的Flash里根本放不下差分升級(jí)幾乎是剛需。差分升級(jí)的邏輯是服務(wù)器計(jì)算出新舊固件的差異補(bǔ)丁設(shè)備端下載補(bǔ)丁后用舊固件補(bǔ)丁合成新固件。不同固件之間通常只有部分函數(shù)或配置變化差分包往往只有全量包的10%-30%。選型上MCU場(chǎng)景我??吹饺N方案bsdiff/bspatch經(jīng)典算法壓縮率高但內(nèi)存占用大容易被MCU的內(nèi)存限制卡住適合資源較寬裕的Linux方案。HDiffPatch內(nèi)存占用優(yōu)化得比較好支持大文件差分和流式合成可裁剪性強(qiáng)MCU和Linux都能用我項(xiàng)目里用得比較多。自研逐扇區(qū)對(duì)比如果固件改動(dòng)很小且結(jié)構(gòu)固定可以在Bootloader里做塊級(jí)差分簡(jiǎn)單粗暴但是通用性差。注意一個(gè)工程細(xì)節(jié)差分合成需要臨時(shí)空間。常見做法是在RAM里開一塊大緩沖或者直接在Flash的某個(gè)空閑區(qū)做中轉(zhuǎn)。RAM不夠的時(shí)候可以分塊流水線處理——下載一塊、合成一塊、寫Flash一塊但這對(duì)固件結(jié)構(gòu)設(shè)計(jì)和Flash驅(qū)動(dòng)要求高得多。個(gè)人建議前期別太激進(jìn)優(yōu)先保證合成過程的斷電安全。4.3 斷點(diǎn)續(xù)傳、雙備份、回滾機(jī)制OTA工程化的三個(gè)硬指標(biāo)我認(rèn)為“工程化”體現(xiàn)在三個(gè)硬指標(biāo)上缺一個(gè)都不能算合格第一斷點(diǎn)續(xù)傳能力。網(wǎng)絡(luò)不會(huì)永遠(yuǎn)穩(wěn)定升級(jí)包下載到一半斷掉是常態(tài)。實(shí)現(xiàn)斷點(diǎn)續(xù)傳需要三個(gè)前提升級(jí)包分段分塊記錄下載進(jìn)度、Flash里元信息區(qū)記錄已下載塊序號(hào)、以及設(shè)備能識(shí)別并請(qǐng)求剩余部分。不用搞得很復(fù)雜但下載進(jìn)度標(biāo)記必須在掉電后仍然可靠保存。第二雙備份與升級(jí)標(biāo)記。這是安全升級(jí)的地基。升級(jí)流程建議是下載完整包→校驗(yàn)完整性CRC或哈?!鷮憘浞輩^(qū)→擦App區(qū)→寫新固件→置“新固件已就緒”標(biāo)記→重啟。在寫App區(qū)之前任何一步斷電都還能繼續(xù)跑舊固件這是最安全的設(shè)計(jì)。第三回滾觸發(fā)條件。設(shè)備重啟后應(yīng)該在Bootloader或早期App代碼里檢查“新固件已就緒”標(biāo)記然后啟動(dòng)一個(gè)“自檢窗口”——比如5分鐘內(nèi)新固件主動(dòng)上報(bào)“運(yùn)行正?!辈糯_認(rèn)升級(jí)成功否則自動(dòng)回滾到舊分區(qū)。這個(gè)自檢窗口必須由業(yè)務(wù)層配合不能只靠Bootloader因?yàn)锽ootloader無法判斷業(yè)務(wù)邏輯是否正常。4.4 固件安全加密升級(jí)包與簽名校驗(yàn)的實(shí)操配置OTA安全的本質(zhì)是兩件事完整性校驗(yàn)固件沒被篡改和機(jī)密性保護(hù)固件內(nèi)容不泄露。完整性校驗(yàn)用非對(duì)稱簽名服務(wù)器持有私鑰對(duì)固件包簽名設(shè)備內(nèi)置公鑰驗(yàn)簽。常見做法是使用ECDSA或RSA簽名固件包里附加簽名值設(shè)備端在燒錄或升級(jí)前驗(yàn)簽。不要用簡(jiǎn)單的CRC當(dāng)安全手段CRC只防誤碼不防惡意篡改。機(jī)密性保護(hù)用對(duì)稱加密固件包用AES-128-CBC或AES-256-GCM加密設(shè)備端在Bootloader或App里硬編碼或從Secure Element讀取密鑰進(jìn)行解密。注意密鑰不要直接明文存在Flash的固定地址里稍微做點(diǎn)混淆至少不能讓人讀出來直接復(fù)制。舉個(gè)實(shí)際配置例子。我做過一個(gè)STM32H7的OTA項(xiàng)目升級(jí)包結(jié)構(gòu)是頭部魔數(shù)、版本號(hào)、固件長(zhǎng)度、固件哈希值、簽名長(zhǎng)度。簽名段使用ECDSA P-256私鑰對(duì)頭部固件數(shù)據(jù)的簽名。數(shù)據(jù)段AES-256-GCM加密的固件數(shù)據(jù)。設(shè)備升級(jí)流程是下載包頭→驗(yàn)簽不通過直接丟棄→解密寫Flash→回讀段數(shù)據(jù)做GCM校驗(yàn)→全部完成后置新固件標(biāo)記→重啟自檢。整個(gè)過程還要留好串口日志方便生產(chǎn)環(huán)境追蹤失敗原因。這套流程下來整個(gè)升級(jí)鏈路的安全性基本就拉住了一條線。5. 本章知識(shí)地圖熱詞里藏著的面試高頻點(diǎn)這一節(jié)算是“應(yīng)試向”的補(bǔ)充。最近后臺(tái)咨詢嵌入式面試問題的朋友特別多我把剛提到的熱搜詞和網(wǎng)絡(luò)熱詞里跟本章相關(guān)的考點(diǎn)拎出來給你一張知識(shí)地圖對(duì)著自查。啟動(dòng)流程高頻考點(diǎn)MCU從Flash啟動(dòng)時(shí)MSP怎么初始化的向量表為什么必須放Flash起始地址Reset_Handler里__main和main的區(qū)別是什么U-Boot的SPL和TPL分別解決什么問題RT-Thread的$Sub$$main機(jī)制是什么什么場(chǎng)景下會(huì)用到全局變量初始化為非零值時(shí)是存放在哪個(gè)段啟動(dòng)時(shí)如何拷貝故障定位高頻考點(diǎn)Cortex-M進(jìn)入HardFault時(shí)硬件自動(dòng)壓棧了哪些寄存器如何從異?,F(xiàn)場(chǎng)反推觸發(fā)異常的代碼行棧溢出有哪些表現(xiàn)如何檢測(cè)任務(wù)棧溢出上電后反復(fù)復(fù)位先查哪些硬件因素OTA高頻考點(diǎn)A/B雙區(qū)和單區(qū)備份方案各自的優(yōu)缺點(diǎn)是什么斷點(diǎn)續(xù)傳需要哪些基礎(chǔ)條件差分升級(jí)為什么需要額外的內(nèi)存或Flash空間簽名校驗(yàn)和加密各解決什么問題能互相替代嗎這張地圖里的每一個(gè)點(diǎn)都可以在文章正文里找到解釋。邊看邊自測(cè)能當(dāng)場(chǎng)說清楚邏輯的基本就是真掌握了講不清的回頭補(bǔ)。6. 上篇課后思考題完整解析附詳細(xì)推理過程現(xiàn)在進(jìn)入一個(gè)重要環(huán)節(jié)——上篇布置的課后思考題解析。每道題我都給出參考思路和關(guān)鍵點(diǎn)重點(diǎn)在過程不是背答案。6.1 為什么全局變量初始化在啟動(dòng)時(shí)必須完成不做會(huì)怎樣這是基礎(chǔ)題但很多人答不到點(diǎn)子上。參考思路C標(biāo)準(zhǔn)規(guī)定所有全局變量在main執(zhí)行前就已經(jīng)被初始化。啟動(dòng)代碼里的.data段拷貝和.bss段清零本質(zhì)上是C運(yùn)行時(shí)環(huán)境的準(zhǔn)備工作。如果不做程序里定義的全局變量會(huì)停留在Flash中未初始化或上一輪運(yùn)行留下的RAM垃圾值。你寫int cnt 0;但cnt在RAM里可能是隨機(jī)數(shù)這個(gè)隨機(jī)數(shù)直接導(dǎo)致一切依賴該變量的邏輯全部亂掉而且沒有規(guī)律、無法復(fù)現(xiàn)極難排查。關(guān)鍵點(diǎn)強(qiáng)調(diào)在嵌入式里這個(gè)流程通常由啟動(dòng)匯編代碼完成如果自己寫啟動(dòng)文件或鏈接腳本務(wù)必保證這兩段邏輯正確。額外加分點(diǎn)提到.data段的加載域Flash和運(yùn)行域RAM地址可能不同鏈接腳本里用LOADADDR等符號(hào)區(qū)分。6.2 Cortex-M進(jìn)入HardFault時(shí)如何定位觸發(fā)異常的指令這道題我在本文3.2節(jié)講過完整實(shí)操這里提煉答案結(jié)構(gòu)。參考思路進(jìn)入HardFault_Handler打斷點(diǎn)或配置調(diào)試器在異常時(shí)停止。獲取當(dāng)前進(jìn)程棧指針PSP或主棧指針MSP取決于異常發(fā)生前使用的是哪個(gè)棧。從棧頂按固定順序讀取R0、R1、R2、R3、R12、LR、PC、xPSR。PC值就是觸發(fā)異常指令的地址到反匯編或源代碼窗口定位。結(jié)合LR值分析是函數(shù)調(diào)用還是返回導(dǎo)致的以及通過CFSR配置故障狀態(tài)寄存器判斷是總線錯(cuò)誤、用法錯(cuò)誤還是斷言錯(cuò)誤。關(guān)鍵點(diǎn)不要一上來就看中斷向量直接看異?,F(xiàn)場(chǎng)的PC又快又準(zhǔn)。擴(kuò)展加分點(diǎn)提一下現(xiàn)場(chǎng)保存機(jī)制即“把異?,F(xiàn)場(chǎng)拷貝到RAM固定區(qū)域方便后續(xù)離線分析”。6.3 MCU的OTA為什么建議雙區(qū)方案單區(qū)行不行雙區(qū)方案的核心優(yōu)勢(shì)是“可回滾”。當(dāng)新固件存在嚴(yán)重bug或者升級(jí)過程中出現(xiàn)異常斷電導(dǎo)致舊區(qū)數(shù)據(jù)被破壞時(shí)Bootloader依然能檢測(cè)到異常并選擇啟動(dòng)舊區(qū)把設(shè)備恢復(fù)到可用狀態(tài)。單區(qū)方案唯一的優(yōu)勢(shì)是省Flash。如果產(chǎn)品生命周期內(nèi)幾乎不做升級(jí)或者Flash容量實(shí)在緊張單區(qū)外部燒錄器也算一種妥協(xié)。但對(duì)于正在運(yùn)營(yíng)的聯(lián)網(wǎng)產(chǎn)品我強(qiáng)烈不建議單區(qū)方案——一次升級(jí)失敗導(dǎo)致的設(shè)備返廠維修成本遠(yuǎn)超省下的Flash成本。關(guān)鍵點(diǎn)強(qiáng)調(diào)“可恢復(fù)性”是OTA工程化的第一目標(biāo)。雙區(qū)方案不是“要不要”的問題是“預(yù)算夠不夠”的問題。6.4 差分升級(jí)中如果合成失敗或合成后校驗(yàn)不通過該怎么處理處理原則是合成失敗絕不能把舊固件破壞掉。合理流程是先把舊固件完整保留再用差分包合成新固件到臨時(shí)區(qū)Flash的空白分區(qū)或RAM緩沖。合成完成后先做完整性校驗(yàn)校驗(yàn)收過再考慮切換。如果在合成階段失敗直接丟棄新數(shù)據(jù)繼續(xù)用舊固件啟動(dòng)即可。如果合成成功但寫入App區(qū)時(shí)斷電導(dǎo)致數(shù)據(jù)不完整就要靠啟動(dòng)自檢機(jī)制回滾。關(guān)鍵點(diǎn)整個(gè)合成和寫入過程必須支持?jǐn)帱c(diǎn)重試或回滾。不要設(shè)計(jì)成“合成開始就必須執(zhí)行完畢否則變磚”的流程。6.5 閱讀題從啟動(dòng)流程角度看為什么Bootloader要盡量短小精悍Bootloader的第一優(yōu)先級(jí)是“跑起來并引導(dǎo)App”不是“實(shí)現(xiàn)所有功能”。它越短小風(fēng)險(xiǎn)面越小因?yàn)锽ootloader代碼一旦出錯(cuò)整個(gè)設(shè)備的啟動(dòng)能力都會(huì)受影響。另外Bootloader和App的更新策略通常不同App可以通過OTA更新Bootloader一般只在線燒錄或特殊升級(jí)流程更新。Bootloader設(shè)計(jì)得短小是降低“Bootloader自身需要被更新”的概率而且Bootloader本身更新時(shí)的安全風(fēng)險(xiǎn)大于App更新需要額外做保護(hù)。關(guān)鍵點(diǎn)答出“減少故障面”“降低被更新需求”這兩個(gè)方向基本就到位了。7. 下一期的預(yù)告與一個(gè)建議這一篇是“嵌入式固件進(jìn)階”系列的上篇主要內(nèi)容集中在啟動(dòng)流程拆解、故障定位方法論、OTA工程化實(shí)戰(zhàn)的框架和核心邏輯上課后思考題的解析也盡量做了完整推理。下一期我打算重點(diǎn)展開這幾個(gè)方向都是很多讀者在催的U-Boot源碼級(jí)解析從_start到board_init_r一條主線走完。固件加密的實(shí)操細(xì)節(jié)AES-GCM在OTA里的完整流程、密鑰管理體系、以及HAB/TrustZone這類高級(jí)保護(hù)怎么選。嵌入式C語言面向?qū)ο笤O(shè)計(jì)的實(shí)戰(zhàn)案例不少人問“嵌入式里怎么用C實(shí)現(xiàn)繼承和多態(tài)”這期會(huì)用狀態(tài)機(jī)和驅(qū)動(dòng)層的例子講清楚。最后給一句個(gè)人建議啟動(dòng)流程、故障定位、OTA這些內(nèi)容光看文章永遠(yuǎn)只能到“知道”層面真正變成“技能”必須靠手動(dòng)點(diǎn)調(diào)試器單步走幾遍。拿一塊開發(fā)板把啟動(dòng)流程每一步和反匯編對(duì)上寫一個(gè)小OTA Demo把強(qiáng)刷斷電的情況模擬出來你會(huì)徹底理解為什么工程級(jí)方案長(zhǎng)這樣。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷九月亚洲| 四色 爱 婷婷 精品 亚洲 五月天| 综合久久影院| 六月丁香色婷婷| 久久久99视频| 伊人玖玖精品| 成人啪啪色婷婷久| 久久丁香婷| 综合网色| 成人婷婷| 激情六月综合| 婷婷 月 丁香| 丁香五月天啪啪激情综和网 | 天天日日天天| 青青草性爱视频| 久99久视频精选| 五月婷婷基地| 思思热这里只有精品| 婷婷激情六月| 亚洲无码色色| 深爱婷婷网| 99re思思精品视频在线观看| 综合激情开心五月| 这里只有精品热| 涩九九九九| 丁香五月欧美婷婷综合| 激情文学综合婷婷五月天丁香花| 国产伦亲子伦亲子视频观看 | AV在线资源| 六月丁香天堂| 日日操夜夜操无码免费| www.9797国产| 午夜激情综合| 伊人五月婷婷| w婷婷五月婷婷w| 日本综合久久| 天天爽—爽| 一起草无码视频| 婷婷五月天黄色| 97干在线免费| 五月婷婷综合影院| 在线另类视频| 九九热这里有精品视频| 男人天堂亚洲综合| 色婷婷五月综合在线| 精品无码av丁香五月激情| 九月激情网| 2017狠狠干| 玖玖五月| 久久只有这里精品免费| AV 3P| 九九色热| 青青五月天婷婷| 五月丁香激情综合欧美| 一起草性爱不卡视频| 久热播这里只有精品| 五月丁香在线婷婷美女| 日日操夜夜爽| 久热大香蕉| 99色色视频| 久99热| www.99在线| 五月天激情亚洲| 狼人久草| 五月天婷婷丁香人人操91| 婷婷五月天97干| 激情精品久久| 亚洲五月婷婷| 九九九九九九九热| 天堂综合久| 久久电影4399| 日本操天堂| 色约约视频一区二区三区四区五区 | 搡BBBB搡BBB搡五十| 色婷婷影视| 欧美黑人巨大性生话| 国产AV一区二区三区最新精品| 搡BBBB搡BBB搡18 | 婷婷五月色综合| 成人婷99最新| 五月婷婷丁香综合网| 天天色视频| 五月丁香久人妻中文| 99爱视频在线观看| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 婷婷五月天影视首页| 婷婷久久丁香五月| 婷婷五月激情四射手| 色婷亚洲| 色色综合视频| 97人人干| 婷综合| 久久五月天婷婷视频| 丁香激情婷婷网| 操逼视频一区| 蜜桃婷婷狠狠久久综合| 天天艹天天色| 桃色五月天| 狠狠综合色网| 丁香五月中文字幕久色| 亚洲九九夜夜| 丁香五月色情| 五月婷婷丁香大陆免费| 丁J香六月首页| 99久久66| 99热这里是精品| 日韩一区二区A片免费观看| 亚洲精品九九| 91久久婷婷人人澡草 | 丁香五月天欧美在线| 九九热在线精品| www.久久| 九九伊人网| 天天操天天日天天爽| 激情综合在线观看| 激情四射婷婷色色色| 天天射综合网天天插| 综合99视频| Aaa久久| 视频这里只有精品| 亚洲午夜AV| 色五月婷婷伊人| 婷婷六月中文字幕| 亚洲狠狠爱婷婷| 99热只有精品在线播放| www久| 国产九月婷婷| 综合色影| 女性自慰系列第五页| 思思热AV| 色婷婷精品视频在线播放| 无码人妻电影| 狠狠综合| 亚洲精品乱码久久久久久按摩观| 色播五月丁香| 丁香5月激情网| 亚洲色五月婷婷| 91中文狠狠综合| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 99国产小视频2013| 99热在线观看| 色噜噜,噜噜色| 99久久九九| 停停五月色宗合| 伊人久久丁香婷婷六月五月综合| 国产婷伊人| 玖热精品综合视频| 欧美槡BBBB槡BBB少妇| 久草五月婷婷| 激情综合久久| 亚洲色小说在线综合| 日本五月婷婷| 亚洲激情图文小说| 国产日产亚系列精品版优势| 婷婷激情丁五月| 草草色情综合网| 综合在线丁香五月| 一起操 91N.com| 色五月丁香五月婷婷五月成人网| 99综合熟女| 婷婷五月亚洲一本在线丁香| 思思99久久| www.99热在线| 日本熟女视频一区二区| 国产亚洲AV人片在线| 久久这里都是精品视频| 免费成片在线观看| 亚洲激情在线| 色婷五月| 色婷婷www| 久久婷婷啪啪视频| 天干干夜夜操| 特黄三级又爽又粗又大| 综合久久综合| 色久五月| 久久99大全| 午夜日韩久久久网站| 五月天开心婷婷激情网站 | 成人人操| 激情五月天视频| 99久久久国产大片| 丁香五月激情五月色综合| 丁香婷婷在线| 亚洲精久久| 亚洲色婷婷| m色激情网| 狠狠se| 九九热自拍| 久久66er久久| 夫妻超碰在线| 五月天综合网| 色丁香五月天| 五月天久久丁香| 大香蕉婷婷丁香| 欧美日韩99| 婷婷五月丁香六月天亚洲综合| 99精品偷拍视频| 天堂综合久| 婷婷丁香五| 亚洲四色五月| 91在线操逼视频| 亚洲热综合| 99热在线爱| 大鸡巴伊人网| 四川女人毛多水多A片| 美欧成人视频| 精品51XX| 伊人超碰| 丁香五月激情婷婷视频| 五月天婷婷狠狠| 97久久视频| 亚洲色网络| 久久一热免费视频| 99热99色| 丝袜激情网| 极品少妇XXXX精品少妇偷拍| 久久性爱视频| 色色日本欧美| 五月婷婷之综合激情| 侠女刀之记忆电影在线看免费| 日韩婷久| 婷婷免费视频| 丁香五月婷婷老师网站| 婷婷99狠狠躁天天久久久九九九| 饮料下药迷倒漂亮女同事强干| 激情久久丁香| 91精品久久久久、久五月天| 天天干天天射色综合| 色久婷婷五月| 91chinese在线| 97在线干| 综合久久久婷| 停停六月 综合| 风流少妇A片一区二区蜜桃| 日本一级一片免费视频| 91要啪| 99精品小视频| 久色婷婷200| 丁香五月婷婷精品视频| 五月天成人伊人| 影音先锋色婷婷| 久久婷婷五月激情综合| 大香蕉啪啪啪啪啪啪| 午夜精品久久久久久久爽| 一起草性爱不卡视频| 天堂久久婷婷| www色色com| 国产精品国产| 九九久久五月天| 996er热| 五月婷婷,六月丁香| 狠狠狠狠狠狠草| 中文字幕成人| 色欲婷婷夜夜| 久久在线人妻| 99热在这里只有精品| 综合色色婷婷| 丁香五月六月| 色999亚洲人成色| 91热视频色网站| 色私五月婷婷| 婷婷综合激情| 九九爱激情| 嫩模草| 思思久久久婷婷| 丁香婷婷九月在线| 久久久久久久久久久44| 91精品婷婷国产综合久久| 9操在线| 丁香五月综合| 色综合久久伊伊婷婷五月| 久久99久久99精品免视看婷婷| 5月婷婷6月丁香aV| 五月天综合视频| 人妻少妇色综合| www.91.com黄| 欧美成人猛片AAAAAAA| 午夜亚洲AV日韩无码| 激情性爱五月天网页| 色婷婷精品视频在线播放| 一级性感毛片| 久热这里只有精品3| 丁香婷婷五月天校园春色| 天天色综合色色色色色。| 99精品这里只有免费视频| 好吊丝aV| 狠狠爱婷婷爱| 少妇人妻丰满做爰XXX| 日韩三级高清无码| 欧美色色色色色| 婷婷五六月丁香| 五月丁香六月情婷婷久久| 久久机热/这里只有精品 | 激情欧美五月丁香| 色婷婷色丁香色欲av| 久9热视频| 97操碰| 逼逼AV| www.99视频| 美日韩成人| 婷婷香蕉精品| 啪啪激情综合| 人妻久久久久久久 | 五月婷婷激情69| 开心激情网五月天| 久久9热好| 九九偷拍网| 这里只有精品视频在线观看免费| 天天色天天日天天舔| 99久久9| 91人久| 综合网狠狠| 99热免费网站| 色久女| 亚洲精品**不卡在线播he| 国产五月天婷婷| 亚洲成人乱码av网站| 97色欧美| 九九热青青草| 国产在线另类五月婷婷| 色婷婷色99国产综合精品| 激情五月天色色色| 热99热9| 97久久超碰| 超碰妻人人| 丁香5月激情网| 天天狠狠夜夜狠狠2023| 丁香五月熟女| 丁香五月婷婷欧美成人色图| 国产毛片欧美毛片久久久| 日韩在线一级| 99精品视频免费观看| 国产69精品久久久久999小说| 六月婷婷激情图片| 日本一级一片免费视频| 1区2区视频| 伊人久久五月天| 日本丁香五月| 五月婷婷丁香啪啪| 夜夜骑夜夜撸| 亚洲综合在线伊人婷| 五月天 婷 欧美亚洲| 九九99精品免费播放| 久久久er热| 玖玖色综合| 五月天婷婷情色| 另类小说激情五月天| 久久久天堂国产精品女人| 久久机热这里只有精品免费视频| 婷婷色五月天在线观看| 色性综合| 丁香五月婷婷啪啪啪| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 蜜臀AV在线观看| 九九色人| 天天日天天摸| 97热精品| 九九久久99| 亚洲综合一区二区| 精品婷婷| 26uuu.| 天天操人人干| 五月色情婷婷开心五月色情| www.五月天| 午夜九九电影| 99久久婷婷综合| 色婷婷色人人射| 一起草AV入口| 久机视频这只有精品| 久久色吧| 97操碰视频| 色 色 色综合com| 九九热99久久99| 婷婷 丁香 精品| 婷婷综合一二三| 久久性操| 久婷婷久草| 久久五月天激情| 伊人狠狠干| 狠狠爱婷婷五月天| 中文字幕av在线| 色色婷婷丁香| 激情五月婷婷综合秋霞| 色婷婷综合亚洲| 色五月天婷婷| 九九热99精品| 99精品视频推荐| 天天肏在线观看| 97人人草| 日韩一级淫乱片一区二区三区| 亚洲天堂aaa| 免费观看2018www黄色操逼网站| 亚洲国产99| 日本啪啪天堂| 五月丁香久久久| 亚洲综合色网| 五月色婷婷影视在线电影| 伊人丁香五月天丁香在线婷| 久久五月激情综合| 婷婷五月天性| 99热播放| 国产高清视频91九九九久久久| 婷婷六月天激情| 性色婷婷| 丁香五月激情综合久久| 任你艹| 五月激情黄色小说| 九九热a| 久久色六月| 丁香婷婷情色五月天| 伊人影音无码一区二区三区| 综合色视频| 婷婷五月天影院| 91精品久久久久久综合五月天| 生活片五区| 97人妻超级碰碰碰碰碰| 久久草大香蕉| 激情图片五月天| 再次出发二| 最新AV在线观看| 超碰91在线| 99热这里只有精品5| 久色成人| 婷婷香香五月| 天堂网啪啪| 成人无码精品1区2区3区免费看| 激情开心五月天| 欧美综合丁香网| 伦乱天堂| 26uuu偷拍亚洲欧洲综合| 日本欧美成人片AAAA| 精品网站:999WWW| 69色色视频| 久久成人性爱| 色之综合网| 肏屄色播伊人97婷婷| 偷拍九九热| 丁香五月成人| 99色视频在线| 色色色热热热| 亚洲久久激情| 五月综合色| 久久99精品久久久久久三级| 99亚州综合精品成人网| 丁香五月婷婷手机| 综合激情深爱| 亚洲色综合性| 日日操天天爽| 五月综合色播播丁香婷婷| 丁香五月激情月| 五月天狠狠网站| 中文字幕综合| 99碰网站| 激情四射网| 九色无码| 亚洲AV人人操| 97色干| 乱码操操| 婷婷五月天AV| 亚洲五月天综合色| 五月丁香六月欧美综合| 就爱啪啪婷婷| 热久久视频99| 亚洲成人黄色网| 色天天综合| 久热网站| 天天色视频| 六月丁香综合| 在线观看免费狠狠色丁香香综合| 91干视频| 婷婷五月天成人| 五月丁香在线观看| 熟女人妻一区二区三区免费看| 九九AV| 曰韩少妇内射免费播放| 99久操视频| 91久久18| 99乱视频| 人人操Av| 79色色| 亚洲成人五月天| 日本色爽| 亚洲国产99| 丰满老熟妇BBBBB搡BBB| 亚洲传媒在线观看| 99色精品| 日韩草草草草草草草草草草草草| 色五月婷婷大| 五月天综合在线观看视频| 伊人久久大香蕉网| 91碰碰| 亚洲av| 9久热在线精品| 91成人电影| 综合97五月| 狠狠狠激情网| 丁香五月天堂网| 久久九九99| 青青草视频免费观看| 日韩AV在线免费| 综合激情五月婷婷| 天天干天天操天天干天天操天天干天天操| 国产精品色婷婷AV综合色色| 97超碰人人操| 狼人伊人天堂| 久久丝丝热| 婷婷五月天亚洲精品| 免费精品99| 开心激情站| 九月婷婷人人操人人舔人人爱| 色五月婷婷操逼| 青青操绿aaa一区日v| 色五月激情婷婷| 成人国产网站在线免费看| 六月丁香深深爱| 色五月婷婷在线| 丁香五月影院| 久久婷婷五月综合啪| 婷婷五月天受日本法律保护| 99综合网| 综合aV在线| 91精品人妻少妇无码影院| 丁香婷婷激情五月色| 五月久久婷婷成人网| 99自拍视频| 婷婷亚州综合| 就爱干 在线| 久久精品系列| 开心五月激情五月丁香五月婷婷| www.婷婷五月天.com| 激情5月婷婷| 99视频内射三四| 激情五月,婷婷五月,丁香五月| 五月丁香婷婷综合| 婷婷狠狠操| 精品久久久久久久久久久久人妻| 狠狠操狠狠| 国产肏屄大片| 久久ab| 成人免费120分钟啪啪| 日韩精品一区二区亚洲AV观看| 丁香五月深爱五月婷婷| 黄网在线播放| 狠狠色色| 91在线日| 99热欧美偷拍| 狠狠穞A片一區二區三區| 伊人久久丁香狠狠婷婷综合香蕉| site:wpjngj.com| 影音先锋色婷婷| 色五月,婷婷大香蕉| 久久人人人人妻| 五月婷婷综合网| 97精品综合久久| 99国产精品久久久久久久久久久| 综合久久六月| 日韩AAAAAAAAAAA片| 久久久久久久91| 丁香色播五月天| 色婷婷电影网| 久久久久综合激动五月天| 26uuu亚洲| 色婷久久| 婷婷五月天电影网| 日日骑夜夜撸| 99爱在线视频| 色综合五月婷婷狠狠干| 狠狠干.com| 亚洲久久婷婷| 墨西哥毛片内射精| 激情五月天视频| 九九视屏| 婷婷五月天久久| 99人碰碰碰| 99热自拍| 久草久青福利| 老妇六区| 婷婷五月天久久久| 天堂爱啪啪| 婷婷五月激情欧美| 婷婷五月在线综合| 草草夜夜操| 99这里只有精彩视频| 91色色色视频| 婷婷伊人综合中文字幕| 激情综合网五月在线播放| 99精品综合| 婷婷伊人激情婷婷| 人人操人| 色婷婷狠狠爱| 五月综合婷婷开心网| 综合天堂AV久久久久久久| 综合五月激情网| 91刘玥视频在线观看| 六月丁香五月婷婷| 激情图片亚洲| 亚洲情欲久久| 大香蕉520| 色色丁香五月婷婷| 婷婷丁香五月激情密臀av| 婷婷五月天激情综合| 日韩欧美一区二区三区四区| 久久国产成人9999久久久久| 久久婷婷五月综合色奶水99啪| 综合婷婷| 丁香亚洲色综合| 人妻视频在线| 婷婷六月插屄激情| 9有码中文| 九九热超碰| 婷婷六月激情综合| 99噜噜噜在线播放| 丁香五月婷婷欧美成人色图| 色婷婷狠狠18禁| 婷婷激情五月色综合| 日本精品99网站| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 五月天啪啪网| 色五月av| 天天干天天日天天操| 热99国产精品| 婷婷久久婷婷| 亚洲熟妇AV乱码在线观看| 99久久这里只有精品| 亚洲激情图文小说| 久久伦乱| 91 久热| 九九热只有精品| 很很干夜夜干| 狠狠色婷婷丁香六月| 色99在线看| 91男同视频| 色情综合| 婷婷五月天综合在线| mmm1717.6dbm人人爱人人操| 丁香五月手机在线| 五月色激情综合网| 中国丰满熟女A片免费观| 97视频久久| 五月天婷婷丁香六月| 天堂婷婷五月在线| 色五月婷婷综合| 91色欲综合| 日本啪啪视频HD| 六月丁香婷| 日日干天天| 欧美天天干天天草| 婷婷成人综合免费视频| 精品久久99码| 亚洲综合婷婷五月| 九色无码| 九九超日本| 青青草婷婷五月天| 亚洲成av人影院| 天天操人人干| 大香网伊人久久综合| 五月天综合网| 丁五月激情视频免费| 丁香婷婷六月在线资源观看| www.五月天。com| 五月综合婷婷开心网| www超碰| 99精品久久久久| 9在线9在线婷婷在线国产| 97超级啪啪在线观看| AA片在线观看视频在线播放| 日日日日日| AV中文在线| www.色综合| 久久久久久久人妻| 五月婷婷色| 五月天激情婷婷| 色播五月天激情| 亚洲五月天激情| 激情五月五月婷婷| 99爱在线视频| caop视频| 五月做爱| 青青草Avb在线| 一级性爱大片| 色色色婷| WWW.天天日| 色婷婷综合久色AV五色最新| 激情久久四色| 五月四色婷婷| 五月丁香六月情| 超碰99资源站| 婷婷金品综合视频| 亚洲V国产V欧美V久久久久久| 内射人妻视频国内| 亚洲综合视频八| 九九热91| 久久综合婷婷| 加勒比色色| 五月丁香激情六月| 另类视在线| 99热九九热| 日本熟妇乱妇熟色A片蜜桃| 色婷婷色综合久久精品V| 大香蕉天堂色| 99操碰| 天天摸天天爽| 99久久大片| 五月丁香婷婷综合久久| 欧美大肥婆大肥BBBBB| 婷婷五月丁香成人网| 综合激情肏逼网| 五月丁香日本片| 狠狠色激情综合| 激情五月天网| 26uuu国产| 精品无码片| 九九热欧美| 亚洲 无码 中文字幕 中出| 思思久久精品| 婷婷99狠狠| 99久久偷拍视频| 91ncom.色| 思思99热这里只有精品6| 九九热在线精品视频| 丁香五月久久| 丁香五月大香蕉AV| 五月丁香少妇网| 精品99视频| 99国产精品久久久久久久久久久| 操日本三片99| 婷婷色五月天综合网| 91丨九色丨熟女|新版| 玩熟女五十AV一二三区| 欧美影院婷婷| 五月成人天| 九九热在线精品视频| 久久日九九| 啄木鸟黑丝一区二区| 91热视频色网站| 艳妇野外情欲放荡HD| 538任你爽| 这里只有精彩视| 激情综合五月天| 亚洲婷婷激情综合激情999精品| 狠狠狠狠免费| 91精品久久久久久综合五月天| 亚洲精品第一国产综合亚AV | 日本不卡五月婷婷丁香| 亚洲第一第二网站| 啪啪色区| 国产精品热搜丁香五月婷婷| 91操人| 综合色五月天| 激情五月五月婷婷| 天堂美国久久| 很操日本7| 深爱激情综合| 婷婷天堂综合| 亚洲综合草草| 伦99热| 色五月婷婷激情| 老师的粉嫩小又紧水又多A片视频| 婷婷丁香激情综合色情| 丁香六月婷| 大香人妻| 中文字幕乱轮| 婷婷五月天淫荡| 色插综合网| 色五月综合| 婷婷欧美色| 99色在线| 激情五月婷婷| 日本99久久| WWW99热| 欧美日比视频| 九九人人自拍| 操逼巨乳91| 国产免费av在线| 99热这里只有精| www一起操在线观看| 深爱激情丁香| WWW·色色色·COM| 成人在线综合| 国产欧美第五十五页| 日本啪啪网| 亚洲99综合| 激情AV| 激情综合网五月在线播放| 成人 在线 日韩| www.zbzhongsen.com| 久久九九色| www.激情五月天.com| 色婷五月天| 99视频精品8 | 亚洲色婷婷激情| 亚洲A片成人无码久久精品青桔| 色五月激情五月丁香五月婷婷啪啪综合| 婷婷久久久| 久久五月丁香六月婷| 日日操夜夜擼| 色狠久| 99久久.www| 色婷婷五月色| 五月激情五月丁香| 江苏少妇性BBB搡BBB爽爽爽| 色婷婷视频综合| 婷婷丁香综合| 99精品在线| 天天色五月| 五月色亭丁香| AV在线大香蕉| 激情欧美婷五月| 国产激情一区| 五月丁香久| 蜜臀A∨在线水帘洞| 日韩欧美成人一区二区三区| 久久精品这里只有精品免费首页| 亚洲综合视频在线| 情欲禁地| 人人草人人爱| 天天玩天天摸| 天天日P天天射P| 亚洲国产成人综合| 婷婷六月中文字幕| 五月婷婷|欧美| 97色碰| 亚洲99热| 热中文字幕| 无码字幕中文| 99热在线观看| 人人爽亚洲| 色五月综合| 伊人婷婷大香蕉在线| 天堂在线9| 夜夜骑日日夜夜| 婷婷色在线视频| 天天射影院| 色色无码| 免费观看的AV| 色婷婷丁香综合中文字幕| 免费看欧美成人A片无码| 丁香五月天堂网| 欧美色六月婷婷| 国产成人在线不卡AV| 亚洲无AV在线中文字幕| 丁香 久久| 热99re| 色色操| 久久国产AV| 东京热免费视频| 天天综合网站| 天天色天天舔天天爱天天爽| 99久热在线精品| 婷婷五月综合免费在线| 国产精品一区在线观看你懂的| 色五月五月天色婷婷色五月| 激情婷婷另类| 五月色视频| 夜夜爱影院| 欧美色激情四射| 成人午夜无码视频| 中文字幕视频在线播放| 天天日,天天插| 人妻videos人妻高清| 9久精品视频| 热热99爱爱| 大香焦A∨| 国产成人精品一区二三区熟女在线| 久久资源网五月婷| 欧美黄色韩日网| 色人妻五月| 伊人婷婷激情| 99re这里只有精品视频6| 亚洲精品影视| 久久久99婷婷久久久久久| www.1024久久| 综合在线观看99| 日本欧美成人片AAAA| 久久久噜噜噜久久人妻| 婷婷五月色综合| 色五婷婷在线视频| 五月婷婷丁香社区| 久久婷婷五月天综合| 啪啪啪五月天| 亚洲一区先锋影音| 丁香五月天婷婷久久综合| 久久婷婷丁香五月一二三| 丁香五月激情啪啪| 欧美日韩成人在线| 五月丁香综合| 99超级碰免费视频| 91啪啪视频| 午夜成人AV在线| 婷婷涩五月| 久久免费9| 中文字幕婷婷| 看婷婷五月天网| 伍月婷丁香婷| 妻久久久久| 天天人人天天爽| 欧美综合婷婷网| 欧洲亚洲欧洲99久久| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 久久99激情| 影音先锋偷偷色男人站| 久久婷婷内射| 九九热最新地址| 国产67194| 中文幕无线码中文字蜜桃| 无码AV免费精品一区二区三区| 最近中文字幕2019视频1| 99热热热99精品丁香| 99@久久@99精品视频| 丁香六月欧美| 亚洲色图五月丁香| 婷婷综合久久| 五月丁香综合久久| 丁香五月婷婷俺也要去| 五月丁香偷拍| 丁香六月婷婷综合| 操碰91| 99热有精品在线观看| 999九九九久久久99HD| 久久99网址| 天天做天天视天天谢| 天天射影视综合网| 亚洲精品色| 亚洲视频99| 丁香五月婷婷欧美性爱| 色婷婷四色| 日本综合久| 黄页大全十八禁| 天天日 天天草| 开心婷婷五月| 亚洲区在线| 玖玖爱综合网| 激情黄色五月天| 成人丁香| 婷婷精品视频| 99情色五月天| 丁香九月婷| 五月天婷婷伊人| 五月丁香六月婷婷色情| 久99热| 大香蕉啪啪啪啪啪啪| 淫视馆aV二区一区| 丁香色综合| 丁香五月天激情视频| 天天日色情| 人人操99| 五月天激情AV| 天天干狠狠| 婷婷五月天综合久久日美女| 日韩啪啪视频| 婷婷五月天综合小说网| 丁香五月天色婷婷| 天综合日日夜综合7799| 第二色AⅤ| 国产婷婷综合| 操逼五月婷婷| 色综合夜夜| 五月天婷久精视频| 亚洲日韩乱码一区二区三区四区| 97婷婷在线| 六月丁香综合网| 在线色色| 激情网色五月| 日本五月婷婷久久久六月丁香| 亚洲色色色| 婷婷五月久久| 欧美性二区| 五月丁香六月婷婷色情| 最新无毒无码AV| 五月天激情黄色小说在线观看| 久草热视频在线观看| 国产又黄又爽又色的免费| 色色五月天丁香婷婷| 五月丁香青草综合啪啪| 99成人| 色域五月婷婷丁香| 丁香五月另类小说| 国产看真人毛片爱做A片| 午夜成人AV在线| 色色色com| 天天色2017| 国内婷婷丁香社区在线播放| 婷婷色在线观看| 成人免费高清在线播放| 开心婷婷五月天激情网| 日本人妻伦在线中文字幕| 天天色月| 日韩啪啪视频| 在线观看免费狠狠色丁香香综合| 婷婷干五月综合在线播放| 俺也去五月婷婷丁| www.夜夜夜| 国产精品大香蕉| 九九亚洲视频| 色婷婷综合网站| 国产av基地| 色婷婷五月天成人网| 综合爱久久| 永久精品| 999九九九久久久99HD| 五月涩涩网| 成人av在线网| 色99综合视频| ..真实国产乱子伦毛片 | 国产性爱亚洲是图| 丁香婷婷黄网站| 1024国产| 五月婷婷久久综合| 97久久人人| 五月色网| 开心激情网在线| 婷婷久热| 久色视频| 亭亭丁香aV| www五月| 5月丁香综合网| 一本色道久久88综合日韩精品| 天天做天天爰天天爽天天无遮挡| 少妇高潮呻吟A片免费看软件| 亚洲一色色色色色色色色| 天天爽天天操| 天天爽曰日爽| 丁香五月熟女| 天天综合网在线| 91干在线| 五月丁香综合激情网| 天天射影| 男妓跪趴把舌头伸进我的嘴巴| 五月婷婷久久开心网| 人妻第九页| 99热免| 中文字幕欧美久久| 精品激情| 五月激情婷婷开心五月| 黄色中文字目| 夜夜爽天天干| 日日噜噜夜夜狠狠久久丁香六月| 亚洲激情婷婷| 婷婷五月天日逼| 亚洲天堂色| 精品久热69| 五月天另类小说亚洲| 天天狠狠综合精区| 色五月婷婷九月| 五月丁香色色网| 国产XXXX搡XXXXX搡麻豆 | 人人人操 超碰| 激情五月,色播五月| 色婷婷五月色| 无码激情AAAAA片-区区| 老司机伊人| 婷婷五月天综合网| 丁香五月五月婷婷欧美大香蕉 | 国产古装妇女野外A片| 狠狠色综合久久| 久久综合干| 日日噜噜夜夜狠狠久久丁香五月| 日本天天色| 丁香五月婷婷无码AV| 九九色插| 国产亚洲在线观看| 久久婷婷丁香六月天| 区美毛片子| 中文字幕成人网站| 久久多色| 婷婷综合伊人丁香| 91操在线视频| 色婷婷8| 超碰激情网| 五月天激情久色| 色伊人婷婷| 色香蕉婷婷| 99色婷婷| 色亚洲欧洲| 99热在线爱| 吾爱AV导航| 精品夜夜澡人妻无码AV| 日本WWW九九九| www.minyis.com【JT】币址百万U预算可预付QQ2101460746 | 99碰碰| 天天爽综合网| Xx色综合| 婷婷激情在线| 90色免费视频| 99热最新| 亚洲人妻Av| 日本成人小说婷婷六月| 九九色中文| 久久91久久91色欲精品| 日韩人妻AV在线| 天天玩夜夜操| 婷婷五月,偷窥偷拍网| 人人做人人看人人摸| 免费AAAAA网| 婷婷丁香成人五月天| 99视频热99| JAPANRCEP老熟妇乱子伦视频| 国产成人高清| 一级性爱视频| 天天天天天天天操| 加勒比色色| 丁香五月香蕉在线| WWW99热| 五月天基地| 亚洲无码影音| 国产午夜精品一区二区三区嫩草| 99性视频| 99乱视频| 99热久| 深爱1激情网| 久久香蕉婷婷五月天| 激情综合自拍五月婷婷色五月| 色五月色图| 99碰视频| 人人叉久| 久久ri精品视频| 色欲AVV| 香蕉97碰碰碰欧美| 99视频内射三四| 激情综合婷婷| 五月激情小说| 婷婷丁香五月综合| 亚洲天天操| 亚洲激情四射| 婷婷五月激情综合| 欧美久热| 五月丁香六月激情欧美综合| 九九AV在线| 色综合网址| 啊V视频在线观看| 亚洲国产成人综合| www色婷婷| 一起草av| 亚洲综合另类| 91九色首页| 麻豆AV一区二区三区| 国产亚洲成AV人片在线观黄桃| 国产毛片精品一区二区色欲黄A片| 成人在线视频网| 九九热在线精品视频| 亚洲精品一区中文字幕乱码| 涩涩五月天| 国产偷人爽久久久久久老妇APP| www.色五月| 人人操9| 99国产97在线,| 色婷婷亚洲在线观看| 综合网啪| 人妻综合网| 久热这里只有精品性色AV| 这里只有精品日韩精品| 亚洲女婷婷五月基地综合久久久| 国产在线另类五月婷婷| 99热6这里只有精品| 天天操夜夜操| 婷婷大香蕉| 婷婷丁香社区| 久久婷鲁| 日本成人综合| 日韩色色色色色| 色婷五月天亚洲| 99成人小视频| 九九热婷婷| 五月激情六月丁香| 成人中文网| 丁香综合久久| 色婷婷99| 99视频精品全部免费 在线| 色五狠狠| 色综合天堂| 日日夜夜干| 91在线精品一区二区| 26uuu丁香婷婷五月| 深爱五月婷婷开心中文字幕| 怡红院精品视频久久久久久久久| 丁香五月婷婷日本| 日韩色色视频| 九九爱精品网站| 91大神操美女| 五月激情婷婷播播网| 欧美日韩成人高清在线| 99久视频| 丁香五月激情啪啪啪| 婷婷综合色图| 激情综合网,婷婷五月天| 丁香婷婷情色五月天| 免费观看的av| 婷婷娌伦网| 深爱激情五月天色婷婷| 99精品免费视频| 色婷婷电影网| 久久91久久91色欲精品| 99热精品免费在线观看| 色五月六月| 成人AV播放| 五月婷婷基地| 热热久久99| 人妻久久久久久久| 男人的天堂99| 色播五月婷婷综合| 丁香五月成人婷婷| 国产成人精品一区二三区熟女在线| 色婷婷五月天无码视频| 综合五月天亚洲婷婷| 国产色色视频| 日本人妻伦在线中文字幕| 插逼综合网| 五月婷婷网五月在线| 激情婷婷六月天| 亚洲色图81p| 久热这里只有精品66| 婷婷综合| 日hao1区| 亚洲看av的网站| 99re这里| 亚洲一区二区无遮挡A片| 人妻熟妇六区| 亭亭五月丁香五月天激情| 国产激情在线观看| 伊人五月天婷婷| 99热思思| 99操视频| 久久久久久久人妻| 伊人大香蕉爱聚| 2020久久婷婷五月| 婷婷九月| 91日日日| 久久综合激情婷婷激情| 五月丁香久久| 草综合网| 九九热黄色| 射琪琪| 天天日天天爱天天噪| 日日做A爰片久久毛片A片英语| 任你爽视频| 91婷婷搞| 日韩色色一区| 婷婷五月婷| 精品久9| 色丁香在线视频| 色婷婷五月天偷拍| 精品成人久久久久久久_一二三四视| 99网| 97人人操com| 欧美婷婷五月| 日本WwW色偷偷丁香花久久久京东热| 99热这里只有精品国产免费| 超碰99在线| 亚洲中文字幕网| 91精品国产91久久久久青草| 狼人婷婷久久| 五月丁香婷草| 色婷婷偷拍| 99a级片| 大香蕉婷婷五月| 久久婷婷五月天激情| 91久久久久久久久久| 五月天婷婷激情| www.9797国产| 人妻视频在线| www久久久久久久97| 99日本黄站| 九九伊人网| 99热色精品| Jh7Uf088VHafNm| 婷婷五月丁香成人网|