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

ARTICLE DETAIL

資訊詳情

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

FreeRTOS動(dòng)態(tài)內(nèi)存管理詳解:從heap_1到heap_5的選型、配置與避坑指南

FreeRTOS動(dòng)態(tài)內(nèi)存管理詳解:從heap_1到heap_5的選型、配置與避坑指南 1. 從“堆棧溢出”到內(nèi)存管理一個(gè)嵌入式工程師的日常如果你在嵌入式開(kāi)發(fā)中用過(guò)FreeRTOS大概率見(jiàn)過(guò)類(lèi)似..\freertos\port\portmacro.h(73): error: #35: #error directive: configtick_t這樣的編譯錯(cuò)誤或者更頭疼的程序運(yùn)行一段時(shí)間后莫名其妙地死機(jī)、重啟最后用調(diào)試器一查發(fā)現(xiàn)是任務(wù)堆棧溢出了。這些問(wèn)題十有八九都指向同一個(gè)核心議題動(dòng)態(tài)內(nèi)存管理。在資源受限的單片機(jī)世界里內(nèi)存就像沙漠中的水每一滴都至關(guān)重要。FreeRTOS作為一個(gè)實(shí)時(shí)操作系統(tǒng)內(nèi)核它自己不直接管理物理內(nèi)存而是提供了一套靈活的內(nèi)存管理方案讓你來(lái)“當(dāng)家作主”。理解這套方案不僅是解決上述報(bào)錯(cuò)和崩潰的關(guān)鍵更是寫(xiě)出穩(wěn)定、高效嵌入式代碼的基石。今天我們就拋開(kāi)那些晦澀的手冊(cè)從一個(gè)一線(xiàn)開(kāi)發(fā)者的視角拆解FreeRTOS動(dòng)態(tài)內(nèi)存管理的里里外外聊聊怎么選、怎么用、怎么避坑。2. FreeRTOS內(nèi)存管理的五種“兵器譜”不只是heap_4.c很多人一提到FreeRTOS內(nèi)存管理腦子里就蹦出heap_1.c到heap_5.c這幾個(gè)源文件。沒(méi)錯(cuò)FreeRTOS在portable/MemMang目錄下提供了五種現(xiàn)成的內(nèi)存分配算法實(shí)現(xiàn)供你直接復(fù)制到項(xiàng)目里使用。但如果你以為只是隨便選一個(gè)編譯通過(guò)就行那可就埋下了大雷。這五種算法各有各的脾氣適用場(chǎng)景天差地別。2.1 heap_1.c極簡(jiǎn)主義的代價(jià)這是最簡(jiǎn)單的一種實(shí)現(xiàn)。它只在你創(chuàng)建任務(wù)、隊(duì)列、信號(hào)量等內(nèi)核對(duì)象時(shí)從一個(gè)大數(shù)組堆里劃一塊內(nèi)存給你并且一旦分配永不釋放。是的它沒(méi)有vPortFree()函數(shù)。工作原理初始化時(shí)將一個(gè)大數(shù)組比如ucHeap[ configTOTAL_HEAP_SIZE ]作為堆。分配時(shí)用一個(gè)靜態(tài)指針pucAlignedHeap指向堆起始對(duì)齊地址再用一個(gè)指針記錄當(dāng)前已分配到的位置。每次分配簡(jiǎn)單地將當(dāng)前指針向后移動(dòng)所需字節(jié)數(shù)加上對(duì)齊和字節(jié)填充開(kāi)銷(xiāo)。適用場(chǎng)景你的應(yīng)用在啟動(dòng)階段創(chuàng)建完所有內(nèi)核對(duì)象任務(wù)、隊(duì)列等后在運(yùn)行期間絕不再刪除它們。這種場(chǎng)景在工業(yè)控制、某些安全至上的系統(tǒng)中很常見(jiàn)因?yàn)橄到y(tǒng)行為完全確定沒(méi)有內(nèi)存碎片化的風(fēng)險(xiǎn)。為什么選它實(shí)現(xiàn)極其簡(jiǎn)單確定性高分配時(shí)間是常數(shù)O(1)。沒(méi)有釋放邏輯也就沒(méi)有碎片沒(méi)有互斥鎖在無(wú)刪除操作的單任務(wù)啟動(dòng)階段開(kāi)銷(xiāo)極小。避坑指南千萬(wàn)別在運(yùn)行時(shí)用它創(chuàng)建后又刪除對(duì)象否則你以為釋放了內(nèi)存實(shí)際上vPortFree()是個(gè)空函數(shù)內(nèi)存根本沒(méi)回收。堆指針只增不減最終必然導(dǎo)致分配失敗。configTOTAL_HEAP_SIZE必須足夠大要涵蓋整個(gè)生命周期所有內(nèi)核對(duì)象的內(nèi)存需求需要你手動(dòng)精確計(jì)算。2.2 heap_2.c引入釋放的“初代機(jī)”heap_2.c實(shí)現(xiàn)了最經(jīng)典的首次適應(yīng)算法并支持內(nèi)存釋放。它維護(hù)一個(gè)空閑塊鏈表分配時(shí)從頭遍歷找到第一個(gè)大小足夠的空閑塊就進(jìn)行分割如果塊太大或直接占用。工作原理每個(gè)分配的內(nèi)存塊都有一個(gè)塊頭包含塊大小和指向下一個(gè)空閑塊的指針。初始時(shí)整個(gè)堆就是一個(gè)大空閑塊。分配時(shí)遍歷空閑鏈表找到合適的塊。釋放時(shí)將塊重新插入空閑鏈表并嘗試與相鄰的空閑塊合并以防止碎片。適用場(chǎng)景需要?jiǎng)討B(tài)創(chuàng)建和刪除內(nèi)核對(duì)象但每次分配的內(nèi)存塊大小都是固定的、可預(yù)知的。比如你總是創(chuàng)建固定大小的任務(wù)控制塊(TCB)和固定長(zhǎng)度的隊(duì)列。為什么選它 大坑所在它不支持內(nèi)存塊的分割與合并的“碎片整理”。這意味著如果你頻繁申請(qǐng)和釋放不同大小的內(nèi)存塊很快就會(huì)產(chǎn)生大量無(wú)法被利用的小碎片外部碎片。即使總空閑內(nèi)存看起來(lái)還很多也可能因?yàn)檎也坏揭粋€(gè)連續(xù)的、足夠大的空閑塊而導(dǎo)致分配失敗。所以對(duì)于需要分配可變大小對(duì)象比如存儲(chǔ)不定長(zhǎng)字符串的場(chǎng)景heap_2.c是災(zāi)難性的。FreeRTOS官方也早已不推薦在新項(xiàng)目中使用它。2.3 heap_3.c標(biāo)準(zhǔn)庫(kù)的“馬甲”這個(gè)方案很取巧它直接對(duì)編譯器提供的malloc()和free()進(jìn)行了一層簡(jiǎn)單的包裝加上了線(xiàn)程安全保護(hù)通過(guò)暫時(shí)掛起調(diào)度器。工作原理pvPortMalloc(size)本質(zhì)上就是malloc(size)但在調(diào)用前后掛起和恢復(fù)調(diào)度器防止多任務(wù)競(jìng)爭(zhēng)。vPortFree(ptr)同理。適用場(chǎng)景你的開(kāi)發(fā)環(huán)境如某些桌面模擬器、或者鏈接了標(biāo)準(zhǔn)庫(kù)的ARM GCC項(xiàng)目提供了穩(wěn)定且高效的標(biāo)準(zhǔn)庫(kù)堆管理。你想利用標(biāo)準(zhǔn)庫(kù)可能更高級(jí)的算法比如dlmalloc。為什么選它省事不用自己管理堆數(shù)組??梢岳盟拗飨到y(tǒng)強(qiáng)大的內(nèi)存管理。避坑指南嵌入式環(huán)境下慎用標(biāo)準(zhǔn)庫(kù)的malloc/free通常不是為實(shí)時(shí)系統(tǒng)設(shè)計(jì)的它們可能不具備確定性執(zhí)行時(shí)間不定并且本身可能產(chǎn)生碎片。更重要的是你需要確保鏈接器正確設(shè)置了堆空間heap區(qū)這又引入了額外的移植復(fù)雜性。在資源緊張的MCU上這通常不是好選擇。2.4 heap_4.c嵌入式場(chǎng)景的“萬(wàn)金油”這是目前最常用、最推薦的通用方案。它同樣使用首次適應(yīng)算法但關(guān)鍵改進(jìn)在于它支持相鄰空閑塊的合并碎片整理。工作原理與heap_2.c類(lèi)似但它在釋放內(nèi)存時(shí)會(huì)檢查前后相鄰的塊是否也是空閑的。如果是就將它們合并成一個(gè)更大的空閑塊。這個(gè)操作能有效減少外部碎片。適用場(chǎng)景絕大多數(shù)需要?jiǎng)討B(tài)創(chuàng)建和刪除不同大小內(nèi)核對(duì)象的FreeRTOS應(yīng)用。比如你的應(yīng)用會(huì)創(chuàng)建不同棧深度的任務(wù)會(huì)建立不同長(zhǎng)度和類(lèi)型的隊(duì)列、信號(hào)量。這是STM32 CubeMX默認(rèn)配置的選項(xiàng)也側(cè)面證明了其普適性。為什么選它在碎片控制上比heap_2.c好得多算法復(fù)雜度適中實(shí)用性很強(qiáng)。它提供了一個(gè)非常實(shí)用的函數(shù)xPortGetFreeHeapSize()用于獲取當(dāng)前剩余空閑堆大小是調(diào)試內(nèi)存問(wèn)題的利器。實(shí)操心得合并不是萬(wàn)能的雖然合并能緩解碎片但無(wú)法完全消除。長(zhǎng)期運(yùn)行后碎片化依然可能發(fā)生尤其是分配和釋放的模式非常隨機(jī)時(shí)。configTOTAL_HEAP_SIZE是命門(mén)這個(gè)宏定義了堆數(shù)組的總大小。設(shè)置太小很快內(nèi)存耗盡設(shè)置太大浪費(fèi)寶貴的RAM。一個(gè)實(shí)用的方法是在開(kāi)發(fā)調(diào)試階段在idle任務(wù)或一個(gè)低優(yōu)先級(jí)監(jiān)控任務(wù)中周期性地調(diào)用xPortGetFreeHeapSize()并打印出來(lái)觀察其最小剩余值。將configTOTAL_HEAP_SIZE設(shè)置為比這個(gè)“最低水位線(xiàn)”多出20%-30%的安全余量。字節(jié)對(duì)齊heap_4.c會(huì)保證分配的內(nèi)存地址符合portBYTE_ALIGNMENT通常為8字節(jié)。這意味著你申請(qǐng)10字節(jié)實(shí)際可能占用16字節(jié)10塊頭對(duì)齊填充。計(jì)算內(nèi)存時(shí)務(wù)必考慮這個(gè)開(kāi)銷(xiāo)。2.5 heap_5.c高端玩家的“地圖編輯器”這是功能最強(qiáng)大的版本它允許你將多個(gè)非連續(xù)的內(nèi)存區(qū)域組合成一個(gè)邏輯上的堆。比如你可以把內(nèi)部SRAM的一段、外部SDRAM的一段、甚至是CCM內(nèi)存如果支持都添加到堆池中。工作原理在使用前你必須先調(diào)用vPortDefineHeapRegions()函數(shù)傳入一個(gè)HeapRegion_t結(jié)構(gòu)體數(shù)組來(lái)定義每一塊內(nèi)存區(qū)域的起始地址和大小。之后heap_5.c會(huì)像heap_4.c一樣管理這個(gè)“拼接”起來(lái)的大堆同樣支持碎片合并。適用場(chǎng)景芯片具有多塊物理上不連續(xù)的RAM如STM32H7系列的DTCM, AXI SRAM, SRAM1/2/3等你想充分利用它們。系統(tǒng)使用了外部?jī)?nèi)存如SDRAM需要將其納入FreeRTOS的統(tǒng)一管理。想將超快但容量小的內(nèi)存如TCM用于關(guān)鍵任務(wù)棧將大容量但稍慢的內(nèi)存用于數(shù)據(jù)存儲(chǔ)。為什么選它提供了極致的靈活性能充分利用復(fù)雜的存儲(chǔ)架構(gòu)。是進(jìn)行高級(jí)內(nèi)存規(guī)劃和優(yōu)化的必備工具。配置與避坑初始化順序必須在創(chuàng)建任何內(nèi)核對(duì)象任務(wù)、隊(duì)列等之前調(diào)用vPortDefineHeapRegions()。區(qū)域排序HeapRegion_t數(shù)組必須以地址升序排列且區(qū)域之間不能有重疊。性能考量雖然邏輯上是一個(gè)堆但物理上分布在不同的總線(xiàn)如AXI, AHB上。訪(fǎng)問(wèn)不同區(qū)域的速度可能不同。對(duì)于實(shí)時(shí)性要求極高的任務(wù)棧最好將其分配到最快的內(nèi)存區(qū)域通過(guò)指定任務(wù)棧創(chuàng)建函數(shù)pvPortMalloc()返回的地址來(lái)實(shí)現(xiàn)但這需要更精細(xì)的控制。3. 配置與調(diào)優(yōu)讓FreeRTOS內(nèi)存管理為你所用選好了“兵器”接下來(lái)就是精細(xì)打磨讓它適配你的具體戰(zhàn)場(chǎng)。FreeRTOS通過(guò)一系列FreeRTOSConfig.h中的配置宏給你留下了充足的調(diào)優(yōu)空間。3.1 核心配置宏詳解configTOTAL_HEAP_SIZE這是最重要的宏定義了堆的總大小單位字節(jié)。對(duì)于heap_1/2/4它就是那個(gè)大數(shù)組ucHeap的大小。計(jì)算這個(gè)值是個(gè)經(jīng)驗(yàn)活你可以把所有任務(wù)棧、隊(duì)列存儲(chǔ)區(qū)、內(nèi)核對(duì)象等預(yù)估大小加起來(lái)再乘以一個(gè)安全系數(shù)如1.5。更科學(xué)的方法是使用heap_4/5提供的xPortGetFreeHeapSize()在運(yùn)行時(shí)動(dòng)態(tài)監(jiān)測(cè)“最低水位線(xiàn)”。configAPPLICATION_ALLOCATED_HEAP默認(rèn)為0表示堆由FreeRTOS在內(nèi)部靜態(tài)數(shù)組ucHeap中定義。如果你將其設(shè)置為1則需要在外部手動(dòng)定義一個(gè)數(shù)組例如uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];并且需要指定其鏈接位置比如通過(guò)鏈接腳本放到特定的RAM段。這在你需要精確控制堆所在物理內(nèi)存位置時(shí)非常有用例如使用heap_5前的準(zhǔn)備工作或者想把堆放到外部SDRAM。configUSE_MALLOC_FAILED_HOOK強(qiáng)烈建議設(shè)置為1。當(dāng)pvPortMalloc()因內(nèi)存不足而失敗時(shí)會(huì)調(diào)用vApplicationMallocFailedHook()鉤子函數(shù)。你可以在其中進(jìn)行錯(cuò)誤處理比如記錄日志、點(diǎn)亮錯(cuò)誤燈、執(zhí)行安全復(fù)位等這比系統(tǒng)直接進(jìn)入未知狀態(tài)要好得多。configCHECK_FOR_STACK_OVERFLOW這個(gè)雖然不是堆管理直接相關(guān)但和內(nèi)存安全息息相關(guān)。設(shè)置為1或2可以啟用任務(wù)棧溢出檢測(cè)。當(dāng)檢測(cè)到溢出時(shí)會(huì)觸發(fā)vApplicationStackOverflowHook()鉤子函數(shù)。這是定位“任務(wù)跑飛”問(wèn)題的神器。方法1是在任務(wù)切換時(shí)檢查棧指針是否越界方法2還會(huì)在任務(wù)切換時(shí)用魔數(shù)填充棧底檢查魔數(shù)是否被改寫(xiě)更可靠但開(kāi)銷(xiāo)稍大。3.2 堆棧溢出檢測(cè)的實(shí)戰(zhàn)配置結(jié)合網(wǎng)絡(luò)熱詞中的“freertos堆棧溢出檢測(cè)”我們來(lái)具體配置一下。以STM32CubeIDE或CubeMX為例在FreeRTOSConfig.h中確保#define configCHECK_FOR_STACK_OVERFLOW 2 /* 使用方法2更可靠 */在工程中任意一個(gè).c文件通常是main.c或freertos.c里實(shí)現(xiàn)鉤子函數(shù)void vApplicationStackOverflowHook(TaskHandle_t xTask, char *pcTaskName) { (void)xTask; // 防止未使用警告 // 這里可以根據(jù)你的硬件進(jìn)行錯(cuò)誤處理 printf(“[ERROR] Stack overflow in task: %s\r\n”, pcTaskName); // 例如點(diǎn)亮LED保存錯(cuò)誤信息到非易失存儲(chǔ)器然后軟件復(fù)位 Error_Handler(); }關(guān)鍵一步這個(gè)鉤子函數(shù)需要在FreeRTOSConfig.h中聲明。通常CubeMX會(huì)幫你生成一個(gè)弱定義的函數(shù)你需要在自己的代碼里重新實(shí)現(xiàn)一個(gè)強(qiáng)定義的函數(shù)來(lái)覆蓋它。確保鏈接時(shí)你的實(shí)現(xiàn)被正確鏈接。這樣一旦某個(gè)任務(wù)棧溢出你就能立刻知道是哪個(gè)任務(wù)出了問(wèn)題而不是像無(wú)頭蒼蠅一樣去查整個(gè)系統(tǒng)的內(nèi)存。3.3 內(nèi)存統(tǒng)計(jì)與調(diào)試技巧除了xPortGetFreeHeapSize()heap_4.c還提供了其他輔助函數(shù)需將configUSE_TRACE_FACILITY定義為1xPortGetMinimumEverFreeHeapSize()返回自系統(tǒng)啟動(dòng)以來(lái)堆空間的最小剩余值。這是確定configTOTAL_HEAP_SIZE的黃金指標(biāo)。vPortGetHeapStats( HeapStats_t *pxHeapStats )獲取詳細(xì)的堆統(tǒng)計(jì)信息包括總大小、空閑大小、最小剩余值、分配次數(shù)等??梢远ㄆ谡{(diào)用并打印用于系統(tǒng)健康監(jiān)控。一個(gè)實(shí)用的調(diào)試流程是在系統(tǒng)完成初始化、進(jìn)入主循環(huán)前打印一次初始空閑堆大小。然后在最低優(yōu)先級(jí)的任務(wù)或Idle Hook里每隔一段時(shí)間打印當(dāng)前空閑堆大小和歷史最小空閑堆大小。觀察其變化趨勢(shì)和穩(wěn)定值就能對(duì)系統(tǒng)的內(nèi)存使用情況了如指掌。4. 移植與集成中的典型“坑”與解決方案網(wǎng)絡(luò)熱詞里提到了各種移植相關(guān)的問(wèn)題如“freertos移植”、“stm32f407移植freertos”、“f4標(biāo)準(zhǔn)庫(kù)加freertos”、“cubeide freertos dma adc”、“cubemx配置freertos”。這些問(wèn)題很多都繞不開(kāi)內(nèi)存管理。4.1 鏈接腳本.ld/.icf的適配這是移植中最容易出錯(cuò)的地方。FreeRTOS的堆ucHeap和任務(wù)棧都需要RAM。問(wèn)題場(chǎng)景當(dāng)你使用heap_1/2/4且configAPPLICATION_ALLOCATED_HEAP為0時(shí)ucHeap數(shù)組被定義在FreeRTOS的源文件里。鏈接器需要知道把它放到哪個(gè)RAM區(qū)域。如果鏈接腳本中該區(qū)域的剩余空間小于configTOTAL_HEAP_SIZE鏈接就會(huì)失敗報(bào)錯(cuò)“regionRAM’ overflowed”。解決方案檢查鏈接腳本打開(kāi)你的工程鏈接腳本文件如STM32的.ld文件或IAR的.icf文件。找到定義RAM如RAM (xrw)的部分查看其LENGTH屬性。這個(gè)值就是芯片可用的RAM總大小。計(jì)算已用空間你的全局變量、靜態(tài)變量、棧啟動(dòng)文件中的_stack大小都會(huì)占用這部分RAM。FreeRTOS的堆是全局變量也在這里面。調(diào)整堆大小或RAM分區(qū)如果總RAM不夠要么減小configTOTAL_HEAP_SIZE需精打細(xì)算要么優(yōu)化其他變量。對(duì)于有多個(gè)RAM區(qū)的芯片如STM32F4/F7/H7可以考慮修改鏈接腳本將ucHeap指定到某個(gè)容量較大的RAM區(qū)這通常需要設(shè)置configAPPLICATION_ALLOCATED_HEAP為1并手動(dòng)定義數(shù)組然后通過(guò)鏈接腳本屬性指定段名。4.2 標(biāo)準(zhǔn)庫(kù)與FreeRTOS的堆沖突當(dāng)你使用標(biāo)準(zhǔn)庫(kù)函數(shù)如printf通過(guò)重定向到串口內(nèi)部可能用到malloc同時(shí)又使用FreeRTOS的動(dòng)態(tài)內(nèi)存時(shí)如果處理不當(dāng)會(huì)出現(xiàn)兩個(gè)堆管理器極易混亂和崩潰。問(wèn)題場(chǎng)景“f4標(biāo)準(zhǔn)庫(kù)加freertos”時(shí)標(biāo)準(zhǔn)庫(kù)有自己的堆在啟動(dòng)文件或syscalls.c中定義FreeRTOS又有自己的堆ucHeap。如果你不小心用標(biāo)準(zhǔn)庫(kù)的malloc分配了內(nèi)存然后用FreeRTOS的vPortFree去釋放或者反過(guò)來(lái)必然導(dǎo)致災(zāi)難。解決方案推薦統(tǒng)一使用FreeRTOS的堆管理器將標(biāo)準(zhǔn)庫(kù)的堆實(shí)現(xiàn)“映射”到FreeRTOS的堆上。具體做法是重寫(xiě)_sbrk、_malloc_r、_free_r等系統(tǒng)調(diào)用函數(shù)通常在syscalls.c或newlib相關(guān)文件中讓它們的內(nèi)部實(shí)現(xiàn)直接調(diào)用pvPortMalloc和vPortFree。這樣整個(gè)系統(tǒng)就只有一套堆管理。徹底禁用標(biāo)準(zhǔn)庫(kù)堆如果你的應(yīng)用完全不用標(biāo)準(zhǔn)庫(kù)中需要堆的函數(shù)可以在鏈接時(shí)忽略相關(guān)庫(kù)但這通常不現(xiàn)實(shí)因?yàn)閜rintf等函數(shù)很常用。嚴(yán)格隔離確保你自己寫(xiě)的代碼清晰地知道每一塊內(nèi)存來(lái)自哪個(gè)分配器但這需要極高的紀(jì)律性容易出錯(cuò)。4.3 CubeMX配置FreeRTOS時(shí)的內(nèi)存設(shè)置CubeMX極大地簡(jiǎn)化了FreeRTOS的集成但也會(huì)隱藏一些細(xì)節(jié)。在Project Manager - Code Generator里確保勾選了“Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral”這樣FreeRTOS的配置會(huì)生成獨(dú)立的freertos.c/.h文件方便你修改。在Middleware - FREERTOS - Config Parameters里TOTAL_HEAP_SIZE就是configTOTAL_HEAP_SIZE在這里設(shè)置。MEMORY_ALLOCATION選擇Static Alloc或Dynamic Alloc。如果選DynamicCubeMX會(huì)為你選擇一種堆實(shí)現(xiàn)默認(rèn)是heap_4。生成的代碼會(huì)在freertos.c中定義ucHeap數(shù)組。USE_MALLOC_FAILED_HOOK和CHECK_FOR_STACK_OVERFLOW務(wù)必使能。生成的代碼檢查生成代碼后打開(kāi)freertos.c查看/* USER CODE BEGIN Variables */部分附近確認(rèn)ucHeap數(shù)組的大小是否正確。打開(kāi)FreeRTOSConfig.h檢查上述配置宏是否已正確生成。4.4 與DMA、ADC等外設(shè)共存的注意事項(xiàng)“cubeide freertos dma adc”這類(lèi)問(wèn)題核心在于共享內(nèi)存的線(xiàn)程安全和緩存一致性如果CPU有Cache。線(xiàn)程安全DMA通常和中斷協(xié)作。如果你在任務(wù)中分配了一塊內(nèi)存緩沖區(qū)給DMA使用然后在DMA完成中斷中釋放或處理這塊內(nèi)存這就涉及到了任務(wù)和中斷之間的共享資源訪(fǎng)問(wèn)。必須使用同步機(jī)制如信號(hào)量、隊(duì)列來(lái)安全地傳遞緩沖區(qū)指針或通知任務(wù)處理完成。絕對(duì)不能在中斷中直接調(diào)用pvPortMalloc或vPortFree因?yàn)檫@些函數(shù)可能不是中斷安全的除非特別說(shuō)明它們內(nèi)部可能使用了需要上下文切換的機(jī)制。緩存一致性對(duì)于Cortex-M7等帶Cache的芯片如果DMA訪(fǎng)問(wèn)的內(nèi)存區(qū)域被CPU的Cache覆蓋那么CPU和DMA看到的數(shù)據(jù)可能不一致。CPU寫(xiě)入緩沖區(qū)的數(shù)據(jù)可能還在Cache里沒(méi)刷到實(shí)際內(nèi)存RAM中DMA就讀走了舊數(shù)據(jù)反之DMA寫(xiě)入了新數(shù)據(jù)到RAM但CPU的Cache里還是舊數(shù)據(jù)。解決方案對(duì)于DMA緩沖區(qū)通常需要將其設(shè)置為“非緩存”Non-Cacheable區(qū)域。這可以通過(guò)MPU內(nèi)存保護(hù)單元配置來(lái)實(shí)現(xiàn)或者使用芯片提供的特定SRAM區(qū)域如STM32H7的D2域 SRAM可配置為通過(guò)AXI總線(xiàn)訪(fǎng)問(wèn)與DMA共享。在CubeMX中配置MPU或者使用SCB_CleanDCache_by_Addr()等函數(shù)在DMA傳輸前后手動(dòng)清理/無(wú)效化Cache。5. 高級(jí)話(huà)題自定義內(nèi)存分配器與性能優(yōu)化當(dāng)你對(duì)系統(tǒng)的實(shí)時(shí)性和可靠性有極致要求時(shí)可能需要超越heap_1到heap_5考慮自定義內(nèi)存管理策略。5.1 為何要自定義確定性需求heap_4/5的分配和釋放時(shí)間不是嚴(yán)格常數(shù)在最壞情況下遍歷長(zhǎng)空閑鏈表或合并大塊內(nèi)存可能耗時(shí)較長(zhǎng)。對(duì)于硬實(shí)時(shí)任務(wù)這不可接受。零碎片化需求長(zhǎng)期運(yùn)行的系統(tǒng)即使有合并機(jī)制也無(wú)法保證絕對(duì)無(wú)碎片。某些安全關(guān)鍵系統(tǒng)要求內(nèi)存行為100%可預(yù)測(cè)。多內(nèi)存池管理為不同特點(diǎn)的對(duì)象分配不同的內(nèi)存池。例如為頻繁創(chuàng)建/刪除的小型任務(wù)控制塊TCB設(shè)置一個(gè)固定大小的塊內(nèi)存池為大型、不常變的數(shù)據(jù)緩沖區(qū)設(shè)置另一個(gè)池。這能有效減少碎片提高分配效率。5.2 實(shí)現(xiàn)思路固定大小內(nèi)存池Memory Pool這是嵌入式系統(tǒng)中最常用的自定義分配器之一FreeRTOS內(nèi)核本身也用它來(lái)管理某些內(nèi)部對(duì)象如果配置為靜態(tài)分配。原理預(yù)先分配一大塊內(nèi)存并將其劃分為N個(gè)大小完全相同的“塊”Block。管理一個(gè)空閑塊鏈表。分配時(shí)直接從鏈表頭取一個(gè)塊O(1)時(shí)間。釋放時(shí)將塊插回鏈表頭也是O(1)。完全沒(méi)有碎片問(wèn)題。如何與FreeRTOS集成FreeRTOS允許你替換默認(rèn)的內(nèi)存分配函數(shù)。你可以定義void * pvPortMalloc( size_t xWantedSize ); void vPortFree( void * pv );在這兩個(gè)函數(shù)內(nèi)部根據(jù)請(qǐng)求的大小xWantedSize決定是從你自定義的固定塊內(nèi)存池中分配還是回退到標(biāo)準(zhǔn)的heap_4算法用于分配不規(guī)則的大對(duì)象。這需要你實(shí)現(xiàn)一套池的選擇邏輯。進(jìn)階TLSFTwo-Level Segregated Fit分配器這是一個(gè)專(zhuān)為實(shí)時(shí)系統(tǒng)設(shè)計(jì)的動(dòng)態(tài)內(nèi)存分配算法它能在保證O(1)分配/釋放時(shí)間的同時(shí)支持任意大小的內(nèi)存請(qǐng)求并保持極低的碎片率。已有開(kāi)源實(shí)現(xiàn)可以移植到FreeRTOS上作為pvPortMalloc/vPortFree的底層實(shí)現(xiàn)。這對(duì)于需要頻繁分配可變大小對(duì)象且對(duì)實(shí)時(shí)性要求嚴(yán)苛的場(chǎng)景是終極解決方案。5.3 監(jiān)控與優(yōu)化實(shí)戰(zhàn)優(yōu)化始于測(cè)量。你需要工具來(lái)了解系統(tǒng)的內(nèi)存行為。使用Tracealyzer等專(zhuān)業(yè)工具Percepio Tracealyzer等工具可以圖形化地展示任務(wù)棧使用情況、堆內(nèi)存的歷史變化、分配調(diào)用點(diǎn)等直觀定位內(nèi)存泄漏或??臻g不足的任務(wù)。自定義調(diào)試鉤子除了malloc failed hook和stack overflow hook你還可以通過(guò)修改內(nèi)存分配函數(shù)的源碼或使用鏈接時(shí)代碼替換添加調(diào)試信息。例如在pvPortMalloc中記錄分配大小、返回地址__builtin_return_address(0)在vPortFree中記錄釋放的地址。將這些信息存入一個(gè)環(huán)形緩沖區(qū)在系統(tǒng)異常時(shí)導(dǎo)出分析可以精確定位是誰(shuí)沒(méi)有釋放內(nèi)存。靜態(tài)分析合理使用static關(guān)鍵字限定變量和函數(shù)的作用域這不僅能提高代碼質(zhì)量也能讓鏈接器更好地優(yōu)化未使用的部分。仔細(xì)審查全局變量和大型棧數(shù)組看看是否有優(yōu)化空間。FreeRTOS的動(dòng)態(tài)內(nèi)存管理遠(yuǎn)不止是復(fù)制一個(gè)heap_x.c文件那么簡(jiǎn)單。它貫穿了系統(tǒng)設(shè)計(jì)的始終從芯片選型、鏈接腳本配置到任務(wù)劃分、外設(shè)驅(qū)動(dòng)再到長(zhǎng)期運(yùn)行的穩(wěn)定性保障。理解其原理根據(jù)應(yīng)用場(chǎng)景做出恰當(dāng)?shù)倪x擇和配置是每個(gè)嵌入式FreeRTOS開(kāi)發(fā)者必須修煉的內(nèi)功。從避開(kāi)heap_2.c的坑開(kāi)始熟練使用heap_4.c的調(diào)試工具再到在復(fù)雜場(chǎng)景下駕馭heap_5.c甚至自定義分配器每一步都意味著你對(duì)系統(tǒng)有了更深一層的掌控。記住在嵌入式的世界里對(duì)內(nèi)存的敬畏心是寫(xiě)出穩(wěn)健代碼的第一課。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月丁香影院| 五月丁香天堂网| 天天做天天爱天天搞| 日本色爽| www.五月激情.com| 超级久久久| 九月丁香五月婷婷| 97超碰色| 成人综合网站| 日本欧美国产| 五月天激情日色在线| 亚洲啪啪自拍| 5月婷婷6月丁香aV| 超碰在线资源| 99亚洲精品综合在线| www.国产色| 亚洲婷婷91丁香| 99这里只有精| 亚洲婷婷五月| 99热只有这里才是精品| 欧美久热| 91久久精品视频| www.色综合| 99re6热在线精品视频播放速度| 婷婷成人av| www,久久久| 九九热免费观看视频| 五月天sesese| 色色婷婷丁香| 激情综合色婷婷啪啪六月天| 五月婷婷丁香六月| 色狠狠综合入口| 婷婷久久丁香五月| www.综合久久| www.婷婷com| 亚州操人在线视频| 天天操综合网| 超碰在线人妻| 色婷婷基地| 亚洲色a| 婷婷丁香黄色| 婷婷五月六月| 午夜 外网 精品 在线| 秋霞A V毛片| 97艹| 亚州激情九月| 久久五月天 91| 青青草大香| 亚洲激情网| 五月婷婷啪啪啪啪| 99热都是精品| 啪啪啪综合网| 九九99久久精品| 99操无码视频观看| 狠狠爱婷婷爱| 婷婷午夜精品久久久| 91人妻视频| 国产日批视频免费播放| 五月婷在线| 碰97久久| 超碰99在线观看| 香蕉综合在线| 国产成人AV在线| AA久久| 成人网站免费在线播放| ,99视频久久| 九九九色综合| 色五月丁香五月五月婷婷| 一本久道综合99| 五月开心啪啪| 超碰免费人妻| 久久婷婷五月天激情新地址| 九九热最新| 亚洲色网络| 久久五月天色| 九月av| 夜夜久久综合网| 99热久草| 色六月 婷婷| 婷婷五月另类网站| 碰97久久| 九九热区一区二区三区| 五月色天情| 美国十月色婷婷在线观看| 五月天激情国产综合婷婷| 国产精品国产成人国产三级| 欧美 日韩 成人| 久操大屁股女人av| 九九热视频首页/这里只有精品| 五月亭亭六月激情| 五月丁香婷婷AV| 色婷婷激情| 色噜噜综合网| 香蕉视频性爱BB做爱| 午夜伊人大香蕉| 国产亚洲av片| 色情免费视频播放| 综合99在线| 中文不卡一二区| 午夜无码精品色综合久久| 五月丁香五月婷婷在线观看| 蜜桃成语时李时珍 免费| 久久九九99| 啪啪91| 夜精品无码A片一区二区蜜桃| AV免费在线网站| 丁香五月影院| 亚洲va欧洲va国产va不卡| 天天舔天天爽| 99热这里有精品| 无码字幕中文| 三级成人网站| 婷婷九月激情| 亚洲AV成人无码精品| 五月天堂色色| 婷婷激情五月综合在线视频| 91成人视频| 97色精品视频| 婷婷五月天AV网| 色婷视频| 五月婷婷黄色视频| 中文字幕精品无码一区二区| 婷婷九月狠狠色| 另类的婷婷| 丁五月激情视频免费| 色婷婷成人做爰A片免费看网站| 五月婷婷草| 五月丁香久久激情网| 亚洲在线操| 任我干视频在线观看| www色婷婷| 国产五月婷| 婷婷婷婷婷开心无码播放| 五月天精品| www99精品在线观看| 殴美激情综合网| 五月噜噜| 色欲AVV| 五月天婷婷丁香花| 丁香六月天| 久久久久久9| 婷婷爱五月| 全国最新疫情| 五月婷A V在线| 久久久久久久丁香五月天婷婷| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 激情婷婷丁香| 国産精品| 狠狠操狠狠插| 99性爱无码| 久久久中文| 五月婷在线观看| 色丁香五月婷婷| 久久六月综合| 午夜成人天堂久久无码日韩久久| 99久在线精品99re8| 中文av网| 艹色18p| 欧日韩AV| 天天色情站| 草美女在线观看视频在线播放| 婷婷六月色| 激情五月天综合图片小说网站| 色五月五月婷婷| 婷婷五月成年人| 99热亚洲| 久久性爱视频网站| 人妻中文在线| 亚洲性爱区无码区| 激情五月丁香社区| 专区无日本视频高清8| VA婷婷| 五月天狠狠| 91在线日本| 九九精品热| 91丨九色丨老农村| 91色在线/日韩| 操91| 欧美激情-区二区三区| 婷婷色五月综合| 婷婷五月丁香综合亚洲| 超碰人人99| 成人网址在线观看| 日韩专区五月天婷婷丁香| 开心五月色婷婷综合开心网| 色婷婷操逼| 久久婷婷亚洲| 欧美人人草| 久99久精品视频| 欧美精品XXXXBBBB| 99在线免费观看| 婷婷五月天色| 九九热在线视频| 婷婷午夜丁香| 五月丁香A∨在线| 亚洲午夜视频| 99在线视频操999| 日产精品一线二线三线芒果| 日韩AV大全| www久久久| 先锋资源 996| 97色婷婷五月天| 五月视频日本免费观看| 99亚洲精品| 人妻久久久久久| 五月天综合婷婷| 婷婷婷婷婷开心无码播放| 六月婷婷开心| 色五月大香蕉| 停停六月 综合| 亚洲视频99| 色综合色色色色色| 五月天丁香婷婷久久九| 色综合久久久久| 久久丁香五月婷婷| 天堂爱爱| 伊人激情| 色色色色色色色色综合网| 久久五月婷婷开心网| 丁香五月综合激情性爱| 亚洲成人综合在线| 五月婷婷无码| 99热国产精品| 久久婷婷五月综合伊人| 婷婷欧美激情| 伊人狠狠干| 五月丁香影院| 五月天综合久久丁香91| 婷婷激情四射五月天| 欧美在线视频99| 99热在线观看精品| 亚洲色色色| www五月天激情com| 丁香五月婷婷在线视频| 亚洲女婷婷五月基地综合久久久| 密臀久久| 五月天激情网图片 - 百度| 大香蕉伊人99| 97操碰视频| 六月丁香成人| 99精品视频推荐| 综合网精品99| 色婷婷aV四虎| 久七香蕉| 99热主页日本| eeuss人妻| 99ri在线视频| 丁香五月六月久久综合 | 日本99视频| 激情av在线| 色99视频| 日韩另类| 天天干天天拍| 大地9中文在线观看免费高清 | 2017人人操| 人人看人人97| 操九色| 五月丁香婷婷啪啪网| 久色大香蕉| 亚洲天堂色| 97综合视频在线| 日本成人内射| 天天色99| jiqingtaose五月天| 五月色网| 五月激情综合五月| 亚洲热久久| 激情五月婷婷五月| 亚洲综合视频在线| 99无码精品| 精品国产乱码久久久久夜深人妻| 婷婷五月丁香青青草在线| 毛片九九九九九九九九18| 日韩一级淫乱片一区二区三区| seav天堂| 无码激情AAAAA片-区区| 沈娜娜av| AV无码免费| 九九操操| 丁香五月六月激情| 99爽视频| 亚洲12p| 九月婷婷久久| 婷婷五月综合免费在线| 色婷婷久久综合| 伊人影音无码一区二区三区| 人人人va亚洲视频在线| 92久久| 开心五月网 | 五月丁香好婷婷A片网| 无码人妻激情| 黄色AAAA韩国guochansanji | 色五月天在线观看| www.99视频| 欧美色色色| 欧美人人草草| 天天操天天爱天天日| AV五月丁香| 久久婷婷综合五月天| 五月婷婷深深爱| 九九AV| 色yeye色综合| 色噜噜狠狠色综合日日免费| 97婷婷丁香| 欧美日韩999| 丁香五夜激情四射夜夜夜| 激情婷婷久久| 五月婷婷之美女图片| 99re视频在线播放| 婷婷五月丁香青青草在线| 色婷婷777狠狠| 丁香五月亭亭六月综合激情网| 激情综合五月婷婷六月丁香| 成人精品视频99在线观看免费| 69精品无码一区二区三区| 香蕉久久国产AV一区二区| 2w在线视频| 成人网站免费在线播放| 久热视频97AV在线观看| 五月婷婷综合网在线播放| 六月激情久久| 日韩AV一区二区三区| 久久五月天色婷婷| 97视频91| 任你擦免费视频| 日本激情五月天‘| 久久精品一区二区三区四区| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 夜夜骑日日夜夜| 97碰超级人人看| 六月丁香婷婷爱| 婷婷四月 成人 狠狠干| 久久精品视频9| 色丁香久久| www.99操| 六月综合在线| 99超级超级超级碰| 色永久| 双性美人被调教到喷水A片| 第四色五月婷婷| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 六月婷欧美丁香综合| 26UUU一区二区| 亚欧州精品视频| www.玖玖婷婷在线| 色色色免费视频| 9久热精品在线视频| 中文字幕成人| 日本狠狠色| 91九色熟女| 色婷婷成人| 色九九九综合| 婷婷五月天美女21p| 丝雨一区二区| 久久久久久久久人妻| 婷婷色色亚洲| 丁香五月色欲| 美腿丝袜AV天堂网| 91丁香五月| 国产99久9在线| 亚洲热视频| 激情综合另类| 色婷久| 色色色色色五月丁香| 少妇人妻人伦A片| 久热爱大香蕉在线蜜臀悦色 | 中文在线视频久1| 91久女| 狠狠色噜噜狠狠| 99视频啪啪| 婷婷色丁香六月| 91干在线视频| 色色丁香五月天| 91viP在线看| 色婷婷香蕉| 538在线| 国产全是老熟女太爽了| 精品三区影院| 狼友超碰| 久久性爱视频| 久色网| 久久久噜噜噜久久人妻| 99色色网| 色五月xxx| CHINESE熟女老女人HD视频| 成人婷婷五月天| 国产性爱在线| 79色色免费| 久热精品9999| 欧美激情综合| 思思热久久婷婷五月天| 色综合中文色综合网| 99热在线精品观看| 五月婷婷花| 九九热婷婷| 五月丁香六月欧美综合网站| 色五月成人网| www.久久久.com| 香蕉AV777XXX色综合一区| 天天干天天叉| 婷婷五月色| 超碰婷婷色| 一本色道久久综合狠狠躁小说| 激情六月丁香| 大香焦A∨| 色婷婷免费观看| 五月丁香六月婷婷色| 午夜成人在线免费视频| 婷婷在线播放| 亚洲天堂爱爱| 五月婷婷婷婷| 久久香蕉婷婷五月天| 欧美日本99| 五月天婷婷社区| 极品五月天| 91综合国免费久入| 久久久九九九 99| 色色色热| 九九色人| 五月丁香婷婷视频| 天天日天天做天天操| 91色综合网| 国产亚洲精品久久久久久久久动漫 | 色色色色五月天| 色99综合视频| 91操色| 亚洲一区国产传媒| 五月丁香花激情啪啪网| 亚洲欧美在线观看| 97啪啪| 天天天天干| 丁香五月日本| 丁香五月六月久久综合 | 日本综合99| 成人精品在线观看| 丁香五月婷婷亚洲综合精品| 色五月婷婷五月天激情综合| 五月色俺婷婷| www,色中色| 影音先锋按摩| 五月天婷婷色在线视频免费观看| 婷婷情色五月天| 黄页免费一级视频懂色| 欧美三级大片AA在线看| 亚洲AV影片在线观看| 婷婷五月丁香六月| 中文字幕 码精品视频网站| 五月婷婷六月激情| 丁香五月天电影| 五月婷婷激情综合拍| 天天舔天天插天天爱| 九九干视频| 亚洲欧美国产A片免费观看| 国精产品一区一区三区免费视频| 五月丁香啪| 色综合久久久久| 麻豆雪千夏| 激情综合激情综合| 综合色影| 久久激情视频| 俺去也综合| 九九九九这里只有精品| 六月丁香激情网| 91狠狠色| 久热婷婷| 操老逼综合网| 中文AV网站| 久久91久久精品久久| 成人在线二区| 日韩无码亚欧无码| 丁香五月天婷婷91| 欧洲不卡视频| 国产色丁香| 久久国产精品乱子伦_靑青草…| 激情文学 综合 色| 97色伦另类图片小说视频| 清色五月天| 婷婷狠狠五月综合| 色色色色色色色色网站| 久久伊人婷婷| 亚洲综合另类| 婷婷桃色网| 玖色色综合| 久久久久8888| 99热 在线观看| 天天色综合色| 五月天婷婷影院影院观看| 青草五月天| 色综合网址| 狠狠色色| 我想看国产大学生口爆吞精的视频| 丁香五月天婷婷91| 色色综合成人网| 丁香五月日啪| 狠狠干天天日| 婷婷综合久久| 一本狠婷婷综合| 久久大香蕉视频| 五月婷婷丁香啪啪| 五月天五月天激情网| 日本色久| 亚洲精品国产熟女久久久| 在线色婷婷| 色婷婷五月色| 亚洲麻豆乱码国产2028| 日韩人妻无码精品| 美国少妇性做爰| 婷婷性爱视频在线| 九九热免费观看视频| 久久婷婷五月综合啪| 久热黄色| 久久婷婷青青| 色综合网上班开心婷婷久久| 亚洲色激情| 色婷久久| 婷婷五月天丁香久久| 丁香婷婷久久 | 99热最新网址| 九九色色色| 天天拍夜夜撸| 精品成人在线观看| 丁香九月激情在线视频| 激情五婷精品网在线观看网址| 五月天六月婷婷电影| 级情九色| 69色婷婷| 天天爽天天摸| 三人荫蒂添的好舒服A片| 丁香五月综合首页| 99re这里有精品手机在线| 女人被男人吃奶到高潮| 97成人丁香| 五月丁香六月在线欧美| 超碰99资源站| 色婷婷亚洲综合av| 人人爽人人爽人人爽人人爽| 五月天色社区| 色欲九区| 欧美在线视频免费播放| 亚洲久艹| 丁香婷婷五月基地| 欧美久久一级内射wwwwww.| 大香蕉啪啪网| 日本在线视频www色| 色婷婷91激情小说| 精品少妇蜜臀91| 六月天婷婷| 91精品婷婷国产综合| 欧美3AaAa大片| 亚洲经典三级| 激情精品久久| 99热91| 丁香六月婷婷激情综合| 狠狠色婷婷| 久99热在线观看| 丁香六月色婷婷| 99热在线观看成人| 97婷婷五月天| 婷婷六月久久| 第四色婷婷丁香五月| 超碰免费人人肏| www.五月天。com| 欧美肉大捧一进一出免费视频| 五月婷婷啪啪| 秋霞黄色一级久久| 国产日韩欧美性爱| 蜜臀A∨在线水帘洞| 婷婷激情五月| 99色这里| 青草视频在线观看视频| 色五月天天| 99精品偷自拍| 五月久久丁香| 94干大香蕉| 久久综合五月天| 色综合久网| 色五月婷婷小说亚洲中文字幕组| 久婷首页| 五月婷丁香| 久久综合激情五月天| 色色无码| 九九久久五月天综合伊人| 国产91资源在线| 五月丁香龟婷婷| 9热在线视频| 色九月婷婷丁香| 噜噜干日本| 99爱在线视频| 婷婷爱婷婷| 东京热人妻一区二区三区在线| 色色色色色色网| 国产色网站| 99久久极情精品一区| 琪琪秋霞| 精品自拍97| 五月婷婷激情日本| 97色色色色| 中字幕视频在线永久在线观看免费| 激情五月天之六月婷婷| 丁香婷婷久久综合在线| 91久女| 五月天婷婷视频30| 97婷婷丁香| 亚洲人人操| 九九人人看| 九九成人视频| 五月天综合在线| 操逼福利视频| 九九久久视频| 色色综合激情| 丁香婷婷色五月激情综合| 久久xx| 99精品偷自拍| 人人人操| 亚洲av另类在线观看| 欧美 日韩 成人| 久久丁香| 色欲影香| 人妻操操色| 五月婷婷丁香大陆免费| 激情图片亚洲| 99热在线精品观看| 婷婷射丁香| 五月天另类小说亚洲| 色婷婷亚洲综合天堂| 丁香九月婷婷| 天天爽天天摸天天爱| 色五月丁香总合网| 9999热在线免费观看| 久久AAAA片一区二区| 欧美日韩成人在线网站| 五月天玖玖狠狠色色| AV在线资源| 91 久热| 超碰99在线| 中文字幕成人影视| 欧美婷婷五月| 激情婷婷综合| 性日本激情| 丁香五月天婷婷91| 教师性爱毛片| 久久小说| 亚洲九区| 大香蕉520| www.久热| 亚洲成人噜噜| 丁香五月婷婷成人网| 黄网在线免费观看| 97碰碰在线观看视频| 色婷婷av综合网| 国产毛片欧美毛片久久久| 在线中文字幕av| 激情五月婷婷视频一区二区三区| 激情婷婷五月基地| 狠狠操.COM| 婷婷爱综合| 国产日产成人亚洲欧美国产VA| 久久综合色五月| 婷婷丁香人妻天天久久| 密乳视频| 激情综合网 激情五月天| 婷婷久久欧美| 激情久久四色| 超碰三级秋霞| 丁香五月婷婷综合视频| 色五月婷婷久久爱| 久久婷婷丁香五月一二三| 婷婷丁香色五月亚洲| 婷婷午夜激情| 超碰99在线| 激情av| 超碰chaompinm| 天天色图| 色婷婷五月综合| 色色精品色| 五月婷五月婷伊人伊人五月婷| 久久九九综合| 欧美日韩AAAAA| 狠狠88综合久久久久噜噜噜| 激情丁香淫荡婷婷| 五六月丁香激情视频| 九九久久五月天综合伊人| 丁香六月高清视频| 日本va视频| 亚洲视频伍月婷婷| 免费看成人747474九号视频在线观看| 婷婷色操| 这里只有精品视频在线| 九九热视频在线观看| 精品国产乱码久久久久夜深人妻| 五月天综合在线网| 欧美月久久| 色色五月婷婷久久| 噜噜噜噜噜久| 九九九成人在线视频| 丁香五月天的网址。| 婷婷五月天高清无码| 天天插天天插| 天天干天天爽| 五月婷婷电影院| 97香蕉人人在线观看| 一区二区免费看| 久久五月婷婷电影| 操操操操操电影网| 日日干日日| 五月丁香啪啪啪| 雪千夏麻豆| 婷婷六月综合| 狠狠色狠狠鲁| 久久婷婷五月综合啪| 五月天激情小说网| 9色操| av在线资源| 久久99色色| 在线成人视频免费| 99噜噜噜在线播放| 日韩99视频| 久久五月丁香综合17C| 五月丁香婷婷欧美| 另类少妇人与禽zOZZ0性伦| 欧美高潮9| 九九激情网| 五月婷婷黄网站大全| 在线看片av| 亚洲精品久久久久久久久久吃药| 色婷另类| 99青青草99| www.久久久.com| 五月激情基地| 日本欧美成人片AAAA| 日本在线wwww| 成人婷婷深爱综合网| 丁香五月开心亚洲| 九九精品9| 色热久资源| 五月天色婷婷综合| 99干日日干| 色欲av伊人久久大香线蕉影院| www狠狠| 婷婷综合激情| 91日韩美女被插视频| 天天操夜夜玩!| 亚洲五月婷婷| 啪精品| 婷婷五月精品中文字幕| 婷婷色导航| 91超碰在线观看| 激情五月天激情五月天| 婷婷狠狠综合网入口| 91欧美| 色婷六月| 六月丁香啪| 五月情涩综合婷婷| 人妻丰满精品一区二区A片| 秋霞性爱AV| 一区二区乱码视频| 欧美日韩五月婷婷| 色色哒五月婷婷六月丁香| 噼里啪啦完整版中文在线观看 | 日本一级一级一级一级| 九九精品亚洲| 91 九色 入口| 思思热视频在线观看| 婷婷五月丁香99| 五月天婷婷Av| 婷婷香五月综合激情| 亚洲乱码日产精品BD| peg 2区三区四区的| 激情小说视频图片| 亚洲成人免费电影| 97人人射| 五月天色色激情综合| 91seav| 91偷拍视频| 久久作爱| 五月天社区| 五月婷婷片| 婷婷五月69| 六月婷婷开心| 激情综合综合综合| 丁香六月婷婷综合| 亚洲舔观看| 成人国产欧美大片一区| 日日操日日干| 色域五月丁香| 色五月丁香婷婷| 婷婷五月中文字幕| 精品久久9| 大香蕉久久| 欧美日韩成人在线| 五月婷婷无码专区| 熟妇天天综合| 狠狠狠狠狠狠| 丁香九月激情| 天天色情站| 日日操,天天操| 丁香青青五月天| 久色| 精热在线综合网| 欧美成人AAA片一区国产精品 | 九热视频| 日韩五月天婷婷| 97久久婷婷色| 丁香五月六月婷婷综合| 色人久久| 久久久久久久久久久久久9| 五月开行婷婷色五月| 欧美精品A片一区在线观看| 99在线视频精品| 色七色九九| 99热中文字幕久久| 99热1| 六月丁香婷| 狠狠操婷婷| 91丨九色丨白浆秘| 专区无日本视频高清8| 婷婷丁香色情| 激情丁香婷婷| 丰滿爆乳一区二区三区| 久热亚洲| 人人干天天操五月丁香| 六月色婷婷综合影视| 久色网| 婷婷激情5月| 97在线/亚洲| 日韩丰满少妇无码内射| 亚洲丁香五月天视频| 欧洲激情网站| 欧美月久久| 91性高潮久久久久久久久| 欧美va欧美va差| 色色吧综合| 国产精品成av人在线视午夜片| 六月婷婷啪啪| 日日射天天射| 国产成人av在线| 波多野结衣不卡AV| 小视频久久久aaa| 看久久性爱视频| 婷婷香香五月| 亚洲成片在线观看| 色五月激情五月| 亚洲啪啪视频| http://www.sd-xiangsu.com/| 久久久18| 国产中文字幕在线视频免费观看 | 99久久久免费| 97人人操com| 疯狂做受XXXX高潮A片| 婷婷玖玖五月天| 大香蕉院线| 色色综合网站| 欧美、日韩、中文、制服、人妻| 国产精品久久久久久久久久免费| 激情综合网五月丁香| 久色资源网| 狠狠色性| 狠狠舔| 色玖玖导航| 九九热视频精品| 日韩一66精品| 成人午夜无码视频| 激情图片99| 婷婷五月欧美| 天天日天天肏天天奸| www.婷婷| 九九这里都是精品| 色五月婷婷操逼| 久久婷婷六月综合| 丁香社区婷婷五月| 丁香六月天婷婷色| 视色网在线播放| 激情小说五月天社区丁香| 日熟女| 99在线一区| 亚洲正能量欧美| 欧洲电影在线观看免费版英语版| 久热这里只有| 综合色五月| 伊人久久婷婷| 91色婷婷综合久久中文字幕二区| 99国产精品久久久久久久久久久| 亚洲亚洲永久无码777777| 激情 婷婷 丁香五月天| 丁香桃色综合网| 九九爱这里只有精品| 五月丁香六月婷婷精品| 120分钟婬片免费看| 婷婷五月香蕉| 六月婷婷激情| 九九人人操| 九九色中文| 五月总合激情网| 五月六月婷婷激情网| 丁香五月激情宗合网| 丁香无月在线观看| 五月天六月丁香| 这里只有在线精品| 中文字幕簧片| 婷婷五月精品中文字幕| 久久久久思思热| 五月丁香六月婷婷无码| 美女丁香五婷婷| 思思热在线观看| 超碰免费大香蕉| 亚洲综合成人网| 五月天激情婷婷| 极品人妻VIDEOSSS人妻| 任你躁XXXXX麻豆精品| 婷婷丁香中文字幕| 日韩美一级毛卡片| 欧美色色色色色色色色色色| 欧美久久婷婷| WWW、日本色丁香co m| 日日鲁鲁夜夜爽爽| 亭亭五月天成人| 五月婷婷成人| 激情第四色| 婷婷王月天影院| 五月丁香六月玩女人| 五月婷婷av| 五月丁香六月激情综合| www天堂99| 99超碰在线观看| 丁香丁婷五月激情| 日本九九热| 婷婷激情综合| 99色色视频| www婷婷色| 女人天堂久久| 丁香五月天激情婷婷丁香六月| 天天舔天天摸天天射| 色五月激情婷婷| 亚洲国产成人在线| 99国产精品白浆在线观看免费 | 九九精品自拍| WWW、日本色丁香、co m| 久久久久久性爱视频| 99热婷婷| 婷婷五月激情基地| 97人人搞| 日逼免费视频| 婷婷综合色图| 成人在线观看精品| 九九热99免费视频| 狠狠色无码| 久久综合婷婷五月| 国产在线aaa片一区二区99| 综合网网欲色| 五月婷婷开心爱| 停婷丁五月在线| 日本久久网| 久草五月天| 激情五月天之五月婷婷| 色婷婷五月天成人网| 久久精品一区二区三区四区| 无码yw| 欧美视频在线观看噜噜| 啊V视频在线观看| 色五月丁香91| 色色综合无码| 最新va在线播放| 午夜天堂一区人妻| 大香蕉五月丁香| 噜噜精品| 97很鲁在线视频| 99自拍视频在线| 99久久网站| 亚洲成人在线在线| 99热综合在线| www.日本91| 成人久碰| 千人斩操逼| 色婷婷影视| 99热丁香五月| 丁香 婷婷 亚洲 熟女| 超碰在线91| 九九自拍网| 日本色狠狠| 色婷婷丁香花五月天| 五月天开心激情网色欲无码| 性生活视频98791| 精品一区二区三区三区| 国产热精品| 国产成人网站在线观看| 成人婷99最新| 九九激情| 天堂亚洲 在线| 亚洲aV写真天天综合网久久| 亚洲电影在线观看| 五月天快乐开心激情网| 欧美色五月| 色欲九区| 欧美日比视频| 久久亚洲无码| 99在线精品视频| 99碰碰中文| 婷婷久久综合久色| 亚洲人操亚洲人| 开心五月激情五月丁香五月婷婷| 色99视频| 久热这里这里有精品| 天天操天天操天天操天天操天天操| 丁香五月人妻| 天天日天天操心| 操逼三区| 亚洲网视屏| 免费婷婷| 婷婷狠狠操| xxxx五月激情| www.夜夜| 色久五月| 久久免费高| 丁香五月婷婷骚视屏| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 人妻精品一区二区三区| 五月丁香婷婷爱激情综合网| 99热这里只有精品中文字幕| 婷婷午夜| www.夜夜操| 秋霞电影理论| 99网址在线观看| 亭亭五月色男人| 影音先锋 一区| 97人人操在线| 婷婷色色五月| 噼里啪啦完整版中文在线观看| 婷婷色系婷色| 伊人九九68| 激情五月丁香亭亭| 91干视频| 任你爽视频| 26uuu国产精品| 丁香五月婷婷五月基地| 五月丁香婷婷综合网| 黄色成人网站在线播放| 狠狠色噜噜狠狠狠狠综合| 久久小视频免费| 碰碰碰97国产| 五月天成人综合| av在线资源| www.色五月| 色五月在线播放| 亚洲AV综合在线观看| 操操啪| 91久久婷婷人人澡草 | 99久在线精品99re8热| 色婷婷影音| 久久嘟嘟丁香| 日日夜夜天天| 深爱五月最新网址| 91人人网| 91久久精品国产91性色TV| 亚洲另类视频| 日日噜人人人做人| 中文字幕不卡网站| 黄色三级日本| 午夜爱爱爱成人| 东京热免费视频网站| 婷婷色五月激情| 丁香五月婷中字幕| 婷婷99狠狠躁天天躁| www.婷婷com| 97久久精品| 婷婷五月综合激情小说| 91狠狠色色丁香婷婷综合久久| 国产人妻人伦精品一区二区| 舔色婷婷| 色五月婷婷在线视频| 97热超碰| 99精品国产在热久久| 婷婷五月天伊人| 99rewww| 欧洲精品爱爱| 久久精品一区二区三区四区| pom538精品视频| 五月综合六月丁| 久9久9热久热| 超碰人人妻| 亚洲综合婷婷| 久久婷婷丁香| 天天精品视频在线观看视频| 五月婷色| 丁香五月天天| 人妻第九页| 亚洲综合色色色| 99视频精品全部观看10| 久久久久综合激动五月天| 成人电影AV在线观看| AV亚洲在线| 婷婷五月影院| 99人碰碰碰| 天天五月天综合网址| 色婷婷六月综合| 色综天天综合| 久久hd| 婷婷狠狠爱| 精品9197碰| 色婷五月| 久久婷五月| 久久狠狠干| 熟女激情五月天 | 日韩精品999| 综合久久99| 丁香六月天之亚州热女 | 色五月天电影| 欧美色五月天| AV 3P| 都市激情蜜桃婷婷五月天 | 九九热再线九九视频免费在线观看 | 九九综合| 激情五月天激情五月天| 色小说五月婷婷| 99久久99热| 色八月婷婷| 色五月婷婷中文字幕在线观看| 久久婷婷内射| 日本97在线| www.无码com| 丁香花成人区| www.综合久久| 亚洲人妻电影| 欧美色偷拍| 热久69| 操碰久| 六月婷基地| 性天堂久久| 五月丁香啪啪婷婷| 五月婷婷啪啪网| 啪啪丁香五月| 天天噜日日噜综合无码| 99熟女视频| 成人 在线 日韩| 三级三久久线久久99久目本WW| 亚洲无码成人| 久久久97| 日韩欧美五月丁综合| 婷婷久久久| 久久婷婷五月国产色综合激情| 丁香五月婷婷久久综合激情网 | 色综合中文| 久久久99久久| 天天操比比| JAPANRCEP老熟妇乱子伦视频| 丁香婷婷色五月| 日韩精品AV一区二区三区| 国产人妻777人伦精品HD| 碰99在线| 丁香五月天天| 亚洲AV日韩无码| 99黄色性生活| 亚洲精品欧洲精品| 丁香五月婷婷激情123| 六月色丁香中文字幕| 色爱五月天| 六月婷久久| 欧美激情五月天| 成人做爰A片免费看视频| #NAME?| 91丨九色丨熟女丰满| 操一区| 5月婷婷六月丁香| 五月婷视屏在线观看| 超碰在线中文字幕| 五月开心久久| 激情人妻蜜夜系列区| 综合网色综合| 久久激情五月婷婷| 色之综合网| 日日操天天| 日本一级一片免费视频| 久久精彩免费视频| 99丁香五月| 欧美日比视频| 五月婷成人网| 丰满熟女人妻一区二区三| 日本啪啪天堂| 国产毛片精品一区二区色欲黄A片 国产人妻777人伦精品HD | 精品无码久久久久久久久| 丁香五月伊人| 玖玖色综合网| www.五月天婷婷姐姐| 五月婷婷啪啪| 婷婷色色网| 黄色99热| 亚洲综合色网站| 五月丁香婷婷综合视频| 九九热免费| 亚洲中文字幕在线电影| 97色婷婷五月天| 五月天婷婷五月| 97久久人人操| 五月天丁香久久综合 | 久操热| 日韩美女在线视频19| 五月在线婷色| 色五月婷婷基地| 91久久婷婷| 丁香花操逼| 天天日狠狠| 色情久久久| 99在线视频操999| 久久香蕉影院| 国产26uuu| 久热婷婷| xx久久| 亚洲色婷婷五月| 99熟女| 色五月色图| 婷婷五月天免费视频在线观看| 久久精品性爱| 婷婷va| 色婷婷六月天在线| 婷婷五月天AV| 91嫩草久久| 五月婷婷中文字幕| 丁香色情五月综合激情| 亚洲视99| 99热热这里只精品996小说| 桃色五月婷婷| 色久婷婷五月| 色综合久久99色| 中文字幕av久久爽| 91dy.av| 97精品综合| 天堂色色色| 日本va欧美va欧美va| 国产真人做爰视频免费| 色色婷| 91丨九色丨熟女|新版| 91久草五月天婷婷| 久久机热思思热| 青草青草视频2免费观看| 亚洲九九夜夜| 色99热| 狠狠色噜噜狠狠| 逼里香不卡| 五月伊人91| 森林影视大全,最好看的2019年视频 | www.色五月| 婷婷丁香六月影视| 激情五月天色色网| 亚洲综合激情五月久久| 欧美色99| 婷婷爱爱蜜臀天天操| 婷婷五月影院| 青青草99热久久精品国| av性爱网站| 色婷婷yy久| 婷婷成人小说综合| 8050一级网| www.五月丁香av| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 九九一综合精品| 久久久99精品免费观看| 男人天堂亚洲综合| 99热亚洲| 天天舔天天摸天天射| 日本精品久久久久中文字幕| 最新午夜理论片| 色啪网| 亚洲天堂AV免费片| 中文中文在线| 丁香激情六月天婷婷| 人五月天婷婷喷水| 激情综合色播|