日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux cached释放_正点原子Linux第四十一章嵌入式Linux LED驱动开发实验

發(fā)布時(shí)間:2025/3/12 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux cached释放_正点原子Linux第四十一章嵌入式Linux LED驱动开发实验 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1)資料下載:點(diǎn)擊資料即可下載

2)對(duì)正點(diǎn)原子Linux感興趣的同學(xué)可以加群討論:935446741

3)關(guān)注正點(diǎn)原子公眾號(hào),獲取最新資料更新

第四十一章嵌入式Linux LED驅(qū)動(dòng)開發(fā)實(shí)驗(yàn)

上一章我們?cè)敿?xì)的講解了字符設(shè)備驅(qū)動(dòng)開發(fā)步驟,并且用一個(gè)虛擬的chrdevbase設(shè)備為例帶領(lǐng)大家完成了第一個(gè)字符設(shè)備驅(qū)動(dòng)的開發(fā)。本章我們就開始編寫第一個(gè)真正的Linux字符設(shè)備驅(qū)動(dòng)。在I.MX6U-ALPHA開發(fā)板上有一個(gè)LED燈,我們?cè)诼銠C(jī)篇中已經(jīng)編寫過(guò)此LED燈的裸機(jī)驅(qū)動(dòng),本章我們就來(lái)學(xué)習(xí)一下如何編寫Linux下的LED燈驅(qū)動(dòng)。

41.1 Linux下LED燈驅(qū)動(dòng)原理

Linux下的任何外設(shè)驅(qū)動(dòng),最終都是要配置相應(yīng)的硬件寄存器。所以本章的LED燈驅(qū)動(dòng)最終也是對(duì)I.MX6ULL的IO口進(jìn)行配置,與裸機(jī)實(shí)驗(yàn)不同的是,在Linux下編寫驅(qū)動(dòng)要符合Linux的驅(qū)動(dòng)框架。I.MX6U-ALPHA開發(fā)板上的LED連接到I.MX6ULL的GPIO1_IO03這個(gè)引腳上,因此本章實(shí)驗(yàn)的重點(diǎn)就是編寫Linux下I.MX6UL引腳控制驅(qū)動(dòng)。關(guān)于I.MX6ULL的GPIO詳細(xì)講解請(qǐng)參考第八章。

41.1.1地址映射

在編寫驅(qū)動(dòng)之前,我們需要先簡(jiǎn)單了解一下MMU這個(gè)神器,MMU全稱叫做Memory Manage Unit,也就是內(nèi)存管理單元。在老版本的Linux中要求處理器必須有MMU,但是現(xiàn)在Linux內(nèi)核已經(jīng)支持無(wú)MMU的處理器了。MMU主要完成的功能如下:

①、完成虛擬空間到物理空間的映射。

②、內(nèi)存保護(hù),設(shè)置存儲(chǔ)器的訪問(wèn)權(quán)限,設(shè)置虛擬存儲(chǔ)空間的緩沖特性。

我們重點(diǎn)來(lái)看一下第①點(diǎn),也就是虛擬空間到物理空間的映射,也叫做地址映射。首先了解兩個(gè)地址概念:虛擬地址(VA,Virtual Address)、物理地址(PA,Physcical Address)。對(duì)于32位的處理器來(lái)說(shuō),虛擬地址范圍是2^32=4GB,我們的開發(fā)板上有512MB的DDR3,這512MB的內(nèi)存就是物理內(nèi)存,經(jīng)過(guò)MMU可以將其映射到整個(gè)4GB的虛擬空間,如圖41.1.1所示:

圖41.1.1內(nèi)存映射

物理內(nèi)存只有512MB,虛擬內(nèi)存有4GB,那么肯定存在多個(gè)虛擬地址映射到同一個(gè)物理地址上去,虛擬地址范圍比物理地址范圍大的問(wèn)題處理器自會(huì)處理,這里我們不要去深究,因?yàn)镸MU是很復(fù)雜的一個(gè)東西,后續(xù)有時(shí)間的話正點(diǎn)原子Linux團(tuán)隊(duì)會(huì)專門做MMU專題教程。

Linux內(nèi)核啟動(dòng)的時(shí)候會(huì)初始化MMU,設(shè)置好內(nèi)存映射,設(shè)置好以后CPU訪問(wèn)的都是虛擬地址。比如I.MX6ULL的GPIO1_IO03引腳的復(fù)用寄存器IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03的地址為0X020E0068。如果沒(méi)有開啟MMU的話直接向0X020E0068這個(gè)寄存器地址寫入數(shù)據(jù)就可以配置GPIO1_IO03的復(fù)用功能。現(xiàn)在開啟了MMU,并且設(shè)置了內(nèi)存映射,因此就不能直接向0X020E0068這個(gè)地址寫入數(shù)據(jù)了。我們必須得到0X020E0068這個(gè)物理地址在Linux系統(tǒng)里面對(duì)應(yīng)的虛擬地址,這里就涉及到了物理內(nèi)存和虛擬內(nèi)存之間的轉(zhuǎn)換,需要用到兩個(gè)函數(shù):ioremap和iounmap。

1、ioremap函數(shù)

ioremap函數(shù)用于獲取指定物理地址空間對(duì)應(yīng)的虛擬地址空間,定義在arch/arm/include/asm/io.h文件中,定義如下:

示例代碼41.1.1 ioremap函數(shù)

1 #define ioremap(cookie,size) __arm_ioremap((cookie),(size), MT_DEVICE)

2

3void __iomem * __arm_ioremap(phys_addr_t phys_addr,size_t size,unsignedint mtype)

4{

5return arch_ioremap_caller(phys_addr, size, mtype,

__builtin_return_address(0));

6}

ioremap是個(gè)宏,有兩個(gè)參數(shù):cookie和size,真正起作用的是函數(shù)__arm_ioremap,此函數(shù)有三個(gè)參數(shù)和一個(gè)返回值,這些參數(shù)和返回值的含義如下:

phys_addr:要映射給的物理起始地址。

size:要映射的內(nèi)存空間大小。

mtype:ioremap的類型,可以選擇MT_DEVICE、MT_DEVICE_NONSHARED、MT_DEVICE_CACHED和MT_DEVICE_WC,ioremap函數(shù)選擇MT_DEVICE。

返回值:__iomem類型的指針,指向映射后的虛擬空間首地址。

假如我們要獲取I.MX6ULL的IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03寄存器對(duì)應(yīng)的虛擬地址,使用如下代碼即可:

#define SW_MUX_GPIO1_IO03_BASE (0X020E0068)

static void __iomem* SW_MUX_GPIO1_IO03;

SW_MUX_GPIO1_IO03 = ioremap(GPIO1_GDIR_BASE, 4);

宏SW_MUX_GPIO1_IO03_BASE是寄存器物理地址,SW_MUX_GPIO1_IO03是映射后的虛擬地址。對(duì)于I.MX6ULL來(lái)說(shuō)一個(gè)寄存器是4字節(jié)(32位)的,因此映射的內(nèi)存長(zhǎng)度為4。映射完成以后直接對(duì)SW_MUX_GPIO1_IO03進(jìn)行讀寫操作即可。

2、iounmap函數(shù)

卸載驅(qū)動(dòng)的時(shí)候需要使用iounmap函數(shù)釋放掉ioremap函數(shù)所做的映射,iounmap函數(shù)原型如下:

示例代碼41.1.2 iounmap函數(shù)原型

void iounmap (volatilevoid __iomem *addr)

