色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

CMSIS-5源碼級(jí)解析:嵌入式架構(gòu)分層與工程治理實(shí)戰(zhàn)

CMSIS-5源碼級(jí)解析:嵌入式架構(gòu)分層與工程治理實(shí)戰(zhàn) 1. 項(xiàng)目概述這不是一份CMSIS-5文檔翻譯而是一份嵌入式工程師的“源碼級(jí)作戰(zhàn)地圖”你手頭正跑著一個(gè)基于STM32F407的電機(jī)控制固件突然發(fā)現(xiàn)arm_math.h里的arm_fir_f32()函數(shù)執(zhí)行時(shí)間比預(yù)期多出8個(gè)周期或者你在移植一個(gè)FreeRTOSLWIP的組合到新選型的NXP i.MX RT1064上反復(fù)卡在__NVIC_PRIO_BITS宏定義不一致導(dǎo)致的中斷嵌套異常又或者團(tuán)隊(duì)里新人一上來就問“CMSIS到底是不是ARM官方庫它和HAL庫、LL庫、DSP庫到底誰管誰”——這些問題沒有一個(gè)能在ARM官網(wǎng)PDF手冊(cè)里直接搜到答案。我干嵌入式底層開發(fā)13年從ARM7TDMI寫匯編裸機(jī)到帶Cache一致性調(diào)試Cortex-M7多核鎖步踩過的坑比讀過的手冊(cè)頁還厚。CMSIS-5不是一堆頭文件集合它是ARM為整個(gè)Cortex生態(tài)埋下的架構(gòu)級(jí)契約是連接芯片廠商、編譯器、RTOS、中間件與應(yīng)用代碼的唯一可信錨點(diǎn)。今天這篇不講概念不列API只帶你一層層撕開CMSIS-5源碼包的壓縮包看清楚它的目錄樹怎么長(zhǎng)、每個(gè).h文件背后藏著什么硬件真相、為什么core_cm4.h里要硬編碼SCB-VTOR (uint32_t) __Vectors、以及當(dāng)你在Keil MDK里點(diǎn)下“Rebuild”時(shí)CMSIS究竟在后臺(tái)悄悄完成了多少次跨層協(xié)商。關(guān)鍵詞ARM、CMSIS-5、嵌入式、架構(gòu)、模塊分層——它們不是并列關(guān)系而是因果鏈ARM定義指令集→CMSIS-5實(shí)現(xiàn)架構(gòu)抽象→模塊分層決定工程治理效率→最終決定你的嵌入式項(xiàng)目能否在交付 deadline 前穩(wěn)定跑通ADC采樣PID運(yùn)算CAN報(bào)文發(fā)送三重負(fù)載。適合正在做芯片選型的技術(shù)負(fù)責(zé)人、被HAL庫封裝繞暈的新手工程師、以及需要給客戶寫《技術(shù)可行性分析報(bào)告》的FAE。2. CMSIS-5架構(gòu)全景從“芯片數(shù)據(jù)手冊(cè)”到“可執(zhí)行二進(jìn)制”的七層漏斗CMSIS-5的架構(gòu)不是平鋪直敘的模塊羅列而是一個(gè)嚴(yán)格遵循“硬件能力→軟件抽象→工程約束”邏輯的七層漏斗模型。我把它畫成一張物理層面的流水線圖不用Mermaid用文字描述更真實(shí)最上游是ARM官方發(fā)布的Cortex-M系列處理器技術(shù)參考手冊(cè)TRM里面寫著Cortex-M4內(nèi)核有8個(gè)SysTick定時(shí)器寄存器、NVIC支持240個(gè)外部中斷、MPU有8個(gè)region——這些是鐵律誰都不能改第二層是CMSIS-Core它把TRM里的寄存器映射、中斷向量表布局、系統(tǒng)控制塊SCB操作全部封裝成__set_MSP()、NVIC_EnableIRQ()這類函數(shù)但注意它不提供任何芯片外設(shè)驅(qū)動(dòng)只管內(nèi)核第三層是CMSIS-DSP這里開始出現(xiàn)數(shù)學(xué)函數(shù)但它的arm_fir_fast_q15()內(nèi)部調(diào)用的是__SMLAD()內(nèi)聯(lián)匯編直接對(duì)應(yīng)ARMv7-M的SIMD指令不是浮點(diǎn)運(yùn)算第四層是CMSIS-NN專為神經(jīng)網(wǎng)絡(luò)推理優(yōu)化所有函數(shù)都強(qiáng)制使用Q7/Q15定點(diǎn)數(shù)因?yàn)镃ortex-M系列沒有原生浮點(diǎn)AI加速器第五層是CMSIS-Pack這是工程治理的核心它用XML描述芯片外設(shè)、啟動(dòng)代碼、調(diào)試配置讓Keil/ArmDS/IAR能自動(dòng)識(shí)別STM32F407VG的Flash起始地址是0x08000000第六層是CMSIS-Driver它定義了ARM_DRIVER_SPI這樣的統(tǒng)一接口但TI的MSP432和ST的STM32實(shí)現(xiàn)完全獨(dú)立只是簽名一致最下游是CMSIS-RTOS v2它規(guī)定了osThreadNew()必須返回osThreadId_t但FreeRTOS和RT-Thread的底層實(shí)現(xiàn)天差地別。這七層不是并列的而是單向依賴CMSIS-DSP可以脫離CMSIS-Core單獨(dú)編譯只要你自己實(shí)現(xiàn)__get_PSP()但CMSIS-Pack絕對(duì)依賴CMSIS-Core提供的__NVIC_PRIO_BITS宏。我見過太多項(xiàng)目失敗根源就是把CMSIS-DSP當(dāng)成通用數(shù)學(xué)庫用結(jié)果在Cortex-M0上跑arm_conv_f32()直接觸發(fā)HardFault——因?yàn)镸0根本沒有FPU而CMSIS-DSP的f32版本默認(rèn)啟用VFP指令。所以CMSIS-5的“全景”本質(zhì)是七層信任鏈ARM保證內(nèi)核行為一致→CMSIS-Core保證內(nèi)核操作接口一致→CMSIS-DSP保證算法指令集兼容→CMSIS-Pack保證工具鏈理解芯片→CMSIS-Driver保證外設(shè)驅(qū)動(dòng)可替換→CMSIS-RTOS保證任務(wù)調(diào)度語義一致。少任何一層你的嵌入式項(xiàng)目就變成空中樓閣。2.1 模塊分層的物理邊界頭文件路徑即架構(gòu)宣言CMSIS-5的源碼包解壓后目錄結(jié)構(gòu)本身就是一部架構(gòu)宣言。打開CMSIS_5/CMSIS/根目錄你會(huì)看到四個(gè)一級(jí)子目錄Core/、DSP/、NN/、Driver/。注意沒有HAL/、沒有StdPeriph/、沒有LL/——這些全是芯片廠商或第三方寫的CMSIS-5只管“內(nèi)核之上、芯片之外”的公共地帶。Core/目錄下又有Include/和Device/兩個(gè)關(guān)鍵分支Include/里放著core_cm4.h、core_cm7.h等內(nèi)核頭文件它們定義了SCB_Type結(jié)構(gòu)體其成員VTOR、ICSR、AIRCR的偏移量嚴(yán)格對(duì)應(yīng)ARM官方TRM第4.3.1節(jié)的寄存器映射圖Device/目錄下則是按廠商分類的芯片支持包比如ST/STM32F4xx/里面只有stm32f4xx.h和system_stm32f4xx.c——前者聲明了RCC_TypeDef、GPIO_TypeDef等外設(shè)寄存器結(jié)構(gòu)體后者實(shí)現(xiàn)了SystemInit()初始化時(shí)鐘。這里的關(guān)鍵細(xì)節(jié)是stm32f4xx.h里#include core_cm4.h但core_cm4.h里絕不會(huì)#include stm32f4xx.h。這種單向包含關(guān)系就是模塊分層的物理體現(xiàn)內(nèi)核抽象層Core不感知具體芯片芯片支持層Device必須依賴內(nèi)核抽象層。我曾幫一家醫(yī)療設(shè)備公司重構(gòu)舊代碼他們把#define RCC_CR_HSEON_BIT (1U 16)這種位定義直接寫在應(yīng)用層結(jié)果換用STM32H7后HSE使能位移到了RCC_CR2寄存器整個(gè)時(shí)鐘初始化全崩。后來我們強(qiáng)制要求所有位操作必須通過CMSIS定義的RCC-CR | RCC_CR_HSEON;因?yàn)镽CC_CR_HSEON這個(gè)宏在stm32f4xx.h和stm32h7xx.h里由各自廠商維護(hù)CMSIS-Core只提供RCC_TypeDef結(jié)構(gòu)體定義。再看DSP/目錄Source/子目錄下全是.c文件比如arm_fir_f32.c但它不直接操作硬件只調(diào)用__SIMD32內(nèi)聯(lián)匯編而Include/里的arm_math.h則定義了arm_fir_instance_f32結(jié)構(gòu)體其中pState指針類型是float32_t*這就決定了它只能在帶FPU的Cortex-M4/M7上高效運(yùn)行。NN/目錄更極端Source/Convolution/下的arm_convolve_s8.c里核心循環(huán)是sum *pIn * *pWt;所有變量都是int8_t連乘加都用__SXTB16()做符號(hào)擴(kuò)展——這就是為Cortex-M4的SIMD指令集量身定制的你把它放到Cortex-M3上編譯鏈接器會(huì)報(bào)undefined reference to __SXTB16。所以CMSIS-5的模塊分層不是靠文檔約定而是靠頭文件路徑、包含關(guān)系、數(shù)據(jù)類型定義這三重物理邊界強(qiáng)行鎖定的。你只要看一眼#include鏈就能判斷這段代碼依賴哪一層、能否跨芯片復(fù)用、是否需要硬件加速支持。2.2 工程治理的隱性成本為什么CMSIS-Pack是項(xiàng)目生命周期的“心臟起搏器”很多工程師以為CMSIS-Pack只是Keil MDK里的一個(gè)“設(shè)備支持包下載按鈕”其實(shí)它是嵌入式項(xiàng)目工程治理的隱形心臟起搏器。舉個(gè)真實(shí)案例去年我參與一個(gè)工業(yè)網(wǎng)關(guān)項(xiàng)目客戶要求支持三種芯片平臺(tái)——NXP i.MX RT1052Cortex-M7、ST STM32H743雙核Cortex-M7、Renesas RA6M3Cortex-M4。初期我們用傳統(tǒng)方式每個(gè)平臺(tái)建一個(gè)Keil工程手動(dòng)復(fù)制startup_stm32h743xx.s、system_stm32h7xx.c、stm32h7xx.h結(jié)果三個(gè)月后客戶臨時(shí)要求增加USB CDC虛擬串口功能我們?cè)赟TM32H7上用HAL庫快速實(shí)現(xiàn)但移植到i.MX RT1052時(shí)發(fā)現(xiàn)NXP的SDK里USB驅(qū)動(dòng)初始化流程完全不同usb_device_init()參數(shù)列表和HAL的MX_USB_DEVICE_Init()根本不兼容。這時(shí)CMSIS-Pack的價(jià)值就爆發(fā)了。我們創(chuàng)建了一個(gè)自定義PackXML描述文件里這樣寫package vendorMyCompany/vendor nameUSB_CDC_Driver/name version1.0.0/version descriptionUnified USB CDC driver for Cortex-M platforms/description components component CclassDevice CgroupUSB conditionSTM32H7 files file categorysource nameDrivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd.c/ file categoryheader nameDrivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_pcd.h/ /files /component component CclassDevice CgroupUSB conditionIMX_RT1052 files file categorysource nameSDK/devices/MIMXRT1052/drivers/fsl_usbhs_driver.c/ file categoryheader nameSDK/devices/MIMXRT1052/drivers/fsl_usbhs_driver.h/ /files /component /components /package然后在應(yīng)用層統(tǒng)一調(diào)用usb_cdc_init()CMSIS-Pack在編譯時(shí)根據(jù)condition字段自動(dòng)選擇對(duì)應(yīng)芯片的源文件。這解決了三個(gè)致命問題第一避免了#ifdef STM32H7滿天飛的條件編譯代碼可讀性提升3倍第二當(dāng)NXP發(fā)布新版SDK時(shí)只需更新Pack里的fsl_usbhs_driver.c所有引用該P(yáng)ack的工程一鍵同步第三FAE給客戶演示時(shí)只需切換Pack版本就能在不同硬件平臺(tái)上展示同一套UI邏輯。CMSIS-Pack的工程治理價(jià)值體現(xiàn)在它把“芯片差異”從代碼層抽離到配置層。你不需要在main.c里寫#if defined(STM32H7)而是讓工具鏈在預(yù)處理階段就完成源文件注入。這直接降低了項(xiàng)目維護(hù)成本據(jù)統(tǒng)計(jì)采用CMSIS-Pack管理的嵌入式項(xiàng)目平均代碼復(fù)用率從32%提升到68%跨平臺(tái)移植時(shí)間從平均14人日縮短到3.5人日。但要注意一個(gè)陷阱Pack的condition字段匹配規(guī)則是字符串精確匹配不是正則表達(dá)式。我曾遇到一個(gè)bugconditionSTM32H743寫成了conditionSTM32H743xx結(jié)果Keil根本找不到匹配組件編譯時(shí)報(bào)undefined reference to usb_cdc_init查了兩天才發(fā)現(xiàn)是XML里多寫了xx。所以工程治理不是靠工具自動(dòng)完成的而是靠開發(fā)者對(duì)CMSIS-Pack機(jī)制的深度理解——它不是錦上添花的功能而是嵌入式項(xiàng)目規(guī)?;桓兜幕A(chǔ)設(shè)施。3. 源碼級(jí)模塊分層解析從core_cm4.h到arm_math.h的17個(gè)關(guān)鍵斷點(diǎn)CMSIS-5的源碼不是拿來就用的黑盒而是需要你像解剖青蛙一樣逐層切開的精密儀器。下面我?guī)阒睋?7個(gè)源碼關(guān)鍵斷點(diǎn)每個(gè)斷點(diǎn)都對(duì)應(yīng)一個(gè)實(shí)際開發(fā)中的“頓悟時(shí)刻”。這些斷點(diǎn)全部來自CMSIS-5.9.0正式版源碼路徑以CMSIS_5/CMSIS/為根。3.1 Core層斷點(diǎn)core_cm4.h里的“硬件憲法”打開Core/Include/core_cm4.h定位到第128行#define __CM4_REV 0x0001U這個(gè)宏定義看似普通實(shí)則是CMSIS-Core的“硬件憲法”起點(diǎn)。__CM4_REV表示Cortex-M4內(nèi)核修訂版ARM官方規(guī)定修訂版0x0001對(duì)應(yīng)ARMv7-M架構(gòu)的初始版本所有后續(xù)補(bǔ)丁如修正IT指令執(zhí)行bug都通過此宏區(qū)分。再往下看第142行#define __FPU_PRESENT 1U這才是真正影響你代碼命運(yùn)的開關(guān)。當(dāng)__FPU_PRESENT為1時(shí)core_cm4.h會(huì)定義__FPU_USED宏并在SCB-CPACR寄存器操作中啟用FPU如果為0則跳過所有FPU相關(guān)配置。我曾調(diào)試一個(gè)音頻處理項(xiàng)目客戶用的是Cortex-M4F帶FPU但編譯器選項(xiàng)里沒勾選“Use FPU”結(jié)果__FPU_PRESENT被定義為0arm_fir_f32()函數(shù)內(nèi)部調(diào)用__VADD_F32()時(shí)觸發(fā)UsageFault——因?yàn)橛布﨔PU已就緒但軟件沒授權(quán)訪問。解決方案不是改代碼而是檢查core_cm4.h里__FPU_PRESENT的值反推編譯器是否正確識(shí)別了芯片特性。再看第215行的SCB_Type結(jié)構(gòu)體定義typedef struct { __IOM uint32_t CPUID; /*! Offset: 0x000 (R/W) CPUID Base Register */ __IOM uint32_t ICSR; /*! Offset: 0x004 (R/W) Interrupt Control and State Register */ __IOM uint32_t VTOR; /*! Offset: 0x008 (R/W) Vector Table Offset Register */ // ... 后續(xù)省略 } SCB_Type;這里的__IOM宏展開為volatile確保編譯器不會(huì)優(yōu)化掉對(duì)SCB寄存器的讀寫。但關(guān)鍵在VTOR成員的注釋Offset: 0x008——這個(gè)偏移量來自ARM ARMArchitecture Reference Manual第B3.2.1節(jié)是硬件強(qiáng)制規(guī)定的。如果你在自定義啟動(dòng)代碼里手動(dòng)設(shè)置SCB-VTOR 0x20000000卻忘了在鏈接腳本里把中斷向量表放在0x20000000地址系統(tǒng)就會(huì)在第一個(gè)中斷到來時(shí)跳轉(zhuǎn)到錯(cuò)誤地址。所以core_cm4.h不是頭文件而是ARM硬件規(guī)范的C語言鏡像每一行代碼都在映射物理世界。3.2 DSP層斷點(diǎn)arm_math.h里的“算法憲法”打開DSP/Include/arm_math.h找到第1892行的arm_fir_instance_f32結(jié)構(gòu)體typedef struct { uint16_t numTaps; /*! number of filter coefficients in the filter. */ float32_t *pState; /*! points to the state variable array. The array is of length numTapsblockSize-1. */ float32_t *pCoeffs; /*! points to the coefficient array. The array is of length numTaps. */ } arm_fir_instance_f32;這個(gè)結(jié)構(gòu)體揭示了CMSIS-DSP的核心設(shè)計(jì)哲學(xué)狀態(tài)分離。pState指向動(dòng)態(tài)分配的緩沖區(qū)pCoeffs指向常量系數(shù)數(shù)組兩者物理隔離。這意味著你可以用同一組濾波器系數(shù)pCoeffs同時(shí)驅(qū)動(dòng)多個(gè)并行FIR實(shí)例不同pState這在多通道音頻處理中至關(guān)重要。再看第2015行的arm_fir_f32()函數(shù)聲明void arm_fir_f32( const arm_fir_instance_f32 * S, const float32_t * pSrc, float32_t * pDst, uint32_t blockSize);注意參數(shù)順序S實(shí)例在前pSrc輸入在后。這是為了支持ARM的push {r4-r7,lr}指令批量保存寄存器讓函數(shù)入口能快速建立棧幀。我做過性能對(duì)比把pSrc放在第一位函數(shù)調(diào)用開銷增加12個(gè)周期因?yàn)榫幾g器要重排寄存器分配。再深入到Source/FilteringFunctions/arm_fir_f32.c第127行sum ((q31_t) x0 * c0) ((q31_t) x1 * c1) ((q31_t) x2 * c2) ((q31_t) x3 * c3);這里用q31_t32位定點(diǎn)數(shù)做中間計(jì)算而不是直接float32_t相乘是為了利用Cortex-M4的SMULBB指令做飽和乘法防止中間結(jié)果溢出。如果你把a(bǔ)rm_fir_f32()換成arm_fir_fast_f32()源碼會(huì)切換到__SIMD32內(nèi)聯(lián)匯編用VMLA.F32指令一次完成4個(gè)乘加——這就是CMSIS-DSP“快慢版本”的本質(zhì)慢版用C模擬快版用硬件指令直驅(qū)。所以arm_math.h不是算法庫而是Cortex-M系列硬件能力的API化表達(dá)每一個(gè)函數(shù)簽名、每一個(gè)結(jié)構(gòu)體成員都在告訴你“這塊芯片能做什么、不能做什么”。3.3 NN層斷點(diǎn)arm_nnfunctions.h里的“AI憲法”打開NN/Include/arm_nnfunctions.h聚焦第387行的arm_convolve_s8()函數(shù)arm_status arm_convolve_s8( const cmsis_nn_context *ctx, const cmsis_nn_conv_params *conv_params, const cmsis_nn_per_channel_quant_params *quant_params, const cmsis_nn_dims *input_dims, const int8_t *input_data, const cmsis_nn_dims *filter_dims, const int8_t *filter_data, const cmsis_nn_dims *bias_dims, const int32_t *bias_data, const cmsis_nn_dims *output_dims, int8_t *output_data);這個(gè)函數(shù)簽名長(zhǎng)達(dá)11個(gè)參數(shù)遠(yuǎn)超常規(guī)C函數(shù)原因在于它必須攜帶完整的量化信息。conv_params結(jié)構(gòu)體里有input_offset和output_offset用于補(bǔ)償8位整數(shù)的零點(diǎn)偏移quant_params里有multiplier和shift用于還原浮點(diǎn)精度。這說明CMSIS-NN不是“把TensorFlow模型轉(zhuǎn)成C代碼”那么簡(jiǎn)單而是把量化推理的數(shù)學(xué)約束全部編碼進(jìn)API。再看Source/Convolution/convolve_s8.c第241行acc_0 __SXTB16(*pIn); // Sign extend two 8-bit values to two 16-bit values__SXTB16()是Cortex-M4的專用指令把內(nèi)存里連續(xù)的兩個(gè)int8_t擴(kuò)展成int16_t為后續(xù)__SMLAD()做準(zhǔn)備。如果你在Cortex-M3上編譯這段代碼鏈接器會(huì)報(bào)錯(cuò)因?yàn)镸3沒有__SXTB16指令。所以CMSIS-NN的“憲法”是算法必須與硬件指令集嚴(yán)格綁定。它不提供通用C實(shí)現(xiàn)只提供針對(duì)特定內(nèi)核優(yōu)化的匯編。這也是為什么CMSIS-NN支持Cortex-M55帶Helium SIMD卻不支持Cortex-M0——不是ARM不想做而是M0的指令集根本無法高效執(zhí)行卷積運(yùn)算。因此當(dāng)你在項(xiàng)目選型時(shí)看到“支持CMSIS-NN”一定要確認(rèn)芯片內(nèi)核型號(hào)否則拿到SDK也跑不動(dòng)模型。4. 嵌入式項(xiàng)目選型落地指南從芯片手冊(cè)到量產(chǎn)固件的六步驗(yàn)證法CMSIS-5不是選型終點(diǎn)而是選型驗(yàn)證的起點(diǎn)。我總結(jié)了一套六步驗(yàn)證法每一步都對(duì)應(yīng)一個(gè)真實(shí)踩坑場(chǎng)景幫你避開90%的選型雷區(qū)。4.1 第一步核對(duì)CMSIS-Core版本與芯片TRM的修訂一致性拿到一款新芯片比如NXP i.MX RT1170第一步不是跑Demo而是打開CMSIS-5源碼包里的Device/NXP/i.MX_RT1170/目錄找到system_mimxrt1170.c搜索__CM7_REV宏。同時(shí)去NXP官網(wǎng)下載《i.MX RT1170 Reference Manual》翻到第2章“Cortex-M7 Core”找到“Revision History”表格。我的經(jīng)驗(yàn)是如果CMSIS包里的__CM7_REV是0x0002而TRM里寫明“Rev 2 fixes cache coherency issue”那你就必須確認(rèn)你的應(yīng)用是否涉及多核Cache一致性——如果是就必須用CMSIS-5.9.0及以上版本因?yàn)?.8.0的core_cm7.h里SCB-ICTR寄存器操作有bug。我曾在一個(gè)汽車電子項(xiàng)目里栽過跟頭CMSIS包用的是5.7.0__CM7_REV為0x0001但芯片實(shí)際是Rev 2結(jié)果在雙核啟動(dòng)時(shí)Core1的Cache一直無法同步Core0的DMA緩沖區(qū)花了三周才定位到CMSIS版本不匹配。所以這一步驗(yàn)證不是走形式而是用CMSIS-Core作為“硬件事實(shí)”的校驗(yàn)器。4.2 第二步驗(yàn)證CMSIS-DSP函數(shù)在目標(biāo)芯片上的指令集兼容性假設(shè)你要在STM32U575Cortex-M33上跑FFT先查CMSIS-DSP文檔確認(rèn)arm_cfft_radix4_f32()函數(shù)支持M33。但別急著寫代碼打開DSP/Source/TransformFunctions/arm_cfft_radix4_f32.c找到第156行#if defined(ARM_MATH_M33) // M33-specific optimized code using MVE instructions #else // Generic C implementation #endif這里的關(guān)鍵是ARM_MATH_M33宏。它不是CMSIS自動(dòng)定義的而是由編譯器命令行傳入的。在Keil MDK里你必須在Options for Target → C/C → Define里添加ARM_MATH_M33在GCC里要加-DARM_MATH_M33。如果漏了這一步函數(shù)會(huì)退化到C實(shí)現(xiàn)性能下降5倍。我測(cè)試過在STM32U575上開啟MVE優(yōu)化的arm_cfft_radix4_f32()處理1024點(diǎn)FFT耗時(shí)182μs關(guān)閉后變成940μs。所以第二步驗(yàn)證的本質(zhì)是確認(rèn)你的構(gòu)建系統(tǒng)是否正確傳遞了芯片特性宏。這比函數(shù)是否存在更重要。4.3 第三步用CMSIS-Pack驗(yàn)證工具鏈對(duì)芯片外設(shè)的識(shí)別精度新建一個(gè)Keil工程Target選項(xiàng)里選擇“Generic ARM Processor”然后點(diǎn)擊“Manage Run-Time Environment”在CMSIS-Pack Manager里搜索你的芯片型號(hào)如“STM32H743”。如果Pack列表里顯示“STM32H743VIHx”但你的實(shí)物是“STM32H743VITx”注意最后一位字母H代表-40~85℃工業(yè)級(jí)T代表-40~125℃汽車級(jí)它們的Flash擦除時(shí)間、VDD電壓范圍都不同。CMSIS-Pack會(huì)為不同后綴提供不同的device.xml配置比如VITx的memory段里region nameFLASH start0x08000000 size0x00200000/而VIHx可能是size0x00100000。如果你選錯(cuò)了Pack鏈接腳本會(huì)把代碼塞進(jìn)不存在的Flash區(qū)域燒錄后MCU直接變磚。所以第三步驗(yàn)證不是選型號(hào)而是用Pack的XML描述反向校驗(yàn)芯片絲印信息。4.4 第四步交叉驗(yàn)證CMSIS-Driver與芯片廠商SDK的API語義一致性以SPI驅(qū)動(dòng)為例CMSIS-Driver定義了ARM_DRIVER_SPI結(jié)構(gòu)體其中Send()函數(shù)原型是int32_t Send(const void *data, uint32_t num);而ST的HAL庫里HAL_SPI_Transmit()是HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);表面看都是發(fā)數(shù)據(jù)但語義差異巨大CMSIS-Driver的Send()是非阻塞的調(diào)用后立即返回靠GetStatus()輪詢完成HAL的Transmit()是阻塞的直到傳輸結(jié)束或超時(shí)。如果你在CMSIS-Driver封裝層里直接調(diào)用HAL函數(shù)又沒處理超時(shí)就會(huì)導(dǎo)致Send()永遠(yuǎn)不返回。我見過一個(gè)項(xiàng)目用CMSIS-Driver包裝HAL結(jié)果在高負(fù)載下SPI通信卡死根源就是Send()函數(shù)內(nèi)部用了阻塞式HAL調(diào)用違反了CMSIS-Driver的異步契約。所以第四步驗(yàn)證必須寫一個(gè)最小測(cè)試用例調(diào)用Send()后立刻調(diào)用GetStatus()確認(rèn)status.tx_busy為1幾毫秒后再查變?yōu)?——這才是真正的CMSIS-Driver兼容。4.5 第五步壓力測(cè)試CMSIS-RTOS v2的上下文切換確定性CMSIS-RTOS v2承諾“確定性調(diào)度”但實(shí)際取決于底層RTOS實(shí)現(xiàn)。以FreeRTOS為例osThreadNew()創(chuàng)建線程后osKernelStart()啟動(dòng)調(diào)度器。但關(guān)鍵在osThreadFlagsWait()函數(shù)CMSIS-RTOS v2規(guī)定它必須支持osFlagsNoClear標(biāo)志即等待后不清除標(biāo)志位。FreeRTOS的xTaskNotifyWait()默認(rèn)是清除的要實(shí)現(xiàn)osFlagsNoClear必須用ulTaskNotifyTake(pdTRUE, 0)配合xTaskNotify()手動(dòng)管理。我做過測(cè)試在Cortex-M4F上開啟FPU的線程切換耗時(shí)4.2μs關(guān)閉FPU是2.8μs但如果線程里用了printf()由于_write()函數(shù)內(nèi)部有臨界區(qū)切換時(shí)間會(huì)飆升到15μs以上。所以第五步驗(yàn)證不是跑Hello World而是用邏輯分析儀抓取PendSV_Handler入口到vPortSVCHandler出口的時(shí)間差確認(rèn)在最壞情況下FPU上下文中斷嵌套仍滿足你的實(shí)時(shí)性要求比如電機(jī)控制要求5μs。4.6 第六步量產(chǎn)固件的CMSIS版本鎖定與供應(yīng)鏈審計(jì)最后一步最容易被忽視在BOMBill of Materials里CMSIS-5不是一個(gè)“軟件”而是硬件供應(yīng)鏈的一部分。你應(yīng)該在采購協(xié)議里明確要求“供應(yīng)商必須提供所用CMSIS-5版本的完整源碼包及MD5校驗(yàn)值且該版本需通過ARM官方認(rèn)證”。因?yàn)镃MSIS包里可能包含芯片廠商的私有補(bǔ)丁比如某國(guó)產(chǎn)MCU的CMSIS包里system_gd32f4xx.c里SystemCoreClockUpdate()函數(shù)修正了PLL倍頻計(jì)算誤差這個(gè)補(bǔ)丁不會(huì)出現(xiàn)在ARM官方CMSIS-5倉庫里。如果供應(yīng)商偷偷升級(jí)CMSIS版本你的固件可能在量產(chǎn)時(shí)出現(xiàn)時(shí)鐘偏差。我服務(wù)過一家消費(fèi)電子公司他們用的GD32F450 CMSIS包是v5.6.0但代工廠擅自升級(jí)到v5.8.0結(jié)果SystemCoreClock計(jì)算錯(cuò)誤USB通信速率偏差12%退貨30萬臺(tái)。所以第六步驗(yàn)證是把CMSIS-5當(dāng)作元器件來管理它的版本號(hào)、校驗(yàn)值、補(bǔ)丁清單必須和MCU芯片一起進(jìn)入供應(yīng)鏈審計(jì)體系。5. 常見問題與排查技巧實(shí)錄來自13年一線調(diào)試的21個(gè)血淚教訓(xùn)CMSIS-5的問題往往不報(bào)錯(cuò)而是讓系統(tǒng)“看起來正常實(shí)則不可靠”。以下是我在真實(shí)項(xiàng)目中記錄的21個(gè)典型問題及其排查技巧每個(gè)都附帶現(xiàn)場(chǎng)證據(jù)。5.1 “HardFault on first interrupt”NVIC配置與向量表偏移的隱秘戰(zhàn)爭(zhēng)現(xiàn)象Keil MDK編譯無警告燒錄后LED不閃用Debugger停在HardFault_Handler調(diào)用棧顯示0x00000000。排查打開Debug → System Viewer → NVIC查看ISER[0]Interrupt Set-Enable Register是否為0。如果是說明中斷沒使能如果不是看VTOR寄存器值是否等于你的向量表起始地址比如0x08000000。常見原因是鏈接腳本里__Vectors符號(hào)地址和SCB-VTOR賦值不一致。技巧在main()開頭加SCB-VTOR (uint32_t)__Vectors;并用__attribute__((section(.vectors)))強(qiáng)制向量表放在指定地址比依賴鏈接腳本更可靠。5.2 “arm_fir_f32() returns garbage”FPU上下文未保存的靜默崩潰現(xiàn)象FIR濾波輸出全是0或極大值Debugger里看pState緩沖區(qū)數(shù)據(jù)亂碼。排查在arm_fir_f32()入口處設(shè)斷點(diǎn)用View → Registers查看FPSCR寄存器如果bit 4 (DX)為0說明FPU未啟用如果bit 31 (QC)為1說明有未處理的FPU異常。技巧在SystemInit()里加SCB-CPACR | (3UL 10*2);強(qiáng)制啟用FPU并在RTOS線程創(chuàng)建時(shí)設(shè)置configUSE_TASK_FPU_SUPPORT 1。5.3 “CMSIS-Pack not found for my chip”廠商未提交Pack的自救方案現(xiàn)象Keil里搜不到新發(fā)布的GD32E530但芯片已量產(chǎn)。排查去GigaDevice官網(wǎng)下載GD32E530 SDK解壓后找CMSIS/目錄。技巧手動(dòng)創(chuàng)建Pack用packgen.exe工具把SDK里的Device/GD32E530/目錄打包XML里vendorGigaDevice/vendornameGD32E530/name然后Keil里File → Import Pack導(dǎo)入。5.4 “osThreadNew() fails with osErrorResource”RTOS堆內(nèi)存不足的偽裝現(xiàn)象創(chuàng)建第5個(gè)線程失敗但osKernelGetInfo()顯示total_heap_size還有2KB空閑。排查CMSIS-RTOS v2的osThreadNew()需要額外內(nèi)存存放線程控制塊TCBFreeRTOS的TCB大小是sizeof(StaticTask_t) stack_size。技巧用uxTaskGetStackHighWaterMark(NULL)檢查每個(gè)線程的棧水位把configTOTAL_HEAP_SIZE從4KB調(diào)到8KB問題解決。5.5 “USB CDC not enumerating”CMSIS-Driver與HAL時(shí)序沖突現(xiàn)象USB插電腦沒反應(yīng)Host端看不到設(shè)備。排查CMSIS-Driver的ARM_DRIVER_USB_DEVICE::Initialize()會(huì)調(diào)用USBD_Init()但HAL的MX_USB_DEVICE_Init()也會(huì)調(diào)用。技巧在usbd_conf.c里注釋掉HAL_PCD_MspInit()讓CMSIS-Driver接管底層初始化避免雙重初始化導(dǎo)致PHY配置錯(cuò)亂。5.6 “arm_convolve_s8() output all zeros”量化參數(shù)未初始化的陷阱現(xiàn)象CNN推理結(jié)果全0Debugger里看output_data緩沖區(qū)確實(shí)是0。排查arm_convolve_s8()要求conv_params.input_offset必須設(shè)置為訓(xùn)練時(shí)的輸入零點(diǎn)偏移。技巧用TensorFlow Lite Micro導(dǎo)出模型時(shí)勾選“Quantize with integer only”生成的model_data.h里有input_offset常量直接賦值給conv_params。5.7 “Debug session disconnects randomly”SWD引腳被CMSIS-Driver復(fù)用現(xiàn)象Debugger連著連著就斷開重新燒錄又正常。排查CMSIS-Driver的ARM_DRIVER_GPIO::Initialize()可能把SWDIO/SWCLK引腳配置為GPIO模式。技巧在system_xxx.c里SystemInit()末尾加__HAL_RCC_SYSCFG_CLK_ENABLE(); SYSCFG-MEMRMP 0;強(qiáng)制禁用內(nèi)存重映射保留SWD引腳功能。5.8 “printf() hangs in FreeRTOS”_write()函數(shù)未適配RTOS現(xiàn)象串口打印一句就卡死。排查CMSIS-RTOS v2規(guī)定_write()必須是非阻塞的但標(biāo)準(zhǔn)libc的_write()是阻塞的。**技巧
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲无码99| 日本幼女18+| 久久精品一区二区一8| 天天搞在线综合网| 亚洲第一页欧美| 校园春色五月天| 国产日韩区| 天天日少妇逼AV| 精品9区| 99热在线播放| 开心婷婷五月| 久久夜夜| 伊人久久久日韩一区| JIZZJIZZ亚洲女人被躁| 亚殴在线| 熟女精品va中文字幕| 久久精品72| 国产精品视频在线观看| 特污免视频| 啊啊啊啊啊啊好多水| 丰满美女一级毛片在线播放| 天天看少妇| 一区二区不卡视| 啪啪91| 久久精品无码一区二区三区| 欧美少妇一区二区三区| 欧美午夜一区二区三区| 国内一级精品| 欧美日韩国产传媒在线精品| 91精品久久久| 92大香蕉| 国产午夜福利专区综合| 久久熟女精品不卡一区| 日韩99神马视频片| 色综合99| 亚洲第一免费视频| 超碰欧美| 精品少妇99| 国产激情综合五月久久| 国产不良强奸视频免费看| 亚洲熟久久| 操一区| 国产极品精品美女视频| 另类图片综合| 无码人妻毛片丰满熟妇精品区| 午夜天堂啪啪| 特级丰满少妇一级AAAA爱毛片| 91老司机视频| 啊啊啊啊啊好舒服视频| 不卡av在线中文字幕| 欧美黑人精品在线播放| 91亚州欧美| 91精品女厕偷拍视频| 亚洲综合影视| 中文字幕日韩人妻视频一区二区三区 | 亚洲精品成人动漫在线| 99超碰网| 操逼精品视频| 婷婷五月天激情网| 免费公开人人操| 久久久久久久| 亚洲国内精品成人不卡| 日本成人电影资源网| 日韩欧美蜜桃精品久久中文字幕久久| 后入 亚洲 美女 射| 韩国成人精品久久久免费看| 亚洲色图91| 中文字幕超碰CAO| 人人操人人摸人 | 久久蜜色情在线视频xxx免费观看| 亚一综合久久久久久久久久| 84YTCOM性无码| chaopen97久久| 大香蕉碰碰| 无遮挡一级毛片视频免费的| 亚洲欧美清纯| 亚洲国产中文字幕| 九九久久99| 五月丁香久久| 美女一区二区国产精品| 蜜臀AV秘一区翔田千里| 久久三区四区| 老司机福利社视频在线观看| 亚州 综合 色图| 91在线|亚| 亚洲 自拍偷拍 欧美| 欧美天天射| 91熟女视频网| 91色香| 九九九成人| 91亚洲最新在线| 国产AV中文| 青娱乐91| 国产超碰AV在线精品| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 国产精品电影| 免费精品99| 人妻精品视频一区二区| 婷婷五月天影院| 久久9久9久99久9久9| 久久久久性熟视频| 成人A片男人的天堂| 精品网站9999| 亚洲人成网www| 亚洲熟女中文字幕在线| 插穴性爱视频在线观看| 国产人伦a片信息免费片| 午夜国产乱伦视频| 99少妇精品视频| 久久综合日韩亚洲欧美| 欧美一区二区三区黄色影视| 插B在线观看| 日日操夜夜操天天操免费观看麻豆| 久艹日日日| 日韩中文字幕国产| 思思热影视| 国产精品免费日韩| 五月综合久久| 丰满搜索结果 -第18页- 久久高清无码 | 国产日韩精品一区二区三区| 97超碰在线资源网站| 99在线观看视频在线高清| 无码人妻一区二区三区色欲aⅴ | 精品然女一区二区| 插插综合网天天影视网| 日韩亚洲欧美中文字幕| 2017人人操,人人摸| 国产一区二区三区导航| 国产人妻精品久久久一区二区三区 | 婷婷六月色| 精吧天堂| 久久无码电影| 欧美人人天天网| 中文字幕乱码在线| 3p国产欧美99热| 96国产污污污丝袜| 国产精品在线免费| 欧美成人AⅤ大片在线观看| 校园春色 男人天堂| 亚洲精品一卡二卡三卡福利视频网站| 午夜毛片亚洲精品片国产久久久| 亚洲av无线观看| 亚洲AV乱码专区国产噜噜亚洲| 暴力av在线| 国产精品人妻熟女aⅴ| 国产剧情AV不卡在线观看| 久久久爆乳翘臀一线天伦理视频| 欧美,亚洲,日韩,v,天堂,手机在线观看 | Blackedraw视频一区二区| 大香蕉免费中文| 啊啊啊 在线| 亚洲性爱电影| 啊啊啊啊啊啊好湿好爽视频| 999久久久国产精品| 亚洲精品无码久久AV| 色好看av| 手机在线视频国内精品| 精品人妻视频一区二区在线播放 | 欧美性爱一区| 久久久久亚洲?V片无码V| 成人日韩中文字幕| 国产精品一区av在线| 久神马| 三级AV入口| 嗯嗯啊啊好大好爽| 亚洲欧美日韩制服另类| 欧美狠狠操| 色色色网站| 麻豆成人影音在线| 亚州色图狠狠干| 黄色片A级一区二区三区| 性色avv| 91伊人| 亚洲人在线| 国产无码三级视频在线观看| 久久久久久久久久久六六| 性videos欧美熟妇hdx| 欧美五区| 九热视频| 岛国视频免费在线观看| 亚洲黄色| 丁香婷婷激情五月天无毒不卡| 亚洲精品九九九| 自拍二页| 草草影院在线视频| 欧美激情内射| 99re9这里只有精品| 国产aⅴ无码片毛片一级网站| 亚洲色图日韩丝袜制服一区二区五月在线 | 78精品在线| 欧美综合色站| 亚洲一区二区麻豆影院| 人妻81p| 97网色| 亚洲色图欧美色图制服诱惑| 色欲日韩欧美在线一区| 亚洲天堂五月天国产| 欧美日韩亚洲少妇寂寞影院正在播放 | 综合熟妇一区二区三区| 蜜色网色哟哟| 久久99久久99精品免视看婷婷| 操逼片国产| 中文乱码字字幕在线第5页| 97超碰中文字幕| 打av高清| 伊人久久国产免费观看视频| 亚洲 中文 女同| 色嗨嗨在线| 久操com| 人人贴人人摸| 乱伦熟女论坛| 免费AV中文网在线观看| 欧美成人免费在线观看| 九九九九亚洲| 中日韩久久久免费看| 欧美亚洲美少妇一区二区| 都市激情人妻一区二区青青操视频| 无码免费精品高清| 91亚洲色人| 日韩欧美女求操每天更新| 青青草精品| 淫骚熟女一区二区三区| 91老熟女老女人国产老太| 熟女中出视频| 久草免费福利在线播放| 嗯嗯啊好爽| 色综合加勒比| 夜夜天天噜狠狠爱2021| 亚洲偷拍自拍在线视频| 2020视频1区2区3区| av橘色网站| 大屁股熟女一区二区三区| 精品丰满熟妇人妻一区| 大香蕉欧美| 女同女同恋久久级三级| 精品免费视频国产一区| 久久久精品中文字幕爱豆| 国产av波波国产精品| 每日更新AV| 欧美久久九九| 91久久久视| 神马久久啊啊| 日韩欧美~中文字| 久久九九97| 国产精品探花色| 国产色呦呦| 美国美女AV在线| 综合日韩激情另类图片| 精品一区二区三区丰满熟女-亚洲欧美一区| 欧美高潮| 九九九九热| 中日韩熟女| 欧美日韩丝袜| www久久精品| 亲子敌伦对白在线播放| 亚洲国产精品无码AV在线| 人妻久久久| 久草精品视频| 看大黄色大片原件| 日韩欧美中文| 神马久久久久眼| 美女丝袜激情小说| 狠狠操官网| 天天干天天做| 亚洲97资源| 日韩在线一区高清在线| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 日日夜夜草草草| 97久久久| 亚洲人精品久久久喷水| 国产精品久久久久久久免牛肉蒲团| 色悠久| 性色av蜜臀av色欲aV| 人妻91少妇| 97超碰中文在线| 综合色播| 精爱久久| 亚洲欧美高清无码| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 91狠狠狠| 天天干天天插| 久久这里只有精品9| 人妻天堂综合网| 夜夜欧美| 日韩av色图综合| 大学生口爆吞精| 久久人人爽爽爽人久久久| 精品欧美不卡在线播放| 欧美中字不卡| 少妇干B| 媚薬在线视频麻豆| 色香色欲天天综合网天天来吧| 国产动漫操逼视频| 亚洲牲交| 艳尻美人妻| 欧美精品99久久久**| 狠色婷婷久久一区二区三区_| 全免费a敌肛交毛片免费| 欧美黄色片在线播放| 超踫中文字幕| 久久久久久久伊人精品| 亚洲偷91色| 免费一级视频特黄色大片| 久久同城AV| 日韩不卡a级视频专区| 91精品人| 久久激情四射婷婷丁香五月天| 日韩性爱再线视频| 99热伊人| 99re99视频在线免费观看| 欧美日韩丝袜| 玖玖玖玖精品国产剧情| 伊人影院日本| 春色综合网| 粉嫩av一区二区三区四季| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 日本日逼高清| 午夜在线播放| 欧美在线视频观看一二三四区高清| 欧美色道啊| 日韩在线视频1234| 婷婷五月色| 欧美黑人精品在线播放| 精品日韩人妻视频| 亚洲美女AV无码| julia国产在线 | 精品人妻一区二区三区四区| 欧美偷| 免费人人搞97| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 久草在线| 91人妻人人澡人人爽人人精品| 97精品人妻一二三四| 强奸熟女一区二区三区 | 日韩国产乱子伦App| 8x福利精品第一福利视频导航| 永久电影三级在线观看| 天天欧美| 亚洲综合电影| 精品人妻一区二区三区四区不卡在| 丝袜足交视频| 欧美精品宗合| 无马一区二区| 啊啊啊啊啊啊好多水| 中日韩久久久免费看| 青女偷拍网| 亚洲精品九九九| 人妻少妇久久中文字幕一区二区 麻豆| 风月影院男女十八禁| www.高清无码诱惑一区.com| 日本在线一二| 欧美日韩人人精品| 啊啊啊啊啊舒服| 欧美1727免费观看视频| 天天添天天干电影| 老师充足的奶水小说| 第45页一区二区| 欧美第二页午夜| 97在线青| 鸥美极品| 欧美gv在线观看| ,成人免费啪啪视频| 久久无码电影| www..com操老师| 亚洲男人的天堂亚洲| 日本天天吊| 人人弄人人摸| 日韩欧美大力操| 日韩亚洲中文字幕在线| 牛牛aV| 亚洲综合影片| 久久黄人人爽视频| 盗摄女人妻在线| 啊啊啊 在线观看| 国产丝袜高跟美女av免费观看| 欧美劲爆第一页| 草草影院最新网址| 中文字幕加勒比海高清无码免费视频| 欧美日韩精品久久久久东北老熟妇| 欧美亚州综合网图片| 免费αV在线视频| 国产精品自在线发布| 婷婷久久综合| 欧美人妻一区二区| 国产人伦a片信息免费片| 无码自拍SM| 久久精品视频在线观看| 91在线免费精品视频| 国产 日韩 另类 视频一区爱| 91女人的网站| 欧美欧美啪啪视频| 色女综合| 九九亚洲| 日韩欧美女优电影| 天天日天天干少妇日| 色官网在线| 夜夜骑操视频| 精品久久人妻成人网| 国产亚洲禁久一区二区| 91黑丝在线| 999热日韩精品| 日韩丨制服丨中文|在线| 加勒比综合九九99视频在线播放| 操逼999| 欧美日韩人人精品| 天堂v无码免费视频| 久热一区二区| 97欧美性爱| 一级免费啪啪片| 欧美最婬乱婬爆婬性视频| 青青国产在线拍揄自揄拍| 少好三P| av网站国产主播在线| 日本女优在线视频福利| 无码视频黄色网战| 宅男91视频在线播放| 国产精品国产| 高清国产无码av| 精品一区二区成人| 亚洲av夫妻操穴网| 中文字幕第23区| 国产热RE99久久6国产精品首| 国产精品久久9| 97超碰资源网| 大香蕉一级黄色片久久| 女人高潮抽搐喷水视频网站| 色大香蕉97N| 麻豆av一区二区| 日韩卡一卡二卡三在线| 按摩中文字幕| 亚洲激情久久久伊人综合| 在线综合 亚洲 欧美中文字幕| 五月天婷婷基地| 黄呦呦在线| 日韩情色一区二区| 91一起操| 精人妻无码一区二区三区伊人直播| 三男一女不戴套的A片| 天天做天天爱天天爽| 亚洲日韩欧美一区二区| 国产丝袜欧美在线视频| 亚洲图片 91| 9久久久久久| 国语对白在线播放视频| 日韩啪啪啪视频| 97超碰超碰| 日本超碰在线国产一区| 天天干人妻视频| 欧美人妻久久精品二区三区 | 天美传媒婬乱| 男人的天堂亚洲| 97人人夜| 大香蕉手机视频| 天天久久久久久| 成人乱码一区二区三少妇| 高清肉丝中文无码| 日韩熟女三十乱伦| 打av高清| 成人无遮挡毛片免费看| 日韩AV色图| 秋霞网无码| 久久免费中文字幕在线观看| 女人综合网| 久久国产三区| 97色亚洲| 国产suv精品一区二区四区999 | 大香久久| 97午夜剧场日韩| 看全色黄大色大片免费视频| 欧美少妇大量自拍视频在线观看| 亚洲高清视频在线免费观看| 日日夜夜骚| 亚川综合视频| 啊啊啊啊啊啊啊在线| 日本视频一区二区三区| 亚洲图片在线| 超碰99在线| 99热一区二区三区四区| 狠狠躁AV| 人妻一区二区三区视频 | 最新一二三区视频| 中国操逼无码| 91超碰在线播放| 囯产乱伦一区二区三女| 欧美丝袜中文字幕07在线| 日韩精品一区二区三区四虎影视| 超碰97 线线 在现| 日本一区二区三区精品| 在线观看无码三级少妇| 麻豆天美在线喷水AV| 日本熟妇人妻中出视频| 天天爽天天操啊啊啊| 欧美日韩精品久久久久久久久东北老熟妇| 久久这里是精品| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 久久九九精品一区二区| 久久婷婷五月天| 精品天堂| 日本99一区二区| 3p国产色噜噜一区| 97精品视频| 精品一区二区三区四区女| 亚洲AV操| 亚洲天天操| 久日91在线| 国产尤物AV尤物在线观看不卡| 在线观看啊啊啊啊啊| 91人人看| 日韩av在线播放不卡| 超碰人妻97| 青娱乐大香蕉| 91精品啪在线观看国产城中村| 超碰99在线| 亚洲欧洲无码97久久精品| 女人双腿搬开让男人桶| 韩国免费播放一级毛片| WWW美腿丝袜香蕉中文| 四虎AV在线观看| 日韩操逼HD| 国产精品播放| 亚洲AV在线资源| 老鸭窝亚洲毛片| 久久久亚洲高清不打码| 97爱| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 中文字幕丰满子伦无码专区在线视频最新| 天天爽夜夜欢视| 国产伦乱91| 97精品免费视频网站| AV中文字幕剧情1区2区3| 欧美亚洲日韩人妻在线观看| 日韩激情毛片一级久久久| 欧美草草高清日韩视频| 超碰97在线 欧美 国产| 婷婷五月天成人| 成人亚欧免费视频| 国产真乱mangent| 欧美亚洲丝袜人妻制服中文99| 日日黄色三级网站| 婷婷亚洲中文字幕在线| 91日本在线观看| 狠狠中文字幕| 少妇一级无码精品| 久久久久久久唑| 国产精品suv一区| 国产精品麻豆成人AV艾秋| 久久久久免费看少妇A片特黄| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 欧美色图第一页| 午夜噜噜噜| 91男人综合| 韩日精品福利视频一区不卡在线免| 九色 人妻 大香蕉| 99热这里是精品| 特级毛片特黄久久免费看| 在线综合 亚洲 欧美中文字幕| 亚欧色图在线激情| 婷婷人妻激情| 99草精| 久9爱精品| 青青操日韩| 偷拍亚洲视频一区二区三区四区| 日韩欧美麻豆 | 美国aaaaa一级黄片| 免费簧片在线观看| www色日本| 亚洲色综合| 色99色| caopeng97| 超碰97资源中文字幕| 一区,二区,三区网站| 啊啊啊啊在线观看网址| 97丝袜亚洲在线播放| 国产精品久久久久久9999| 加勒比久久av| 久久精品电影在线| 亚洲中文字幕在现观看| 精品网站9999| 久久综合18p| 国产亚洲色婷婷99精品91| 91操人| 国产精品一级特黄aaa大片在线观看| 2019午夜福利视频| 国产乱婷婷精品二区三区| 99久久无色码| 久草男人天堂| 91痴汉| 超碰97人妻在线| 少妇厨房愉情理伦片bd在线观看| 噜噜噜在线视频| 日本在线视频导航| 国产少妇与亚洲av| 色天堂综合| 精品久久久久成人码免| 欧美高清第一页| 国产综合在线视频网站| 乱伦熟女区| 四虎影视在线| 大香蕉色欲AV| 欧美懂色综合网| 免费黄色片。| 婷婷亚洲综合| 亚洲AV不卡在线观看尤物| 亚洲做性| 久热影视| 香蕉综合网| 久久最新视频免费观看| 亚洲人精品久久久| 日本精品中文字幕视频| 天天躁日日躁AAA片李宗瑞| 丰满欧美少妇| 日韩97视频| 搡老女人老91妇女老熟女| 精品一区二区成人| 亚洲最大91网| 久草线上视频免费看| av网站免费看| 成人片在线播放| 青久操| 日夜精品| 秋霞免费AV| 色爱欲亚洲| 夜夜嗨一区二区三区直播内容| 天天狠操| 久久秀这里有精品| 五月天精品| 成人av影院在线观看| 青草视频在线看看看看看看看看看| 欧美色日本| 17c嫩草51久久91嫩草| 中国探花熟女| 亚洲自拍欧美色综合| 亚洲欧美日韩偷拍色图| 久久激情视频| 久久久神马影院| 国产无码高清操逼视频| 91久久国产综合久久| 超碰在线综合97| 国产精品永久免费10000| 婷婷激情五月| 99re99在线视频| 日日操丁香五月天| 日本伦理一区二区| 日夜伊人网| 热九九精品| 久久超碰av在线| 久操凹凸视频| 夜夜国产一区| 国产综合日韩伦理| 久草综合京东| 久草成人| 亚洲欧洲偷拍一区| 大香久久| www.99热| 色97干| 九九综合久久| 欧美日本不卡在线| 国产成人无码久久精品| 老色鬼成人精品视频下载大在线观看| 天天草夜夜草高潮片| 欧美72网页| 日韩成人精品| 二级久久网| 亚洲精品乱码线路中文字幕| 麻豆福利视频导航| 内射老妇BBWX0C0CK| 熟妇视频一区二区三区在线观看| 97综合网| 欧美日韩人人早| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 精品女同一区| 999国产精品999| 丝袜视频网国产90| 9999免费精彩视频| a啊啊啊啊啊啊啊啊一区二区| 色99视频| 天天亚洲| 天天干天天日天天射黄色大片| 国产强奸乱伦无码视频| 殴美日韩m| 欧美日韩性爱电影在线| 欧美不卡在线美女| 日本一级真人黄色性爱视频| 人人爽天天爽| 超碰精品日韩欧美国产| 久久综合女优| 国产三级多多影院2022国产AA一级毛片无码| 在线女人91| 国产精品久久久久久久无码AV| 色999偷自拍拍| 亚欧成人综合影院| 亚洲熟女少妇免费视频| 69精品人人人人| 亚洲欧美首页| 97人人爱人人做人人乐| 天天操天天干一区二区 | 久久亚洲影院一区二区| 最新日本中文字幕| 亚洲AV无码久久精品蜜桃小说| 国产成人精品无码久久| 风间由美日韩欧美久久| 黑操B| 欧美的性爱网站免费| 亭亭在线资源| 五月婷在线| 欧美真人抽搐一进一出gif| 91天天c| 国产女人成人精品视频| 国产在线播放成人免费| 日欧毛片久久| 色色99| 亚洲欧洲av影音| 青青伊人久久| 天天操综合网| 欧美性爱免费短视频| 日韩电影免费网站麻豆视频| 青青草视频久久| 国产精品毛片?v一区二区三区| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | www欧美91| 亚洲瓯美色图| 日本污ww视频网站| 黄色免费网| 四虎影视 亚洲无码| Av色五月| 久久香蕉国产线看观看猫咪av| 七月婷婷综合| 人人澡人人澡人人| 91日日| 婷婷五月天AV| 国产精品人妻熟女aⅴ| 嗯嗯不要视频| 久久骚| 男人的天堂在线2| 日本午夜福利影院| 狠狠色噜噜狠狠狠狠2018| 青青草原伊人网| 九热大香蕉| av九九| 久久一区二区三区四区五区| 情色图区| 一区二区三区黄片免费观看| 日本天天干天天日一区| 中日韩免费看男女操逼大全| 国产av热热色| 欧美精品人妻视频| 91精品国产91久久久久久久久久久久| 97一区二区蜜臀| 1769精品一区二区三区| 超碰在线人妻中文字幕| 欧美色图99| 国产日韩欧美| 日日夜夜骚| 夜夜操二区| 日韩黄色成人性爱| 在线一道啪| 日本国产亚洲一区在线观看| 蜜臀AV午夜精品久| 亚洲综合另类色图| 制服诱惑亚洲一区二区三区在线观看| 久九九九九九九热| 91国产精品在线看| 六十路日本| 欧美性爱十八禁| 性爱免费视频成人| 大香蕉一区二区在线观看.| 久九色| 人妻熟女一区二区在线视频| 九九人妻| 精品综合久久久久久97| 亚洲老司机123专区| 综合亚洲情色| 91精品人妻一区二区三区蜜桃臀| 日本免费中文一区二区三区四区 | 情色AV电影| 日韩无码服务区| 俞拍自拍| 久久综合18p| 亚洲欧美日韩精品久| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 偷拍在线观看视频| 亚洲成a人v欧美综合天堂下载| 精品久久99| 最新制服中文第一页| 色情五月丁香| 91精品人妻一品二品三品| 99熟女| 91亚洲综合在线| 伊人综合色网| a片 xxxx受爽视频| 91欧美偷拍| 午夜超爽| 国产91专区| 五月丁香综合啪啪| 99re99| 色性荡荡荡荡视频| 最新av网站在线观看| 裸体1区| 亚洲最大无码中文字幕网站| 97综合激情| 强奸少妇AV导航网| 国产精品久久久久久久AV大片| 91欧美另类| 亚欧Av| 91色花堂| 欧美在线啊啊啊| 无码高清专| 天天综合网在线91| 久jiu久神马影院| 国产精品盗摄 偷窥盗摄| 激情小说亚洲图片| 这里只有精品视频在线| a片在线播放| 在线观看 99热| 久久婷婷五月| 性饥渴少妇av无码毛片| 丰满人妻一区| 麻豆天美电影一区二区| 1级黄色夫妻对换性交免费看| 亚洲文学偷乱拍啪啪啪啪 | 亚洲精品一区二区精品| 欧亚韩国999| 国产丝袜美女诱惑| 免费精品人妻一区二区三| 在线洲亚线| 日少妇亚洲版| 欧美婷婷五月天| 肏逼视频日本| 蜜臀99久久精品| 日韩精品高清资源在线| 黄片直播三级黄片两女一男| 大学生美女口爆| 天天综合麻豆视频| 禁止观看美女黄| 亚洲综合中文字幕有码| 国产精品点击进入在线影院高清| 熟女91网| 国产AV人人 夜夜人人澡| 91狠狠综合久久久| 一区二区三区高清天码| 人人操人人肉久久精品| 午夜福利在线合集| 中文一区二区婷婷视频| 日本3级一区二区免费| 国产强奸乱伦xd| 好吊色综合| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 日韩人妻一区二区| 夜夜操夜夜高潮夜夜爽国产精品区| 奸色色 男人天堂 天天射| 国产亚洲禁久一区二区| 久久精品 六十路 熟女 欧美| 亚洲少妇综合| 91男人天堂网| 99www.bibizy香蕉资源国产一区二区三区高清 | 天天干干天天干干| av黄图片在线观看| 精品久久97| 加勒比久久av| 亚洲色图 图片| 吉田爱美AV在线| 国内精品999| 丁香五月天激情综合| 国产亚洲日本精品在线| 人人艹亚洲| 久久久一区二区三区三州| 亚洲色婷婷久久久综合日本| 老熟乱一区二区三区四区| 91劲爆| 夜夜爽爽夜夜精品视频| 啊啊啊啊啊好大好舒服想要| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 亚洲丝袜综合| 夜夜高潮夜夜爽夜夜爱爱一区| 色香91| 91男人天堂网| 人妻激情在线视频| 久久夜精品一区二区三区| 国产精品色哟哟| 久久AV无码1区2区3区| 欧美日日夜夜| 丝袜喷水在线| 国产黄色动态精品| 少妇天堂网络| 久久神马影院| 夜精品久无码| 欧美天天综合站| 九9热伊人| 欧美一品道| 亚州精品人妻一二三区| 久久久久久久久久久精| 亚洲欧美校园| 精品九区| 欧美视频一| 97资源视频| 精品亚洲国产成人精品| 亚洲成?V人片在线观看福利| 久草福利在线资源站| 岛国精品视频在线观看| 麻豆国产尤物AV| 99久久无色码| 夜夜国产一区| 乱色老一区二区三区的观看方式| 久草综合网| 亚洲欧美另类小说| 69XX一中文字幕人妻91| 免费黄色片。| 免费毛片在线播放| 欧美一级三级| 亚洲永久永久永久永久一级一级一级精品| 女人妻一区| 亚洲欧洲第二视频在线观看色图| 60秒免费视频| 黄色工厂这里只有精品| 1769成人国产精品视频| 亚洲啪AⅤ永久无码| 国产精品一级片在线看| 日韩成人网址| 国产夜夜操| 啊啊啊啊在线播放| 久久久久久久97| 久久riav中文精品| 色婷婷香蕉| 嗯嗯啊啊用力视频免费| 久久久免费懂色| 精品人妻一区二区三区不卡断| 中文字幕丰满人妻日本| 无码操逼网| 盗摄 精品 另类 一区| 久草新免费| 超碰97久| 国产精品人人爽人人做可爱福利| 爱做久久久久久| 老女人日韩美91| 欧美第一页| 97超碰碰| 日韩AV熟女乱伦| 亚州色站 日韩电影| 日日日日做夜夜夜夜做无码97| 亚洲国产综合图区中文字幕| 亚洲无码?第一页| 九九天堂| 51一区二区三区| 性爱综合一区二区| 91丨九色丨熟女高潮| 日韩精品操少妇| 神马久久午夜| 国产黄色av大片网站| 色女99一级片在线观看| 青青草公开在线免费不卡视频| 精品成人无码| 操狠狠| 亚洲天堂少妇| 欧美另类精品xxxx| 日本青青草在线| 亚洲综合伊人无码久久| 伊人网综合在线视频| 日日日啊啊啊| 美女久久久久久久久久久| 亚洲国产一级精品毛一级精品看免费视频| 国产av白丝| 老熟乱一区二区三区四区| 久久夜黄色无码A级大片| 色女网日韩| 日少妇视频| 免费黄色片子| 风月影院男女十八禁| 日韩精品在线放| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 国产精品福利视频播放| 69超碰综合| 综合网少妇| 国产又大又硬又长又粗| 91天美传媒在线观看| 欧美精品精品一区二区| 亚码激情| 色九久| 色色五月丁香| 亚洲日本大香蕉1| 成人乱码一区二区三少妇| 97色妞| 久久 国产 无码| 久久伊人在线五区| 不卡日本一区二区| 青青草操逼逼视频| 亚洲人妻精品一区二区| 色婷婷色99国产综合精品| 96精品一区| 东亚亚洲无码高清| 色婷婷一区二区三区久久午夜| 丁香六月激情| 日韩不卡网操逼中文字幕日韩| 午夜精品久久久久久久久久蜜桃| 亚洲av热热色| 眼镜人妻101.com| 麻豆一区在线| 一类无码操逼视频| 在线观看午夜婷婷久久久久清性观看| 91精品久久久久五月天精品| 久久久久9999妇女| 无码丰满熟妇一区二区浪潮AV| 97色妞| 思思热影视| 超碰 欧美| 婷婷五月色| 中文字幕三四区| 人人操天天爽| 自拍偷拍亚洲熟女妇人精品| 国产精品视频在线播放| 久久久久久久久成人av解说| 久久久性少妇| 91黑丝在线播放| 人人搞人人插人人操| 综合网久久| 午夜福利在线合集| 超碰97综合网| 98色网| jazzjazz国产精品麻豆| 国产成人主播| 丰满人妻一区二区三区大胸懂色| 美女黄页网站| 婷婷三区| 秋霞久久亚洲精品成人| 久久久精品九| 在线观看AV不卡| 日韩黄片视频试看| 久久中文字幕女同性恋一区| 国产这里只有精品| 国产肏逼网站| 玖玖超碰熟| 猛交交| 亚洲综合另类小说色区亚洲成av人片在www | 天美国产精品| 精品欧美А∨无码黑人大荫蒂| 欧美爱国产综合、| 国产av高清版| 美国一区二区三区视频| 欧美精品激情| 欧美高潮在线| 强奸xx国产| CCYY草草影院地址入口| 国产精品色| 91精品国产综合久久久蜜臀| 先锋色眉乱伦资源| 夜夜躁狠狠躁日日躁av| 97国产天堂岛| 天天爽天天操| 精品国产一区二区三区香蕉欧美| 强乱老妇中文字幕| 5252色欧美在线| 激情专区综合| 国产成人99久久亚洲综合| 国产精品夜夜夜| 亚91亚洲网| 另类天堂| 最好看的中文字幕在线2018| 美女啊啊啊啊啊| 日日嗨AV一区二区夜夜| 91xingse| 欧美啪啪女女| 国产美女裸体秘 永久无遮挡| 九九九九亚洲| 亚州高清色综合| 青青网三级视频| 不卡啪啪视频| 不卡av在线中文字幕| 亚州色综合| 羞答答AV中文字| 国产亚卅97| 久久婷婷国产一区二区色| 天堂8在线新版官网| 国产精品蜜臀久久久久无码AV| 香蕉99秘 一区精品蜜桃臀| 精品乱码在线观看| 97玖玖超碰| 婷婷四五区| 97av在线视频| 爱av免费| 亚洲av综合色| 久久久精品电影| 国产白丝精品在线观看| 国产精品一区二区三区在线| 丰满人妻一区| 久热久操| 欧美白嫩女HD| 亚洲国产剧情少妇激情| 日本 欧美 亚中文字幕| 亚洲五月婷| 动漫爆乳3D奶水一区在线观看 | 成人毛片免费| 欧美色图亚洲色| 综合网欧美在线| 97干97色| 日本Suv精品一区二区| 蜜桃视频啊啊啊啊| 日韩电影天堂视频一区二区| 爱欲AV| 亚洲91亚洲| 亚射在线| 国产SV一线| 久插不卡| 蜜臀99999| 歐美性天天| 青青草乱入乱欲视频在线观看| AV天堂男人的天堂| 78p欧美| 97久久精品国产| 蜜桃在线观看一区二区三区 | 欧美色图天堂在线| 色99视频| 大香蕉碰碰| 久操B网| 色好看av| 亚洲视频,小说| 国产九区| 黄色一区三区| 亚洲 欧美 日本 国内 首页| 0755午夜福利视频| 欧美日韩另类激情图片| 久久久久久性爱免费视频| 久久精品人妻一区| 女人精品内射国产99| 澳门黄片一香蕉视频| 岛国A V在线免费看| 国产高清精品一区二区三区毛片| 人人看人人爰人人操| yellow网站免费观看日韩高清无码| 波多野结衣先锋影音| 人人操人人大香蕉| 五月丁香六月婷| av中文字幕在线熟女| 成人熟女视频一区二区三区| 久久国模av| 亚洲另类色综合网站| 天天干嫩逼网| 韩日色费| 精品一啪| 久久精品人体AV| 91伊人大香蕉| 破处bbq| 老熟女网站| 亚洲精品三区在线观看| www网站黄| 91女网站| wuyechaopeng| 久久久一区二区三区四区五区| 自拍偷拍 日韩欧美| 亚洲av影院在线观看| 亚洲宅男天堂| 久久精品国产99国产精品亚洲| 人妻天天爽夜夜爽2| 欧美综合网在线| 天天弄天天操| 丁香五月偷拍| 欧美日韩一干二干| 91欧| 色操逼网| 天天爱天天韩国日本牛牛牛牛| 抽插爽| 久久久偷拍|