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

ARTICLE DETAIL

資訊詳情

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

嵌入式GPMC總線實(shí)戰(zhàn):FPGA連接、時(shí)序配置與設(shè)備樹驅(qū)動(dòng)調(diào)試

嵌入式GPMC總線實(shí)戰(zhàn):FPGA連接、時(shí)序配置與設(shè)備樹驅(qū)動(dòng)調(diào)試 在嵌入式圈子待久了你會(huì)發(fā)現(xiàn)一個(gè)規(guī)律只要是在TI的Sitara平臺AM335x、AM437x這些Cortex-A8/A9處理器上做過項(xiàng)目基本都繞不開GPMC這個(gè)名字。全稱General Purpose Memory Controller翻譯過來就是通用內(nèi)存控制器處理器的并行總線接口。它最典型的應(yīng)用場景就是用類似SRAM的時(shí)序去連接FPGA、并行AD/DA、NOR Flash或者SRAM這類外設(shè)。我最早接觸GPMC是被一個(gè)項(xiàng)目逼的FPGA和AM335x之間要高速交換數(shù)據(jù)SPI太慢UART更不用說最后只能老老實(shí)實(shí)把GPMC調(diào)通。這篇文章就把我在實(shí)際項(xiàng)目中啃GPMC的筆記整理出來包括硬件連接、設(shè)備樹時(shí)序參數(shù)、驅(qū)動(dòng)編寫和排錯(cuò)經(jīng)驗(yàn)適合正在調(diào)GPMC的同學(xué)也適合準(zhǔn)備在TI平臺接并行外設(shè)但還沒入門的開發(fā)者。1. GPMC到底是什么嵌入式工程師為什么繞不開它1.1 一句話講清GPMC的定位把GPMC想成處理器對外開放的一扇“內(nèi)存窗口”就好理解了。處理器內(nèi)部有一大片地址空間其中一塊被劃給了GPMC控制器。當(dāng)CPU訪問這塊地址空間時(shí)GPMC會(huì)把讀寫的請求自動(dòng)變成一組并行信號發(fā)送到外部引腳上。外部設(shè)備只要按SRAM接口的標(biāo)準(zhǔn)來響應(yīng)CPU就能用最簡單的方式讀寫它——不需要像I2C那樣先發(fā)設(shè)備地址、再發(fā)寄存器地址、再等應(yīng)答也不需要像SPI那樣一bit一bit地搬運(yùn)。CPU一條LDR指令下去數(shù)據(jù)就到寄存器里了整個(gè)過程對CPU來說是透明的。這也是GPMC和普通低速總線的本質(zhì)區(qū)別它的工作方式接近內(nèi)存總線而不是外設(shè)總線。對外部設(shè)備來說它像一顆SRAM對CPU來說它就是一塊可以隨機(jī)訪問的地址空間。你在代碼里寫*(volatile unsigned short *)0x08000000 0x55AA地址0x08000000正好落在GPMC的片選窗口上這行代碼就會(huì)觸發(fā)一次實(shí)實(shí)在在的并行總線寫周期。能像訪問內(nèi)存一樣訪問外部器件這是GPMC最迷人的地方。1.2 接FPGA為什么優(yōu)先選GPMC一次性把帶寬賬算明白很多人第一次選型時(shí)第一反應(yīng)是“FPGA不就是傳數(shù)據(jù)嗎用SPI不就行了”。這句話在數(shù)據(jù)量小的時(shí)候沒毛病但一旦涉及圖像采集、高速ADC采樣、基帶信號處理這類場景SPI立刻就成了瓶頸。算一筆賬假設(shè)SPI時(shí)鐘40MHz一個(gè)時(shí)鐘傳1bit8位數(shù)據(jù)就需要8個(gè)時(shí)鐘周期理論峰值也就5MB/s。再算上片選、命令開銷、軟硬件交互的間隙實(shí)際有效帶寬能到3MB/s就不錯(cuò)了。而GPMC走16位異步讀周期就算每個(gè)讀周期100ns理論帶寬已經(jīng)達(dá)到20MB/s——這還只是最普通的異步模式完全沒用到指令流水和突發(fā)機(jī)制。如果外設(shè)支持同步burst模式GPMC_CLK可以跑到100MHz16位總線一個(gè)周期傳2字節(jié)理論峰值直接跳到200MB/s的量級。這中間的差距不是一個(gè)量級而是幾十倍。當(dāng)然會(huì)有人說為什么不用DDR接口或者EMIF去擴(kuò)展存儲。這里要澄清一個(gè)概念GPMC和DDR控制器是兩套獨(dú)立的接口。DDR控制器走專用的DDR PHY時(shí)序訓(xùn)練、刷新管理都很復(fù)雜不是拿來隨便接FPGA的。GPMC是專用的并行外設(shè)總線時(shí)序可配置范圍廣、信號簡單、調(diào)試難度低最重要的是它不占DDR通道不會(huì)影響系統(tǒng)的內(nèi)存帶寬。所以在TI的Sitara平臺上接FPGA、并口AD/DA、NOR Flash這些場景GPMC幾乎是不可替代的存在。1.3 GPMC到底能接哪些設(shè)備按TI的官方定位GPMC支持以下類型的外設(shè)設(shè)備類型典型產(chǎn)品使用方式NOR Flash并口NOR、SPI轉(zhuǎn)并口芯片異步/同步讀地址隨機(jī)訪問NAND Flash大容量NANDGPMC內(nèi)置ECC/BCH引擎配合軟件做壞塊管理SRAM/PSRAM外部擴(kuò)展內(nèi)存最標(biāo)準(zhǔn)的異步SRAM時(shí)序FPGA/CPLDXilinx、Intel、紫光等把GPMC做成軟核外設(shè)的寄存器窗口最常見并行ADC/DAC高速AD/DA轉(zhuǎn)換器采樣數(shù)據(jù)可以直接被CPU信箱式讀取顯示控制器老式TFT LCD并口屏、LCD控制器利用GPMC作為顯示數(shù)據(jù)通道值得一提的是很多人以為GPMC只是拿來接NAND Flash的其實(shí)在工業(yè)控制和數(shù)據(jù)采集項(xiàng)目里GPMC接FPGA才是真正的重頭戲。FPGA內(nèi)部可以起一個(gè)SRAM接口的時(shí)序邏輯把采集到的數(shù)據(jù)放在一塊雙口RAM里CPU通過GPMC直接讀這塊RAM就完成了高帶寬的軟硬數(shù)據(jù)交換。后面要講的設(shè)備樹配置也主要以FPGA這個(gè)場景為例展開。2. 硬件設(shè)計(jì)先把引腳信號摸透再寫第一行代碼2.1 關(guān)鍵信號與連線原則GPMC的引腳非常多但如果把信號按功能分類其實(shí)很好記。地址總線GPMC_A[0:27]、數(shù)據(jù)總線GPMC_AD[0:15]這是最核心的兩組線。然后是控制信號nCS片選、nWE寫使能、nOE讀使能、nADV地址有效、nBE0/nBE1字節(jié)使能、WAIT等待信號。如果走同步burst模式還有一個(gè)GPMC_CLK時(shí)鐘輸出。連接層面的原則并不復(fù)雜片選信號nCS一個(gè)GPMC控制器最多支持8個(gè)片選CS0~CS7每個(gè)片選在地址空間中對應(yīng)一段獨(dú)立的窗口。接FPGA通常只用其中一個(gè)片選周圍的其它引腳可以保持懸空。nWE與nOE就是讀和寫的開關(guān)。外部設(shè)備必須根據(jù)這兩個(gè)引腳的時(shí)序來驅(qū)動(dòng)數(shù)據(jù)總線。FPGA側(cè)要特別注意三態(tài)控制本設(shè)備沒被選中時(shí)數(shù)據(jù)引腳必須處于高阻態(tài)否則會(huì)跟別的設(shè)備打架。nADV地址有效很多老式NOR和SRAM都靠這個(gè)信號鎖存地址。它在外設(shè)接口上不是必需的但對某些器件來說沒有nADV就沒辦法正常操作。WAIT信號這是GPMC的“剎車”機(jī)制。外部設(shè)備覺得處理不過來時(shí)可以拉低WAIT讓總線周期自動(dòng)延長。做FPGA連接時(shí)如果FPGA內(nèi)部RAM的響應(yīng)時(shí)間可能超過CPU配置的訪問周期建議一定要把WAIT用起來能省很多事。2.2 muxed和non-muxed選錯(cuò)了就是災(zāi)難GPMC的地址和數(shù)據(jù)線有兩種組織形式這在TI的寄存器里叫MUXADDDATA位。non-muxed模式下地址線是地址線數(shù)據(jù)線是數(shù)據(jù)線兩組信號完全獨(dú)立硬件設(shè)計(jì)最簡單。而muxed模式下低16位地址和數(shù)據(jù)公用同一組AD[0:15]引腳訪問時(shí)先輸出地址再由nADV鎖存然后切換成數(shù)據(jù)通道。這種模式能省引腳但時(shí)序復(fù)雜、需要外部鎖存對FPGA內(nèi)部邏輯的要求也更高。在我見過的問題里最多的一種就是硬件工程師畫板子時(shí)按muxed方式連軟件配置卻按non-muxed方式初始化。結(jié)果表現(xiàn)為每次讀寫數(shù)據(jù)都錯(cuò)位或者讀到的東西是地址信號和數(shù)據(jù)信號的混合體。排錯(cuò)時(shí)如果不先確認(rèn)軟硬件模式是否一致會(huì)繞非常大的彎子。我的建議很簡單項(xiàng)目不是特別缺引腳就一律用non-muxed模式。16位數(shù)據(jù)總線加上足夠多的地址線已經(jīng)能覆蓋絕大多數(shù)場景。muxed模式省下的那十幾個(gè)引腳通常會(huì)以幾倍的調(diào)試成本還回來。2.3 電平、上拉、走線這些“低級問題”反而最致命GPMC的I/O電壓在不同平臺上有差異AM335x的GPMC引腳電平由對應(yīng)的VDDS電源域決定可能是1.8V也可能是3.3V。接FPGA時(shí)FPGA的Bank電壓必須跟GPMC電平匹配否則輕則讀不到數(shù)據(jù)重則電流倒灌損傷器件。數(shù)據(jù)總線浮空是另一個(gè)高頻問題。如果外部設(shè)備沒有被使能數(shù)據(jù)線既沒人驅(qū)動(dòng)也沒人拉高讀回來的內(nèi)容就會(huì)是隨機(jī)電平反映在CPU眼里通常是一大片0xFF或者亂跳的數(shù)。解決方法是外加10k47k上拉電阻或者在FPGA內(nèi)部給數(shù)據(jù)IO配上弱上拉保證總線空閑時(shí)處于確定電平。PCB走線上不要大意。GPMC雖然不像DDR那樣嚴(yán)格但高速同步模式下地址線和數(shù)據(jù)線之間最好做等長處理至少不要出現(xiàn)某些線長了十幾厘米、某些線短到貼芯片這種極端不均衡的情況。地平面要連續(xù)別讓數(shù)據(jù)總線跨越分割線。異步模式可以寬松一些同步burst跑到100MHz時(shí)信號完整性就變得相當(dāng)重要了。真到了調(diào)不出來的時(shí)候先拿示波器看波形再回來審視板子設(shè)計(jì)往往比死磕代碼更快。3. 時(shí)序才是GPMC的靈魂寄存器與設(shè)備樹參數(shù)逐項(xiàng)拆解3.1 從一個(gè)具體讀周期看GPMC在干什么GPMC的整個(gè)動(dòng)作過程可以描述成一條嚴(yán)格的時(shí)間軸。以一次典型的異步讀為例地址和片選先有效。CPU發(fā)出訪問請求后GPMC把目標(biāo)地址放到地址總線上同時(shí)拉低對應(yīng)的nCS宣告“我要訪問掛在片選上的設(shè)備了”。nADV信號產(chǎn)生一個(gè)脈沖告訴外部設(shè)備“地址已經(jīng)準(zhǔn)備好”。對SRAM這類自帶鎖存的設(shè)備來說這個(gè)沿就是鎖存地址的時(shí)刻。nOE拉低讀使能生效。外部設(shè)備檢測到nOE有效后把目標(biāo)地址的數(shù)據(jù)放到數(shù)據(jù)總線上。等待一段固定的時(shí)間由access-ns等參數(shù)控制GPMC在某個(gè)采樣點(diǎn)把數(shù)據(jù)總線上的值鎖存進(jìn)內(nèi)部寄存器。nOE拉高nCS釋放一個(gè)讀周期結(jié)束。這個(gè)過程看起來很直觀但每個(gè)動(dòng)作前后的延遲都有對應(yīng)的可配置參數(shù)。嵌入式工程師做得最多的就是根據(jù)外部設(shè)備的數(shù)據(jù)手冊把這些“時(shí)間坐標(biāo)”一個(gè)一個(gè)填進(jìn)GPMC的時(shí)序寄存器。設(shè)備樹方式只是把寄存器換算成了更好讀的納秒單位。3.2 設(shè)備樹時(shí)序?qū)傩灾饌€(gè)說清楚在Linux設(shè)備樹里GPMC子節(jié)點(diǎn)的時(shí)序參數(shù)全部以gpmc,開頭后綴為納秒。下面這張表是我在實(shí)際項(xiàng)目里最常用的一組設(shè)備樹屬性作用參考設(shè)置原則gpmc,cs-on-ns片選信號建立時(shí)間一般設(shè)0片選和地址同時(shí)有效gpmc,cs-rd-off-ns讀周期片選釋放時(shí)間不能小于讀寫周期的外部響應(yīng)需求gpmc,cs-wr-off-ns寫周期片選釋放時(shí)間同上gpmc,adv-on-ns地址有效信號建立時(shí)間一般設(shè)0或很小gpmc,adv-rd-off-ns讀周期地址有效釋放時(shí)間留足地址保持時(shí)間gpmc,adv-wr-off-ns寫周期地址有效釋放時(shí)間同上gpmc,oe-on-ns讀使能拉低時(shí)間地址穩(wěn)定后再拉OEgpmc,oe-off-ns讀使能釋放時(shí)間保證OE低電平脈沖寬度gpmc,we-on-ns寫使能拉低時(shí)間地址穩(wěn)定后再拉WEgpmc,we-off-ns寫使能釋放時(shí)間保證WE低電平脈沖寬度gpmc,rd-cycle-ns讀周期總時(shí)間必須大于所有讀時(shí)序需求之和要留余量gpmc,wr-cycle-ns寫周期總時(shí)間同上寫周期同理gpmc,access-ns數(shù)據(jù)采樣點(diǎn)時(shí)間決定GPMC在哪一刻采集數(shù)據(jù)總線最關(guān)鍵gpmc,page-burst-access-ns頁/突發(fā)模式下每次額外訪問時(shí)間只有burst模式用到需要注意不同內(nèi)核版本對屬性的命名略有差異比如有些版本用gpmc,xxx-off-ns有些地方用ti,min-access-time-ns做輔助限制。以你手頭內(nèi)核Documentation里的omap-gpmc.txt為準(zhǔn)。但概念是共通的你要理解的是“這個(gè)參數(shù)決定哪個(gè)信號在哪個(gè)時(shí)刻動(dòng)作”而不是死記某一個(gè)字符串。3.3 手把手計(jì)算一組可用的時(shí)序參數(shù)假設(shè)FPGA側(cè)的數(shù)據(jù)手冊給了下面這組要求片選有效后地址穩(wěn)定地址建立時(shí)間最小10ns讀使能nOE有效后數(shù)據(jù)必須在60ns內(nèi)出現(xiàn)在總線上數(shù)據(jù)保持時(shí)間要求nOE釋放后5ns讀脈沖寬度OE低電平要求不低于40ns地址保持時(shí)間要求不低于5ns。現(xiàn)在要配置GPMC的讀周期我會(huì)這樣計(jì)算片選CS和地址同時(shí)有效所以gpmc,cs-on-ns 0。地址穩(wěn)定需要10ns讀使能不要拉得太早所以gpmc,oe-on-ns 10。讀脈沖寬度要40ns那么在OE有效40ns后釋放gpmc,oe-off-ns 50。數(shù)據(jù)從OE有效開始最長60ns出現(xiàn)而OE在50ns處就釋放了GPMC如果也在50ns處采樣就太早了。這里需要把采樣點(diǎn)gpmc,access-ns放到數(shù)據(jù)手冊允許的極限附近也就是60ns附近。但為了安全我通常會(huì)把OE釋放時(shí)間再往后推一點(diǎn)比如gpmc,oe-off-ns 80這樣采樣點(diǎn)設(shè)在gpmc,access-ns 70既能保證數(shù)據(jù)到位又有余量。讀周期總時(shí)間必須大于CS釋放時(shí)間gpmc,rd-cycle-ns 100留出20%以上的余量。所以初版配置會(huì)是gpmc,cs-on-ns 0; gpmc,cs-rd-off-ns 90; gpmc,adv-on-ns 0; gpmc,adv-rd-off-ns 20; gpmc,oe-on-ns 10; gpmc,oe-off-ns 80; gpmc,access-ns 70; gpmc,rd-cycle-ns 100;寫周期也是同理只不過關(guān)注的是WE脈沖寬度和數(shù)據(jù)建立時(shí)間。最后再強(qiáng)調(diào)一句初版參數(shù)一定不要追求極限。先把所有時(shí)間放寬一倍讓系統(tǒng)跑起來確認(rèn)軟硬件邏輯全部正確之后再拿示波器一點(diǎn)一點(diǎn)壓縮。很多項(xiàng)目調(diào)不出來不是因?yàn)榉桨覆恍卸且簧蟻砭桶芽偩€時(shí)序壓到了芯片的臨界值。4. 實(shí)操把設(shè)備樹和驅(qū)動(dòng)跑起來4.1 設(shè)備樹節(jié)點(diǎn)與pinctrl配置在Linux內(nèi)核里GPMC控制器本身是一個(gè)節(jié)點(diǎn)每個(gè)外部設(shè)備則是掛在它下面的子節(jié)點(diǎn)。拿AM335x舉個(gè)例子完整配置長這樣am33xx_pinmux { gpmc_pins: gpmc_pins { pinctrl-single,pins 0x30 0x38 /* GPMC_AD0 - MODE0, INPUT */ 0x34 0x38 /* GPMC_AD1 - MODE0, INPUT */ /* ... GPMC_AD2~AD15 同理 ... */ 0x78 0x28 /* GPMC_CSN0 - MODE0, OUTPUT */ 0x7c 0x28 /* GPMC_OEN_REN - MODE0, OUTPUT */ 0x80 0x28 /* GPMC_WEN - MODE0, OUTPUT */ 0x84 0x28 /* GPMC_ADVN_ALE - MODE0, OUTPUT */ ; }; }; gpmc { status okay; pinctrl-names default; pinctrl-0 gpmc_pins; /* CS0映射到CPU地址0x08000000范圍256MB */ ranges 0 0 0x08000000 0x10000000; fpga0,0 { compatible vendor,my-fpga; reg 0 0 0x10000; /* CS0偏移064KB空間 */ bank-width 2; /* 16位數(shù)據(jù)總線 */ gpmc,cs-on-ns 0; gpmc,cs-rd-off-ns 100; gpmc,cs-wr-off-ns 100; gpmc,adv-on-ns 0; gpmc,adv-rd-off-ns 30; gpmc,adv-wr-off-ns 30; gpmc,oe-on-ns 10; gpmc,oe-off-ns 80; gpmc,we-on-ns 10; gpmc,we-off-ns 80; gpmc,rd-cycle-ns 110; gpmc,wr-cycle-ns 110; gpmc,access-ns 80; gpmc,page-burst-access-ns 30; }; };這里ranges的意思是子節(jié)點(diǎn)訪問地址0x0時(shí)父總線看到的是0x08000000映射范圍0x10000000即256MB。FPGA子節(jié)點(diǎn)只在CS0窗口內(nèi)占64KB空間reg 0 0 0x10000的三個(gè)字段分別是片選號、片選內(nèi)偏移、空間長度。pinctrl的引腳偏移量每個(gè)平臺各不相同我給的0x30這類數(shù)值只是示意。實(shí)際做板子時(shí)必須對照對應(yīng)芯片的TRM翻出GPMC引腳的具體Pad配置然后再填寫。AM335x上GPMC相關(guān)引腳默認(rèn)就是模式0但有些引腳的上下拉和輸入輸出方向需要手動(dòng)設(shè)置好否則信號根本出不來。4.2 不寫驅(qū)動(dòng)先devmem驗(yàn)證硬件通路驅(qū)動(dòng)開發(fā)最忌諱的就是一上來就寫大段代碼然后出了問題不知道是設(shè)備樹錯(cuò)了、引腳配置錯(cuò)了還是驅(qū)動(dòng)邏輯錯(cuò)了。正確做法是先用devmem工具把整條通路打通。開發(fā)板正常啟動(dòng)進(jìn)入Linux后執(zhí)行下面的命令# 讀CS0首地址的16位數(shù)據(jù) devmem 0x08000000 16 # 向CS0首地址寫入0x55AA devmem 0x08000000 16 0x55AA # 再讀回來驗(yàn)證 devmem 0x08000000 16 # 連續(xù)讀幾個(gè)不同偏移驗(yàn)證地址譯碼 devmem 0x08000010 16 devmem 0x08000020 16驗(yàn)證的時(shí)候有幾點(diǎn)要注意剛上電時(shí)讀0x08000000如果讀回0xFFFF且后續(xù)一直不變大概率是數(shù)據(jù)總線浮空或者CS沒有正確映射。寫入0x55AA后再讀回0x55AA只能說明讀寫通路正常。想驗(yàn)證16根數(shù)據(jù)線是否全部連通建議寫0xAAAA、0x5555、0xF0F0這類交替方波數(shù)據(jù)。如果有某一位固定懸空讀回來的值會(huì)出現(xiàn)明顯的位模式異常。地址線是否連對可以間隔寫入不同偏移然后讀回確認(rèn)FPGA側(cè)抓到的地址和CPU發(fā)出去的一致。devmem讀不到數(shù)據(jù)不要急著去懷疑驅(qū)動(dòng)先用示波器掛在nCS和nOE引腳上看波形。一個(gè)正常的訪問周期應(yīng)該能觸發(fā)一次明確的片選和讀使能脈沖。如果CPU執(zhí)行了讀命令示波器上卻沒有任何波形那就是設(shè)備樹映射或引腳復(fù)用配置的問題如果波形有但數(shù)據(jù)不對再回頭檢查FPGA時(shí)序。4.3 一個(gè)最小字符設(shè)備驅(qū)動(dòng)模板devmem驗(yàn)證通過后基本可以確定硬件側(cè)沒大問題了。接下來就可以寫正式的驅(qū)動(dòng)。下面是我常用的一個(gè)最簡單模板直接通過platform_driver匹配設(shè)備樹中的FPGA節(jié)點(diǎn)#include linux/module.h #include linux/platform_device.h #include linux/io.h #include linux/of.h #include linux/of_address.h struct fpga_dev { void __iomem *base; }; static int fpga_probe(struct platform_device *pdev) { struct resource *res; struct fpga_dev *priv; priv devm_kzalloc(pdev-dev, sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM; res platform_get_resource(pdev, IORESOURCE_MEM, 0); priv-base devm_ioremap_resource(pdev-dev, res); if (IS_ERR(priv-base)) return PTR_ERR(priv-base); dev_info(pdev-dev, GPMC FPGA base: %pa\n, res-start); /* 測試讀寫 */ writew(0x55AA, priv-base 0x00); dev_info(pdev-dev, read back: 0x%04x\n, readw(priv-base 0x00)); platform_set_drvdata(pdev, priv); return 0; } static const struct of_device_id fpga_of_match[] { { .compatible vendor,my-fpga }, { } }; MODULE_DEVICE_TABLE(of, fpga_of_match); static struct platform_driver fpga_driver { .probe fpga_probe, .driver { .name my-fpga, .of_match_table fpga_of_match, }, }; module_platform_driver(fpga_driver); MODULE_LICENSE(GPL);這里有幾個(gè)容易踩的坑第一platform_get_resource(pdev, IORESOURCE_MEM, 0)拿到的資源對應(yīng)的是設(shè)備樹里reg屬性聲明的地址區(qū)間。所以reg描述的范圍一定要和FPGA實(shí)際占用的寄存器窗口一致。第二訪問GPMC映射后的地址一定要用readw、writew、readl、writel這一組訪問函數(shù)而不是直接解引用volatile指針。ioremap提供的內(nèi)存通常是strongly-ordered映射直接服用沒問題但用訪問函數(shù)能在不同ARM平臺上獲得更好的移植性和緩存一致性保障。第三讀寫時(shí)序上GPMC總線不存在cache一致性問題因?yàn)檫@塊地址是外設(shè)內(nèi)存映射不走CPU的DMA一致性協(xié)議。但如果后面引入了DMA傳輸就要用dma_alloc_coherent或dma_map_single來管理緩沖區(qū)不能直接把kmalloc的內(nèi)存丟給DMA。4.4 從異步到同步burst的提速思路異步模式下GPMC的帶寬再高也有上限因?yàn)槊總€(gè)周期都在等OE/WE的脈沖序列走完。想進(jìn)一步提速就要上同步burst模式。這時(shí)候GPMC輸出一個(gè)GPMC_CLK時(shí)鐘外設(shè)按照這個(gè)時(shí)鐘邊沿連續(xù)輸出或接收多個(gè)數(shù)據(jù)一次總線訪問就能搬運(yùn)一大塊數(shù)據(jù)。設(shè)備樹中開啟同步burst需要在子節(jié)點(diǎn)增加gpmc,sync-clk-ps等屬性把同步時(shí)鐘周期配好同時(shí)把gpmc,rd-cycle-ns等異步參數(shù)朝著burst時(shí)序方向調(diào)整。FPGA側(cè)的改動(dòng)也不小需要實(shí)現(xiàn)一個(gè)簡單的狀態(tài)機(jī)外部地址在nADV階段被鎖存之后每來一個(gè)時(shí)鐘沿FPGA內(nèi)部地址自增一次同時(shí)把數(shù)據(jù)放到總線或從總線采走。我的經(jīng)驗(yàn)是burst提速放在最后做。先把異步模式全部調(diào)通數(shù)據(jù)讀回穩(wěn)定然后才引入同步時(shí)鐘一次只改動(dòng)一個(gè)變量。這樣就算崩了也能快速定位是時(shí)鐘相位問題、burst長度配置問題還是FPGA狀態(tài)機(jī)bug。很多團(tuán)隊(duì)把異步和burst一起改出了錯(cuò)根本無從下手。5. 踩坑記錄與排查技巧5.1 讀回0xFF先查硬件再查軟件GPMC調(diào)試中讀回0xFF占掉了我至少三分之一的時(shí)間。這個(gè)錯(cuò)誤看似簡單背后原因卻五花八門。最常見的原因是數(shù)據(jù)總線浮空。外部設(shè)備沒有被片選選中或者FPGA內(nèi)部邏輯還沒起來總線上的引腳全部處于高阻態(tài)上拉電阻把電平拉高讀回來自然就是0xFF。排查方法是拿萬用表量GPMC_AD引腳的電平如果全是高電平說明總線空轉(zhuǎn)下一步要查CS信號有沒有確實(shí)拉低。第二個(gè)高發(fā)原因是設(shè)備樹里片選窗口配置錯(cuò)誤。子節(jié)點(diǎn)的reg和父節(jié)點(diǎn)的ranges對應(yīng)不上CPU訪問的地址根本沒映射到GPMC的CS上。這時(shí)候訪問地址時(shí)示波器上看不到任何CS脈沖讀操作實(shí)際訪問的是一段空洞內(nèi)存。還有一個(gè)容易被忽略的坑是FPGA側(cè)的片選譯碼。FPGA內(nèi)部如果只做了部分地址譯碼或者把CS0和CS1的窗口共用了也會(huì)出現(xiàn)某些偏移讀回固定值的情況。遇到這種問題我的做法是寫一個(gè)循環(huán)把CS0窗口內(nèi)前幾KB每個(gè)地址都讀一遍打印出數(shù)據(jù)分布。如果是全0xFF基本就是總線層問題如果有些地址有反應(yīng)、有些沒有那就是地址譯碼問題。5.2 偶發(fā)錯(cuò)值與時(shí)序余量有一個(gè)項(xiàng)目讓我印象特別深。板子正常起來后讀FPGA里的寄存器90%的時(shí)候值都是對的但偶爾會(huì)冒出一次錯(cuò)誤數(shù)據(jù)。最初的排錯(cuò)方向全錯(cuò)了懷疑FPGA邏輯bug懷疑數(shù)據(jù)線受干擾甚至懷疑電源紋波。最后拿示波器對比波形才發(fā)現(xiàn)問題純屬時(shí)序余量不足。當(dāng)時(shí)的gpmc,rd-cycle-ns配置成了80ns表面上看FPGA數(shù)據(jù)手冊寫的最大讀取時(shí)間是60ns80ns應(yīng)該夠。但實(shí)際電路里存在PCB走線延遲、FPGA內(nèi)部組合邏輯延遲、芯片溫度漂移所有因素疊加起來80ns就變得非常緊張。某個(gè)溫度點(diǎn)或者電壓波動(dòng)稍微大一點(diǎn)數(shù)據(jù)到達(dá)GPMC采樣點(diǎn)的時(shí)刻就晚了那么幾納秒于是偶發(fā)錯(cuò)值就出現(xiàn)了。解決方案很簡單把gpmc,rd-cycle-ns放寬到130nsgpmc,access-ns也同步后移。整條總線速度雖然降了但系統(tǒng)穩(wěn)定了。后來做性能優(yōu)化時(shí)才一檔一檔往回壓每壓一檔就做長時(shí)間加壓測試。這里有個(gè)經(jīng)驗(yàn)只要發(fā)現(xiàn)數(shù)據(jù)偶發(fā)錯(cuò)誤第一反應(yīng)應(yīng)該是放寬時(shí)序而不是去懷疑芯片壞了或者代碼邏輯錯(cuò)了??偩€時(shí)序是物理信號偶發(fā)錯(cuò)誤絕大多數(shù)是建立時(shí)間或保持時(shí)間不夠。5.3 muxed模式的幾個(gè)翻車點(diǎn)上面提過muxed模式容易踩坑這里展開說幾個(gè)具體的翻車現(xiàn)場。第一個(gè)是地址鎖存時(shí)機(jī)不對。muxed模式下低16位地址在總線訪問最開始就出現(xiàn)在AD[0:15]上需要外部設(shè)備在合適的邊沿鎖存這個(gè)地址。如果FPGA側(cè)把鎖存邊沿選錯(cuò)了比如用了nADV上升沿而GPMC實(shí)際下降沿才撤走地址鎖存到的地址就會(huì)歪掉。排查時(shí)可以固定寫幾個(gè)不同的地址偏移讀數(shù)據(jù)看看地址錯(cuò)亂有沒有規(guī)律性。如果偏移0x00和0x01的數(shù)據(jù)一樣、0x02和0x03一樣那多半是LM位對不齊。第二個(gè)是總線方向切換。muxed模式里AD線既要輸出地址又要傳輸數(shù)據(jù)中間存在方向切換。如果切換間隙沒有留足時(shí)間地址線剛撤走馬上被外部設(shè)備驅(qū)動(dòng)數(shù)據(jù)兩條驅(qū)動(dòng)源就會(huì)短暫碰撞造成電流尖峰和邏輯混亂。GPMC內(nèi)部有bus turnaround機(jī)制但設(shè)備樹參數(shù)里要留好這個(gè)間隔比如在地址有效撤銷后、數(shù)據(jù)采樣前留出足夠的緩沖區(qū)。第三個(gè)是軟件和硬件模式不匹配。這個(gè)最無解因?yàn)榇a看起來完全正常讀數(shù)據(jù)卻怎么都不對。調(diào)試時(shí)先確認(rèn)設(shè)備樹里有沒有顯式配置muxed模式再看原理圖上的接線方式。GPMC寄存器里MUXADDDATA位和原理圖不一致一切分析都白搭。我的習(xí)慣是硬件設(shè)計(jì)評審時(shí)就把這個(gè)問題當(dāng)面和硬件工程師確認(rèn)好寫成會(huì)議紀(jì)要避免后面互相扯皮。5.4 當(dāng)FPGA工程師和驅(qū)動(dòng)工程師互相對峙時(shí)做GPMC聯(lián)調(diào)最經(jīng)典的場面就是FPGA工程師和驅(qū)動(dòng)工程師互相對峙。驅(qū)動(dòng)工程師拿著設(shè)備樹配置說“我這邊時(shí)序都是按手冊寫的沒問題?!盕PGA工程師拿著邏輯分析儀抓到的波形說“你看這個(gè)OE的下降沿和數(shù)據(jù)變化幾乎同時(shí)肯定是你驅(qū)動(dòng)配置不對?!边@種事我經(jīng)歷了幾輪后總結(jié)出一個(gè)順手的流程第一步先確認(rèn)過去的是否是“同一張波形圖”。GPMC時(shí)序參數(shù)以納秒為單位兩邊最好坐在一起把示波器的波形截圖放大到同一時(shí)間尺度把每個(gè)事件打上標(biāo)簽比如“CS有效”對應(yīng)時(shí)鐘t0“OE有效”對應(yīng)t1“數(shù)據(jù)出現(xiàn)”對應(yīng)t2“GPMC采樣點(diǎn)”對應(yīng)t3。一張圖把所有時(shí)間坐標(biāo)列出來矛盾立即清晰。第二步把驅(qū)動(dòng)實(shí)際的配置參數(shù)打印出來而不是看代碼里寫了什么。代碼里的值可能被內(nèi)核、bootloader或者pinctrl影響實(shí)際生效的可能不一樣。在fpga_probe里把讀回的GPMC_CONFIG寄存器全部打印出來和期望值對比一眼就能看出問題。第三步做一個(gè)“最小驗(yàn)證用例”。比如先讓驅(qū)動(dòng)只讀固定地址一個(gè)寄存器讓FPGA側(cè)只在那個(gè)地址上輸出固定常量0x5A5A。如果這樣都能讀錯(cuò)那說明總線物理層和時(shí)序問題如果固定地址讀對了但隨機(jī)地址會(huì)錯(cuò)那就是地址譯碼或bus turnaround問題。一個(gè)最小用例可以把聯(lián)調(diào)問題快速隔離。5.5 調(diào)試速查表把上面所有問題收斂成一張表掛在工位上非常管用現(xiàn)象可能原因排查方向讀回?cái)?shù)據(jù)全是0xFF數(shù)據(jù)總線浮空、外部設(shè)備未使能量AD引腳電平查nCS是否拉低查上拉電阻讀回?cái)?shù)據(jù)全是0x00數(shù)據(jù)線被強(qiáng)下拉或FPGA輸出驅(qū)動(dòng)能力不夠查FPGA IO驅(qū)動(dòng)強(qiáng)度、OE方向、外部下拉讀/寫偶發(fā)出錯(cuò)時(shí)序余量不足、電源波動(dòng)、信號質(zhì)量差放寬rd-cycle/wr-cycle觀察波形找臨界點(diǎn)寫入后讀回不變WE脈沖過窄、FPGA內(nèi)部鎖存沿不對加寬WE低電平時(shí)間核對FPGA握手邊沿地址錯(cuò)亂muxed/non-muxed模式不匹配、地址鎖存沿錯(cuò)誤核對原理圖與寄存器配置固定地址讀常量訪問時(shí)系統(tǒng)卡死地址映射越界、訪問了不存在的窗口嚴(yán)格檢查ranges和reg避免空洞訪問同一地址有時(shí)對有時(shí)錯(cuò)總線仲裁/方向切換未留間隔加大bus turnaround檢查FPGA三態(tài)控制與FPGA握手失敗WAIT信號沒接或沒配置啟用WAIT監(jiān)控降低同步時(shí)鐘關(guān)于調(diào)試習(xí)慣最后說兩句在GPMC上栽過跟頭之后我養(yǎng)成了兩個(gè)習(xí)慣。第一調(diào)GPMC一定先架好邏輯分析儀或者示波器再動(dòng)代碼不要憑感覺調(diào)參。第二調(diào)試初期所有時(shí)序全部放寬等全鏈路通了再一點(diǎn)一點(diǎn)壓。尤其是第一次做GPMC接FPGA的新項(xiàng)目先保證系統(tǒng)可靠再談性能永遠(yuǎn)比一開始就追求極限參數(shù)靠譜得多。TI的GPMC手冊內(nèi)容龐雜但核心就是那么幾個(gè)時(shí)間點(diǎn)把這些時(shí)間點(diǎn)吃透剩下的事情都會(huì)順利很多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
约操熟妇| 国产乱子伦一区二区三区免看| 中文字幕在线免费观看2| 国产视频一区二区在线| 午夜精品一区二区三区三上悠亚| 乱欲一区二区| 国产操操日韩三级黄| 亚洲黄色电影| 少妇人妻激情四射| 粘花网06av视频| 五月天激情小说| 老司机射| 国产亚洲色婷婷久久99精品91| 亚洲日韩视频二区| 日本影视久久免费| 欧美大的香蕉有线电视视频| 亚洲影视第一页| 亚洲性少妇| 97青青操视频| 午夜性| 97色干| 亚洲成人福利电影免费| 黑人黄片在线免费观看| 久久婷婷色| 啪啪一区| 日韩性色b| 中文字幕日本久久| 免费观看有码高清视频| 香蕉久久国产AV一区二区| 亚洲日韩美国人妻| 亚洲经典啪啪| 亚洲欧美经典一区二区 | 超碰在线91| 激情干在线| 91精品无码人妻系列| 狠狠久久手机视频精品| 黄色欧美性爱视频| 日本亚洲熟女视频| 人人爽天天爽| 久久久亚洲精品电影免费看| 亚洲精品久久久久久久久豆丁网| 国产后入精品| 亚洲天堂另类小说男人| 日韩传媒在线| 日韩 欧美 国产 麻豆| 精品无码人妻一区二区免费蜜桃| 偷拍亚洲视频一区二区三区四区| 99999亚洲另类| 在线啊啊啊| 99热欧美| 97碰| 亚洲无码?第一页| 国产aⅴ无码片毛片一级网站| 日韩高清黄片| 乱伦AVxx| 丰满搜索结果 -第18页- 久久高清无码| 国产极品999| 嗯啊免费视频| 久久久78| 大学生美女口爆| 日本国产亚洲一区在线观看| 国产精品自在自拍视频| 久久久久久久九九九九九九| 很很很很操| 伊人96在线| 欧美综合色图网| 国产白丝av| 人妻丰满熟妇一区二区三| 国产精品亚洲高清在线| 亚洲激情AV| 精品大久久| 97在线日韩中文字幕| 欧美综合网在线| 天天夜躁日日躁狠狠2002| 亚洲,日韩,欧美,成人播放| 亚洲欧洲综合视频在线| 天综合网欧美| 午夜视频久久久久一区| 婷婷丁香五月综合| 亚洲图片视频小说| 99这里只有精品国产| 另类一区| 久久亚洲不卡一区二区三区| 夜夜高潮夜夜爽国产伦精品| 亚洲国产一级黄色视频| 丁香五月天堂| 天天射夜夜| 青青在线视频日韩欧美| 日本理论在线| 欧美97se| 亚洲古典另类欧美在线| 1区2区3区中文字幕日韩| 美女性91| 日本在线视频导航| 激情小说亚洲视频| aaaa少妇高潮大片| 无码久| 97超碰色色| 91久久久久久久久18| 啊啊啊啊二区好大| 岛国激情视频软件| 69视频福利导航| 丁香七月婷婷| 极品五月天噜噜| 欧美 日韩第一性色| 2017人人操,人人摸| 国产不卡片| 蜜臀99久久精品久久久久久| 亚洲中文字幕精品久久久久久直播| 九九九久久久久| 日本色日夜干| 久久手机好看网站| 国产野战露脸在线播放| 欧美少妇性乱| 天天操夜夜嗨| 亚洲人人夜夜澡人人爽| 性开放中文AV高清无码免费看| 91欧美偷拍| 91P0RNY大屁股人妻| 91狠| 国产精品久久久吖| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 91亚洲人| 97资源制服丝袜| 人人妻人人澡人人爽久久av| 成人无码专区精品视频| ,成人免费啪啪视频| 日欧美色| 国产精品999zyz| 国产精品高潮久久AV| 小日子操bb在线看| 在线小说视频一区| 99久久九九| 又大又大又大又粗爽高潮观看| 人人天天欧洲| 九九视频黄色片| 97色视频在线| 日操粉逼逼| 九99久久| 五十路熟女工口| 国产欧美精选激情视频| 精品无码产区一区二| www网站黄| 九九九九亚洲| 欧美在线55555| 思思热免费视频观看| 97久久超碰日韩精品| 亚洲欧洲小说图片视频 | 蜜桃臀av在线观看| 99操| 一区二区三区 日韩欧美| 呻吟 欧美 日本 中出| 中文字幕在线观看视频www| 伊人久久AV诱惑悠悠| www.四虎在线| 五月天久久久| 三级色综合| 78超碰| 国产亚洲欧洲在线观看| 女人高潮抽搐喷水视频网站| 亚洲国产美女久久久久| 九九九九九九综合| 小草av不卡亚洲二区| 欧美十八禁在线看| 91色人妻| 亚洲 日本 不卡| 九一亚洲国产免费| 色色色999| 2021国产成人精品久久| 日韩欧美~中文字| 欧美精品 - 91爱爱| 色爱综合网| 国产精品分类在线观看| 美女91网| 男人把坤坤插入女人的下体| 久久久久骚| 亚洲欧洲国产综合av| 日本成a人v网站在线观看| 免费超碰97久久| 丝袜制服字幕在线| 激情图片伦理国产一区二区日韩| 色五月婷婷在线| 亚洲 自拍偷拍 欧美| 精品78| 97超碰影音| 龙兴卡官方查询| 超碰爽人妻熟女Av| 激情开心五月天| 在线v中文字幕一区二区三区| 家庭乱伦麻豆| 欧美成97爱| 校园春色欧美| 手机久操欧美综合色码| 男人的天堂2018.| 精品久久久久久亚洲| 久久香蕉综合一本到3atv| 波多野结衣AV无码一区| 小说区 图片区色 综合区| 视频二区美腿制服人妻欧美| 97久久国产亚洲精品超碰热| 99色日| 偷拍亚洲高清图片| 欧美一区二区三区大综合| 男人的天堂啪啪| 蜜乳av首页| 欧美啪啪女女| 综合熟女| 欧美综合97www| 九九在线精品| 淫妻综合网| 中文字幕第页| 综合色图,成人综合网| 极品丝袜无码| 中文字幕在线观看网页| 麻豆天美制片厂网站视频| 操香逼| 国产成人主播| 9999九九九久久久| 色婷婷一区二区三区久久午夜成人不| 一级免费精品| 久久黄人人爽视频| 超碰在线人人射| aa片毛片| 亚洲高清无码在线桃色| 无套内射性感少妇视频| 亚洲无码99| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 免费视频a级毛片免费视频| 亚洲综合成人网| 五月色综合| 嗯嗯,啊啊,国产精品| 亚洲情色一区综合| 亚洲性感丝袜诱惑在线观看| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 九九色婷婷| 久超碰在| 国产久久久久影院老熟女| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 国产无码精品久久久久久| 人人 操人人 操人人| 国产精品极品美女视频| 思思热在线视频精品| 狼天天狼天天大香蕉| 岛国人妻少妇av在线观看| 中文字幕av丝袜| 欲香欲色综合天天伊人| 99视频这有这里有精品| 日本青青草在线| 国产视频小说| 日韩欧无码一区二区三区免费不卡| 精品久久无码午夜福利| 婷婷色五月激情| 久久9久9久99久9久9| 午夜AV污污污| 男人女人18禁片免费看网站| 国产精品蜜乳AV| 九九热精品在线| 久久久久斤小| 热思思免费视频| 乱老女人一区二区视频| 97碰碰日本乱偷人妻中文的| 久久六六| 色色无码| 欧美18老人禁| 免费中文综合精品| 激情久久久| n1038 一二三区| 久久大香蕉97| 黄色视频特级毛片| 中文字幕天天操| 亚洲精品欧洲色| 自拍偷拍 高清无码| 久久久久骚| 97 国产精品| 91精品微拍福利| 天堂九九九九九九九九九| 国内成人圈中文字幕无码视频| 国产精品视频内谢女人| 伊人亚洲国产一成人久久精品,久久| 色悠久久久av| 手机在线中文字幕国产 | 18禁久极品美女久久哦哟呀!| 91第一页| 高清无码网址| 精品人妻一区二区三区四区| 婷婷五月天影院| 呻吟 欧美 日本 中出| 青娱乐国产精品| 色www精品视频在线观看| 国产又粗又大硬免费色网视频| 亚洲激情网| 亚洲第一页综合在线| 亚洲无吗在线视频| 伊人在线大香蕉视频久久| 国产一级特黄大片处女| 日韩 欧美 校园一区| 老司机福利青青草| 欧美亚洲影视| 欧美aa一级片| 秋霞鲁丝午夜无码一区二区三| 国产成人 综合亚洲 天堂| 不卡码视频| 国产亚洲99久久精品熟| 韩国三级三级BD在线| 嫩草在线视频| 久久久久久中文| 色色色色网站| 九热中文字幕| 亚洲中文字幕日产无码久久| 韩日性爱av| 欧美青青草视频| 中文字幕在线高清男人的天堂| 亚洲双插| 宅男91视频在线播放| 久久产精品一区二区三区电影| 久久大香蕉手机高清| 无码一区免费在线不卡| 日本新免费二区三区| 亚洲成熟国产精品美女| 中日韓欧美高清| 五月婷婷hd| 欧美一区二区三区蜜桃| 97综合国产| 亚州综合色图| 久99久视频| 极品白嫩美少妇在地板上位骑射淫水泛滥| 91在线视频免费中出| 粉嫩粉嫩一区性色AV片| 亚洲欧美日韩不卡人妻| 韩日巨乳美女免费视频在线观看| 91丨九色丨熟女高潮| 国产免费黄色一级大片| 欧美激情内射| 999熟女精品| 国产不卡精品91| 青青操综合网| 黄色操人| 神马久久午夜| 怡红院亚洲怡春院av| 久久久久久久久久久久久久久性生活视频| 欧美一级特黄淫片在线观看| 久久精品无码一区二区三区| 亚洲综合骚逼| 超碰激情808| 亚洲九区| 国产亚州高清国产拍精| 国产精品久久天天干| 美女天天干| 狠狠干精品一二三四五六2022| 国产美女mm131爽爽爽爽| 欧美色图 色综合图| 欧美综合 站| 好湿好紧好爽 视频| 国产精品久久久鸭无码的功能| 2024年最新色情网站在线观看| 四虎在线免费视频| 夜夜 中文视频rt| 亚洲码和欧洲精品激情系列| 91xingse| 激情综合五月天| 91小视频| 日韩精品免费高清视频在线| 人妻性爱一区二区| av网站在线看| 中文色综合| 国产精品不卡av免费在线观看| 极品人妻少妇综合| 欧美亚洲高清晰| 色香在线| 中文字幕超碰CAO| 在线 亚洲 网爆 自拍| 日韩国语字幕| 夜夜嗨一区二区| 看一级黄色视频| 成人免费不卡在线视频| 国产精品久久久久久久毛片1| 黄色AV免费| 日韩成年人性爱视频| 日韩十八禁| 97网色| 欧成人在线| 亚洲天在线| 日韩欧美三级| 东京热天堂网| 久久大| 日韩欧美亚欧在线视频| 亚洲AV麻豆Aⅴ无码电影一| 无码不卡亚洲成?人片| 91精片| 东北女人无套内谢视频| 日本一区二区中文字幕久久| 少妇被c 黄 免费观看| 亚洲麻豆av一区二区| 测评在线观看AV| 日韩性爱免费观看视频| 人人潮人人摸| 日本午夜精品理论片A级APP发布| 国产在线精品偷| 一道本久久棕合爱| 日本女厕偷拍| 九一国产精品| 国产精品久久久久婷婷二区次| 九九热九九| 国产精品不卡一区二区三区av| 欧美亚洲国产91在线| 在线无码网站| 99性爱视频| 日韩精品人妻系列无码天堂| 久久噜| 日韩91网| 亚洲国产一区二区日韩专区| 9999免费精彩视频| 男人下部插入女人下部| 欧洲精品网| 欧美亚洲丝袜人妻制服中文99| 国产乱伦视频污| 操逼操逼逼操操逼91| 狠狠操狠狠插| 亚洲成人妻日韩在线| 97在线播放| 日韩精品资源专区二区| 欧美性爱系列| 黑人与人妻| 狠狠躁伊人中文字幕| 大香蕉免费3| 99精品成人免费看| 天堂日本亚洲欧美| 五十路成人在线视频二区三区| 精品少妇999| 秋霞影音一区二区三区| 婷婷激情一区二区三区俺也去| 亚洲色综网| A级片一区| 国产三级电影免费观看| 亚洲日韩青青草色月| 91天天爽| 国产区性爱在线视频秋霞豆| 天天综和| 又大又大又大又粗爽高潮观看| 玖玖爱免费观看视频| 操逼网站视频漫画国产| 另类图片五月| 麻豆熟妇乱妇熟色A片在线看| 日本欧美一区二区三区视频麻豆| 91free福利| 欧美 日韩 婷婷 五月| 伊人操| 久操婷婷| 久久9久久| 欧美顶级黄色大片免费| 青青操在线亚洲视频观看欧美在线 | 一区二区三区在线日韩影院观看| 色综合V| 91女在线观看| 国产精品人妻无码久久久互動交流 | 一块操欧美| 99re在线视频| 国产福利小视频高清在线观看| 亚洲中文字幕乱码无码一区二区| 91麻豆天美| 思思99热| 伊人骚琪琪亚洲天堂网站| 手机在线看片免费人成视频| 亚洲精品1区| 亚洲,日韩,欧美,成人播放 | 中国国产精品一区视频| 欧美日韩亚洲五月天婷婷| 亚洲国产精品成人综合| 久久久久久久国产| 国产美女裸体秘 永久无遮挡| 亚州色站 日韩电影| 久久在线观看免费视频| 91av天美性媒精品视频| 天天日天天干天天色| 人妻天天爽夜夜爽爽| 人人操,人人液| 91 丝袜在线| 亚洲春色欧美激情自拍| 欧美日韩精品国产91| 免费a级毛片av无码久久精品中文字幕| 无码人妻一区二区一牛影视| 日本精品中文字幕视频| 久久久96精品| 麻豆久久久一区二区| 美女啊啊啊啊啊啊| 800zy一区二区| 800zy一区二区| 日本国产亚洲一区在线观看| 老熟妇一区二区三区啪啪| 国语精品内射在线观看| 2017,超碰| 久久久久13| 欧州一区二区三区四区| 东北操逼| 日韩另类色图| 日韩久久.一级黄色片| 精品无码产区一区二| 337p大胆噜噜噜噜噜91Av| 无码人妻一区二区三区四区老鸭窝| 国产av尤物| 强奸乱伦 亚洲一区| 嗯嗯啊啊好疼| 色播五月丁香| 日韩性爱视频在线免费观看| 91亚洲黄色网| 日韩av熟女一区二区三区成人| 久久亚洲欧美中文字幕国语| 97久久久网站| 色偷偷色偷偷欧美日韩| 激情综合网五月婷婷| 丁香七月婷婷| 极品一区二区三区免费| 美国美女AV在线| 日韩一性一交一A片俄罗斯 | 97香蕉人人乳| 五月婷婷综合网| 26uuu欧美日韩| 亚洲资源站| www.男人天堂| 欧美久久婷| 最新国产精品久久精品| 偷拍亚洲熟女视频播放| 加勒比海色香蕉婷婷| 偷拍五区| 美骚妇av高清在线| 中文字暮97| 欧美极度丰满熟妇hd| 亚洲影院无码在线| 91亚洲欧洲| 天美久久久久| 欧美激情亚洲情色| 欧美一级专区免费大片| 日本丝袜美腿人妻九九| 欧美双插| 这里只有97精品| 欧美亚洲清纯| 插入粉嫩少妇视频| 亚洲激情天堂网| 台欧久久精品视频| 欧美午夜精品久久久久久3D| 色五月综合| 国产精品久久久久久片| 亚洲成人无码影院| 九月丁香婷婷色| 狠狠色伊人亚洲综合网站色| 极品销魂美女一区二区| 久久久久久久| 熟妇人妻精品一区二区| 亚洲色婷婷综合久久久久中文| 伊人久久亚洲色欲综合网站| 美女黄码视频午夜| 国产精品电影推荐| 男人精品天堂一区| 久热大香蕉网站| 日韩欧美资源| 五月天欧美色图| 啊啊啊啊啊啊啊网址在线观看| 另类av综合久久| 久久久久久波多野吉衣高潮| 亚洲少妇色图自慰直播| 极品后入免费视频| 999 久久久| 天天天堂影视日韩亚洲91| 国产诱惑| 亚洲 日本 不卡| 91天天综合日韩欧美| 日韩小电影| 秋霞Av理论一级在线| 国产女同在线观看视频| 中文字幕一区二区三区四区在线视频| 亚洲无码超碰免费| 强奸国产在线| 狠狠干婷婷| 男人的天堂2018| 翔田千里AV无码秘 三区| 少妇久久久久久| 国产精品午夜福利亚洲综合网| 无码免费在线观看黄色片| 日韩性爱人人爱人人操| 操逼日韩无码| 久久综合18p| 啊好爽快点-国产一区二区三区撒尿在线-成人AV| 又黄又粗又硬又长又大| 日本加勒比无码专区一二三| 十八禁黄色| 无码精品久久久久久亚洲| 操逼免费视频无码国产| 色婷亚洲五月在线观看| 91是天天| 久久久久极品| 在线视频亚洲无码| 玖玖爱免费观看视频| 五月婷婷丁香| 97国产色图| 99久草| 18啪啪手机免费性爱| 国产超碰| 少妇500双飞99| 亚洲天堂一区二区| 国产黄色视频久久| 日韩无码成人电影| 99re95| 国产又粗又长又大的视频| 欧州一区二区三区四区| 久久精品三级影视| 日产中文字幕2020| 精品人妻久久久| 久久精品国产AV一区二区三区| 人妻精品视频一区二区| 天天看人人操屄犊摸阴| 狼人狠干| 国产欧美日韩精品中文| 一区二区三区四区姦女| 91亚洲欧美激情| 男人高清无码一区二区| 日本天堂网| 成人区人妻精品一| 在线看片国产精品每日更新| 在线日韩日本亚洲国产| 亚洲国产欧美中文永久| 中文字幕神马久久| 欧美A片中文字幕| 五月天婷婷欧美三区| 亚洲自拍青操视频| 欧美精品99久久久**| 精品久一区免费| 亚洲成人ab| 极品极品色影院| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 午夜人妻精品综合在线| 四季av一区二区凹凸精品小说| 小视频国产| 密臀在线免费观看| 亚洲色人| 91蜜臀在线久久久久| 国产精品成人午夜福利| 狠狠色丁香| 一卡二卡在线播放| 簧片免费看视频| 色香91| 一级特级aaaa毛片免费观看| 国产成人天堂| 中文字幕精品一区二区精| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 久久精品成人| 五月香婷婷| 精品人妻一区二区免费看| 99re久久| 狼人狠干| 在现视频女上位好爽| 99色网| 9热9热综合网| 国产二区视频在线观看电影| 97频视在线| 欧美系列在线一区二区| 99这里都是精品| 狠狠综合网| 密臀视频三区免费网站| 91女在线观看| 亚洲精品乱码线路中文字幕| 久久久专区| 欧美强奸一区二区诱惑| 夜夜夜夜久久久久| 日本一区三级韩国| 亚洲一区日韩精品| 中文在线视频| 淫妻综合网| 国产精品久久久吖| 91丝袜美腿片| 婷婷导航| 国产精品白丝在线播放| h色99999| 五月天精品| 69av一区二区三区| 亚洲在钱| 亚洲一区二区麻豆影院| 日韩黄片影院| 男人天堂毛片| 一区二区精品更新提醒| 久久亚洲AV成人精品无码| 强乱老妇中文字幕| 欧美午夜色妇色鬼| 一区在线国产播放| 2024黄色视频| 色97国产69香蕉| 亚洲天堂色图| 国产精品一区二区 尿失禁| 久久久久久久唑| 久日91在线| 亚洲五月丁香花狠狠干一区二区三区 | 欧美天天搞| 操逼999| 夜夜嗨AV一区天天| 色yeye成人免费视频| 97香蕉网| 夜夜国自区| 中文字幕丝袜美腿| 再深点灬舒服灬太大了好硬好爽| 久操91视频| 国产夫妻性生活视频| 大香蕉伊人在线成人AV在线观看 | 天天综合,91入口| 安徽熟妇视频| 特污免视频| 成人网站 免费观看| 亚洲国产成人精品久久久国产成人一区二区| 亚洲 综合 第一页| 人妻在线中出视频| 五月色综合| 国产剧情AV不卡在线观看| 成 人 A V免费视频在线观看| 91精品91久久久久77777| 91精品成人| 欧美第一页性| 91无码中出人妻视频| 国产亚洲日本精品在线| 国产日韩欧美操逼视频| 精品无码久久久久久久杏吧| 亚洲 日本 不卡| 果冻传媒A片一二三区| 日韩ab网 | 天天操熟妇| 男人的天堂日本东京热| 久久天天躁日日躁狠狠躁| 亚洲 欧美都市激情| 五月婷丁香| av资源在线播放天堂| 日韩少妇一区二区三区| 亚洲日韩美国人妻| 亚一综合久久久久久久久久| 日韩激情毛片一级久久久| 日本淫乱女一区二区三区视频| 春色综合网| 色五月av| 一本久道久久综合狠狠爱一密臀精| 青青操日韩| 色哟哟精品1精品2| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 国产操操日韩三级黄| 亚洲激情在线观看一区| 97在线观看播放视频| 嗯嗯嗯啊啊啊在线免费观看| 欧美少妇性爱网站| 天天日老熟妇| 青青久日| 亚洲成人免费中文字幕| 久久久久久性爱片| 婷婷丁香人妻 | 岛国免费视频在线| 久久精品人体AV| 国产熟女自拍| 日日日日做夜夜夜夜无码| 久都青青视频| 青青青青青手机视频| 国产色精品午夜大片| 日本日日色视频| 92久久| 亚欧高清v| 欧美在线色| 午夜超爽| 精品小视频在线| 国产v亚洲v日韩v欧美v片另类| 五月天综合在线| 9997se| 夜间福利片1000无码| 热久久99999| 国产日韩无码一区二区三区久久区| 亚洲麻豆精品二区三区| 午夜啊啊| 99热这里只有精品8| 欧美最婬乱婬爆婬牲视频| 日日操丁香五月天| 色娱乐色呦呦夜夜夜夜av| 色在线综合| 东北女人的毛片| 欧美在线永久天堂| 操学生天天| 免费啪啪av| 超碰综合色| 中文字幕亚洲永久精品| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 亚欧美色图| 操屄不卡视频| 亚洲美女高潮喷水视频| 国产AV久久久蜜爱影集| 97伊人超碰| 天天爽天天操| 91丨人妻丨国产丨丝袜| www老逼91| 男人女人18禁片免费看网站| 青青草视频导航官网| 久久黄色视频一区二区三区 | 欧洲色| 97国产超碰| 麻豆AV一区二区| 性爱网站一区二区| 97AV在线免费观看| 爆操无码| 天天干电影| 91丝袜美女| 黄色av网站在线播放| 91男人天堂网| 在线日韩视频| 91网九色蝌蚪操熟女| 热久久国产精品视频大陆精品| 岛国片国产成人亚洲播放| 一区二区三区在线日韩影院观看| 综合网色| a片久久久久久久久久久久 | 欧美中文字幕男人天堂久久精品| 欧美精品久久久久久久丰满| 欧洲精品欧洲精品| www.色五月| 国产成久久综合片| 欧美体内射精| 中文字幕一区 二区三四五 区日 日骚 | 天天日天天射天天干| 亚洲1区2区三区高清中文字幕| 人伦四五区| 亚洲色人妻综合| 亚洲欧洲综合成人av一区| 一本色道久久综合亚洲二区三区| 亚洲 图片 综合91| h4610国产人妻| 日日操夜夜操天天操免费观看麻豆| 色女综合| 日韩在线观看中文字幕视频| av网站免费线看| 欧美洲精品一级| 久久婷婷国产一区二区色| 欧美日韩国产三级黄色| 亚洲毛片久久| 日本中文字幕一区| 国产成人资源| 亚洲aV性爱| 欧美成人A√在线一区二区| 九九久久国产精品怡红院| 强上我不卡卡| 超碰精品在线| 亚洲蜜乳av| 大JI巴好深好爽又大又粗视频| 91精品久久久久久77777| 人妻天天操天天爽视频免费| 亚洲第一成人影院色播| 欧美性爱综合,免费| 91高清欧美| 91男人天堂网| 日产中文字幕2020| 久久一二三四五六七八九区区区 | 欧美亚洲国内自拍| 亚洲中文一区二区三区视频| 欧美人人操人人插| 东京热综合久久一区二区| 2019午夜福利视频| 九九热免费在线国产视频伊人五月| 超碰99热| 国产精品爽爽va在线观看98| 欧美精品23| 国产强奸乱伦第1页| 99re99在线视频| 物业黑人 AV一区| 国产精品视频播放| 久久9精品视频| 蜜桃久久一区二区三区| av凤凰久久久| 日韩一区二区三区四区五区| 欧美日日操| 熟妇xxxxx性春色| 亚洲成人激情小说视频| 精品传媒在线一区| 欧美丝袜中文字幕07在线| 福利五区| 天天综合网亚洲综合网| 91精品国产乱码| 亚洲日产专区婷婷| 精品亚州18| 国产成自自拍在线观看| 色诱avtt| 黄网站黄视频网站进入口 | 99色色网| 色五月婷婷麻豆在| 五月丁香啪啪| 亚洲综合五月天婷婷丁香| 国产超碰人人操| 天美麻花大全视频| 久久婷婷精品| 人妻少妇久久久| 亚洲精品一区中文字幕乱码| 伊人色综合网| 男人天堂2012| 北京专精特新企业招聘信息| 丁香五月天婷婷姐| 伊人97色天使| 亚州人妻| 成人精品欧洲亚洲| 欧美女同在线| 东京太热男人的天堂久久久| 久久久久久九九九九九 | 大香蕉92| 蜜臀久久99精品久久久久久成人小说 | 亚洲国产一级黄色视频| 久久亚洲国产成人| 中文字幕人成乱码熟女香港| 久操凹凸视频| 搡老熟女老女人老熟妇免费视频| 六月丁香久久| 久久天天摸| 97色97好| 狠狠干妹子| 日日躁夜夜躁狠狠躁超爽| 啊啊啊好想要| 大香蕉www.超碰| aaaa少妇高潮大片| 桃色五月天| 熟女一区二区| 国产情色第一第二页在线观看| 欧美九一精品久久久熟妇| 九久久九九久视频| 国产呦精品系列在线观看| 欧美偷拍区| 不卡啪啪视频| 东北女人av| 亚洲日韩XXX| 超碰在线91| 免费av在线播放二区| 睡产熟女乱伦| 岛国小电影| 中文字幕伊人| 中文视频在线观看| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 97九色人妻| 亚洲国产丝袜在线观看| 黑人在线91| 三级激情网站| 大香交伊人网| 蜜臀亚洲综合一二三四区| 日骚逼视频| 美女尤物人人操| 日本在线一二 | 麻豆天美国美国产| 91欧美巨乳| 可免费观看的av毛片中日美韩| 高清成年美女黄网站免费大全| 亚洲激情网一二三四区| 欧美激情色婷婷花野真衣一区二区 | 国产原创精品| 97国产精选| 日韩欧美午夜一区二区| www.久久| 蜜乳av一区二区三区四区不卡| 激情小说亚洲| 国产一区二区啪啪视频| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 蜜臀久久99'精品久久久| 国产高清自拍视频| www.丁香五月| 91影视亚洲| 乱伦熟女论坛| 狠狠狠狠狠| 国产热av| 免费人成在线观看网站品爱网| 亚洲人成网www| 疯操AV| 国产女人与拘做受视频免费| 99热综合在线| 91美女精品| 成人性爱高清视频免费看| 综合网欧| 日本影视久久免费| 午夜大香蕉| 91狠狠狠| 伊人黄色视频免费观看| 大香蕉宅男伊人| 欧美片第一页| 久久久久久久极品香蕉视频| 老熟乱一区二区三区四区| 亚洲二区精品在线观看| 美女毛片999| 欧洲黄色网| 久久久久久性爱视频| 天天综合~91| 精品一区二区啪啪啪| 后入人妻无码| 色婷婷狠狠18禁| 91天天美女| 草莓精品视频| 97久久国产精品| 在线看片国产精品每日更新| 九九九九九用不成了| 男女猛烈无遮掩视频免费软件| 大鸡吧尹人在线| 91综合网| 中文字幕 一区二区 亚洲无码| 午夜超碰| 九色 人妻 大香蕉| 国产深夜福利| 中文啪啪视频| 国产精品com| 日本丝袜美腿人妻九九| 欧美性爱第一页久久| 欧美成人亚洲精品| 91久久免费视频互動交流| 黑人中出21连凳花野真衣| 日韩激情无码影院| 操b网站亚洲无码| www.yeyecao| 综合欧美日韩在线| 国产偷拍自拍在线视频| 天堂精品| 色色色综合网| 91熟女视频| 成人综合视频久久| 国产亚洲女v在线观看| 麻豆天美在线喷水AV| 国产情侣自拍在线播放| 国产在线激情| 啊好大好舒服| 中文字幕AV乱伦| 91人妻久久久久久久久久久久久| 成年人一级黄色毛片大全在线观看| yazhouzaixian| 五月婷婷深深爱| 欧美999| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 大白逼三四级| 98色网| 人人操我人人干| 一二三四区操操Av| 视频二区美腿丝袜制服人妻欧美| 亚洲国产美女久久久久| 大香蕉综合久久| 亚洲精品成人激情在线| 欧美在线啊啊| 操亚州| 九九综合色| 成年人黄色视频免费| 五月天加勒比啪| 五月婷婷激情网| 内射小黄片| 久9久9久9久9久9久9| 女人天堂AV五区在线| 国产性爱在线视频一区二区| 亚洲清纯综合| 大香蕉中文aV在线| 婬女免费一二三区A片| 久久久久亚洲| 国产精彩女在线观看视频| 日韩啪啪啪啪啪| 日本成人A片免费看| 久午视频| 人妻黑丝袜电影| 久久久久成人蜜桃精品| 国产av强奸美女| 精品97久久| 少妇内射www在线观看视频| 五月天激情小说| 强奸乱伦大香蕉| 亚洲人久久久久日| 成人在线午夜视频一区| 超碰亚洲欧美日韩无| 自拍偷拍 日韩无码| a片自拍直播视频| 9久9久| 亚洲一二三| 九九热男人天堂| 日韩性爱高清免费视频| 国产精品盗摄 偷窥盗摄| 美女高潮国产高清| 美女网站黄页| 亚洲欧洲无码97久久精品| 亚洲综合五月天婷婷丁香| 欧美日韩操逼动图| 精品人妻视频入口| 五月天伊人网| 天美传媒精品一区二区三区| 在线观看A啊啊啊| 韩国一区二区精品亚洲| 日本韩欧美在线播放a| 无码丰满熟妇一区二区浪潮AV| 校园春色 欧美| 天天干天天操天天操夜夜操天天操| 99性爱在线观看| 人人操人人爽人人操人人| 超碰碰97资源站| 少妇久久久免费| 久久久∴| 国产精品欧美激在线| 麻豆天美国美国产| 丁香久久| 五月丁香六月婷综合成人综合| 亚洲精品官网在线观看| 亚洲精品乱码线路中文字幕| 不卡av免费在线网址| 九月伊人中文字幕| 亚欧洲日韩国产精品| 好色美女九七第一页| 日韩人妻精品| 狠狠爱AV| 青青草玖玖爱| 欧洲精品久久| 天海翼久久| 亚洲国产青青| 欧美 亚洲 91| 亚洲欧美在线综合| 久久精品国产久精国产| 一本一首道人妻少妇免费久久| 欧美激情超碰777| 一区二区三区日韩欧美| 欧美熟妇乱码在线一区| 大香蕉综合| 久久欧洲| 欧美色日本| 九九九九精品一区| 激情五月天校园春色网| 超碰97欧美日韩| 一摸二插三插| 国产又粗又长又大的视频| 亚洲色图A| 中文字幕乱亚洲美女精品一区| 91 丝袜在线播放| 少妇综合| 国产黄色视频久久| 91影库| 探花熟女,姿勢到位,體驗感也到位| 乱伦Av网| 日韩av乱伦| 日韩国语字幕| 亚洲精品欧美专业| 性爱欧美五月| 少妇精品久久久八区九区| 激情婷婷黑人91| 无码人妻一区二区三区免费九色| 大色综合| 久久久久久电影| 亚洲色图亚洲无码强奸乱伦| 99操逼| 国产女上位好爽在线| 亚洲永久AV无码精品秋霞| 九9热伊人| 激情小说激情视频| 亚欧免费观看视频| 国产精品美女在线一区| 高清在线偷拍自拍视频| 久久久蜜桃一区二区三区| 国产超碰在线一区| 99精品丰满人妻无码| 亚洲天堂2020| 国产日韩区| 99久视频| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 激情开心五月天| 欧美 日韩 国产传媒| 欧美日日人人天天| 欧美色狠| 精品国产乱码久久久久久口爆网站 | 久久精品国产Aⅴ| blacked精品一区国产| 亚洲综合色网| 亚熟hd视频在线| 亚洲一区二区AV|