iounmap只有一個(gè)參數(shù)addr,此參數(shù)就是要取消映射的虛擬地址空間首地址。假如我們現(xiàn)在要取消掉IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03寄存器的地址映射,使用如下代碼即可:

iounmap(SW_MUX_GPIO1_IO03);

41.1.2 I/O內(nèi)存訪問(wèn)函數(shù)

這里說(shuō)的I/O是輸入/輸出的意思,并不是我們學(xué)習(xí)單片機(jī)的時(shí)候講的GPIO引腳。這里涉及到兩個(gè)概念:I/O端口和I/O內(nèi)存。當(dāng)外部寄存器或內(nèi)存映射到IO空間時(shí),稱為I/O端口。當(dāng)外部寄存器或內(nèi)存映射到內(nèi)存空間時(shí),稱為I/O內(nèi)存。但是對(duì)于ARM來(lái)說(shuō)沒(méi)有I/O空間這個(gè)概念,因此ARM體系下只有I/O內(nèi)存(可以直接理解為內(nèi)存)。使用ioremap函數(shù)將寄存器的物理地址映射到虛擬地址以后,我們就可以直接通過(guò)指針訪問(wèn)這些地址,但是Linux內(nèi)核不建議這么做,而是推薦使用一組操作函數(shù)來(lái)對(duì)映射后的內(nèi)存進(jìn)行讀寫操作。

1、讀操作函數(shù)

讀操作函數(shù)有如下幾個(gè):

示例代碼41.1.2.1 讀操作函數(shù)

1 u8 readb(constvolatilevoid __iomem *addr)

2 u16 readw(constvolatilevoid __iomem *addr)

3 u32 readl(constvolatilevoid __iomem *addr)

readb、readw和readl這三個(gè)函數(shù)分別對(duì)應(yīng)8bit、16bit和32bit讀操作,參數(shù)addr就是要讀取寫內(nèi)存地址,返回值就是讀取到的數(shù)據(jù)。

2、寫操作函數(shù)

寫操作函數(shù)有如下幾個(gè):

示例代碼41.1.2.2 寫操作函數(shù)

1void writeb(u8 value,volatilevoid __iomem *addr)

2void writew(u16 value,volatilevoid __iomem *addr)

3void writel(u32 value,volatilevoid __iomem *addr)

writeb、writew和writel這三個(gè)函數(shù)分別對(duì)應(yīng)8bit、16bit和32bit寫操作,參數(shù)value是要寫入的數(shù)值,addr是要寫入的地址。

41.2 硬件原理圖分析

本章實(shí)驗(yàn)硬件原理圖參考8.3小節(jié)即可。

41.3 實(shí)驗(yàn)程序編寫

本實(shí)驗(yàn)對(duì)應(yīng)的例程路徑為:開發(fā)板光盤->2、Linux驅(qū)動(dòng)例程->2_led。

本章實(shí)驗(yàn)編寫Linux下的LED燈驅(qū)動(dòng),可以通過(guò)應(yīng)用程序?qū).MX6U-ALPHA開發(fā)板上的LED燈進(jìn)行開關(guān)操作。

41.3.1 LED燈驅(qū)動(dòng)程序編寫

新建名為“2_led”文件夾,然后在2_led文件夾里面創(chuàng)建VSCode工程,工作區(qū)命名為“l(fā)ed”。工程創(chuàng)建好以后新建led.c文件,此文件就是led的驅(qū)動(dòng)文件,在led.c里面輸入如下內(nèi)容:

示例代碼41.3.1.1 led.c驅(qū)動(dòng)文件代碼

1 #include <linux/types.h>

2 #include <linux/kernel.h>

3 #include <linux/delay.h>

4 #include <linux/ide.h>

5 #include <linux/init.h>

6 #include <linux/module.h>

7 #include <linux/errno.h>

8 #include <linux/gpio.h>

9 #include <asm/mach/map.h>

10 #include <asm/uaccess.h>

11 #include <asm/io.h>

12/***************************************************************

13 Copyright ? ALIENTEK Co., Ltd. 1998-2029. All rights reserved.

14文件名 : led.c

15作者 : 左忠凱

16版本 : V1.0

17描述 : LED驅(qū)動(dòng)文件。

18其他 : 無(wú)

19論壇 : http://www.openedv.com

20日志 : 初版V1.0 2019/1/30 左忠凱創(chuàng)建

21 ***************************************************************/

22 #define LED_MAJOR 200 /* 主設(shè)備號(hào) */

23 #define LED_NAME "led" /* 設(shè)備名字 */

24

25 #define LEDOFF 0 /* 關(guān)燈 */

26 #define LEDON 1 /* 開燈 */

27

28/* 寄存器物理地址 */

29 #define CCM_CCGR1_BASE (0X020C406C)

30 #define SW_MUX_GPIO1_IO03_BASE (0X020E0068)

31 #define SW_PAD_GPIO1_IO03_BASE (0X020E02F4)

32 #define GPIO1_DR_BASE (0X0209C000)

33 #define GPIO1_GDIR_BASE (0X0209C004)

34

35/* 映射后的寄存器虛擬地址指針 */

36staticvoid __iomem *IMX6U_CCM_CCGR1;

37staticvoid __iomem *SW_MUX_GPIO1_IO03;

38staticvoid __iomem *SW_PAD_GPIO1_IO03;

39staticvoid __iomem *GPIO1_DR;

40staticvoid __iomem *GPIO1_GDIR;

41

42/*

43 * @description : LED打開/關(guān)閉

44 * @param - sta : LEDON(0) 打開LED,LEDOFF(1) 關(guān)閉LED

45 * @return : 無(wú)

46 */

47void led_switch(u8 sta)

48{

49 u32 val =0;

50if(sta == LEDON){

51 val = readl(GPIO1_DR);

52 val &=~(1<<3);

53 writel(val, GPIO1_DR);

54}elseif(sta == LEDOFF){

55 val = readl(GPIO1_DR);

56 val|=(1<<3);

57 writel(val, GPIO1_DR);

58}

59}

60

61/*

62 * @description : 打開設(shè)備

63 * @param – inode : 傳遞給驅(qū)動(dòng)的inode

64 * @param - filp : 設(shè)備文件,file結(jié)構(gòu)體有個(gè)叫做private_data的成員變量

65 * 一般在open的時(shí)候?qū)rivate_data指向設(shè)備結(jié)構(gòu)體。

66 * @return : 0 成功;其他失敗

67 */

68staticint led_open(struct inode *inode,struct file *filp)

69{

70return0;

71}

72

73/*

74 * @description : 從設(shè)備讀取數(shù)據(jù)

75 * @param - filp : 要打開的設(shè)備文件(文件描述符)

76 * @param - buf : 返回給用戶空間的數(shù)據(jù)緩沖區(qū)

77 * @param - cnt : 要讀取的數(shù)據(jù)長(zhǎng)度

78 * @param - offt : 相對(duì)于文件首地址的偏移

79 * @return : 讀取的字節(jié)數(shù),如果為負(fù)值,表示讀取失敗

80 */

81static ssize_t led_read(struct file *filp,char __user *buf,

size_t cnt, loff_t *offt)

82{

83return0;

84}

85

86/*

87 * @description : 向設(shè)備寫數(shù)據(jù)

88 * @param - filp : 設(shè)備文件,表示打開的文件描述符

89 * @param - buf : 要寫給設(shè)備寫入的數(shù)據(jù)

90 * @param - cnt : 要寫入的數(shù)據(jù)長(zhǎng)度

91 * @param - offt : 相對(duì)于文件首地址的偏移

92 * @return : 寫入的字節(jié)數(shù),如果為負(fù)值,表示寫入失敗

93 */

