99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

CMSIS-4靜態(tài)工程評(píng)測(cè):拆解遺產(chǎn)代碼與遷移避坑指南

CMSIS-4靜態(tài)工程評(píng)測(cè):拆解遺產(chǎn)代碼與遷移避坑指南 1. 把CMSIS-4當(dāng)成一個(gè)“待收購(gòu)標(biāo)的”來拆解的出發(fā)點(diǎn)最近好幾個(gè)項(xiàng)目陸續(xù)碰到同一個(gè)問題手里的老產(chǎn)品還在用幾年前的CMSIS-4工程新來的同事一編譯就報(bào)一堆莫名其妙的警告廠家SDK更新之后鏈接又炸問題是代碼明明一行沒改過。連著處理了幾次這種現(xiàn)場(chǎng)之后我決定不再繼續(xù)“頭痛醫(yī)頭”直接把CMSIS-4這套經(jīng)典的Cortex-M軟件標(biāo)準(zhǔn)庫(kù)當(dāng)成一個(gè)“待收購(gòu)標(biāo)的”做一次徹底的靜態(tài)工程評(píng)測(cè)搞清楚這套遺產(chǎn)庫(kù)里到底埋了什么雷、哪些代碼還能用、哪些必須動(dòng)。先說清楚這次評(píng)測(cè)的對(duì)象。CMSIS-4是ARM為Cortex-M系列處理器定義的一套軟件接口標(biāo)準(zhǔn)覆蓋內(nèi)核訪問、系統(tǒng)初始化、DSP計(jì)算、RTOS接口和設(shè)備描述等多個(gè)層次。雖然ARM早在2018年就把主版本推到了CMSIS-5后續(xù)又陸續(xù)演進(jìn)到CMSIS-6但CMSIS-4作為覆蓋Cortex-M0/M0/M3/M4/M7的最成熟版本至今仍大量存在于存量產(chǎn)品的工程代碼里。很多芯片原廠的SDK在很長(zhǎng)一段時(shí)間內(nèi)繼續(xù)沿用CMSIS-4的組織方式甚至有些老款MCU的官方支持包只在CMSIS-4的框架下維護(hù)。這不是一個(gè)已經(jīng)死掉的標(biāo)準(zhǔn)而是一個(gè)還在生產(chǎn)環(huán)境里跑著的遺產(chǎn)系統(tǒng)所以對(duì)它的“盡調(diào)”必須按工程標(biāo)準(zhǔn)來不能當(dāng)成考古。所謂“靜態(tài)工程評(píng)測(cè)”在我這次操作里指兩層意思。第一層是對(duì)源代碼本身做靜態(tài)審查不燒板子、不跑仿真全程依賴對(duì)源碼結(jié)構(gòu)、宏定義、編譯預(yù)處理結(jié)果、頭文件依賴關(guān)系和目標(biāo)文件構(gòu)成的分析第二層是從工程管理角度做靜態(tài)評(píng)估把這些源代碼放進(jìn)不同工具鏈、不同優(yōu)化等級(jí)、不同芯片型號(hào)的工程環(huán)境里做交叉驗(yàn)證看它在遷移過程中會(huì)暴露什么問題。這種做法特別適合評(píng)估一類代碼的“可遷移性”因?yàn)榇蟛糠诌w移障礙不是運(yùn)行期才暴露的而是在編譯、鏈接、啟動(dòng)初始化這幾個(gè)靜態(tài)階段就已經(jīng)決定了。整個(gè)評(píng)測(cè)過程中我建立了一份比較詳細(xì)的檢查清單后面幾節(jié)會(huì)把它拆開講CMSIS-4組件盤點(diǎn)、源碼層遺產(chǎn)痕跡、編譯器適配層差異、RTOS接口遷移風(fēng)險(xiǎn)、鏈接腳本與啟動(dòng)文件約束、以及最終遷移策略。如果你手上也有基于CMSIS-4的老工程正在猶豫要不要升級(jí)這篇文章能幫你省掉很多試錯(cuò)時(shí)間。2. CMSIS-4到底裝了什么版本、目錄和四類組件2.1 鎖定版本基線CMSIS 4.5.0是真正的主角評(píng)測(cè)CMSIS-4的第一步是先把版本基線釘死。CMSIS-4這個(gè)系列從4.0一路走到4.5中間跨了差不多三年每個(gè)小版本的API細(xì)節(jié)都有差異。我現(xiàn)在能接觸到的存量工程里絕大多數(shù)使用的是4.3.0到4.5.0這個(gè)區(qū)間其中4.5.0是CMSIS-4的最終版本也是這個(gè)分支下最成熟、最完整的形態(tài)。建議任何人在做源碼審查前先確認(rèn)當(dāng)前工程里的CMSIS版本號(hào)。在Keil MDK里CMSIS版本一般藏在Pack安裝目錄下不同芯片廠商的SDK又會(huì)把自己改過的CMSIS核心文件復(fù)制到工程目錄里導(dǎo)致版本信息更難追蹤。最直接的辦法是打開core_cm4.h之類的內(nèi)核頭文件看文件頭注釋里的版本號(hào)另一個(gè)途徑是檢查cmsis_version.h里的__CM_CMSIS_VERSION宏這個(gè)宏從CMSIS 4.4.0開始固定存在數(shù)值編碼規(guī)則是高16位為主版本、低16位為次版本比如0x00050000代表CMSIS 5.0.0。如果工程里找不到這個(gè)文件基本可以斷定CMSIS版本在4.4.0之前那后續(xù)的API差異會(huì)更大。2.2 四個(gè)組件四條相互獨(dú)立的代碼線CMSIS-4的源碼包解壓之后主要包含四個(gè)相對(duì)獨(dú)立的組件域我在評(píng)測(cè)中把它們稱為四條代碼線組件目錄/標(biāo)識(shí)作用范圍與硬件的耦合度CMSIS-CoreCMSIS/Include/內(nèi)核寄存器定義、系統(tǒng)初始化、NVIC/SysTick/PendSV等內(nèi)核外設(shè)訪問極高直接封裝Cortex-M內(nèi)核寄存器CMSIS-DSPCMSIS/DSP_Lib/數(shù)學(xué)運(yùn)算庫(kù)包括基礎(chǔ)運(yùn)算、矩陣運(yùn)算、濾波、變換等中等部分實(shí)現(xiàn)依賴DSP指令/SIMDCMSIS-RTOS APICMSIS/RTOS/定義RTOS內(nèi)核的標(biāo)準(zhǔn)API接口中低是接口規(guī)范而非具體實(shí)現(xiàn)CMSIS-SVDCMSIS/SVD/設(shè)備外設(shè)描述文件用于調(diào)試器外設(shè)視圖低主要供調(diào)試工具解析這四條線的演進(jìn)節(jié)奏完全不同遷移時(shí)不能一刀切。CMSIS-Core的更新最頻繁因?yàn)樗苯痈鴥?nèi)核版本和編譯器特性走幾乎每個(gè)小版本都會(huì)改頭文件的宏定義CMSIS-DSP包的更新則集中在算法實(shí)現(xiàn)優(yōu)化上尤其是針對(duì)M4/M7的SIMD和FPU指令CMSIS-RTOS API在4.5.0之前同時(shí)維護(hù)v1和v2兩套接口這是個(gè)非常大的遷移隱患CMSIS-SVD則基本穩(wěn)定除了描述格式微調(diào)之外幾乎沒有破壞性變更。2.3 一個(gè)頭文件家族如何撐起所有Cortex-M型號(hào)CMSIS-Core是這套遺產(chǎn)庫(kù)的基石它的核心組織形式是一族以core_cmX.h命名的內(nèi)核頭文件針對(duì)不同Cortex-M內(nèi)核提供寄存器定義和訪問函數(shù)。CMSIS-4時(shí)代支持的內(nèi)核包括core_cm0.h、core_cm0plus.h、core_cm3.h、core_cm4.h、core_cm7.h外加一個(gè)針對(duì)Secure擴(kuò)展的core_cm23.h和core_cm33.h是在CMSIS-4后期加入的。這套設(shè)計(jì)思路本質(zhì)上是用預(yù)處理器條件編譯實(shí)現(xiàn)“一次包含多種內(nèi)核適配”。每個(gè)頭文件內(nèi)部都有大量的#if defined判斷根據(jù)__CM4_REV、__FPU_PRESENT、__MPU_PRESENT這類宏決定是否展開對(duì)應(yīng)寄存器定義。這樣做的好處是應(yīng)用層代碼幾乎不用關(guān)心內(nèi)核差異壞處是宏定義體系極度脆弱任何一個(gè)宏漏定義或定義沖突都能產(chǎn)生讓人摸不著頭腦的編譯錯(cuò)誤。我實(shí)際審查過的工程里最常見的宏問題出在__FPU_PRESENT上。老工程總是忘記定義這個(gè)宏導(dǎo)致core_cm4.h里整個(gè)FPU相關(guān)寄存器組被條件編譯排除而應(yīng)用代碼里只要牽涉到SCB-CPACR這類FPU使能寄存器就會(huì)編譯失敗。就算編譯通過了浮點(diǎn)運(yùn)算也會(huì)走軟件模擬路徑性能慘不忍睹。這個(gè)問題在CMSIS-5/6里已經(jīng)通過強(qiáng)制定義機(jī)制大幅緩解但在CMSIS-4里只能靠人工保證這也是“遺產(chǎn)痕跡”的典型代表。2.4 不要忽略啟動(dòng)文件和系統(tǒng)文件的“隱性版本”除了CMSIS/Include/目錄下的標(biāo)準(zhǔn)頭文件CMSIS-4源碼包里還有兩個(gè)容易被人忽略的隱藏組件一個(gè)是Device/目錄下每個(gè)芯片廠商提供的system_xxx.c系統(tǒng)初始化文件和啟動(dòng)匯編文件另一個(gè)是分散在CMSIS/DSP_Lib/Source/下的各類DSP源碼文件。嚴(yán)格來說系統(tǒng)文件和啟動(dòng)文件不屬于CMSIS標(biāo)準(zhǔn)本身而是CMSIS框架下芯片廠商必須實(shí)現(xiàn)的部分但它們與CMSIS頭文件的耦合程度極高遷移CMSIS版本時(shí)如果只換頭文件不換系統(tǒng)文件經(jīng)常會(huì)因?yàn)镾ystemCoreClock變量的類型或初始化邏輯不一致產(chǎn)生隱蔽的時(shí)序問題。我這里要給一個(gè)很實(shí)用的排查建議靜態(tài)審查時(shí)用腳本把所有#include的頭文件路徑全部列出來檢查是否存在同一個(gè)頭文件被從多個(gè)目錄引入的情況。CMSIS版本混亂絕大多數(shù)根因是工程里既保留了廠商SDK自帶的舊CMSIS頭文件又新增了從ARM官方包解壓的新CMSIS頭文件兩個(gè)core_cm4.h同時(shí)在include path序列里編譯行為由路徑順序決定。這種問題編譯時(shí)不一定會(huì)報(bào)錯(cuò)但生成的代碼時(shí)而好時(shí)而壞最讓人頭疼。3. 靜態(tài)審查落到源碼層面看到了哪些“遺產(chǎn)痕跡”3.1 編譯器適配層一份為了armcc v5而生的補(bǔ)丁式代碼把CMSIS-4的源碼平鋪開看最直觀的感受是它對(duì)編譯器適配的處理方式非?!把a(bǔ)丁化”。我統(tǒng)計(jì)了core_cm4.h和一些周邊頭文件里與編譯器相關(guān)的條件編譯分支至少覆蓋了ARMCC v4/v5、GCC、IAR、Clang四類編譯器每一類編譯器還細(xì)分了不同版本和不同語(yǔ)言標(biāo)準(zhǔn)。在這個(gè)適配層里最典型的是__ASM、__INLINE、__STATIC_INLINE、__PACKED這一組編譯器抽象宏。以__STATIC_INLINE為例CMSIS-4早期版本針對(duì)ARMCC定義的是static __inline而__inline在armcc v5里只是一個(gè)建議性關(guān)鍵字編譯器可以自行決定是否內(nèi)聯(lián)到了GCC環(huán)境下它又變成static inline語(yǔ)義基本一致但也存在細(xì)微差異。CMSIS-5之后這套宏被改成__STATIC_INLINE統(tǒng)一命名并且針對(duì)每個(gè)編譯器單獨(dú)定義成static inline。表面上看只是一個(gè)宏名變化實(shí)際影響的是所有內(nèi)核訪問函數(shù)的內(nèi)聯(lián)行為進(jìn)而影響中斷延遲和臨界區(qū)保護(hù)的代碼尺寸。在靜態(tài)評(píng)測(cè)中我用armclang和gcc分別做了同一份CMSIS-4源碼的交叉編譯對(duì)照結(jié)果非常有意思同樣的NVIC_EnableIRQ函數(shù)在armcc v5下生成的指令序列可能比armclang下短一條指令。原因不是編譯器優(yōu)化能力差異而是CMSIS-4為armcc v5專門寫的內(nèi)聯(lián)匯編路徑在armclang下根本不生效編譯器退回到了通用C實(shí)現(xiàn)路徑。這就是典型的編譯器適配層帶來的隱性性能差異靜態(tài)分析不仔細(xì)看根本發(fā)現(xiàn)不了。3.2 __STATIC_INLINE宏家族一段不該被低估的歷史包袱繼續(xù)深挖__STATIC_INLINE這組宏會(huì)發(fā)現(xiàn)更多問題。CMSIS-4源碼里大量使用#if defined ( __CC_ARM )、#elif defined ( __ICCARM__ )、#elif defined ( __GNUC__ )這樣的三段式條件編譯。這套寫法在2015年前后是合理的選擇因?yàn)楫?dāng)時(shí)armcc v5是整個(gè)嵌入式工具鏈的事實(shí)標(biāo)準(zhǔn)GCC則是開源陣營(yíng)的主流IAR有自己的私有關(guān)鍵字系統(tǒng)。但到了今天面對(duì)CMSIS-4做新的工程開發(fā)情況已經(jīng)完全不同。Arm Compiler 6即armclang已經(jīng)成為ARM官方主推的編譯器它在預(yù)定義宏上和GCC高度一致卻在很多CMSIS-4代碼的__GNUC__分支下表現(xiàn)不佳因?yàn)镃MSIS-4對(duì)GCC分支的適配主要針對(duì)的是arm-none-eabi-gcc的行為而不是armclang的LLVM后端行為。舉個(gè)具體的坑CMSIS-4中某些GCC分支的代碼使用__attribute__((always_inline))指導(dǎo)內(nèi)聯(lián)armclang也支持這個(gè)屬性但對(duì)于內(nèi)聯(lián)匯編中的寄存器約束armclang與GCC存在語(yǔ)法差異導(dǎo)致部分DSP庫(kù)源碼在armclang下直接編譯失敗。這個(gè)問題的本質(zhì)是CMSIS-4把“編譯器差異”和“架構(gòu)差異”混在同一套頭文件里處理沒有做到關(guān)注點(diǎn)分離。所以靜態(tài)評(píng)測(cè)時(shí)我建議工程人員對(duì)每個(gè)編譯器分支進(jìn)行單獨(dú)的可編譯性和指令序列對(duì)照不要默認(rèn)“GCC能過armclang就一定沒問題”。3.3 DSP庫(kù)里的SIMD和FPU靜態(tài)能看到的最深一層硬核CMSIS-DSP在CMSIS-4時(shí)代是一套C語(yǔ)言和匯編混合編寫的數(shù)學(xué)運(yùn)算庫(kù)其中M4/M7內(nèi)核下的很多核心函數(shù)比如arm_mat_mult_f32、arm_fir_f32、arm_cfft_f32都針對(duì)ARMv7E-M架構(gòu)的SIMD指令如SMLAD、SMLALD、PKHBT做了手寫匯編優(yōu)化。對(duì)這些匯編實(shí)現(xiàn)進(jìn)行靜態(tài)審查時(shí)要注意一個(gè)關(guān)鍵技術(shù)約束CMSIS-4的DSP庫(kù)是為ARMv7E-M架構(gòu)即Cortex-M4/M7設(shè)計(jì)的它的SIMD指令最佳化完全基于這個(gè)架構(gòu)的指令集特性。如果你現(xiàn)在要把代碼遷移到Cortex-M33這類基于ARMv8-M架構(gòu)的內(nèi)核上CMSIS-4 DSP庫(kù)的很多優(yōu)化路徑無法直接使用因?yàn)锳RMv8-M的SIMD支持和ARMv7E-M并不完全一致。ARM官方在CMSIS-5的DSP庫(kù)中才對(duì)這個(gè)問題做了系統(tǒng)性修補(bǔ)新增了針對(duì)ARMv8-M的優(yōu)化分支。另一個(gè)值得說的點(diǎn)是CMSIS-4 DSP庫(kù)里對(duì)FPU編譯選項(xiàng)的依賴。__FPU_USED、__FPU_PRESENT這兩個(gè)宏的組合決定FPU相關(guān)代碼是否被編譯。我在靜態(tài)審查中經(jīng)常發(fā)現(xiàn)老工程的__FPU_PRESENT設(shè)置為1但編譯選項(xiàng)里沒加-mfloat-abihard結(jié)果編譯器按軟浮點(diǎn)ABI生成調(diào)用約定而庫(kù)里的硬浮點(diǎn)匯編函數(shù)按硬浮點(diǎn)ABI聲明接口鏈接階段不報(bào)錯(cuò)運(yùn)行階段參數(shù)傳遞錯(cuò)位浮點(diǎn)計(jì)算結(jié)果莫名其妙地偏差。這種問題用靜態(tài)分析工具很難抓必須結(jié)合預(yù)處理輸出的宏定義和編譯命令行參數(shù)一起看才能定位。3.4 頭文件依賴關(guān)系的“一切皆可include”問題還有一個(gè)在靜態(tài)評(píng)測(cè)中暴露得非常明顯的問題CMSIS-4源碼里core_cm4.h等內(nèi)核頭文件對(duì)標(biāo)準(zhǔn)庫(kù)頭文件的依賴較少這本來是好事但它自身內(nèi)部依賴關(guān)系卻非?;靵y。比如某些版本的頭文件在使用assert_param宏時(shí)默認(rèn)指向一個(gè)未定義的assert_param需要用戶在工程中自行定義否則編譯直接失敗。這種設(shè)計(jì)在CMSIS-4中是有意為之它讓用戶能自定義斷言行為但代價(jià)是每個(gè)工程都要額外加一行宏定義。更麻煩的是CMSIS目錄下的頭文件名與芯片廠商SDK中的同名頭文件之間沒有強(qiáng)制的一致性校驗(yàn)機(jī)制。在同一個(gè)工程里同時(shí)出現(xiàn)兩個(gè)core_cm4.h文件時(shí)編譯器不會(huì)報(bào)警鏈接器更不會(huì)察覺。我在排查一個(gè)量產(chǎn)產(chǎn)品的疑難問題時(shí)發(fā)現(xiàn)一個(gè)函數(shù)在頭文件A中的內(nèi)聯(lián)實(shí)現(xiàn)指向SysTick_Config的舊版寄存器操作而頭文件B中已經(jīng)有針對(duì)新硅片修訂的勘誤處理代碼結(jié)果編譯器優(yōu)先包含了舊的A版本導(dǎo)致定時(shí)器始終無法按預(yù)期觸發(fā)中斷。這個(gè)案例對(duì)我的啟示是任何對(duì)CMSIS-4的靜態(tài)評(píng)測(cè)都必須先做頭文件溯源用腳本打印每個(gè)核心頭文件的實(shí)際物理路徑再判斷它到底屬于哪個(gè)CMSIS版本。4. 從CMSIS-4走出來的四條遷移護(hù)欄4.1 編譯器工具鏈遷移armcc v5到armclang的斷層對(duì)還在CMSIS-4上的老工程遷移時(shí)最先撞上的不是CMSIS本身而是工具鏈的換代。Keil MDK從5.x后期版本開始默認(rèn)編譯器從armcc v5切換到Arm Compiler 6也就是armclang。這不是一個(gè)簡(jiǎn)單的編譯器版本升級(jí)而是一次從C89/C99工具鏈到C11/基于LLVM的工具鏈的范式切換。CMSIS-4在armcc v5下編譯是無縫的因?yàn)閮烧弑緛砭褪峭谠O(shè)計(jì)、同步發(fā)布的但換到armclang后CMSIS-4里大量依賴ARMCC特定擴(kuò)展語(yǔ)法的地方會(huì)暴露問題。最常見的是內(nèi)聯(lián)匯編格式差異、__forceinline關(guān)鍵字的支持差異、以及對(duì)#pragma的語(yǔ)義差異。我在評(píng)測(cè)中用一個(gè)原生CMSIS-4.5工程做armclang編譯測(cè)試頭文件里的內(nèi)核訪問函數(shù)大部門能過但DSP庫(kù)的匯編文件基本全軍覆沒必須額外引入CMSIS-5版本的DSP庫(kù)才能編過。遷移時(shí)的實(shí)際建議是不要嘗試讓CMSIS-4源碼“適應(yīng)”armclang這條路走不通。正確做法是把CMSIS Core頭文件升級(jí)到CMSIS-5或CMSIS-6的Include目錄因?yàn)檫@部分實(shí)現(xiàn)了對(duì)armclang的完整適配同時(shí)保留應(yīng)用層代碼。如果芯片廠商已經(jīng)把設(shè)備支持包升級(jí)到CMSIS-5框架那就直接用新版如果廠商沒有升級(jí)那就需要手動(dòng)混合搭配這時(shí)候要格外注意版本兼容矩陣不能只看單個(gè)頭文件的版本號(hào)。4.2 CMSIS-RTOS接口從v1到v2的API斷層CMSIS-4雙軌維護(hù)的RTOS接口可能是整個(gè)遷移過程中最敏感的部分。CMSIS-RTOS v1的API設(shè)計(jì)較為樸素核心對(duì)象只有osThreadId、osMessageQId這類以ID句柄為主的數(shù)據(jù)類型整個(gè)API風(fēng)格偏向函數(shù)式調(diào)用v2則引入了指針型對(duì)象句柄、更強(qiáng)大的事件標(biāo)志、信號(hào)量、互斥量、內(nèi)存池等機(jī)制API數(shù)量幾乎翻倍。靜態(tài)評(píng)測(cè)老工程時(shí)我習(xí)慣先全局搜索osThreadCreate、osMessagePut、osSemaphoreWait等典型v1 API調(diào)用快速確定工程對(duì)RTOS接口版本的依賴程度。一般存量工程里要么是早期基于CMSIS-RTOS v1封裝了業(yè)務(wù)代碼要么是通過Keil的RTX5中間層自動(dòng)映射到v2。前者在升級(jí)CMSIS版本時(shí)編譯錯(cuò)誤會(huì)像洪水一樣涌出來因?yàn)関1和v2的頭文件不能同時(shí)存在而應(yīng)用代碼調(diào)用的多半是v1風(fēng)格API。這里要給一個(gè)保守建議如果你沒有重構(gòu)業(yè)務(wù)代碼的預(yù)算就不要貿(mào)然把cmsis_os.h從v1切到v2。CMSIS-4分支下最后一個(gè)同時(shí)支持v1和v2的版本是4.5.0雖然在CMSIS-5中放棄了v1但對(duì)于短期內(nèi)不打算改代碼的存量工程停留在CMSIS-4.5.0反而是一個(gè)穩(wěn)定選項(xiàng)。只有當(dāng)你有計(jì)劃地重構(gòu)整個(gè)RTOS應(yīng)用層時(shí)再考慮一次性跳到v2。4.3 芯片設(shè)備和啟動(dòng)文件約束廠商SDK的綁定比想象中更緊很多人忽略了CMSIS-4遷移的另一條硬約束芯片廠商的設(shè)備支持包。CMSIS標(biāo)準(zhǔn)本身的遷移是“換頭文件”的問題但嵌入式工程的編譯鏈接還依賴startup_xxx.s啟動(dòng)文件和system_xxx.c系統(tǒng)文件這些文件由芯片廠商維護(hù)字段和函數(shù)簽名很可能與CMSIS-4綁定。我做過一個(gè)實(shí)驗(yàn)把一個(gè)Cortex-M4芯片的廠商SDK中CMSIS Core頭文件單獨(dú)升級(jí)到CMSIS-5結(jié)果系統(tǒng)初始化文件system_stm32f4xx.c里的SystemCoreClock變量類型和新的CMSIS-5頭文件中的外部聲明不一致編譯時(shí)雖然沒報(bào)錯(cuò)但通過map文件檢查發(fā)現(xiàn)同一個(gè)變量在不同編譯單元中被分配到了不同地址——這種問題在靜態(tài)分析階段極難發(fā)現(xiàn)只能通過對(duì)比預(yù)處理宏定義和符號(hào)表來定位。更隱蔽的是啟動(dòng)文件中的向量表定義。CMSIS-4時(shí)代向量表的弱默認(rèn)處理方式與CMSIS-5/6有些差異尤其涉及__initial_sp和Reset_Handler的符號(hào)導(dǎo)出方式。如果你的工程使用新libc或microLIB這些符號(hào)的交互方式也會(huì)不同。對(duì)這條約束的應(yīng)對(duì)策略是評(píng)估階段先列出工程里所有屬于芯片廠商SDK的文件逐文件檢查它們與CMSIS版本的相對(duì)關(guān)系。廠商SDK里有很大一部分代碼是圍繞CMSIS封裝的外設(shè)驅(qū)動(dòng)庫(kù)這部分不依賴CMSIS版本真正需要鎖定版本的只有system文件和startup文件評(píng)估后決定是跟隨遷移還是鎖定不升級(jí)。4.4 鏈接腳本與內(nèi)存布局老規(guī)劃不一定適配新代碼CMSIS遷移帶來的另一個(gè)隱性風(fēng)險(xiǎn)是代碼尺寸和內(nèi)存布局的變化。CMSIS-5之后的頭文件雖然API接口相似但內(nèi)聯(lián)函數(shù)的實(shí)現(xiàn)方式更緊湊編譯器從armcc切到armclang后浮點(diǎn)運(yùn)算的代碼尺寸也可能明顯改變。這些變化會(huì)導(dǎo)致原本“剛好夠用”的鏈接腳本出現(xiàn)Flash溢出或RAM越界。做靜態(tài)評(píng)測(cè)時(shí)我特別關(guān)注兩個(gè)數(shù)據(jù)一個(gè)是map文件里各個(gè)段的大小分布一個(gè)是啟動(dòng)文件里Stack和Heap的定義值。老工程在CMSIS-4時(shí)代設(shè)置的堆棧大小往往是基于當(dāng)時(shí)編譯器行為手動(dòng)調(diào)整出來的“經(jīng)驗(yàn)值”換成armclang之后函數(shù)調(diào)用棧的消耗可能完全不同。有一個(gè)非常典型的癥狀升級(jí)工具鏈后程序跑一段時(shí)間后隨機(jī)進(jìn)入HardFault回溯棧卻發(fā)現(xiàn)指針已經(jīng)被破壞這就是典型的棧溢出。靜態(tài)評(píng)測(cè)階段沒法直接驗(yàn)證棧深度但可以通過編譯期加-fstack-usage讓編譯器為每個(gè)函數(shù)生成棧使用報(bào)告再用腳本統(tǒng)計(jì)最大調(diào)用路徑推斷是否超限。還有一個(gè)更容易被忽略的內(nèi)存布局問題CMSIS-4時(shí)代的DSP庫(kù)自帶了一套中斷向量重映射的配置方式部分工程會(huì)在鏈接腳本里為DSP庫(kù)預(yù)留專用RAM區(qū)域。如果DSP庫(kù)升級(jí)到CMSIS-5版本這些專用區(qū)域的起始地址對(duì)齊要求可能改變導(dǎo)致緩存或MPU配置失效。5. 遷移決策的最終態(tài)度什么時(shí)候該走什么時(shí)候該留5.1 先用一張決策表決定方向而不是先動(dòng)手改CMSIS-4的老工程是否要遷移這不是一個(gè)純技術(shù)問題而是一個(gè)工程決策問題。我在評(píng)測(cè)結(jié)束后梳理了一張決策表可以幫助團(tuán)隊(duì)快速判斷方向決策因素建議留在CMSIS-4建議遷移到CMSIS-5/6工具鏈仍使用armcc v5無更換計(jì)劃已切換到armclang或GCC最新版產(chǎn)品生命周期產(chǎn)品即將退市或凍結(jié)產(chǎn)品還有3年以上維護(hù)期新功能需求只有bug修復(fù)無新功能需要新增連接、安全、機(jī)器學(xué)習(xí)等功能RTOS使用重度依賴CMSIS-RTOS v1并難以短期重構(gòu)已使用RTX5/FreeRTOS或愿意重構(gòu)外設(shè)驅(qū)動(dòng)依賴廠商SDK僅支持CMSIS-4框架廠商SDK已發(fā)布CMSIS-5/6版支持包團(tuán)隊(duì)技能團(tuán)隊(duì)熟悉armcc v5排錯(cuò)方式團(tuán)隊(duì)已掌握armclang/GCC調(diào)試技巧列這張表的用意是提醒大家遷移的成本不只是代碼編譯一遍還包括重新驗(yàn)證所有外設(shè)行為、時(shí)序特性和低功耗路徑。如果產(chǎn)品線已經(jīng)進(jìn)入維護(hù)模式CMSIS-4.5.0配合armcc v5反而是穩(wěn)定性最高的組合強(qiáng)行升級(jí)只會(huì)引入無謂的回歸風(fēng)險(xiǎn)。5.2 漸進(jìn)遷移的正確姿勢(shì)用CMSIS-5頭文件替代CMSIS-4而不是推倒重來如果決策結(jié)果是遷移我的經(jīng)驗(yàn)是不要一上來就大動(dòng)干戈。最平滑的路徑是分四步走第一步只替換CMSIS Core頭文件。把工程里core_cm4.h、core_cmFunc.h、core_cmInstr.h等核心頭文件換成CMSIS-5版本保留應(yīng)用代碼不變。這一步的目標(biāo)是先把編譯器適配問題解決干凈確保在armclang或新版GCC下能順利編譯鏈接。第二步替換system文件和startup文件。將芯片廠商針對(duì)CMSIS-5發(fā)布的最新系統(tǒng)初始化文件和啟動(dòng)文件合入工程重點(diǎn)驗(yàn)證SystemCoreClock變量定義、SystemInit執(zhí)行時(shí)機(jī)和向量表符號(hào)的兼容性。第三步升級(jí)DSP庫(kù)。這一步工程量較大建議按模塊拆分替換優(yōu)先替換實(shí)際用到的函數(shù)暫時(shí)未使用的可以先不編入。CMSIS-5的DSP庫(kù)源碼組織方式與CMSIS-4差異較大新增了大量以arm_前綴命名的頭文件和源碼需要仔細(xì)核對(duì)函數(shù)別名和數(shù)據(jù)類型定義。第四步最后處理RTOS層。只有當(dāng)應(yīng)用代碼要新增并發(fā)功能或需要用到v2的新特性時(shí)才值得動(dòng)RTOS層。如果只是純粹為升級(jí)而升級(jí)RTOS這個(gè)環(huán)節(jié)可以放一放。這套漸進(jìn)路線的核心邏輯是每一步都能保證工程處于可編譯、可運(yùn)行的狀態(tài)始終有一個(gè)可以回退的穩(wěn)定基線而不是把全部修改堆到一起再統(tǒng)一驗(yàn)證。5.3 遷移完成后應(yīng)有的靜態(tài)保障機(jī)制遷移不是終點(diǎn)真正決定長(zhǎng)期幸福感的是后續(xù)能否持續(xù)控制源碼質(zhì)量。根據(jù)這次評(píng)測(cè)的經(jīng)驗(yàn)我強(qiáng)烈建議在遷移完成后搭三件事第一把CMSIS頭文件版本納入CI檢查。寫一個(gè)腳本在每次編譯前遍歷所有被包含的core_cmX.h輸出每個(gè)文件的絕對(duì)路徑和文件頭聲明的CMSIS版本號(hào)任何一個(gè)路徑下出現(xiàn)版本號(hào)不一致就報(bào)警。這個(gè)機(jī)制能在源頭上杜絕“新舊CMSIS混用”這個(gè)最大的靜態(tài)隱患。第二強(qiáng)制統(tǒng)一宏定義清單。把工程編譯命令中-D傳入的宏整理成一份cmsis_config.h文件集中定義__FPU_PRESENT、__MPU_PRESENT、__VTOR_PRESENT、__ICACHE_PRESENT等關(guān)鍵配置宏并通過#error指令約束沖突組合。CMSIS系列頭文件中很多條件編譯的錯(cuò)誤本質(zhì)上是宏定義分布太散導(dǎo)致的集中管理能顯著降低這類問題概率。第三預(yù)設(shè)一條“編譯干凈基線”。用一個(gè)固定版本的芯片SDK、固定工具鏈、固定優(yōu)化等級(jí)編譯一次生成完整工程把警告和編譯輸出的baseline保存下來。后續(xù)任何代碼變更都基于這個(gè)baseline做增量比對(duì)新出現(xiàn)的警告和錯(cuò)誤能第一時(shí)間被標(biāo)記出來。CMSIS-4的老代碼里本身就有不少歷史遺留的警告如果不設(shè)基線很容易把新引入的問題和舊問題混在一起排查效率極低。這次對(duì)CMSIS-4的靜態(tài)工程評(píng)測(cè)最終得到的結(jié)論用一句話概括就是CMSIS-4不是洪水猛獸但它的“遺產(chǎn)屬性”決定了它只能被理解、被約束、被有計(jì)劃地替換而不能被當(dāng)作新工程的默認(rèn)地基繼續(xù)往上壘。搞清楚它的源碼里藏著哪些宏、哪些匯編分支、哪些RTOS舊API再?zèng)Q定是鎖定老版本穩(wěn)定運(yùn)行還是分批漸進(jìn)遷移這才是務(wù)實(shí)的工程態(tài)度。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
丁香婷婷视频一区二区| 婷婷丁香18| 天色综合网| 久久五月视频| 婷婷综合五月天亚洲综合| 伊人九九热| 日本在线视频手机播放五月婷| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 人妻人人操| 日本欧美成人片AAAA| 婷婷五月激情五月激情| 丁香五月天在线观看视频| 五月丁香激情综合网| 天天插天天日天天爽| 亚洲精品网址| 婷婷五月激情黄色| 激情色色| 99综合网| 五月丁香免费看| 成人五月天在线观看| 久久婷婷青青| 亚洲乱码日产精品BD| 人人摸人人| 婷婷性爱无码视频| 亚洲激情淫网| 国产高清av黄色看片| 五月婷婷综合丁香视频| 天天爽天天草| 久1色色| 9视频1在线| 久久精品99国产精品日本| 精品人妻一区二区三区四区不卡在| 五月天婷婷激情网| 丁香五月性爱| 99日在线视频| 激情人妻综合| 国产九九一区二区三区| 1024欧美日韩精品久久久| 99国产精品白浆在线观看免费| 人人干av| 天天五月天综合网址| 亚洲小说五月婷婷| 3pAV| 99re这里只有精品免费| 五月婷丁香在线视频在线| 色情性爱视频网址| 中文人妻主播久久| 一本久久亚洲五月婷婷| 免费99情趣网视频| 久久狠狠色| caop在线视频| 久久三级视频| 日日爱678| 婷婷五月丁香六月| 大香蕉久久伊人婷婷五月丁香| 久久在线大香蕉| 99热黄| 欧美性猛交99久久久久99按摩| 二色AV| 亚洲综合色色| 久久99综合| 成人看片网站| 色五月丁香91| 99ri精品在线| 五月天六月丁香| 天天综合亚洲综合网天天αⅴ| 天天肏屄夜夜爽| eeuus五月婷| 色婷丁香五月| 色综合天天天天做夜夜| 久久婷婷五月丁香网| 亚洲成人av在线| 337p大胆噜噜噜噜噜91Av| 伊人久久婷婷| 波多野结衣不卡AV| 五月天操逼网| 99热这里只有精品13| 免费观看的AV| 中文字幕综合网| 亚洲五月婷婷| 五月婷婷国产| 在线视频色五月| 狠狠干激情五月| 99国产性感视频| 国产五月天欧美色| 五月激情在线| 玖色色综合| 欧美va视频| 婷婷成人在线| www.婷婷.com| 亚洲网在线观看| 9999综合99综合人| 在线区区区| 99色一| 亚洲综合激情五月久久| 五月天婷婷基地| 色五月丁香五| 五月婷在线| 婷婷五月天天| 超碰人人射| 99在线免费视频| 国产女生爱爱AA| 日韩色五月| 人人操婷婷| 久久天堂加勒比| 噜噜色五月| 婷婷五月视频| 五月香婷婷| 激情淫乱男女| 五月综合激情综合久| 亚洲婷婷久久综合| 日韩aⅴ视频| 六月丁香综合| 色久婷婷五月| 另类 在线| 国产精品色| 日操夜操天天操不卡| 99丁香五月婷| 99热99热在线| 丁香五月天AV在线 | 欧美亚洲操逼| 九九色色| 午夜色色色极品视频| 丁香五月激情在线| 九九婷婷五月天| 五月丁香久久网| 亚洲九九99精品视频在线播放| 亚洲人成色A777777在线观看| 亚洲综合在线视频| 亚洲AV免费在线| 婷婷五月无码| 九九99热精品| 五月婷婷五月天亚洲无码| 91干| 九九热av| 五月丁香激情四射| 九热视频精品| 亚洲另类在线观看| 99热这里只有精品99| 精品久久久久成人码免费动漫| 日韩 中文 欧美| 俺去啦综合网| 热99色| 天天摸.天天mo| 99这里| 日本黄色一级| 婷婷丁香五月天色区| 99综合在线| 青青草99热久久精品国| 直接看的AV| 亚洲视频一区| 天天射影视综合网| 美国少妇性做爰| 久久99久久99精品免视看婷婷| 蜘蛛女侠2003满天星免费观看| 亚洲第一成人无码A片| 丁香五月婷婷激情网| 天天狠狠干| 激情都市另类| 五月婷婷插一插| 国产99热| 精品99爱免费视频在线观看| 婷婷五月花| 久久久婷| 伊人久久婷婷| 人人摸人人射| 人人色人人弄人人操| 九九99在线观看视频| www.婷婷六月天| 五月婷久久草| 色婷婷视频| 欧美在线操| 91超碰在线观看| 第四色五月婷婷| 九九无码| 日韩啪啪网| 五月丁香影院| 99热99热在线观看| 婷婷五月天99综合网站| 五月激情六月综合| 亚洲成人AV在线播放| 97碰碰视频| 色婷六月| 九九这里有精品| 综合在线网| 欧美肉大捧一进一出免费视频| 九九成人高清视频| 国产操B| 精品久久66| 婷婷五月丁香成人网| 亚洲va欧美va国产综合久久久| 欧美A片在线视频免费观看| AV79| www.婷婷六月天| 丁香花五月天激情| 色婷婷五月丁香在线观看| 天天干天天爽| 六月丁香五月天| 日韩伊人大香蕉| 日本狠狠干| 99啪| 日本V在线观看不卡视频网站| 囯产精品一品二区三区| 亚洲操B视频| 婷婷丁香花五月天| yazhouzonghesese| 欧美在线视频免费播放| 五月婷婷六月丁香| 天天综合亚洲| 欧美噜噜噜草| 中文字幕高清av| 亚洲婷婷五月| 99久久思思| 日韩AV中文字幕在线| 激情综合在线观看| 99热骚货| 超碰人人操在线| 涩涩五月天| 五月婷婷欲色| 久草天堂| 99热大| 狠狠色综合网| 色五月婷婷色五月| 综合激情五月丁香9999久久精| 亚洲V国产V欧美V久久久久久| 婷婷婷婷婷开心无码播放| 久久久久久97| 免费色婷婷| 在线成人网址| 人人爽欧美婷婷久久久五月丁香| 色五月天天在线观看资源站| 4438国产免费看| 婷婷五月婷婷| 99热这里只有精品8| 五月天婷a在线| 五月婷婷综合天天操| 五月婷婷影院| 丁香五月天中文字幕| 亚洲五月天,激情视频| 99色嘟嘟精品网站| 九九碰九九爱97超碰| 亚洲人成人五月天| 开心五月丁香综合久久| 91色九| 欧美特大片黄| 久久九九网| 五月天综合在线观看视频| 天天综合激情| 超碰成人电影| 91超级碰在线| 97操| 红桃91人妻爽人妻爽| 五月丁香六月婷婷网| 有哪些A片网站| 久操大香蕉| 五月天久草| 色色五月天激情| 五月天天天天天天天天天天天天天天天婷婷婷| 综合五月天婷婷色| 九九热99精品在线| 丁香五月第九色| 久久久999精品| 色综合色综合色综合| 国产肥白大熟妇BBBB视频| 91九色|疯狂|高潮|对白|| 激情综合网 激情五月天| 激情综合啪啪啪| 激情五月色综合网| 91超级碰在线| 色七七九九| 婷婷综合干| 色无婷婷| 天天综合网~91| 国产亚洲精品AAAAAAA片| 五月丁香操婷逼| 这里只有精品1| 五月婷婷综合潮喷| 五月激情综合深爱| 久久丁香久久| 亚洲av骚货| 色99欧洲色19| 怡红院一二三| 人人草人人爱| 欧美性爱一区| 97碰碰人人| 九九干视频| 裸体美女丁香五月天。| 色爱综合网| 丁香五月婷婷影院| 激情五月综合网| 婷婷丁香人妻天天爽| 婷婷激情五月色综合| 五月天狠狠干| 99这里都是精品6| 99热成人在线| 久久亚洲天堂| 五月天啪啪| 婷婷久久五月| 天天色情站| 欧美美女视频| 久久久精品婷婷五月天| 色色婷婷婷丁香五月天| AV网站免费在线| 久久九九玖玖| 深爱五月婷婷开心中文字幕| 韩国婷婷丁香五月| 综合久久五月天| 丁香婷婷成人网站| 91天天操天天干天天射| 丁香五月天社区| 伊人无码高清| 墨西哥毛片内射精| 九九99免费理论| 久久综合爱| 婷婷五月激情四月综合| 五月丁香久久激情网| 久久99美女精彩视频| 亚洲色婷婷五月| 色播五月婷婷| 996er热| 伊人91| http://www.com久久久精品一区| 9色免费网| 欧美超级视频97| 九九AV在线| 激情六月下句是什么| 五月天成人在线视频丁香| 亭亭社区五月天| 一本色道久久综合狠狠躁小说| 伊人五月综合网| 另类图片色五月| 天天操夜夜玩!| 乱色色色| 69精品人人人人| 香蕉久久国产AV一区二区| 五六月婷婷久久| 九九色之九九色之88| 婷婷色播婷婷| 九九爱激情| 91玖玖| 无遮挡国产高潮视频免费观看 | 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 免费AV在线| 丁香五月婷婷六月婷婷| 色五月激情婷婷| 亚洲黄色影视| 亚洲视频1区| 亚洲欧美成人在线| 五月婷婷无码| 婷婷丁香六月天| 色约约视频一区二区三区四区五区 | 99ri视频在线观看| 五月丁香婷婷网网网网| 99热超碰在线| 伊人综合婷婷| 色五月丁香激情| 开心五月婷婷婷美女| 五月天婷婷激情小说电影| 丁香五月婷婷社区| 五月丁香婷婷福利| 婷婷丁香六月| 美女婷婷激情亚洲| 丁香色六月| 五月天伊人综合| 久久99网| 人人操人人干AV| 天天插夜夜爽| 五月婷婷综合视频| 国产精品99久久久久久猫咪| 婷婷色情六月| 亚洲春色奇米影视| 丁香色情五月天| 婷婷五月色惰| 亚洲第一影院高清无码网站| 色色丁香五月婷婷| 狠狠色婷婷7777久| 色香蕉影院| 99热这里只有精品2| 天天色天天日| 91人人操人人| 少妇人妻人伦A片| 99超超碰| www,99色| 99热这里只有精品最新| 少妇出轨做爰高潮A片| 99在线免费视频| 性色视频| 狠狠狠狠狠狠草| 丁香 婷婷五月| 五月天开心色情网| 久久香蕉丁香| 日本爆乳片手机在线播放| 婷久久久| 欧美爆乳一区二区三区| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 久久综合五月天| 第四色五月婷婷| 99国产这里只有精品| 风流少妇A片一区二区蜜桃 | 久色姿源| 亚洲无AV在线中文字幕| 七七久久婷婷| WWW,婷婷,COM| 51精品国内探花| www.minyis.com【JT】币址百万U预算可预付QQ2101460746 | 丁香五月六月综合激情| 日日.c| 婷婷五月丁香青青草在线| 五月天成人网婷婷| 久久五月婷天天干| 婷婷五亚洲| 亚洲日韩成人三级av| 丁香婷婷激情五月色| 五月天色五月| 678五月丁香亚洲综合| 97色色视频| 天天操天天日天天爱| 婷婷色中文字幕| 欧美97色| 色五月激情网| 爱草视频在线观看| 老司机视频lsj爱就色| 婷婷五月天激情影片| 久久婷婷老| 另类图片婷婷五月天| 六月婷婷中文字幕| Www99热| 日本婷久久| 婷婷五月天激情综合| 丁香九月久久| 无码网| 电影91久久久| 婷婷天天婷婷天天澡| 欧美激情 日韩无码 婷婷 五月天| 婷婷五月丁香综合激情| 色99在线观看| 噼里啪啦在线观看免费完整版视频| 婷婷五月天.com| 99热99艹在线观看| 夜夜爽天天爽| 婷婷五月激情网站| 激情色五月天| 99ri精品在线| 99精品这里只有免费视频| 嫩草AV久久伊人妇女超级A| 精品成人无码A片观看香草视频| 情色五月天 网站| 六月婷婷在线视频| 色情五月天小说| 国产XXXX搡XXXXX搡麻豆| 婷婷爱五月天人人爱| 色色色色色色网站| 激情合网婷婷| 婷婷丁香社区| 久久xx| 婷婷丁香五月天中文字幕| 人妻在线网站| 99免费在线视频| 激情黄色小说五月天| 婷婷五月激情五月丁香五月| 五月婷婷婷| 天天狠狠色| 六月婷基地| 亚洲色综合| 色五月丁香伊人| 激情六月婷婷| 丁香五月综合狠狠| 97在线视频观看| 久久66精品| 亚洲色图五月丁香| 五月丁香久久综合91| 91碰碰视频| 伊人婷婷激情| 九九黄色网| 婷婷五月综合色小姐小说| 玖玖色综合网| 亚洲最大五月天成人网| 久久66er久久| 大香蕉啪啪网| 色婷婷电影网| 婷婷五月天激情视频| 五月婷久久草| 99日热在线视频| 97人人草| 99热精品在线| 色99欧洲色19| 丁香五月综合福利视频导航| 97碰在线视频| 影音先锋91资源站| 99久久婷婷国产综合精品电影| 91在线日| 99热这里只有精品4| 丁香五月婷婷动漫| 97福利视频| 丁香五月婷婷少妇| 五月Huangsewang| 婷婷久久综合久| 色噜噜五月天| 亚洲欧美另类在线23p| 精品国产va久久久久| 国产精品丝| 热久综合| 九九视频在线观看视频6| 久久视频婷婷视频| 夜夜躁婷婷AV| 亚洲va欧美va天堂v国产综合| 色婷婷亚洲综合av| 嫩草极品| 婷婷五月在线视频| 99热免费观看| 中文AV网| 亚洲综合五月天婷婷| 超碰网站在线观看| 亚洲天天操| www开心激情网| 色色色在线播放| 99精品在线| 国产av基地| 99热超| 国产精品成人网址| 青青草大香| CHINESE熟女老女人HD视频| 日本三级韩三级99久久| 亚洲六月婷婷| 色九网| 亚洲无码yw| 五月天六月色| 99性爱| 久久爱婷婷| 久久人妻视步| 色五月天成人| 婷婷综合一二三| 婷婷丁香五月婷婷| 五月天久久网站| 9久视频| 欧美三级黄色片久久| 绿色小导航AV| www.sebowuyue| 五月丁香毛片| 97婷婷丁香| www、丁香五月天| 无码yw| 综合色影院| 九九综舍久久| 国产ava| 大香蕉五月婷婷| 丁香激情网| 久操热线| 国产黄色大片| 激情久久月| 99久在线精品99re5热视频| 久草丁香婷婷五月天婷| 91九色熟女| 色五月激情综合网| 天天做天天爱天天爽在| 蜜臀嫩草| 激情99| 欧美熟女99| 97人人超| 婷婷六月天国产综合| 伊人婷婷综合| 99热这里是精品| 99在线精品免费视频| 91丁香色| 超碰a女人的天堂| 97操操操| 26uuu欧美亚洲日韩| 凹凸操Av| 91超碰在线播放| 久久丁香五月| 欧美97超碰| 97日本在线| 久久9视频| 嫩草综合网| 伊人AV五月婷| 日日夜夜婷婷| 操操综合网婷婷| 日本专区久久| 亚洲激情网站无码| 涩综合婷婷| 天天干狠狠| 色色五月婷婷狠狠| 开心五月综合激情网| 5月丁香婷婷| 天天爽天天摸人妻综合网| 亚洲乱码在线观看| 日韩黄色中文字幕| 亚洲综合视频网| 伊人六月丁香婷婷| 色婷婷88| 激情98色婷婷五| 婷婷激情在线| 金品在线视频99| 99久久久国产大片区| 成 人 色 色| 丁香五月香蕉| 曰本久久女| 97干视频| 激情婷婷啪啪| 狠狠干综合| 婷五月天六| 久久久久婷婷五月热综合| 天天色天天爱天天爱天天爱y| 91精品久久久久久77777| 97luluse| 思思热久在线观看视频| 超碰网站在线观看| 亚洲久久天堂| 梁铮版蜘蛛女在线观看| 五月激情天| 国产AV影片| 色五月成人| 色婷婷裸体色性在线| 日本色五月| 热热99爱爱| 激情婷婷另类| 九九色色| 怡红院 久久| 丁五月激情视频免费| 字幕网AV中文字幕| 美女天天久久| 亚洲操人| www.婷婷.com| 操一操干一干| 色九亚洲| 一起草aV| ji'qi'luan'ren'lun| 丰满女老板BD高清A片| 91精品国产91久久久久青草| 婷婷色六月| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 亚洲热热视频| 丁香五月影视| 99热免费| 久七香蕉| 人人草人| 综合激情九月婷婷,激情综合婷婷中文字| 26uuu.| AV大香蕉| 日本欧美在线| 成人丁香五月| 91人人操人人| 九色自拍| 色综合区| 开心五月网| 亚洲中文字幕av| 成人婷婷| 色综合色五月| 亚洲操操| 国产乱码久久| 色噜噜综合网| 日操| 中文字幕按摩做爰| 色婷婷成人影片| 激情丁香五月婷婷啪啪| 免费超碰在线观看| 狠狠撸激情综合丁香五月天俺来啦| 亚洲最大成人综合网720P| 婷婷天天舔| 国产人妻人伦精品一区二区| 777丁香六月青青草婷婷综合久月| 欧美日韩91| 精品人妻伦| 欧美肉大捧一进一出免费视频| 这里只有精品99视频| 亚洲AV免费在线| 五月婷伊人| 丁香五月花| 天天射天天射一道本日本社区| 大香焦啪啪啪| WWW五月| 9久久精品视频| 丁香久久五月婷综合| 亚洲av日韩无码| 五月天综合网| 蜜桃婷婷丁香五月天狠狠久久综合| 日本精品久久久久中文字幕| 伊人五月网| 丁香操逼| 99色色| 激情小说五月天社区丁香| 色色99| 午夜无码精品色综合久久| 色啪久 | 日本色久| 天天综合久久| 97干婷婷| 五月开心婷婷极品激情| 精品无码久久久久久久久| 国产99视频永久免费| 丁香婷婷激情四射五月| 丁香五月人妻| 激情五月天婷婷久久久久久久久久久| 久久A极片| 五月天.com| 中文字幕综合网| 黄桃AV无码免费一区二区三区| 天天天日天天天干| 欧美图片丁香五月天| 天天干,天天日| 夜夜爽天天日| 97超碰人人操| 伊人久久丁香狠狠婷婷综合香蕉| 欧美色性色好| 激情综合五月激情| 激情文学 综合 九月| 九九热中文| 五月天自拍网| 婷婷激情人妻| 成人中文网| 五月婷婷成人| 五月天欧美 另类小说| 日本三日本三级少妇三级66| 色婷婷六月| 亚洲第一精品成人999久久精品| 97视频久久| 热热色色五月天婷婷| 亚洲综合无码| 激情五月婷在线精品| 久久狼人天堂| tingtingseav| 99re在线这里只有精品视频首页| 97碰在线| 五月婷婷,六月婷婷| 激情深爱五月天| 五月婷婷六月丁香综合| 777.色色| 婷婷中文无码| 99精品九九| 亚洲视频99| 天天综合在线网| site:jszngf.com| 九九热99熟女| 亞洲自怕| 狠狠干狠狠干| 久久激情视频| 丁香五月电影| 色五月五月丁香| 婷婷五月天AV| 吊色AV男人的天堂| 中文字幕人妻一区二区| 婷婷成人五月天| 91超碰在线播放| 五月丁香六月婷婷在线| 亚洲精品小视频| 免费AAAAA网| WWW,五月| 九草性爱| 日本玖玖在线| 五月丁香色停停啪啪啪| 狠狠色丁香| 色播综合| 日本久久人人| 婷婷六月天| 99热费观看| 2w在线视频| 婷婷丁香久久五月综合| 天天玩夜夜操天天爽| 丁香五月在线自慰| 五月天久久网站| 一区二区你懂的| 成人草榴视频| 91夫妻视频| 亚洲第一成人无码A片| 激情五月色婷婷| 久久久com| 欧美综合123区| 婷婷五月天久久久| 婷婷五月天黄色小说| 五月天婷婷青青草| 99热只有精品在线观看| 开心日韩丁香婷婷五月| 亚洲AAA| 国产99精品免费视频| 国产VA播放| 99思思在线视频| 久久这里只有精品5| 婷婷五月成人| 亚洲艹网| 婷婷爱综合| 人人舔人人色人人高潮| 青青草蜜臀| 26uuuavcom| 五月天婷婷丁香视频| 丁香五月丁香伊人| 亚洲婷婷成人五月天| 丁香色五月婷婷91桃色| 天天天天爽爽天干| 久久久久丁香婷婷五月天| 色噜噜狠狠一区二区三区| 婷婷五月天六月丁香| 五月婷婷丁香| 中文字幕在线资源| 五月激情小说| 性色做爰片在线观看WW| 综合色图婷婷| 六月婷婷操逼| 九色无码| 狠狠色综合网| 深夜婷婷五月丁香| 天天狠狠色综合| 色婷婷www| 超碰a女人的天堂| 色婷婷免费观看| 五月丁香综合网| 亚洲亚洲人成综合网络| 狠狠爱丁香婷| 97色色婷婷五月天| 婷婷色五月婷婷姐妹| 久久综合伊人综合在线| 色婷婷狠狠干芒果TV| 免费亚洲婷婷五月| 天天日天天爽夜夜爽| 国产熟妇的荡欲午夜视频| 九九九干精品| 成人中文字幕在线| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | tingting五月天亚洲| 婷婷激情5月| 五月欧美丁香在线观看| 狠狠操狠狠爱| 三级黄色大片视频| 狠狠色狠狠爱| 久久这里只精品66| 丁香婷婷色五月合集| 开心五月深爱五月| 97色色视频| 亚洲成人丁香花| 亚洲无码成人| 天天噪夜夜爽| 天堂网啪啪| www.婷婷五月天| 超碰97色| 丁香六月婷婷综合激情欧美| 乱色色色| 超碰人人色| 淫五月停停| 14色综合婷婷| 丁香五月婷婷精品视频| 在线视频激情网站| 天天色情站| 综合五月丁香六月婷婷| 久久6这里只有精品| 五月婷婷啪| 99激情| 99久免费视频| 无码网| 99这里有精品视频| 少妇性BBB搡BBB爽爽爽视頻| 色噜噜五月天| 艹| 婷婷综合精品| 亚洲一级 片内射网站在线观看| 91色五月| 色偷偷色婷婷| 极品人妻VIDEOSSS人妻| 中美月韩免费A片| A A色色| 色五月婷婷综合| 婷婷黄色五月| 色五月婷婷激情五月| 99色综合网| 1024在线视频| 激情婷婷丁香色五月综合| 九九热re99re6在线精品| 精品人妻一区二区三区在| 久久婷婷色色| 激情五月婷婷丁香| 五月开心播播网| 国产成人网| 色99色| 日本波多野结衣视频| 激情五月婷婷免费视频| 久久激情五月天| 丁香五月97视频| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 高清视频一区| 丁香五月天成人网站| 欧美色图片88| 久久久久久草黄色片AV在线观看| 久9免费视频| 99精彩视频在线观看| 五月丁香六月婷婷不卡免费无码| 色情五月婷婷| 丁香激情四射| 五月丁香六月色| 色呦呦在线| 激情综合婷婷| 99只有精品| 26UUU| 天天色播| 啪啪激情综合| 国产免费一区二区三区三州老师F1F1.CC | 久久伊人9| 亚洲精品成人片在线播| 97婷婷五月天| 丁香六月天婷婷色| α久久| 国产精品99久久久久久久女警| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 九九色图| 操逼毛片国语对白| 五月天色色婷婷| 国产免费av在线| 亚洲综合五月| 亚洲av网址| 思思久久99| 六月激情丁香一道本7777| 欧美日韩一区二区三区四区| 五月丁香 狠狠爱| 五月亭亭综合五码| 伊人喵咪a V| 六月天丁婷婷| 97碰碰九九视频| 婷婷在线免费| ww超碰在线| 色亚洲激情| 久久久精品99| 天堂网啪啪| 婷婷月综合| 激情五月天色网站| 久久精彩综合视频| 五月婷婷激情网| 九九综合精品| 国产精产国品一二三在观看| 新五月天婷婷激情电影| 91操黄| 色欲色香综合网| 99ri视频在线播放| 丁香五月婷婷啪啪啪| 丁香婷婷大香蕉| 天天插综合| 国产阿姨日皮艹逼内射视频| 538在线精品| 丁香五月婷在线观看| 天天网曰日曰夜夜综合永久免费| 激情五月天色播| 久久五月激情| 九九色影院| 丁香婷婷六月激情综合| 伊人丁香五月婷婷潮吹| 久99在线视频| 激情五月伊人婷婷| 97超碰,人人舔,人人操,人人摸| 丁香六月婷婷综合在线| 91无码高清| 国产色色视频| 五月丁香狠狠地噜噜噜噜| 久久亭亭电影| 亚洲天堂爱爱| 天天色天天爱天天舔| 人妻视频一区而且二区| 激情av在线| 欧美va精品va老师va| 91919191919久久成人视频| 精品久久艹| 久久久中文| 亚洲AV影片在线观看| 综合成人小说婷婷| 高清无码.com| 丁香婷婷久| 婷婷射丁香| 91精品国产综合久久蜜芽解析速度| 婷婷亚洲在线| 婷婷婷久久久| 思思视频这里是精品| 色色色宗合网| 色五月婷婷综合| 一區四區歐美日韓| 青青日韩| 五月天婷婷综合网| 欧美五月婷婷| 综合亚洲五月天| 秋霞av不能| 色人久久| 丁香五月六月| 婷婷5月天激情综合| 久久九九九九| 成人精品视频99在线观看免费| 天天综合中文| 九九热九九| 九热视频精品| 精品夜夜澡人妻无码AV| 伊人色综合久久久| 精品九九视频| 亚洲成人AV在线观看| 婷婷丁香激情五月天色色色| 另类专区在线| 天天日日夜夜爽。| av 一区三区四区| 《久久综合九色综合97婷婷| 99热久| 久久婷婷五月天激情| 五月天色婷婷视频| 婷婷色五月丁香六月欧美啪| 骚逼视频一区2区| 天天综合在线网| 婷婷深爱五月| 翔田千里无码| 天天做天天爱天天爽夜夜揉| 99热精品网| 亚洲乱码日产精品BD| 色99视频| 99亚洲视频| 五月婷婷无码专区| 欧美狠狠草| 大香蕉久久草| 婷婷久久婷婷色五月| 久久er99热精品一区二区| 色色五月天网站| 亚洲色情在线| 手机AVAV天堂看网| 99色在线观看免费| 伊人久久大香蕉网| 激情碰碰碰| 95精品区一区二| 婷婷五月天激情网| 九九AV在线| 色综合伊人网| 狠狠色噜噜| 六月丁香婷婷开心综合基地| 婷婷 久综合| www.99热视频| 婷婷久久免费| 涩 五月 婷婷 狠狠| 99久久97| 青青草伊人婷婷| 五月丁香| 激情婷婷六月天| 狠狠色综合网| 丁香五月综合激情啪啪| 99精品综合| 五月天婷婷色综合| 99久久玖玖| 婷婷六月五月天综合| 狠狠色狠狠色综合日日91| 五月天激情网图片 - 百度| 丁香五月婷婷色| 97干在线观看视频| 91久久综合亚洲噜噜成人在线| 国产精品成人网站| 狠狠色丁香久久综合婷婷亚洲成人福利| 人人人操 超碰| 婷婷不干网| 亚洲视频综合网| 成人 在线观看国产| 成人做爰A片免费看网站找不到了| 99久在线精品99re8| 国产这里只有精品| 五月婷婷丁香五月| 丁香五月电影| 天天色粽合合合合合合合| 狠狠狠狠狠狠| 国产亚洲精品久久久久久牛牛| 久久久97| 91艹人| 日 日干 日日做| 五月天影院婷婷在线观看| 一本道综合网| 天天干天天干天天干天天干天天干天天干天天 | 玖玖资源天天无码| 婷婷色情五月| www激情婷婷com| 99re这里只有| www999日韩精品| 日韩啪啪视频| 综合五月天| 丰满熟女人妻一区二区三| 久久久精品色| 婷婷在线视频| 九九色影院| 五月丁香婷婷色| 国产五月视频| 色婷婷91激情小说| 九伊人网| 97婷婷色| 婷婷在线操| 性天天中文网| 五月天成人在线播放| 亚洲av免费在线| 99久在线精品99re8| 亚洲乱码日产精品BD| 色激情网| 色七七九九| 色五月丁香五月激情五月激情| 情欲综合网| 天天爽免费视频| 翔田千里 50岁 无码| 久久xx| 久久ri精品视频| 激情久久久久久久久| 亚洲午夜精品久久久久久人妖| 成人小说 五月天 婷婷| 婷婷日日夜夜| 99热99干| 碰97 久| 婷婷的色色五月天| 99热99在线| 五月天婷婷中文字幕在线播放| 日本99色| 婷色五月天| 丁香97综合| 色色操| 激情色情五月天| 婷婷97碰碰| 亚洲欧洲中文日韩久久AV乱码| 综合网色综合| 久久精品爱爱| 欧美婷婷五月丁香| 婷婷午夜天| 成人五月天。COM| 九热视频| 五月婷色激情五月| 五月婷婷天| 亚洲丁香婷婷| 97人人射| 久久九九视频| 99色视频| 美女91一起草| 99激| 综合激情五月婷婷| 99国产在线精品视频| 激情五月色婷婷| 狠狠狠人妻| 丁香五月网址| 婷婷婷婷午夜| 色玖玖| 色婷婷五月天激情在线观看| 色色热| 伊人九九热| 欧美噜一噜| 九九色综合| 一区二区传媒视频| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 天天操人人干| 婷婷丁香精品视频在线观看| 白人荫道BBWBBB大荫道| 九色PORNY9l原创自拍| 激情婷婷网| 色婷婷综合五月| 操久久网| 色婷婷另类| 色婷婷五月天激情久久| AV网站免费在线| 亚洲正能量欧美| 日本女天天爽| 天堂久久婷婷| 婷婷性爱五月天丁香网| 激情五月图| 五月丁香激情四射| 丁香五月婷婷www..com| 无码中文一区二区三区| 97久久超碰| 色九九丁香九月色九九色| 翔田千里无码| 99re久久| 色综合区| www.婷婷| 九九精品系列| 丁香五月天BBw| 天天干一干| 久久黄A片| www.99热视频| 第四色五月婷婷| 这里精品| 色呦呦在线| 日本成人噜噜噜噜噜| 日韩成人免费电影| 大香蕉九九| 最新久久网址| 综合激情肏逼网| 五月天伊人网| 在线亚洲综合网| 婷婷丁香五月天中文字幕| 精品亚洲国产成AV人片传媒| 日日操夜夜爽白洁| 婷婷五月无码| 久久婷婷五月丁香网| 成人色图情色成人网 www.5b5b5bcom 五月天| 影音 五月 婷婷 久久| 色五月丁香一区在线| 久久激情网| 99惹在线精品免费观看| 中文字幕在线免费观看视频| 激情文学第四色婷婷丁香五月| 99热8| AV在线收看| 第五色婷婷| 日韩五月婷婷| 天天干夜晚夜操| 性爱激情小说AV五月丁香花| 婷婷五月天色| 综合久久六月| 天天爽夜爽| 五月婷免费视频| 婷婷五月天激情开心网| 男人視頻站| 婷婷五月天激情小说| 婷婷 伊人 久久| 欧美性爱一区| 99在线观看精品| 伊人干综合| 丁香久久| 99热婷婷| 五月综合婷婷网| 色色欧美色色色| 99小视频网站| 久久久九九视频精品18| 久久这里只有精品热在99| 成人毛片在线免费观看| 五月丁香啪啪综合| 久久久五月天| 激情五月婷婷| 婷婷婷五月天最新综合你懂的| se色婷婷视频| 婷婷十月激情综合网| 97超级操操| 高清视频一区| 日韩色色网| 国产又爽又猛又粗的视频A片| 天天操天天日天天爽| 婷婷94s| 99热丁香| 天天操天天日天天爱| 大陆极品少妇内射AAAAAA| 狠狠久综合| 大香蕉人人网| 久操热| 丁香六月 人妻| 婷婷激情五月天桃花网| 97操碰在线视频| 热九九精品| 亚洲精品又粗又大又爽A片| 久久久精品人妻录| 久久精品婷婷五月丁香| 狠狠插狠狠操| 丁香五月狠狠综合欧美| 亚洲一区二区 成人网站戴套| 六月婷婷啪啪| 26uuu.| 欧在线一区| 99在线69| 五月天欧美 另类小说| 久久五月天 91| 亚洲第一黄网| 秋霞簧片| 美欧成人视频| 久久五月丁香| 狠狠干综合网| 99色色网| 亚洲xx在线| 99色网站| 玖玖精品视频99| 婷婷五月天精品| 色色色热| 色五月丁香五月| 五月婷婷激情四季| Caoporn公开| 五月丁香六月激情欧美综合| 丁香婷婷色五月合集| 久久久.COM| 日本黄 色 片| 超碰99久久| 欧美Va在线| 婷婷五月丁香综合| 日韩久久系列|