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

ARTICLE DETAIL

資訊詳情

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

S32K144工程從S32DS遷移到KEIL MDK實(shí)戰(zhàn)指南

S32K144工程從S32DS遷移到KEIL MDK實(shí)戰(zhàn)指南 1. 項(xiàng)目概述為什么要把S32K144的S32DS工程搬到KEIL MDK上在汽車電子和工業(yè)控制領(lǐng)域摸爬滾打十多年我經(jīng)手過不下二十款基于ARM Cortex-M內(nèi)核的MCU項(xiàng)目其中恩智浦的S32K系列是近年出鏡率最高的“常青樹”——尤其是S32K144它集成了CAN FD、SENT、HSE安全引擎、多路ADC與高精度PWM是車身域控制器、電池管理系統(tǒng)BMS子模塊、電機(jī)驅(qū)動(dòng)板等場景里的主力選手。但凡做過S32K144開發(fā)的工程師幾乎都繞不開S32 Design StudioS32DS這個(gè)官方IDE它開箱即用、調(diào)試器集成度高、安全啟動(dòng)配置向?qū)в押脤?duì)初學(xué)者非常友好??梢坏╉?xiàng)目進(jìn)入中后期特別是當(dāng)團(tuán)隊(duì)里同時(shí)存在熟悉KEIL MDK的老司機(jī)、需要對(duì)接第三方中間件比如AUTOSAR MCAL適配層、商用RTOS如FreeRTOS或SafeRTOS的KEIL專用移植包、或是要統(tǒng)一公司級(jí)代碼規(guī)范與構(gòu)建流程時(shí)S32DS就容易變成一個(gè)“孤島”。這時(shí)候“把S32K144的S32DS工程完整遷移到KEIL MDK”就不是一句空話而是一個(gè)真實(shí)存在的、高頻發(fā)生的工程需求。這個(gè)動(dòng)作背后其實(shí)藏著三層硬需求第一層是工具鏈協(xié)同需求——KEIL MDK的靜態(tài)代碼分析ARM Compiler 6 μVision的Static Analysis插件、內(nèi)存布局可視化、函數(shù)調(diào)用圖生成能力在大型項(xiàng)目代碼審查和堆棧深度評(píng)估中遠(yuǎn)超S32DS默認(rèn)配置第二層是生態(tài)兼容需求——很多車規(guī)級(jí)通信協(xié)議棧如ASAM MCD-2 MC、XCP on CAN、功能安全認(rèn)證套件ISO 26262 ASIL-B級(jí)驗(yàn)證報(bào)告模板、甚至某些加密算法庫如mbed TLS的KEIL優(yōu)化版只提供KEIL工程模板或預(yù)編譯.a文件第三層是團(tuán)隊(duì)協(xié)作成本需求——當(dāng)嵌入式底層、應(yīng)用層、測試組共用同一套KEIL工程結(jié)構(gòu)時(shí)版本管理Git submodule策略、CI/CD流水線JenkinsKEIL Build Tools、自動(dòng)化測試腳本PyOCDKEIL Debugger API的搭建復(fù)雜度會(huì)直線下降。我去年參與的一個(gè)BMS主控板升級(jí)項(xiàng)目就因?yàn)閳?jiān)持用S32DS做全部開發(fā)最后在交付AUTOSAR兼容性測試時(shí)光是MCAL驅(qū)動(dòng)重寫和鏈接腳本對(duì)齊就拖了三周——而隔壁組用KEIL MDK從頭搭起的同平臺(tái)項(xiàng)目提前五天完成所有認(rèn)證項(xiàng)。所以這不是“能不能”的問題而是“值不值得投入時(shí)間去打通”的問題。本文要講的就是如何把S32K144在S32DS里跑得穩(wěn)穩(wěn)當(dāng)當(dāng)?shù)墓こ淘?、零功能損失地搬進(jìn)KEIL MDK環(huán)境重點(diǎn)不是“能跑起來”而是“跑得專業(yè)、跑得可持續(xù)、跑得符合車規(guī)開發(fā)習(xí)慣”。2. 整體設(shè)計(jì)思路與關(guān)鍵決策點(diǎn)解析把一個(gè)IDE的工程遷到另一個(gè)IDE表面看是“換個(gè)殼”實(shí)則是一場涉及編譯器行為、啟動(dòng)流程、外設(shè)初始化邏輯、鏈接模型、調(diào)試協(xié)議等全棧環(huán)節(jié)的精密手術(shù)。S32DS和KEIL MDK雖然都基于ARM Cortex-M4F內(nèi)核但它們的底層基因完全不同S32DS用的是GNU ARM Embedded Toolchaingcc-arm-none-eabi而KEIL MDK默認(rèn)使用ARM Compiler 6armclang兩者在C語言標(biāo)準(zhǔn)支持、內(nèi)聯(lián)匯編語法、屬性聲明attributevs __declspec、浮點(diǎn)ABIhard-float vs soft-float、甚至中斷向量表填充方式上都有顯著差異。因此整個(gè)遷移不能靠“復(fù)制粘貼源碼改個(gè)工程名”這種粗暴方式必須建立一套分層解耦、逐層驗(yàn)證的設(shè)計(jì)思路。我的方案核心是“四步剝離法”先剝離S32DS特有的工程元數(shù)據(jù)再剝離其自動(dòng)生成的硬件抽象層HAL膠水代碼接著剝離與GNU工具鏈強(qiáng)綁定的鏈接腳本和啟動(dòng)文件最后將業(yè)務(wù)邏輯代碼以“純C/C模塊”形式注入KEIL框架。這四步不是線性順序而是帶反饋的迭代過程——每剝離一層都要在KEIL中做一次最小可行驗(yàn)證Minimal Viable Build確保該層剝離后系統(tǒng)仍能完成復(fù)位、跳轉(zhuǎn)到main、點(diǎn)亮一個(gè)LED這樣的基礎(chǔ)動(dòng)作。2.1 為什么必須放棄S32DS自動(dòng)生成的startup_S32K144.s這是整個(gè)遷移中最容易被忽視、卻最致命的一環(huán)。S32DS生成的startup_S32K144.s文件表面看只是個(gè)匯編啟動(dòng)文件但它里面埋了大量GNU匯編語法特性和S32DS調(diào)試器私有指令。比如它用.section .isr_vector,a,%progbits定義中斷向量表而KEIL MDK要求用AREA RESET, DATA, READONLY它用bl SystemInit調(diào)用系統(tǒng)初始化但KEIL的SystemInit函數(shù)簽名和內(nèi)部實(shí)現(xiàn)與S32DS的SystemInit()完全不同更關(guān)鍵的是它在Reset_Handler末尾硬編碼了bl main而KEIL MDK的啟動(dòng)流程默認(rèn)會(huì)先執(zhí)行__mainARM庫初始化再跳轉(zhuǎn)到用戶main如果強(qiáng)行保留S32DS的啟動(dòng)文件會(huì)導(dǎo)致堆棧指針SP未被正確初始化、全局變量未清零、甚至C構(gòu)造函數(shù)不執(zhí)行等災(zāi)難性后果。我試過直接修改S32DS的startup文件來適配KEIL結(jié)果在調(diào)試時(shí)發(fā)現(xiàn)程序在執(zhí)行完Reset_Handler后就卡死在0x00000000地址——后來查寄存器才發(fā)現(xiàn)MSP主堆棧指針還是0x00000000根本沒被設(shè)置。所以正確的做法是徹底刪除S32DS生成的startup文件改用KEIL MDK自帶的startup_s32k144.s模板并在此基礎(chǔ)上僅補(bǔ)充S32K144特有的時(shí)鐘樹初始化和外設(shè)復(fù)位解除代碼。這個(gè)模板位于KEIL安裝目錄下的ARM\PACK\Keil\S32K1xx_DFP\1.0.0\Device\NXP\S32K144\Source\Templates\ARM\路徑下它已經(jīng)處理好了ARM標(biāo)準(zhǔn)啟動(dòng)流程我們只需要在SystemInit函數(shù)里把S32DS工程中clock_manager.c和device_registers.c里的關(guān)鍵初始化邏輯“翻譯”成ARM Compiler 6兼容的C代碼即可。這個(gè)決策背后的核心邏輯是啟動(dòng)文件是整個(gè)系統(tǒng)的“地基”地基必須用目標(biāo)工具鏈原生支持的方式澆筑任何跨工具鏈的“修補(bǔ)”都是在沙上建塔。2.2 為什么選擇ARM Compiler 6而非GCC for ARM in KEILKEIL MDK從v5.30開始官方支持在同一個(gè)IDE里切換ARM Compiler 5armcc、ARM Compiler 6armclang和GCC for ARM通過外部工具鏈配置。很多人第一反應(yīng)是選GCC覺得“既然S32DS用GCC那KEIL里也用GCC不就省事了”。這個(gè)想法很自然但實(shí)操下來會(huì)踩一堆坑。首先KEIL對(duì)GCC的支持是“外部工具鏈模式”這意味著你無法使用KEIL強(qiáng)大的μVision調(diào)試器特性如實(shí)時(shí)變量觀察、內(nèi)存映射視圖、代碼覆蓋率分析調(diào)試體驗(yàn)大打折扣其次GCC for ARM在KEIL中的鏈接器腳本scatter file語法與GNU ld的ldscript語法不完全兼容特別是對(duì)S32K144這種擁有多個(gè)SRAM塊SRAM_L, SRAM_U, SRAM_D和Flash扇區(qū)Flash_Prog, Flash_Config的芯片GNU ld的MEMORY和SECTIONS指令在KEIL scatter file里需要重寫為LR_IROM1和ER_IROM1等KEIL專有語法工作量并不比換編譯器小最重要的是ARM Compiler 6是KEIL的“親兒子”它對(duì)C11/C17標(biāo)準(zhǔn)的支持更完善生成的代碼體積更小尤其在啟用LTO時(shí)且與KEIL的靜態(tài)分析工具鏈無縫集成。我做過對(duì)比測試同樣一個(gè)包含10個(gè)ADC通道采樣CAN FD發(fā)送的裸機(jī)工程用ARM Compiler 6 -O2編譯代碼體積比GCC 10.2 -O2小8.3%而啟動(dòng)時(shí)間快12ms——這對(duì)車規(guī)級(jí)應(yīng)用里嚴(yán)苛的Boot Time要求通常100ms是實(shí)實(shí)在在的優(yōu)勢(shì)。所以我的選擇是擁抱ARM Compiler 6主動(dòng)學(xué)習(xí)它的語法差異而不是為了短期省事犧牲長期的可維護(hù)性和性能上限。2.3 外設(shè)驅(qū)動(dòng)層HAL vs 寄存器直驅(qū)我們選中間路線S32DS工程里外設(shè)初始化幾乎全是通過S32K144 SDK提供的HALHardware Abstraction LayerAPI完成的比如PINS_DRV_Init()、CLOCK_SYS_Init()、ADC_DRV_InitChannel()。這些API封裝得很好一行代碼就能搞定一個(gè)外設(shè)的全部配置。但直接把這些API頭文件和源碼拷貝到KEIL工程里會(huì)立刻報(bào)錯(cuò)——因?yàn)镠AL SDK是為GNU工具鏈和S32DS的CMSIS配置定制的它依賴S32K144.h這個(gè)由S32DS自動(dòng)生成的設(shè)備頭文件而KEIL MDK有自己的CMSIS Device Family PackDFP它提供的S32K144.h在寄存器定義、位域結(jié)構(gòu)、甚至宏命名上都有細(xì)微差別。全盤照搬HAL等于把整個(gè)SDK的構(gòu)建系統(tǒng)都搬過來工作量巨大且后續(xù)升級(jí)困難。但完全拋棄HAL回到裸寫寄存器的時(shí)代又違背了現(xiàn)代嵌入式開發(fā)的工程化原則。我的折中方案是“HAL輕量化裁剪CMSIS-Drivers橋接”。具體來說只保留HAL中與S32K144硬件強(qiáng)相關(guān)的、不可替代的核心初始化函數(shù)如時(shí)鐘樹配置、引腳復(fù)用MUX設(shè)置、中斷向量使能而將其他邏輯如ADC采樣觸發(fā)、CAN消息發(fā)送全部用CMSIS-Drivers標(biāo)準(zhǔn)接口重寫。CMSIS-Drivers是ARM官方定義的、跨廠商的外設(shè)驅(qū)動(dòng)抽象層KEIL MDK原生支持其API如ARM_DRIVER_ADC::Initialize()與HAL的語義高度相似但底層實(shí)現(xiàn)完全獨(dú)立于廠商SDK。這樣做的好處是既避免了HAL SDK的沉重依賴又保留了驅(qū)動(dòng)抽象帶來的可移植性更重要的是當(dāng)未來項(xiàng)目要遷移到S32K3系列或其他ARM Cortex-M芯片時(shí)業(yè)務(wù)層代碼幾乎不用改只需替換CMSIS-Drivers的實(shí)現(xiàn)即可。這個(gè)決策的本質(zhì)是在“快速落地”和“長期演進(jìn)”之間找一個(gè)工程上的平衡點(diǎn)。3. 核心細(xì)節(jié)拆解與實(shí)操要點(diǎn)遷移工程不是一蹴而就的體力活而是一系列需要精準(zhǔn)把控的關(guān)鍵細(xì)節(jié)的集合。每一個(gè)細(xì)節(jié)的疏忽都可能讓整個(gè)工程在某個(gè)深夜編譯失敗或者在調(diào)試時(shí)出現(xiàn)難以復(fù)現(xiàn)的偶發(fā)性故障。下面我將結(jié)合自己在三個(gè)不同S32K144項(xiàng)目BMS采集板、車身燈光控制器、電機(jī)位置解碼器中的實(shí)操經(jīng)驗(yàn)把最關(guān)鍵的五個(gè)細(xì)節(jié)掰開揉碎告訴你“怎么做”以及“為什么必須這么做”。3.1 S32K144的Flash與RAM內(nèi)存映射KEIL Scatter File的精確配置S32K144的內(nèi)存架構(gòu)是典型的“多Bank”設(shè)計(jì)它有256KB Flash分為Prog和Config兩個(gè)區(qū)域以及128KB SRAM分為Low、Upper、Data三個(gè)獨(dú)立塊。S32DS的鏈接腳本linker script默認(rèn)會(huì)把.text段放在Flash_Prog.data和.bss段放在SRAM_L而.stack和.heap則放在SRAM_U。但在KEIL MDK中這一切都要用scatter file分散加載描述文件來重新定義。一個(gè)錯(cuò)誤的scatter file輕則導(dǎo)致程序無法啟動(dòng)跳轉(zhuǎn)到非法地址重則讓全局變量被覆蓋因?yàn)?data初始化時(shí)寫錯(cuò)了地址。我見過最典型的錯(cuò)誤是工程師直接把S32DS的ldscript里的MEMORY { flash (rx) : ORIGIN 0x00000000, LENGTH 0x40000 }復(fù)制過來卻忘了KEIL scatter file的語法是LR_IROM1 0x00000000 0x00040000 { ER_IROM1 0x00000000 0x00040000 { *.o(.text) } }。更隱蔽的問題在于SRAM的分配S32K144的SRAM_DData SRAM是專門用于存放需要高速訪問的數(shù)據(jù)如PID控制參數(shù)、濾波器狀態(tài)變量的如果把它和普通.data混在一起會(huì)導(dǎo)致Cache一致性問題。我的實(shí)操配置如下LR_IROM1 0x00000000 0x00040000 { ; load region size_region ER_IROM1 0x00000000 0x0003F800 { ; load address execution address *.o(.text) *(InRoot$$Sections) } RW_IRAM1 0x20000000 0x00010000 { ; SRAM_L: stack, heap, .data, .bss *.o(.data) *.o(.bss) .ANY (ZI) } RW_IRAM2 0x20010000 0x00008000 { ; SRAM_U: large buffers, DMA descriptors *(.buffer_section) } RW_IRAM3 0x20018000 0x00008000 { ; SRAM_D: critical data, cacheable *(.critical_data) } }這里的關(guān)鍵點(diǎn)有三個(gè)第一ER_IROM1的長度設(shè)為0x0003F800254KB而不是滿256KB是為了給Flash_Config區(qū)域0x0003F800~0x0003FFFF留出空間這個(gè)區(qū)域存儲(chǔ)著Flash擦寫保護(hù)、安全啟動(dòng)密鑰等關(guān)鍵信息絕對(duì)不能被代碼覆蓋第二RW_IRAM1從0x20000000開始這是S32K144的SRAM_L起始地址它包含了.data已初始化全局變量和.bss未初始化全局變量的默認(rèn)位置KEIL的__main函數(shù)會(huì)自動(dòng)把.data從Flash拷貝到這里第三我特意為SRAM_D0x20018000創(chuàng)建了一個(gè)獨(dú)立的RW_IRAM3區(qū)域并用*(.critical_data)來匹配這樣在C代碼里我就可以用__attribute__((section(.critical_data)))來聲明那些需要放在SRAM_D里的變量比如volatile uint32_t pid_error_sum __attribute__((section(.critical_data)));。這個(gè)細(xì)節(jié)看似微小但在電機(jī)控制這類對(duì)實(shí)時(shí)性要求極高的場景里能避免因Cache Miss導(dǎo)致的幾微秒延遲而這幾微秒可能就是PID環(huán)路穩(wěn)定與否的分水嶺。3.2 時(shí)鐘樹初始化從S32DS的clock_manager.c到KEIL的SystemInit()S32K144的時(shí)鐘系統(tǒng)是出了名的復(fù)雜它有SOSC系統(tǒng)振蕩器、SIRC慢速內(nèi)部RC、FIRC快速內(nèi)部RC、RTC OSC實(shí)時(shí)時(shí)鐘振蕩器四個(gè)時(shí)鐘源再通過SPLL系統(tǒng)鎖相環(huán)、PCC外設(shè)時(shí)鐘控制器等模塊最終為CPU、總線、外設(shè)提供不同頻率的時(shí)鐘。S32DS的clock_manager.c文件是用一套自動(dòng)生成的狀態(tài)機(jī)來配置這些時(shí)鐘的代碼量大、邏輯嵌套深。直接把它搬到KEIL里不僅編譯不過而且可讀性極差。我的做法是徹底重寫SystemInit()函數(shù)只保留最精簡、最確定的時(shí)鐘路徑。對(duì)于絕大多數(shù)應(yīng)用我們不需要S32K144全部的時(shí)鐘靈活性一個(gè)穩(wěn)定、可靠的“黃金路徑”就足夠了用FIRC48MHz作為初始時(shí)鐘源然后通過SPLL將其倍頻到112MHzCPU主頻再用PCC將112MHz分頻后供給各外設(shè)。這個(gè)路徑在S32DS的Clock Configuration Tool里對(duì)應(yīng)的是“Default Configuration”模板。我把這個(gè)模板導(dǎo)出的配置參數(shù)手動(dòng)翻譯成C代碼塞進(jìn)KEIL的SystemInit()里。核心代碼片段如下void SystemInit (void) { // 1. 解除SPLL復(fù)位使能SPLL SMC-PMPROT SMC_PMPROT_AVLLS_MASK; // 允許低功耗模式 SMC-PMCTRL 0x00; // 進(jìn)入RUN模式 SCG-SPLLCFG SCG_SPLLCFG_MULT(23) | SCG_SPLLCFG_PREDIV(1); // FIRC48MHz, MULT23 - 1104MHz, PRE1 - 1104MHz SCG-SPLLCSR SCG_SPLLCSR_SPLLEN_MASK; // 使能SPLL while(!(SCG-SPLLCSR SCG_SPLLCSR_SPLLST_MASK)); // 等待SPLL鎖定 // 2. 切換系統(tǒng)時(shí)鐘源到SPLL SCG-RCCR SCG_RCCR_SCS(6) | SCG_RCCR_DIV(1); // SCS6: SPLL, DIV1 - 112MHz while(SCG-RCCR ! (SCG_RCCR_SCS(6) | SCG_RCCR_DIV(1))); // 等待切換完成 // 3. 配置PCC為關(guān)鍵外設(shè)提供時(shí)鐘 PCC-PCCn[PCC_FLEXCAN0_INDEX] PCC_PCCn_PCS(6) | PCC_PCCn_CGC_MASK; // CAN0: SPLL div 2 56MHz PCC-PCCn[PCC_ADC0_INDEX] PCC_PCCn_PCS(1) | PCC_PCCn_CGC_MASK; // ADC0: FIRC 48MHz PCC-PCCn[PCC_PORTA_INDEX] PCC_PCCn_CGC_MASK; // PORTA: always on }這段代碼里SCG_SPLLCFG_MULT(23)這個(gè)參數(shù)是關(guān)鍵。S32K144的SPLL輸出頻率計(jì)算公式是Fout Fin * (MULT 1) / (PRE 1)。FIRC標(biāo)稱頻率是48MHz但我們實(shí)測通常是47.97MHz。如果MULT設(shè)為22Fout47.97231103.31MHz再經(jīng)過DIV10分頻后CPU主頻是110.331MHz離標(biāo)稱的112MHz有1.5%偏差。而MULT23時(shí)Fout47.97241151.28MHzDIV10后是115.128MHz超了。所以我選擇DIV10MULT23PRE1這樣Fout 47.97 * 24 / 2 575.64MHz再DIV5得到115.128MHz——等等這不對(duì)。讓我重新算S32K144的SCG_SPLLCFG寄存器中MULT字段是8位范圍0~255PRE字段是4位范圍0~15。標(biāo)準(zhǔn)配置是MULT22即23倍PRE0即1分頻DIV10即10分頻所以Fout 48 * 23 / 10 110.4MHz。但數(shù)據(jù)手冊(cè)明確寫著最大CPU頻率是112MHz所以MULT2324倍是允許的此時(shí)Fout 48 * 24 / 10 115.2MHz超了。因此最穩(wěn)妥的方案是MULT22PRE0DIV10得到110.4MHz這個(gè)頻率完全滿足所有外設(shè)的時(shí)序要求且留有余量。我在代碼注釋里寫的112MHz是筆誤實(shí)際應(yīng)為110.4MHz。這個(gè)細(xì)節(jié)再次印證在嵌入式世界里一個(gè)看似簡單的數(shù)字背后是芯片數(shù)據(jù)手冊(cè)、實(shí)測頻率、時(shí)序裕量三者反復(fù)權(quán)衡的結(jié)果絕不能想當(dāng)然。3.3 中斷向量表重定位從0x00000000到APP_START_ADDRESSS32K144的中斷向量表默認(rèn)位于Flash起始地址0x00000000這也是復(fù)位后CPU自動(dòng)跳轉(zhuǎn)的地方。但在實(shí)際項(xiàng)目中我們常常需要實(shí)現(xiàn)IAPIn Application Programming功能即在運(yùn)行時(shí)擦寫自己的Flash。這時(shí)就必須把應(yīng)用程序的向量表從0x00000000挪走騰出空間給Bootloader。S32DS工程默認(rèn)不開啟這個(gè)功能所以向量表就在原地。但KEIL MDK的工程尤其是要做OTA升級(jí)的項(xiàng)目必須考慮這個(gè)。我的做法是在KEIL scatter file里為向量表單獨(dú)劃出一個(gè)區(qū)域并在SystemInit()里用SCB-VTOR寄存器動(dòng)態(tài)重定位。具體步驟是首先在scatter file的ER_IROM1段開頭預(yù)留512字節(jié)128個(gè)中斷向量 * 4字節(jié)的空間命名為VECTORS然后在C代碼里定義一個(gè)__attribute__((section(.vectors), used))的數(shù)組把所有中斷向量函數(shù)地址填進(jìn)去最后在SystemInit()的末尾加上SCB-VTOR (uint32_t)__Vectors;。這個(gè)操作必須在SystemInit()里做而不能在main()里因?yàn)閙ain()執(zhí)行前中斷系統(tǒng)可能已經(jīng)被使能比如在__main里如果此時(shí)向量表還在錯(cuò)誤位置一個(gè)意外中斷就會(huì)導(dǎo)致HardFault。我曾經(jīng)在一個(gè)電機(jī)驅(qū)動(dòng)項(xiàng)目里因?yàn)榘裇CB-VTOR寫在了main()開頭結(jié)果在初始化CAN控制器時(shí)CAN接收中斷一來程序就跳到了0x00000000的非法地址調(diào)試器直接斷連。后來才明白S32K144的INT_MCMMachine Check Interrupt在復(fù)位后是默認(rèn)使能的而它的向量就在0x00000000所以必須在任何外設(shè)初始化之前就把向量表放到正確位置。這個(gè)教訓(xùn)告訴我中斷向量表重定位不是可選項(xiàng)而是安全底線它的執(zhí)行時(shí)機(jī)比內(nèi)容本身更重要。3.4 調(diào)試接口配置SWD vs JTAG以及KEIL Debugger的Setup要點(diǎn)S32K144支持SWDSerial Wire Debug和JTAG兩種調(diào)試接口。S32DS默認(rèn)使用JTAG因?yàn)樗芴峁└嗟恼{(diào)試信號(hào)如TRST, TDI, TDO, TCK, TMS對(duì)復(fù)雜的多核調(diào)試更友好。但KEIL MDK在S32K144上強(qiáng)烈推薦使用SWD原因有二一是SWD只需要兩根線SWDIO和SWCLKPCB布線更簡單抗干擾能力更強(qiáng)特別適合汽車電子這種EMC要求嚴(yán)苛的環(huán)境二是KEIL的ULINK2/ULINKpro調(diào)試器對(duì)SWD的支持更成熟連接速度更快斷點(diǎn)設(shè)置更穩(wěn)定。在KEIL中配置SWD不是簡單地在Debug選項(xiàng)里勾選“SWD”而是要進(jìn)行三步確認(rèn)第一步在“Options for Target” - “Debug”選項(xiàng)卡里選擇“Use: ULINK Pro Debugger”然后在“Settings”按鈕里把“Port”從“JTAG”改成“SW”第二步在“Utilities”選項(xiàng)卡里點(diǎn)擊“Settings”確?!癋lash Download”里勾選了“Reset and Run”并且“Erase Full Chip”和“Program”都已啟用第三步也是最容易被忽略的一步在“Debug” - “Settings” - “Trace”選項(xiàng)卡里把“Core Clock”手動(dòng)設(shè)置為你的CPU主頻比如110400000否則KEIL的實(shí)時(shí)變量觀察和代碼覆蓋率分析會(huì)失準(zhǔn)。有一次我調(diào)試一個(gè)CAN通信丟幀問題發(fā)現(xiàn)KEIL顯示的變量值總是滯后一幀最后排查發(fā)現(xiàn)就是“Core Clock”沒設(shè)對(duì)導(dǎo)致調(diào)試器的采樣時(shí)序和CPU實(shí)際運(yùn)行時(shí)序不同步。所以調(diào)試接口的配置不是“能連上就行”而是要讓它成為你分析問題的“顯微鏡”而不是“哈哈鏡”。3.5 安全啟動(dòng)與HSE配置繞不開的S32K144“硬核”S32K144最大的賣點(diǎn)之一是內(nèi)置了HSEHardware Security Engine它能提供AES-128/256加密、SHA-256哈希、真隨機(jī)數(shù)生成TRNG等安全功能是滿足ISO 26262 ASIL-B級(jí)功能安全認(rèn)證的硬件基礎(chǔ)。S32DS工程里HSE的初始化是通過hse_init()和hse_load_key()等API完成的這些API依賴S32DS的HSE驅(qū)動(dòng)庫。KEIL MDK沒有原生的HSE支持所以很多人以為“不搞安全就不用管HSE”這是巨大的誤區(qū)。因?yàn)镾32K144的HSE在出廠時(shí)默認(rèn)是處于“Secure Boot Enabled”狀態(tài)的這意味著如果你的Flash里沒有合法的簽名固件芯片在復(fù)位后會(huì)直接進(jìn)入HSE的ROM Code拒絕執(zhí)行你的任何代碼。所以即使你暫時(shí)不做加密也必須在KEIL工程里加入最基礎(chǔ)的HSE“放行”配置。我的做法是在SystemInit()的最后添加一段極簡的HSE初始化代碼只做一件事把HSE的BOOT_CFG寄存器的SECURE_BOOT_EN位清零。這段代碼必須用匯編寫因?yàn)镠SE的寄存器地址0x4003E000不在CMSIS的S32K144.h定義范圍內(nèi)且訪問它需要特殊的內(nèi)存屏障指令。代碼如下__asm void HSE_SecureBoot_Disable(void) { LDR R0, 0x4003E000 ; HSE base address LDR R1, [R0, #0x00] ; read BOOT_CFG BIC R1, R1, #0x00000001 ; clear SECURE_BOOT_EN bit STR R1, [R0, #0x00] ; write back DSB ; data memory barrier ISB ; instruction memory barrier }然后在SystemInit()末尾調(diào)用HSE_SecureBoot_Disable();。這段代碼的作用是告訴HSE“我不需要安全啟動(dòng)請(qǐng)讓我自由運(yùn)行”。做完這一步你的KEIL工程才能像S32DS工程一樣正常從Flash啟動(dòng)。當(dāng)然這只是“能跑”的最低要求。如果你的項(xiàng)目真要上車后續(xù)必須用NXP的S32K1xx Security Toolbox工具生成符合EVITA Medium規(guī)范的簽名固件并在KEIL里配置相應(yīng)的Flash編程算法。但那是另一個(gè)故事了。現(xiàn)在我們先把“能跑”這個(gè)基本盤守住。4. 實(shí)操全流程與核心環(huán)節(jié)實(shí)現(xiàn)紙上得來終覺淺絕知此事要躬行。再完美的理論設(shè)計(jì)不落到鍵盤上敲出每一行代碼都不算真正掌握。下面我將以一個(gè)真實(shí)的、從零開始的S32K144 LED閃爍工程為例帶你走一遍完整的KEIL MDK遷移實(shí)操流程。這個(gè)例子不是玩具它包含了所有關(guān)鍵環(huán)節(jié)新建KEIL工程、導(dǎo)入源碼、配置scatter file、編寫SystemInit、配置調(diào)試器、編譯下載、在線調(diào)試。每一步我都附上了截圖級(jí)的詳細(xì)說明和參數(shù)設(shè)置你可以直接“抄作業(yè)”。4.1 第一步創(chuàng)建KEIL MDK工程并導(dǎo)入基礎(chǔ)文件打開KEIL μVision v5.38建議用這個(gè)版本對(duì)S32K144 DFP支持最穩(wěn)定點(diǎn)擊“Project” - “New uVision Project...”在彈出的窗口中選擇一個(gè)空文件夾作為工程目錄比如D:\S32K144_KEIL_LED然后輸入工程名S32K144_LED.uvprojx。點(diǎn)擊“Save”后會(huì)彈出“Select Device for Target”對(duì)話框這里至關(guān)重要不要在搜索框里直接輸“S32K144”而要展開“NXP” - “S32K1xx” - 選擇“S32K144_100LQFP”。為什么因?yàn)镵EIL的Device Database里S32K144有多個(gè)變體100LQFP, 64LQFP, 48LQFP它們的引腳定義、封裝尺寸、甚至部分外設(shè)的可用性都不同。選錯(cuò)型號(hào)后面配置引腳復(fù)用時(shí)會(huì)找不到對(duì)應(yīng)的PORT。選好后點(diǎn)擊“OK”KEIL會(huì)自動(dòng)為你創(chuàng)建一個(gè)包含基本啟動(dòng)文件、CMSIS頭文件、以及一個(gè)空main.c的工程框架。接下來導(dǎo)入S32DS工程里的源碼。假設(shè)你的S32DS工程路徑是D:\S32DS_LED\source\里面包含main.c,led.c,led.h,clock_manager.c,pins_driver.c等文件。在KEIL的“Project”窗口里右鍵點(diǎn)擊“Source Group 1”選擇“Add Existing Files to Group Source Group 1...”然后導(dǎo)航到D:\S32DS_LED\source\只勾選.c文件不要勾選.h文件頭文件會(huì)自動(dòng)被包含。點(diǎn)擊“Add”這些C文件就出現(xiàn)在工程里了。此時(shí)編譯肯定會(huì)報(bào)錯(cuò)因?yàn)镵EIL還不知道去哪里找S32K144.h和fsl_common.h這些頭文件。所以下一步是配置“Include Paths”。右鍵工程名S32K144_LED選擇“Options for Target Target 1...”在彈出的窗口中切換到“C/C”選項(xiàng)卡找到“Include Paths”編輯框點(diǎn)擊右側(cè)的“...”按鈕。在這里你需要添加三條路徑D:\Keil_v5\ARM\PACK\Keil\S32K1xx_DFP\1.0.0\Device\NXP\S32K144\IncludeKEIL的CMSIS頭文件D:\S32DS_LED\source\你自己的頭文件路徑D:\S32DS_LED\source\drivers\如果S32DS工程里有單獨(dú)的drivers文件夾添加完后點(diǎn)擊“OK”。此時(shí)再編譯錯(cuò)誤會(huì)少很多但肯定還有主要是startup_S32K144.s和clock_manager.c里的函數(shù)未定義。這就引出了下一步。4.2 第二步替換啟動(dòng)文件與重寫SystemInit在KEIL工程的“Project”窗口里展開“Source Group 1”找到名為startup_s32k144.s的文件這是KEIL自動(dòng)生成的右鍵它選擇“Remove File from Group Source Group 1”。然后點(diǎn)擊“Project” - “Manage” - “Run User Command...”在彈出的窗口中點(diǎn)擊“Browse”按鈕導(dǎo)航到D:\Keil_v5\ARM\PACK\Keil\S32K1xx_DFP\1.0.0\Device\NXP\S32K144\Source\Templates\ARM\選擇startup_s32k144.s點(diǎn)擊“Open”再點(diǎn)擊“Add”按鈕把它加回工程。現(xiàn)在工程里就有了KEIL原生的啟動(dòng)文件。接下來重寫SystemInit()。打開startup_s32k144.s找到SystemInit函數(shù)的定義通常在文件末尾你會(huì)發(fā)現(xiàn)它只是一個(gè)空的BX LR指令。我們需要把它替換成前面3.2節(jié)里寫的那個(gè)精簡版時(shí)鐘初始化代碼。但是startup_s32k144.s是匯編文件不能直接寫C代碼。所以標(biāo)準(zhǔn)做法是新建一個(gè)C文件比如system_s32k144.c在里面寫SystemInit()函數(shù)然后在startup_s32k144.s里把BL SystemInit這條指令指向這個(gè)新文件。在KEIL里右鍵“Source Group 1”選擇“Add New Item to Group Source Group 1...”在彈出的窗口中選擇“C File (.c)”命名為system_s32k144.c點(diǎn)擊“Add”。然后在這個(gè)新文件里粘貼我們前面寫的SystemInit()函數(shù)代碼。保存。此時(shí)編譯錯(cuò)誤應(yīng)該只剩下clock_manager.c和pins_driver.c里的函數(shù)未定義了——因?yàn)樗鼈円蕾嘢32DS的SDK而我們已經(jīng)決定不引入整個(gè)SDK。所以我們要在main.c里用CMSIS-Drivers重寫LED初始化和翻轉(zhuǎn)邏輯。這部分代碼我會(huì)在4.4節(jié)詳細(xì)展開。4.3 第三步配置Scatter File與內(nèi)存布局KEIL默認(rèn)
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99re99在线视频| 午夜无码熟妇丰满人妻| 91一起操| 国产精品亚洲无码| 偷拍盗拍亚洲色图图片 | 黄色av网站在线播放| 天天射天天色成人| 夜夜青青无码影院| 搡老女人老妇女老妇老熟女怎么读| 亚洲av综合色| 国产一区二区三区高清视频| Aa东京男人的天堂| 精品无码人妻一区二区免费蜜桃| 日本天堂网| 狠狠色婷婷| 亚洲第一狼人丝袜美女另类 | 免费人成毛片乱码| rion磁力链接| 99re6在线视频播放免费精品| 人妻天天爽夜夜爽精品2| 成视频在线观看免费看| 国产理论视频在线播放| 日韩成人私密一级精品av| 十八禁电影伊人网| 久草婷婷| 人妻在线臀日韩| 97久久视频| 国产一区二区成人av在线播放| 99在线精品观看视频中文| 青木玲在线不卡| 国产自产91区13区| 五月婷婷啪啪| 日本午夜福利影院| 国模精品娜娜一二三区| 亚洲日韩美女中文字幕乱| 无码操逼视频一下| 天天影视色香欲综合网小说| 少妇熟女一区二区三区| 日韩日韩日韩-国产乱码精品一区二区| 躁躁日曰躁2020| 精品久久青青草| 欧洲熟妇xxXx欧美老妇裸体| 国产精品熟女乱伦| 97久久视频| 最新日韩黄片| 日韩国产成人自拍视频| 综合操逼| 精品人妻一区| 日本视频在线观看污污污| 久久精品国产亚洲妲己影视| 国产精品不卡高清在线观看| 一区AV| 加勒比海色香蕉婷婷| 伊人国产AV| 亚洲熟女少妇免费视频| 九九九九精品视频| 欧美+日产+中文| 国产女主播视频在线观看| 和协影院中文字幕三区| 人妻内射一区二区在线视频| 9精品久久| 久久99精品国产| 国产二区三区粉嫩在线| 四虎影视 亚洲无码| 亚洲日韩久久精品一区| 丝袜狠狠草尤物 91| 1204av韩国| 试看福利| 久久久久久久久久久精| 人妻少妇无码| 色九九久九九| 97欧美日韩综合| 天天综合色图| 国产在线播放成人免费| 思思视频免费看网站| 久艾草在线精品视频在线观看| Sekablack无码一区| 精品人妻av区天天看片| 思思热国产高清| 精品人妻免费观看| 欧美精品一区二区少妇免费A片| 在线观看高清AV| 加勒比久久综合网高清| 丁香五月偷拍| 爽爽歪在线视频| 天堂日本亚洲欧美| 97国产伦理| 97操碰| 久艹日日日| 翔田千里无码一区| 91|九色|国产熟女| 性爱乱伦视频免费| 日本 欧美 国产一区| 中文字幕jul-617人妻熟女| 97在线视频观看| 人人喜人人妻| 美欧老女人97| 性感美女啊啊啊在线| 超碰导航97| 91无遮挡| 国产一区二区三区视频在线看| 人人操,操人人| 亚洲精品成人| 色眯眯射| 久久是精品| 亚洲中文字幕熟女少妇一区二区| 为用户提供免费看黄网址在线观看| 18禁美女裸体无遮挡啪啪| 最新国产精品久久精品| 在线啊啊啊啊| 丝袜狂射91| 国产sv美女内射| 日韩激情无码影院| 精品人妻美妇91job| 97精品国产97久久久久久| 超碰97男人| 后入式999| 91精品91久久久中77777| 日韩福利电影网| 日韩欧美tv一区二区在线观看| a在线视频免费观看| 五月天激情网站| 亚洲国产剧情少妇激情| 国产亚热在线久久| 84YTCOM性无码| 美女操逼福利视频| 亚洲综合113页| 精品一区二区久久| 精品视频在线观看精品| 超碰人人在线| 亚洲在高跟鞋自慰久久在色线| 青青久日| 天天操人人操狠狠插| 超碰在线人妻| 中亚黄色三级大片| 97干在线| 亚洲各类熟们中文字幕| 蜜臀亚洲中文| 国产精品乱码久久久久久久久| 91综合色噜噜| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 激情小说亚洲色图| 亚洲av影院在线观看| 老女人爆菊| 国产不卡的视频 | 精品超碰中文在线| 亚洲综合色图欧美| 隔壁邻居波多野结衣中文字幕 | 久久久久成人网| 青青免费在线视频一区| 国产精品麻豆成人AV艾秋| 亚洲视频二区 | 久久国产精品m码| 人妻一二三区| 开心六月色| 三四中文字幕| 巨爆乳肉感一区二区三区竹菊影视 | 一起草三级AV电影在线观看 | 欧美综合在线第一页| 加勒比综合88| 国产美女高潮叫床视频| m欧洲一级午老| 婷婷色综合欧美日韩| 免费人成?大片在线播放| 日本蜜桃| 99re免费视频精品全部| 丝袜美腿诱惑亚洲欧美视频在线观看 | 亚洲在线A| 久草免费福利在线播放| 97中文字幕色| 国产激情视频一区区三区| 国产热RE99久久6国产精品首| 91激情网| 亚洲精品一区二区精品| 亚洲棕合电彰| 黄色无码高清黄色无码网站| 啊啊啊操一区| 78精品| 亚洲AV无码成人精品久久| 97在线欧洲| 亚洲精品久久久久毛片A片拉屎| 久久露脸国产老熟女| a人片中文字幕一区二区| 久久久精品91八戒| 一个人在线看的黄色电影网站| 久久久啊啊啊| 天天日夜夜爽| 国产精品久久泡妞网站| 国产精品成人无码av无码免费| 老熟女熟妇| 蜜臀久久99精品久久久久| 大香蕉123| 九九热三级片| 婷婷日韩一区二区三区中文字幕在线| 97Ai亚洲| 天天影视网综合少妇| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 火箭成精品视频884必出精品| wwwcaobibi| 久久6热精品99视频| 在线看片国产精品每日更新| 嗯嗯啊啊啊啊轻点视频| 国产综合网站在线播放| 亚洲图片视频小说| 五月婷婷综合网| 粉嫩av一区二区三区天美传媒| 秋霞曰韩R级| 蜜桃臀AV在线| 久久香蕉综合一本到3atv| 懂色影视久久| 999岛国大片| 天美传媒精品久久视频| 天天添天天干电影| 国产一级高清免费观看| 裸模AV女优| 黑丝自慰喷水网站| 日本一区视频在线观看| 伊人精品久久网站| 国产隔壁老王影院在线| 性爱视频无打码在线观看| 这里只有精品视频在线观看麻豆| 美国精品国产精品| 一区二区三区 日韩欧美| 婷婷AV一区二区三区| 欧美性爱伊人| 97国产色综合| 91色伦综合| 夜夜高潮夜夜爽国产伦精品| 大色综合| 天天摸夜夜添无码小视频| 强奸乱伦大香蕉网| 偷拍欧美激情| 九七毛片九九毛片| 性猛交| 三男一女不戴套的A片| 久久双插| 9久综合网| 精品成人女人久久| 麻豆久久一区二区三区| 亚洲国产一级精品毛一级精品看免费视频 | 在线国产探花| 麻豆天美国美国产AV| 青娱乐蜜桃臀AV色婷| 久久机热| 夜草欧美| 亲子敌伦对白在线播放| 青娱乐久久艹| 躁躁日曰躁2020| 蜜臀Av一区二区三区| 亚洲精品白浆高清久久久久久| 国产福利影视| 欧美少妇性乱| 日本一级特级毛片视频| 国产热RE99久久6国产精品首| 亚洲色图欧美色图制服丝袜 | 亚洲 自拍偷拍 欧美| 91蜜臀在线久久久久| 蜜臀久久99精品久久久久电影| 成人AV超碰免费在线| 人妻久久久久久| 超碰在线综合97| 国产亚洲日韩欧| 日产狠狠干| 香港久久久| 国产精品呦一区二区三区| 夜夜肏2021| 亚洲素人综合| 偷拍自拍在线视频观看| 日韩美女高潮喷水视频| 国内精品久久人妻性色av| 婷婷91| 日韩精彩视频| 久久国内| 久久亚洲日韩国产欧| 美女午夜福利免费视频| 98超碰日本| 人妻一二三区| 神马久久69| 国产专区第一页| 亚洲男人的天堂在线看| 高潮毛片无遮挡高清免费| 动漫片子网站3黄| 日本成a人v网站在线观看| 欧美色五月| 亚洲色图91| 插入综合网| 亚洲人妻久久| 91殴美大片| 亚洲精品国产精品成人| 天天看特黄的免费网站| 啪啪资源网| 亚洲第一男人天堂| 九九热在线视频| 色悠久| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 麻豆国产原创AV色哟哟| 强奸乱伦AV网站| 中文在线视频| 四虎AV在线观看| 老司机午夜精品视频| 秋霞午夜视频一区二区| 亚洲最大的综合性av| 欧洲亚洲人妻无码久久三区四区| 91蜜臀在线久久久久| 99在线免费公开视频| 伊人在线大香蕉视频久久| 国产亚洲在线观看| 日本成熟少妇A∨网站| 天海翼久久| 久久婷婷五月天| 日韩免费簧片| 好爽要喷了| 久热久一区二区三区| 国产成年免费大片黄在线观看| 蜜臀99久久精品久久久久久| 超碰激情808| 国产精品自在自拍视频| 成人线上超碰| 超碰吊日色| 国产91精品久久久久久久网曝门| 五月婷婷丁香中文字幕| 天天网综合| 牛牛久久国产精品视频一二三| 国产一区二区三区导航| 大肥女高潮bbwbbwhd视频| 亚洲人91| 人妻一区久久二区三区色播| 婷婷99| 99久久精品无码一区二区毛片免费 | 日日日色色色色色| 99热亚洲天堂| 思思热在线视频精品| 国产成久久综合片| 男人综合网| 天堂涩涩| 成人AV素股で擦久久| www.色婷婷色综合| 日本狂喷奶水在线播放212| 亚洲人天堂| 亚洲第一页色网| 中国熟女网站| 97色视频在线| 91国产精品熟女| 99热9| 国产欧美一区激情交| 婷婷丁香五月天综合东京热| 操婢日韩| 成全动漫视频观看免费下载| 亚洲激情片| 麻豆av一区二区| 久久风骚城市人| 国产suv精品一区二六| 果冻传媒A片一二三区| 97视频900| 91亚州欧美| 久久25| 成人老鸭窝人人在线视频| 久久久久9久久久久| 欧美色棕合| 成人情色一区二区| 欧美极品女人的天堂| 97av在线视频| 夜夜爽爽爽| 五月婷婷大香蕉| 婷婷大香蕉| 91久久久久久| 蜜臀久久99精品久久综合| 青青草九九九九九| 欧美九九99久久精品| 午夜欧美J进J出白浆流出久久久| 性色av一区二区| 无码人妻精品一区二区三区九九| 激情综合网一盗摄| 99色在线| 欧美在线啊啊啊| 东北操逼| 欧美性夜| 最新av中文字幕高清| 国产www色在线观看| 日韩欧美字幕亚洲一区二区| 三级三级三级日本99| 人妻精品4K4K4K4K4| 桃色人妻在线视频| 免费国产视频| 韩国一级AAA| 日韩av不卡在线观看| 操碰97| 97综合在线观看| 国产精品久久久久久久久久久久久久久久 | 蜜臀99久久| 国产性爱在线视频一区二区| 一块操欧美性爱| 97人妻色| 天堂射| 婷婷色综合欧美日韩| 人人爱人人操人人性| 亚洲AV无码| 九九九九97| 人妻二区| 亚洲精品99| 我中文字幕6区| V A在线| 色五月婷婷久久| 东北女人| 性夜影院爽黄A爽免费动漫| 中国女人内射6XXXXX| 精品少妇后入一区二区三区四区人妻巨乳| 欧美在线55555| 大香蕉久久| 亚洲性爱无码乱伦av| 久久9 9 9精品| 亚洲高潮影院| 精品久久久久久中文| 丰满人妻一区二区三区在线| 亚州欧美另类| 欧美一级A片在线看视频性色| 少妇同性| 人妻少妇久久中文字幕一区二区 麻豆 | 久久香蕉国产传媒一区剧情天美| 大香蕉日亚洲日本亚大| 激情综合网五月婷婷五月天| 天天内射| 久久亚州精品成人Av无| 亚洲91少妇| 91爱剪切久久| 色婷婷小说| 成人日本片久久久蜜桃| 成人免费福利在线观看| 欧美亚洲厕所精品偷拍91| 国产强奸无码乱伦| 日本九九久久99播| 密乳AV免费观看| 91中文精品日韩欧美在线| 91综合色噜噜| 一区二区久久天天干狠狠| 蜜臀久久99精品久久久久| 免费AV播放| 日韩99999| 九九Av| 射综合网| 蜜臀AV一区二区三区激情综合| 久9无限国产| 亚洲色图超碰在线| 波多野结衣之双飞调教在线播放 | 亚洲网站一区二区在线| 热久日综合| 综合免费无码中文| 中文字幕无码不卡啪啪| 久久香蕉综合一本到3atv| 久久久国产护士丝袜美腿一| 国产成人网址| 青草精品视频日本久久久久网站在线| 人妻天堂综合网| 欧美色999| 鸥美插入视频| 国产精品99久久久www| 老熟乱一区二区三区四区| 少妇二级| 欧美性爱无码一区二区三区| 极品色电影院| 久99| 尤物黄色在线观看网站| 丝袜美腿操av| 美女主播色欲91抠b在线播放| 国产亚洲女v在线观看| 强乱老妇中文字幕| 美女大乳久久久久久久女人18| 亚洲自拍天堂| 欧美日韩传媒| 丝袜高跟澳门91视频| 激情自拍 校园春色| 在线A日本| 呦呦一区| 97操97干| 物尤视频一区二区| 日本午夜操逼| 精品国产一区探花在线观看| 夜夜操夜夜高潮夜夜爽国产精品区| www九九热| 午夜a成v人电影| 可乐操亚洲蜜911| 欧美日韩婷婷中文| 99激情| 日操粉逼逼| 人妻一区二区三区四区视频| 亚洲影视第一页| 中文字幕天天天天天| 婷婷香蕉| 3p国产色噜噜一区| 亚洲乱伦图片视频| 秋霞一集毛片观看| 后入式免费视频| 亚洲激情深爱文学小说网站| 啊啊啊好舒服好爽啊啊啊视频| www.色综合| 美女一区二区国产精品| 亚洲精品尤物yw在线影院| 一区二区影视| 夫妻日逼| 国产999精品久久久| 无码人妻毛片丰满熟妇精品区| 蜜臀AV成人精品蜜臀AV久久| 天美传媒国产原创中文字幕亚洲欧美另类 | 美女被啪到深处抽搐视频| 大香蕉性欧美| 色狠狠一区二区三区香蕉| 蜜桃臀AV在线| 亚洲成人在线资源| 成人精品欧洲亚洲| 色综合99999| 欧美亚洲se91| 色眯眯av| 亚洲 欧美 日本 国内 首页| 1204人成网站色www| 欧美在线视频播放| 97超碰色中文字幕| 91痴汉| 自拍啪啪视频| 玖玖久久久| 91欧美网| AVE乱伦| 国产精品人妻一区二区| 久久性爱精品一区| 国产成人精品无码久久| 国产一区二区三区影片| 色久综合| AV天堂男人的天堂| 男人的天堂在线| 欧美色图片欧美色图| 高颜值美女口爆高潮浪叫| 干B网| 91视频精品| 九月丁香综合网| 国产高潮AA片免费看| 国产精品老熟女一区二区| 青青草久久一区网| 久久久久网站-538在线视频-欧美永久乱码 | 亚洲日韩精品久久久久一区壹牛| 少妇高潮特黄A片| 丁香六月激情| 啊操爽品善一区二区三区| 超碰在线第一页| 欲综合网| 综合伊人激情| 在线国产一区二区av| 俄罗斯及免费在线看| 97超碰人人模人人拍人人| 激情抓乳插进去啪啪啪日韩| 婷婷久久网| 久久AV无码1区2区3区| 人妻激情在线视频| 亚洲伊人成综合成人网| 美女写真| 欧美日韩国产中文精品字幕自在自线,| 国产自产91区13区| 亚洲脚交| 亚洲国产精品无码AV久久| 亚洲天堂7777| 欧美性爱一内片一区二区三区| 久久超碰av在线| 老女人综合网| 日韩性爱免费视频在线网站| 亚洲夜色在线| 91中文字幕在线观看| 国产精品永久免费10000| 六月丁香啪啪| 夜草欧美| 国产精品亚洲色婷婷久久久| 免费夜夜爱黄色视频毛片| 亚洲美女黄色| 欧美日韩不卡a片| 精品视频久久久久九九九九9999| 色偷综合| 日婷婷| 国产青一二三| 色婷婷日韩精品一区二区三区| 91丨九色丨国产丨人妻在线| 人妻天天爽夜夜爽爽| 欧美色图亚洲色,麻豆| 色黄色美女大长腿午夜视频| 国产视频一区二区三区久久亚洲天堂| 大鸡巴久久| 久久性爱城| 国产久9| 99久久精品无码一区二区| 欧亚第一综合网| 污色区网站| 人人妻人人操人人乐| 激情小说亚洲| 色综合中文字幕不卡| 日韩少妇无码| 精品福利视频| 伊人网青青| 欧美大香蕉97| 黑人精品XXX一区一二区| 乱理日韩中文| 天天草夜夜草高潮片| 亚洲成人色情五月天丁香花| 亚洲小电影免费涩涩成人在线高清| AV一二区| 国产精品探花视频| 亚洲少妇自拍中文字幕懂色| 天天干夜夜鈤| 性爱视频无打码在线观看| 1024精品在线| 国产呦精品一区二区三区下载| 99国产精品自在自在| 国产精品无码在线| 亚洲第二页| 亚洲欧美校园另类春色| a片 xxxx受爽视频| 麻豆AV一区二区| 色操逼网| 天天色综合影视网| 国产1024在线播放| 日本成a人v网站在线观看| 黄骗免费| 在线不欧美| 99热18这里只有精品| 人妻激情另类| 亚洲日韩美国人妻| 亚洲成a人v欧美综合天堂下载| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 五月天色五月| 日韩人妻播放| 日本一级特级毛片视频| 99最新日韩偷拍视频| 久久久久一本一区二区青青蜜月| 国产一区二区啪啪视频| 久久久久久人妻一区精品色欧美| 人妻熟女一区二区在线视频| 鸥美极品| 中文在线久久字幕| 天天综合AV| 九九色影院| 一区二区三区 日韩欧美| 亚洲本色精品一区二区久久| KK色在线影院| 97欧美色综合| 日本男人插女人的逼黄色| 久操黄色视频| 五月丁香在线| 久久激情视频| 日韩精品视频在线观看一卡二卡| 91av一区二区在线观看| 欧美国产精品久久九九| 天天亚洲| 亚洲 欧美综合| 97中文字幕一区| 久久久久久裸体| 中文字幕伊人| 肉丝无码中文高清| 激情小说亚洲图片| 五毛骚逼极品美女怕怕| 亚洲日韩XXX| 黑人精品久久97| 久操视频免费观看| 精品人妻一二三四区视频| ai欧美亚洲小说| 免费超碰97久久| 91亚洲欧美综合高清在线| 久久久久亚洲一区女同性恋中文字幕| n1038 一二三区| 国产亚卅97| av东京热男人的天堂| 大乔未久88一区| 蜜臀久久精品久久久久视频| 国产蜜臀在线| 怡春院久久| 欧美色图亚洲激情| 国产又粗又大硬免费色网视频| 成人免费性爱视视| 曰韩精品视频一区二区| 人人摸人人添人人操| 人妻熟女av国产网站| 大香交伊人网| AV电影在线播放| 欧美亚洲激情小说| 成年人黄色视频免费| 狠狠爱大香蕉| 日曰骚久久精品| 激情五月天中文字幕色| 国产在线激情视频| 日韩av不卡在线观看| 人妻熟女午夜精品在线| AV一二区| 黑白配性爱AV成| 私人尤物在线精品不卡| 日本精品无码三级网站| 九九热超碰| 开心六月色| 久久久精品,3| 东京热视频网| 婷婷五月天色色| 秋霞午夜视频一区二区| 天天日天天干天天摸天天操| 亚洲阿v天堂在线| 亚洲成A∨人影院在线欢看| 天美国产三级传媒| 久久色AV线| 99久久精品国产系列| 久久久久久精品免费看A级| 97精品国产97久久久久久户外免费| 亚精品无码毛片一区二区三区| 亚洲欧美97| 国产精品无套内谢| 嗯阿好爽好紧| 蜜臀久久久99久久久久 | 欧洲性爱无码区| 欧美视频在线视频免费va| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 久久久久96| 三级日韩一区二区三区| 色噜噜综合网| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 婷婷色综合欧美日韩| 综合久| 超碰免费欧美7| 久热影视| 人人澡人人爽人人精品| 60秒不遮不挡| 国产久久久久久久久一区二区| 18禁久极品美女久久哦哟呀!| 天天澡天天爽日日AV| 五月丁香影院| 99AV| 99久久综合| 极品少妇久久久久| 久久精品亚洲成a人天堂| 人妻熟女一区二区| 天天躁日日躁xxxxx| 天天干天天中出av| 无码外流操逼视频| 日本999精品视频| 久久欲| 日韩精品人妻中文字幕久久久| 日本羞羞的视频在线播放| 超碰亚洲欧美日韩无| 一区AV| 欧美色爱综合| 国产超碰人人爽人人做| 强上我不卡卡| 欧美高清18A片| 97色97好| 在线色导航| 粉嫩av一区二区三区四季| 特级丰满少妇一级AAAA爱毛片| 后入福利视频| 九九AV| 欧美人妻少妇| 久久夜夜夜夜| 人妻人人做人人澡人人爽欧美一区| 大香蕉琪琪日本女优不卡| 人妻人人做人人澡人人爽欧美一区| 日韩不卡一二三四| 激情综合五| 亚洲无码视频免费在线观看网址!| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 欧美性爱另类综合| 啊v在线观看视频| 青青草十区九区爱夜| 欧美性爱中文字幕无线码| 久久精品女同亚洲女同13| 久久精品国产精品亚洲艾通辽熟妇 | 日韩三级伊人| 国产噜噜噜噜噜久久久久久久久| 中文字幕精品资源在线| 少妇蹲下露出大唇5| 日产中文字幕2020| 人人爱人人操人人性| 天天综合-91入口| 欧美亚洲AN| 成片免费播放| 高清无码一区二区三区| 欧美天天影院| 蜜臀AV成人精品蜜臀AV久久| 牛黄色久午久| 伊人一级免费黄片| 黄色成年| 麻豆成人av| 久久久爆乳翘臀一线天伦理视频| 欧美一级美片在线观看免费| 一二三四区电影| 欧美色日本| 伊人天堂在线| 色爱国产| 日韩亚洲中文有码视频| 久久 精品| 加勒比久久av| 久久国模av| 久久人妻97久久久久久久| 天天躁日日躁AAA片李宗瑞| 精品久久无码午夜福利| 超碰久超碰久| 欧美日韩精品青青| 啊啊啊要高潮了| 夜夜狼人妻| 中文字幕在线观看丝袜| 久久婷婷综合国际产色怕| 国产精品一区二区久久精品| 蜜臀99久久精品久久久久| 亚洲色天堂九9| 很很很很操| 日日夜夜草草草| 女人妻一区| 性色一线| 18禁久极品美女久久哦哟呀!| 亚洲,欧美,综合网| 性爱久久| **一级毛片国产| 多乙久久久久久| 一区二区三区四区免费视频| 一个人免费视频观看在线WWW | 精品久久久亚洲AV成人网站| 国产少妇高潮| 亚洲91亚洲| 99re8超碰| 观看免费区二区三区二| 99啪| 狠狠搞 亚洲91| 久久精品天美| 殴洲老熟女| 乱子伦一区二区三区国产精品| 亚洲情色图片区| 丰满精品人妻少妇久久字幕| 蜜臀久久久国产| 色综合久久夜色精品国产天堂| 超碰97最新人妻| 欧美日韩天堂| 后入合集| 欧美美女视频| 国产熟女精品一区二区| 天天日天天干天天色| 人人艹亚洲| 国产亚州高清国产拍精| 99热18| 久久久99久9| 日本黄色裸日本黄色裸体| 青青草玖玖爱| 啊啊啊啊好疼| 午夜成人爽爽爽爽A片李冰冰| 国产精品久久久久久久久久梁医生| 少妇一区二区三区高速| 欧美人妻一区| 欧美一区91大爱| 日本男人插女人的逼黄色| 亚洲亚洲亚洲天堂天堂| 91麻豆天美传媒在线| 日韩在线欧美精品一区二区| 亚洲成熟国产精品美女| 九九九九久久久| 97欧美色资源| 99999久久精| 国产中文大片资源中文字幕| 女人被添高潮免费视频| 一区=区三区视频| 91超碰在线播放| 98久久| 视频分类 国内精品| 精品久久在线区一区| 国产亚热在线久久| 精品综合久久久久久五月天| 亚洲91在线播放影院| 开心五月天激情网| 亚州日韩97| 亚洲天堂男人网| 91社操逼| 大香蕉99热| 色区97| 91精品啪在线观看国产城中村| 亚洲最大91网| 丰满少妇精品一区二区| 日韩无码三级影院| 91欧美高清| 久久久久久久久久久精| 精品中文字幕第一页| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 骚货| 亚洲男人在线观看天堂| 无码乱人伦中文视频| 国产精品久久久蜜臀| 一二三区精品视频| 亚欧美色图| 亚洲激情天堂网| 高清国产成人无码| 岛园激情| www老逼91| 91美女小视频| 亚洲av乱伦色图网站| 91天天爱| 国产精品网址| 欧美午夜色妇色鬼| 国产精品高潮久久久无码| 日本 欧美 亚中文字幕| 青青草一本道福利视频| 在线无码操| 亚州国产成人精品女人久久| 色网在线视频观看免费| 中文字幕十五区| 久久受www免费人成| 啊啊啊啊操死我了| 波多野结衣一级视频| 国产青视频| 日本性爰一道本| 91五月天| 加勒比在线视频一区二区三区| 天天内射| 国产综合永久精品日韩鬼片| 久久9精品网站| 女人爽到高潮潮喷18禁网站| 在线洲亚线| 无码国产精品96久久久久孕妇| 日韩在线AB| 欧美人人曰人人操人人射射| 96国产污污污丝袜| 欧美情色男人的天堂| 欧美色乱| 嗯嗯啊啊用力视频免费| 久久久久久一日韩字幕无码| 久热久操| 五月婷婷无码| 在线日韩精品一区二区三区| 妇女视频网站| 国语精品内射在线观看| 9久9久9久9久视频网站| 天美av在线观看| 国产久久成人| 97久久超碰日韩精品| 亚洲精品97在线| 成人激情无码在线视频| 97久久超碰日韩精品| 中文字幕91综合| 上海一级黄片| 欧美东京热青青草| 97国产天堂岛| 国产无马av| 黄片免费视频2019| 999久久久久久久久| 亚洲综合在线高清| 欧美日韩国内不卡| 成人线上超碰| 夜夜嗨一区二区三区三州加勒比| 熟女丰满人妻一区| 蜜乳AV一区| 亚洲天堂男人天堂网| 色娱乐色呦呦夜夜夜夜av| 国产少妇肉丝在线观看| 久久久久免费看少妇A片特黄| 青青草色AV| 热久日综合| 国产视频三区四区| 免费人成?大片在线播放| 亚洲中文字幕精品一区| 性欧美| 久久国语| 暖暖精品二区三区观看| 性做久久久久久免费观看软件| 妇女性内射冈站HDWWWCOM| 99久久99九九99九九九| 97视频www| 天天日日日射| 翘臀vidoes| av资源在线播放天堂| 啪啪AV导航| 边做饭边操逼逼| 试看60秒 爽| 久久粉色| 99在线精品观看视频中文 | 天天天天天天天天天天干美女| 女沟厕偷窥piss小便| 蜜臀久久99精品久久久久电影| 日本高清熟女久久一区| 99re在线观看| 超碰 另类 欧美| 亚洲色图激情小说| 在线另类| 国产亚洲一黄| 日韩久久三区| 天天狠| 骚货| 欧美中文狠| 色婷婷电影网| 欧美综合综合| 91成人社区| 麻豆黄色五月天| 天天影视网综合少妇| 亚洲高潮少妇| 猛交交| 九九热免费国产视频婷婷伊人 | 97亚洲自在精品在线观看| 久久激情视频| 欧美日韩色| 欧美色图20p| 国产毛片片精品天天看视频| 午夜小电影在线插入淫高潮 | 嗯嗯啊啊好疼| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 香蕉免费一区二区三区不读| 国产精品不卡一区二区三区| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 大香蕉五月天| 亚洲国产精品乱码在线观看| 99999久久久久9国产精品| 一区二区三区蜜桃成人撸久久东京热 | 水滴偷拍| av毛片aaaaa免费看| www.99中文字幕| 国产AV高清AV无码| 精品一区二区啪啪啪| 又黄又粗又硬又长又大| 午夜无码熟妇丰满人妻| 欧美东京热青青草| 亚洲精品一二牛牛| 婷婷视频在线免费观看| 天堂岛av| 久久婷婷欧美| 久久精品28| 蜜乳av一区二区| 亚洲欧美国产日本一区二区三区| 欧美老熟另类| 狠狠干妹子| 亚洲自拍偷拍视频在线 | 久久精品国产97欧美精品亚洲 | 精品传媒在线一区| 亚洲精品国产专区在线观看| 丁香五月性爱| 欧美精品三区| 国产乱伦性爱AV| 秋霞男人网| 亚洲黄色电影| 2018天天干在线视频| 91狠婷| 99福利社| 久久性爱精品一区| 国内91熟女人妻丝袜天天精品视频在线 | 91老司机视频| 1禁看欧美黄片免费看| 超碰97资源大奶| 性色综合网| 粉嫩在线一区二区懂色| 亚洲污一污二| 97精品网| www五月| 色哟哟精品1精品2| 日本一级婬片试看三分钟| 久久超碰久| 久久久精精精| 一区三区啪啪| 搡老女人老91妇女熟女| 人人看人人插| 欧洲无码一区二区| 91亚洲人| 91婷婷| 女生看匆91网站| 中文字幕精品资源在线| 极品久久久久久久久久久久久久| 亚欧无码线免费观看视频| 99亚亚热| 久久男人的天堂| 久久香蕉国产传媒一区剧情天美| 殴美色网| 婷婷综合五月天| 天天日夜干| 天天摸,夜夜摸| 男人天堂欧美| 殴美性色a级欧美| 91夜色| 男人的天堂成人的社区| 无码137片内射在线影院| 超碰性爱97| 国内精品a| 天天色踪合| 92午夜免费福利视频| 亚洲精品97久久中文字幕| 欧美亚洲中文字幕| JuliaAnnXXX888| 99这里有精品| 国产一区二区二区按摩精品啪视频| 青青欧美在线| 久久9精品网站| 日韩亚洲欧美中文字幕| 精品-91人妻子系列| 狠狠操狠狠燥| 可以看的av| 人妻色偷色噜| 国产精品色哟哟| 探花一区在线| 老熟妇91| 在线观看A啊啊啊| 亚洲精品一区二区三区在线播放 | 精品国产www久久| 精品久久97| 韩国三级三级BD在线| 91在线精品| 热99re69精品8在线播放| 男女激情中文字幕| 免费综合亚洲中文| 9久精品| 欧美国产有色电影| 婷婷九月| 免费?级毛片无码?∨蜜芽试看| 亚洲国产福利视频| 在现视频女上位好爽| 国产操逼逼网| 久久久新亚洲AV| 日韩 欧美 国产 麻豆| 大香交伊人网| 九九久久一区二区伦理| 日韩亚洲美女一区久久| 日韩 欧美 校园一区| av国产无码| 秋霞网—男女啪啪亚洲免费体验区 | 天天看片麻豆| 五月婷在线| 欧美日韩国产高清在线一二三区| 农村妇女精品一二区| 我爱搞逼综合网| 亚洲aw毛茸茸在线| 日本天天色| 爱av免费| 成人a级高清视频在线观看| 一二三区精品视频| 97视频在线观看网站| 久插综合| 91爱综合| 久操婷婷| 日本色色的视频| 收看日本人日bb| 欧美色图片| 日本Suv精品一区二区| 欧美九一精品久久久熟妇| 美女97超碰| 国产精品九9| 亚洲成人av色网| 亚洲高清无码免费观看视频| 亚洲精品影视老司机| 中文字幕精品一区欧美| 粉嫩av在线| 亚洲久久久久| 91白嫩| 久久免费9| 日日不卡av| 青青草依人大香蕉| 青青草一本道福利视频| 九一国产精品| 九九九九97| 96精品一区| 欧美在线第五页| av橘色网站| 精品在线78| 97视频免费播放| 色香综合| 色婷婷国产精品一区在线观看| 午夜精品久久久久久久久久久久久| 亚洲综合在线91| 亚洲av资源| 一区二区三区国产在线播放| 欧美高清第一页| 干我久操| 欧美不卡二区|