94static ssize_t led_write(struct file *filp,constchar __user *buf,

size_t cnt, loff_t *offt)

95{

96int retvalue;

97unsignedchar databuf[1];

98unsignedchar ledstat;

99

100 retvalue = copy_from_user(databuf, buf, cnt);

101if(retvalue <0){

102 printk("kernel write failed!rn");

103return-EFAULT;

104}

105

106 ledstat = databuf[0]; /* 獲取狀態(tài)值 */

107

108if(ledstat == LEDON){

109 led_switch(LEDON); /* 打開LED燈 */

110}elseif(ledstat == LEDOFF){

111 led_switch(LEDOFF); /* 關(guān)閉LED燈 */

112}

113return0;

114}

115

116/*

117 * @description : 關(guān)閉/釋放設(shè)備

118 * @param – filp : 要關(guān)閉的設(shè)備文件(文件描述符)

119 * @return : 0 成功;其他失敗

120 */

121staticint led_release(struct inode *inode,struct file *filp)

122{

123return0;

124}

125

126/* 設(shè)備操作函數(shù) */

127staticstruct file_operations led_fops ={

128.owner = THIS_MODULE,

129.open = led_open,

130.read = led_read,

131.write = led_write,

132.release = led_release,

133};

134

135/*

136 * @description : 驅(qū)動(dòng)出口函數(shù)

137 * @param : 無(wú)

138 * @return : 無(wú)

139 */

140staticint __init led_init(void)

141{

142int retvalue =0;

143 u32 val =0;

144

145/* 初始化LED */

146/* 1、寄存器地址映射 */

147 IMX6U_CCM_CCGR1 = ioremap(CCM_CCGR1_BASE,4);

148 SW_MUX_GPIO1_IO03 = ioremap(SW_MUX_GPIO1_IO03_BASE,4);

149 SW_PAD_GPIO1_IO03 = ioremap(SW_PAD_GPIO1_IO03_BASE,4);

150 GPIO1_DR = ioremap(GPIO1_DR_BASE,4);

151 GPIO1_GDIR = ioremap(GPIO1_GDIR_BASE,4);

152

153/* 2、使能GPIO1時(shí)鐘 */

154 val = readl(IMX6U_CCM_CCGR1);

155 val &=~(3<<26);/* 清除以前的設(shè)置 */

156 val |=(3<<26);/* 設(shè)置新值 */

157 writel(val, IMX6U_CCM_CCGR1);

158

159/* 3、設(shè)置GPIO1_IO03的復(fù)用功能,將其復(fù)用為

160 * GPIO1_IO03,最后設(shè)置IO屬性。

161 */

162 writel(5, SW_MUX_GPIO1_IO03);

163

164/* 寄存器SW_PAD_GPIO1_IO03設(shè)置IO屬性 */

165 writel(0x10B0, SW_PAD_GPIO1_IO03);

166

167/* 4、設(shè)置GPIO1_IO03為輸出功能 */

168 val = readl(GPIO1_GDIR);

169 val &=~(1<<3);/* 清除以前的設(shè)置 */

170 val |=(1<<3);/* 設(shè)置為輸出 */

171 writel(val, GPIO1_GDIR);

172

173/* 5、默認(rèn)關(guān)閉LED */

174 val = readl(GPIO1_DR);

175 val |=(1<<3);

176 writel(val, GPIO1_DR);

177

178/* 6、注冊(cè)字符設(shè)備驅(qū)動(dòng) */

179 retvalue = register_chrdev(LED_MAJOR, LED_NAME,&led_fops);

180if(retvalue <0){

181 printk("register chrdev failed!rn");

182return-EIO;

183}

184return0;

185}

186

187/*

188 * @description : 驅(qū)動(dòng)出口函數(shù)

189 * @param : 無(wú)

190 * @return : 無(wú)

191 */

192staticvoid __exit led_exit(void)

193{

194/* 取消映射 */

195 iounmap(IMX6U_CCM_CCGR1);

196 iounmap(SW_MUX_GPIO1_IO03);

197 iounmap(SW_PAD_GPIO1_IO03);

198 iounmap(GPIO1_DR);

199 iounmap(GPIO1_GDIR);

200

201/* 注銷字符設(shè)備驅(qū)動(dòng) */

202 unregister_chrdev(LED_MAJOR, LED_NAME);

203}

204

205 module_init(led_init);

206 module_exit(led_exit);

207 MODULE_LICENSE("GPL");

208 MODULE_AUTHOR("zuozhongkai");

第22~26行,定義了一些宏,包括主設(shè)備號(hào)、設(shè)備名字、LED開/關(guān)宏。

第29~33行,本實(shí)驗(yàn)要用到的寄存器宏定義。

第36~40行,經(jīng)過(guò)內(nèi)存映射以后的寄存器地址指針。

第47~59行,led_switch函數(shù),用于控制開發(fā)板上的LED燈亮滅,當(dāng)參數(shù)sta為L(zhǎng)EDON(0)的時(shí)候打開LED燈,sta為L(zhǎng)EDOFF(1)的時(shí)候關(guān)閉LED燈。

第68~71行,led_open函數(shù),為空函數(shù),可以自行在此函數(shù)中添加相關(guān)內(nèi)容,一般在此函數(shù)中將設(shè)備結(jié)構(gòu)體作為參數(shù)filp的私有數(shù)據(jù)(filp->private_data)。

第81~84行,led_read函數(shù),為空函數(shù),如果想在應(yīng)用程序中讀取LED的狀態(tài),那么就可以在此函數(shù)中添加相應(yīng)的代碼,比如讀取GPIO1_DR寄存器的值,然后返回給應(yīng)用程序。

第94~114行,led_write函數(shù),實(shí)現(xiàn)對(duì)LED燈的開關(guān)操作,當(dāng)應(yīng)用程序調(diào)用write函數(shù)向led設(shè)備寫數(shù)據(jù)的時(shí)候此函數(shù)就會(huì)執(zhí)行。首先通過(guò)函數(shù)copy_from_user獲取應(yīng)用程序發(fā)送過(guò)來(lái)的操作信息(打開還是關(guān)閉LED),最后根據(jù)應(yīng)用程序的操作信息來(lái)打開或關(guān)閉LED燈。

第121~124行,led_release函數(shù),為空函數(shù),可以自行在此函數(shù)中添加相關(guān)內(nèi)容,一般關(guān)閉設(shè)備的時(shí)候會(huì)釋放掉led_open函數(shù)中添加的私有數(shù)據(jù)。

第127~133行,設(shè)備文件操作結(jié)構(gòu)體led_fops的定義和初始化。

第140~185行,驅(qū)動(dòng)入口函數(shù)led_init,此函數(shù)實(shí)現(xiàn)了LED的初始化工作,147~151行通過(guò)ioremap函數(shù)獲取物理寄存器地址映射后的虛擬地址,得到寄存器對(duì)應(yīng)的虛擬地址以后就可以完成相關(guān)初始化工作了。比如是能GPIO1時(shí)鐘、設(shè)置GPIO1_IO03復(fù)用功能、配置GPIO1_IO03的屬性等等。最后,最重要的一步!使用register_chrdev函數(shù)注冊(cè)led這個(gè)字符設(shè)備。

