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

ARTICLE DETAIL

資訊詳情

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

單片機C庫運行時libspace與多任務(wù)安全實戰(zhàn)指南

單片機C庫運行時libspace與多任務(wù)安全實戰(zhàn)指南 1. 從一次HardFault說起為什么C庫運行時值得單獨拎出來講很多人寫單片機代碼注意力幾乎全放在寄存器配置、外設(shè)驅(qū)動、通信協(xié)議上覺得C庫就是#include string.h之后隨便調(diào)調(diào)memcpy、strlen、sprintf的事。我早年也是這么想的直到有一次在Cortex-M3上跑一個帶FreeRTOS的多任務(wù)采集系統(tǒng)任務(wù)里調(diào)了一次malloc運行了大概四十分鐘之后系統(tǒng)直接進了HardFault?;厮葜赶虻牡刂仿湓诹艘粋€我從來沒見過的段里。查了兩天才反應(yīng)過來問題出在C庫的堆管理和多任務(wù)搶占的交互上。這件事之后我才認真去翻C庫運行時的實現(xiàn)包括newlib、newlib-nano、ARM Compiler自帶的microlib以及各家IDE默認鏈接進去的那套啟動代碼。越看越覺得C庫運行時C Runtime Library在單片機上是一個被嚴重低估的領(lǐng)域。它不像外設(shè)驅(qū)動那樣有直觀的寄存器可以看也不像RTOS那樣有明確的API文檔但它幾乎滲透在你寫的每一行C代碼里——從main函數(shù)被誰調(diào)用、全局變量誰清零、堆棧指針誰設(shè)置到printf重定向、malloc的線程安全、中斷里能不能調(diào)memcpy全都歸它管。這篇內(nèi)容我打算把單片機C庫運行時這條線從頭到尾捋一遍。核心圍繞幾個問題展開libspace到底是什么、C庫啟動流程在單片機上是怎樣一個順序、多任務(wù)環(huán)境下C庫的哪些函數(shù)是雷區(qū)、中斷安全到底該怎么保證。適合已經(jīng)能寫裸機程序、正在往RTOS或多任務(wù)方向走的開發(fā)者也適合那些被printf卡死、被malloc坑過、被HardFault折磨過的朋友。我會盡量把原理講透同時給出可以直接抄的配置和代碼讓你少走我當年走過的彎路。2. libspace與C庫運行時的真實邊界2.1 libspace不是某個具體庫而是一類運行時支撐空間先澄清一個概念。很多人在論壇上看到libspace這個詞以為是某個具體的庫文件或者某個廠商的專有組件。實際上在單片機語境下libspace通常指的是C庫運行時所占用的那一塊代碼空間和數(shù)據(jù)空間的總和包括啟動代碼startup、C庫函數(shù)本體、庫內(nèi)部使用的靜態(tài)數(shù)據(jù)區(qū)、堆區(qū)heap以及庫初始化時依賴的各類段section。你可以把它理解成編譯器把你的main函數(shù)和它依賴的所有C庫函數(shù)打包在一起再加上一段在main之前運行的啟動代碼這一整套東西在Flash和RAM里占據(jù)的空間就是libspace。它不是一個.a文件的名字而是一個空間概念。理解這一點很重要因為后面講的所有優(yōu)化、裁剪、多任務(wù)安全本質(zhì)上都是在管理這塊空間。在ARM GCC工具鏈下libspace的構(gòu)成大致是這樣的組成部分典型來源占用位置啟動代碼startup_*.s/crt0.oFlashC庫函數(shù)本體newlib / newlib-nanoFlash庫靜態(tài)數(shù)據(jù).data/.bss中的庫變量RAM堆區(qū)_sbrk管理的區(qū)域RAM棧區(qū)MSP/PSP指向的區(qū)域RAM初始化表.init_array/.fini_arrayFlash這里有個容易被忽略的點C庫函數(shù)本體在Flash里的占用往往比你想象的大得多。一個完整的printf加上浮點格式化支持在newlib下能吃掉十幾KB甚至二十幾KB的Flash。對于STM32F103C8這種只有64KB Flash的芯片來說這是致命的。所以后面我會專門講怎么裁剪。2.2 啟動代碼到底替你做了哪些事很多人寫單片機程序從來沒看過startup文件里到底寫了什么。但C庫運行時的第一站就是啟動代碼不理解它后面全是空中樓閣。以Cortex-M為例上電復(fù)位后硬件做的第一件事是從向量表的前兩個字取出初始MSP和Reset_Handler地址。Reset_Handler里通常按這個順序執(zhí)行設(shè)置棧指針其實硬件已經(jīng)幫你從向量表加載了MSP但有些啟動代碼會再確認一次。調(diào)用SystemInit配置時鐘、向量表偏移等這個函數(shù)由廠商提供。調(diào)用__libc_init_array這是C庫運行時的關(guān)鍵入口它會遍歷.init_array段執(zhí)行所有標注了__attribute__((constructor))的函數(shù)以及C的全局構(gòu)造函數(shù)。清零.bss段把所有未初始化的全局變量和靜態(tài)變量置零。搬運.data段把Flash里的初值拷貝到RAM。調(diào)用main終于輪到你的代碼。這里有個非常關(guān)鍵的細節(jié).bss清零和.data搬運的順序以及它們和__libc_init_array的先后關(guān)系不同工具鏈是不一樣的。ARM Compiler的__main會先做段初始化再調(diào)__rt_entry而GCC的crt0順序又不同。如果你在全局對象的構(gòu)造函數(shù)里訪問了另一個全局變量而那個變量還沒被初始化就會讀到垃圾值。這種bug極難排查因為它在單步調(diào)試時可能表現(xiàn)正常一上電跑就出問題。提示如果你在C環(huán)境下寫單片機全局對象的構(gòu)造函數(shù)里絕對不要依賴其他全局對象的狀態(tài)。所有跨對象的初始化依賴都應(yīng)該顯式地放到main里按順序執(zhí)行。2.3 堆和棧在libspace里的位置關(guān)系棧和堆是libspace里最容易出問題的兩塊。棧由鏈接腳本里的_estack符號定義頂部向下增長堆由_end符號定義起始向上增長在_sbrk實現(xiàn)里。兩者相向而行中間的空隙就是可用空間。很多默認的鏈接腳本只給了一個_Min_Heap_Size和_Min_Stack_Size實際運行時如果堆??偤统^RAM就會發(fā)生堆棧碰撞。這種碰撞不會立刻報錯而是表現(xiàn)為某個全局變量莫名其妙被改寫、某個函數(shù)返回地址被覆蓋、系統(tǒng)跑一段時間后隨機死機。我實測過一個案例STM32F407有192KB RAM鏈接腳本里棧給了1KB堆給了512字節(jié)看起來綽綽有余。但系統(tǒng)里有個任務(wù)遞歸調(diào)用了深度較大的函數(shù)棧實際用了1.8KB直接沖進了堆區(qū)把malloc的元數(shù)據(jù)踩爛了。后來把棧調(diào)到4KB問題消失。判斷堆棧是否夠用的方法我常用這兩個棧水位檢測啟動時把棧區(qū)域全部填成0xDEADBEEF運行一段時間后掃描看最深用到哪里。堆使用統(tǒng)計在_sbrk里加計數(shù)器記錄歷史最大堆用量。這兩個手段配合使用基本能摸清libspace在RAM里的真實占用。3. 多任務(wù)環(huán)境下C庫函數(shù)的雷區(qū)清單3.1 為什么malloc在RTOS里是頭號危險分子裸機程序里malloc用起來很爽因為沒有并發(fā)堆的管理是串行的。但一旦上了RTOS多個任務(wù)可能同時調(diào)用malloc而標準C庫的malloc實現(xiàn)無論是newlib還是microlib默認不是線程安全的。newlib的malloc內(nèi)部維護一個空閑鏈表_sbrk負責向系統(tǒng)要內(nèi)存。當任務(wù)A正在遍歷空閑鏈表準備分配時如果被任務(wù)B搶占任務(wù)B也來遍歷同一個鏈表兩個任務(wù)就可能拿到同一塊內(nèi)存或者把鏈表指針改亂。這種問題的可怕之處在于它不一定立刻崩潰而是讓堆慢慢碎片化、元數(shù)據(jù)錯亂最后在某個不相干的地方爆出來。解決方案有三條路給malloc加互斥鎖重寫_sbrk或者在malloc外層包一層用RTOS的mutex保護。但要注意malloc本身可能被中斷服務(wù)程序調(diào)用而mutex不能在中斷里用所以這條路有局限。使用RTOS自帶的內(nèi)存管理FreeRTOS的pvPortMalloc、RT-Thread的rt_malloc都是線程安全的且針對嵌入式做了優(yōu)化。這是我最推薦的做法——在RTOS項目里徹底禁用標準malloc把所有動態(tài)分配換成RTOS的接口。干脆不用動態(tài)內(nèi)存所有緩沖區(qū)靜態(tài)分配。這是最穩(wěn)的方案代價是靈活性下降。我個人的經(jīng)驗是在RAM小于64KB的單片機上動態(tài)內(nèi)存能不用就不用。靜態(tài)分配雖然浪費一點空間但換來的是確定性這在嵌入式里比什么都值錢。3.2printf家族的重入問題printf、sprintf、snprintf這些函數(shù)在多任務(wù)下的問題比malloc更隱蔽。它們內(nèi)部通常有一個靜態(tài)的緩沖區(qū)或者文件流狀態(tài)FILE結(jié)構(gòu)體多個任務(wù)同時調(diào)用時輸出會交錯、錯亂甚至因為內(nèi)部指針被改而崩潰。更麻煩的是很多人為了調(diào)試方便在中斷服務(wù)程序里也調(diào)printf。中斷可能打斷正在執(zhí)行printf的任務(wù)導(dǎo)致庫內(nèi)部的靜態(tài)狀態(tài)被破壞。這種問題在調(diào)試階段可能看不出來因為中斷觸發(fā)頻率低但產(chǎn)品上線后中斷頻繁觸發(fā)就會隨機死機。我的處理原則很明確中斷里絕對不調(diào)printf。需要輸出調(diào)試信息時往一個環(huán)形緩沖區(qū)里寫由低優(yōu)先級任務(wù)負責搬運。多任務(wù)環(huán)境下用snprintf而不是sprintf并且每個任務(wù)用自己的局部緩沖區(qū)避免共享。如果必須共享一個輸出通道用RTOS的mutex把整個格式化加輸出過程保護起來。這里有個細節(jié)snprintf本身在newlib里也不是完全可重入的因為它可能調(diào)用locale相關(guān)的函數(shù)。但在單片機環(huán)境下locale通常被裁剪掉了所以實際風險可控。真正危險的是printf直接操作stdout的那部分。3.3strtok、rand這些隱藏的不可重入函數(shù)除了malloc和printfC庫還有一批函數(shù)是明確不可重入的因為它們內(nèi)部使用了靜態(tài)變量函數(shù)不可重入原因替代方案strtok內(nèi)部靜態(tài)指針保存上次位置strtok_rrand/srand內(nèi)部靜態(tài)種子自己實現(xiàn)或加鎖asctime/ctime返回靜態(tài)緩沖區(qū)指針asctime_r/ctime_rgmtime/localtime返回靜態(tài)結(jié)構(gòu)體gmtime_r/localtime_rgetenv可能操作共享環(huán)境區(qū)避免在任務(wù)中調(diào)用這些函數(shù)在裸機下用沒問題但在多任務(wù)下就是定時炸彈。我見過一個項目兩個任務(wù)同時調(diào)strtok解析不同的字符串結(jié)果解析結(jié)果互相串臺查了一周才發(fā)現(xiàn)是庫函數(shù)的問題。注意帶_r后綴的可重入版本在newlib里是有的但會額外占用Flash。如果你的項目對空間敏感可以自己實現(xiàn)簡化版比如strtok_r的邏輯其實很簡單二十行代碼就能寫出來。4. 中斷安全從原理到可落地的防護策略4.1 中斷安全的核心是可重入和原子性中斷安全這個詞聽起來很玄拆開來看就兩件事可重入一個函數(shù)在執(zhí)行過程中被中斷打斷中斷里又調(diào)用了同一個函數(shù)等中斷返回后原來的執(zhí)行能正確繼續(xù)。原子性對共享數(shù)據(jù)的讀-改-寫操作不能被中斷打斷否則會出現(xiàn)丟失更新。C庫函數(shù)里大部分純計算函數(shù)如memcpy、strlen、abs是可重入的因為它們只用寄存器和棧上的局部變量。但涉及全局狀態(tài)、靜態(tài)緩沖、堆管理的函數(shù)就不可重入。判斷一個函數(shù)是否中斷安全我的經(jīng)驗法則是看它有沒有訪問函數(shù)作用域之外的、可寫的數(shù)據(jù)。如果有就要警惕。4.2 中斷里調(diào)用C庫函數(shù)的實際風險等級我把常見C庫函數(shù)在中斷里的風險分成三檔低風險可以直接用memcpy、memset、memcmp、memmovestrlen、strcmp、strcpy前提是目標緩沖區(qū)不被其他上下文共享abs、labs、簡單的數(shù)學(xué)運算中風險需要評估snprintf如果只往局部緩沖區(qū)寫且不涉及浮點通常安全。但newlib的浮點格式化會用到較大的棧空間中斷??赡懿粔颉in、cos、sqrt數(shù)學(xué)庫函數(shù)通常是可重入的但浮點運算在中斷里可能觸發(fā)FPU上下文保存問題如果RTOS沒做懶加載。高風險絕對不要在中斷里用malloc、free、calloc、reallocprintf、fprintf、putsstrtok、rand、localtime任何涉及文件流操作的函數(shù)4.3 用臨界區(qū)保護共享的C庫狀態(tài)如果你確實需要在多個上下文任務(wù)和中斷之間共享某些C庫功能就必須用臨界區(qū)保護。在Cortex-M上最常用的方法是關(guān)中斷// 進入臨界區(qū)保存當前中斷狀態(tài) __attribute__((always_inline)) static inline uint32_t enter_critical(void) { uint32_t primask __get_PRIMASK(); __disable_irq(); return primask; } // 退出臨界區(qū)恢復(fù)之前的中斷狀態(tài) __attribute__((always_inline)) static inline void exit_critical(uint32_t primask) { __set_PRIMASK(primask); }使用方式uint32_t state enter_critical(); // 這里操作共享的C庫狀態(tài)比如調(diào)用一個非線程安全的函數(shù) exit_critical(state);注意這里保存和恢復(fù)PRIMASK而不是簡單地開中斷是因為臨界區(qū)可能嵌套直接__enable_irq()會破壞外層臨界區(qū)的狀態(tài)。在FreeRTOS里更推薦用taskENTER_CRITICAL()和taskEXIT_CRITICAL()它們內(nèi)部處理了嵌套計數(shù)。但要注意臨界區(qū)里不能調(diào)用任何可能引起任務(wù)切換的函數(shù)否則會觸發(fā)斷言。4.4 中斷棧和任務(wù)棧的分離配置Cortex-M的MSP和PSP分離機制是保證中斷安全的重要硬件基礎(chǔ)。通常的配置是MSP給中斷服務(wù)程序和啟動代碼用大小要能容納最深的ISR調(diào)用鏈。PSP給任務(wù)用每個任務(wù)有自己的棧。如果中斷里調(diào)用了C庫函數(shù)比如snprintf消耗的是MSP。很多人只關(guān)注任務(wù)棧大小忽略了MSP結(jié)果中斷里一調(diào)庫函數(shù)就棧溢出。我的配置習慣是MSP至少給1KB如果中斷里要用浮點格式化給2KB。任務(wù)棧根據(jù)實際水位檢測來定一般1KB起步。在FreeRTOS的FreeRTOSConfig.h里configISR_STACK_SIZE_WORDS或者鏈接腳本里的_Min_Stack_Size控制的就是MSP。這個值不能省。5. 裁剪與優(yōu)化讓libspace瘦下來的實操手段5.1 從newlib切換到newlib-nano的收益與代價ARM GCC工具鏈默認鏈接的是完整版newlib功能全但體積大。切換到newlib-nano只需要在鏈接選項里加--specsnano.specsarm-none-eabi-gcc --specsnano.specs -o firmware.elf ...實測數(shù)據(jù)STM32F103-Os優(yōu)化配置Flash占用RAM占用printf浮點支持完整newlib約28KB約4KB支持newlib-nano約12KB約2KB默認不支持newlib-nano 浮點printf約18KB約3KB支持newlib-nano的代價主要是printf默認不支持浮點、部分函數(shù)的實現(xiàn)被簡化、malloc的行為略有不同。如果你的項目需要打印浮點數(shù)要額外加-u _printf_float鏈接選項這會增加約6KB Flash。5.2 用-u _printf_float之外的辦法處理浮點輸出如果只是偶爾需要打印浮點加6KB Flash有點虧。我的做法是自己寫一個定點格式化函數(shù)把浮點轉(zhuǎn)成整數(shù)和小數(shù)兩部分分別打印void print_float(float value, int decimals) { int int_part (int)value; float frac value - int_part; if (frac 0) { frac -frac; int_part -int_part; } char buf[16]; int i 0; // 打印整數(shù)部分 // ... 省略整數(shù)轉(zhuǎn)字符串邏輯 // 打印小數(shù)點 buf[i] .; // 打印小數(shù)部分 for (int d 0; d decimals; d) { frac * 10; int digit (int)frac; buf[i] 0 digit; frac - digit; } buf[i] \0; uart_send_string(buf); }這個函數(shù)只占幾百字節(jié)Flash比鏈接整個浮點printf劃算得多。缺點是精度和舍入行為要自己控制但對于調(diào)試輸出足夠了。5.3 重定向_write和_sbrk的正確姿勢在GCC newlib環(huán)境下printf最終會調(diào)用_writemalloc最終會調(diào)用_sbrk。這兩個函數(shù)需要你自己實現(xiàn)#include sys/stat.h #include errno.h // 重定向printf到串口 int _write(int file, char *ptr, int len) { (void)file; for (int i 0; i len; i) { while (!(USART1-SR USART_SR_TXE)); USART1-DR ptr[i]; } return len; } // 堆管理 extern char _end; // 鏈接腳本定義的堆起始 extern char _estack; // 棧頂 static char *heap_ptr _end; void *_sbrk(int incr) { char *prev heap_ptr; if (heap_ptr incr _estack - 1024) { // 留1KB給棧 errno ENOMEM; return (void *)-1; } heap_ptr incr; return prev; }這里有個坑_sbrk的返回值必須是之前的位置而不是新的位置。很多人寫反了導(dǎo)致malloc拿到的指針錯位堆直接亂掉。另外_write里如果用了while等待發(fā)送完成在中斷上下文里調(diào)用printf就會死等。所以再次強調(diào)中斷里不要調(diào)printf。5.4 用鏈接腳本精確控制libspace布局鏈接腳本是控制libspace的最終手段。一個典型的STM32鏈接腳本關(guān)鍵部分MEMORY { FLASH (rx) : ORIGIN 0x08000000, LENGTH 64K RAM (rwx) : ORIGIN 0x20000000, LENGTH 20K } SECTIONS { .text : { *(.isr_vector) *(.text*) *(.rodata*) *(.init_array*) } FLASH .data : { _sdata .; *(.data*) _edata .; } RAM AT FLASH .bss : { _sbss .; *(.bss*) *(COMMON) _ebss .; } RAM ._user_heap_stack : { . ALIGN(8); _end .; . . _Min_Heap_Size; . . _Min_Stack_Size; . ALIGN(8); } RAM }關(guān)鍵點是_end符號的位置它標記了堆的起點。_sbrk里用的就是這個符號。如果你改了鏈接腳本一定要確認_end還在正確的位置。6. 實戰(zhàn)案例一個多任務(wù)采集系統(tǒng)的C庫安全改造6.1 問題現(xiàn)象與初步定位回到開頭那個HardFault的案例。系統(tǒng)配置是STM32F103 FreeRTOS三個任務(wù)采集任務(wù)100Hz、處理任務(wù)10Hz、通信任務(wù)事件驅(qū)動。采集任務(wù)里用malloc分配臨時緩沖區(qū)處理任務(wù)里用printf輸出調(diào)試信息。運行約四十分鐘后死機HardFault。用調(diào)試器看出錯地址在_malloc_r內(nèi)部。初步判斷是堆被破壞。6.2 逐步排查的完整鏈路第一步檢查棧溢出。把MSP和任務(wù)棧都填成0xDEADBEEF跑十分鐘后掃描發(fā)現(xiàn)采集任務(wù)的棧用了約800字節(jié)配置的是1KB沒溢出。MSP用了約400字節(jié)配置1KB也沒問題。第二步檢查堆棧碰撞。計算_end到_estack的距離減去棧配置剩余約8KB給堆。采集任務(wù)每100ms分配一次每次128字節(jié)理論上不會耗盡。但malloc的元數(shù)據(jù)有開銷實際每塊占用約144字節(jié)。跑四十分鐘約24000次分配如果free沒正確執(zhí)行堆早就爆了。第三步加日志。在_sbrk里記錄每次調(diào)用的incr和返回地址發(fā)現(xiàn)堆指針一直在增長沒有回落。說明**free沒有真正釋放內(nèi)存**。第四步查free的調(diào)用。采集任務(wù)里確實調(diào)了free但處理任務(wù)里也調(diào)了malloc和free。兩個任務(wù)并發(fā)操作堆導(dǎo)致空閑鏈表被破壞free時無法正確合并相鄰塊堆碎片化越來越嚴重最終_sbrk返回失敗malloc返回NULL而采集任務(wù)沒檢查NULL就直接寫踩了空指針。6.3 修復(fù)方案與驗證修復(fù)分三步禁用標準malloc在FreeRTOSConfig.h里把configUSE_NEWLIB_REENTRANT設(shè)為0所有動態(tài)分配改用pvPortMalloc和vPortFree。printf加互斥創(chuàng)建一個mutex所有printf調(diào)用前先獲取mutex輸出完釋放。中斷里改用環(huán)形緩沖區(qū)串口中斷收到數(shù)據(jù)后寫入環(huán)形緩沖區(qū)通信任務(wù)負責讀取和解析。改造后連續(xù)運行72小時無故障。堆使用量穩(wěn)定在2KB以內(nèi)沒有增長趨勢。6.4 這個案例暴露的通用問題這個案例的核心教訓(xùn)是C庫的線程安全性不會因為你用了RTOS就自動獲得。RTOS只提供調(diào)度和同步原語C庫的狀態(tài)保護需要你自己做。另外malloc返回NULL的檢查經(jīng)常被忽略。在裸機下malloc幾乎不會失敗但在多任務(wù)下堆被耗盡是很常見的。所有malloc調(diào)用后都必須檢查返回值。7. 幾個容易被忽略的細節(jié)與個人經(jīng)驗7.1errno在多任務(wù)下的表現(xiàn)errno在標準C里是一個全局變量但在多任務(wù)環(huán)境下每個任務(wù)應(yīng)該有自己獨立的errno。newlib通過_impure_ptr和struct _reent來實現(xiàn)這一點但需要RTOS配合。FreeRTOS提供了configUSE_NEWLIB_REENTRANT選項開啟后每個任務(wù)有自己的_reent結(jié)構(gòu)。開啟這個選項的代價是每個任務(wù)多占用約100字節(jié)RAM。如果你的任務(wù)多、RAM緊張要權(quán)衡。不開的話errno就是全局的一個任務(wù)設(shè)置的值可能被另一個任務(wù)覆蓋導(dǎo)致錯誤判斷。7.2atexit和全局析構(gòu)在單片機上的行為atexit注冊的函數(shù)在main返回后執(zhí)行。但單片機的main通常是個死循環(huán)永遠不會返回所以atexit注冊的函數(shù)永遠不會被調(diào)用。同理C的全局析構(gòu)函數(shù)也不會執(zhí)行。這意味著不要依賴析構(gòu)函數(shù)來釋放資源。所有清理邏輯要么顯式調(diào)用要么放在看門狗復(fù)位前的鉤子里。7.3 浮點運算與FPU上下文如果芯片有FPU如Cortex-M4F中斷里使用浮點運算時硬件會自動保存FPU寄存器到棧上。但如果RTOS配置了懶加載lazy stacking而中斷里又調(diào)用了C庫的浮點函數(shù)可能出現(xiàn)上下文保存不完整的問題。我的建議是如果中斷里要用浮點關(guān)閉懶加載。在FreeRTOS里configENABLE_FPU和configENABLE_LAZY_STACKING要配合設(shè)置。關(guān)閉懶加載會增加中斷延遲但換來的是確定性。7.4 一個實用的調(diào)試技巧當你懷疑C庫運行時出問題時可以在鏈接選項里加-Wl,-Mapoutput.map生成map文件。map文件里能看到每個C庫函數(shù)占用的Flash地址和大小以及堆棧符號的位置。配合arm-none-eabi-nm和arm-none-eabi-objdump可以精確定位問題。我常用的命令組合# 查看符號地址和大小 arm-none-eabi-nm -S --size-sort firmware.elf | tail -30 # 反匯編特定函數(shù) arm-none-eabi-objdump -d firmware.elf | grep -A 50 _malloc_r # 查看段布局 arm-none-eabi-readelf -S firmware.elf這幾個命令配合使用基本能摸清libspace的全貌。7.5 關(guān)于libspace裁剪的取舍最后說一個心態(tài)問題。很多人為了省Flash把C庫裁到極致結(jié)果調(diào)試時連printf都用不了開發(fā)效率大幅下降。我的建議是開發(fā)階段用完整庫發(fā)布階段再裁剪。用條件編譯或者不同的鏈接配置來切換不要為了省幾KB Flash犧牲整個開發(fā)體驗。Flash便宜時間貴。這個賬要算清楚。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
熟妇高潮一区二区免费视频| 日韩成人精品中文字幕| 亚洲情色一区二区三区| 国产亚洲美日韩Aⅴ中文字幕无码成人| 青青草久草AV| 久久一区二区高清免费| 久久久久久久久999| 91女人的网站| 久久毛卡| 久久久中文| 九久久精品| 91人妻尻屄视频| 婷婷激情四射| 国产精品久久久久久久久久久久久久久久久久 | 久久精品国产亚洲AV高级北京| 日本黄色XXX| 亚洲一区二区三区不卡国产欧美| 天天干美少妇一区| 夂久色| 啪啪自拍九九综合| 操淫穴亚洲五月丁香| 欧美综合97www| 九九干| 亚洲国产成人精品无码专区| 秋霞久久亚洲精品成人| 7777奇米影视久久| 热无码中文亚洲H一道本一区二区| 天天情欲宗合网| 性性久久| 国产农村妇女精品1区二区| 久久久久久亚洲Av无码| 麻豆视频国产一区二区| 国产精品福利资源在线尤物| 91无码精品| 2019午夜福利视频| 日本久久久久久久久久| 中文字幕久久亚州无码| 夜草欧美| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 97亚洲精品| 丝袜美腿操av| 综合网少妇| www久久精品| 中文97国产| 禁止观看美女黄| 少妇高潮99p| 99激情视频| 国产免费久久久久| 强奸xx国产| 久久国内| 欧亚性爱视频免费看| 人人摸人人添人人操 | 91干熟女| 国产精品秘 福利姬在线观看| 亚洲熟女av日韩熟女| 欧美大香蕉专区网| 丁香婷婷大香蕉| 999国产精品999| 免费在线观看AV无码网站| 搡老女人老妇女AAA一VU麻豆| 一级AV性爱| 久久久久久久久久va| 强奸乱伦免费网站| 人人操人人摸人 | 久久亚洲天天做| 青青草啪啪网| 99日视频在线免费| 1769成人国产精品视频| 免费观看的黄色的网站| 狠狠爱综合| 亚州精人品大香蕉| 大香蕉色网| 中文字幕久久亚州无码| 青青久草| 亚洲码专区| 欧美操逼一二三区| 夜夜操中文字幕| 伊人国产av| 国产丝袜美腿美女麻豆| 国产中午字一暮区| 午夜福利精品| 欧美日韩色图片| 2025亚洲男人天堂| 国产91专区| 综合熟妇一区二区三区| 久久超碰国产一区二区三区| 操逼逼福利视频| 国产67194| 91在线综合网| 免看60秒涩涩视频| av毛片aaaaa免费看| 国产精品午夜福利亚洲综合网| 国产绿奴视频在线观看| 久久婷婷视频| 精品一区99999| 亚洲中文字幕熟女| 精品成人av一区二区三区在线| 精品大久久| 亚洲综合69| 亚洲国产成人精品女人久久久| 国产精品日韩在线一区| 夜夜操天| 中国熟妇| 天堂无码| 高凊专区人人操| 中出20p| 国产强奸乱伦无码视频| 久久久久久亚洲精品不卡人乳| 色大师网站www永久网站视频| 青青草原成人| 制服乱伦| 四虎在线免费视频| 蜜乳av首页| 97天堂| 蜜桃狠狠色伊人亚洲综合| 男插女青青影院| 婷婷六月色| se,,,亚洲欧美| 亚洲丝袜诱惑| AV色五月| 370p日韩欧美亚洲精品| 综合网亚| 探花视频免费观看国产专区| 美女尤物福利视频| 中文字幕精品探花视频| 99国产精品在线观看| AV天堂因数| 亚洲av淫乱| 中文字幕十五区| 人人弄人人摸| 蜜臀99999| se吧提供91精品国产91久久久久久| 九九综合| 国产日韩精品suv| 91oumei| 久久久久久久 九九九九九九九| 少妇特黄一区二区三区| 91超级碰碰| 97欧美资源| 国产原创剧情在线丝袜| 久久久啊啊啊| 强奸a片网| 欧美激情一| 超碰成人免费| 国产精品美女久久久久久网站| 91女在线观看| 综合激情二| 亚州综合图片| 精品v日韩欧美国产| 在线情色电影 91大| 91在线视频免费播放| 天天干人妻| 看日韩操逼| 日韩电影中文字幕| 刺激性视频黄页| 亚洲无码视频免费在线观看网址!| 日韩精品 资源| 91精品国产一区三一| 久久久久婷婷| 91在线精品一区二区三区| 欧美三级一级| 亚洲AV无码黄色强奸| 国产少妇内射| 宅男午夜在线视频| 天天看天天在线精品| 美欧老女人97| 少妇第一页| 国产精品欧美日韩久久| 999国产精品999久久久久久| 99re6国产精品99re在线| 睡产熟女乱伦| 91日韩国产欧美亚洲另类精盘州至城都| 情侣开房子拍 日韩无码 女的很漂亮| 国语精品内射在线观看| 久久久精品电影| 夜夜爽爽夜夜精品视频| 人妻激情偷乱视频一区二区三区| 国产强奸乱伦欧美| 国产91丝袜在线播放蜜月| 色色亚洲| 免费一级特黄特色大片在线观看看| 情色五月天就去干| 成人综合网 欧美| 成人三级片无码| 一区在线精品中文字幕| 亚洲精品一卡二卡三卡福利视频网站| 久久久久中出| 一区二区三区激情在线观看| 视频一区二区免费在线| 丰满人妻一区二区三区免费| 天天射夜夜骑| 欧美性爱超碰97| 久久久久亚洲| 五月丁香激情综合网| 久热久操| 激情六月天| 亚州欧美一区| 亚洲天堂欧美| 亚洲伊人a线观看视频| 在线强奷到舒服的无码视频| 91麻豆天美国产欧美日| 新怡红院| 三级三级三级a级全黄三| WWW黄片COM| 神马久久久久久| 精品人妻1237| 99久久国产精品免费高潮| 色五月激情AV在线| 欧美一区二区传媒| 九九热免费国产视频婷婷伊人五月| 99热这里只有精品地址| 东北丰满熟女国产一区| 一级@啪啪视频| 人妻一区二区三区视频| 一级黄色视频网| 亚洲国产另类在线中文| 国产高清成人免费视频| 蜜乳中文字幕a在线| 人妻欧美| 91综合色噜噜| 一级AV性爱| 午夜啪| 囯产精品久久久久久久久久梁医生 | 色噜噜人妻丝袜a∨先锋影| 久久久久久69国产一区二区| 亚洲黄色视频在线观看视频| 乱伦一区二区三区‘| 亚洲精品自拍| 八戒无码国产午夜福利| 一级特级aaaa毛片免费观看| 综合网色| 好看的91视频| 97se综合| 久久大香蕉97| 97天堂| 日韩av无码网站| av三级电影在线播放| 插入逼91| 福利在线观看一区二区| 国产欧美美女免费观看视频| 男人的天堂欧美| 色天欧美| 九九AV| 久久久久久久| 中出91视频| 成人性交午夜免费片| 亚洲综合20p| 被男人吃奶很爽的毛片| 久久国内| 国产1769在线| 久久人人爽爽爽人久久久| 人人澡综合涩| 熟女少妇视频| 性色av蜜臀av色欲aV| 亚洲女毛多水多21P| 91超级碰| 制服中出中文人人精品| 日日摸天天爽夜夜欢| 无码免费在线观看黄色片| 99在线无码精品秘 入口黑人| 私色综合网| 天堂伊人久久| 国产免费一区2区3区| 熟妇的味道HD中文字幕| 亚洲色色色| 情色av电影| 人妻少妇精品无码专区二区密桃| 亚洲天堂久久久久久粉红视频| 中文字幕一区二区在线日韩精品| 免费的av网| 在线情色电影 91大 | 和协影院中文字幕三区| 啊啊啊啊好疼| 日本一天色道久久久精品视频| 蜜桃精品一区二区三区ww| 91国精产品| 中日韩免费看男女操逼大全| 色综合色欲色综合色综合色综合| 歐美性天天| 精品九九| 天天综合网国产| 大屁股国产在线视频| 加勒比综合网| 啪啪综合网| 91 综合 色| 亚洲性爱乱操x| 亚洲天堂另类美腿| 最新制服中文第一页| 人人操人人操人人操人人操人人操人人人11.CM | 五月丁香色婷婷| 老汉网| 九九九九热| 麻豆国产96在线| 日韩不卡码| 天天噜| 五月天激情网图片| 揉揉揉夜夜| 亚洲天堂 视频你懂的| 成人在线视频一区| 为用户提供免费看黄网址在线观看| 国模一区二区三区| 2017大香蕉| 99在线免费观看| 蜜区区视频79 | 涩爱AV在线| 国产精品第一页国产大屁股视频免费区| 亚洲欧美日韩精品久| 黄色十八禁| 思思热免费在线视频| 青草香蕉网| 9色国产精品一区粉嫩| 亚欧精品久久久久久久久久久| 公司1区2区3区精产精| 青娱乐国产盛宴视频| 99啪啪| 精品国产无码中文| 91久久久久久久| 在线可观看的黄色网址| 日欧毛片久久| 天天日天天干天天整| 亚洲人久久久网| 岛国网址国产| 91在线一起| 大香蕉手机视频| 激情在线青青操| 91爽啪| 日本乱人伦片中文三区| 欧美曰韩国产精品| 青青草色插素人| 国产亚洲精品久久久久小| 色妇91| 99热国产| 69少妇一区二区| 加勒比东京热五月天天堂网| 日韩精品一区的| 18+91网站| 日本淫色网| 女人精品内射国产99| 色情亚洲日本成人| 日本精品成人无码| 国产精品第一区第一页| 日韩精品人妻中文字幕不卡乱码| 国产极品999| 一级特黄aaa大片在线观看成人一级片在线观看 | 黄色香蕉视频网站一区| 大香蕉手机在线| 一二三啪啪专区| 成人七区| 加勒比伊人| 欧美大片一区二区三区| 男人的天堂啪啪啪啪啪蜜桃不卡| 国产9 9在线 | 亚洲| 蜜臀99久久精品| 日本淫色网| 乱伦3P视频| 九九热AV| 2017,超碰| 一区二区三区男女操逼黄色小电影| 99re国产精品视频| 伊人五月天婷婷| 亚洲激情欧美色图 | 日日97| 欧美五区| 亚洲色偷偷色噜噜狠狠99网| 日韩激情中文字幕有码| 国产无马在线| 伊人一级免费黄片| 91bbbbbb| 亚洲九九视频在线观看| 97色97好| 桃花色涩综合影院| 午夜一区二区三区国产| 欧州一区二区三区四区| 亚洲在线欧美| 高清无码91| 日韩中文字幕宗合在线| 啊操爽品善一区二区三区| 在线另类| 色五月婷婷麻豆在| 99色色| 亚洲国产无码精品首页久久久| 日婷婷| 七月丁香婷婷| 91欧美综合| 97在线观看视频| 亚洲区限制级 99| 天天摸天天碰天天添青青| 日韩精品1区2区中文字幕| 亚州操操穴网| 丁香五月成人| 久久怡红院| 大香蕉丝袜一级片| 污啪啪啪视频| 好湿好紧好爽 视频| 天天爽天天爽| julia高潮后不停追击中出| 欧美一区二区三区日韩| 99久久久无码国产精品性男| 一区二区三区激情在线观看| 人妻人人操| 亚洲精品啪视频| 亚洲无码一区二区三区三州| 精品v日韩欧美国产| 久操网线| 五月激情小说| 午夜精品99久久久久传媒| 电影69乱码96| 性性欧美| 色哟哟av| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 另类成人首页一区| 0755午夜福利视频| 亚洲AV无码秘 蜜桃臀国精产品| 中文字幕欧美日韩三级| 激情抓乳插进去啪啪啪日韩| 太久视频| 人人摸人人干| 秋霞男人网| av线电影| 国产老女人久久毛| 2018天天日天天日| 国产成人99久久亚洲综合| 综合操逼| 久久久一热在线播放| 丝袜性亚洲| 欧洲大香蕉| 国产白丝网站| 国产成人无码a| 日本性爱少妇| 中文字幕啊啊啊在线观看视频| 日韩紧密久久| 少妇熟女视频一区二区三区| 夜夜精品视频一区二区| 亚洲国产精品无码AV久久久| 日韩不卡av一二三| 成人AV素股で擦久久| 久久久久久波多野吉衣高潮| 色老大| 亚洲欧洲自拍图片专区满春格| 欧美日韩亚洲一区二区在线观看| 91狠狠综合久久久久久| 蘋果手機免費看成人Av| 久久久96| 最新日产中文在线麻豆| 色狠狠综合噜一二三区| 91日韩网站| 大屁股熟女一区二区三区| 九九色色| 久久超碰免费的| 亚洲脚交| 超碰在线欧美性爱激情| 夜夜操狠狠操| 亚洲极品| 亚洲图片激情综合另类| 天综合网| 久久久久久久91| 精品国产久热在线观看| 啊啊啊不要啊啊受不了了视频在线| 91痴汉| 天天日天天干天天色| 人妻少妇色综合| 久久精品人妻一区二区| AV天堂因数| 欧美人妻精品一区二区| 国产极品久久久| 97天堂| 亚洲久热| 欧美色爱综合| 人人干人人搞人人摸| 久久久18禁| 色牛aV| 淫妻综合网| 熟女熟妇一区二区三区视频| 亚洲成人性爱在线观看| 久偷拍欧美日韩三区| 操逼操2| 精品国产乱码久久久久久久久1| av草草在线电影| 人妻丰满熟妇一区二区三| 欧美亚男人的天堂| 亚洲加勒比| 99精品无码| 精品人妻一区二区蜜桃视频 | 国产日韩欧美三级片| 男人的天堂日韩| 亚洲成人无码影院| 精品中文一区二区| 色欲日韩欧美在线一区| 蜜桃臀一区二区aV| 综合欧美日本三级| 欧美色蜜桃97| 婷婷五月天综合网| 亚洲欧美日韩中文播放| 亚洲成人精品久久久| 色在线视频导航| 久久久久久性爱视频| 免费精品国偷自产在线在线| 久久久久久久久久久999| 国产午夜福利专区综合| 超碰日本97美女人妻人人玩人人爱 | 午夜精品久久久99热蜜桃的功能特点| 日韩精品中文字幕一| 中文字幕乱碼在线| 秋霞成人做爱| 久草老司机| 欧美一区二区亚洲天堂| 亚洲天堂男人天堂网| 日本 成 人 小说 电影 一区二区| 亚洲男人电影天堂| 极品内射| 91在线视频免费播放| 久久精品视| 学生妹天天看| 久久精品性| 精品女同一区二区三区| 77777亚洲蜜臀精品久久综合蜜臀| 国产精品久久久| 香港日本韩国人妇99www.wccm20| 日韩激情中文字幕有码| 欧美色图第一页| 中文字幕-区二区三区四区视频中国| 亚洲第一狼人丝袜美女另类| 一级AAA片一区二区三区| 久久日韩毛| 污污汅18禁网站在线永久免费观看| 91色人| 中文伊人大香蕉视频| 欧美韩国你懂得在线 | 亚洲天堂另类小说男人| 国产精品无码av在线| 国产第二页| 男人夜色天堂ss| 在线看的av| 亚洲欲色| 欧美久久人体| 欧美性爱网97| 欧美|91色综合| 欧美极品性爱天天射| 清纯唯美亚洲综合| 99日免费视频中文字幕| 人妻在线中出视频| 五月丁香综合| 日韩精品永久在线观看| 欧美人与动性人交a| 亚洲区限制级| 亚洲综合97中文网| 色五月婷婷久久| 国产极品精品美女视频| 日本精品999| 97久久超碰亚洲| 人妻人妻天天碰| 大香蕉AV丝袜| 亚洲老熟妇xxx| 国内毛片免费h片在线| 天天激情综合站| 国产久久久久久| 国产91丝袜 在线播放| 91天天爱| 久插不卡| 91伊人大香蕉| 宗合情欲网| 爆乳免费黄网站| 黑操B| 九九Av| 爱做久久久久久| 激情啪啪拍91| 玖玖爱免费观看视频| 国产精品无码av嫩草| 久久精品 六十路 熟女 欧美| 亚洲婷婷丁香在线| 探花精品 一区二区| 网友自拍第1页| 熟妇人妻一二三区免费| 欧美日韩制服| 婷婷午夜成人色中色| 亚洲国产成人精品999| 亚洲欧美黄| 男同专区一区二区三区在线| 校园春色 亚洲| 免费视频观看60秒| 欧美亚洲激情一二三| 亚洲国产青青| 91久热| 欧美性性性| 91性感在线| 大香蕉欧美| 久久精品一区二区一8| 私人尤物在线精品不卡| 人人人摸人人| 亚洲无码一二三区| 综合自拍| 蜜桃视频精品一区二区| 欧美内射少妇| 国产少妇与亚洲av| 超碰97玖玖爱| 日韩国产九九精品一区二区三区毛片| 久久噜噜噜精品国产亚洲综合| 欧美色图99| 亚洲精品黑丝| 丰满人妻一区二区三区免费,| 国产精品网址| 国产精品无码在线| 日韩黄色成人性爱| 东京热激情视频一二三区| 一区二区三区精品黑丝白丝酒店对鸡 | 国产毛片久久久久久久| 户外裸露刺激视频第一区| 午夜男女爽爽爽在线视频| 婷婷大香蕉| 无码9区| 97精品97| 天堂亚洲欧美| 九月激情婷婷| 老司机射| 国产夜夜艹| 精品二区三四区五电影| 黄片免费日韩| 欧美性爱一级操| 国产原创精品| 91中文字幕在线观看| 亚洲色图欧美一区二区不卡| 日本操嫩b网| 欧美图片偷拍| 精品无码产区一区二| 超碰午夜| 在线观看av区| 97香蕉人人乳| 天天综合色图| 亚洲成人一区二区精品| 91黑丝少妇| 久久久久久人体| 尹人免费观看视频在线| 一起草av| 亚洲风情综合网| 天天日天天搞天天干| 亚洲丝袜色| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照 | 后入式视频国产自| 91在线视频国产网站| 国产亚洲精品第一最新| 久久色一区二区| 啊啊啊啊网站| 婷婷尹人大香蕉免费| 九九九九一级| 欧美亚洲尤物久久| 人妻熟女一区二区三区视频| 中文字幕乱码人妻二区三区| 亚洲美乱| 免费99精品国产自在在线| CCYY草草影院地址入口| 啊a一区在线| 99精品九九九九九九| 亚洲综合中文字幕有码| 欧美大干日韩| 国产专区第一页| 亚洲激情色片 | 国产又大又粗又长视频在线| 精品九九九| 色婷网| 亚洲综合嫩| 蜜乳av首页| 日日骚一区二区三区| 日本中文字幕在线视频 | 天天澡天天狠天天天做| 超碰日本97美女人妻人人玩人人爱| 婷婷人妻激情| 五月天婷婷色| 啊啊啊久久| 小草三级久久观看| 污色区网站| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 多乙久久久久久| 亚洲欧洲激情| 久久久国产三级黄色片| 亚洲激情久久久伊人综合| 婷婷色导航| 啊啊啊啊啊在线| 18一区二区三区| 91看黄片| 久久国产999| 久久美女福利是上海美女| 好爽视频在线观看| 嗯……啊…嗯嗯…啊…好舒服| 国产精品国产亚洲区艳妇糸列| 无码人妻丰满熟妇奶水区毛片| Av手机版天堂网| 校园春色宗合网| 2020中文在线一区二区三区| 99热国产精品| 亚洲乱码尤物193YW| 亚洲欧美碰碰| 国产91精品久久久久久久网曝门| 日韩色欲久久一二三四区| 日本天堂在线播放| 色综合91| 中文字幕亚洲永久精品| 久久久久久少妇| 久久九九99| 色香av| 中文字幕久久精品一区| 蜜乳av首页| 在线日韩精品一区二区三区| 亚洲的天堂网| 日韩免费人妻色情网站| 三级特黄60分钟播放| 国产在线激情| 日本最新免费韩国1区2区视频播放| 欧美东京热精品A∨| 青青在线视频日韩欧美| 日韩精品9区| 精品久久視頻在线| 精品一区二区成人| 操东北女人| 爱丝福利| 天天看特黄的免费网站| 丁香六月啪啪| 日本天天操| 激情五月天中文字幕色| 国产AB视频| 久久一二区四| 人妻22p| 热思思免费视频| 操一对老熟妇爽上天视频| 久肏视频字幕| 日本东京热大香蕉a片| 青青草中文-久久青草精品一区二区三| AV天堂国产| 久久女人| 999热日韩精品| 国产小炒后入式| 日日日啊啊啊| 丰满欧美少妇| 色五月大香蕉| 激情五月天丁香社区| 日韩精品国产一区二区| 2017av无码免费无线播| 超碰99在线| 亚洲天堂人人妻| 欧美熟女激情| 久久美女福利是上海美女| 国产成年精品高清在线观看91| 人人妻人人色一区二区三区| 9久精品视频在线观看| 亚洲图片欧美制度| 国产人妻精品久久久一区二区三区 | 亚洲 欧美 91| 99热精品在线观看| 精品人妻av在线播放| 一区二区三区免费视频入口| 91老熟女| 亚洲成人激情小说视频| 91老女人| 干少妇视频| 四虎影视精品| 大逼色网站| 老熟乱一区二区三区四区| 51一区二区三区| 九九九九欧美| 91热情品| 亚洲91综合| 国产精品国产| 综合自拍| 人人操人人肉久久精品| 91美女高潮| 成人草草视频| 97精品在线视频| 天天噜| a片自拍直播视频| 亚洲在线91| 亚洲黑人在线| 91在线精品一区二区三区| 91麻豆天美| 人人操 欧美| 久久久久久久伊人精品| 日韩AV无码中文一区二区| 五月天黄色激情视频| 无码抄逼网| 激情五月天社区| 五月天激情小说网| 老熟女91av| 麻豆激情综合| 色一区二区三区综合| 综合97亚洲| 久久久九| 日韩兔费看黄片| 蜜乳av一区二区| 91精品国产高清久久久久久,亚洲成人| 91丨九色丨国产打屁股| 国产欧美精品日韩区二区麻豆天美| 日日夜夜骚| aaa淫乱视频| 亚洲怡春院| 999精品久久久久久久| 精品国产91内射久久| 美国一区二区免费视频| 九九无码| 日本999精品| 欧美性暴力猛交| 自拍偷拍草一草| 免费亚洲黄色视频在线观看| 99视频只有精品| 男人的天堂欧美| 亚洲少妇综合| 国产精品永久免费10000| 亚洲欧美日韩夜夜| 嗯……啊…嗯嗯…啊…好舒服| 麻豆国产成人精品| 亚洲情色视频| 操碰91| 9九九国产| 中文字幕交换人妻| 天天看特黄的免费网站| 久久综合99| 蜜屁Av| 久久伊人亚洲AV无码网站| 校园春色 男人天堂 | 日韩操人| 91精品久久久久久久久久| 精品人妻一区二区三区四区不卡在| 亚洲无码超碰免费| 夜夜爽33333| 色哟哟精品1精品2| 成人午夜高潮av猛片| 婷婷五月在线视频| 囯产精品强| 欧美性爱18观看| 青娱乐亚洲热| 92大香蕉| 黑人无码一区二区| 亚洲AV不卡在线观看尤物| 亚洲天堂资源在线| 欧美精品久久久久久久久88| 白丝少妇一区二区| 亚洲麻豆av一区二区| 色五月网址| 欧美桃色网| 天天做日日做天天欢。| 欧美综合在线91| 日本国产亚洲一区在线观看| 一区二区你上我| 欧洲综合色| 熟女色综合久久| 久久99精品九九久久久婷婷| 国产成人99久久亚洲综合| 有码免费观看| 97超碰精品| 91超碰人人| 性猛交| 欧美大码在线视频| 国产精品美女| 欧美熟妇视频| 色综合av综合久久| 嗯~啊~快点 死我视频| 被操高清无码视频| 亚洲黄a三级三级三级看三级| 国产无马视频| 91综合天天| 亚洲s在线观看| 97在线精品观看视频| 香蕉大久久久| 五月天婷婷欧美三区| 亚洲性爱成人| 人妻大香蕉| 人妻啊啊人妻啊| 日韩中文字幕国产| 2019男人的天堂| 久久这里都是精品| 一起草日韩| 三四中文字幕| 欲香欲色天天天综合和网| 日本亚洲熟女视频| 翔田千里AV无码秘 三区| 最新av在线| 六月婷婷色综合| 99re免费视频精品全部| 精品久久久一本一道| 亚洲色图久久成人| 国产精品干干干| 91性网| 欧美 亚洲 另类 综合| 激情四射五月天| 午夜视频久久久久一区| 97久久超碰亚洲| AV天堂男人的天堂| 久久色情| 人人看欧美性爱| 91高潮| 国产精品3| 国产视频一区二区三区久久亚洲天堂| 中文字幕狠狠玩| 搡老熟女免费视频 | 乱人伦 国语对白:视频直接看| 囯戸精品高潮呻吟旡码| 亚洲色婷婷综合久久一区二区三区| 久久综合日韩亚洲欧美| www.99在线| 日欧亚洲二三区大片不卡| av天堂电影网| 熟女高潮精品一区二区| 久热精品色情| 天美av在线观看| 日韩AV熟女乱伦| h4610国产人妻| 国产午夜精品理论片一二三区区| 久久久一区二区三区麻豆| 欧美中文狠| 伊人97色天使| 东京日日夜夜| 亚洲1区| 97任你吞精| 国产成人一级av88| 亚洲**2021在线观看| 中文 人妻 制服| 97超碰公开| 日本精品九九九| 无码人妻精品一区二区三区九九| 五月天伊人| 九一屌逼| 久久9精品视频| 丝袜六区| 久久久无码精品人妻二区| 精品97久久综合| 少妇天堂网络| 97人亚洲综合字幕| 国产天天骚| 67194无码不卡| 日韩人妻少妇中文字幕| 麻豆人妻精品一区二区| 五月综合久久| 色吧五月| 精品色色| 人妻激情偷乱视频一区二区三区| 亚洲激情综合| 五月天综合网| 人妻啊啊人妻啊啊| 亚洲AV无码天美传媒一区| 伊人成人中文字幕久久网| 五月丁香在线| 混色激情av| 嗯……啊…嗯嗯…啊…好舒服| 99精品丰满人妻无| 精品国产一区二区三区久久久蜜臀| 男人的天堂.com| 欧亚第一综合网| m欧洲一级午老| 天天色踪合| 麻豆色约约| 精品一级| 国产自制av蜜乳| 国产第12页| 51一区二区三区| 成年人一级黄色毛片大全在线观看| 九九探花视频在线观看| 亚洲成人免费在线| 人妻天天夜夜爽一区二区| 青娱乐av在线| 天天看片麻豆| 色99久草| 麻豆久久一区二区三区| 无码人妻精品一区二区三区99不卡 | 91丨九色丨熟女高潮| 91在线页| 青青草日本中文字幕| 五十路人妻在线| 漂亮人妻被强中文字幕hd| 国产久久久| 中文字幕一区二区三区字幕| 日本性爱少妇| 人妻少妇蜜桃视频欧美一区| 污污污8888| 精品成人久久久人人亚洲| 97免费视频在线观看| 色就色综合| 99精品久久| 黄色十八禁网站| 九九九九九九综合| 国产无码精品成人| 爆操无码| 高树玛利亚无码流出| 一二三四视频在线社区中文字幕| 台湾佬大香蕉| 日本狂喷奶水在线播放212| 精品超碰国产| 天美欧美国产| 嗯嗯不要视频| 无码免费精品高清| 大鸡巴久久久| 亚洲,欧美,综合网| 激情 欧美 亚洲 小说| 久久婷婷视频| 欧美天天综合站| 国产美女高潮| 欧美精品自慰系列寂寞少妇| 一区二区三区四区五区高清无码永久视频| 男人的天堂久久狠| 国产综合色精品在线观看| 久久久久国产一区二| 狠狠搞 亚洲91| 伦理第一页| 综合欧美日韩在线观看| 少妇天堂网络| 日韩射精| 在线国产探花| 99后入| 人人干黄色| 亚码激情| 上床啊啊啊| 92午夜免费福利视频| 国产美女口爆吞精| 探花精品 一区二区| 色婷婷香蕉| 一二三卡欧美日韩人妻免费精品| 国产探花日韩援交| 99r九九| 久久加勒比| www.99热| 久久精品无码熟妇一区二区三区视频导航 | 中国东北熟女老太婆内谢| 欧美色66| 国产1024在线播放| 欧美久久九九| 久久精品国产亚洲av水密被窝| 中国探花熟女| 在线小说视频一区| 亚洲第一黄色av网站| 欧亚成人在线视频| 人妻丰满熟妇一区二区三| 欧美色图偷拍另类| 日韩欧美大片免费高清啪啪| 精品久久在线区一区| 免费视频一二三区| 天天干少妇| 热热色中文无码| 先锋精品av色鲁| 91爱网| 天美麻豆精品视频99| 蜜臀久久99精品久久久久| 日韩欧美女优电影| 超碰色综合| 九九九久千久久激情蜜桃在线看 | 久久九色| 1024亚洲中文字幕久在线看片你懂的| 香蕉人欧美综合| 欧美专利1区2区3区4区5区免费| 日韩亚洲欧美中文字幕| 精品网站9999| 99视频这有这里有精品| 99国产精品免费| 国产高清免费不卡av| 中文一区在线日| 亚洲熟女中文字幕在线| 欧美人妖内射| 殴美,日韩国产伦精品| 亚洲无992tv| 上床不卡网站| 成人亚欧免费视频| 中出91视频| 看日韩美女二区三区免费操逼视频| 一起草在线视频| 操操操操操操| 中文字幕亚洲热播人妻| 国内毛片四区| 九九九九九九亚洲| 精品九九国产无码| 亚洲极品| 久久久久久久久久久六六| 永久免费av无码网站国产app| 久久久久久久久久久久久久久久9| 囯产操逼片| 免费视频97| 青青草乱入乱欲视频在线观看| 日本一区二区三区四区免费观看| 欧美午夜熟妇黑人精品91| 亚洲最大黄网| 伊人影院综合是一个与深夜成人在线| 精品在线78| 激情文学 国产一二三aV| 色色色天美视频| 天天网综合| 国产精品久久久久久久久久久久久久久久 | 久久AV无码1区2区3区| 在线无码操| 国产白丝精品在线观看| 天天日美女的B| 久久五月份| 精品亚洲国产成人精品| 97色综合中文网| 欧美日动态视频| 屌色在线97视频| 在线免费观看日韩一区| 人妻精品一区二区| 97精品国产手机| 精品国产乱码久久久久久影片| 欧美亚洲尤物久久| 色香AV| 国产视频97| 粉嫩AV一区夜夜嗨| 91亚州日韩高清| 国产黄色av大片网站| 亚洲一区中文精品| 亚洲深夜福利| 在线观看 99热| 久久av色| 爱爱60秒免费视频| 99热这里只有精品地址| 综合伊人网12色| 91爱啪| 不卡六六在线91| 一区二区视频你懂的| 久久国色天香香蕉| 99精品网| 男人的天堂一区三区| 国产一区二区三三视频| 国产强奸乱伦第1页| 91痴汉| 欧洲精品欧洲精品| 亚州色图欧美| 亚洲AO在线| 欧插网站| 色蜜AV| 五月丁香啪啪啪| 十八禁视频网站| 亚洲日韩国产欧美综合v| 日韩性爱人人爱人人操| 91久久九九精品国产综合| 欧美一二三| 欧美色图综合网| 九九九九亚洲| 九九九九一区| 97精品视频在线| 精品一区二区三区蜜桃臀www| 亚洲瓯美色图| 亚欧美天堂在线| 无码99| 欧美最婬乱婬爆婬性视频 | 亚洲精品黑丝| 久操av在线| 国产97综合| 新怡红院| 欧美亚洲首页| 超碰美国| 久久精品| 国产无码精品成人| CCYY草草影院地址入口| 欧美一区二区一级岛国大片| 天堂69亚洲精品中文字| 国产一区二区成人av在线播放| 色在线视频导航| 精品人妻视频入口| 操逼逼一区视频| 在线免费观看日韩一区| 伦伦成年午夜免费视频| 国产网站在线播放| 天天精品| 亚洲激情综合| 老鸭窝亚洲毛片| 久久久中文版| 日韩中文9| 久久9精品| 17c嫩草51久久91嫩草|