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

ARTICLE DETAIL

資訊詳情

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

XMC4700上基于Event Recorder的STDIO重定向?qū)崿F(xiàn)與調(diào)試指南

XMC4700上基于Event Recorder的STDIO重定向?qū)崿F(xiàn)與調(diào)試指南 1. 項(xiàng)目緣起為什么要在XMC上折騰STDIO重定向如果你用過(guò)ARM Cortex-M系列的MCU尤其是英飛凌的XMC系列大概率會(huì)接觸過(guò)Keil MDK這個(gè)IDE。在調(diào)試過(guò)程中我們最常用的輸出信息方式除了點(diǎn)燈可能就是串口打印了。接上串口助手在代碼里調(diào)用printf看著字符一行行刷出來(lái)是調(diào)試的常規(guī)操作。但這個(gè)方法有幾個(gè)痛點(diǎn)首先它獨(dú)占一個(gè)硬件UART外設(shè)和一對(duì)GPIO其次波特率設(shè)置不當(dāng)可能導(dǎo)致亂碼或丟數(shù)據(jù)再者在低功耗模式下UART模塊可能被關(guān)閉導(dǎo)致調(diào)試信息丟失。那么有沒(méi)有一種方法既能像printf一樣方便地輸出調(diào)試信息又不占用額外的硬件資源還能在芯片睡眠時(shí)正常工作呢答案是肯定的而且Keil MDK早就為我們準(zhǔn)備好了這個(gè)“神器”——Event Recorder。這個(gè)項(xiàng)目要做的就是把標(biāo)準(zhǔn)的C庫(kù)輸入輸出STDIO也就是printf、scanf、getchar這些函數(shù)重定向到Event Recorder上。這樣一來(lái)你的printf輸出不再走向串口而是走向MDK調(diào)試器的內(nèi)部通道最終顯示在Debug Viewer窗口里。整個(gè)過(guò)程不依賴(lài)任何硬件外設(shè)速度極快并且?guī)缀醪挥绊懗绦虻膶?shí)際運(yùn)行。聽(tīng)起來(lái)很美好對(duì)吧但實(shí)際操作起來(lái)你會(huì)發(fā)現(xiàn)官方文檔往往語(yǔ)焉不詳或者提供的例子不夠“接地氣”。特別是在資源、時(shí)序要求各不相同的XMC系列MCU上如何穩(wěn)定、高效地完成這次重定向里面有不少門(mén)道。我最近在一個(gè)基于XMC4700的項(xiàng)目上完整實(shí)現(xiàn)了這個(gè)功能期間踩過(guò)坑也總結(jié)出一些確保穩(wěn)定性的關(guān)鍵配置。這篇文章我就來(lái)手把手拆解這個(gè)過(guò)程不僅告訴你“怎么做”更重點(diǎn)解釋“為什么這么做”以及那些容易忽略的細(xì)節(jié)。2. 核心組件解析Event Recorder與ARM Compiler的MICROLIB在動(dòng)手寫(xiě)代碼之前我們必須先理解兩個(gè)核心概念Event Recorder的本質(zhì)以及我們將要使用的C庫(kù)——Microlib。2.1 Event Recorder不止于“打印”的調(diào)試數(shù)據(jù)通道很多人把Event Recorder簡(jiǎn)單地理解為一個(gè)高級(jí)的printf窗口這低估了它的能力。本質(zhì)上Event Recorder是一個(gè)時(shí)間戳事件記錄系統(tǒng)。它通過(guò)一個(gè)名為“ITM”的硬件模塊Instrumentation Trace Macrocell屬于Cortex-M內(nèi)核調(diào)試組件的一部分在芯片內(nèi)部開(kāi)辟了一條從代碼到調(diào)試器的專(zhuān)用數(shù)據(jù)流。與UART這種異步串行通信不同ITM通道是同步的并且擁有更高的優(yōu)先級(jí)和帶寬。當(dāng)你調(diào)用重定向后的printf時(shí)字符串?dāng)?shù)據(jù)會(huì)被打包成ITM數(shù)據(jù)包通過(guò)內(nèi)核的調(diào)試接口通常是SWD或JTAG直接發(fā)送給Keil MDK的調(diào)試器最終被解析并顯示出來(lái)。這個(gè)過(guò)程有以下幾個(gè)關(guān)鍵優(yōu)勢(shì)零硬件依賴(lài)不占用UART、GPIO、DMA等任何片內(nèi)外設(shè)資源。極低延遲數(shù)據(jù)通過(guò)內(nèi)核調(diào)試單元直接傳輸速度遠(yuǎn)高于通常的串口波特率如115200。運(yùn)行中調(diào)試即使在芯片進(jìn)入睡眠模式Sleep時(shí)只要調(diào)試連接保持ITM通道在特定配置下仍可工作取決于DBGMCU的配置這對(duì)于調(diào)試低功耗應(yīng)用至關(guān)重要。時(shí)間戳Event Recorder會(huì)為每條消息附上精確到微秒級(jí)的時(shí)間戳這對(duì)于分析代碼執(zhí)行時(shí)序、性能瓶頸無(wú)比有用。在Keil MDK中Event Recorder的實(shí)現(xiàn)依賴(lài)于一個(gè)名為EventRecorder.c的庫(kù)文件以及相應(yīng)的頭文件。我們需要在工程中引入并配置它。2.2 Microlib為嵌入式而生的精簡(jiǎn)C庫(kù)標(biāo)準(zhǔn)C庫(kù)比如GNU的glibc功能強(qiáng)大但體積龐大不適合資源緊張的MCU。Keil ARM Compiler提供了一個(gè)名為Microlib的替代品。它是一個(gè)高度優(yōu)化、專(zhuān)為嵌入式系統(tǒng)設(shè)計(jì)的最小化C庫(kù)子集。為什么重定向STDIO通常需要Microlib因?yàn)闃?biāo)準(zhǔn)庫(kù)的printf實(shí)現(xiàn)非常復(fù)雜支持浮點(diǎn)數(shù)、多種格式等其底層依賴(lài)的_sys_xxx系列半主機(jī)Semihosting函數(shù)在無(wú)操作系統(tǒng)的嵌入式環(huán)境中默認(rèn)是無(wú)法工作的。Microlib提供了另一套更簡(jiǎn)單的底層樁函數(shù)Stub例如_sys_write、_sys_read等。我們需要重寫(xiě)的正是這些樁函數(shù)。在Keil工程中啟用Microlib很簡(jiǎn)單在“Target”選項(xiàng)頁(yè)勾選“Use MicroLIB”。但請(qǐng)注意Microlib與標(biāo)準(zhǔn)庫(kù)不兼容如果你的工程之前使用了標(biāo)準(zhǔn)庫(kù)的某些復(fù)雜功能如完整的文件I/O、區(qū)域設(shè)置等切換時(shí)可能需要做適配。注意Microlib為了追求體積做了一些犧牲。例如它對(duì)printf浮點(diǎn)數(shù)%f的支持不是默認(rèn)開(kāi)啟的需要額外配置編譯器標(biāo)志。如果你的調(diào)試信息需要打印浮點(diǎn)變量這一點(diǎn)必須留意。3. 工程配置與代碼實(shí)現(xiàn)全流程理解了原理我們開(kāi)始實(shí)戰(zhàn)。以下步驟基于Keil MDK v5和XMC4700 Relax Kit但思路適用于所有XMC系列及Cortex-M3/M4/M7內(nèi)核的芯片。3.1 第一步基礎(chǔ)工程配置與Event Recorder添加創(chuàng)建或打開(kāi)一個(gè)Keil工程。確保芯片支持包Device Family Pack已正確安裝。啟用Microlib進(jìn)入“Options for Target” - “Target”選項(xiàng)卡勾選“Use MicroLIB”。添加Event Recorder組件點(diǎn)擊工具欄的“Manage Run-Time Environment”按鈕或按AltF7。在“Compiler”組件組下找到“Event Recorder”。將其右側(cè)的選項(xiàng)框從“Unused”改為“Enabled”通常會(huì)自動(dòng)添加依賴(lài)的“Event Recorder: Core”和“Compiler: Event Recorder”。點(diǎn)擊“OK”Keil會(huì)自動(dòng)將必要的源文件如EventRecorder.c、EventRecorderConf.h添加到你的工程中。3.2 第二步解剖與修改EventRecorderConf.h這是最關(guān)鍵的一步。EventRecorderConf.h文件決定了Event Recorder的內(nèi)存分配、時(shí)間戳源、緩沖大小等核心參數(shù)。默認(rèn)配置可能不適合所有場(chǎng)景尤其是對(duì)實(shí)時(shí)性要求高或內(nèi)存緊張的系統(tǒng)。// 以下是一些關(guān)鍵配置項(xiàng)的解讀與建議設(shè)置針對(duì)XMC4700 128KB RAM #define EVENT_RECORD_COUNT 1024 // 記錄的事件數(shù)量。增大此值可以存儲(chǔ)更多歷史消息但消耗更多RAM。 #define EVENT_RECORD_EVR_MAX_SECTIONS 4 // 最大分區(qū)數(shù)。通常保持默認(rèn)即可。 #define EVENT_RECORD_SECTION_0_SIZE 256 // 分區(qū)0大小用于初始化事件。夠用即可。 #define EVENT_RECORD_SECTION_1_SIZE 768 // 分區(qū)1大小用于你的應(yīng)用事件包括printf。這是主要緩沖區(qū)建議設(shè)置大一些。 // 時(shí)間戳?xí)r鐘源配置這是穩(wěn)定性的關(guān)鍵 // XMC4700的CPU主頻是144MHz我們可以使用內(nèi)核時(shí)鐘(Cycle Counter)作為時(shí)間戳源精度最高。 #define EVENT_TIMESTAMP_SOURCE 1 // 1 DWT Cycle Counter (推薦), 2 SysTick, 3 用戶(hù)自定義 #define EVENT_TIMESTAMP_FREQ 144000000 // DWT時(shí)鐘頻率即CPU主頻單位Hz // 初始化延遲。在某些啟動(dòng)較慢的外設(shè)或復(fù)雜系統(tǒng)中可能需要延遲Event Recorder的初始化。 #define EVENT_RECORD_INIT_DELAY_MS 0 // 單位毫秒。如果啟動(dòng)時(shí)打印亂碼可以嘗試設(shè)為100。為什么選擇DWT Cycle Counter而不是SysTickSysTick通常被操作系統(tǒng)如FreeRTOS用作系統(tǒng)節(jié)拍定時(shí)器其優(yōu)先級(jí)可能被改變甚至可能被重載。而DWTData Watchpoint and Trace單元中的循環(huán)計(jì)數(shù)器是專(zhuān)門(mén)用于調(diào)試和性能分析的它自由運(yùn)行不受應(yīng)用軟件干擾能提供最穩(wěn)定、連續(xù)的時(shí)間戳。前提是需要在初始化時(shí)使能DWT單元。3.3 第三步重定向printf的核心代碼實(shí)現(xiàn)現(xiàn)在我們來(lái)編寫(xiě)重定向代碼。我們需要實(shí)現(xiàn)Microlib所需的底層函數(shù)。通常在一個(gè)名為retarget.c或stdio_redirect.c的文件中實(shí)現(xiàn)。#include stdio.h #include rt_sys.h #include EventRecorder.h // 重寫(xiě) _sys_write 函數(shù)。當(dāng)調(diào)用 printf、puts 等輸出函數(shù)時(shí)Microlib會(huì)調(diào)用它。 int _sys_write(int handle, const unsigned char *buf, int len) { // handle 是文件描述符。stdout 和 stderr 通常對(duì)應(yīng) handle1 和 handle2。 if (handle 1 || handle 2) { // 標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出 // 關(guān)鍵使用 EventRecorderDataTransfer 而非 EventRecord2 // EventRecord2 用于記錄結(jié)構(gòu)化事件而 DataTransfer 專(zhuān)為傳輸連續(xù)數(shù)據(jù)如字符串優(yōu)化。 if (EventRecorderDataTransfer(EventRecorderDataTransferType_Data, buf, len) ! 0) { return len; // 成功發(fā)送返回寫(xiě)入的字節(jié)數(shù) } } // 如果發(fā)送失敗或不是stdout/stderr返回錯(cuò)誤標(biāo)志 return -1; } // 重寫(xiě) _sys_read 函數(shù)。如果要用 scanf 或 getchar需要實(shí)現(xiàn)它。 int _sys_read(int handle, unsigned char *buf, int len, int mode) { // 對(duì)于從Event Recorder輸入通常我們不實(shí)現(xiàn)。如果需要交互調(diào)試可以留空或返回0。 (void)handle; (void)buf; (void)len; (void)mode; return 0; // 表示沒(méi)有數(shù)據(jù)可讀 } // 重寫(xiě) _sys_istty 函數(shù)。詢(xún)問(wèn)句柄是否連接到一個(gè)終端設(shè)備。 int _sys_istty(int handle) { // 對(duì)于 stdout/stderr我們告訴庫(kù)這是一個(gè)“終端”交互設(shè)備。 if (handle 1 || handle 2) { return 1; } return 0; } // 可選但推薦重寫(xiě) _ttywrch 函數(shù)。用于處理單個(gè)字符輸出如某些低層函數(shù)。 void _ttywrch(int ch) { unsigned char c (unsigned char)ch; _sys_write(1, c, 1); // 直接復(fù)用上面的 _sys_write }代碼解析與避坑點(diǎn)EventRecorderDataTransfervsEventRecord2這是最容易混淆的地方。EventRecord2用于記錄帶有事件ID、參數(shù)的事件適合記錄“用戶(hù)登錄”、“按鍵按下”這類(lèi)結(jié)構(gòu)化事件。而printf輸出的是連續(xù)的字節(jié)流使用EventRecorderDataTransfer并指定DataTransferType_Data類(lèi)型才是正確選擇它能保證字符串的完整性在Debug Viewer中會(huì)以“Data”事件形式顯示并自動(dòng)拼接成完整行。返回值必須正確_sys_write必須返回成功寫(xiě)入的字節(jié)數(shù)這里是len如果返回-1可能導(dǎo)致上層printf函數(shù)行為異常。初始化順序務(wù)必在main()函數(shù)一開(kāi)始初始化完系統(tǒng)時(shí)鐘后就調(diào)用EventRecorderInitialize()。確保在調(diào)用任何printf之前Event Recorder已經(jīng)準(zhǔn)備就緒。3.4 第四步主函數(shù)中的初始化與測(cè)試#include XMC4700.h // 芯片頭文件 #include stdio.h #include EventRecorder.h int main(void) { // 1. 初始化芯片時(shí)鐘、外設(shè)等 SYSTEM_Init(); // 2. 使能DWT單元如果使用DWT作為時(shí)間戳源 CoreDebug-DEMCR | CoreDebug_DEMCR_TRCENA_Msk; // 使能跟蹤單元 DWT-CTRL | DWT_CTRL_CYCCNTENA_Msk; // 使能循環(huán)計(jì)數(shù)器 // 3. 初始化Event Recorder必須在任何Event Recorder API調(diào)用前執(zhí)行 EventRecorderInitialize(EventRecordAll, 1U); // 記錄所有級(jí)別的事件初始化后立即啟動(dòng) // 可選延遲一段時(shí)間確保調(diào)試器已連接并準(zhǔn)備好接收數(shù)據(jù) // for(int i0; i1000000; i) __NOP(); // 4. 開(kāi)始你的應(yīng)用代碼 printf(【系統(tǒng)啟動(dòng)】XMC4700 STDIO重定向測(cè)試 %lu Hz\n, SystemCoreClock); int counter 0; float voltage 3.3f; while(1) { counter; // 模擬一些工作 for(int i0; i100000; i); // 使用printf輸出數(shù)據(jù)將流向Event Recorder printf(循環(huán)計(jì)數(shù): %d, 模擬電壓: %.2f V\n, counter, voltage); voltage - 0.01f; if(voltage 0) voltage 3.3f; // 也可以使用EventRecorderDataTransfer直接發(fā)送數(shù)據(jù) char custom_msg[64]; int len snprintf(custom_msg, sizeof(custom_msg), 自定義消息: Counter%d\n, counter); if(len 0) { EventRecorderDataTransfer(EventRecorderDataTransferType_Data, custom_msg, len); } } return 0; }4. 調(diào)試實(shí)戰(zhàn)連接、查看與問(wèn)題排查代碼寫(xiě)好編譯下載后真正的挑戰(zhàn)才剛剛開(kāi)始。如何看到輸出沒(méi)輸出怎么辦4.1 正確連接與查看輸出硬件連接使用調(diào)試器如J-Link通過(guò)SWD接口連接X(jué)MC開(kāi)發(fā)板。Keil調(diào)試配置在“Debug”設(shè)置中確保你的調(diào)試器型號(hào)正確并且在“Trace”選項(xiàng)卡中勾選了“Enable”并且“Core Clock”設(shè)置為你芯片的實(shí)際主頻如144MHz。這是ITM數(shù)據(jù)流能被正確解析的關(guān)鍵。開(kāi)始調(diào)試點(diǎn)擊“Start/Stop Debug Session”CtrlF5進(jìn)入調(diào)試模式。打開(kāi)Debug Viewer在菜單欄選擇“View” - “Analysis Windows” - “Debug (printf) Viewer”。你也可以在“View” - “Serial Windows”下找到它。運(yùn)行程序點(diǎn)擊運(yùn)行F5。如果一切正常你將在Debug Viewer窗口中看到printf輸出的信息并且每條信息前面都有一個(gè)精確的時(shí)間戳。4.2 常見(jiàn)問(wèn)題與深度排查指南如果Debug Viewer一片空白不要慌按照以下鏈路逐步排查問(wèn)題現(xiàn)象Debug Viewer無(wú)任何輸出。排查點(diǎn)1Event Recorder初始化是否成功檢查在EventRecorderInitialize()語(yǔ)句后設(shè)一個(gè)斷點(diǎn)。單步執(zhí)行過(guò)去然后查看“View” - “Analysis Windows” - “Event Recorder”窗口。如果初始化成功你應(yīng)該能看到幾條Event Recorder自身產(chǎn)生的初始化事件如“Event Recorder started”。原因與解決如果連這些事件都沒(méi)有說(shuō)明Event Recorder庫(kù)本身未正確初始化。檢查工程中是否確實(shí)包含了EventRecorder.cEventRecorderConf.h文件是否在包含路徑中其配置參數(shù)尤其是緩沖區(qū)大小是否合理可以嘗試將緩沖區(qū)調(diào)大。堆棧大小是否足夠Event Recorder內(nèi)部會(huì)使用一些堆棧在啟動(dòng)文件如startup_XMC4700.s中適當(dāng)增大堆棧Stack_Size。排查點(diǎn)2ITM Trace功能是否被正確使能檢查這是最容易被忽略的一點(diǎn)進(jìn)入調(diào)試模式后打開(kāi)“View” - “Analysis Windows” - “Trace”窗口。查看ITM Stimulus Ports刺激端口。printf重定向通常使用Port 0。確保Port 0是“Enabled”狀態(tài)。原因與解決如果Port 0是禁用的數(shù)據(jù)無(wú)法發(fā)出。你需要在代碼中顯式使能它。在初始化Event Recorder之后添加以下代碼// 使能ITM端口0用于printf重定向 ITM-TER[0] 0x01; // 啟用端口0 // 確保ITM控制寄存器使能了ITM和同步數(shù)據(jù)包 ITM-TCR (1UL 0) | // ITM Enable (1UL 3) | // Sync Enable (重要) (0x01 16); // TraceBusID (可設(shè)為任意非零值)深層原理ITM有32個(gè)刺激端口Stimulus Ports軟件可以往不同的端口寫(xiě)數(shù)據(jù)以實(shí)現(xiàn)多路復(fù)用。Event Recorder庫(kù)默認(rèn)可能使用某個(gè)端口但有時(shí)配置不會(huì)自動(dòng)生效。手動(dòng)使能Port 0是最保險(xiǎn)的做法。TCR寄存器中的“Sync Enable”位至關(guān)重要它允許調(diào)試器在數(shù)據(jù)流中插入同步包從而正確地對(duì)齊和解析后續(xù)的數(shù)據(jù)。排查點(diǎn)3編譯器優(yōu)化是否導(dǎo)致了問(wèn)題檢查嘗試將優(yōu)化等級(jí)暫時(shí)調(diào)整為“-O0”無(wú)優(yōu)化。原因與解決高優(yōu)化等級(jí)可能會(huì)將一些看似“無(wú)效”的printf調(diào)用完全刪除或者內(nèi)聯(lián)、重組函數(shù)導(dǎo)致底層_sys_write的調(diào)用鏈路異常。在調(diào)試階段使用低優(yōu)化等級(jí)是穩(wěn)妥的選擇。排查點(diǎn)4_sys_write函數(shù)真的被調(diào)用了嗎檢查在_sys_write函數(shù)內(nèi)部設(shè)置一個(gè)斷點(diǎn)。運(yùn)行程序看斷點(diǎn)是否被觸發(fā)。原因與解決如果沒(méi)觸發(fā)說(shuō)明Microlib沒(méi)有調(diào)用你的重定向函數(shù)。確認(rèn)“Use MicroLIB”選項(xiàng)已勾選并且你的retarget.c文件被正確編譯鏈接到了工程中。排查點(diǎn)5數(shù)據(jù)是否已發(fā)出但顯示異?,F(xiàn)象Debug Viewer有數(shù)據(jù)但是亂碼、不換行或擠在一起。檢查與解決亂碼檢查Keil Debug配置中的“Trace” - “Core Clock”是否與芯片實(shí)際主頻嚴(yán)格一致。頻率設(shè)錯(cuò)會(huì)導(dǎo)致時(shí)間戳和數(shù)據(jù)分析錯(cuò)誤。不換行printf輸出的字符串末尾需要包含換行符\n。Debug Viewer依賴(lài)換行符來(lái)分隔消息行。數(shù)據(jù)截?cái)嗷騺G失增大EventRecorderConf.h中的EVENT_RECORD_SECTION_1_SIZE。如果輸出頻率非常高小的緩沖區(qū)可能被快速填滿(mǎn)并覆蓋舊數(shù)據(jù)。5. 進(jìn)階技巧與性能考量當(dāng)基礎(chǔ)功能跑通后我們可以考慮如何用得更好、更穩(wěn)。5.1 實(shí)現(xiàn)格式化輸入scanf/getchar的重定向雖然調(diào)試中輸出更重要但有時(shí)輸入也很有用例如模擬交互命令。重定向輸入意味著從Debug Viewer的“Command”窗口讀取數(shù)據(jù)。這需要實(shí)現(xiàn)_sys_read函數(shù)并利用Event Recorder的數(shù)據(jù)輸入功能。實(shí)現(xiàn)起來(lái)比輸出復(fù)雜因?yàn)樾枰幚懋惒綌?shù)據(jù)接收。一個(gè)常見(jiàn)的做法是開(kāi)辟一個(gè)環(huán)形緩沖區(qū)在_sys_read中從緩沖區(qū)取數(shù)據(jù)而通過(guò)一個(gè)后臺(tái)任務(wù)或中斷如SysTick來(lái)調(diào)用EventRecorderDataTransfer的接收函數(shù)將調(diào)試器發(fā)送的數(shù)據(jù)填充到緩沖區(qū)。由于篇幅限制這是一個(gè)更高級(jí)的話題但核心思路是雙向數(shù)據(jù)流和緩沖區(qū)管理。5.2 在多任務(wù)環(huán)境如FreeRTOS下的使用在RTOS中多個(gè)任務(wù)可能同時(shí)調(diào)用printf。雖然EventRecorderDataTransfer函數(shù)本身可能是線程安全的取決于實(shí)現(xiàn)但為了確保輸出消息的原子性不被其他任務(wù)打斷最好對(duì)printf調(diào)用進(jìn)行保護(hù)。// 使用互斥信號(hào)量保護(hù)printf SemaphoreHandle_t printfMutex; void safe_printf(const char *format, ...) { if(xSemaphoreTake(printfMutex, portMAX_DELAY) pdTRUE) { va_list args; va_start(args, format); vprintf(format, args); // vprintf是printf的可變參數(shù)版本 va_end(args); xSemaphoreGive(printfMutex); } } // 在任務(wù)中調(diào)用 safe_printf 替代 printf safe_printf(Task %s is running.\n, pcTaskGetName(NULL));5.3 性能影響評(píng)估與優(yōu)化使用ITM輸出對(duì)代碼執(zhí)行時(shí)間的影響微乎其微但并非為零。每次調(diào)用printf都會(huì)執(zhí)行格式化字符串和調(diào)用_sys_write的開(kāi)銷(xiāo)。在極端追求性能的循環(huán)或中斷服務(wù)程序中頻繁調(diào)用printf是不可取的。優(yōu)化建議條件編譯使用宏來(lái)控制調(diào)試輸出在發(fā)布版本中徹底關(guān)閉。#ifdef DEBUG_ENABLE #define DEBUG_PRINTF(...) printf(__VA_ARGS__) #else #define DEBUG_PRINTF(...) #endif減少格式化開(kāi)銷(xiāo)對(duì)于固定字符串直接使用puts或調(diào)用EventRecorderDataTransfer發(fā)送原始字符串避免printf的格式化解析過(guò)程。批量輸出將多條信息攢成一條大的字符串再輸出減少函數(shù)調(diào)用和ITM數(shù)據(jù)包開(kāi)銷(xiāo)。5.4 與UART打印的共存方案有時(shí)你可能既需要不占資源的Event Recorder調(diào)試又需要真實(shí)的串口輸出給其他設(shè)備。這很容易實(shí)現(xiàn)只需在_sys_write函數(shù)中同時(shí)將數(shù)據(jù)發(fā)送給Event Recorder和UART。int _sys_write(int handle, const unsigned char *buf, int len) { int result -1; // 1. 發(fā)送到Event Recorder if (EventRecorderDataTransfer(EventRecorderDataTransferType_Data, buf, len) ! 0) { result len; // 至少一個(gè)通道成功 } // 2. 同時(shí)發(fā)送到硬件UART (假設(shè)已初始化) if (UART_Transmit(uart_handle, buf, len) UART_STATUS_OK) { result len; } else { // 如果UART發(fā)送失敗但Event Recorder成功仍返回成功 // 可以根據(jù)需要調(diào)整錯(cuò)誤處理邏輯 } return result; }這種“雙發(fā)”機(jī)制在項(xiàng)目前期調(diào)試和后期現(xiàn)場(chǎng)日志收集時(shí)非常有用。經(jīng)過(guò)以上步驟你應(yīng)該已經(jīng)成功地將XMC項(xiàng)目的STDIO重定向到了Event Recorder。這個(gè)過(guò)程不僅僅是配置幾個(gè)選項(xiàng)更是對(duì)ARM Cortex-M調(diào)試體系、Microlib工作機(jī)制的一次深入理解。最大的收獲可能不是最終那一行行跳出的調(diào)試信息而是在排查“為什么沒(méi)輸出”的過(guò)程中對(duì)芯片底層調(diào)試模塊和工具鏈協(xié)作方式建立起的清晰認(rèn)知。下次當(dāng)你需要一種輕量、高效、不占硬件的日志輸出方式時(shí)Event Recorder絕對(duì)是一個(gè)值得信賴(lài)的選擇。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
九月影院義母在线播放| 丁香五月天AV在线| 久久五月婷| 精品视频99看在线视频| 国产亚洲成AV人片在线| 五月激情六月宗合| 婷婷五月天AV在| 色噜噜狠噜噜视频| 深爱激情九九五月天 | 丁香婷婷大香蕉| 小视频久久久aaa| 婷婷五月天色网久| 五月丁香激情啪啪| 久久婷婷资源| 91操人人操| 五月天综合色| www,婷婷五月天,com| 91九色超碰正在播放| 久色视频| 91久久| 色色色视频免费无码 | 小香蕉av| 99这里只有精品|v| 久久综合五月天| 久久狠色噜噜狠狠狠狠97| 99五月香婷婷丁香在线视频| 色色色网站| 婷婷五月视频| 五月婷婷之六月丁香| 欧美色色色色色色| 99在线视频喷水| 日日干夜夜干| 人人草人人爱| 婷婷五月天AV| 色噜噜狠狠色综合日日| 婷婷五月天综合在线| 丁香五月亚综合图片| 99在线观看精彩视频| 五月婷婷精品视频| 99caobi| 亚洲无码色| 丁香五月激情婷婷婷婷在线观看| 五月婷婷六月奇米网丁香| 五月婷婷激情网| av一区二区电影免费在线观看| 黄网在线播放| www.狠狠操| 婷婷涩涩五月天| 骚。com| 国产午夜成人AV在线播放| 激情综合区| 这里只有精彩亚洲视频推荐| 九九爱激情| 人妻性爱av网站| 丁香五月影视| 五月丁香激情综合啪| 91精品91久久久中77777久久玖玖九九| 果冻传媒A片一二三区| 99视频久久| 日韩在线99| 影音先锋777xfplay色资源网站| 五月丁香婷婷成人伊人网| www.91久久| XX久久| 久久加勒比| 色婷婷色丁香色欲av| 亚洲乱码日产精品BD| 这里只有精品免费视频| 国产精品99久久久久久久女警| 日韩无码色色| 婷婷综合网站| 亚洲网站观看视频| 久99精品视频| 久久久999精品| 人人摸人人操人人爽| 99色.com| 婷婷九月色| 婷婷丁香五月综合| 丁香五月婷婷天| 男人综合网| 五月丁香婷婷国产精品综合| 79色色| 激情5月婷婷| 五月婷视屏在线观看| 99热精品无码| 五月丁香综合激情| 99精品综合在线| 97碰碰碰免费公开在线视频| 国产成人亚洲综合亚洲| 婷婷五月色播网| 伊人网欧美在线男人天堂五月丁香 | 久久天堂色| 91精品国产色猫| 9久久久| 7777精品伊人久久久大香线蕉最新版| 婷婷激情小说网| 99惹在线精品免费观看| 99性爱视频网站| 九九热最新视频| 色情丁香五月婷婷精品| 成人做爰黄A片免费看直播室男男 久草热8精品视频在线观看 | 91碰碰碰久久久久| 五月天婷婷色在线视频免费观看| 天天天天天操| 丁香五月手机在线| 操逼电影免费看| 99视频在线观看视频| 丁香五月91| 婷丁香久综合| 亚洲色图五月丁香| 亚洲色啪| 日韩AV成人电影| 99热这里有精品首页10| 五月天婷婷色播在线网| 亚洲九区| 久久99日本精品视频免费观看| www.婷婷.com| 狠狠色噜噜狠狠| 9久热在线视频精品| 狠狠色丁香| 色噜噜狠狠狠狠色综合久欧美| 91丨九色丨老农村| 五月天婷婷黄色| 婷婷五月天干干| 五月丁香无码| 九九人人看| 五月激情日本在线| 97干97色| 日亚二欧美| 丁香伊人激情| 狠狠穞A片一區二區三區| 色在线免费观看| 色五月激情| 色五月激情基地| 黄网免费观看| 激情婷| 六月香五月婷| 99色综合| 丁香婷婷五月天亚洲| 五月丁香网站| 99热欧美精品| www夜夜操com| 久久婷鲁| 色永久| 性做爰1一7伦| 欧美丁香婷婷五月天| 免费黄色视频网址| 亚洲五月天伊人| 级情九色| 亚洲第一色色色| 婷婷色啪| 99热主页日本| 日本啪啪网| 丁香六月亚洲| 色婷婷成人| 大色鬼综合| a色色片| 六月丁香综合| 婷婷五月花| 天天日 天天草| 五月婷婷久久大片| 婷婷婷婷色| 久久久天堂国产精品女人| 超碰在线观看9| 5五月综合网亚洲| 久cao香蕉影院| 亚洲精品乱码久久久久99| 成人在线精品| 免费观看亚洲AV片| 另类少妇人与禽zOZZ0性伦| 玖玖国产视频一区| 亚洲欧洲中文日韩久久AV乱码| 色爱99| 色五月激情综合网| 五月天激情子轮| 五月天婷婷激情六月久久| 人人干Av| 99精品一二三四视频| 97色片| 丁香五月婷婷激情网| 97福利视频| 欧美日本VA| 亚洲精品字幕在线观看| 五月天播播| 99爱99操| 伊人五月婷| 丁香五月婷老师| 超碰二区| 熟妇高潮一区av| 无码 色| 亚洲无码成人网| 青草激情综合| 激情五月色播五月| 97激情五月天| 五月婷婷日| 五月丁香| 色五月丁香婷婷| www.91操| a片在线免费观看一区| 婷婷九月亚洲| 婷婷丁香综合| 天天综合激情| 亚洲AV第二区国产精品| AV大片在线播放| 久久婷婷五月综合| 婷婷六月天亚州| 人人叉久| 五月天丁香久久综合| 2020日日干| 激情涩涩网| 99ri视频在线观看| 538在线精品| 丁香五月在线观看| 色婷婷六月天在线| 久久视频这里都是精品| 色五月综合网| 97色女人在线| 碰超在线九色| 91九色白丝| 色999;丁香五月| 五月婷婷丁香av| 丁香六月激情四射| 天堂网色色| 亚洲无AV在线中文字幕| 色五月AV| 成人看片网站| 欧美在线看| 免费视频WWW在线观看网站| 亭亭五月丁香五月天激情| 77799热| 99在线视频免费| 密着浓厚中出乚交尾GvG935| 欧美激情五月天| 激情综合色图| 2020日日干| 色婷婷亚洲在线| 超碰91在线| 国产1区2区| 激情五月天婷婷播播久久综合91| 欧美性生交A片免费看| 五月欧美色播| VA婷婷| 一二区成人电影| 无码 av电影| 激情综合五月婷婷| 99热这里是精品| 丁香六月久久| 99热国产这里只有精品| 激情五月天影院| 任你爽精品免费视频6| 深情五月天| 婷婷五月天激情综合深爱| 久热只有这里有精品| 9久久AV| 激情久久网 | www.色婷婷| AVDV久久| 欧美五月婷婷| 综合激情视频| 五月天婷婷综合| 日韩成人中文字幕| 五月婷婷无码| 可以看的av| 婷婷狠狠操| 91色婷婷综合久久中文字幕二区| 激情综合一| 久久九九色| 97人人干人人操| 亚洲激情四射| 67久久| 1024人妻无码中文字幕| 五月丁香六月色| 激情五月狠狠| 97精品自拍视频| 天天色天天日| 无码人妻激情| 久久大香蕉| 无码人妻丰满熟妇奶水区码| 久久九九一區| 色啪影院| 26uuu欧美亚洲日韩| 精品人妻久久久久久久| 这里只有精品视频| 99色色| 五月丁香综合精品欧美| 九九re精品视频在线观看 | 99热这里只有精品搜| 丁香五月激情网| 9999热在线免费观看| 91丨九色|PRNY熟妇| 亚洲中文字幕AV| 丁香婷婷精品视频| 婷婷五月色播放| AV成人在线播放| 色五月av| 亚洲啪啪精品| 婷婷八月激情| 99热这里只有精品青草| 久碰视频| 99久在线精品99re5热视频| 久久9视频欧美| 侠女刀之记忆电影在线看免费| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 婷婷伊人久久| 99久久超级| www.yw色| 亚洲丁香五月深爱五月| 天天综合色| a在线观看| 丁香九月激情在线视频| 无码一区二区三区四区五区| 亚洲第一综合| 大香蕉久久综合网| 99操逼| 5月婷婷激情6月| 国产.亚洲.欧洲视频在线| 五月天激情小说| 99热传媒| 91精品电影18T| 婷婷成人视频| 91av成人| 天天艹夜夜爽| 色婷婷色99国产综合精品| 久久日婷婷| 97精品综合久久| 九九爱激情| 操一区| 日本美女97在线视频| 亚洲在线操| 99热的无码| 五月婷婷香| 色五月婷婷91在线| 99aese| 久久久精品色| …亚洲黄色在线播放日韩、av中文a…| 激情5月婷婷狠狠干| 色婷久久| 亚洲国产另类av| 激情五月婷婷在线区| 亚洲av综合网| 思思99久久| 婷婷播5月| 秋霞电影理论| 亚洲天天操| 丁香五月婷婷99| 丁香五月av在线| 久久五月丁香| 午夜大香蕉| 亚洲激情综合| 97日在线视频| 丁香激情四射| 日本精品99网站| 丁香 亚洲 久久| 久久99激情五月天| 丁香五月亚洲| 日本久久9| 天天高潮夜夜爽| 丁香六月伊人| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 玖玖精品视频99| 亚洲综合激情五月久久| 色婷婷六月激情| 五月综合激情| 岛国资源网| 疯狂做受XXXX高潮A片动画| 五月丁香日本一抹本| 91丨九色丨东北熟女| www.maotanji.com| 99视频内射三四| 九九99九九99偷拍视频免费看| 91精品久久久久、久五月天| AV成人在线播放| 天天干电影| 婷婷激情综合色五月久久图片| 激情图片五月天| 777久久久| 丁香五月六月综合激情| 久久色五月| 高清不卡一区| 五月丁香少妇网| 性欧美大战久久久久久久83| 婷婷天天日婷婷| 九九十99视频| 99操视频| 激情婷婷黄色五月| 超碰日日操| 9久久精品| 色五月亚洲| 激情婷婷丁香五月| 超级97碰碰| 成人在线视频一区| 婷婷五月综合欧美在线播放| 婷婷久久欧美| 1024日韩| 婷婷五月六月激情| 色五月综合| 国产一级片| 五月天激情网页| 日本全黄一级999| 丁香五月六月婷婷综合| 99视频久久免费视频| 五月停性愛| 久久婷婷五月综合激情国产| 亚洲婷婷丁香五月亚洲| 懂色av蜜臀av粉嫩av永陈冠希| 欧美天堂久久| 亚洲精品五月| 成人在线精品| 91九色偷拍| 玖玖爱伊人| 久久久久综合激动五月天| 丁香影院五月综合| 丁香五月婷婷基地| 五月天激情视频| 少妇丁香婷婷| 亚洲成片在线观看| 无码日本精品XXXXXXXXX | 99热这里只有精品国产精品| 精品婷婷五| 久久9热综合| 亚洲日日日| 色综合综合网| 激情综合4月| 久久综合综合综合| 久久小说| 欧美婷婷综合| 亚洲av日韩无码| 亚洲综合婷婷| www.天天干.com| 女人被男人吃奶到高潮| 丁香婷婷六月激情综合| 亚洲sesesese| 国产av基地| 人人操9| 三级黄网站| www,99热| 五月天另类图片| 久久综合激情五月天| 色五月自偷自拍婷婷婷婷| 五月天激情国产综合婷婷婷| 日韩啪| Www.狠狠| 色日本网| 99亚洲色| 日本在线噜噜| 丁香五月亚洲综合| 激情婷婷五月天伊人在线观看| yellow视频在线观看91| 丁香五月婷婷激情四射| www.com任你艹| 我淫我色婷婷五月天激情四射| 99热这里都是精品| 色综合五月天| 97人人干| 婷婷五月天久久久| 亚洲色涩视频| www.色99| 热的五码久久精品| 国产婷婷色五月| 婷婷五月激情图片| 婷婷五月AV| 超碰在线中文字幕| 亚洲人妻Av| 久久网婷婷| 99干在线| 五月天色色婷婷| 天堂色色色| 亚洲中文AV网站| 狠狠久久婷五月综合色| 久久久.www| 亞洲自怕| www.激情五月天.con| 丁香五月婷婷激情蜜桃| 91性人人| 丁香六月婷婷开心| 涩综合在线 | 97成人在线视频精品| 激情五月九九九| 97国产精品女人碰碰| 嫩草视频| 婷婷五月天黄色网址| 激情四射婷婷色色色| 丁香五月婷婷五月| 五月天狠狠网站| 丁香五月天天哦| 久久五月六月| 亚洲99在线视频| 五月丁香无码| 激情亚洲婷婷| 国色天香成人网| 国产毛片精品一区二区色欲黄A片 99国产在线精品视频 | 亚洲av综合网| 色婷婷小说| 久久婷婷免费| 狼人狠狠操| 激情五月综合网| 五月丁香五月丁香| 天堂草在线看www| 日本高清久| 婷婷久久色| 国产伦亲子伦亲子视频观看| 在线99精品| WWW,五月天| 色五月综合网| 久久天堂网| 欧洲色色| 中文AV在线观看| 99re在线观看| 97婷婷五月| 久月婷婷| 婷婷丁香色无五月| 五月丁香六月在线| 热久久婷婷| 9久精品| 亭亭色天香| 五月天激情网站| 色婷婷成人| 97碰 在线视频观看| 五月婷婷六月天| 91啪级电影| 站长推荐无码播放| 狠狠狠狠狠狠草| 91超级碰碰碰| 99久久极情精品一区| 色屌丝中文字幕| 精品婷婷丁香五| 一起草无码视频| 99超级碰碰| 五月天激情小说电影| 色综合色| 久在热99| 思思视频这里是精品| 精品无吗va视频免费观看| 99精品综合| 激情五月份婷婷| 色欲香综合网| www.超碰在线| 久久婷婷六月综合综合| 亚洲中文无码成人| 五月婷婷五月天| 色色网站日本91| 精品久热| 色色色五月婷| 久久九九经典| www.av骚货| 色五月婷婷久久| 日本在线视频播放91| 激情五月婷婷综合色播小说| 欧美 日韩 人妻 高清 中文| 色五月综合网| 几激情五月婷婷色五月色天堂| 97色久| 久久这里有精品99| 99热超| 天天摸,天天爽| 一起草Av| 久久女人天堂| 九热...av| www:99热视频| 丁香六月色婷婷| 三级毛片视频| 天天久久综合| 婷婷五月丁香第四色超碰在线| 超碰三级秋霞| 欧美在线干| 日韩色色色色色| 97操操| 丁香五月香蕉| 久9热| 黄网在线播放| 五月天开心网| 日韩一区二区三区无码| 无码91中文字幕| 第六色在线| 色一情一乱一伦一区二区三区| www.五月天婷婷.com| 深爱五月月天| 激情五月综合婷婷| 色久婷婷网| 亚洲精品又粗又大又爽A片| 婷婷激情五月天激情在线| 激情综合网五月激情| 久99久视频| 超碰人人色| 激情五月天久久丁香| 99色精品| 森林影视大全,最好看的2019年视频| 中文字幕乱码亚洲精品一区 | 91操人视频| 97色碰| 亚洲成人色五月天| 亚洲电影在线观看| 婷婷狠狠干| 久婷久婷激情肉| 六月婷婷激情图片| 久er7久热| 久久综合久色欧美综合狠狠| 丁香花婷婷五月天| 成人av播放| 色,激情五月天| 色婷婷基地 | 欧美草久久五月天91| 亚洲AV无码一区二| 人人草人人爱| 激情婷婷五月天日本系列| 亚洲自拍天堂| 九九99久久| 五月天激情啪啪| 中文字幕,综合,91| 大学生高潮无套内谢视频| 97五月天婷婷| 超碰av在线| 五月丁香亭亭电影久久| 91大神操美女| 校园激情 亚洲| 久久婷婷五月激情综合| 嫩草AV久久伊人妇女超级A| 中国激情网| 久色网址| 老司机视频lsj爱就色| 日本99久久| 性色做爰片在线观看WW| 日韩一级网站| 五月天婷婷成人资源站| 综合久久影院| 欧洲综合一区| 99这里都是精品| 玖玖资源站中文| 99五月丁香丁| 99热超| 国产特级毛片AAAAAAA高清| 蜘蛛女侠2003满天星免费观看| 大香蕉久久伊人婷婷五月丁香| 91精选国| 中文字幕人成乱码在线观看| 欧美三级欧美一级| 天天爽免费视频| 久热这里这里有精品| 色婷婷色| 97人碰人操| 色色com| 久久久久久人妻| 九九草热在线观看| 亭亭丁香aV| 色99在线看| 五月天丁香婷婷视频网址| 99精品性爱| 婷婷丁香五月天激情| 六月丁香婷婷网| 99综合久久| 久久九⑨| 激情九九九九| 3www激情| 狠狠草婷婷| 天天久久人人| 色欲婷婷五月天| 婷婷综合九月| 中文字幕五月久久婷婷| 婷婷黄色网| 成人.在线日韩| 日韩成人电影AV| 婷婷在线精品| 丁香婷婷五月色成人网站| 婷婷五月天综合久久| 亚洲激情五月丁香久久久久| 亚洲激情五月婷婷日日| 欧美成人无码一区二区三区| 这里只有精品亚洲| 日本精品在线噜噜噜| 色五月婷婷操逼| 五月婷婷九九久久| www.99热这里精品| 第四色大香蕉| 久99久在线观看| 人妻激情视频| 伊人久久大香蕉网| 丁香五月日韩| 久久综合爱| 久久婷婷综合网| 综合久久五月天| 久婷婷色| www.99在线| 久久丁香五月婷婷| 亚洲无AV在线中文字幕| 精品一二三区久久AAA片| 亚洲色婷婷| 五月天激情视频| 色九月| 国产XXXX搡XXXXX搡麻豆| 无码成人AAAAA毛片AI换脸| 精品一二三区久久AAA片| 国产成人精品一区二三区熟女在线| 中国女人做爰A片| 97在线观视频免费观看| 美女视频图片久久91| 色九月综合网| 婷婷射图| 九九这里有精品视频| 狠狠干总合| 超碰狠狠色| www.com五月天| 久9热视频| 超碰在线91| 日日做A爰片久久毛片A片英语| 丁香五月五月婷婷欧美大香蕉| 999热这里只有美国精品| www,com,五月色色| 99re8在这里只有精品| 色色99| 67194线路二在线观看| 色综合香蕉| 婷婷色婷婷| 26uuuavcom| 日日爽日日| 成人AV在线网站| 最近中文字幕在线中文视频| 91seAV| 99热啪啪| 天天天天天久久久久久| 久久久99久久| 五月丁香本色在线观看| 丁香五月影视| 色色婷婷综合网| 激情图片久久| 国产偷人爽久久久久久老妇APP| 去色色五月天| 婷婷五月天av网| WWW,五月| 色色色网站| 性色av大香综合| 五月婷婷综合网在线播放| 深爱五月激情| 99日韩| 丁香综合久久| 久热2025无码| 婷婷欧美激情综合| 97操碰人免费| 涩综合在线 | 色五月婷婷激情| 播五月婷婷开心| 丁香婷婷婷五月| www.99热| 91avse| 精品A√| 中文字幕日产A片在线看| 免费亚洲成人电影AV| 日韩成人精品一区久久久久| 三级黄网站| 美国不卡视频| 99国产小视频| 99操逼| 婷婷五月综合网| 99综合免费视频| 五月丁香啪| 丁香五月婷婷啪| 五月天婷婷色综合| 任你弄在线视频免费| 激情综合5月| 五月丁香六月婷| 婷婷丁香五月天大香蕉| 五月丁香六月婷婷网站| 日本乱子人伦在线视频| 婷婷色五月综合丁香| 五月丁香六月香香蕉| 色青五月天| 99视频网| 久久久久9久无码视频| 色播五月天天| 色五月婷婷中文字幕| 日本91在线| 99福利导航| 丁香五月综合久久| 色五月人妻| 欧美日韩成人h| 天天舔天天| 青青草视频免费观看| 丁香婷婷五月天色综合| 99ri精品| 爱爱色五月天| 欧美亚洲999| 97人人干人人操| 婷婷色色五月| 色丁香久久| 久久只有这里精品免费| 日日干天天| 99色综合网| 久久婷婷色| 天天操夜夜爽天天操| 熟女激情五月天| 亚洲丁香花色| 丁香婷婷婷婷十二月在线观看视频| 亚洲视频一区| 最新亚洲色色网| 亚洲V国产V欧美V久久久久久| 国产精品噜噜在线视频| 亚洲成人AV高清字幕| 色狠狠色狠狠| 微拍92| 综合网亚洲| 99色| 婷婷丁香在线| 26uuu.| 亚洲精品又粗又大又爽A片 | 五月丁香九九九综合| WWW.HENHENL.| 婷婷深爱五月| 色99在线视频| www.色婷婷| 天天操夜夜肏| 丁香五月综合久久综合| 激情av| 深爱激情五月天色婷婷| 影音先锋男人AV资源站| 色婷婷在线视频| 成人看片网站| 色吧婷婷五月亚洲| 五月天桃色深爱网| 这里只有精品免费在线视频| 99国产精品久久久久久久久久久 | 日本天天操| 99色色爰| 1024欧美看片| 婷婷久久五月丁香| 亚洲五月婷婷在线| 国产亚洲色婷婷久久99精品9j| 欧美 日韩 成人 在线| 激情深愛五月視頻| 99热伊人综合| 久久久18| 思思热热久久| 99久久www| 婷婷综合五月激情| 成人在线高清| 五月丁香影视| 狠狠草在线观看| 色色综合色视频| www.99操.com| 综合色播| 色五月成人| 色婷婷视频| 婷婷99丁香| 公的粗大挺进了我的密道| 婷婷伊人网| 凹凸7777操操操| 色吊丝中文字幕| 色五月亚洲| 激情五月色婷婷| 影音先锋 91工厂| 精品成人在线观看| 天天色中文字幕女优AV| 91欧美| 中文乱子伦视频| 激情涩涩网| 久青操| 琪琪狠狠干| 亚洲色五月| 欧美精产国品一二三区| 极品五月天| 思思久久99热| 99re在线精品视频| 国产亚洲99久久精品熟女| 五月丁香啪啪| 99热这里只有精品1025| 99爱在线精品视频免费观看| 婷婷激情综合无月| 五月婷婷久久久| 操婷婷基地| 综合福利网| www.com操| 色区久久| 久久婷婷五月综合激情国产| 97超碰在线观看免费| 欧洲MV日韩MV国产| 精品久热| 婷婷九月| 91精品无码| 欧美这里只有精品| 国产综合网在线| 台湾佬天天日丁香婷婷五月天| 日日夜夜狠狠婷婷色| 四虎成人精品永久免费AV九九| 欧美男女婷婷| 任我肏视频精品| 婷婷丁香五月综合网| 国产AV一区二区三区日韩| 99精品热| 丁香五月六月| 青草五月天| 激情www| 99在线精品观看99| www色色com| 99自拍网| 97香蕉碰碰人妻国产欧美| 婷婷五月综激情| 激情AV在线| 99热免费精品| 久久久激情视频| 91九色国产在线| 九月激情网| 激情五月天色色| 青青草成人网| 久久婷婷五月天| 操人无码| 五月丁香六月激情| 免费在线观看AV网站| 最新无毒无码AV| 91九色PORNY肉丝在线| 五月伊人91| 久久久久九九九九视屏小说88| www日本熟妇99在线视频| 色情网综合| 97日日碰碰| 五月婷婷丁香啪啪| 丁香大香蕉| 五月丁香啪啪啪| 亚洲精品又粗又大又爽A片| 国产乱妇无乱码大黄AA片| 久九男女天堂| 在线免费视频caop| 久久精品五月| 91成人品| 精品婷婷五月天| 丁香五月天啪啪激情综合网| 就爱射中文字幕资源网| 丁香五月Av| 色情五月综合婷婷| 99激情视频| 无码AV大香线蕉伊人| 超碰网站在线观看| 久久亚洲婷婷| www.狠狠操.con| 骚。com| 粉嫩av蜜桃av蜜臀av| 99热超碰| 任我肏视频精品| 天天操无码| 亚洲第一色色色色| 99re8这里只有精品99re8热视频| 丁香六月久久| 内射在线CHINESE| 色吊丝中文字幕| 超碰人人色| 丁香婷婷五色月| 婷婷成人五月天成人文学| 欧美性爱五月天| 亚州第一黄网| 99色色网| 超碰色热| 色色激情五月天| 思思w99| 97人人看| 色色色九九九五月婷婷| 欧美色色色色色色色| 成人婷婷五月| 色婷婷欧美| 99久久国产综合精品五月天喷水\| 六月婷婷香蕉| 热99只有精品| 欧美丁香五月97色| 99久热视频在线| 五月婷婷激情综合| 色久五月天| www.婷婷五月天.com| 人操91在线| 888精品福利地址| 丁香五月婷婷五月天| 乱岳熟女50岁| 九九99九九99偷拍视频免费看| 狠狠久综合| 99成人在线观看| 婷婷五月天情色| 欧美大片| www99热| 色五月AV| 色综合色香蕉网| 综合五月草| 国产无人区大片| 99青青草99| 丁香婷婷激情五月| 久久久久久久久久8888| 婷婷之玖玖| 精品九九视频| 五月婷婷啪啪| 另类综合激情| 这里只有精品视频在线| 婷婷丁香激情五月天色色色| 天天综合亚洲综合网天天αⅴ| 丁香五月激情五月| 热99热久| 激情五月天小说视频| 五月香婷婷| 五月丁香婷婷啪啪| 色九亚洲| 91日韩美女被插视频| 第四色网婷婷| 第四色26uuu| 成人美女网| 日韩成人五月天| 99爱视频免费| 99熟女| 欧美婷婷丁香五月社区| 色99在线看| 色色色com| 久热爱大香蕉在线蜜臀悦色| 亚洲色婷婷视频| 99国产精品久久久久久久久久久| 狠狠做五月| 久久六月天| 五月丁香网视频| 九九av| 婷婷五月天AV网| 丁香五月成人社区| 97福利视频| 亚洲色婷婷五月天| 丁香亭亭久久| 欧美在线| 日韩婷婷五月天| 精品欧美一区二区三区久久久| 五月婷婷六月激情在线| 欧美精品中文字幕亚洲专区| 91视屏在线观看com.wwwvv| 亚洲亚洲人成综合网络| 五月天色婷婷视频| 亚洲乱码日产精品BD| 2025天天爽天天摸| www.玖玖九| 激情5月婷婷| 成人在线日韩欧美| 97碰在线| 夜夜操夜夜爽| 亚洲欧洲中文日韩久久AV乱码| 婷婷五月天人妻| 丁香五月 性爱| 99热久| 欧美 日韩 成人在线| 丁香婷婷深情五月亚洲| 久久久久综合激动五月天| 牛色色碰| 日日夜夜狠狠操| 五月婷婷深深爱| 深爱五月激情| 婷婷五月开心中文字幕色| 亚洲丁香婷婷| 激情小说婷婷| 久久久久久欧美精品se一二三四| 五月综合激情网| 五月天成人在线| 伊人大香蕉在线视频| 色综合丁香| 桃色激情婷婷伊人网| 日韩精品VIP| 思思99久久| 99无码免费视频| 色九月丁香婷婷蜜桃在线观看| 欧美精品18| 国产精品久久久99视频| 五月婷婷啪啪啪啪| 综合99久久天天综合| 国产99热在线看| 婷婷五月天av小说| 久久激情五月天| 操91| 九九热免费| 玖玖视频福利| 秋霞九九无码| 超碰在线国产| 丁香五月天成人| 网色99| 久9久视频精品| 97碰碰视频在线观看| 丁香五月网| 激情婷婷在线中文字幕| 亚洲日韩一页精品发布| 夜色综合网| 中文字幕簧片| 久久艹99| 色综合99无码| 99精品久久久久久久婷婷| 欧洲亚洲激情五月天在线| 成人一级片| 91干婷婷| 激情五月天视频| 丁香五月天啪啪| 天天婷婷天天| 丁香婷婷五月六月久久| 96丁香婷婷九月蜜桃综合久久| 五月婷婷综合激情网| 五月婷婷福利| 五月丁香六月婷婷综合在线| 丁香五月天社区婷婷| 最近中文字幕大全免费版在线| 亚洲综合在线播放| 天天擼久久擼在线| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 在线视频99| VA婷婷亚洲| 九九熱最新視頻| 香蕉网久久| 香港九九六区八区99| 五月天婷婷色| 婷婷中文无码| 色五月综合在线| 99热这里只有精品2024| 香蕉AV777XXX色综合一区| 人人九色| 婷婷噜噜| 欧美婷婷五月天综合| 丁香五月网络网络| 婷婷五月丁香久久| www激情网站| www.91AV.com| 久久R激情| 99在线精品免费视频| 亚洲激情网| 综合激情在线| 色综合天天| 亚洲另类视频| 激情六月一二| 亚洲人妻一区二区| 丁香六月 人妻| 5月婷婷综合| www.激情.com.| 大香蕉婷婷五月天| 色婷婷五月色| 猫咪伊人久久| 婷婷久久伊人| 激情亭亭五月| 日韩免费99| 婷婷五月激情综合啪啪| 日本A片一区| www.seqingwuyuetian| www。久久久久一b。Cc| 狠狠精品干练久久久无码中文字幕| 丁香在线视频| 精品久热| 福利视频在线播放| 精品夜夜澡人妻无码AV| 欧美性猛交99久久久久99按摩| 中文字幕无码人妻少妇免费视频| 97色色色| 色婷婷基地 | 最近中文字幕2019视频1| 91色色五月天| 天天干天天av天天射| 夜色爱爱亚洲| 任你干嘛免费视频播放| 亚洲成人超碰| 婷婷精品在线| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 成 人片 黄 色 大 片| 偷偷与邻居做爰完整视频| 亚洲无AV在线中文字幕| 婷婷五月丁香青青草在线| Www.se.久久| 99亚洲精美视频在线观看| 99九九99九九九视频精彩| 99热99在线| 五月人人丁香婷婷五月人人丁香| 婷婷丁香www视频日本韩国| 色婷婷综合久久久久| 99热这里只有精品2| 91狠狠色丁香婷婷综合久久| 亚洲亚洲人成综合网络| 九久九精品| 一起草av在线观看| 97热精品| 色婷婷中文字母五月丁香| 草AV9999| 这里只有精品免费视频| 丁香五月婷婷激情网| 色色99| www...com黄在线观看| 婷婷激情五月视频| 婷婷综合激情| 伦99热| 人人草人人爱| www.夜夜操| 亚洲成人av中文| 五月天丁香综合久久国产| 无码一区二区三区四区五区| 夜夜做夜夜愛| 99久热在线精品| 麻豆AV一区二区三区| 婷婷黄色五月| 成人噜噜网| 情婷婷五月天| 99热精品在线| 色婷婷伊人激情在线观看| 久久亚洲无码| 人人舔人人色人人高潮| 激情五月天社区| 精品久热| 激情五月婷黄版| 美女五月天婷婷| 色天五月天在线观看视频| 色婷婷亚洲婷婷| 九九热青青草| 五月天婷婷一起草| 操骚货在线| 五月丁香六月激情综合| 国内久久亭亭| 99热在线这里只有精品| 久久女人天堂| 中文字幕人妻一区二区| 亚洲免费看片| 五月丁香淫淫婷婷婷| 天天色播| 日本久久人| 亚洲性图一区二区| 五月激情婷婷丁香| 超碰京东热av男人的天堂| 538在线| 九九精品自拍| 精品国产a| 激情纯色婷婷五月天在线不卡视频| 九月综合| 五月天大香蕉婷| 五月婷婷综合网在线播放| 激情性爱五月| 色婷婷五月天av在线| 五月丁香久人妻中文| www.婷婷| 极品五月天| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | 五月天丁香成人| 九九热视频思思| 亚洲无AV在线中文字幕| 黄色片区子| 婷婷五月天六月丁香| 婷婷五月天 丁香五月天 裸体| 蜜乳9188| 91久久久久久久| 综合久久五月天| 色五月综合激情| 天天射美女| 国产亚洲在线| 丁香六月婷婷久久高清| 五月婷婷 激情五月| 色五月综合激情网| 日韩超碰在线| 婷婷丁香六月天激情四射网| 色综合五月婷婷狠狠干| 激情丁香婷婷| 97人妻碰碰中文无码久热丝袜| 婷婷丁香五月婷婷| av一区二区电影免费在线观看| 九月婷婷丁香| 国产真实乱对白精彩| 久久网站观看免费欧洲国产 | 精品久久婷婷| 99热都是精品| 久久 中文 日本| 国产婷婷色综合AV蜜臀AV| 日本波多野结衣视频| 五月婷婷丁香av| www.玖玖九| 99色最新在线视频网站| 教师性爱毛片| 热99热9| 亚洲日本三级片| 婷婷五月天亚洲丁香| 亚洲xx在线| 婷婷.com| 97在线/日本| 婷婷 伊人 久久| 伊人久久婷|