• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Xilinx Zynq的物距測(cè)量系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    2014-08-29 18:30:30楊曉安羅杰包文博
    現(xiàn)代電子技術(shù) 2014年15期
    關(guān)鍵詞:測(cè)距超聲波驅(qū)動(dòng)

    楊曉安+羅杰+包文博

    摘 要: 為了對(duì)障礙物距離精確測(cè)量,基于最新Zedboard FPGA(現(xiàn)場可編程邏輯陣列)開發(fā)板,采用軟硬件協(xié)同的設(shè)計(jì)方法,設(shè)計(jì)了障礙物距離測(cè)量系統(tǒng)的軟硬件。系統(tǒng)為智能小車平臺(tái)提供了完整的距離測(cè)量服務(wù),測(cè)距范圍能夠達(dá)到2 cm~4.5 m,精度可達(dá)0.2 cm。該設(shè)計(jì)包含從底層硬件電路設(shè)計(jì)、可編程邏輯IP(Intellectual Property)核設(shè)計(jì)、到Linux設(shè)備驅(qū)動(dòng)的設(shè)計(jì)全部流程,對(duì)于在Zynq?7000 FPGA上軟硬件從事開發(fā)的人員有一定的參考價(jià)值。

    關(guān)鍵詞: Zynq?7000; Linux設(shè)備驅(qū)動(dòng); IP核; 軟硬件協(xié)同設(shè)計(jì)

    中圖分類號(hào): TN710?34; TP311 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)15?0123?04

    Design and implementation of an object distance measurement system

    based on Xilinx Zynq

    YANG Xiao?an1, LUO Jie2, BAO Wen?bo2

    (1. Department of Information Engineering, Zhuhai Radio &TV University, Zhuhai 519000, China;

    2. Department of Electronics and Information Engineering, Huazhong University of Science and Technology, Wuhan 430074, China)

    Abstract: Based on development board known as the latest Zedboard FPGA (field programmable logic array), an obstacle distance measurement system was designed with the collaborative design method of hardware and software to provide a precise measurement of obstacle distance. A complete distance measurement service is provided by the distance measurement system for intelligent cars. The range of system′s rangefinding is 2~450 cm, and its precision can reach 0.2 cm. The whole design flow consists of underlying hardware circuit design, programmable logic IP (intellectual property) core design and Linux device driver design. It is useful to the hardware and software developers working with the Zynq?7000 FPGA.

    Keywords: Zynq?7000; linux device driver; Intellectual property; hardware/software co?design

    0 引 言

    隨著集成電路的制造和應(yīng)用技術(shù)的快速發(fā)展,嵌入式系統(tǒng)的性能也不斷提升,已經(jīng)被廣泛應(yīng)用于工業(yè)控制、航空航天、軍事以及消費(fèi)電子等領(lǐng)域。在硅工藝的發(fā)展以及市場推動(dòng)下,Xilinx公司推出了基于7系列FPGA的新一代全可編程(All Programmable) Zynq?7000系列產(chǎn)品。該系列產(chǎn)品,集成了嵌入式領(lǐng)域集大成者——雙核ARM Cortex A9處理器和7系列28 nm工藝FPGA芯片。Zedboard正是這樣一款基于Zynq?7000產(chǎn)品的實(shí)驗(yàn)開發(fā)板卡,提供了軟件和硬件設(shè)計(jì)的更多可能。本文基于目前FPGA業(yè)界最先進(jìn)的Zedboard FPGA(現(xiàn)場可編程邏輯陣列)開發(fā)板,從底層硬件電路設(shè)計(jì)、可編程邏輯IP(Intellectual Property)核設(shè)計(jì)、到Linux設(shè)備驅(qū)動(dòng)的設(shè)計(jì),實(shí)現(xiàn)了障礙物距離測(cè)量的軟硬件系統(tǒng),并在智能小車平臺(tái)上,實(shí)現(xiàn)了距離測(cè)量服務(wù)。該方法對(duì)于在Zynq?7000 FPGA上軟硬件的開發(fā)具有指導(dǎo)作用。

    1 系統(tǒng)設(shè)計(jì)

    傳統(tǒng)上,F(xiàn)PGA中嵌入處理器內(nèi)核,都是以FPGA為主、處理器為輔,設(shè)計(jì)思路以可編程邏輯為主。然而新一代全可編程的Zynq?7000采取不同的思路,它是以處理器為主,F(xiàn)PGA為輔。FPGA變成了ARM處理器的一個(gè)協(xié)處理器[1]。圖1為Zynq?7000 SoC芯片的結(jié)構(gòu)圖。

    簡單來說,Zynq由PS和PL兩部分組成:PS(Processing System,處理系統(tǒng))相當(dāng)于一片ARM芯片,而PL(Programmable Logic,可編程邏輯)相當(dāng)于一片F(xiàn)PGA芯片。

    PS系統(tǒng)結(jié)構(gòu)為:雙核A9處理器,其是整個(gè)平臺(tái)的控制中心,處理速度高達(dá)1 GHz,可通過NEON擴(kuò)展及單精度浮點(diǎn)單元進(jìn)行增強(qiáng),擁有32 KB指令及數(shù)據(jù)L1緩存,統(tǒng)一的512 KB L2緩存和256 KB片上存儲(chǔ)器;存儲(chǔ)接口,用以管理片內(nèi)系統(tǒng)的存儲(chǔ)狀態(tài),包含DDR3,DDR2和LPDDR2動(dòng)態(tài)存儲(chǔ)控制器和兩個(gè)QSPI,NAND FLASH及NOR FLASH控制器;通用外設(shè),PS中的通用外設(shè)是ARM直接和外部設(shè)備通信的接口,含SPI,I2C,CAN,UART,GPIO,USB 2.0等;其他組成部分。

    圖1 Zynq結(jié)構(gòu)圖

    PL部分結(jié)構(gòu)為:低功耗可編程邏輯,包含28K~350K個(gè)邏輯單元,240K~2 180K可擴(kuò)展式Block RAM和80~900個(gè)DSP Slice;XADC,為PL內(nèi)置的12 b模/數(shù)轉(zhuǎn)換器;通用/定制外設(shè),PL中的外設(shè)是PL中的器件和外部通信的接口。在ARM接口不夠用時(shí),可以利用PL的外設(shè)接口。PS和PL之間的數(shù)據(jù)交互,則是通過AXI(Advanced eXtensible Interface)接口實(shí)現(xiàn)的。具體有:高性能AXI接口(High Performance AXI Slave Ports),共4個(gè);通用AXI接口,包括兩個(gè)主設(shè)備接口和兩個(gè)從設(shè)備接口,共4個(gè);加速一致性端口,是ARM多核架構(gòu)下定義的一種接口。

    根據(jù)Zynq 結(jié)構(gòu)特點(diǎn),在應(yīng)用系統(tǒng)結(jié)構(gòu)設(shè)計(jì)時(shí)注意,使用由Zynq這樣一款功能強(qiáng)大的SoC芯片,與一般的ARM芯片不同,與常用的FPGA,更存在區(qū)別。它要求硬件和軟件之間進(jìn)行協(xié)同設(shè)計(jì),共同實(shí)現(xiàn)既定的性能指標(biāo)要求。在SoC設(shè)計(jì)中,IP(Intellectual Property,知識(shí)產(chǎn)權(quán))核重用技術(shù)是一個(gè)很重要的概念,它是軟硬件協(xié)同設(shè)計(jì)的關(guān)鍵,通過標(biāo)準(zhǔn)化IP核可以實(shí)現(xiàn)模塊復(fù)用,可以完成大規(guī)模的、復(fù)雜的SoC設(shè)計(jì)[3]。

    本文以一個(gè)超聲波測(cè)距系統(tǒng)為例,介紹如何在Zynq SoC上,定制IP、設(shè)計(jì)Linux 設(shè)備驅(qū)動(dòng)等,并完整的闡述了從硬件到軟件的設(shè)計(jì)流程。設(shè)計(jì)的系統(tǒng)結(jié)構(gòu)如圖2所示。PS上,運(yùn)行Linux操作系統(tǒng),為Linaro Ubuntu發(fā)行版。根據(jù)文獻(xiàn)[2]的指導(dǎo)操作,使用Xilinx公司的開發(fā)軟件完成配置,使PS可以運(yùn)行操作系統(tǒng)。

    PL部分按照系統(tǒng)控制的需求進(jìn)行定制。設(shè)計(jì)基于Xilinx AXI總線的超聲波處理外設(shè)IP核,與外部的超聲波發(fā)射和接收電路交互。在Linux操作系統(tǒng)下,這個(gè)IP核就成為了一個(gè)設(shè)備,這就需要編寫相應(yīng)的設(shè)備驅(qū)動(dòng)程序,實(shí)現(xiàn)超聲波測(cè)距功能的封裝。

    圖2 系統(tǒng)結(jié)構(gòu)圖

    2 主要模塊設(shè)計(jì)

    2.1 超聲波測(cè)距模塊

    該模塊基本工作原理是:通過超聲波發(fā)射探頭,發(fā)射頻率為40 kHz的超聲波信號(hào);當(dāng)超聲波信號(hào)遇到障礙物時(shí),會(huì)發(fā)生反射;當(dāng)超聲波接收探頭接收到40 kHz頻率附近的聲波信號(hào)時(shí),經(jīng)過信號(hào)調(diào)理電路;再通過系統(tǒng)計(jì)算接收與發(fā)射之間的時(shí)間差計(jì)算障礙物距離。

    圖3 測(cè)距模塊

    設(shè)計(jì)中共使用到了三個(gè)相同測(cè)距模塊,分別測(cè)量三個(gè)不同的方向上障礙物距離。測(cè)距模塊分為超聲波發(fā)射部分和接收部分,模塊的電路結(jié)構(gòu)如圖4所示。具體是采用HC?SR04超聲波測(cè)距模塊,進(jìn)行硬件設(shè)計(jì)[6]。該電路的對(duì)外接口為觸發(fā)(TRIG)控制端和回響(ECHO)信號(hào)接收端。通過I/O口TRIG觸發(fā)測(cè)距,提供了一個(gè)10 ms以上的高電平觸發(fā)信號(hào),該模塊將發(fā)出8 個(gè)40 kHz的方波用于探測(cè),并自動(dòng)檢測(cè)是否有回波信號(hào)。一旦檢測(cè)到有回波信號(hào)則通過I/O口ECHO輸出一個(gè)高電平回響信號(hào),且回響信號(hào)的高電平時(shí)間[tH](單位:ms)即高電平持續(xù)的時(shí)間與所測(cè)的距離[S]成正比。其對(duì)應(yīng)關(guān)系為:

    [S=tHv2]

    式中:[S]為測(cè)試距離;[tH]為高電平時(shí)間(單位:s);[v]為聲速340 m/s。

    發(fā)射部分:利用串口轉(zhuǎn)換芯片的升壓功能,采用MAX232將輸入JN1和JN2的3.3 V TTL電平轉(zhuǎn)換,得到5 V電平。它激勵(lì)超聲波發(fā)射探頭的信號(hào)壓差為10 V,發(fā)出40 kHz的超聲波。如圖4所示。

    圖4 發(fā)射電路

    接收部分:對(duì)回波信號(hào)進(jìn)行濾波、放大處理。接收電路圖如圖5所示。其中NET9 為控制接收電路工作的使能端口,NET10為接收電路工作且接收到了回波信號(hào)時(shí)的響應(yīng)信號(hào)。

    圖5 接收電路圖

    2.2 IP核設(shè)計(jì)

    使用Xilinx的設(shè)計(jì)工具XPS(Xilinx Platform Studio)建立IP的流程,新建一個(gè)Ultrasonic(超聲波) IP核模塊。該IP核的模塊結(jié)構(gòu)如圖2所示中的超聲波處理外設(shè)部分,其中Triggercounter,Clockgen和Echocounter使用Verilog HDL實(shí)現(xiàn)。根據(jù)超聲波測(cè)距模塊的測(cè)距時(shí)序要求,設(shè)計(jì)觸發(fā)和回響信號(hào)的邏輯,由Triggercounter和Echocounter實(shí)現(xiàn)。最終將測(cè)量到的數(shù)據(jù)放到AXI4定義的寄存器中,使處理器能從AXI總線上讀取數(shù)據(jù)。本IP核有4個(gè)寄存器(reg0~reg3),與AXI4總線相連,用戶可以通過這4個(gè)寄存器控制發(fā)射超聲波,獲取測(cè)量的距離。其中,reg0的功能是使能一次測(cè)距以及三個(gè)方向上測(cè)量完畢標(biāo)志,圖6為reg0寄存器映射表;reg1~reg3為計(jì)數(shù)后計(jì)算得到的三個(gè)方向上超聲波測(cè)量到的距離數(shù)值。將設(shè)計(jì)的IP核添加到XPS工程中去,分配得到的地址空間為0x6E000000~ 0x6E00FFFF。

    圖6 reg0寄存器映射表

    2.3 Linux驅(qū)動(dòng)設(shè)計(jì)

    Linux設(shè)備驅(qū)動(dòng)分為三類:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。在這里需要編寫的是一個(gè)字符設(shè)備[5]。另外,編寫的設(shè)備將通過模塊化的方式加載到操作系統(tǒng)中,而不是靜態(tài)編譯到內(nèi)核中。驅(qū)動(dòng)程序在交叉編譯環(huán)境下,進(jìn)行模塊化編譯。得到以.ko為擴(kuò)展名的驅(qū)動(dòng)文件,使用insmod和rmmod進(jìn)行加載或者卸載,同時(shí)也可以通過lsmod查看是否已被加載。

    建立一個(gè)ultrasonic_driver.c文件,使用交叉編譯環(huán)境進(jìn)行編譯,得到對(duì)應(yīng)的可加載文件ultrasonic_driver.ko。在ultrasonic_driver.c中聲明設(shè)備名稱和模塊的物理地址,該物理地址對(duì)應(yīng)于XPS中建立的嵌入式系統(tǒng)的地址。具體如下:

    #define DEVICE_NAME "ULTRASONIC_MOUDLE"

    #define ULTRASONIC_MOUDLE_PHY_ADDR 0x6E000000

    該設(shè)備驅(qū)動(dòng)的主要函數(shù)有:設(shè)備初始化ultrasonic_driver_module_init();三個(gè)方向上的距離測(cè)量函數(shù),sys_ultrasonic_front_get(), sys_ultrasonic_right_get()和sys_ultrasonic_left_get();設(shè)備注銷ultrasonic_driver_module_exit()。

    (1) 設(shè)備初始化函數(shù),完成注冊(cè)信息,當(dāng)進(jìn)行insmod操作時(shí),操作系統(tǒng)會(huì)自動(dòng)調(diào)用初始化函數(shù),完成各項(xiàng)信息的注冊(cè)。而設(shè)備注銷操作,與它相反,不做贅述。該初始化函數(shù)中,需要完成如下工作[4]:內(nèi)核注冊(cè)設(shè)備驅(qū)動(dòng);創(chuàng)建ultrasonic_driver設(shè)備類;為ultrasonic_driver設(shè)備類創(chuàng)建一個(gè)ultrasonic_driver_device設(shè)備;為設(shè)備創(chuàng)建以下幾個(gè)文件:dev_attr_ultrasonic_trigger,dev_attr_ultrasonic_front,dev_attr_ultrasonic_right,dev_attr_ultrasonic_left,分別對(duì)應(yīng)三個(gè)方向上的距離數(shù)值;將模塊的物理基地址映射到虛擬地址上;同時(shí)將其他幾個(gè)寄存器地址計(jì)算得到虛擬地址;打印調(diào)試信息,表明完成初始化工作。

    (2) 距離測(cè)量函數(shù),以前向(front)測(cè)距為例,另外兩個(gè)方向(right,left)上類似。Linux中,sysfs是一種基于ram的文件系統(tǒng),它提供了一種用于向用戶空間展現(xiàn)內(nèi)核空間里的對(duì)象、屬性和鏈接。sysfs與kobject層次緊密相連,它將kobject層次關(guān)系表現(xiàn)出來,使得用戶空間可以看見這些層次關(guān)系??梢酝ㄟ^CAT和ECHO接口命令來讀/寫sysfs。使用函數(shù)宏DEVICE_ATTR創(chuàng)建接口如下:

    static DEVICE_ATTR(ultrasonic_front, S_IRUSR|S_IWUSR, NULL, sys_ultrasonic_front_get);

    DEVICE_ATTR 宏聲明有4個(gè)參數(shù),分別是名稱、權(quán)限位、讀函數(shù)、寫函數(shù)。其中讀函數(shù)和寫函數(shù)是讀/寫功能函數(shù)的函數(shù)名。這樣對(duì)ultrasonic_front創(chuàng)建一個(gè)寫函數(shù)sys_ultrasonic _front _get,其流程圖如圖7所示。

    圖7 sys_ultrasonic_front_get流程圖

    進(jìn)入函數(shù),首先會(huì)打印一條調(diào)試信息;然后向reg0(ultrasonic_trigger_addr)上寫入使能,使開始發(fā)射超聲波;循環(huán)檢測(cè)reg0的bit1,查看數(shù)據(jù)是否有效;如果數(shù)據(jù)有效,則讀取出reg1(ultrasonic_front_addr)上的數(shù)據(jù)值,并打印出來。完成一次讀取操作。

    完成以上設(shè)備驅(qū)動(dòng)設(shè)計(jì)后,使用配置好的交叉編譯環(huán)境,將該驅(qū)動(dòng)代碼編譯為ultrasonic_driver.ko文件。將該文件放入啟動(dòng)的SD卡中。

    3 系統(tǒng)測(cè)試

    對(duì)XPS構(gòu)建的系統(tǒng),建立U?Boot引導(dǎo),編譯配置內(nèi)核源碼,編譯設(shè)備樹,并制作根文件系統(tǒng),制作ramdisk鏡像文件,得到所有的文件zImage,devicetreee.dtb,ramdisk8M.img.gz,BOOT.BIN。放入Zedboard板的SD卡中,同時(shí)也將ultrasonic_ driver.ko文件放入SD卡,上電啟動(dòng),直至完成。

    在連接到Zedboard串口的超級(jí)終端下,掛載SD,執(zhí)行如下步驟:

    mount /dev/mmcblk0p1 /mnt //掛載SD卡

    cd /mnt //進(jìn)入SD卡目錄

    insmod./ ultrasonic_driver.ko //加載ultrasonic_ driver.ko模塊

    dmesg //查看加載打印信息

    lsmod //查看加載的模塊

    cd /sys/class/ultrasonic_driver/ultrasonic_driver

    //進(jìn)入創(chuàng)建的設(shè)備目錄,sysfs下

    cat ultrasonic_front //讀取一次前向超聲波測(cè)量距離

    cat ultrasonic_right //讀取一次右邊超聲波測(cè)量距離

    cat ultrasonic_left //讀取一次左邊超聲波測(cè)量距離

    系統(tǒng)測(cè)試后可以在終端里看到打印的加載信息“ultrasonic driver initial successfully! ”和讀取到的測(cè)量距離數(shù)值。調(diào)整超聲波探頭前方障礙物距離,還可以得到不同的距離值,最終,實(shí)現(xiàn)的距離測(cè)量能夠達(dá)到2 cm~4.5 m的范圍,精度可達(dá)0.2 cm。

    4 結(jié) 語

    本文基于FPGA業(yè)界最先進(jìn)的芯片Zynq以及開發(fā)平臺(tái)Zedboard,融合軟硬件設(shè)計(jì),從底層的各功能電路設(shè)計(jì),Verilog HDL代碼編寫,Verilog IP核設(shè)計(jì),到Linux設(shè)備驅(qū)動(dòng)設(shè)計(jì),完成了整個(gè)設(shè)計(jì)流程,在智能小車平臺(tái)上實(shí)現(xiàn)了在Linux系統(tǒng)中利用超聲波測(cè)距的功能,達(dá)到2 cm~4.5 m的測(cè)距范圍,精度達(dá)0.2 cm,為上層應(yīng)用提供了支撐服務(wù)。該系統(tǒng)設(shè)計(jì)對(duì)基于Zynq?7000 FPGA上的開發(fā)的多個(gè)方面(例如,對(duì)ARM+FPGA應(yīng)用設(shè)計(jì)的理解、軟硬件結(jié)合的設(shè)計(jì)方法;Xilinx下AXI4?lite總線的IP核設(shè)計(jì);Linux字符設(shè)備驅(qū)動(dòng)設(shè)計(jì))有指導(dǎo)性意義。

    參考文獻(xiàn)

    [1] Xilinx Inc. Zynq?7000 all programmable SoC technical reference manual, v1.6.1 [DB/OL]. [2013?04?17]. http://www.xilinx.com/support/documentation/user_guides/ug585?Zynq?7000?TRM.pdf.

    [2] 陸佳華,江舟,馬岷.嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南:基于Xilinx Zynq[M].北京:機(jī)械工業(yè)出版社,2013 .

    [3] 李洪濤,顧陳,朱曉華.FPGA技術(shù)開發(fā)(高級(jí)篇)[M].北京:國防工業(yè)出版社,2013.

    [4] 章立生,韓承德.SoC芯片設(shè)計(jì)方法及標(biāo)準(zhǔn)化[J].計(jì)算機(jī)研究與發(fā)展,2002,39(1):1?8.

    [5] KROAH?HARTMAN C R. Linux設(shè)備驅(qū)動(dòng)程序[M].魏永明,耿岳,鐘書毅,譯.3版.北京:中國電力出版社,2005.

    [6] 深圳市捷深科技有限公司.HC?SR04超聲波測(cè)距模塊說明書[DB/OL]. [2014?04?10].[http://wenku.baidu.com/view/ce9e5e487?][67f5acfa1c7cd8a.][html.]

    建立一個(gè)ultrasonic_driver.c文件,使用交叉編譯環(huán)境進(jìn)行編譯,得到對(duì)應(yīng)的可加載文件ultrasonic_driver.ko。在ultrasonic_driver.c中聲明設(shè)備名稱和模塊的物理地址,該物理地址對(duì)應(yīng)于XPS中建立的嵌入式系統(tǒng)的地址。具體如下:

    #define DEVICE_NAME "ULTRASONIC_MOUDLE"

    #define ULTRASONIC_MOUDLE_PHY_ADDR 0x6E000000

    該設(shè)備驅(qū)動(dòng)的主要函數(shù)有:設(shè)備初始化ultrasonic_driver_module_init();三個(gè)方向上的距離測(cè)量函數(shù),sys_ultrasonic_front_get(), sys_ultrasonic_right_get()和sys_ultrasonic_left_get();設(shè)備注銷ultrasonic_driver_module_exit()。

    (1) 設(shè)備初始化函數(shù),完成注冊(cè)信息,當(dāng)進(jìn)行insmod操作時(shí),操作系統(tǒng)會(huì)自動(dòng)調(diào)用初始化函數(shù),完成各項(xiàng)信息的注冊(cè)。而設(shè)備注銷操作,與它相反,不做贅述。該初始化函數(shù)中,需要完成如下工作[4]:內(nèi)核注冊(cè)設(shè)備驅(qū)動(dòng);創(chuàng)建ultrasonic_driver設(shè)備類;為ultrasonic_driver設(shè)備類創(chuàng)建一個(gè)ultrasonic_driver_device設(shè)備;為設(shè)備創(chuàng)建以下幾個(gè)文件:dev_attr_ultrasonic_trigger,dev_attr_ultrasonic_front,dev_attr_ultrasonic_right,dev_attr_ultrasonic_left,分別對(duì)應(yīng)三個(gè)方向上的距離數(shù)值;將模塊的物理基地址映射到虛擬地址上;同時(shí)將其他幾個(gè)寄存器地址計(jì)算得到虛擬地址;打印調(diào)試信息,表明完成初始化工作。

    (2) 距離測(cè)量函數(shù),以前向(front)測(cè)距為例,另外兩個(gè)方向(right,left)上類似。Linux中,sysfs是一種基于ram的文件系統(tǒng),它提供了一種用于向用戶空間展現(xiàn)內(nèi)核空間里的對(duì)象、屬性和鏈接。sysfs與kobject層次緊密相連,它將kobject層次關(guān)系表現(xiàn)出來,使得用戶空間可以看見這些層次關(guān)系。可以通過CAT和ECHO接口命令來讀/寫sysfs。使用函數(shù)宏DEVICE_ATTR創(chuàng)建接口如下:

    static DEVICE_ATTR(ultrasonic_front, S_IRUSR|S_IWUSR, NULL, sys_ultrasonic_front_get);

    DEVICE_ATTR 宏聲明有4個(gè)參數(shù),分別是名稱、權(quán)限位、讀函數(shù)、寫函數(shù)。其中讀函數(shù)和寫函數(shù)是讀/寫功能函數(shù)的函數(shù)名。這樣對(duì)ultrasonic_front創(chuàng)建一個(gè)寫函數(shù)sys_ultrasonic _front _get,其流程圖如圖7所示。

    圖7 sys_ultrasonic_front_get流程圖

    進(jìn)入函數(shù),首先會(huì)打印一條調(diào)試信息;然后向reg0(ultrasonic_trigger_addr)上寫入使能,使開始發(fā)射超聲波;循環(huán)檢測(cè)reg0的bit1,查看數(shù)據(jù)是否有效;如果數(shù)據(jù)有效,則讀取出reg1(ultrasonic_front_addr)上的數(shù)據(jù)值,并打印出來。完成一次讀取操作。

    完成以上設(shè)備驅(qū)動(dòng)設(shè)計(jì)后,使用配置好的交叉編譯環(huán)境,將該驅(qū)動(dòng)代碼編譯為ultrasonic_driver.ko文件。將該文件放入啟動(dòng)的SD卡中。

    3 系統(tǒng)測(cè)試

    對(duì)XPS構(gòu)建的系統(tǒng),建立U?Boot引導(dǎo),編譯配置內(nèi)核源碼,編譯設(shè)備樹,并制作根文件系統(tǒng),制作ramdisk鏡像文件,得到所有的文件zImage,devicetreee.dtb,ramdisk8M.img.gz,BOOT.BIN。放入Zedboard板的SD卡中,同時(shí)也將ultrasonic_ driver.ko文件放入SD卡,上電啟動(dòng),直至完成。

    在連接到Zedboard串口的超級(jí)終端下,掛載SD,執(zhí)行如下步驟:

    mount /dev/mmcblk0p1 /mnt //掛載SD卡

    cd /mnt //進(jìn)入SD卡目錄

    insmod./ ultrasonic_driver.ko //加載ultrasonic_ driver.ko模塊

    dmesg //查看加載打印信息

    lsmod //查看加載的模塊

    cd /sys/class/ultrasonic_driver/ultrasonic_driver

    //進(jìn)入創(chuàng)建的設(shè)備目錄,sysfs下

    cat ultrasonic_front //讀取一次前向超聲波測(cè)量距離

    cat ultrasonic_right //讀取一次右邊超聲波測(cè)量距離

    cat ultrasonic_left //讀取一次左邊超聲波測(cè)量距離

    系統(tǒng)測(cè)試后可以在終端里看到打印的加載信息“ultrasonic driver initial successfully! ”和讀取到的測(cè)量距離數(shù)值。調(diào)整超聲波探頭前方障礙物距離,還可以得到不同的距離值,最終,實(shí)現(xiàn)的距離測(cè)量能夠達(dá)到2 cm~4.5 m的范圍,精度可達(dá)0.2 cm。

    4 結(jié) 語

    本文基于FPGA業(yè)界最先進(jìn)的芯片Zynq以及開發(fā)平臺(tái)Zedboard,融合軟硬件設(shè)計(jì),從底層的各功能電路設(shè)計(jì),Verilog HDL代碼編寫,Verilog IP核設(shè)計(jì),到Linux設(shè)備驅(qū)動(dòng)設(shè)計(jì),完成了整個(gè)設(shè)計(jì)流程,在智能小車平臺(tái)上實(shí)現(xiàn)了在Linux系統(tǒng)中利用超聲波測(cè)距的功能,達(dá)到2 cm~4.5 m的測(cè)距范圍,精度達(dá)0.2 cm,為上層應(yīng)用提供了支撐服務(wù)。該系統(tǒng)設(shè)計(jì)對(duì)基于Zynq?7000 FPGA上的開發(fā)的多個(gè)方面(例如,對(duì)ARM+FPGA應(yīng)用設(shè)計(jì)的理解、軟硬件結(jié)合的設(shè)計(jì)方法;Xilinx下AXI4?lite總線的IP核設(shè)計(jì);Linux字符設(shè)備驅(qū)動(dòng)設(shè)計(jì))有指導(dǎo)性意義。

    參考文獻(xiàn)

    [1] Xilinx Inc. Zynq?7000 all programmable SoC technical reference manual, v1.6.1 [DB/OL]. [2013?04?17]. http://www.xilinx.com/support/documentation/user_guides/ug585?Zynq?7000?TRM.pdf.

    [2] 陸佳華,江舟,馬岷.嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南:基于Xilinx Zynq[M].北京:機(jī)械工業(yè)出版社,2013 .

    [3] 李洪濤,顧陳,朱曉華.FPGA技術(shù)開發(fā)(高級(jí)篇)[M].北京:國防工業(yè)出版社,2013.

    [4] 章立生,韓承德.SoC芯片設(shè)計(jì)方法及標(biāo)準(zhǔn)化[J].計(jì)算機(jī)研究與發(fā)展,2002,39(1):1?8.

    [5] KROAH?HARTMAN C R. Linux設(shè)備驅(qū)動(dòng)程序[M].魏永明,耿岳,鐘書毅,譯.3版.北京:中國電力出版社,2005.

    [6] 深圳市捷深科技有限公司.HC?SR04超聲波測(cè)距模塊說明書[DB/OL]. [2014?04?10].[http://wenku.baidu.com/view/ce9e5e487?][67f5acfa1c7cd8a.][html.]

    建立一個(gè)ultrasonic_driver.c文件,使用交叉編譯環(huán)境進(jìn)行編譯,得到對(duì)應(yīng)的可加載文件ultrasonic_driver.ko。在ultrasonic_driver.c中聲明設(shè)備名稱和模塊的物理地址,該物理地址對(duì)應(yīng)于XPS中建立的嵌入式系統(tǒng)的地址。具體如下:

    #define DEVICE_NAME "ULTRASONIC_MOUDLE"

    #define ULTRASONIC_MOUDLE_PHY_ADDR 0x6E000000

    該設(shè)備驅(qū)動(dòng)的主要函數(shù)有:設(shè)備初始化ultrasonic_driver_module_init();三個(gè)方向上的距離測(cè)量函數(shù),sys_ultrasonic_front_get(), sys_ultrasonic_right_get()和sys_ultrasonic_left_get();設(shè)備注銷ultrasonic_driver_module_exit()。

    (1) 設(shè)備初始化函數(shù),完成注冊(cè)信息,當(dāng)進(jìn)行insmod操作時(shí),操作系統(tǒng)會(huì)自動(dòng)調(diào)用初始化函數(shù),完成各項(xiàng)信息的注冊(cè)。而設(shè)備注銷操作,與它相反,不做贅述。該初始化函數(shù)中,需要完成如下工作[4]:內(nèi)核注冊(cè)設(shè)備驅(qū)動(dòng);創(chuàng)建ultrasonic_driver設(shè)備類;為ultrasonic_driver設(shè)備類創(chuàng)建一個(gè)ultrasonic_driver_device設(shè)備;為設(shè)備創(chuàng)建以下幾個(gè)文件:dev_attr_ultrasonic_trigger,dev_attr_ultrasonic_front,dev_attr_ultrasonic_right,dev_attr_ultrasonic_left,分別對(duì)應(yīng)三個(gè)方向上的距離數(shù)值;將模塊的物理基地址映射到虛擬地址上;同時(shí)將其他幾個(gè)寄存器地址計(jì)算得到虛擬地址;打印調(diào)試信息,表明完成初始化工作。

    (2) 距離測(cè)量函數(shù),以前向(front)測(cè)距為例,另外兩個(gè)方向(right,left)上類似。Linux中,sysfs是一種基于ram的文件系統(tǒng),它提供了一種用于向用戶空間展現(xiàn)內(nèi)核空間里的對(duì)象、屬性和鏈接。sysfs與kobject層次緊密相連,它將kobject層次關(guān)系表現(xiàn)出來,使得用戶空間可以看見這些層次關(guān)系??梢酝ㄟ^CAT和ECHO接口命令來讀/寫sysfs。使用函數(shù)宏DEVICE_ATTR創(chuàng)建接口如下:

    static DEVICE_ATTR(ultrasonic_front, S_IRUSR|S_IWUSR, NULL, sys_ultrasonic_front_get);

    DEVICE_ATTR 宏聲明有4個(gè)參數(shù),分別是名稱、權(quán)限位、讀函數(shù)、寫函數(shù)。其中讀函數(shù)和寫函數(shù)是讀/寫功能函數(shù)的函數(shù)名。這樣對(duì)ultrasonic_front創(chuàng)建一個(gè)寫函數(shù)sys_ultrasonic _front _get,其流程圖如圖7所示。

    圖7 sys_ultrasonic_front_get流程圖

    進(jìn)入函數(shù),首先會(huì)打印一條調(diào)試信息;然后向reg0(ultrasonic_trigger_addr)上寫入使能,使開始發(fā)射超聲波;循環(huán)檢測(cè)reg0的bit1,查看數(shù)據(jù)是否有效;如果數(shù)據(jù)有效,則讀取出reg1(ultrasonic_front_addr)上的數(shù)據(jù)值,并打印出來。完成一次讀取操作。

    完成以上設(shè)備驅(qū)動(dòng)設(shè)計(jì)后,使用配置好的交叉編譯環(huán)境,將該驅(qū)動(dòng)代碼編譯為ultrasonic_driver.ko文件。將該文件放入啟動(dòng)的SD卡中。

    3 系統(tǒng)測(cè)試

    對(duì)XPS構(gòu)建的系統(tǒng),建立U?Boot引導(dǎo),編譯配置內(nèi)核源碼,編譯設(shè)備樹,并制作根文件系統(tǒng),制作ramdisk鏡像文件,得到所有的文件zImage,devicetreee.dtb,ramdisk8M.img.gz,BOOT.BIN。放入Zedboard板的SD卡中,同時(shí)也將ultrasonic_ driver.ko文件放入SD卡,上電啟動(dòng),直至完成。

    在連接到Zedboard串口的超級(jí)終端下,掛載SD,執(zhí)行如下步驟:

    mount /dev/mmcblk0p1 /mnt //掛載SD卡

    cd /mnt //進(jìn)入SD卡目錄

    insmod./ ultrasonic_driver.ko //加載ultrasonic_ driver.ko模塊

    dmesg //查看加載打印信息

    lsmod //查看加載的模塊

    cd /sys/class/ultrasonic_driver/ultrasonic_driver

    //進(jìn)入創(chuàng)建的設(shè)備目錄,sysfs下

    cat ultrasonic_front //讀取一次前向超聲波測(cè)量距離

    cat ultrasonic_right //讀取一次右邊超聲波測(cè)量距離

    cat ultrasonic_left //讀取一次左邊超聲波測(cè)量距離

    系統(tǒng)測(cè)試后可以在終端里看到打印的加載信息“ultrasonic driver initial successfully! ”和讀取到的測(cè)量距離數(shù)值。調(diào)整超聲波探頭前方障礙物距離,還可以得到不同的距離值,最終,實(shí)現(xiàn)的距離測(cè)量能夠達(dá)到2 cm~4.5 m的范圍,精度可達(dá)0.2 cm。

    4 結(jié) 語

    本文基于FPGA業(yè)界最先進(jìn)的芯片Zynq以及開發(fā)平臺(tái)Zedboard,融合軟硬件設(shè)計(jì),從底層的各功能電路設(shè)計(jì),Verilog HDL代碼編寫,Verilog IP核設(shè)計(jì),到Linux設(shè)備驅(qū)動(dòng)設(shè)計(jì),完成了整個(gè)設(shè)計(jì)流程,在智能小車平臺(tái)上實(shí)現(xiàn)了在Linux系統(tǒng)中利用超聲波測(cè)距的功能,達(dá)到2 cm~4.5 m的測(cè)距范圍,精度達(dá)0.2 cm,為上層應(yīng)用提供了支撐服務(wù)。該系統(tǒng)設(shè)計(jì)對(duì)基于Zynq?7000 FPGA上的開發(fā)的多個(gè)方面(例如,對(duì)ARM+FPGA應(yīng)用設(shè)計(jì)的理解、軟硬件結(jié)合的設(shè)計(jì)方法;Xilinx下AXI4?lite總線的IP核設(shè)計(jì);Linux字符設(shè)備驅(qū)動(dòng)設(shè)計(jì))有指導(dǎo)性意義。

    參考文獻(xiàn)

    [1] Xilinx Inc. Zynq?7000 all programmable SoC technical reference manual, v1.6.1 [DB/OL]. [2013?04?17]. http://www.xilinx.com/support/documentation/user_guides/ug585?Zynq?7000?TRM.pdf.

    [2] 陸佳華,江舟,馬岷.嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南:基于Xilinx Zynq[M].北京:機(jī)械工業(yè)出版社,2013 .

    [3] 李洪濤,顧陳,朱曉華.FPGA技術(shù)開發(fā)(高級(jí)篇)[M].北京:國防工業(yè)出版社,2013.

    [4] 章立生,韓承德.SoC芯片設(shè)計(jì)方法及標(biāo)準(zhǔn)化[J].計(jì)算機(jī)研究與發(fā)展,2002,39(1):1?8.

    [5] KROAH?HARTMAN C R. Linux設(shè)備驅(qū)動(dòng)程序[M].魏永明,耿岳,鐘書毅,譯.3版.北京:中國電力出版社,2005.

    [6] 深圳市捷深科技有限公司.HC?SR04超聲波測(cè)距模塊說明書[DB/OL]. [2014?04?10].[http://wenku.baidu.com/view/ce9e5e487?][67f5acfa1c7cd8a.][html.]

    猜你喜歡
    測(cè)距超聲波驅(qū)動(dòng)
    基于模糊PI控制的驅(qū)動(dòng)防滑仿真系統(tǒng)分析
    屈宏斌:未來五年,雙輪驅(qū)動(dòng),砥礪前行
    類星體的精準(zhǔn)測(cè)距
    科學(xué)(2020年3期)2020-01-06 04:02:51
    在808DA上使用WIFI進(jìn)行驅(qū)動(dòng)數(shù)據(jù)同步
    基于Niosll高精度超聲波流量計(jì)的研究
    電子制作(2018年17期)2018-09-28 01:56:38
    淺談超聲波測(cè)距
    電子制作(2017年7期)2017-06-05 09:36:13
    蝙蝠的超聲波
    超聲波流量計(jì)的研究
    電子制作(2016年21期)2016-05-17 03:52:47
    超聲波流量計(jì)在蘭干渠上的應(yīng)用
    基于S3C6410的Wi-Fi驅(qū)動(dòng)移植實(shí)現(xiàn)
    久久午夜综合久久蜜桃| 免费av中文字幕在线| 男女免费视频国产| 欧美av亚洲av综合av国产av | 精品人妻偷拍中文字幕| 熟女av电影| 三上悠亚av全集在线观看| 午夜日韩欧美国产| 日韩大片免费观看网站| 天天躁夜夜躁狠狠久久av| 高清视频免费观看一区二区| 欧美成人精品欧美一级黄| 午夜日韩欧美国产| 日本猛色少妇xxxxx猛交久久| 两性夫妻黄色片| 久久鲁丝午夜福利片| 午夜福利视频在线观看免费| 狂野欧美激情性bbbbbb| 久久97久久精品| 午夜久久久在线观看| 2022亚洲国产成人精品| 国产一区二区激情短视频 | 亚洲五月色婷婷综合| 久久99热这里只频精品6学生| 日韩大片免费观看网站| 国产精品国产三级专区第一集| 成人免费观看视频高清| 国产又爽黄色视频| 亚洲成人一二三区av| www日本在线高清视频| 午夜免费鲁丝| 又粗又硬又长又爽又黄的视频| 亚洲人成电影观看| 欧美最新免费一区二区三区| 精品视频人人做人人爽| 国产精品久久久久久久久免| 高清欧美精品videossex| 国产一区二区 视频在线| 精品久久久久久电影网| 欧美精品一区二区大全| 伦精品一区二区三区| 亚洲第一av免费看| 性色av一级| 午夜日韩欧美国产| 国产片内射在线| 精品一区二区三区四区五区乱码 | 七月丁香在线播放| 亚洲色图 男人天堂 中文字幕| av网站免费在线观看视频| 国产高清不卡午夜福利| 伦精品一区二区三区| 男人添女人高潮全过程视频| 另类精品久久| 久久久久网色| 亚洲欧美中文字幕日韩二区| 亚洲欧洲日产国产| 国产极品粉嫩免费观看在线| 亚洲av欧美aⅴ国产| 波野结衣二区三区在线| 亚洲人成网站在线观看播放| 男人舔女人的私密视频| 亚洲成人一二三区av| 咕卡用的链子| 中国国产av一级| 最新中文字幕久久久久| 中文天堂在线官网| av有码第一页| 热99久久久久精品小说推荐| 精品亚洲乱码少妇综合久久| 国产精品一二三区在线看| 女性被躁到高潮视频| 五月天丁香电影| 侵犯人妻中文字幕一二三四区| 免费日韩欧美在线观看| 在现免费观看毛片| 久久久久精品性色| 妹子高潮喷水视频| 999精品在线视频| 超碰97精品在线观看| 建设人人有责人人尽责人人享有的| 亚洲欧美一区二区三区国产| 亚洲av综合色区一区| 久久精品国产亚洲av天美| 美女视频免费永久观看网站| 久久久久久人妻| 丝袜在线中文字幕| 黄网站色视频无遮挡免费观看| 久久精品久久久久久久性| 久久久久久久大尺度免费视频| 性色av一级| 激情视频va一区二区三区| 亚洲国产欧美日韩在线播放| 丝瓜视频免费看黄片| 久久人人爽人人片av| 久久久久国产精品人妻一区二区| 午夜激情av网站| 欧美精品亚洲一区二区| www日本在线高清视频| 丰满少妇做爰视频| 啦啦啦中文免费视频观看日本| 免费av中文字幕在线| 可以免费在线观看a视频的电影网站 | 国产人伦9x9x在线观看 | 日韩欧美精品免费久久| 色婷婷av一区二区三区视频| 亚洲人成电影观看| 国产欧美亚洲国产| 国产亚洲精品第一综合不卡| 少妇猛男粗大的猛烈进出视频| 亚洲,一卡二卡三卡| 人人澡人人妻人| 久久午夜综合久久蜜桃| 成人漫画全彩无遮挡| 色哟哟·www| 国产亚洲最大av| 一级毛片电影观看| 国产97色在线日韩免费| 日韩中字成人| 亚洲美女黄色视频免费看| 大香蕉久久成人网| 超色免费av| 欧美精品一区二区免费开放| 91aial.com中文字幕在线观看| 日韩av不卡免费在线播放| 久久99一区二区三区| 亚洲精品久久久久久婷婷小说| 久久免费观看电影| 母亲3免费完整高清在线观看 | 一级,二级,三级黄色视频| 高清黄色对白视频在线免费看| 成年美女黄网站色视频大全免费| 久久久久久久久久人人人人人人| 亚洲精品美女久久av网站| 欧美+日韩+精品| 亚洲,欧美精品.| 国产在线视频一区二区| 国产成人午夜福利电影在线观看| 欧美人与善性xxx| 高清视频免费观看一区二区| 高清视频免费观看一区二区| 热99久久久久精品小说推荐| 午夜免费男女啪啪视频观看| 免费看不卡的av| 在线精品无人区一区二区三| 欧美日本中文国产一区发布| 成年人免费黄色播放视频| 久久久国产精品麻豆| 亚洲av电影在线进入| 久久久久久免费高清国产稀缺| 国产亚洲午夜精品一区二区久久| 国产亚洲欧美精品永久| 国产成人精品婷婷| 欧美精品av麻豆av| 在线观看国产h片| 天美传媒精品一区二区| 9191精品国产免费久久| 国语对白做爰xxxⅹ性视频网站| 91精品国产国语对白视频| 国产成人免费无遮挡视频| 一级毛片我不卡| 不卡av一区二区三区| 又黄又粗又硬又大视频| 最近的中文字幕免费完整| 999久久久国产精品视频| 亚洲欧美色中文字幕在线| 18禁国产床啪视频网站| 岛国毛片在线播放| 国产av码专区亚洲av| 麻豆av在线久日| 日本色播在线视频| 久久久精品国产亚洲av高清涩受| 日本wwww免费看| 大码成人一级视频| 一级毛片电影观看| 婷婷色综合www| 亚洲精品中文字幕在线视频| 涩涩av久久男人的天堂| 久久精品aⅴ一区二区三区四区 | 午夜福利,免费看| 黑丝袜美女国产一区| 亚洲av中文av极速乱| 国产精品成人在线| 日本vs欧美在线观看视频| 国产男女内射视频| 美女xxoo啪啪120秒动态图| 一区二区三区四区激情视频| 国产在视频线精品| 久热久热在线精品观看| 亚洲国产欧美网| 日韩一卡2卡3卡4卡2021年| 久久午夜综合久久蜜桃| 国产精品久久久久久精品电影小说| 久久久久久免费高清国产稀缺| 欧美97在线视频| 久久精品人人爽人人爽视色| 欧美xxⅹ黑人| av在线观看视频网站免费| 欧美bdsm另类| 国产成人91sexporn| 可以免费在线观看a视频的电影网站 | 久热久热在线精品观看| 涩涩av久久男人的天堂| 国产又爽黄色视频| 老司机影院毛片| 日本色播在线视频| 欧美日韩视频高清一区二区三区二| 婷婷色综合www| 欧美亚洲日本最大视频资源| 午夜福利视频在线观看免费| 国产av一区二区精品久久| 成人免费观看视频高清| 国产成人精品无人区| 99香蕉大伊视频| 精品午夜福利在线看| 欧美少妇被猛烈插入视频| 人人妻人人添人人爽欧美一区卜| 亚洲精品av麻豆狂野| 9191精品国产免费久久| av女优亚洲男人天堂| 国产亚洲一区二区精品| 自线自在国产av| 一区二区日韩欧美中文字幕| www.av在线官网国产| 亚洲成人av在线免费| 男女下面插进去视频免费观看| 欧美亚洲 丝袜 人妻 在线| av又黄又爽大尺度在线免费看| 久久人人爽av亚洲精品天堂| 久久午夜福利片| 妹子高潮喷水视频| 老女人水多毛片| 国产成人一区二区在线| 国产高清不卡午夜福利| 男的添女的下面高潮视频| 一区在线观看完整版| 又粗又硬又长又爽又黄的视频| 亚洲国产欧美网| 精品国产超薄肉色丝袜足j| 美女午夜性视频免费| 亚洲人成网站在线观看播放| av有码第一页| 男女边摸边吃奶| 少妇被粗大猛烈的视频| 亚洲内射少妇av| 国产精品熟女久久久久浪| 成年av动漫网址| 欧美日本中文国产一区发布| 国产精品偷伦视频观看了| 久久热在线av| 亚洲精品第二区| 午夜免费观看性视频| 国产成人精品在线电影| 黄片无遮挡物在线观看| 一个人免费看片子| 久久人人97超碰香蕉20202| 成人免费观看视频高清| 菩萨蛮人人尽说江南好唐韦庄| 久久 成人 亚洲| 18禁观看日本| 日韩,欧美,国产一区二区三区| 寂寞人妻少妇视频99o| 亚洲国产av新网站| 男女国产视频网站| 亚洲国产最新在线播放| 丰满饥渴人妻一区二区三| 欧美在线黄色| 岛国毛片在线播放| 在线观看免费日韩欧美大片| 啦啦啦在线观看免费高清www| 国产免费视频播放在线视频| 晚上一个人看的免费电影| 国产一区二区三区综合在线观看| 交换朋友夫妻互换小说| 日本vs欧美在线观看视频| 久久久精品94久久精品| 啦啦啦视频在线资源免费观看| a级毛片黄视频| 精品亚洲乱码少妇综合久久| 国产精品二区激情视频| 亚洲一码二码三码区别大吗| 欧美日韩一级在线毛片| 黑人猛操日本美女一级片| 精品国产国语对白av| 国产精品久久久久久精品古装| 天天影视国产精品| 国产免费现黄频在线看| 最新中文字幕久久久久| 啦啦啦中文免费视频观看日本| 激情视频va一区二区三区| av视频免费观看在线观看| 国产男女超爽视频在线观看| 久久精品久久久久久噜噜老黄| 男女高潮啪啪啪动态图| 性色avwww在线观看| 中文字幕亚洲精品专区| 午夜福利,免费看| 久久99精品国语久久久| 成人影院久久| 一二三四在线观看免费中文在| 精品少妇黑人巨大在线播放| 少妇被粗大猛烈的视频| 午夜91福利影院| 精品国产一区二区三区四区第35| 2022亚洲国产成人精品| 国产1区2区3区精品| 一级毛片我不卡| 女人高潮潮喷娇喘18禁视频| 精品国产露脸久久av麻豆| 这个男人来自地球电影免费观看 | 欧美在线黄色| 一级,二级,三级黄色视频| 亚洲成国产人片在线观看| 王馨瑶露胸无遮挡在线观看| 水蜜桃什么品种好| 亚洲国产成人一精品久久久| 波多野结衣av一区二区av| 伦精品一区二区三区| 波野结衣二区三区在线| 国产男女超爽视频在线观看| 18+在线观看网站| 蜜桃在线观看..| 久久久欧美国产精品| 久热这里只有精品99| 国产精品.久久久| 国产免费福利视频在线观看| 久久99一区二区三区| 久久精品人人爽人人爽视色| 久久久久久久久久久免费av| 日本黄色日本黄色录像| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 久久午夜综合久久蜜桃| 国产视频首页在线观看| 色哟哟·www| 男女边吃奶边做爰视频| 丰满乱子伦码专区| 国产亚洲午夜精品一区二区久久| 免费久久久久久久精品成人欧美视频| 亚洲国产欧美在线一区| 欧美日韩国产mv在线观看视频| 亚洲国产成人一精品久久久| 国产伦理片在线播放av一区| 欧美精品人与动牲交sv欧美| 日日撸夜夜添| 少妇猛男粗大的猛烈进出视频| 亚洲av综合色区一区| 亚洲视频免费观看视频| 国产女主播在线喷水免费视频网站| 色婷婷av一区二区三区视频| 国精品久久久久久国模美| 妹子高潮喷水视频| 蜜桃在线观看..| 久久久久久久久久久久大奶| 国产精品人妻久久久影院| 亚洲国产欧美网| 自线自在国产av| 欧美激情极品国产一区二区三区| 日产精品乱码卡一卡2卡三| 午夜久久久在线观看| 中文字幕精品免费在线观看视频| 久久人人97超碰香蕉20202| 亚洲精品美女久久av网站| 街头女战士在线观看网站| 日韩av免费高清视频| 久久国内精品自在自线图片| www.自偷自拍.com| 国产一区二区激情短视频 | 国产人伦9x9x在线观看 | 久热这里只有精品99| 免费观看av网站的网址| 菩萨蛮人人尽说江南好唐韦庄| 美女福利国产在线| 亚洲精品国产av蜜桃| 国产精品二区激情视频| 一区在线观看完整版| 亚洲国产欧美网| 蜜桃国产av成人99| 久久亚洲国产成人精品v| 亚洲精品自拍成人| 国产精品 欧美亚洲| 秋霞在线观看毛片| 中文字幕人妻丝袜一区二区 | www.av在线官网国产| 五月伊人婷婷丁香| 一区二区三区四区激情视频| 午夜精品国产一区二区电影| 十八禁网站网址无遮挡| 男人操女人黄网站| 一区二区三区四区激情视频| 久久久久久久国产电影| 亚洲在久久综合| 26uuu在线亚洲综合色| 国产1区2区3区精品| 免费黄网站久久成人精品| 亚洲av电影在线进入| 高清av免费在线| 婷婷成人精品国产| 国产高清不卡午夜福利| 精品久久蜜臀av无| 欧美成人午夜精品| 免费大片黄手机在线观看| 亚洲国产av新网站| 五月天丁香电影| 欧美老熟妇乱子伦牲交| 中文字幕人妻熟女乱码| 高清欧美精品videossex| 亚洲国产看品久久| 亚洲av中文av极速乱| 免费观看无遮挡的男女| 在线免费观看不下载黄p国产| 性色av一级| 男人添女人高潮全过程视频| 午夜免费男女啪啪视频观看| 看十八女毛片水多多多| 日韩av不卡免费在线播放| 国产97色在线日韩免费| 日本爱情动作片www.在线观看| 在现免费观看毛片| 18禁观看日本| 久久精品熟女亚洲av麻豆精品| 国产成人精品福利久久| 久久精品国产亚洲av高清一级| 国产欧美日韩综合在线一区二区| 欧美中文综合在线视频| 亚洲综合精品二区| 久久久精品区二区三区| 久久精品aⅴ一区二区三区四区 | 国产成人午夜福利电影在线观看| 91aial.com中文字幕在线观看| 日韩免费高清中文字幕av| 精品一品国产午夜福利视频| 国产黄频视频在线观看| 毛片一级片免费看久久久久| 久久久久久久大尺度免费视频| 女人久久www免费人成看片| 亚洲精品乱久久久久久| 侵犯人妻中文字幕一二三四区| 欧美老熟妇乱子伦牲交| 成人国产麻豆网| 久久精品夜色国产| 国产欧美亚洲国产| 爱豆传媒免费全集在线观看| 狂野欧美激情性bbbbbb| 午夜免费男女啪啪视频观看| av在线老鸭窝| 男人操女人黄网站| 九色亚洲精品在线播放| 黑丝袜美女国产一区| 国产高清国产精品国产三级| 久久久国产欧美日韩av| 大香蕉久久成人网| 女性被躁到高潮视频| 性高湖久久久久久久久免费观看| 国产人伦9x9x在线观看 | 一区二区三区精品91| 一级毛片我不卡| 亚洲欧美成人精品一区二区| 桃花免费在线播放| 国产亚洲一区二区精品| 亚洲激情五月婷婷啪啪| 欧美日韩国产mv在线观看视频| 亚洲人成网站在线观看播放| 精品久久久久久电影网| 麻豆乱淫一区二区| 人成视频在线观看免费观看| 久久97久久精品| 18禁国产床啪视频网站| 中文字幕色久视频| 亚洲精品国产av蜜桃| 麻豆av在线久日| 中文乱码字字幕精品一区二区三区| 国产成人精品福利久久| 国产精品欧美亚洲77777| av线在线观看网站| 亚洲av国产av综合av卡| 国产精品久久久久久精品电影小说| 精品酒店卫生间| 两个人看的免费小视频| 天天影视国产精品| 哪个播放器可以免费观看大片| 亚洲精品第二区| 制服丝袜香蕉在线| 咕卡用的链子| 90打野战视频偷拍视频| 午夜福利视频精品| 老汉色av国产亚洲站长工具| 成人漫画全彩无遮挡| 欧美97在线视频| 亚洲成国产人片在线观看| 十八禁高潮呻吟视频| 少妇人妻 视频| 女人被躁到高潮嗷嗷叫费观| 亚洲人成电影观看| 久久这里只有精品19| 亚洲精品成人av观看孕妇| 最近中文字幕2019免费版| 天堂8中文在线网| 久久精品熟女亚洲av麻豆精品| 亚洲国产av影院在线观看| 精品久久久精品久久久| 人人妻人人澡人人爽人人夜夜| 国产av国产精品国产| 不卡视频在线观看欧美| 成人18禁高潮啪啪吃奶动态图| 久久这里有精品视频免费| 777米奇影视久久| 免费黄频网站在线观看国产| 日本wwww免费看| 欧美成人午夜精品| 日韩人妻精品一区2区三区| 人妻人人澡人人爽人人| 国产成人精品在线电影| 丰满迷人的少妇在线观看| 欧美av亚洲av综合av国产av | videosex国产| 亚洲婷婷狠狠爱综合网| 国产成人精品福利久久| 久久久久久久久免费视频了| 91成人精品电影| av福利片在线| 精品少妇一区二区三区视频日本电影 | 日本av免费视频播放| 热re99久久国产66热| 久久久久国产网址| 色哟哟·www| 日韩电影二区| 中文精品一卡2卡3卡4更新| 国产精品香港三级国产av潘金莲 | 亚洲经典国产精华液单| 日日摸夜夜添夜夜爱| 成人免费观看视频高清| 亚洲,一卡二卡三卡| 秋霞伦理黄片| 中文字幕色久视频| 日日啪夜夜爽| 26uuu在线亚洲综合色| 久久久精品区二区三区| a级毛片在线看网站| 欧美日韩精品网址| 天天操日日干夜夜撸| 美女国产高潮福利片在线看| 欧美精品一区二区大全| 水蜜桃什么品种好| 亚洲人成电影观看| 麻豆精品久久久久久蜜桃| 精品福利永久在线观看| 一区二区三区乱码不卡18| 女人久久www免费人成看片| 综合色丁香网| 少妇被粗大的猛进出69影院| 十分钟在线观看高清视频www| 免费黄网站久久成人精品| 午夜av观看不卡| 欧美成人午夜精品| 亚洲av国产av综合av卡| 国产精品久久久久久精品电影小说| 你懂的网址亚洲精品在线观看| 毛片一级片免费看久久久久| 国产欧美亚洲国产| xxxhd国产人妻xxx| 尾随美女入室| 精品一区在线观看国产| h视频一区二区三区| xxx大片免费视频| 精品亚洲成a人片在线观看| 日韩不卡一区二区三区视频在线| 国产无遮挡羞羞视频在线观看| 视频在线观看一区二区三区| 女性被躁到高潮视频| 免费观看在线日韩| av卡一久久| 亚洲国产日韩一区二区| 一区二区三区四区激情视频| 久久鲁丝午夜福利片| 国产日韩一区二区三区精品不卡| 久久这里有精品视频免费| 高清av免费在线| 国产淫语在线视频| 国产成人精品婷婷| 丝袜喷水一区| 亚洲国产av影院在线观看| 成年av动漫网址| 波多野结衣一区麻豆| 久久精品久久久久久久性| av在线观看视频网站免费| 99热全是精品| 婷婷色麻豆天堂久久| 一二三四在线观看免费中文在| 中文天堂在线官网| 欧美日韩精品网址| 纵有疾风起免费观看全集完整版| 国产精品久久久久成人av| 你懂的网址亚洲精品在线观看| 久久精品国产综合久久久| 国产男女超爽视频在线观看| 精品少妇内射三级| 大香蕉久久网| 久久精品久久精品一区二区三区| 精品人妻熟女毛片av久久网站| 成人18禁高潮啪啪吃奶动态图| 久久毛片免费看一区二区三区| 黑人猛操日本美女一级片| 成人午夜精彩视频在线观看| 激情五月婷婷亚洲| 蜜桃在线观看..| 国产日韩一区二区三区精品不卡| 欧美激情 高清一区二区三区| 国产日韩一区二区三区精品不卡| 免费在线观看完整版高清| 久久久久久久久免费视频了| 国产成人一区二区在线| 黄色怎么调成土黄色| 九草在线视频观看| 国产精品久久久久久av不卡| 久久国产精品大桥未久av| 一区二区三区乱码不卡18|