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

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
返回資訊列表
久色网| 久久婷婷亚洲| 都市激情五月婷婷综合| 超碰不卡在线| 久久综合站| 五月丁香 啪啪| 手机看片日日做夜夜| 婷婷五月综合网激情| 色情五月综合婷婷| 五月天操逼网| 人人摸人人澡人人| 人人摸人人| 久久机热这里只有精品免费视频| 9久热在线视频精品| 99性爱| 久色婷婷200| 亚洲精品乱码久久久久久按摩观| 成人av中文字幕| av网站不卡在线| 激情综合久久| 色五月激情五月开心五月| 五月婷久久在线| 天搞天天天天天| 伊人婷婷91| 久久久国产精品黄毛片| 专区无日本视频高清8| 中文字幕 中文字幕明步| 日日干综合| 99ri国产| 人妻久久久久| 日韩 欧美 国产 一区 二区| 欧美成性色| 色婷婷综合成人| 五月婷婷综合在线亚洲视频| 伊人婷婷福利网| 噼里啪啦在线观看免费完整版视频| 婷婷五月天天爽| 天天色综合图片| 国产在线另类五月婷婷| 97五月天婷婷| 天天操比比| 色5月婷婷| 九九九九九无码| 激情99热| 97在线精品| 9视频1在线| 五月婷九月| 99燥99日| 色色色色色色色色色色色色色五月天| 91超级碰人人操| 国产高清av黄色看片| 九九碰九九爱97| 99这里只有| 人妻av在线| 9热视频在线观看| 久久婷婷五月天蜜桃| 亚洲精品五月| 婷婷丁香六月| 婷婷五月花| 婷婷99| 中文av网| 67久久| 色婷婷激情视频| 久久人妻超碰一区| 操久久精| 久久久色婷婷五月天| 五月天五月色婷婷综合| 亚洲国产色色| 婷婷伊人中文字幕| 亚洲愉拍99热成人精品| 91pornav在线| 五月天婷婷在线啪啪视频| 天天操夜夜夜拍拍拍| 玖玖资源网站最新站| 久久婷婷一级片| 5月丁香六月婷婷| 新精品99| 色综合色综合网| 色婷婷六月| 亚洲欧洲美女在线观| 五月天婷婷激情四射综合| 九月大香蕉| 99ri在线视频| 色色综合色| 久热只有精品| 国产精品第一国产精品| 五月丁香91| 欧美狠狠草| 五月噜噜| 极品人妻VideOssS人妻| 大香蕉75线| 91性高潮久久久久久久久| 五月噜噜噜色综合| 2017人人操| 激情九月婷婷| 色色色婷婷五月| 少妇激情五月婷婷| 99色婷婷| 99毛片| www.激情在线| 超碰二区| 中文字幕丰满乱孑伦无码专区| 婷婷五月丁香综合激情| 欧美丁香婷婷五月天| 色婷婷亚洲婷婷| 丁香情色五月| 六月丁香成人| 99热这里| 操逼巨乳91| 九九爱看亚洲| 丁香六月婷婷| 色色色色欧洲| 91美女被操| 丁香五月婷婷啪啪视频| 丁香婷婷六月激情| 成人AV在线电影| www.99免费视频| 日韩成人网站精品久久大全| 人妻啪啪啪| 日韩无码乱轮| 丁香五月婷婷在线观看| 337久久| 天天性视频| 野战毛片三一3| 久久人妻精品| 99热精品少| 色婷婷综合网| 五月丁香花激情综合网| 色色com| 激情性爱婷婷| 天天日天天爱天天噪| 丁香五月天婷婷激情| 91天堂网综合| 超碰国产在线观看| 97热九九| 亚洲午夜电影| 美女黄频aⅴ视频| 五月婷婷我| 激情色色| 色情丁香五月天| 一级黄色影片| 五月天婷婷三级黄| 开心五月天激情网| 人妻videos人妻高清| 深爱综合网| 超碰成人在线观看| 婷婷五月天成人网| 婷婷丁香午夜综合影视| 99燥99日| 直接看的AV| 亚洲视频在线网站| 日日夜夜天天综合| 一区二区免费看| 六月丁丁香| 亚洲色五月婷婷| 婷婷色成人| 95精品区一区二| 五月丁香色婷婷基地| 国产伦亲子伦亲子视频观看| 影音先锋777xfplay色资源网站| 亚洲人操亚洲人| 五月婷婷免费视频| www.五月婷| 天天操综合网| 99色综合网| 婷婷大香蕉| 91成人视频| 国产激情综合| 五月色丁香激情| www.wuyuetian啪啪| 六月丁香婷婷尤物| 超碰av天堂| 婷婷五月丁香久久| 色宗合久久五月婷婷| 91丨九色丨国产| 色丁香影院| 久久码久久无清| 日日干天天| 国产激情视频在线观看| 成人做爰A片免费看视频| 天天综合天天玩夜夜玩天天玩夜夜玩 | 日本视频久久| 久久丁香五月| 99热这里只有在线播放| 久久香视频| 9热在线观看| 国产在线中文字幕| 大鸡巴伊人网| 九九热视频在线观看| 5月婷婷六月丁香| 丁香五月婷婷久久久| 丁香六月天| 亚洲精品99| 最近中文字幕在线中文视频| 五月天婷婷影院| 四色综合网| 欧美午夜乱妇午夜福利| 97视频久久| 色五月开心五月激情五月| 婷婷狠狠综合网入口| 免费视频无码| 五月色精品| 婷婷五月丁香超碰| www.99色在线| 九热视频| 操碰99| 婷婷六月色丁香视频在线观看| 男女啪啪视频久 9| 婷婷五月在线观看| 99啪啪网| 激情五月天激情五月天| 国产性色蜜乳| 久月丁香爱婷婷综合| 97色综合视频| 日本激情五月天‘| 丁香九月激情| 亚洲婷婷五月| 成人在线免费网址| 成人做爰黄A片免费看直播室男男| 丁香六月婷婷综合缴| 色色综合日韩| 五月丁香久人妻中文| 97婷婷五月丁香| 五月婷婷激情综合| www.射伊蕉婷婷| 亚洲六月婷| 久久99精品九九久久久婷婷| 99ri视频在线播放| 激情久久月| 超碰人妻公开在线| 成人中文网| www.超碰在线| 大香蕉婷婷五月天| 99热久草| 色色免费网站| 超碰女人天堂| 久热这里只有精品性色AV| AV免费在线网站| 在线看的免费网站| 九九色婷婷| 婷婷九月在线| 99热99re6国产在线播放| 成人国产综合| 久久99久久99精品免观看粉嫩| 万月丁香狠狠爱| 久草婷婷| 操97| 婷婷久久丁香| 狠狠色五月天| 国产精品社区| 丁香六月久久| 色综合色色| 成人av播放| 狠狠干狠狠干| 成人电影在线免费试看| 99九九综合久久九九| 久久ab| 第四色婷婷五月| 婷激情五月天视频导航| 色综合xx| 91人妻视频| 色噜噜,噜噜色| 五月丁香六月激情| 天天做天天爱天天高潮| 强壮的公次次弄得我高潮A片日本 | 激情综合五| 六月婷婷激情图片| 丁香婷婷激情| 国产毛片欧美毛片久久久| 九九热最新视频| 91碰碰碰| 国产成人精品一区二区三区视频| 久久久全国免费视频| 日B日潘金莲BB| 伊人在线视频| 丁香六月激情国产| 91精品91久久久中77777久久玖玖九九| 天堂五月婷婷| 深爱五月激情综合| 91精品国产综合久久密臀| 丁香五月丁香伊人| 四月婷婷五月丁香| 久操综合| 国产亚洲精品AAAAAAA片| 九九色综合九九色| 天天干人人奸97| 蒲京久久无码视频| 欧美激情中文字幕| 婷婷五月AA五月在线| 3p日韩网站视频| 色狠狠图片| 米奇影视五月天| 亚洲成人噜噜| 91一起操| 丁香五月激情综合久久| 丁香五月婷婷色情综合| 久久久久综合激动五月天| 五月激情精品视频| 五月丁香婷婷综合| 99热伊人| 九月激情综合婷婷| 六月综和久久| 五月天天视频| 九色PORNY9l原创自拍| 亚洲网综合在线| 伊人玖玖综合| 99精品手机在线视频| 亚洲一级AV在线免费播放| 26uuu精品一区二区| 秋霞三级色戒| 婷婷五月色惰| 国产AV影片| 色六月婷婷| 免费精品66| 五月婷婷六月丁香激情| 色色亚洲| 婷婷五月丁香欧洲| 五月综合激情视频| 91操操| 久久38视频| 99日本黄站| 五月丁香激情综合六月涩涩爱| 人人噜天天上| 噼里啪啦完整版中文在线观看| 欧美啪啪五月天| 五月天婷婷日日爱| av在线观看网站| 丁香五月大香蕉在线99| 亚洲国产色婷婷| www色婷婷com| 一级AV片| 99热6这里之有精品| 深爱五月天| 天天色情站| 九洲一级A片| 综合网五月天123| 影音先锋色婷婷| 91碰免费视频| 色婷婷丁香五月色综合网| 黄网在线播放| 色色色色色色色色色色色色色97| 五月丁香六月激情综合欧美| 五月天色小说| 极品 少妇 内射| 婷婷色婷婷| 另类丁香综合| 深爱激情AV| 日韩性视频| 影音先锋91视频| 26uuuavcom| 97啪啪| 日韩在线视频网站| EEUSS鲁片一区二区三区| 五月天丁香婷婷网| www.五月天婷婷姐姐| 五月婷婷激情网| 五月综合激情| 国产67194| 久久综合首页| 香蕉操亚洲| 69综合在线| 思思热久热| 97人人妻人人艹| 亚洲激情高潮| 国产肥白大熟妇BBBB视频| 婷婷月五天在线在线看| 99性爱| 久久综合婷婷| 日日夜夜狠狠| 5月丁香六月情| 国产AV国片偷人妻麻豆| 丁香五月六月婷婷综合激情| 色欲五月丁香| 五月天停婷基地| 啪啪色区| 欧美色婷婷| 欧美丁香五月97色| 五月丁香婷婷基地| site:picc-up.com| 琪琪狠狠干| 五月天天天色| 黄色精品五月婷婷| 五月亭亭开心网| 激情婷婷色小说| 中文字幕日产A片在线看| 亚洲精品va| 婷婷在线播放| 色色婷婷综合网| 极品人妻VIDEOSSS人妻| 五月香六月婷| 五月天综合久久丁香91| 91日本在线观看| 9999热精品在线免费播放| 久久五月婷| 婷色人人狠| 九九热在线视频| 天天干天天操天天爱| 婷婷情色五月| 九九热AV| 99精品免费欧美小视频| 久9久9久9久9久9久9| 97色色婷婷| 久久er九九| 91人无码久久久久久| 五月婷婷综合在线| 五月天激情综合首页| 天天躁日日躁狠狠躁日日躁2022年5月9日 | 婷婷五月天av| 精品久久久久久久人妻| 夜夜资源站| 九九综合久久| 五月天婷婷视频小说| 这里都是精品99| 亚洲欧美综合7777色亭亭| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 婷色影院| 天天久久狠狠色综合| 99在线观看免费精品视频| 久久久久久婷| 狠狠色噜噜狠狠狠888| 热99热9| 激情综合网激情五月天| 粉嫩AV久久一区二区三区| 五月婷婷激情| m色激情网| 国产精品汇聚精彩第二页 - 高清完整版在线 - 青蛙AV | 婷婷综合一二三| 亚洲美女婷婷五月天| 丁香亭亭激情四射| 777精品久无码人妻蜜桃| 天天草狠狠擦| 精热在线综合网| 五月婷久久综合| 亚洲精品亚洲人成人网| 色色色在线观看| 成人操呦av| 97人人操com| 五月婷婷六月丁香| 久久精品婷婷| 99热在线观看免费精品| 99丁香五月婷| 99热国品免费| 色色丁香婷婷| 第四色网婷婷| 五月婷婷丁香五月| 四色五月婷婷| 在线中文AV| 婷婷天天日婷婷| 99A片| va婷婷在线免费观看| 99热福利| 综合色播| 五月色色网| 日本三级网址| 国产小网站| 五月天激情黄色网址| 国产精品涩涩涩视频网站 | 中文字幕无码人妻少妇免费视频| 亚洲色99| 天天干天天日天天操| 婷婷丁香五月婷婷| 综合伊人久久| 中文字幕不卡+婷婷五月| 五月色亚洲| 狠狠搞亚洲| 久久婷婷五月丁香| 日日日日操| 色五月六月婷婷| 丁香五月 综合| 丁香六月婷婷激情综合| 色婷婷五月天激情| 狠狠色丁婷婷日日,伊人激情综合网| 婷婷五月花| 99热日韩| 欧美欧盟性爱网| 91色综合| 韩国情人在线电视剧免费观看高清版全集 | 日日操,夜夜爽| 欧美毛片www| 色情丁香五月天| 色哟哟www| 九热精品| 99国产小视频2013| 国产婷婷五月中文字幕高清| 五月天色综合服务平台| 日日.c| 第五色色色婷婷| 五月天综合视频| 亚洲热久久| 91午夜激情| 色久影院| www.zbzhongsen.com| 99国产精品久久久久久久久久久| 久草婷婷网 | 久久一操| 亚洲欧洲国产精品| 精品福利911| 色婷婷a三区麻| 国产精品五月天婷婷| 婷婷色五月天在线观看| 亚洲AV综合在线观看| 五月激情在线| 青青久久五月| 91人操| 五月丁香啪啪啪| aa久久| 97色天堂| 色射影院| 播丁香五月婷婷欧美| 思思视频这里是精品| 99热 免费| 热99精品视频| 97人人操人人爽| 偷偷与邻居做爰完整视频| 大香蕉伊人丁香五月| 婷婷综合另类| 亚洲另类婷婷五月丁香在线播放| 五月丁香在线看| 综激情网| 婷婷亚洲在线| WWW久久久| 六月丁香婷婷天堂| 超碰久热| 婷婷综合在线网| 久久婷婷五月综合激情国产| 婷婷五月丁香伊人网| 91成人电影| 男男野外做爰全过程69| 97超碰在线免费观看| 亚洲精品久久久无码| 91女人18毛片水多国产| 人妻射精AV| 久热视频这里只有精品| 99精品无码| 午夜福利成人AV91| 五月天婷婷伊人| 五月婷婷中文字幕| 丁香五月婷婷老师网站| 色必久悠悠影院| 天天成人综合视频| 被强行糟蹋的女人A片| 伊人婷婷色| WwW天天干| 超碰色综合| 97超碰99热99| 色人五月婷婷| 亚洲色另类| 999久久久国产精品| 精品九九在线观看视频| 婷婷的色色五月天| 97操碰免费视频| www。狠狠干。com| 99久热| 91久久五月天| 看久久性爱99视频| 这里只有精品96| 精a品a视a频| 婷婷色九月| 色婷婷色和| 久久婷婷五月天激情| 99在线观看精品视频| 久久9热| 天天爽天天摸天天爱| 久久综合五月天激情小说网站 | 色情五月综合婷婷| 九九综合色| 婷婷丁香亚洲色综合91| www.久久久久久久久久久| 狠狠草综合网| 情色五月天 网站| 五月天五月色| 婷婷五月五月丁香| 五月丁香婷婷三级| 久艹久| 五月好婷婷| 亚洲综合色成丁香五月色| 婷婷五月天激情文学小说| 97自拍视频在线| 久久五月网| www.99久久久| 欧美婷婷六月丁香综合色| 色色哒五月婷婷六月丁香| 99精品综合在线| 久久五月天丁香| 久久er99| 久久亚洲无码| 久热这里只有精品99re| 国产xxxxx在线观看| 综合激情站| 欧美激情综合| 天天色综网| 丁香丝袜五月| 九色在线观看91av| 99久热在线精品| 久久久久久久五月婷婷六月丁香综合,开心激情综合网 | 色五月激情五月| site:minyis.com| 99精品成人无码A片观看金桔| 26uuu四色| 婷婷99狠狠躁天天久久久九九九| 久久人妻高清中文| 五月婷婷狠狠久久| 久久久97| 亚洲女婷婷五月基地综合久久久| 啪啪操网| 久久婷婷热| 第四色色六月色综合| 丁香综合日产精品久久| 婷婷五月天综合在线 | 日本精品。999| 亚洲无码 图片区| 激情综合五月婷婷六月丁香| A久久| www.狠狠操.com| 色九九中文字幕| 激情五月丁香六月综合AVXXXX| 1024国产| 色婷婷精| 开心激情五月天网| 一级二级香港秋霞欧美欧美秋霞| 五月丁香色婷婷色| 一本色综合色| 欧美六月| www.26uuu.com亚洲电影| 久草嫩草在线观看| 97色婷| 五月丁香婷爱在线| 婷婷亚洲天堂| 婷婷丁香黄色| 中国女人内射6XXXXX| 五月天综合在线观看视频| 久热精品视频在线观| 性爱网五月婷婷| 思思99久久| wwccc久久久| 99色| 九月色婷婷综合亚洲| 激情丁香婷婷| 五月开心色| 丁香六月婷婷缴情欧美| 色综合久久99色| 五月综合激情啪啪啪啪啪| 五月婷婷色综图片| 天天夜夜操| 五月天国产成人| 久久天堂色| 99久久精品视频女神1| 丁香五月婷综合| 免费视频WWW在线观看网站| 综合五月天| 五月亭亭六月激情| 五月婷婷色播| 东京热免费视频网站| AA片在线观看视频在线播放| 亚洲激情五月天| 婷婷色啪| 婷婷婷婷婷婷婷婷| 五月丁香另类网| 99久热这里有精品| 亚州欧美国产久精国产99综合视频| 激情久久丁香| 色九九九综合| 婷婷五月丁香激情| 色婷婷很很十八禁| 香蕉久久国产AV一区二区| 九九碰九九爱97| 亚洲色图五月丁香| 日本色综合| www.久久av.com| 99.色| xfplayav在线| 丁香婷婷六月激情综合| a v色婷婷| 五月丁香婷婷国产精品综合| www.minyis.com【JT】实力收量可预付TG@LXSPSW8 | 五月婷婷性爱| 色色激情| 六月丁香五月婷婷| 亚洲色频| AV九九| 久操热| AV性爱网| 99热最新网址| 国产人妻人伦精品一区二区| 婷婷成人基地| 男人先锋久久| 亚洲AV无码成人电影| 强奸幻女毛片| 91操屁股| 九九人人自拍| 婷婷性爱影院| 久久婷出差欧美色两性综合网| 激情综合青草| 天天操夜夜夜拍拍拍| 激情黄色小说五月天| 99视频在线观看欧| 婷婷色情五月| 五月婷婷综合在线| 久久五月天综合| 亚洲无码99| 三级毛片视频| 色五月婷婷1| 熟女激情网| 亚洲婷婷丁香五月在线| 亚州日本欧州韩美高青高潮一| 丁香色五月婷婷91桃色| 熟女激情五月天| 亚欧州精品视频| 色爱五月天| 图片区 小说区 区 亚洲五月| 91操人人操| 超级97碰碰| 婷婷的99视频网站| 久月丁香爱婷婷综合| 婷婷开心综合人妻小说网址| 99热精品在线观看| 色婷久久| 伊人激情网| 丁香婷婷五月综合欧美另类| 在线99热| 国精产品一区二区三区| 五月婷婷天天| 欧美日韩精品人妻狠狠躁免费视频 | 五月天狠狠色| 久久婷婷五月天| 狠狠综合区| 五月婷婷六月丁香免费| 婷婷五月美女直播| WWW,五月| 色婷婷很很丝袜| 99在线资源| 伊人天天色| 丁香五月在线自慰| 国产成人综合亚洲| 国产综合色婷婷精品久久| 成人小说 五月天 婷婷| 亚洲免费av在线| 国产又色又爽又黄又免费| 免费AV在线网址| 天天爽天天日人人爱| 天天操天天插| 久久无码成人| 婷婷丁香五月天哟啪| 激情五月天婷婷丁香 | 丁香综合婷婷开心激情网| 夜丁香综合| 综合激情五月天| 五月婷婷日| 韩国情人在线电视剧免费观看高清版全集 | 丁香五月九九| 色国产五月| 色五月天丁香婷婷| 4399精品一区二区| 婷婷六月激情丁香| 精品久久人妻| 91色逼| 欧美色色色色色| 国产乱妇乱子在线播视频播放网站| www.婷婷,com| 五月天开心婷婷激情网站| 99精品视频在线观看| 天天噜日日噜综合无码| www.色五月| 日日操夜夜操不卡| 激情婷婷五月天伊人在线观看| 超碰国产在线观看| 丁香五月123| 人人爽亚洲| 国产精品第一国产精品| 亚洲AV激情五月综合网| 五月天激情电影| 色综合久久中文| 99这里只有精品视频| 9999热在线| 日日射天天射| 成人无码免费一区二区中文| 五月婷高清视频| 99亚洲精品视频| 狼人久草| 婷婷丁香五另类网站| 欧美超碰人人| 99久久思思| 丰满少妇猛烈A片免费看观看| 丁香六月婷婷综合激情欧美 | 欧美天天综合网站上去吧| WWW.国产| 丁香5月综合啪啪| 亚洲乱码精品久久久久..| 丁香香五月激情免费视频| 五月天播播| 亚洲精品乱码久久久久久按摩观| 日日日日日| 开心婷婷中文字慕| 婷婷五月天电影网| 99久久综合| 五月天激情国产综合婷婷婷| 色情五月丁香婷婷网| 人人操五月天| 大香蕉婷婷丁香视频在线| 丁香九月激情| 久久婷婷丁香| 亚洲六月婷婷| 丁香五月激情六月| αv中文字幕在线观| 日本va视频| 91人妻九色大屁股| 色播激情五月天| 97啪在线观看视频| 狠狠狠夜夜夜| 九月激情综合| 激情五月婷婷| 色丁香五月综合网| 久久丁香婷婷五月| 天天日,天天干,天天操| 色六月丁香婷婷狠狠干| 激情AV综合| 久9无码视频| 五月丁香六月激情综合网| 极品少妇高潮啪啪AV无码| 99热无码| 色婷婷亚洲| 99精品成人无码A片观看金桔 | 九九在线视频| 色婷五月天激情| www.婷婷亚洲基地| 精品一二三区久久AAA片| 五月丁香在线婷婷美女| 99日逼视频| 91丨九色丨大屁股| 久久久久人妻精选| 九九RE视频在线精品| 国自产拍偷拍精品啪啪一区二区| 五月天激情在线视频| 1769在线观看欧美国产| 五月香婷婷| 99er这里只有精品| 婷婷综合九月| 色色婷婷五月天| 五月激情六月综合| 第四色婷婷日本| 亚洲超碰中文字幕| 国产精品美女| 狠狠草狠狠草| wwW天天干| 五月婷婷综合影院| 色婷婷电影网| 日本丁香五月| 色婷婷六月综合| 久久9热| 亚洲欧洲中文日韩久久AV乱码| 99视频只有精品| 五月婷成人网| 色九月婷婷丁香| 琪琪色五月婷婷老师| 色99日韩| 九九在线这里只有精品视频| 午夜理论片最新午夜理论剧| 亚洲AV第二区国产精品| 99视频只有精品| www.99日本| 国产精品A片| 99热久只有精品首页| 91在线日本| 国产性av| 婷婷五月天AV| 激情婷婷丁香五月天| 五月婷AV| 97色色色色色色色色色色色色色| 激情综合网五月| 极品嫩草| 五月婷婷 激情按摩| 五月开心激情| 激情久久综合| 五月天天天天天天天天天天天天天天天婷婷婷 | 亚洲成人免费电影| 99热这里全都是精品| 五月丁香婷婷婷婷综合网| 亚洲婷婷五月天在线激情综合网| 丁香婷婷性久久| 丁香五月婷婷操逼| 激情五月婷婷综合网| 五月婷婷丁香| 99热这里| 天天插天天干| 青青草成人网| 色五月av| 色播五月婷婷| 五月亚洲| 亚洲国产精品VA在线看黑人| 五月丁香龟婷婷| 色VA| 九九热这里都是精品6| 亚洲色啪| 干亚洲天堂| 婷香五月网在线| 天天插天天玩天天干| 色10月婷婷视频| 久久久五月天| 婷婷久久五月| 97丁香五月天| 婷婷五六日| 天插天啪天啪天啪| 国产精品色色色色| 久久久五月激| www.激情五月天| 激情综合色| 精品色| 99热这里只有精品4| 国产偷人妻精品一区| 五月天激情综合| 综合性爱网| 99热这里只有精品2| 夜夜夜夜夜骑撸| 色综合天天综合成人网| 91大神操美女| 久久免片| 国产av天堂| 99欧美精品99日本精品| 99欧美三级视频| 日韩av在线免费观看| 伊人婷婷综合| 26uuu国自产精品| 思思色综合网站| 久久激情五月网| 久久这里都是精品视频| 欧美国产一区二区三区| 另类激情综合| 久久五月天婷婷| 这里只有精品视频| 九色成人AV在线| 国产一区18| 91操熟女| 五月欧美色色五月| 激情五月,激情综合网| www.99热| 99ER热精品视频| 影音 五月 婷婷 久久| 亚洲色基地| 久久久久9999| 天天干夜夜b| 97色色网| 超碰人人在线| 亚洲av成人一区二区电影在线| 丁香五月开心亚洲| 热的国产99热| 婷婷色正月| 婷婷丁香在线| 亚洲综合五月天婷婷| 4438成人电影| WWW.夜夜操.com| 五月丁香六月激情欧美综合| 亚洲1区| 琪琪色网址| 99玖玖免费视频| 襙比视频| 亚洲婷婷91丁香| 久久视频在线视频| 91精产品自偷自偷综合| 五月激情另类| 先锋资源婷婷| 岛国在线观看91| 色综合九九色综合88| 9这里只有精品| 99自拍视频网站| 公的粗大挺进了我的密道| 热婷婷在线视频| 亚洲综合视频天天精品| 精品久久这里热66| 国外亚洲成AV人片在线观看| 人妻激情视频| 深爱五月天 开心网| 激情综合国产| www...com黄在线观看| 五月丁香六月综合基地| 五月丁香六月婷婷综合网缴情| 狠狠色婷婷7777久| 五月丁香花激情啪啪网| 精品无码色欲AV| 久久综合首页| 五月婷婷亚洲综合在线| 《战争与艾拉》完整版| 六月婷婷激情小说网| 色色com| 91.com男女操| 思思久久精品| 超碰av在| 五月丁香天堂网婷婷| 丁香五月婷婷色| 人操人人| 四色99久久| 丁香五月六月婷婷综合激情| 色色99| 操日本三片99| 亚州操人在线视频| 日韩一区二区A片免费观看| 超碰京东热av男人的天堂| 99热综合在线观看| 狠狠穞A片一區二區三區| 精品激情| 国产精品视频| www.yw色| 欧美五月丁香| 色色色综合| 日韩无码一区二区三区四区| 亚洲中文字幕av| 色色色婷婷五月| 五月天激情视频| 冬月かえでAV无码播放| 五月丁香六月婷婷视频| WWW、99热| 五月丁香婷婷伊人| 天天操天天干天天日| 国产成人网址| 精品久久99| 日本三级大片| 夜夜夜夜夜操| 日日天天天| 久热大香蕉| 五月色情婷婷开心五月色情| 五月婷婷性爱| 综合久久9| 婷婷五月天成人| 久久98| 日本色婷婷| 丁香五月综合高清在线| 九九久久综合| 久久五月天合网| 欧美色综合天天久久综合精品| 婷婷九月激情| 久久久精品人妻| 欧美丁香婷婷天天操| 色色色99| 五月婷婷六月爱| 日比网免费国产| 永久地址 色| 热久91| 婷婷久久丁香五月| 国产在线中文字幕| 99色婷婷| AV国产有码| 少妇人妻人伦A片| 丁香五月婷婷88在线| 日本美女97在线视频| 伊人啪啪网| 激情五月色婷婷| 亚洲超碰在线| 五月天色综合服务平台| 激情五月天福利| 激情五月综合亚洲另类| 99热大全在线观看| 婷婷色情 | 六月色婷婷| 97操操操| www.91五月| 丁香色五月天| 综合精品啪啪| 激情婷婷五月天| 久久在这里有精品| 婷婷狠狠狠爱| 伊人久久艹| 五月婷婷久久网| 看逼中文字幕| 五月丁香色播| 色色色色色色色色色色色色色五月天| 玖玖综合色| 狠狠狠狠狠狠草| 91好好热日本在线| 色播五月| 综合色色色色色色| 五月婷啪啪| 欧美综合激情| 99热在线观看| 深爱五月亚洲| 国产avapp 网| 丁香五月婷婷在线| 国语精品探花| 免费人人操| 国产肥白大熟妇BBBB视频| 五月婷婷在线免费| 亚洲精品乱码久久久久久综合| 99热最新国内| 五月天婷婷基地| 色五月婷婷色五月| 五月天婷a在线| 日韩五月婷婷| 国产精品日本一区二区在线播放 | 性生活视频98791| 九九九干精品| av中文在线| 久色五月丁香视频| 色婷婷丁香五月在线| 亚洲、欧美、国产另类笫二区| AⅤ网站在线看| 五月天激情四射| 99热这里只有精品22| 亚洲婷婷五月草久| 天天综合五月| 1024在线观看免费视频| 国产成人+综合亚洲+天堂| 久青操| 久久人妻人人槡| 99成人网站| 超碰免费大香蕉| 日本 色综合| 久久五月天激情| 激情综合一| 亚洲成人网站在线播放| 亚洲欧美999| 亚洲激情无码久久| 99热婷婷| 丁香五月天婷婷91| 超碰2021| 国产精品成人AV在线观看春天| 99热免| 91九色视频在线观看| 色丁香影院| A A色色| 激情五月丁香色婷婷| 婷婷五月天色色| 久草A片| 97操碰视频| www.激情五月| 久久综合激情婷婷激情| 天天爱天天做天天爽| 色七色九九| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 思思热精品在线视频| 久热只有这里精品| 高清无码 一区 二区 三区| 大地资源色婷婷视频在线 | 五月丁香综合激情网| 婷婷五月天va| 麻豆科斗777| 97色在线| 五月婷婷基地| 大香蕉婷婷五月天| 久久久久久久97| 9l视频自拍9l九色9l成人| 色婷婷综合综合网| 欧美精品A片一区在线观看| 综合九九久久| 97人妻碰碰碰碰碰久久久久久| 婷五月天| 大香蕉啪啪啪| 国产欧美熟妇另类久久久| 色99在线| 天天爽夜爽| 日韩啪啪网| 激情五月婷婷综合| 噼里啪啦完整版中文在线观看 | 超级碰碰碰久久网站视频| 天堂二区| www.com色播五月天| 97香蕉人人在线观看| 激情五月天的婷婷| 99色五月| 婷婷色综合| 五月天无码| 国产综合激情五月久久| 26uuu亚洲欧美另类| 色青五月天| 色婷婷激情五月天| 五月丁香综合影院| 思思热久久艹| 色色色欧美| 色一情一乱一乱一区91Av| 香蕉久久国产AV一区二区| 色综合99无码 | 综合网天天| 青青草六月丁香| 一级黄色尤物综合视频手机在线观看| 婷婷五月天成人| 大香蕉久操| 午夜69成人做爰视频| 69热91天堂| 99热在线资源| 欧美激情丁香五月| 免費亭亭成人| 久久这有这里精品| 色欲资源网| 婷婷狠狠操| 操人91| 91九九九色在| 久久性操| 丁香伊人综合| 色九九九九| 操一区| 大香蕉懂9| 99操视频| 五月丁香六月婷婷a v| 婷婷婷婷色| 天天综合网站| 97操男人的天堂| 色婷操逼| 色欲五月婷婷| 久久五月网| 天天日天天肏天天奸| 9久久精品视频| 婷婷国产日本欧美| 深爱激情婷| 99色色网| 热99免费在线| 日日夜夜青青草| 91人人网| 日本无码专区| 亚洲AV免费在线| 亚洲激情免费视频| 俺去也婷婷| 精品亚洲国产成AV人片传媒| 内射综合网| 色综合久久88色综合天天| 99操视频| www.色情五月天.com| 婷婷色激情网| 人人爱摸视频| 中字幕视频在线永久在线观看免费 | 狠狠精品干练久久久无码中文字幕| 色色丁香五月天社区| 色狠狠伊人久久五月丁香| 激情中文在线| 中文字幕丰满乱孑伦无码专区 | 婷婷五月丁香色情| www.婷婷| 91xxxx九色| 天天日天天操天天干| 庭庭久久内射| 99热99思午夜精品| 97香蕉碰碰人妻国产欧美| 五月天久久综合婷婷丁香| 色色99| 啪啪激情综合| 99热只有这里有精品| 亚洲精品又粗又大又爽A片| 新97人人上人人| 丁香五月婷中字幕| 第四色婷婷丁香五月| 国产精品99久久久久久久女警 | 丁香五月激情站| 强伦轩人妻一区二区电影| 五月丁香综合影院| 69精品人人人人| 如何安全看伊人婷婷| 九色91国产| 91精品国产色猫| 成人九九视频| 被强行糟蹋的女人A片| 婷婷五月亚洲综合| a久久| 日韩性爱AV| 五月情四婷婷| 91久久久久久久久18| 日本久久婷婷| 99热在线精品观看| 玖玖99婷婷| 丁香五月天五码婷婷| 人妻熟人中文字幕一区二区 | 中文字幕乱码亚洲精品一区| 91精品电影18T| 激情婷婷五月天| 大香蕉伊人久久| 99精品在线观看| 九九色色网| 99热精品在线| 欧美va亚洲va| 深爱五月天| 综合五月亭亭9|