日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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
返回資訊列表
五月婷婷色| 少妇3P性爱自拍| 久操网无码在线| 97舔舔| 久超碰这里只有精品| 四虎国产精品永久在线囯在线 | 十八禁的黄污污免费网站| 久久黄黄| 黄色交缠性感爆操91国产精品免费一区二区三区 | 猛交交| 99re在线精品78| 久久久久久亚洲Av无码| Av色五月| 操逼片国产| 中文字幕人妻色偷偷久久皮| 亚洲丝袜二区在线| 亚洲黄色网址视频| 97超碰人操| 老熟女搡BBBB搡BBBB视频| 夜夜爽33333| nuu12国产麻豆精品| 亚洲精品国产无码高清| 久久最新视频免费观看| 一道α片欧美| 91欧美性| 最新日韩黄片| 最新制服中文第一页| 亚洲AV无码AV吞精久久久久| 欧美激情久| 久久久久国产精品久久久| 99ri在线视频| 黑人综合网| 久久99操天天日| 久操国产在线| 玖玖人人爱| 后入式免费视频| 久操B网| 亚洲成a人v欧美综合天堂下载 | 久久精品久久久久久久久| 综精品久久久aaaa| 黄视频免费| 九九九精品一区二区无码| 亚洲无码免费看| 精品一国2| 国产亚洲色婷婷久久99精品91葵花宝典 | a'v在线资源| 丁香五月天婷婷姐| 国产野战露脸在线播放| 爱丝福利| 久久黄黄| 高清国产av无码| 2017,超碰| 91 亚洲 欧洲| 精品丰满熟妇人妻一区| 91碰碰| 久久激情婷婷| 爱欲AV| 欧美日韩另类在线播放| 岛国天天午夜影院传媒网| 午夜丁香| 大黄片做爱的大的| 欧美亚洲综合高清在线| 制服诱惑亚洲一区二区三区在线观看| 狼人久草| 91艹B视频| 蜜臀久久久99久久久久 | 亚洲综合888| 秋霞无码av鲁丝片一区| 欧美成人免费在线观看| 99蜜月精品久久| 五月婷久久| 在线视频 亚洲精品| 欧美国产有色电影| 婷婷激情五月天小说网| 思思视频免费看网站| 天天摸夜夜摸| 120分钟婬片免费看| 2024年最新色情网站在线观看| 欧美乱妇狂野欧美在线视频| 亚欧韩av| 黄色AAAAA欧美| 欧美中文综合| 久久中文字幕人妻熟av女蜜柚| 天天干天天拍| 超碰精品在线| 日本操大逼| 一区二区三区免费视频入口| 91中出在线| 欧美色日本| 67914亚洲精品| 亚洲五码一区二区三区| 亚洲图片激情综合另类| 在线亚洲 欧美 日本专区| 91白嫩| 是还免费视频1727我| 久久久影院| 久热伊人| 91性高朝久久久久久久久| 人人看黄色视频| 亚洲精品尤物yw在线影院| 亚洲av影院在线观看| 超AV色女| 蜜臀Av一区二区三区| 久久黄色视频一区二区三区| 男人的天堂日本东京热| 国模精品一区二区三区苹果色戒| 亚洲欧美清纯| 久久久久密臀一区二区| 日韩人妻无码专区| 尤物一级在线免费观看| 综合自拍| 婷婷视频网| 97色97干| 日韩成人免费电影| 日本成a人v网站在线观看| 色天堂综合| 亚洲揄拍网| 欧美九九99久久精品| 久久婷色| 90后性网国产欧美| 一区二区三区探花在线观看| 思思视频免费看网站| 啊啊啊免费| 先锋女优在线观看视频| 张柏芝国产一区在线观看| 精品人妻一区二区三区免费视频| 亚洲色棕合| 欧美性视频二区三区| 国产熟女自拍| 国产9l 大屁股| 9Ⅰ超碰| 精品国产乱码久久久影院| 色香91| 亚洲熟久久| 在线 欧美 亚洲| 亚洲图片视频小说| 精品久久久av无码免费| 一个国产在线综合网站| 特级毛片特黄久久免费看| 超碰在线香蕉| 99精品成人免费看| 欧美色偷拍 | 风间由美日韩欧美久久| 欧美97网| 黑人猛交| 亚洲一区二区三区不卡国产欧美| 香蕉热人人精品| 天天综合网日韩7799| 一级特级aaaa毛片免费观看 | 精品人妻中文字幕高清| 中文高清一区二区的| 一区在线观看中文字幕| 超碰资源亚洲97| 蜜臀亚洲中文| 一本大道青青| a片久久久久久久久久久久 | 欧美色网络| 大学生美女口爆| 少妇人妻太紧太深av| 婷婷中文网| 久久精品小视频| 久9久9精品| 91情色在线| 国产无码精品成人| 亚洲一区日韩| 日日夜夜草草草| 欧美97se| 久久久亚洲Av| 六六久久日韩不卡| 狠狠干妹子| 成人怡红院| 在线看片国产精品每日更新| 天天干天天中出av| 中英熟女操女| 免费视频无码| 国产一区二区精品在线视频| 蜜桃香蕉久草精品在线| 67194无码不卡| 熟女熟妇一区二区三区视频| 中文字幕一区二区三区人妻不卡| 偷拍超碰| 日韩精品三级片长长久久| 探花视频免费观看国产专区| 蜜臀99999| 97超碰无码网| 日本久久久久久久久| av线电影| 中文字幕丰满子伦无码专区在线视频最新| 久久一二三四五六七八九区| 麻豆啪啪啪视频| 久久婷婷色| 欧美熟女妇同| 精品视频一区二区| 亚洲综合五月天婷婷丁香| 色天堂在线观看| 97干在线| 操九九九九九九| 尤物视频新赏网鲜网色诱网| 日韩性爱1级片视频| 91扒丝袜综合在线| A啊啊在线观看| 97精品人妻一二三四| 999久久久| 亚洲一区二区三区不卡国产欧美| 亚洲不卡不卡中文字幕不卡 | 亚洲啪啪综合?v一区综合精品区| 99激情视频| 91在线丝袜| 老司机深夜影院18未满| 久草精品一区 | 亚洲国产日韩欧美熟妇在线| 91美女中出| 欧美专区日本专区| 亚州色交| 天天色,天天干,天天干| 国产午夜福利视频在线| 国产丰满熟夫69mpp| 啊啊啊啊二区好大| 欧美日韩人妻精品一区二区三区| 亚洲动态色图| 十八禁的黄污污免费网站| 丁香五月婷婷五月| 熟妇高潮一区二区免费视频| 中文字幕艹艹| 国产成人一级av88| 伊人网青青| 欧美日韩在线视频网站| 国产亚洲精品第一最新| 9118禁| 色情婷婷| 亚州一区二区| 中文字幕丝袜人妻| 精品中文字幕一区二区| 欧美性少妇| 激情久久久| 色噜噜狠狠色综无码久久合欧美| 亚洲日本成人动漫| 国产精品999zyz| 婷婷久草| 日韩精品一二三四| 欧美性生活男人的天堂| 中文字幕免费在线观看| 久9久9精品| 国产三级多多影院2022国产AA一级毛片无码| 国产噜噜噜噜噜久久久久久久久| 97丝袜亚洲在线播放| 国产精品高潮久久久无码| 久草视频制服诱惑| 亚洲成人免费电影| 天天弄天天操| 97狠狠| 曰本精品久久久| 黄色电影观看久久9| 亚洲人精品久久久| 啊啊啊好湿国产一二| 免费少妇一区二区| 丁香九月婷婷| 无码操逼天堂| 中文字幕精品丝袜| 立川理惠加勒比无码| 91天天综合日韩欧美| 少妇三P| 99热91| 欧差乱伦二三| 久偷拍欧美日韩三区| 五月婷婷激情网| 久久精品国产亚洲妲己影视| 韩日欧亚a级| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 牛牛aV| 香蕉欧美| 黑人性欧美| 久久亚码| 美腿丝袜偷拍亚洲欧美| 日韩人妻大香蕉| 福利在线观看一区二区| 亚洲图片色图欧美另类| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 亚洲精品aa久久伊人| 国产精品美女视频诱惑| www.成人无码| 青草视频人妻在线观看| 欧插网站| 美女啊啊啊啊pc| 人人考人人摸人人干| 精品三级在线专区| 欧美色综合| 精品十八在线观看| 久草精品一区| 动漫区日韩区欧美区| 国产精品熟女乱伦| 亚洲情色中文字幕一区| 在线中文字幕| 精品人妻1区| 尤物视频网 刘玥| 诱惑人妻欧美一区在线播放| 激情五月天网站| 91小视频| 国产精品免费美女视频| 亚洲无码久久久久久久| 搞中出久久| 久久久555| 欧美亚洲清纯| 啊啊啊啊啊舒服| 综合网97| 中出91视频| 男人成人黄色视频在线观看免费下载| 蜜臀无码一区二区| 啊啊啊好疼| 九九九九精品一区| 91精品人妻啪啪间| avav青青草久久夜| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 国语对白露脸XXXXXX| 啊啊啊啊免费视频| 999久久久国产精品| 国产乱不卡| 九九九偷拍| 日本高清视频在线观看黄已三辽| 91蜜桃传媒精品久久久一区二区| 91N综合网在线| 欧美青青草视频| 人人九九精| 亚洲女优有码无码高清| 亚洲春色一区二区三区| 家庭乱伦国产精品| 日日摸夜夜夜夜爽| 男男H黄动漫啪啪无遮挡网站| 亚洲日韩美国人妻| 天天综合色| 久久综合九九| 伊人AAA| 蜜臀AV一区二区三区激情综合| 欧美熟妇视频| 韩日巨乳美女免费视频在线观看| 少妇色欲综合网2| 欧美激情 亚洲色图| 人妻少妇精品视频一区二区三区| 69XX一中文字幕人妻91| 殴美大黄片| 大香蕉啪啪网| 欧美色图中文字幕| 999久久芭蕾| 干超碰碰熟女| 波多野结衣先锋影音| 日本中文字幕在线视频 | 亚洲熟女人妻中文字幕一区二区| 一级黄色性爱裸体视频| 日韩久久激情精品| 真实高潮91| 中文字幕伊人| 亚洲天堂精品日韩电影| 欧美日韩香蕉| 亚洲少妇诱惑| 亚av顶级裸体一区二区三区四区五区 | 天天色综亚洲91污| 欧美久久婷| 亚洲码和欧洲精品激情系列| 色偷偷超碰亚洲| 色悠悠伊人网五月天| 中国人高清www色视频免费| 亚洲天堂AV在线播放| 色久综合| 很狠操| 手机午夜电影神马久久| 人妻aa| 夜夜操av亚洲一区二区| 91免费看中出视频| 久久国产在线一区二区| 性爱久久| 青青草久久| 日本在线观看网址| 久久久一级| 青青青操| 人人操,操人人| 国产91精品久久久久久久网曝门| 成年人一级黄色毛片大全在线观看| 天天躁日日躁AAAAXXXX国产| 五月花婷婷| 欧美激色| 福利操逼| 99re8超碰| 97在线观| 97在线精品| 久久久成人免费av电影| 日韩乱伦AⅤ| 国产亚洲色婷婷久久99精品91葵花宝典| 亚洲色图20p| 天天噜| 超碰av在线| 久久天堂网| 中文字幕亚洲永久精品| 久久伊人青青草| 国产强奸乱伦欧美| 女人的久久久| 无码国产精品96久久久久孕妇| 翔田千里av一区二区三区| 97网址97| 日本色色色视频| 国产日韩人人| 无码精品蜜桃一区二区三区ww| 99天天超碰| 亚洲国产日韩欧美熟妇在线| WWW4虎| 久久人妻| 日日干日日操五月天伦理视频| 91综合中文字幕| 在线黄页看毛片| 嗯嗯啊啊用力视频免费| 91人妻做a观看视频| 国产欧美日韩在线不卡第一页| 亚欧中文字幕在线视频| 91亚洲情色| 偷窥自拍亚洲天堂网爆| 精品一区99999| 奇米狠999| 久神马| 亚洲欧美国产中文视频| 色婷婷在线视频精品导航| 超碰人妻97| 婷婷五月成人| 欧美成人精品欧美一级乱黄一区二…| 国产视频一区二区免费| 91熟女视频网| 婷婷99狠狠躁天天躁| 人妻 欧美 中文| 少妇精品| 国产免费永久精品无码| 色娱乐色呦呦夜夜夜夜av| 上床啊啊啊| 少妇超碰在线| 看免费一级在线播放毛片| 日韩少妇丰满亚洲| 一区二区三区成人高清视频| 国产AV天美传媒一区二区三区| 欧美少妇性爱网站| 精品视频久久| 狠狠夜色午夜久久综合在线| 亚洲国产精品成人无码久久久| 一二区在线观看视频| 日本三级韩国三级99| 精品蜜乳AV免费观看| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 男人下部插入女人下部 | 丰满欧美少妇| 中国少妇XXXX做受| 国产精选视频| 日韩电影天堂视频二区三区| 99操碰| 成人国产视频在线观看| 久久精品女同亚洲女同13| 日韩人妻精品久久久久| 大黄片做爱的大的| 探花精品 一区二区| 天天看片麻豆| 九九热免费国产视频婷婷伊人| 亚洲国产婷婷在线播放| 麻豆视频一区二区| 日韩一级二级在线| 先锋精品av色鲁| 亚洲天堂人妻熟妇视频| 男人的天堂 在线一区| 亚洲图片在线| 欧美美女在线高潮999| 国产在线视视频有精品| 国产家庭乱伦表演| 91热情品| 丰满欧美少妇| 国产亚洲国产超碰| 亚洲第一免费视频| 日韩性爱小视频| 九九国产热| 啊啊啊啊啊在线观看网址| 91精品啪在线观看国产城中村| 性色亚洲| 999热日韩精品| 999九九精品| 超碰国产情侣自拍网| 麻豆这里只有精品| 久久无码一区二区二三区性色| 日本大香蕉综合网红本杳社区| 亚州综合色图| oumeizonghese,www| 一本一道人妻久久一区二区三区 | 亚洲伊人久久精品影院| www.一本大99| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 91M一社| 久久亚洲色图中文字幕| 国产成人天堂| 欧美综合网1| 亚洲精品国产精品乱码不卡| 97精品一二区| 九九热免费国产视频婷婷伊人五月| 丁香六月综合激情| 国产性爱乱伦AV| av天堂精品久久| 大屁股人妻女教师撅着屁股| 黄片www视频免费| 久久精品无码专区| 色臀AV| 日韩熟女精一区二区三区不卡| 欧美综合综合| 女优大全 - 91n| 午夜噜噜噜| 九九九不卡| 精品人妻15区| 日韩综合色网| 91色夜| 久久精品超碰| 国产一区在线播放| 国产偷拍网站| 国产乱伦亚洲| 成人免费福利网站国产| 欧美日韩国内不卡| 五月天开心网| 97精品一二区| 好屌色综合| 亚洲综合 欧美| 亚洲欧美变态| 大香蕉草草| 国产视频第2页| 亚洲色五月| 综合色图,成人综合网| 97干日韩| 91精品人妻一区二区三区蜜桃臀| 欧美大香蕉97| 少妇色综合| 人人爽夜夜玩视频| 97超碰国产亚洲精品| 欧美日韩不卡传媒| 999久久久国产精品| 国产精品久久久久久久久久久久久久吹| 日骚逼视频| 日韩亚洲欧美中文字幕| 亚洲AV麻豆Aⅴ无码电影一 | 久久草视频污视频| 97 国产精品| 一区二区三区高清| 老司机天天操| 91碰碰碰| 91电影色诱| 亚州综合色图| 欧美日韩另类字幕中文| 男人天堂东京热| 国产无码精品高清| 日韩成人精品中文字幕| 在线视频五十市| 亚洲国产97在线精品一区| 一级毛片电影免费看| 久久精品高清AV| 97天天爽| 青青草影视蜜久久| 日本高清视频xxxx| 入口操逼网站| 亚洲91亚洲| 99re6在线视频播放免费精品| 亚洲AV麻豆Aⅴ无码电影一| 美女国产一区二区久久| 亚洲精品丝袜| 人妻丰满熟妇av无码区蜜桃| 黑人精品XXX一区一二区| 亚洲九月丁香| 天天欧美欧美亚洲网| 国产女人操逼视频| 美女的肌被草喷水视频| 另类欧美色| 精品人妻av在线播放| 久久国产精品91| 校园春色美腿丝袜 | 91在线美女| 97精品人妻一二三四| 精品国产一区二区三区在线播出| 婷婷九月色| 五月开心久久AV官网| 亚洲图片欧美色| 亚洲综合精品国产一区| 人妻免费观看| 国产亚洲性生活视频播放| 欧美夜夜狠| 91模特在线观看| 乱伦Av网| 2000亚洲男人天堂| 欧美人人曰人人操人人射射| 欧美黑人猛交春色影视大全| 欧美97网| 亚洲日韩精品在线播放| 97在线日韩中文字幕| 强奸乱伦大香蕉| 狠肏骚人妻| 青娱乐休闲视频在线观看| 亚洲精品男人的天堂| 蜜桃AV天堂| 果冻国产精品麻豆成人av| 国产十八禁视频| 成人无码在线超碰网| 中文字幕在在线观看网站| 国产精品操| 一区二区三区精品黑丝白丝酒店对鸡| 亚洲中文丝袜美腿诱惑字幕| 色999五月色| 97在线公开视频| 丁香五月电影| 大香蕉综合网| 欧美最婬乱婬爆婬性视频| 中文久久久| 日韩美一区| 日本成熟少妇A∨网站| 91在线免费观看处女| 国产精品一区二区a| 大胆91| 欧美成人免费在线观看| 在线视频一区二区传媒| 欧 美 自 拍 偷 拍| 热热热热日日漂亮永久永久国产日| 久久久久亚洲三级电影| 夜夜爽爽夜夜精品视频| 亚洲综合中文字幕有码| 粉嫩AV一区二区夜夜| 激情接吻视频久久久久久| 欧美性少妇| 开心激情婷婷| 中国一级αV| 国产九区| 97av在线视频| av网站国产主播在线| 人妻少妇三级| 婷婷伊人网| 婷婷婷婷婷婷久久久久| 亚洲精品色| 性在久久久久久| 夜夜夜爽www精品视频| 亚洲天堂中文字幕无码男同| 亚洲不卡三级手机播放| 激情人妻另类| 国产精品色色| 日本熟女不卡视频| 亚洲色图欧美色图在线播放| 欧美淫穴| 最近2019中文字幕国语免费版| 玖玖爱伊人玖玖爱| 另类图片五月| 亚乱色| 国产精品扒开腿做爽爽爽视频| 久久精品天美| 无遮挡h肉动漫在线观看| 欧美中出| 欧美图片校园春色| 久久久婷| 99热在线观看| 日人妻视频91| 精品无码欧美三级| 18精品一二区| 蜜桃久久精品一区二区三区| 丝袜 亚洲 偷拍| 性爱Av免费| 91亚洲欧洲| 欧美综合狠| 安徽熟妇视频| 亚洲激情网一二三四区| 日本激情免费大片| 日韩电影在线观看网址| 91色欧美| 日韩精品国模| 91麻豆天美传媒HD| 美女诱惑爱爱| 国产乱伦亚洲| 九草九九九| 色av中文字| 日韩成人电影AV| 超碰成人公开| 人人么人人操| 性色A∨91| 日韩精品资源| 国产妇女精品视频青青草| 宅男91视频在线播放| 五月激情综合网| 国产亚洲精品一区二区三区| 亚洲毛片基地专区| 天堂网亚洲区手机版| 日韩不卡一二三四| 久久伊人青青草| 人妻日日夜夜精品| 东京热激情视频一二三区| 欧美精品自慰系列寂寞少妇| 黄色香蕉视频网站一区| 黄片www视频免费| 精品999一区二区| 四虎av在线| 久久久月天| 一本色道久久综合狠狠操| 亚州九九九精品视频| 色综和网| 日韩精品操少妇| juliaann丝袜大战黑鬼| 九九英色视频| 啊啊啊不要啊啊受不了了视频在线| 蜜桃中文字日产乱幕4区| 台欧久久精品视频| 97亚洲性爱| 后入人妻无码| 97人人爱人人乐| 变态综合色| 亚洲影视综合| 精品无码久久久久久久杏吧| 日韩少妇无码| 熟妇乱伦一区二区| 激情五月综合开心五月| 国产精品盗摄 偷窥盗摄| 99久国产精品午夜性色福利| 精品日韩人妻精品一二三区| 一二三四视频中文字幕在线看| 久久 国产 无码| 激情五月天插| 国产69精品久久久久99尤物| 操逼网站视频漫画国产| 亚洲色综合| 日本高清电影欧美色图| 五月天色图| 久久一二三四五六七八九区区| 亚洲自拍欧美色综合| 久久久九| 69一区二区三区| 日韩黄色片子| 亚洲欧美一区二区三区一猛片| 日亚韩精品视频二区三| 日日操天天操| 亚洲国内精品成人不卡| 欧美黑人与女人91| 天天做天天爱| 3028国产精品| 久久久久久午夜男人的天堂| 亚洲欧美色综合| 婷婷探花久久精品一区| 另类图片综合| 巨爆乳一区二区爆乳区| 欧美v亚洲v日韩v最新在线二区| 国产成人网址| 欧美天堂超碰97| 欧美天天综合在线| 乱伦色图网址是多少| 国产免费一区二区在线A片视频| 国产欧美一区二区| 大香蕉一人| 国产精品嫩草影院午夜两性| 欧美特大黄一级片片免费| 殴美日韩m| 久久久性少妇| 曰韩精品视频一区二区| 婷婷香蕉欧美在线一区二区三区| 久操网在线| 97欧美日韩精品| 乱伦1色页| 殴美牲| 传媒在线观看一区二区三区| 欧洲综合无码| 亚洲少妇色| 熟女AV一区| A一级色女| 人人搞人人插人人操| 人人干人人搞人人摸| 天堂日本亚洲欧美| JuliaAnnXXX888| A 在线网址| 日韩无码嘿咻黑热久| 粉嫩久久久极品| 小说区 图片区色 综合区| 国产成人精品亚洲日本| 97久久精品国产| 久久精品熟妇丰满人妻99| 狠狠色噜噜狠狠狠狠狠色综合久久| 九色 人妻 大香蕉| 女人香蕉久久毛毛片精品| 欧美综合娱乐久久| 大香蕉伊人网WWWn0n| 99久久免费看精品国产一区| 丁香六月激情| 婷婷情色五月天| 国产白丝精品在线观看| 婷婷色色五月天| 女上位精品在线| 国产成人午夜视频网址| 少妇人妻无码| 高清有码一区二区| 四虎永久在线精品免费网址| 亚洲天堂久久| 久久中文字幕一区不卡| 中文字幕55555| 韩国一级做a久久久久| 色欧美天天| 亚洲高清欧美总合| 99色视频| 91丰满| 婷婷五月成人| 78m成人视线| 婷婷色色五月| 国产精品午夜福利视频| 午夜福利在线合集| 超碰无码五月97| 欧美人妻精品一区二区| 国产视频小说| 日韩欧美中文日韩欧美色| 麻豆国产第一| 欧美黑人精品一区二区| 亚洲欧美91√| 狠狠色噜噜狠狠狠狠狠色综合久久 | 吻戏激情性巴克| 久久二| 狠狠躁AV| 操操逼视频| 情侣操 逼视频99| 一区二区三区 日韩欧美| 97jingpin| 丁香六月综合激情| 91制服丝袜| 日韩av女优在线免费一区| 精品人妻一区二区三区在线视频不卡| 天天综合~91入口| 在线午夜成人无码视频| 美女97超碰| 人人操人人干网页| 九9精品| 国产做?爰片久久毛片?片美国| 免费视频观看60秒| 东京太热久久久| 免费自拍三级综合| julia ann久久| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 色视频蜜乳| 欧美后入视频| 97最新在线播放视频| 精品久久久久久久| 久久色一区二区| 人看人人摸人人操| 久艹日日日| 五十路熟女工口 | 亚洲欧美综合| 97高清啪啪| 成人午夜小视频手机在线看| 国产成人五月天丁香花| 午夜欧美J进J出白浆流出久久久| 乱伦av国产| 另类图片天天影视| 亚洲性少妇| 亚洲午夜免费狠狠干| a片在线播放| 亚洲,欧美,综合网| 韩日男人的天堂| 天堂中文日本在线观看| 97色亚洲| 插入粉嫩少妇视频| 91是天天| 3p国产欧美99热| 国产精品内射婷婷一级二| 学生妹天天看| 骚货| 国产一级高跟丝袜| 国产无马av| 老子午夜伦不卡影院| 99在线精品观看视频中文| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 长久操视频| 九色97| 亚洲日韩国产欧美综合v| a片自拍直播视频| 亚洲操操操无码| 操人妻逼91| 91视频国品一二三区| 国产网站在线播放| 啊啊啊啊好爽好舒服一区二区易域| 情侣操 逼视频99| 久久黄黄| 精品国产精品一区二区| 亚洲成人性| 午夜小电影在线插入淫高潮| 日曰骚久久精品| 亚洲青青草| 久久久久久久久久久久黄色 | www..com操老师| 成人五月天丁香激情综合| 色网综合网| 久插综合| 一区二区三区男女操逼黄色小电影| 久久97| 大香蕉丝袜一级片| 国产在线精品偷| 中文字幕一区电影在线观看| 99re免费视频精品全部| 国产女人视频三四五区| 91N综合网| 激情另类激情| 亚洲第一男人天堂| 国产蜜臀在线| 91色综合色| 亚洲综合情色| 91国产在线精品| 啊好爽受不了无码| 4141514逼喷水三级片| 98一区二区精品| 丁香五月色| 丁香六月婷婷久久综合| 中文字幕在线观看视频www| 最新日韩黄片| 高清国产av无码| 高清无码国产亚洲| 色色色999| 九九香蕉网| www.91色| 久久麻豆一区二区| 激情丁香婷婷| 婷婷中文字幕| 亚洲天堂人妻一区二区| 国产天美欧美| 久久久久久久九九九九九九| 人妻夜夜爽天天爽麻豆三区网站 | 亚洲欧美国产精品久久久久久久| 五十路熟女在线不卡观看一区二区| 韩国嫰模上门援交视频| 国模久久在线| 久操免费电影| 蜜臀AV午夜精品久| 97碰| 性爱Av免费| 国语精品内射在线观看| 探花一区在线| 色五月综合| 亚洲日产专区| 亚洲97P| 日本不卡一区二区三区| yazhouzaixian| 青青草好吊色| 91性高朝久久久久久久久| 国产精品毛片?v一区二区三区| 大香蕉专区| 91五月天| 九九英色视频| 麻豆区久久久久亚| 78精品| 少妇高潮流水av免费| 欧亚乱色熟女一区二区| 久久综合九九| 天天弄欧美| 久久久久久九九九九九九| 97精品视频在线播放| 国产精品噜噜噜日日日| 97精品一区二区视频| 伊人久久大香线蕉无码| 亚洲美乱| 91青青在线视频| 欧美国产精品久久九九| 日本高清一区二区在线| AND人妻系列| 欧美三四五区| 一区二区三区黄色片a| 激情99| 国产精品午夜福利视频| 成·人免费午夜在线观看| 国产99久久99热这里只有精品15 | 黄色区免费观看中文字幕| 26uuu国产| 国产美女口爆吞精| 偷拍视频青青草在线视频| 人人爱人人乐人人操| 91成人精品在线播放| 久久久9品一区二区三区| 97在线欧| 国产无马在线| 99综合| 大香蕉之青青草原| 中文视频在线观看| 人人操人人狠狠操| 大肉棒导航| 亚洲色图 欧美| 久久精品性| 亚洲三级网址久久最新| 精品久久久久综合无码| 国产亚洲精品av一区| 日本不卡三级网在线播放| 欧美综合综合| 欧美日本国产日韩激情视频| 国产热RE99久久6国产精品首| 1区2区3区中文字幕日韩| 夜夜欢天天干| 女人被添高潮免费视频| 欧美亚洲厕所精品偷拍91| 少妇久久久久久| 综合婷婷| 中出20p| 日本人妻中文字幕| 久久欧美按摩999| 黄色成年| 黄色高清无码无码破解免费暗网| 99操| 超碰诱惑| 自拍偷拍2025在线观看| 亚拍在线| 亚洲一级性爱视频免费看| 2025亚洲男人天堂| 传媒在线观看一区二区三区| 97日韩超碰超碰中文字幕| 人人干人人搞人人摸| 欧美影音在线| 啪啪啪综合网| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 在线播放成人高清免费视频| 噜噜噜无码AV一级一级久久影院| 久久高清无码夜夜操| 亚洲欧美自拍偷拍| 国产久久一区二区| 亚州熟女乱伦| 人妻美腿丝袜制服诱惑综合天堂-| 久久系列| 中文字幕在线观看丝袜| 久久这里只| 丁香六月激情| 亚洲天堂2020| 夜夜嗨一区二区| 96久久久| 欧美性后入| 久久αⅴ| 老女人爆菊| 日韩性爱小视频| 久久久亚洲精品电影免费看| 国产精品人妻无码久久久互動交流 | 少妇淫妇久久久久久久| 亚洲砖码砖专无区2023| 天天情欲宗合网| 手机在线观看不卡无码av| 九九九九九九免费视频| 亚洲欧洲网站免费观看| 精品久久97| 啊啊啊不要好疼视频| 91精片| 欧美色997| 在线观看成人性爱免费小视频| 亚洲一区二区 麻豆传媒| 国产黄色 A 片免费看| 91在线国产后入风骚翘臀美女素人| 26uuu性| 国产97/欧美| 亚洲天堂电影精品一区| 日韩一级欧美一级国产一级台湾| 亚洲熟妇无码一区二区三区| 成人五月香网在线| 黑人猛交| 三级三级三级日本99| 插入粉嫩少妇视频| 玖玖婷婷五月天| 国产农村妇女精品| 日日夜夜青青草母狗| 日韩Va亚洲va欧美Ⅴa久久| 四虎免费视频| 九月色婷婷| 男人的天堂Va| www.久久爱| 哈哈操 大香蕉| 日日夜夜国产综合| 婷婷五月成人| av无线看| 啊啊啊免费视频| 99re6国产精品99re| 性色一线| 国产精品成人蜜臀AV在线| 天天影视色香欲综合网小说| 国产丸一视频| 91色综合激情| 26uuu欧美| 视频国产精品未满十八禁止在线观看| 久久97超碰| 舔舔啊| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 加勒比综合网| 精品久操| 人妻精品视频一区二区三区| av72网| JULIA人妻风俗店中出电影| 婷婷丁香成人| 乱伦av麻豆| 亚洲天堂五月天国产| 不卡视频一区蜜桃视频 | 久久99精品九九久久久婷婷| 亚洲 图片 综合91| 五月天婷婷久久| 午夜寂寞欧美| 人妻啪| 日日干天天干夜夜爽| 97超碰色色| 老熟女综合网| 久久久久久无码人妻中文字幕| 91性感网站| 精产国品一区二三产品| 日韩乱码av| 啪啪综合网| www.色婷婷色综合| 黄色视频特级毛片| 秋霞久久亚洲精品成人| 一级AV性爱| 五月丁香激情四射| 9久久久久| 亚洲人妻日日日| 久久老熟女| 欧美自拍网| 日韩精品亚洲一二三| 日韩电影免费网站麻豆视频| 久久机热| 久久久成人免费av电影| 亚洲少妇激情一区二区三区| 欧美大色交| 久久视频少妇美女| 曰韩少妇无码| Julia Annxxxxx| 台湾佬中文娱乐网久久久久久久久久com | 不卡二三区人妻少妇| 青青草大香蕉视频| 久久久啊啊啊| 人妻精品一区二区| 亚洲有码视频二区| 91欧美大片| 亚洲阿v天堂在线| 91福利网在线观看| 豆花视频操逼网址 | 久久久精品网| 看全色黄大色大片免费视频| 国产深喉视频一区二区| 国产激情视频一区区三区| 亚洲不卡三级手机播放| 综合伊人激情| 三级特黄60分钟播放| 夜间福利片1000无码| 日韩精品在线观看网站| 成人网址在线观看| 激情五月天色播| 97精品国产97久久久久久免费| 狼人综合婷婷激情四射 | 天天干,夜夜爽| 日韩天美| 91伊人影视综合| 91AV天美在线视频| 色与欲影视天天看综合网| 爱逼综合| 韩国手机不卡无码三级视频| 国产91精品福利在线| 亚洲中文字幕av| 干B视频伊人网| 久久久久9999精品九九九| 91久久精品美女高潮喷水| 亚洲人妻精品一区二区| 国产日韩无码一区二区三区久久区| 乱伦一区二区三区‘| 欧美顶级黄片AAAAA在线免费看| 久久直播国产| 日逼97| 天天看天天日天天操| 国产成人欧美一区二区三区的国产| 欧亚在线视频| 九九毛片这里只有精品| 欧美韩日精品资源| 久久久偷拍| 亚洲色图尤物视频| 久久女婷|