第192~202行,驅(qū)動(dòng)出口函數(shù)led_exit,首先使用函數(shù)iounmap取消內(nèi)存映射,最后使用函數(shù)unregister_chrdev注銷led這個(gè)字符設(shè)備。

第205~206行,使用module_init和module_exit這兩個(gè)函數(shù)指定led設(shè)備驅(qū)動(dòng)加載和卸載函數(shù)。

第207~208行,添加LICENSE和作者信息。

41.3.2 編寫測(cè)試APP

編寫測(cè)試APP,led驅(qū)動(dòng)加載成功以后手動(dòng)創(chuàng)建/dev/led節(jié)點(diǎn),應(yīng)用APP通過(guò)操作/dev/led文件來(lái)完成對(duì)LED設(shè)備的控制。向/dev/led文件寫0表示關(guān)閉LED燈,寫1表示打開LED燈。新建ledApp.c文件,在里面輸入如下內(nèi)容:

示例代碼41.3.2.1 ledApp.c文件代碼

1 #include "stdio.h"

2 #include "unistd.h"

3 #include "sys/types.h"

4 #include "sys/stat.h"

5 #include "fcntl.h"

6 #include "stdlib.h"

7 #include "string.h"

8/***************************************************************

9 Copyright ? ALIENTEK Co., Ltd. 1998-2029. All rights reserved.

10文件名 : ledApp.c

11作者 : 左忠凱

12版本 : V1.0

13描述 : LED驅(qū)測(cè)試APP。

14其他 : 無(wú)

15使用方法 :./ledtest /dev/led 0 關(guān)閉LED

16 ./ledtest /dev/led 1 打開LED

17論壇 : http://www.openedv.com

18日志 : 初版V1.0 2019/1/30 左忠凱創(chuàng)建

19 ***************************************************************/

20

21 #define LEDOFF 0

22 #define LEDON 1

23

24/*

25 * @description : main主程序

26 * @param - argc : argv數(shù)組元素個(gè)數(shù)

27 * @param - argv : 具體參數(shù)

28 * @return : 0 成功;其他失敗

29 */

30int main(int argc,char*argv[])

31{

32 int fd, retvalue;

33 char*filename;

34 unsignedchar databuf[1];

35

36 if(argc !=3){

37 printf("Error Usage!rn");

38 return-1;

39 }

40

41 filename = argv[1];

42

43 /* 打開led驅(qū)動(dòng) */

44 fd = open(filename, O_RDWR);

45 if(fd <0){

46 printf("file %s open failed!rn", argv[1]);

47 return-1;

48 }

49

50 databuf[0]= atoi(argv[2]);/* 要執(zhí)行的操作:打開或關(guān)閉 */

51

52 /* 向/dev/led文件寫入數(shù)據(jù) */

53 retvalue = write(fd, databuf,sizeof(databuf));

54 if(retvalue <0){

55 printf("LED Control Failed!rn");

56 close(fd);

57 return-1;

58 }

59

60 retvalue = close(fd);/* 關(guān)閉文件 */

61 if(retvalue <0){

62 printf("file %s close failed!rn", argv[1]);

63 return-1;

64 }

65 return0;

66}

ledApp.c的內(nèi)容還是很簡(jiǎn)單的,就是對(duì)led的驅(qū)動(dòng)文件進(jìn)行最基本的打開、關(guān)閉、寫操作等。

41.4 運(yùn)行測(cè)試

41.4.1 編譯驅(qū)動(dòng)程序和測(cè)試APP

1、編譯驅(qū)動(dòng)程序

編寫Makefile文件,本章實(shí)驗(yàn)的Makefile文件和第四十章實(shí)驗(yàn)基本一樣,只是將obj-m變量的值改為led.o,Makefile內(nèi)容如下所示:

示例代碼41.4.1.1 Makefile文件

1 KERNELDIR:= /home/zuozhongkai/linux/IMX6ULL/linux/temp/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek

......

4 obj-m := led.o

......

11 clean:

12$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean

第4行,設(shè)置obj-m變量的值為led.o。

輸入如下命令編譯出驅(qū)動(dòng)模塊文件:

make-j32

編譯成功以后就會(huì)生成一個(gè)名為“l(fā)ed.ko”的驅(qū)動(dòng)模塊文件。

2、編譯測(cè)試APP

輸入如下命令編譯測(cè)試ledApp.c這個(gè)測(cè)試程序:

arm-linux-gnueabihf-gcc ledApp.c -o ledApp

編譯成功以后就會(huì)生成ledApp這個(gè)應(yīng)用程序。

41.4.2 運(yùn)行測(cè)試

將上一小節(jié)編譯出來(lái)的led.ko和ledApp這兩個(gè)文件拷貝到rootfs/lib/modules/4.1.15目錄中,重啟開發(fā)板,進(jìn)入到目錄lib/modules/4.1.15中,輸入如下命令加載led.ko驅(qū)動(dòng)模塊:

depmod //第一次加載驅(qū)動(dòng)的時(shí)候需要運(yùn)行此命令

modprobe led.ko //加載驅(qū)動(dòng)

驅(qū)動(dòng)加載成功以后創(chuàng)建“/dev/led”設(shè)備節(jié)點(diǎn),命令如下:

mknod /dev/led c 200 0

驅(qū)動(dòng)節(jié)點(diǎn)創(chuàng)建成功以后就可以使用ledApp軟件來(lái)測(cè)試驅(qū)動(dòng)是否工作正常,輸入如下命令打開LED燈:

./ledApp /dev/led 1 //打開LED燈

輸入上述命令以后觀察I.MX6U-ALPHA開發(fā)板上的紅色LED燈是否點(diǎn)亮,如果點(diǎn)亮的話說(shuō)明驅(qū)動(dòng)工作正常。在輸入如下命令關(guān)閉LED燈:

./ledApp /dev/led 0 //關(guān)閉LED燈

輸入上述命令以后觀察I.MX6U-ALPHA開發(fā)板上的紅色LED燈是否熄滅,如果熄滅的話說(shuō)明我們編寫的LED驅(qū)動(dòng)工作完全正常!至此,我們成功編寫了第一個(gè)真正的Linux驅(qū)動(dòng)設(shè)備程序。

如果要卸載驅(qū)動(dòng)的話輸入如下命令即可:

rmmodled.ko

總結(jié)

以上是生活随笔為你收集整理的linux cached释放_正点原子Linux第四十一章嵌入式Linux LED驱动开发实验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

