久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

MicroPython玩轉(zhuǎn)RP2040 DMA:寄存器級(jí)內(nèi)存拷貝實(shí)戰(zhàn)

MicroPython玩轉(zhuǎn)RP2040 DMA:寄存器級(jí)內(nèi)存拷貝實(shí)戰(zhàn) 把 MicroPython 和 DMA 放在同一句話里很多人第一反應(yīng)是懷疑MicroPython 不是靠解釋器跑字節(jié)碼的嗎怎么可能碰 DMA 這種底層外設(shè)我一開始也這么想直到有個(gè)項(xiàng)目要把幾百 KB 的音頻數(shù)據(jù)從一塊緩沖區(qū)搬到另一塊CPU 在 while 循環(huán)里搬了幾萬次數(shù)據(jù)板子卡得連 I2C 掃描都明顯變慢。后來在樹莓派 Pico 上研究了一晚上發(fā)現(xiàn) MicroPython 可以通過machine.mem32直接操作 RP2040 的 DMA 寄存器實(shí)現(xiàn)內(nèi)存到內(nèi)存拷貝速度比 Python 循環(huán)快幾十倍而且代碼并不復(fù)雜。這篇文章就把整個(gè)過程整理成保姆級(jí)教程從寄存器原理到實(shí)操代碼、常見坑全走一遍。1. 內(nèi)容整體設(shè)計(jì)與思路拆解1.1 DMA 到底解決什么問題DMA 的全稱是 Direct Memory Access直接內(nèi)存訪問。你可以把它理解成一條獨(dú)立的“數(shù)據(jù)傳送帶”CPU 只需要把“從哪搬、搬到哪、搬多少”告訴 DMA 控制器剩下的重復(fù)搬運(yùn)工作由 DMA 硬件自動(dòng)完成搬運(yùn)過程中 CPU 基本不用管。內(nèi)存到內(nèi)存?zhèn)鬏斁褪前褦?shù)據(jù)從 SRAM 的一塊區(qū)域搬到另一塊區(qū)域。你可能想這種事情不是一行for循環(huán)就能做嗎問題在于MicroPython 的for循環(huán)是解釋執(zhí)行的每搬一個(gè)字節(jié)解釋器都要解析指令、查詢對(duì)象、更新循環(huán)計(jì)數(shù)器開銷是巨大的。DMA 是純硬件搬運(yùn)沒有解釋器開銷一個(gè) AHB 時(shí)鐘周期就能搬一個(gè) word兩者差距非常明顯。1.2 為什么在 MicroPython 里也能配置 DMA很多初學(xué)者誤以為 MicroPython 是“玩具語(yǔ)言”只能點(diǎn)燈、讀傳感器。其實(shí) MicroPython 運(yùn)行在真實(shí)硬件上天然可以通過內(nèi)存映射寄存器訪問外設(shè)。RP2040 和普通 Cortex-M0 芯片一樣沒有 MMU所有外設(shè)寄存器都映射在固定的地址空間里。MicroPython 的machine.mem32允許你直接讀寫在某個(gè)絕對(duì)地址上的 32 位整數(shù)。DMA 控制器的寄存器也在內(nèi)存映射區(qū)所以理論上可以用machine.mem32操作 DMA 控制器的所有寄存器。這個(gè)方案不依賴任何第三方庫(kù)通用性極強(qiáng)只要固件是官方 MicroPython 就能跑。1.3 內(nèi)存到內(nèi)存 DMA 的適用場(chǎng)景內(nèi)存到內(nèi)存?zhèn)鬏斪畹湫偷膱?chǎng)景是音頻處理。音頻采集 DMA 會(huì)把 ADC 或 I2S 的數(shù)據(jù)寫進(jìn)緩沖區(qū)你需要在緩沖區(qū)充滿之后把它搬到另一個(gè)處理緩沖區(qū)這時(shí)候用 DMA 搬運(yùn)CPU 可以騰出來做濾波、壓縮、顯示刷新。另一個(gè)場(chǎng)景是圖形刷新。如果你用 Pico 驅(qū)動(dòng)一塊小 LCD可能需要頻繁把圖像 buffer 從一個(gè)緩存拷貝到另一個(gè)緩存DMA 能顯著減少刷新耗時(shí)。還有緩沖區(qū)清零后面我會(huì)單獨(dú)講一個(gè)由 DMA 執(zhí)行的快速清零技巧。但是如果只是幾十個(gè)字節(jié)的搬運(yùn)DMA 反而不劃算。配置寄存器本身就有幾條語(yǔ)句MicroPython 里執(zhí)行這幾條語(yǔ)句也需要時(shí)間。數(shù)據(jù)量越大DMA 的優(yōu)勢(shì)越明顯個(gè)人經(jīng)驗(yàn)是單次搬運(yùn)超過 256 字節(jié)DMA 帶來的收益就很可觀了。1.4 為什么自己寫寄存器而不是找現(xiàn)成庫(kù)MicroPython 的 rp2 移植目前沒有提供開箱即用的 DMA 高層封裝網(wǎng)上能搜到的第三方庫(kù)大多依賴特定固件版本而且功能不完整。自己寫寄存器雖然看起來“底層”但恰恰是這類硬件外設(shè)最穩(wěn)定的使用方式。寄存器一旦配好只要 RP2040 的地址映射不變代碼在很長(zhǎng)一段時(shí)間內(nèi)都能直接用。另外理解了寄存器配置之后你會(huì)對(duì) DMA 的工作機(jī)制有更深的理解后面再去用 SPI DMA、PIO DMA 都是順理成章的事。2. 核心細(xì)節(jié)解析RP2040 DMA 控制器的寄存器與配置原理2.1 外設(shè)基地址與通道布局RP2040 的 DMA 控制器基地址是0x50000000一共 12 個(gè) DMA 通道每個(gè)通道占 0x40 字節(jié)的寄存器空間。也就是說通道 0 的寄存器在0x50000000通道 1 的寄存器在0x50000040通道 N 的寄存器在0x50000000 N * 0x40。通道內(nèi)最關(guān)鍵的四個(gè)寄存器是寄存器偏移作用READ_ADDR0x00讀地址DMA 從哪里讀數(shù)據(jù)WRITE_ADDR0x04寫地址DMA 把數(shù)據(jù)寫到哪里TRANS_COUNT0x08傳輸計(jì)數(shù)還剩下多少數(shù)據(jù)沒搬完CTRL0x0C控制寄存器配置寬度、遞增、觸發(fā)源等這里特別強(qiáng)調(diào)一下TRANS_COUNT是一個(gè)“遞減型計(jì)數(shù)器”DMA 每完成一次傳輸它就自動(dòng)減一。當(dāng)你讀取它發(fā)現(xiàn)是 0 的時(shí)候說明傳輸已經(jīng)完成。這個(gè)特性在后面的等待邏輯里會(huì)用到。2.2 CTRL 控制寄存器逐位拆解CTRL 寄存器是 DMA 配置的核心。我在實(shí)驗(yàn)中最常用的位段如下位段位數(shù)取值含義ENbit 0通道使能置 1 后通道開始響應(yīng)觸發(fā)DATA_SIZEbit 2-3傳輸寬度0 表示 8 位1 表示 16 位2 表示 32 位INCR_READbit 4讀地址是否遞增1 表示每次傳輸后源地址 數(shù)據(jù)寬度INCR_WRITEbit 5寫地址是否遞增1 表示每次傳輸后目標(biāo)地址 數(shù)據(jù)寬度DIRbit 11傳輸方向1 表示從內(nèi)存讀取0 表示從外設(shè)讀取BSWAPbit 16字節(jié)交換內(nèi)存到內(nèi)存通常不用CHAIN_TObit 21-25鏈?zhǔn)?DMA指定當(dāng)前通道完成后自動(dòng)觸發(fā)哪個(gè)通道TREQ_SELbit 26-30觸發(fā)源選擇決定 DMA 通道以什么節(jié)奏傳輸這里最容易搞混的是DIR位。RP2040 的 DMA 通道可以用在“外設(shè)到內(nèi)存”和“內(nèi)存到外設(shè)”兩個(gè)方向上。對(duì)于內(nèi)存到內(nèi)存?zhèn)鬏斘覀兿M?DMA 從內(nèi)存讀數(shù)據(jù)所以DIR必須置 1。如果DIR為 0DMA 會(huì)以為你是從某個(gè)外設(shè)讀數(shù)據(jù)行為可能會(huì)很詭異。2.3 TREQ_SEL 設(shè)為 0x3F 是內(nèi)存到內(nèi)存?zhèn)鬏數(shù)年P(guān)鍵TREQ_SEL 是 DMA 的“觸發(fā)源選擇”。外設(shè) DMA 的場(chǎng)景里SPI 發(fā)送一個(gè)字節(jié)就會(huì)有 DREQ 信號(hào)請(qǐng)求 DMA 喂下一個(gè)數(shù)據(jù)所以 DMA 的傳輸節(jié)奏由外設(shè)決定。但內(nèi)存到內(nèi)存?zhèn)鬏敍]有外設(shè)信號(hào)你必須給 DMA 一個(gè)“永遠(yuǎn)有請(qǐng)求”的狀態(tài)讓它以最快速度連續(xù)搬運(yùn)。RP2040 手冊(cè)里專門定義了一個(gè)觸發(fā)源叫DREQ_FORCE值剛好是0x3F也就是 63。把TREQ_SEL設(shè)為0x3FDMA 就會(huì)變成無條件的連續(xù)傳輸模式。很多人在網(wǎng)上抄代碼發(fā)現(xiàn) DMA 不工作一個(gè)常見原因就是TREQ_SEL沒有設(shè)置為0x3F。這個(gè)字段在 CTRL 寄存器的 bit 26 到 bit 30如果寫 0DMA 可能一直在等待外設(shè)觸發(fā)TRANS_COUNT永遠(yuǎn)減不到 0。2.4 對(duì)齊、數(shù)據(jù)寬度和地址遞增策略RP2040 的 DMA 在 32 位模式下要求源地址和目標(biāo)地址都必須 4 字節(jié)對(duì)齊同時(shí)傳輸字節(jié)數(shù)也必須是 4 的倍數(shù)。如果不滿足對(duì)齊條件DMA 可能直接觸發(fā)總線錯(cuò)誤甚至導(dǎo)致系統(tǒng) HardFault。8 位模式?jīng)]有對(duì)齊要求任意地址、任意長(zhǎng)度都能搬。16 位模式要求 2 字節(jié)對(duì)齊。所以你的取舍是追求最快速度就用 32 位模式但要保證 buffer 對(duì)齊追求通用性就用 8 位模式犧牲一部分性能。地址遞增策略也有講究。如果INCR_READ 1且INCR_WRITE 1DMA 會(huì)從源地址一路遞增讀到目標(biāo)地址一路遞增寫這是標(biāo)準(zhǔn)的“內(nèi)存拷貝”模式。如果INCR_WRITE 0DMA 會(huì)把同一個(gè)值反復(fù)寫到同一塊地址的連續(xù)區(qū)域這個(gè)特性可以用來快速填充和清零后面第 5 節(jié)會(huì)詳細(xì)講。3. 實(shí)操過程MicroPython 下的完整實(shí)現(xiàn)3.1 準(zhǔn)備工作與環(huán)境搭建實(shí)操前需要準(zhǔn)備一塊樹莓派 Pico 或 Pico W一根 USB 數(shù)據(jù)線刷好官方 MicroPython 固件的開發(fā)環(huán)境Thonny 或 mpremote 都行RP2040 Datasheet遇到不明白的位段可以查固件版本建議至少 1.19 以上我實(shí)測(cè)用的 1.23 和 1.24 都正常。machine.mem32和uctypes都是標(biāo)準(zhǔn)模塊不需要額外安裝。連接開發(fā)板后先驗(yàn)證machine.mem32能否正常訪問 DMA 寄存器import machine DMA_BASE 0x50000000 # 讀通道0的CTRL寄存器初始值應(yīng)該是0 print(hex(machine.mem32[DMA_BASE 0x0C]))如果輸出了0x0說明內(nèi)存映射訪問正??梢岳^續(xù)。3.2 獲取 bytearray 真實(shí)內(nèi)存地址的正確姿勢(shì)MicroPython 中bytearray是一個(gè) Py 對(duì)象你需要的地址是它內(nèi)部數(shù)據(jù)區(qū)在 SRAM 中的地址。id()返回的是對(duì)象頭部的地址不是數(shù)據(jù)區(qū)地址所以不能用。正確做法是用uctypes.addressof()import uctypes buf bytearray(1024) buf_addr uctypes.addressof(buf) print(hex(buf_addr), buf_addr % 4)addressof返回的是 bytearray 數(shù)據(jù)區(qū)首地址。只要你的 buffer 變量一直存活這個(gè)地址就是有效的DMA 可以放心用。注意MicroPython 的 GC 不會(huì)移動(dòng)對(duì)象所以即使發(fā)生垃圾回收這個(gè)地址也不會(huì)變但前提是引用不能丟否則對(duì)象被回收地址就懸空了。3.3 基于寄存器配置的內(nèi)存到內(nèi)存 DMA 完整代碼下面是我整理的兩個(gè)函數(shù)。第一個(gè)是 32 位模式速度最快但對(duì)齊條件嚴(yán)格第二個(gè)是 8 位模式無對(duì)齊要求適合通用搬運(yùn)。from machine import mem32 from uctypes import addressof DMA_BASE 0x50000000 def dma_copy_word(dst, src, nbytes, ch0): 32位模式搬運(yùn)要求dst/src地址4字節(jié)對(duì)齊nbytes是4的倍數(shù) base DMA_BASE ch * 0x40 if nbytes % 4 ! 0: raise ValueError(nbytes must be multiple of 4) words nbytes // 4 # 先配置好地址和計(jì)數(shù)再寫入CTRL啟動(dòng) mem32[base 0x00] addressof(src) # READ_ADDR mem32[base 0x04] addressof(dst) # WRITE_ADDR mem32[base 0x08] words # TRANS_COUNT按word計(jì)數(shù) # EN1, DATA_SIZE2(32位), INCR_READ1, INCR_WRITE1, DIR1, TREQ_SEL0x3F ctrl (1 0) | (2 2) | (1 4) | (1 5) | (1 11) | (0x3F 26) mem32[base 0x0C] ctrl # 等待傳輸完成TRANS_COUNT自然會(huì)減到0 while mem32[base 0x08] ! 0: pass def dma_copy_bytes(dst, src, nbytes, ch0): 8位模式搬運(yùn)地址任意、長(zhǎng)度任意最通用 base DMA_BASE ch * 0x40 mem32[base 0x00] addressof(src) # READ_ADDR mem32[base 0x04] addressof(dst) # WRITE_ADDR mem32[base 0x08] nbytes # TRANS_COUNT按字節(jié)計(jì)數(shù) # EN1, DATA_SIZE0(8位), INCR_READ1, INCR_WRITE1, DIR1, TREQ_SEL0x3F ctrl (1 0) | (0 2) | (1 4) | (1 5) | (1 11) | (0x3F 26) mem32[base 0x0C] ctrl while mem32[base 0x08] ! 0: pass我先解釋一下ctrl這行是怎么算出來的(1 0)EN 位置 1使能 DMA 通道(2 2)DATA_SIZE 設(shè)置為 2也就是 32 位模式(1 4)INCR_READ 置 1讀地址遞增(1 5)INCR_WRITE 置 1寫地址遞增(1 11)DIR 置 1表示本次傳輸從內(nèi)存讀取數(shù)據(jù)(0x3F 26)TREQ_SEL 設(shè)置為 0x3F使用 DREQ_FORCE 強(qiáng)制連續(xù)傳輸配置順序也有講究READ_ADDR、WRITE_ADDR、TRANS_COUNT 都必須在 CTRL 的 EN 位寫 1 之前完成配置否則 DMA 可能在地址還沒有準(zhǔn)備好的時(shí)候就開始搬數(shù)據(jù)。最穩(wěn)妥的方式就是把 CTRL 放在最后一步寫。3.4 性能驗(yàn)證與結(jié)果分析下面跑一個(gè)簡(jiǎn)單的對(duì)比測(cè)試數(shù)據(jù)量 4KBimport time src bytearray(4096) dst bytearray(4096) # 給源數(shù)據(jù)填充規(guī)律值方便驗(yàn)證 for i in range(4096): src[i] i 0xFF t0 time.ticks_us() dma_copy_word(dst, src, 4096, ch0) t_dma time.ticks_diff(time.ticks_us(), t0) print(DMA copy: , t_dma, us) print(match:, src dst) # Python純循環(huán)對(duì)照 t0 time.ticks_us() for i in range(4096): dst[i] src[i] t_py time.ticks_diff(time.ticks_us(), t0) print(Python copy:, t_py, us) print(speedup:, t_py / t_dma)我在 Pico 上實(shí)測(cè)4KB 數(shù)據(jù)用 DMA 也就幾十微秒而純 Python 循環(huán)通常要幾毫秒差距在三到五倍以上。而且數(shù)據(jù)量越大這個(gè)差距越明顯。注意dma_copy_word要求 src 和 dst 的地址是 4 字節(jié)對(duì)齊的如果遇到對(duì)齊錯(cuò)誤改成dma_copy_bytes就不會(huì)出問題。4. 常見問題與排查實(shí)錄4.1 數(shù)據(jù)拷貝完了但內(nèi)容不對(duì)這種現(xiàn)象最常見的原因是用了id(buffer)去取地址。id()返回的是 PyObject 頭部的地址不是數(shù)據(jù)區(qū)域DMA 從頭部地址讀出來的數(shù)據(jù)當(dāng)然不是你想要的。解決辦法統(tǒng)一用uctypes.addressof()。另一個(gè)原因是字節(jié)序。RP2040 默認(rèn)小端模式如果你在 32 位模式下搬運(yùn)數(shù)據(jù)內(nèi)存布局是低字節(jié)在前當(dāng)你把源和目標(biāo)都看成統(tǒng)一數(shù)組時(shí)結(jié)果應(yīng)該是對(duì)的。但如果你在其他架構(gòu)上生成的數(shù)據(jù)文件再放到 Pico 上直接搬運(yùn)就可能出現(xiàn)大小端問題。這種情況可以檢查一下 CTRL 的 BSWAP 位。4.2 DMA 傳輸一直不結(jié)束如果你發(fā)現(xiàn)while mem32[base 0x08] ! 0卡死了先檢查 CTRL 的 TREQ_SEL 是否寫成了 0x3F。沒有這個(gè)強(qiáng)制觸發(fā)源DMA 可能一直在等外設(shè) DREQTRANS_COUNT 不減到 0。另外也可能是通道被占用。MicroPython 的某些底層庫(kù)比如 audio、PIO、I2S 驅(qū)動(dòng)可能已經(jīng)占用了某幾個(gè) DMA 通道。如果你使用通道 0 恰好在系統(tǒng)固件里被占用就會(huì)沖突。寫代碼前可以先檢查一下通道是否空閑def is_dma_channel_free(ch): return (machine.mem32[DMA_BASE ch * 0x40 0x0C] 1) 0如果返回 False說明通道被占用換一個(gè) ch 重新試。4.3 系統(tǒng) HardFault 或死機(jī)HardFault 絕大多數(shù)情況是地址沒對(duì)齊或地址非法。32 位模式要求源地址、目標(biāo)地址都是 4 的倍數(shù)如果bytearray恰好不是按 4 對(duì)齊分配的就會(huì)出問題。遇到死機(jī)的時(shí)候可以先換成 8 位模式驗(yàn)證數(shù)據(jù)通路是否正常再考慮對(duì)齊問題。另外DMA 訪問不能超過實(shí)際內(nèi)存邊界。RP2040 的內(nèi)置 SRAM 是 264KB地址范圍是0x20000000到0x20041FFF如果源 buffer 或目標(biāo) buffer 越界DMA 可能訪問到不存在的地址系統(tǒng)不死才怪。4.4 DMA 沒有比 Python 循環(huán)快多少如果你發(fā)現(xiàn) DMA 帶來的提速不明顯先看數(shù)據(jù)量。幾十字節(jié)的拷貝根本發(fā)揮不出 DMA 的優(yōu)勢(shì)至少幾百字節(jié)往上再考慮。還有一個(gè)容易被忽略的問題MicroPython 的函數(shù)調(diào)用、寄存器配置本身也有執(zhí)行開銷。如果你在 DMA 的等待循環(huán)里加了額外的打印操作或者把配置寫在一個(gè)低效的循環(huán)里整體耗時(shí)會(huì)被 Python 端拉高。最好的做法是設(shè)計(jì)一個(gè)長(zhǎng)緩存一次 DMA 搬完而不是小段多次搬運(yùn)。4.5 速查表現(xiàn)象可能原因解決辦法數(shù)據(jù)是全零或亂碼用id()取地址出錯(cuò)改用uctypes.addressof()TRANS_COUNT 卡著不動(dòng)TREQ_SEL 未設(shè) 0x3FCTRL 寫入0x3F 26HardFault / 死機(jī)地址未 4 字節(jié)對(duì)齊換 8 位模式或手動(dòng)對(duì)齊DMA 通道沖突固件庫(kù)占用通道換空閑通道提速不明顯數(shù)據(jù)量太小至少 256 字節(jié)以上再 DMA5. 擴(kuò)展玩法DMA 還能這么用5.1 快速清零與填充固定地址中間值DMA 的 INCR_READ 和 INCR_WRITE 是分開控制的這給我們留了一個(gè)很有意思的玩法。如果 Read 地址不遞增Write 地址遞增DMA 就會(huì)把同一個(gè)值反復(fù)寫到一塊連續(xù)區(qū)域。利用這個(gè)特性可以實(shí)現(xiàn)快速清零def dma_zero_fill(dst, value, nbytes, ch0): base DMA_BASE ch * 0x40 if nbytes % 4 ! 0: raise ValueError(nbytes must be multiple of 4) # 準(zhǔn)備一個(gè)固定的word值的buffer val_buf bytearray(4) val_buf[0] value 0xFF val_buf[1] (value 8) 0xFF val_buf[2] (value 16) 0xFF val_buf[3] (value 24) 0xFF mem32[base 0x00] addressof(val_buf) # 源地址固定 mem32[base 0x04] addressof(dst) # 目標(biāo)地址遞增 mem32[base 0x08] nbytes // 4 # INCR_READ0, INCR_WRITE1, DATA_SIZE2, DIR1, TREQ_SEL0x3F ctrl (1 0) | (2 2) | (0 4) | (1 5) | (1 11) | (0x3F 26) mem32[base 0x0C] ctrl while mem32[base 0x08] ! 0: pass這個(gè)技巧在音頻靜音、圖像清屏、幀緩沖初始化里特別實(shí)用。一次性 DMA 搬運(yùn)幾百個(gè) word 比for循環(huán)快得多。5.2 雙緩沖與環(huán)形緩沖DMA 通道自帶的 RING_SIZE 和 RING_SEL 位可以實(shí)現(xiàn)環(huán)形緩沖DMA 在地址到達(dá)邊界時(shí)自動(dòng)回繞。這個(gè)在大批量連續(xù)數(shù)據(jù)采集場(chǎng)景下非常有用比如 ADC 持續(xù)采樣到一個(gè)小緩沖區(qū)緩沖區(qū)滿了自動(dòng)從頭覆蓋CPU 只需要在間隙讀取有效數(shù)據(jù)。內(nèi)存到內(nèi)存?zhèn)鬏斠部梢杂玫江h(huán)形緩沖比如音頻播放循環(huán)播放一段短采樣。把源地址配成環(huán)形回繞DMA 會(huì)自動(dòng)循環(huán)播放采樣數(shù)據(jù)CPU 幾乎零負(fù)擔(dān)。5.3 多通道并行搬運(yùn)RP2040 有 12 個(gè) DMA 通道實(shí)際項(xiàng)目中可以同時(shí)啟用多個(gè)通道搬運(yùn)多路數(shù)據(jù)。比如一個(gè)通道負(fù)責(zé)從 ADC 采集緩沖區(qū)搬到處理緩沖區(qū)另一個(gè)通道負(fù)責(zé)從處理結(jié)果搬到顯示緩沖區(qū)兩條流水線互不干擾。不過要注意多個(gè)通道共享總線和 DMA 控制器如果同時(shí)發(fā)起大量傳輸會(huì)搶占帶寬。是否需要分配高優(yōu)先級(jí)取決于你的實(shí)時(shí)性需求。CTRL 的 HIGH_PRIORITY 位可以給關(guān)鍵通道更高的總線優(yōu)先級(jí)。5.4 配合 PIO 和 SPI 外設(shè)DMA 的真正價(jià)值不止內(nèi)存到內(nèi)存它還可以配合外設(shè)做“零 CPU 參與”的數(shù)據(jù)流傳輸。PIO 是 RP2040 的特色把 DMA 通道綁到 PIO 的 DREQ 上可以實(shí)現(xiàn)連續(xù)輸出波形、讀取特定時(shí)序的數(shù)據(jù)CPU 只需要配置一次剩下的數(shù)據(jù)流由 DMA 自動(dòng)搬運(yùn)。SPI 屏幕刷新也可以這樣從顯存 buffer 直接 DMA 到 SPI TX刷新過程完全不用 CPU 盯著。我實(shí)測(cè)用這種方案推 320x240 的小屏刷新率比逐像素寫寄存器的方式高出一大截。6. 寫在最后一點(diǎn)個(gè)人提醒折騰 RP2040 DMA 的時(shí)候我有兩個(gè)很深的體會(huì)。第一不要迷信“底層就一定難”。DMA 無非就是“源地址、目的地址、數(shù)量、控制”四個(gè)要素對(duì)著手冊(cè)把每個(gè)位段搞清楚比在論壇上零散抄代碼靠譜得多。抄來的代碼一旦出錯(cuò)你都不知道該怎么改。第二MicroPython 寫 DMA 并不是“離經(jīng)叛道”。很多場(chǎng)景下我們既要 Python 的開發(fā)效率又想要接近底層的性能直接操作寄存器就是這座橋。你完全可以在 MicroPython 里把 DMA 配置封裝成通用函數(shù)然后把精力放在應(yīng)用邏輯上。最后分享一個(gè)小技巧如果你不確定當(dāng)前固件的 DMA 通道是否被其它庫(kù)占用可以在初始化前執(zhí)行一次全通道掃描打印所有通道的 EN 狀態(tài)。這樣既能避開沖突也能幫你快速定位“為什么 DMA 不響應(yīng)”。希望這篇教程能幫你少踩幾個(gè)坑順利把 RP2040 的 DMA 用起來。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
97伦综合| AA级电影三区| 人人澡综合涩| 欧洲综合视频| 亚洲男人bt天堂| 操逼国产免费| 中日亚韩免费视频| 亚洲囯产精品女人久久久| 九九九九九九视频免费| 91综合网在线| 狠狠操狠狠操操| 免费国产视频| 亚洲欧洲小说图片视频 | 日本在线激情一区二区三区| 午夜乱轮操逼视频免费看| 91黑丝在线| 久久人人爽av亚洲精品天堂桃色| 9长久久精品| 国产不卡中文字幕免费avi| 色哟哟国产精品免费网址| 丁香五月婷婷啪啪| 成人欧美一区二区三区黑人一| 嫩草影院性色| www.丁香五月| 欧美一区91大爱| 青娱乐导航AV| 亚州 综合 色图| 好屌色综合| 国产精品丝袜久久亚洲不卡| 亚洲青青草| 精人妻无码一区二区三区伊人直播| 婷婷精品国产一区二区三区日韩| 亚洲91网站| 久久伦理视频久久大香蕉视频| 国产精品久久久久久久久久久久久久久 | 亚洲欧美清纯| PMv在线观看| wwwxxx日本爽| 男人的天堂一区三区| 综合久久99| 啊啊啊 在线观看| 97色视频在线| 噜噜噜亚洲精| 日韩成人在线性爱视频| 啊v视频在线观看| 久久手机好看网站| 青草影院内射高潮| 日韩欧美性爱电影在线观看| 翔田千里无码中出中文字幕| 久操com| 亚洲国产成人高清在线| 91最新综合| 91 国产丝袜在线播放-百度| 大学生美女口爆| 操操逼操操逼操操逼逼| 久热伊人99re| 黑人干亚洲| 一级黄色性爱裸体视频| 久久激情亚洲精品无码?V | 亚洲欧美在线综合| 国产尤物在线三区| 三及片网站| 加勒比在线观看一区二区| 91精品国久久久久久无码| 韩国成人精品久久久免费看| 综合欧美色图| 很黄很污的免费网站| 久久久久久久久久va| 啊啊啊啊好疼视频| 嗯啊不要在线| 国产人伦a片信息免费片| 9久9久9久9久视频网站| 人妻天天爽夜夜爽精品2| 操逼操逼逼操操逼91| 极品少妇久久久| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 大屁股人妻女教师撅着屁股| 蜜臀aV午夜一区二区三区| 日韩精品99999| 国产日逼视频| 久久精品店| 97er欧美性| 色丁香五月婷婷| 狼狼色丁香久久婷婷综合五月| 骚鸭AV| 欧美性爱一区| 懂色AV一区二区三区| 亚洲欧美色图片| 97超碰精品| 亚洲日本成人动漫| 97超碰超碰| av天堂手机版追回| 超碰 另类 欧美| 啊啊啊啊操死我了| 国产91影院| 小视频玖玖| 69超碰综合| 香蕉免费一区二区三区不读 | 91碰碰| 91亚洲欧美| 免费黄色A片| 欧美中字二区| 最近的最新的中文字幕视频| 老熟妇91| 青青草综合在线| www.四虎在线| 五月天大香蕉| 国产日韩欧美中文在线播放| 特色a在线上| 色色色色色色色色综合| 91jk色拍| 操碰97| 啪啪免费| 涩综合导航| 亚洲图片 欧美电影| 色情亚洲日本成人| 国产精品对白内射| 亚洲人妻一区二区三区| 人人考人人摸人人干| 五十路一区无码| 天综合网欧美| 日日橹狠狠爱欧美超碰| 女人天堂AV五区在线| 亚洲欧洲综合视频在线| 八人操人人摸人人看| 偷拍自拍在线视频观看| 去干网最新版| 亚洲 欧美 91| 久久av色| 色色热| 人人插人人搞人人操| 欧美aaaaaaa| 在线观看成人性爱免费小视频| 蜜乳中文字幕a在线| 91免费看一区二区三区| 久久精品天美| 久久久人体| 91超级碰| 国产一级αv免费看片| 国产美女裸体秘 永久无遮挡| 99热这里都是精品| 日韩欧美~中文字| 亚洲一本色码中文字幕| 亚洲欧美爆| 亚洲成a人片在线观看中文!!!| 嗯嗯啊啊视频在线看| 久7色| 97这里有精品| 九九九九九九九九九五码| 蜜臀无码一区二区| 欧美色宗合| 操逼逼中文字幕| 99精品在线观看| 国产精品久久久久久久久久久久久久久久久久 | 性欧美另类高清| 亚洲AV乱码专区国产噜噜亚洲| 日日AV加勒比| 久久偷偷色综合蜜桃| 欧美一区二区三区另类精品| 操逼日韩无码| 日本三级A片网站com| 久久老熟女| 亚州成人a∨| 欧亚性爱视频免费看| 五十路熟女人妻一区二区三区四区五| 91美女国产在线| 欧美国产日韩清纯唯美| 欧美疯狂做爰xxxx| 国产强奸乱伦xd| 91激情国产| 超碰碰97资源站| 国产三级在线现体验区| 91在线精品一区二区三区| 精品人妻一二三四区视频| 东京热,男人的天堂| 18禁免费视频| 日本丝袜美腿人妻九九| 丝袜无码a片| 成人线上超碰| 91+欧美| 97操B| 成人免费在线网站| 亚洲欧美天| 日本不卡高清视频| 小草精彩毛片| 超碰97男人| 嗯嗯啊啊啊好爽| 99在线精品视频| 美女被艹尤物视频| 无码逼| 国产一区二区三区视频在线看| 精品人妻1237| 亚洲av性爱电影| 91日本在线观看| 97超碰9| 日韩成人大片一区二区| av绯色| 人妻献身系列第54部| 国产97亚洲| 91国产丝袜白虎| 久久精品人妻一区二区三区| 9久9久| 嫩草 我啊~嗯~在线| 韩日巨乳美女免费视频在线观看| 超碰天天操| 狠狠躁天天躁日日躁97| 中文字幕神马久久| 国产视频第2页| 四虎在线播放| 日本一久是| 午夜精品久久久久| 精品一国2| 亚州 综合 色图| 神马久久网| 加勒比伊人综合| 午夜福利在线合集| 97精选久久| 啊啊在线| 欧美中文综合| 国产精品久久久 | 揉揉日日日日| 久久超碰网| 精品69网| 尤物网站91| 亚洲,欧美,综合网| 99热 按摩 日韩| 国产精品老师| 国产51色综合久久免费| 日韩欧美成人性爱在线| 夜夜高潮夜夜爽夜夜爱爱一区| 欧姜老司机| 亚洲se91| 97在线视频观看| 干我久操| 全免费a敌肛交毛片免费| 天天视频黄网站| www.人人cao| 亚洲综合在线视频| 日本一区二区三区精品| 久久久婷| 加勒比综合在线| 97久久国产精品女不卡| 亚洲色悠悠久久88| 天天综合网在线| 清柠毛片| 2020国产精品| 情色五月天就去干| 国产久久视频| 精品二区三四区五电影| 青青草字幕AV| 欧美综合制服在线| 欧亚日韩三区| 97视频在线观看高清资源| 嗯阿好爽好紧| 亚洲 日本 一 二 三| 天美精品原创av片国产| 自怕偷自怕亚洲精品| 色呦色呦色精品| 欧美精品欧美精品系列 | 成人八戒网站| 欧美黑人猛交春色影视大全| 欧美综合制服在线| 国内外激情在线| 欧亚日韩一区在线| 日本高清_区二区三区| 激情综合婷婷| 一区二区三区色综合| 天天干人人乐| 天天艹天天日| 日日狠狠久久偷偷色综合免费| 久热超碰| 成人一级二级| 台湾一区国产高清在线| 久久99视频| 麻豆精品A片免费观看| 伊人宅男大香蕉| 亚洲乱色熟女一区| 很很干很很操| 1024午夜激情男人的天堂| 91无遮挡| 在线观看综合精品亚洲| 亚洲综合有玛| 久久免费少妇| a在线观看| 99999精品视频| 天天舔天天日天天射| 超碰在线综合97| 91中文字幕制服丝袜免费视频| 欧美综合网| 天天懆天天日| 91人妻PORNY九色大屁股| 日日夜夜干| 成人5码视频| 色一射色一射| 九九综合久久| 不卡免费av在线播放| 国产亚洲精品美女久久久m| 色蜜AV| 蜜桃丰满熟妇av无码区不卡| 超碰久草| 亚洲国产精品无码AV久久| 亚洲欧美国产其他二区| 精品人妻视频一区二区三区蜜桃视频| 久久免费看高潮毛片韩国| 人妻精品一区二区全免费| BBBBB97COM| 免费看久久久性性| 亚洲宗合网| 日韩欧美性爱电影在线观看| 久久熟女人| 欧成人在线| 欧美日韩性爱视屏免费看了| 无码九九九九| 日韩不卡毛片Av免费高清| 亚洲中文电影| 操逼天美3区| 日本 免费 一区二区三区 久久香蕉| 看全色黄大色大片免费视频| 女同亚洲欧美一二三区久久电影| 少妇激情一区二区三区视频| 五月婷婷综合在线| 国色综合天| 9l视频自拍9l九色成人| 黄色电影观看久久9| 999久久久久久久精| 欧美操逼录像国产黄色国产| 日本肏逼视频在线观看| 伦理日韩国产久久| 人人摸人人添人人操| 麻豆一区二区三区精品| 超碰激情808| 97视频观看| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 中文字幕AV乱伦| 国产精品经典一卡久久久 | 韩三级a视频在线观看| 92福利社视频| 国产精品天干天干综合网麻豆| 亚洲宗合网| 国产操逼逼网| 久久偷偷色综合蜜桃| 欧美A片中文字幕| 熟女中出视频| 国产成人综合在线播放| 大香蕉日亚洲日本亚大| 999岛国大片| 99re视频在线播放青草| 蜜桃久久综合视频| 性暴力欧美猛交在线直播| 97色涩| 色综合av男人天堂| 91在线观看,天天综合| www.狠狠操| 天天澡天天爽日日AV| 蜜臀精品1区2区| 人人操人人舒服| 91丝袜在线视频| 玖玖玖玖精品国产剧情| 欧美丝袜中文字幕07在线| 日日干夜夜干| 日本一级婬片试看三分钟| 97超色| 超碰人人超在线观看| 熟女一区二区三区| 91色情黑丝搞鸡在线观看一区二区三区三州 | 一级啊性爱在线视频| 在线观看亚洲专区| 亚洲高清在线| 91天堂色男人的天堂| AV在线播放网址| 乳欲人妻办公室奶水| a人欧美综合天堂麻豆| 欧美亚洲综合高清在线| 中文日本免费高清| 黑人性欧美| 欧美亚洲情色| 日韩在线性爱免费视频| 国产美女mm131爽爽爽爽| 欧美一区二区亚洲天堂| 亚洲美女精品| 91美女色视频亚洲| 欧美综合1性辶| 日本东京热久久久电影| 成人美女av| 色99视频| 91路www| 蜜臀va69| 26uuu最新| 国产精品久久久久久久久久久久久久吹 | 在线看片国产精品每日更新| 97超碰人操| 国产污视频麻豆传媒一区二区| 日韩精品在线观看网站| 日本有码久久| 色99久草| 中日韩一区二区三区欧美| 亚洲欧美在线观看免费| 久久久久成人蜜桃精品| 国产人妻一区二区三区欧美毛片| 人妻少妇久久| 一起草三级AV电影在线观看| 伊人久久综合影院| 色色五月天婷婷| 神马久久久久久久久久久久| 玖玖无码超碰| 日韩激情无码影院| 综合网色| 91中出在线| 成人女人国产| 国产精品爽爽v| 亚洲怡春院| 国产在线76页| 婷婷爽人人婷婷爽视频| 综合久久久久久久久91| 97香蕉碰碰人妻国产欧美| 91美女丝袜诱惑视频| 久久爽爽精品| 日本大香蕉综合网| 欧美性爱1080p| 精品妇女一区二区三区| 日本欧美色| 96精品久久| 国产一级作爱毛片| 大香蕉欧美伊| 亚洲精品少妇| 国产在线视视频有精品| 白丝AV网站| 后入国产| 黄色人人| 色色毛片| 白嫩少妇| 精品二区三四区五电影 | 久9久| 久久老女人| 亚洲人妻在线一区| 人人妻人人操人人乐| 妇女乱色二区| 亚洲一区二区三区中文字幕| 无码一区二区三区四区五区六区七区八区九区十区视频 | 色情五月综合婷婷| 久偷拍欧美日韩三区| 国产精品久久久啊| 区日韩亚洲乱码av电影| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 91啪啪| 日本超碰色精品| 神马久久久久眼| 国产大学生高潮在线播放 | 欧美天天插| 少妇高潮喷水无套久久久久久| 26uuu偷拍亚洲欧洲综合| 精品国产三级av韩国在线| 唯美清纯 妖精视频| 日韩精彩视频| 日韩人妻精品| 午夜人妻精品综合在线| 色色色综合网| 桃色五月天| 久艹99| 欧美专区日本专区| 日韩图区 偷拍| 乳欲人妻办公室奶水| 色婷婷九月天天综合| 精品97精品97| 久久精品国产亚洲妲己影视| 黄aaaaaaaaaaaaaaaaaa色网站| 免费AV播放| av天堂5| 免费一级黄色录像影片| 2019天天干天天操| 久久超碰国产一区二区三区| 伊人五月天婷婷| 日韩在线女优天天干| 999久久久国产精品| 婷婷久久久| 欧美91网| 99婷婷| 久久精品操| 五月天激情影院| 97爱爱官网| 翔田千里av一区二区三区| 亚洲素人综合| 天美麻花大全视频| 青娱乐 青青青操 日逼| 成年人一级黄色毛片大全在线观看| 99国产精品免费| 免费国产电影一区二区| 亚州精品丝袜-不卡成人免费| 91亚洲人| 五月丁香色综合| 青青青草原| 久久美女福利是上海美女| 97视频免费在线| 99热这里是精品| 激情综合五月| 欧美熟爽综合| 操亚州| 黄色十八禁| 日日躁狠狠躁天天躁精品| 97精品一区二区视频在线观看| 亚洲天堂在线怕怕视频 | 亚洲黄色电影| 今日头条成人一区二区三区四虎精品| 久久久久久久久久久久久久久久9| 亚洲精品国语在线播放| 欧美一级欧美三级在线观看| 国产一级特黄大片处女| 国产精品3| 牛黄色久午久| 淫色网综合| 久久久久国产| 九九九九免费视频| 精品高潮| 97超碰久| 18禁免费视频| 亚洲午夜蜜臀| 日韩人妻资源在线看| 日本阿v天堂在线观看| 夜夜操av亚洲一区二区| 日韩精品一区二区高清| 欧美综合传媒| 亚洲中文字幕97久久精品少妇| 9999久久久| 91黑丝少妇| 丝袜美腿操av| 夜色AV无码手机在线影院| 97亚洲资源| 欧美色交| 中文字幕精品一区二| 丁香五月综合| 中文字幕一区二区三区四五区| 亚洲无线码欧洲精品区别| 久久久91福利姬| 日本国产亚洲一区在线观看| 日韩人妻资源在线看| 久久久精品一区二区| 欧亚日韩中文在线| A片 AV一级在线播放观看免费| 超碰中文字幕人妻草一区| 亚洲美女AV无码| 色噜噜狠狠色综无码久久合欧美| 伊人久大| 一二三区视频在线观看| 操逼逼一区视频| 五月丁香激情综合| 欧美黄片欧美黄片xxx| 操一区| 热九九精品| 立川理惠被中出无码| 91伊人久久在线| 热99re69精品8在线播放| 丁香婷婷大香蕉| 久久这里| 超碰美国| 日本熟妇熟色97一本在线观看| 亚洲 欧美 手机在线观看| 一摸二插三插| 中文字幕88av在线| 99色视频| 欧美丝袜制服久久| 自拍啪啪视频| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 国产综合网站在线播放| 91狠狠综合| 青青草日韩免费观看高清在线| 九九Av| 国产美女在线精品免费看| 色鬼在线综合| 欧美性爱第1 页| 日欧美色| 无遮挡h肉动漫在线观看| 欧美日韩国产中文精品字幕自在自线,| 免费公开人人操| 国产精品美女| 中文字幕人妻丝袜乱一区三区| 99在线视频播放| 天天插天天射| 免费黄色A片| 国产一区二区三区白丝| 久久精品国产亚洲av水密被窝| 中文字幕诱惑制服人妻丝袜美丝袜美| 无码99| 性爱乱伦网址| 福利社区午夜一区二区| 天天摸天天操视频| 国产热av| 加勒比伊人综合| 天堂麻豆天美| 亚洲日产专区| 日本精品成人无码| 久热香蕉精品在线视频| 成人五月香网在线| 9丨亚洲一区二区在线| 清纯唯美第一页| 青青草九九九九九| 色网在线视频观看免费| 亚洲 欧美 色图| 亚洲欧美中文日韩视频中国语| 五十路熟女在线不卡观看一区二区| 美女AV一区二区| 欧美亚洲清纯| 五月综合久久| 家庭乱伦性爱av| 殴美性天天| 日韩78m视频| 亚洲精品影视老司机| 欧美性夜| 风骚少妇视频中文字幕| 天天干天天做| 午夜.DJ高清在线观看免费7| 久久草大香蕉| 欧美美女视频| 97激情97激情| 国产剧情一区在线观看| 亚洲av无码成电影在线播放| 人人操人人爽人人操人人| 69天堂| 熟女精品日韩一区二区三区| 色综合V| 亚洲欧美碰碰| 男人天堂导航| 久久色一区二区| 97色97好| 亚洲欧美国产中文字幕| 激情另类激情| 九九九不卡| 加勒比色99999| 欧美自拍网| 蜜桃视频啊啊啊啊| 97超碰中文字幕| 91在线一起| 男人天堂网手机版婷婷| 天天在线91| 啊啊在线| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 啪啪啪综合| 欧美精品,四区。五区| 四季av一区二区凹凸精品小说| 亚洲欧美天| 日韩欧美中文字| 曰本91情色| 日本东京热大香蕉a片| 九九热精彩视频| 91网站18+| 抽插亚洲无码| 欧美一区二区三区不卡高清视频| 欧美亚州综合网图片| 欧美激情精品久久久| 97爱亚洲综合色| 亚洲国产一级中文综合久久天堂在线免费观看 | 午夜精品久久久久久久久久久久久| 久久精品日韩专区免费观看| 日韩无码服务区| 亚洲黄色网址| 亚洲av夫妻操穴网| 九九成人| 激情内射| 亚精品无码毛片一区二区三区| 97久久国产亚洲精品超碰热| 97网址97| henhen91| 婷婷九月国产| 91人妻人人澡人人爽人人精品| 欧美一级A一级a爱片久久| 久久精品国产亚洲粉嫩| 伊人国产AV| 人妻丝袜一区二区三区在线| 伊人骚琪琪亚洲天堂网站| 亚洲成人AB| 人人操欧美风骚| 琪琪精品免费一区二区三区| 日本色婷婷| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 天天色粽合合合合合合合| 亚洲aw毛茸茸在线| 久久九操在线观看| 久久三| 99色色| 91日日夜夜| 天天日熟妇| 人妻久久| 亚洲色图尤物视频| 精品久久久久,69国产成人精| 97超碰影音| 久久97视频| 日韩在线欧美精品一区二区| 亚洲色图综合网| 激情在线青青操| 一区二区三区高清天码| 欧亚在线视频| 亚洲欧美九九| 丰满人妻一区| 欧美中日韩XXXX| 亚洲无无码αⅴ每日更新| 97人妻碰碰中文无码久热丝袜| 91成人在线| 九久久精品| 97操在线| 熟妇一区,二区,三区。| 青青操网| 禁十八久久| 第二页中文字幕| 色阁阁AV综合网| 国产高清自拍| 亚洲最大无码中文字幕网站| 青青草伊人久久| 国产高清成人免费视频| 国产小u女在线观看| 五月开心久久AV官网| 国产精品久久久亚洲第一牛牛_在线观看| 亚欧无码线免费观看视频| 九九在线精品| 91黑丝露脚| 97青娱乐超碰久久| 久9精品| 九月丁香综合网| 五月丁香综合| 91美女色视频亚洲| 亚洲色图欧美色18直播在线| 亚洲va有码在线天堂| 久久久久久久久久久久久久9999| 欧美丝袜亚洲| 国产精品原创巨作?v网站| 1024人妻| 亚洲激情天堂网| 久久久91| 伊人久操| 亚洲风情综合网| 欧美aaaaaaa| 91亚州日韩高清| 超碰色大香蕉| 人人扣人人操| av橘色网站| 曰韩无码777| 精品在线观看视频在线| 国产精品欧美激在线| 超碰97亚洲| 国产精品探花在线| 日韩中文字幕2020| 日韩视频中文字幕| 91大学精品激情戏| 青青草AV色| 五月天黄色激情视频| 九九九精品一区二区无码| 亚洲图片激情综合另类| 一二三啪啪专区| 91女日逼| 免费啪啪啪网站18岁| 长久操视频| 午夜AV人气不卡| 男人久久精品| 中文字幕99999| 无码伊人久久大杳蕉中文无码| 97热视频在线观看| 亚洲影院365| 国内精品不卡无毒99999| 欧美 亚洲 第一页 | 国产毛片在线| 一区 欧美 日韩 麻豆| 免费精品无码一级毛片牛牛影视 | 色噜噜综合网| 日韩人妻一二三区视频| 国产亚州高清国产拍精| 精品二999| 东北丰满熟女国产一区| 丁香婷婷激情五月天无毒不卡| 一本久道在线综合视频| 亚洲中文sv| 亚洲国产激情国产av| 日日骚网站| 天天综合网站| 欧美999| 麻豆伊人网| 亚洲最大无码中文字幕网站| www.acm成人黄色毛片| 91一区二区| 欧美在线|亚洲| 久久这里只精品免费福利| 一区二区久久天天干狠狠| 中文字幕久热视频在线| www.91欧美| 亚洲色图欧洲| 久久本道| 日本操逼视频不卡直接放| 黑丝日韩av丝袜av| 色狠狠 - 百度| 久久一级无码精品毛片6| 风月影院十八禁| 精品大全99999| 亚洲一区二区三区麻豆传媒| 激情久久av一区av二区av| 久久久久亚洲av综合波多野制衣| 伊人操| 精品9999| 久久美女国产| 久久后入制服| 超碰99在线观看| 在线a亚洲视频播放在线| 看黑丝美女操逼青青网站| 国产三级在线现体验区| 人妻超碰青青草98| 色综合婷婷| 久久久蜜桃臀无码视频| 狠狠狠狠狠狠| 国产无码精品无码| 91nbbbbbb| 人人贴人人摸| 久操| 伊人亚洲国产一成人久久精品,久久| 伊人国产成人av网站| 97色色,97综合| 色小视频蜜乳| 蜜臀久久99精品久久久久久| 久久久18禁| 国产精品干干干| 久久日韩肥臀| 91扒丝袜综合在线| 亚洲图片日本AⅤ欧美在线| 欧美在线综合| 色色色99| 黄色免费网| 粉嫩av一区二区三区四季| 色九月| 欧美爱三级日韩久久| 97久久天天综合色天天综合色电影| 亚熟hd视频在线| 中文字幕88av在线| 五月激情视频| 天美国产精品| 暖暖精品二区三区观看| 熟妇熟女一区二三区| 中文啪啪视频| 天堂精品在线| 久久久网站| AV 少妇 人妻 偷拍| 在现视频女上位好爽| 不卡码视频| 大香蕉乱伦视频网| 98人妻精品一区二区色欲| 美女爽爽爽刺痛洞洞| 婷婷探花久久精品一区| 午夜人人操| 十八禁的黄污污免费网站| 天天综合欧美黑人| 极品尤物在线观看| CCYY草草影院地址入口| 18禁久久| 色999偷自拍拍| 超碰人人乐97| 欧洲乱码一区二区| 欧美一品道| 蜜臀久久99精品久久久久电影| 国产综合久| 日产操逼| 亚洲国产欧美一区二区潘金莲| 超碰诱惑| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 国产第二页| 日韩免费人妻色情网站| 成年女人黄网站| 欧美天天搞| 久久不卡一区二区| 亚洲综合色婷婷| 综合久久久久久久久91| 亚州中文字幕超碰97| 亚洲最新中文字幕免费| sewuyueav| 亚洲人综合| 97欧美精品综合| 91精品伊人久久久大香线蕉91| 亚洲**2021在线观看| 欧洲视频在线| 另类专区加勒比| 大吊色| 亚洲日韩一区电影| 熟女六十路| A 在线网址| 永久电影三级在线观看| 97se亚洲综合自| 看看日B真人视频| 伊人97色天使| 激情文学网伊人| 一区二区三区成人高清视频| 欧美不在线| 欧美日韩亚洲少妇寂寞影院正在播放| 少妇专区一二三四五| 伊人97色天使| 色五91| #NAME?| 欧美性爱一区二区三区| 欧美一区二区三区另类精品| 男人下部插入女人下部| 欧美97免费| 亚洲精品第一| 99热导航| 欧美成人一级麻豆| 色五月综合网| julia ann久久| 懂色中文一区二区三区| 日本裸体久久色噜噜| 超碰97亚洲| 黄片免费视频2019| 十八禁啪啪视频| 91无码西班牙视频在线| 久久精品性| 久久97视频| 嗯嗯啊在线视频| 国产深夜福利| 亚洲丨在线| 九草九九九| 在线观看午夜婷婷久久久久清性观看| 撸撸成人在线视频| 欧美性色综合网| 日韩AV无码网站| 白丝1区2区3区| 伊人天天久久动态图| 色av中文字幕| 日韩精品在线放| 乱久久久| 日本孕妇一区二区视频操逼免费看 | 亚洲男人综合| 怡红院成人视频| 精品无人区麻豆乱码1区2区图片| 国产精品动态一区二区三区四四| 午夜精品人妻二区三区| 色哟哟av网址| 国产99999久久精品| 色悠久久久av| 97一区二压| 美女干逼2| 囯产精品强| 国产精品午夜福利视频| 超碰无码五月97| 黄色十八禁| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 91 亚欧| 99re这里只有精品2| 欧美色综合网| 丝袜AV一区二区三区| 亚洲黄色电影| 日韩15p| 天天色图| 91久久免费视频互動交流| 一本色道久久天天射天天干| 国产欧美日韩一区二区三区| 殴美日韩m| 操B在线观看| 99操逼| 日韩性色b| 97色伦97色伦国产欧美| av东京热男人的天堂| 人妻少妇av在线观看| 亚洲日韩美女丝袜美腿人妻视频| 亚洲狼狼干综合1| 熟女人妇一区二区三区| 午夜超碰| 加勒比色综合| 日本天堂网| 天天干18禁| 亚洲第一成人影院色播| 风月影院男女十八禁| 91狠狠色丁香婷婷综合久久精品| 一区二区三区高清天码| 自拍偷拍国产欧美日韩韩| 久久av成人无码免费| 日韩人妻 中文字幕| 天天肏夜夜肏| 97综合在线观看| 久久视网78| 久久一二三级一一一| 天天内射| 久久精品超碰| 91电影色诱| 久久久激情| 亚洲欧美中文一区二区三| 欧美色道啊| 青青三级视频| 国产成人+综合亚洲+天堂| 人人么人人操| 韩国三级理论在线| 欧美日韩色综合网| www.av在线观看| 激情自拍 校园春色| 国产精品91ai| 欧美天天综合站| 亚洲男人天堂网站| AVE乱伦| 国产熟女乱论| 天美传媒一二三区永久网站| 蜜臀久久久| 国内精品99999| 三男一女不戴套的A片| 色综合天天| 色99视频| 国产成人主播| 天天欧美| 日韩啊V| 免费1级a做爰片观看| 午夜理论片在线观看免费| 国产精品国产拍高清AV| 91国产精品熟女| 日日干夜夜欢| 91久久青青草原精品| 成年人性爱日韩| 91色婷婷综合久久中文字幕二区| 综合网欧| 婷婷激情丁香| 97在线视频观看网站| 男人天堂一区二区| 免费成人在线熟妇网| 精品欧美乱码久| 强奸乱伦大香蕉| 操91| 91少妇香蕉久久精品| 天堂成人网| 亚洲天堂AV在线播放| 九九热免费国产视频婷婷伊人五月| 女人的天堂大香蕉网| 怡春院久久| 日韩色欲久久一二三四区| 992这里有精品| 99自拍B亚洲| 性交一区二区在线播放| 麻豆精品三区视频| 欧美在线视频播放| 在线 欧美 亚洲| 欧美热图99| 天天爱天天操| 亚洲 无码 偷拍| 国产野战露脸在线播放| 亚洲av影音先锋| 91精品丝袜在线观看| 丁香五月色| 日韩有码免费视频| 精品久久人妻成人网| 国产精品点击进入在线影院高清| 久久‘黄片视频| 青青草久久一区网| 青青操日韩| 色乱二区| 久草在| 亚欧无码线免费观看视频| 国产毛片精品一区二区色欲黄A片| 啊啊啊久久久视频| 亚洲三区视频| 97人人中文网| 亚洲资源站| 久久久com| 精品视频97| 七月丁香婷婷| 日本三级中国三级99人妇网站| 色香91| 天天日天天搞天天干| 啊嗯好大视频在线观看| 综合亚州欧美| 无套内射性感少妇视频| 青青草玖玖爱| 国产av又色又爽又黄| 天堂资源欧美| 人妻第一页| 亚洲欧美精品福利在线| 97国产精品久久久久 | 张柏芝国产一区在线观看| 亚洲精品视频在线| 综合大香蕉美。| 亚洲成人无码影院| 青女在线| 性爱乱伦视频免费| 亚洲aw毛茸茸在线| 亚洲毛片基地专区| 韩日精品四区| 诱惑网综合| 久久极品伊人| 色逼综合| 殴美牲| 国产一级内射高清视频| 少妇二级| 亚洲天天在线| 日韩伦理久 久久 清纯| 日韩视频中文字幕| 丝袜制服字幕在线| 日产欧美电影一区二区三区| 久操B网| 国产偷人伦激情在线观看| 成人av免费观看| 亚州欧美另类| www.久久| 久九九九九九九九热| 91在线精品| 99在线精品观看视频中文| 亚洲精品乱码久久久久久蜜桃麻豆| 久久水蜜臀亚洲AV无码精品| 国产操伦| 国产精品高朝久久久久久久| 午夜国产综合视频在线观看| 精品久久99| 综合久久久久久久久91| 久久婷婷影院| 色九久| 中文字幕在线播放2中文字幕在线观看2| 欧美96交| 人人透人人操| 国产拍偷精品网站| 久久香蕉超碰97国产精品| 情趣丝袜无码操逼视频| 亚洲AV免费在线观看| 亚洲欧美色图小说| 久久久久国产亚洲一区欧美色图日韩| 亚洲 欧美综合| 96AV精品| 手机看片91人妻| 欧美少妇内射| 操操操日本的逼| 九九久久国产精品怡红院| 天天日天天插| 亚洲福利影院一区久久| 日本A级视频| 99在线无码精品秘 入口黑人 | 精品国模无码| 97久久免费| 欧美性巨大╳╳╳╳╳高跟鞋| 老熟女综合网| 高潮内射在线| 久久伊人亚洲AV无码网站| 亚洲欧美综合网站| 中文字幕 码 自拍 视频 区| 亚洲第二页| 国产女上位好爽在线| 午夜福利1区2区3区| 97操综合| 艳美熟妇先锋一二三区| 久久久久人妻二区精品叶可怜| 狠色婷婷久久一区二区三区_| 911粉嫩人妻| 清纯唯美亚洲综合| 久久久久久久久久久久黄色 | 嗯,啊。舔我逼| 六月激情婷婷| 日本一区不卡| 国产五码丝袜屁眼| 97香蕉碰碰人妻国产欧美| 欧美18老人禁| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 熟女突然公开看18禁影片 | 性videos欧美熟妇hdx| 97久久精品不卡| 自拍视频一区在线观看| 国产农村妇女毛片精品久久| 国产日韩精品一区二区三区| 国产精品国产自产高清AV| 成人AV在线网站| 人人操天天爽| 91精品久久综合熟女| 东京太热男人的天堂久久久| 日本岛国黄色网址| 久久国产AⅤ| 九九九只有精品| 欧美色图天堂网m| 日韩啪啪网| 九九精品无码专区免费|