aaa日本高清在线播放免费观看 | 久久久久久久久久网站 | 色www.| 97超碰成人 | 色资源在线 | 国产一区二区三区免费观看视频 | 久久久久亚洲精品国产 | 国产真实精品久久二三区 | 最新日韩在线 | 在线看小早川怜子av | 日本99热| 国产又粗又猛又黄又爽视频 | 99精品久久只有精品 | 国内视频一区二区 | 成人a级网站 | 成人黄色大片在线免费观看 | 亚洲欧美日本一区二区三区 | 日本精品一二区 | www成人精品 | 久久精品视频4 | 中文字幕婷婷 | 亚洲综合色婷婷 | www.久久久久| av免费看av | 中文字幕在线精品 | 亚洲综合视频在线播放 | 九九热精品视频在线播放 | 99精品久久精品一区二区 | 亚洲第一香蕉视频 | 黄色软件网站在线观看 | 日本黄色片一区二区 | 狠狠干网址 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 成人免费影院 | 色天天 | 国产精品久久片 | 精品国产一区二区三区久久久 | 国产成人一区三区 | 免费观看成年人视频 | 激情欧美xxxx | 亚洲天堂网视频 | 久久亚洲综合国产精品99麻豆的功能介绍 | 亚洲精品玖玖玖av在线看 | 欧美日韩国产二区三区 | 九色视频网站 | 天天弄天天干 | 丝袜精品视频 | 人人爽人人av | 日韩精品久久久久 | 久久av福利| 免费看色网站 | 在线观看自拍 | 香蕉视频导航 | 久久久久二区 | 久草在线中文888 | 亚洲精品国产精品久久99 | 日韩成片| 国产成人久久精品一区二区三区 | 4p变态网欧美系列 | 91伊人久久大香线蕉蜜芽人口 | 国产精品18久久久 | 黄色软件在线观看免费 | 99久高清在线观看视频99精品热在线观看视频 | 一级精品视频在线观看宜春院 | 国产99久久久精品视频 | 国产黄免费 | 色资源二区在线视频 | 国产黄色免费 | 中文字幕色在线视频 | 久久亚洲国产精品 | 日韩在线免费播放 | 日本成人中文字幕在线观看 | 欧洲精品在线视频 | 亚洲精品1区2区3区 超碰成人网 | 五月婷婷中文字幕 | 欧美男同网站 | 国产特级毛片aaaaaaa高清 | 亚洲黄色免费网站 | 九九热久久免费视频 | 天堂av一区二区 | 欧美日韩另类视频 | 麻豆va一区二区三区久久浪 | 成人在线免费观看网站 | 中文字幕在线观看免费高清电影 | 欧美成年人在线视频 | 久久久亚洲国产精品麻豆综合天堂 | 久久国产精品久久精品国产演员表 | 久草在线免费播放 | 婷婷在线播放 | 日韩大片在线免费观看 | japanesexxxhd奶水| 啪嗒啪嗒免费观看完整版 | 国产色黄网站 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 日韩经典一区二区三区 | 亚洲va天堂va欧美ⅴa在线 | av电影在线不卡 | 亚洲dvd | 在线中文字幕一区二区 | 日韩久久电影 | 99热精品国产一区二区在线观看 | 337p日本大胆噜噜噜噜 | 九月婷婷人人澡人人添人人爽 | 国产一级视频在线 | 日韩午夜视频在线观看 | www99精品| 91午夜精品 | 久草视频在线免费看 | 黄色影院在线免费观看 | 91最新在线视频 | 日韩一区二区免费播放 | 中国成人一区 | 成人国产一区 | 懂色av懂色av粉嫩av分享吧 | 欧美一区三区四区 | 亚洲婷婷伊人 | 午夜电影av | 久久久久久久久爱 | 国产无套一区二区三区久久 | 91久久一区二区 | 日p视频在线观看 | 九色在线视频 | 欧美黑人性爽 | 免费网站观看www在线观看 | www.成人久久 | 久久99久久99精品中文字幕 | 欧美成人日韩 | 激情在线网站 | 在线观看涩涩 | 亚洲精品国产高清 | 亚洲视频在线免费观看 | 在线观看视频国产 | 国产在线观看免费观看 | 亚洲成人影音 | 四虎精品成人免费网站 | 亚洲国产中文字幕在线 | 特级西西444www高清大视频 | 亚洲精品中文字幕在线观看 | 91欧美在线 | 在线观看黄色的网站 | 超碰99人人 | 超碰在线观看av | 999成人网| 久久久久久久综合色一本 | 深爱激情综合网 | 欧美久久久 | 成人av教育 | 1024手机在线看 | a级国产乱理论片在线观看 特级毛片在线观看 | 国产生活一级片 | 美女黄视频免费看 | 久久久噜噜噜久久久 | 中文字幕 国产专区 | 亚洲综合五月天 | 黄在线| 夜又临在线观看 | 韩国在线一区二区 | 亚洲在线视频免费观看 | 欧美日韩不卡一区二区三区 | 中文字幕在线日亚洲9 | 国产成人黄色 | 日韩高清不卡在线 | 精品一区二区亚洲 | 91| 国产亚洲精品久久久网站好莱 | 久久久久国产成人精品亚洲午夜 | 日本成人中文字幕在线观看 | 久久九九免费视频 | 在线日韩中文字幕 | 97人人模人人爽人人喊网 | 色在线最新 | 九九九九精品九九九九 | 日韩簧片在线观看 | 免费不卡中文字幕视频 | 久久理论影院 | 国产爽视频| 国产高清不卡一区二区三区 | av一区二区在线观看中文字幕 | 国产精品21区 | 精精国产xxxx视频在线播放 | 久久国产麻豆 | 四虎影视www | 99久久精品国产一区二区三区 | 热99在线视频 | 亚洲日日夜夜 | 在线观看色网站 | 免费观看av网站 | 麻豆激情电影 | 香蕉视频国产在线 | 成人午夜电影在线 | 97看片网| 国产一二区视频 | 五月婷婷狠狠 | 麻豆91网站 | 91麻豆看国产在线紧急地址 | 日韩中文在线视频 | 五月婷婷丁香六月 | 日韩免费在线一区 | 国产在线国偷精品产拍 | 国产亚洲在线视频 | 日本中文字幕免费观看 | 日韩免费一区二区在线观看 | www.婷婷色 | 国产精品1区2区 | 亚洲综合色激情五月 | 久久99精品久久久久蜜臀 | 国产剧情一区 | 91女子私密保健养生少妇 | 中文字幕第一页在线播放 | 免费色网 | 久久九九网站 | 日本护士撒尿xxxx18 | 久久精品综合视频 | 国产亚洲精品美女 | 伊人婷婷久久 | 97品白浆高清久久久久久 | 99热在线免费观看 | 视频高清 | 国产另类xxxxhd高清 | 中文字幕在线乱 | 超碰av在线 | 日韩亚洲国产精品 | 亚洲欧美在线视频免费 | 一区二区视频电影在线观看 | 日韩大片免费观看 | 国产一级特黄毛片在线毛片 | 最近更新好看的中文字幕 | 亚洲国产成人精品在线 | 黄色字幕网 | 五月天色中色 | 91porny九色在线播放 | 天堂视频中文在线 | av在线官网 | 日韩草比| 6080yy午夜一二三区久久 | 亚洲黄色精品 | 日韩午夜在线 | 91精品999| 国产剧情在线一区 | 日韩久久久 | 超碰在线最新 | 91激情视频在线观看 | 久草视频在 | 91av资源在线 | 欧美国产日韩中文 | 欧美日韩国产精品爽爽 | 在线精品视频在线观看高清 | 在线不卡a | 国产精品一区二区免费视频 | 中文在线天堂资源 | 久99久在线视频 | 97精品国产97久久久久久免费 | 国产精品成人免费 | 四虎影视成人精品国库在线观看 | 在线免费观看视频a | 国产精品免费观看网站 | 麻豆视频免费版 | 91pony九色丨交换 | 色婷婷啪啪免费在线电影观看 | 美女性爽视频国产免费app | 日本午夜在线亚洲.国产 | www.色婷婷 | 91免费看黄| 国产 在线 日韩 | 福利一区视频 | 亚洲乱亚洲乱亚洲 | 中文字幕高清在线 | 欧美精品网站 | 久久综合综合久久综合 | 91中文字幕在线观看 | 97色在线观看 | 日本一区二区高清不卡 | 久草9视频| 人人超在线公开视频 | 国产亚洲精品av | 国产拍在线| 成人在线观看网址 | 色综合激情久久 | 91精品国自产在线偷拍蜜桃 | 亚洲视频第一页 | 韩国av在线播放 | 久久深夜| 欧美日韩高清一区二区 | 国产亚洲欧美在线视频 | 免费aa大片 | 国产精品久久久久久婷婷天堂 | 欧美精选一区二区三区 | 91福利小视频 | 91在线看免费 | 97看片网 | 97超碰在线久草超碰在线观看 | 毛片网在线观看 | 日韩黄色av网站 | 精品国产伦一区二区三区观看方式 | 看片黄网站 | 黄色免费视频在线观看 | 欧美激情在线网站 | 欧洲亚洲激情 | 麻豆国产精品va在线观看不卡 | 久久精品—区二区三区 | 天堂av在线免费观看 | 亚洲成人精品av | 日韩精品免费在线视频 | 亚洲美女视频网 | 久久99视频免费 | 日韩欧美视频一区 | 91久久国产综合精品女同国语 | 成人久久18免费网站麻豆 | 国产精品s色 | 中文字幕视频三区 | 午夜成人影视 | 96精品视频 | 日日爽 | 久久不见久久见免费影院 | 免费三及片 | 国产一级电影网 | japanese黑人亚洲人4k | www.av在线播放 | 国产精品美女久久久久久久 | 国产又粗又硬又爽的视频 | 91污污| 国产艹b视频 | 久久综合精品国产一区二区三区 | 在线午夜电影神马影院 | 狠狠色丁香久久婷婷综合丁香 | 久久九九免费视频 | 国产在线1区 | 精品免费视频. | 欧美 日韩 国产 中文字幕 | 很污的网站 | 91精品一区二区三区蜜桃 | 天天操夜夜操天天射 | 亚洲国产久 | 91久久精品日日躁夜夜躁国产 | 在线午夜| 国产一区视频在线播放 | 日韩在线中文字幕视频 | 国产精品久久免费看 | 国产高清在线免费视频 | 色亚洲网 | 天堂资源在线观看视频 | 黄污在线看 | 黄色片视频在线观看 | 国产成人一区二区三区电影 | 久久久久免费观看 | 成年人网站免费在线观看 | 日韩欧美一区二区三区免费观看 | 成+人+色综合 | 精品一区91| 久久国产成人午夜av影院宅 | 奇米影视四色8888 | 国产xx在线 | wwwwww黄| 成人av电影免费 | 美女免费网视频 | 在线黄网站 | 免费日韩一区二区三区 | 久久成人亚洲欧美电影 | 99久久国产免费,99久久国产免费大片 | 丝袜美腿一区 | 毛片一区二区 | 深夜福利视频在线观看 | 亚洲一区二区三区四区在线视频 | 东方av在线免费观看 | 国产精品久久久久久久久久久免费 | 一区二区三区在线观看免费 | 四虎影视精品成人 | 97视频免费 | 天天综合色 | 国产视频 亚洲视频 | 一区二区国产精品 | 特级毛片在线免费观看 | 国外调教视频网站 | 成人免费观看完整版电影 | 亚洲精品91天天久久人人 | 婷婷久久丁香 | 中文字幕av在线播放 | 亚洲三级黄 | 午夜性福利 | 色婷婷狠狠五月综合天色拍 | 黄色在线免费观看网站 | 国产精品久久麻豆 | 日韩理论电影在线 | 色资源网免费观看视频 | 福利一区二区 | 亚洲精品88欧美一区二区 | 丁香激情综合久久伊人久久 | 日韩18p| 国产成人三级在线 | 免费在线看v | 99精品黄色片免费大全 | 天堂av最新网址 | 亚洲精品播放 | 激情综合五月婷婷 | 亚洲一级特黄 | 国产在线观看免费av | 亚洲欧美怡红院 | 激情视频一区二区 | av一区二区三区在线播放 | 深爱激情站 | 亚洲国产美女精品久久久久∴ | 综合久久久久久久久 | 手机av在线免费观看 | 日韩大片在线免费观看 | 久久成人免费 | 中文字幕日韩有码 | 91精品国产自产91精品 | 在线视频 精品 | 国产免费观看视频 | 日韩网站视频 | 亚洲免费黄色 | 精品美女久久久久久免费 | 国产黄在线观看 | 美女福利视频一区二区 | 天天操月月操 | 天天干天天做 | 国产女人40精品一区毛片视频 | 中文字幕视频一区二区 | 蜜臀一区二区三区精品免费视频 | 国产一区视频在线播放 | 免费日p视频 | av手机在线播放 | 欧美精品一区在线 | 久久精品视频一 | 久久国产网 | 精品一二三四视频 | 日韩欧美黄色网址 | 九九九九九精品 | 久久精品久久综合 | 精品影院一区二区久久久 | 日韩av一区在线观看 | 国产高清在线免费观看 | 黄色小网站在线 | 久久99久久99精品 | 欧美综合色在线图区 | 波多野结衣理论片 | 中国一级特黄毛片大片久久 | 国产成人一区二区在线观看 | 91桃色免费观看 | 亚洲综合射 | 久久爱综合 | 欧美亚洲精品在线观看 | 亚洲精品网页 | 亚洲精品在线免费观看视频 | 91亚洲永久精品 | 日韩在线观看小视频 | 黄色视屏在线免费观看 | 国产免费久久精品 | 在线三级中文 | 国产成人精品一区二区三区福利 | 亚洲最快最全在线视频 | 天天射天天做 | 亚洲精品欧美成人 | 97成人在线免费视频 | 亚洲精品国产欧美在线观看 | av不卡网站 | 欧美激情精品久久久 | 国产亚洲精品日韩在线tv黄 | 国产精品亚洲片在线播放 | 欧美激情xxxx| 婷婷六月天在线 | 国产成人精品综合久久久 | 最近中文字幕大全中文字幕免费 | 天天射天天干天天插 | av在线看网站 | 西西444www | 久久久久久久久亚洲精品 | 日韩中文字幕免费在线播放 | 免费看v片网站 | 精品一区二区在线看 | 国产又粗又长的视频 | 精品国产自 | 欧美aa级 | 亚洲欧美日本一区二区三区 | 色婷婷www| 中文在线免费看视频 | 国产精品美女999 | 成人黄色小说视频 | 男女啪啪网站 | 在线观看精品国产 | 天天色天天上天天操 | 国内小视频在线观看 | 亚洲视频在线视频 | 日韩成人免费在线观看 | 欧美国产视频在线 | www.黄色片网站 | 欧美最新大片在线看 | 午夜精品在线看 | 亚洲精品在线观看中文字幕 | 超碰人人在 | 欧美一进一出抽搐大尺度视频 | 国产99久久久欧美黑人 | 国产精品久久久久久久久免费看 | 欧美日韩国产一区二区三区在线观看 | 亚洲日韩欧美一区二区在线 | 九九热re| 日韩视频1 | 日韩午夜一级片 | 中文字幕一区av | 五月天综合婷婷 | 91精品一区二区三区蜜臀 | 日韩成人在线一区二区 | 综合激情伊人 | 亚洲综合视频在线观看 | 色视频网址 | 婷婷色5月 | 国产免费久久久久 | 黄色网www| 97超碰在线久草超碰在线观看 | 97精品国产97久久久久久久久久久久 | 韩国av电影在线观看 | 中文 一区二区 | 二区三区中文字幕 | 国内视频一区二区 | 国产一区二区三精品久久久无广告 | 亚洲精品乱码久久久久久蜜桃91 | 在线免费视频一区 | 国产亚洲精品美女 | av一区二区三区在线观看 | 亚洲成人av电影在线 | 天堂网av 在线 | 高清免费av在线 | 婷婷四房综合激情五月 | 伊人久久av | 日日干av| 午夜精品电影 | 欧美视频xxx | 国产一级二级三级视频 | 日韩黄在线观看 | 狠狠狠狠干 | av高清网站在线观看 | 婷婷精品在线视频 | 国产一级免费在线观看 | 日本中文字幕视频 | 精品国产免费观看 | 一级免费看 | 在线观看免费中文字幕 | 久久久久久看片 | 人人揉人人揉人人揉人人揉97 | 黄色av网站在线观看免费 | 欧美日韩二区三区 | 丁香六月在线 | 97在线免费 | 亚洲一二区精品 | 热re99久久精品国产66热 | 成人av一二三区 | 国产精品初高中精品久久 | 丁香婷婷激情 | 日韩视频中文字幕 | 天堂视频中文在线 | 国产美女免费观看 | 日日夜夜天天干 | 天堂va欧美va亚洲va老司机 | 亚洲国产成人精品久久 | 国产人在线成免费视频 | 日本3级在线观看 | 国产手机视频 | 五月天激情视频 | 国产精品亚洲视频 | 青草视频在线 | 人人爽人人爽人人爽 | 韩日av在线 | 久久激情视频 久久 | 日本中文在线播放 | 97爱 | 久久久久久久久久电影 | 国产精品乱码久久久久久1区2区 | 日本久久久久 | 精品高清美女精品国产区 | 国产一级淫片在线观看 | 国产高清亚洲 | 日韩视频在线一区 | 99视频精品免费视频 | 婷婷视频| 在线三级中文 | 日韩在线视频在线观看 | 日韩三级免费观看 | 97超碰免费在线 | 亚洲每日更新 | 国色天香在线观看 | 亚洲精品视频久久 | 日韩免费精品 | 丁香5月婷婷 | 天天干天天插 | 久草国产在线观看 | 午夜精品久久久久久中宇69 | 激情综合站 | 日韩黄色大片在线观看 | 国产精品久久久久永久免费观看 | 国产精品热| 国产亚洲精品美女久久 | 免费高清在线观看成人 | 超碰在线天天 | 精品欧美一区二区精品久久 | 一级黄色毛片 | 在线国产日韩 | 一级做a视频| 高清免费在线视频 | 久久久久久久久久网 | 91av在线免费 | 亚洲精品久久久久中文字幕二区 | 日本中文字幕在线播放 | 国产在线观看中文字幕 | 国产成人精品999在线观看 | 一级黄色在线视频 | 中文字幕在线观看不卡 | 中文字幕精品一区二区三区电影 | 九色精品在线 | 97视频在线观看成人 | 成人网444ppp| 麻豆视频国产精品 | 色99导航 | 久久免费黄色 | 97色资源| av一级一片| 国产无遮挡又黄又爽在线观看 | 亚洲91中文字幕无线码三区 | 91完整版观看 | 亚洲精品视频在线观看免费 | 黄色在线网站噜噜噜 | 日韩av一区二区三区在线观看 | 成人国产精品免费观看 | 国产99久久久国产精品成人免费 | 久久99国产综合精品 | 超碰.com| 免费av一级电影 | 天天爽人人爽夜夜爽 | 久久久精品 一区二区三区 国产99视频在线观看 | 亚洲国产精品电影 | 99视频在线免费看 | 天天操夜夜逼 | 精品国产免费人成在线观看 | 91高清在线 | av看片在线| jizz18欧美18| 黄色大片日本 | 天堂av网址 | www.福利视频 | 91久久久久久久一区二区 | 不卡电影免费在线播放一区 | 综合色久 | 日韩在线观看第一页 | 亚洲国产精品第一区二区 | 久久久久久视频 | 日韩中文字幕免费在线播放 | 黄色字幕网 | 日本精品久久久一区二区三区 | 欧美中文字幕第一页 | 天天操婷婷 | 久一在线 | 最新日韩中文字幕 | 日韩特级黄色片 | 国产精品一区二区在线 | 一区二区成人国产精品 | 日本精油按摩3 | 亚洲黄色av网址 | 成人av电影在线 | 蜜臀av夜夜澡人人爽人人 | 久久久精品免费看 | 超碰97久久 | 超碰人人国产 | 人人干人人上 | 国产手机视频在线播放 | 欧美激情精品久久久久久免费印度 | 天天操天 | 4438全国亚洲精品在线观看视频 | 日韩久久精品一区二区三区下载 | 毛片888 | 啪嗒啪嗒免费观看完整版 | 成年美女黄网站色大片免费看 | 99精品国产一区二区三区不卡 | 婷婷色五| 国产视频99| 婷婷久久一区 | 国产精品一区二区久久 | 亚洲国产美女久久久久 | 久久在线观看 | 国产欧美日韩一区 | 在线免费看片 | 久久9999久久免费精品国产 | 中文字幕的 | 伊人电影在线观看 | 在线观看中文字幕亚洲 | 亚洲午夜久久久久久久久久久 | 黄av在线| 一本到视频在线观看 | 99riav1国产精品视频 | 国产在线精品国自产拍影院 | 国产啊v在线观看 | 欧美国产日韩在线观看 | 久av电影| 波多野结衣日韩 | 国产视频18| 亚洲精品在线二区 | 免费视频一二三区 | 久久免费观看少妇a级毛片 久久久久成人免费 | 婷婷丁香六月天 | 午夜av剧场 | 日韩av电影中文字幕在线观看 | 亚洲视频综合 | 中文字幕中文字幕在线中文字幕三区 | 狠狠的干狠狠的操 | 成年人在线看视频 | 麻豆国产精品va在线观看不卡 | 在线观看免费视频你懂的 | 91色在线观看 | 国产成人精品一区二区三区在线观看 | 色全色在线资源网 | www.国产视频 | 久久精品系列 | 激情动态 | 成人午夜电影在线观看 | 国产精品久久网站 | 91精品国产99久久久久久久 | 国产一级片毛片 | 午夜性福利 | 人九九精品 | 亚洲精品国产高清 | 欧美大荫蒂xxx | 国产精品久久久久久久久久不蜜月 | 欧美日韩国产精品一区 | 国产麻豆果冻传媒在线观看 | 欧美在线观看小视频 | 九九在线精品视频 | 国产精品v欧美精品 | av中文字幕在线免费观看 | 免费看三级黄色片 | 成人国产一区二区 | 99热在线精品观看 | 人人插人人草 | 黄色一区三区 | 日日干天天操 | 天天插天天色 | 成人久久精品视频 | 国产视频一区二区在线 | 国产精品 9999| 99视频在线 | 天堂网中文在线 | 亚洲黄电影| 成人免费视频播放 | 欧洲一区二区在线观看 | 成人小电影在线看 | 成人黄色在线 | 五月婷婷一区 | 国产va精品免费观看 | 欧美91视频 | 夜夜爽天天爽 | 中文字幕在线观看2018 | 曰韩在线 | 天天想夜夜操 | 伊人色综合久久天天 | 99久久99久久精品免费 | 日韩视频一区二区三区 | 一区中文字幕在线观看 | 成人黄色av免费在线观看 | 久久亚洲影院 | 九九久久国产 | 亚洲激情在线播放 | 麻豆精品视频在线观看免费 | 在线观看岛国av | 麻豆久久久久久久 | 91热视频在线观看 | 中文在线字幕免费观看 | www.色午夜 | 亚洲精品高清视频在线观看 | 超碰97在线看 | 亚洲作爱视频 | 亚洲日韩精品欧美一区二区 | 欧美黑人性爽 | 亚洲精品在线播放视频 | 中文字幕免费观看视频 | 日本性xxxxx| 欧美精品中文 | 在线免费中文字幕 | 天堂av色婷婷一区二区三区 | 色吊丝在线永久观看最新版本 | 午夜久久久影院 | 99热超碰| 免费精品国产 | 久久久久久久久久久免费av | 午夜狠狠操 | 国产欧美综合在线观看 | 九九99视频 | 狠狠干中文字幕 | 成年人免费在线观看网站 | 日本中文字幕电影在线免费观看 | 99精品在这里 | 国产999精品久久久影片官网 | 婷婷激情站 | 特级西西444www大胆高清无视频 | 波多野结衣在线播放一区 | 91大神在线观看视频 | av成人在线看 | www.久久91| 天堂av官网 | 欧美成人在线免费观看 | 亚洲欧美日韩国产一区二区 | 日韩在线首页 | 狠狠干在线 | 在线免费观看国产视频 | 丁香婷婷色综合亚洲电影 | 奇米影视777四色米奇影院 | 一级成人在线 | 亚洲精品永久免费视频 | 看黄色91| 91视频麻豆| 国产一区二区在线看 | 久久男人影院 | 亚洲激情网站免费观看 | 久久精品视频在线看 | 国产美女被啪进深处喷白浆视频 | 国产经典三级 | 亚洲尺码电影av久久 | 狠狠狠干| 96av视频| 国产午夜激情视频 | 人人爽夜夜爽 | 午夜电影av | 精品美女在线观看 | 胖bbbb搡bbbb擦bbbb| 亚洲电影第一页av | 欧美另类sm图片 | 国产精品麻豆三级一区视频 | av网站在线免费观看 | 一本一本久久a久久精品牛牛影视 | www久久久久 | 中文字幕视频在线播放 | 国产亚洲久一区二区 | 久久精品国产第一区二区三区 | 蜜臀av夜夜澡人人爽人人桃色 | 日韩激情视频在线观看 | 久久草在线视频国产 | 狠狠色丁香久久综合网 | 精品视频www | 91在线播放视频 | 国产精品久久久一区二区三区网站 | 亚洲黄在线观看 | 久草91视频 | 久久三级视频 | 99久久精品国产欧美主题曲 | 欧美成人91| 亚洲国产精品免费 | 午夜精品一区二区国产 | 日本丶国产丶欧美色综合 | 久久视频一区二区 | 99精品毛片 | 九色琪琪久久综合网天天 | 9热精品| 久久久久久久久免费 | 91成人网页版 | 一级欧美黄 | 婷婷香蕉 | 亚洲国产片 | 99精品在线观看 | 九九综合久久 | 免费福利在线观看 | 97久久精品午夜一区二区 | 日韩av手机在线观看 | 日本免费久久高清视频 | 久久伊人国产精品 | 亚洲精品乱码久久久久久蜜桃动漫 | www亚洲一区 | 欧美日韩国产综合一区二区 | 99久免费精品视频在线观看 | 久久精品欧美一区二区三区麻豆 | 9999在线观看 | 又黄又爽又刺激的视频 | 国产精品情侣视频 | 99九九视频 | 水蜜桃亚洲一二三四在线 | 五月婷婷天堂 | 国产精品一区二区久久 | 密桃av在线 | 日韩精品一区二区不卡 | 四虎免费av | 婷婷综合成人 | www日| 免费高清在线观看成人 | 蜜桃久久久| 成人h电影在线观看 | 欧美精品v国产精品 | 狠狠色伊人亚洲综合网站野外 | 欧美日韩精品免费观看 | 天天操天天弄 | 国产精品久久久久aaaa九色 | 国产亚洲成人精品 | 国产福利一区二区在线 | 综合色亚洲 | 欧美一区二区三区在线 | 久久爱www. | 亚洲做受高潮欧美裸体 | 夜色.com | 激情av综合 | 婷婷色中文网 | 日韩免费在线看 | bbb搡bbb爽爽爽 | 久久久精品国产免费观看同学 | 狠狠狠干狠狠 | 国产片免费在线观看视频 | 国产高清视频网 | 在线观看免费视频你懂的 | 五月花婷婷| 手机在线永久免费观看av片 | 成人久久电影 | 国产高清不卡在线 | 9在线观看免费高清完整 | 国内久久精品 | 99热在线网站| 成人在线黄色电影 | 天天射狠狠干 | 毛片888| 精品中文字幕在线观看 | 最近中文字幕视频网 | 久99热| 国产精品久久网 | 日韩欧美在线观看一区二区三区 | 国产精品久久久久永久免费看 | 中文字幕在线观看网址 | 天天激情站 | 中文字幕久久精品一区 | 日本精品视频在线观看 | 天天射天天艹 | 日韩18p| 免费观看一级 | 亚洲精品中文在线资源 | 欧美色就是色 | 中文字幕有码在线 | 人人玩人人添人人 | 亚洲国产小视频在线观看 | 国产精品永久久久久久久久久 | 精品999| 欧美日韩国产二区三区 | 人成在线免费视频 | 欧美日韩亚洲国产一区 | 成人小视频在线免费观看 | 久久久久国产精品一区二区 | 久久爱影视i | 国产精品99久久99久久久二8 | 天天在线操 | 成人片在线播放 | 久久久99精品免费观看乱色 | 久久久久久久久电影 | 奇米影视8888 | 日韩女同一区二区三区在线观看 | 亚洲精品综合欧美二区变态 | 日本中文乱码卡一卡二新区 | 黄色片网站免费 | 成年人看片| 国产最新视频在线观看 | 免费性网站| 国产一区二区在线观看视频 | 亚洲精品国偷自产在线99热 | av成人免费在线观看 | www久 | 免费看毛片在线 | 激情婷婷 | 国产精品嫩草影院9 | 中文av不卡| 国产精品永久 | 激情电影影院 | 久久99精品国产99久久6尤 | 国产精品99久久久久人中文网介绍 | 黄色软件视频大全免费下载 | av在线电影播放 | 在线观看理论 | 色a4yy| av在线激情| 天天插天天爱 | 欧美 亚洲 另类 激情 另类 | 久久精品久久精品久久39 | 丁香五月网久久综合 | av电影 一区二区 | 日日夜夜骑 | 又黄又爽又色无遮挡免费 | 亚洲成av人片在线观看无 | 午夜av片| 久久精品99久久久久久 | 亚洲最快最全在线视频 | 午夜国产在线 | 人人擦 | 国产护士hd高朝护士1 | 国产精品手机在线播放 | 亚洲国产美女精品久久久久∴ | 精品999在线观看 | 成人av资源网站 | 91亚色在线观看 | 99精品视频在线观看播放 | 中文字幕日韩免费视频 | 日韩在线观看电影 | 2022久久国产露脸精品国产 | 欧美日韩一区二区在线 | 中文字幕在线日亚洲9 | 成人免费观看网站 | 国产成人精品久久亚洲高清不卡 | 日韩一区二区三 | 国产专区精品 | 国产精国产精品 | 久久久国产精品电影 |