99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

OV7725驅(qū)動(dòng)源碼深度解析:V4L2鏈路、移植避坑與調(diào)試實(shí)戰(zhàn)

OV7725驅(qū)動(dòng)源碼深度解析:V4L2鏈路、移植避坑與調(diào)試實(shí)戰(zhàn) 簡(jiǎn)介OV7725 CMOS圖像傳感器驅(qū)動(dòng)源碼包面向嵌入式Linux開發(fā)者適用于需要移植或調(diào)試攝像頭驅(qū)動(dòng)、或基于V4L2框架學(xué)習(xí)傳感器驅(qū)動(dòng)的場(chǎng)景。壓縮包內(nèi)共2個(gè)文件主體由.c驅(qū)動(dòng)實(shí)現(xiàn)和.h頭文件組成整體僅7KB結(jié)構(gòu)精簡(jiǎn)便于快速對(duì)照閱讀。驅(qū)動(dòng)源碼基于V4L2框架實(shí)現(xiàn)了設(shè)備探測(cè)、I2C寄存器讀寫、視頻流開啟與關(guān)閉等核心邏輯并封裝了曝光、增益等圖像參數(shù)的控制接口。通過(guò)這份源碼開發(fā)者可以掌握OV7725傳感器的初始化流程、驅(qū)動(dòng)注冊(cè)方式以及用戶空間通過(guò)標(biāo)準(zhǔn)V4L2接口訪問(wèn)圖像數(shù)據(jù)的完整過(guò)程同時(shí)也可作為自定義CMOS傳感器驅(qū)動(dòng)開發(fā)的實(shí)際參考模板。目前已有358人學(xué)習(xí)下載適合正在研究V4L2驅(qū)動(dòng)開發(fā)或計(jì)劃在ARM平臺(tái)接入OV7725的工程師參考。1. OV7725 這包驅(qū)動(dòng)源碼兩個(gè)文件背后是一條完整的 V4L2 鏈路嵌入式攝像頭調(diào)試現(xiàn)場(chǎng)最怕的不是 sensor 不亮而是拿到一份驅(qū)動(dòng)源碼后不知道它到底跑沒(méi)跑起來(lái)。ov7725.rar 里只有 ov7725.c 和 ov7725.h 兩個(gè)文件看起來(lái)簡(jiǎn)單但 OV7725 這個(gè) CMOS 傳感器要真正在 Linux 下出圖牽扯到 I2C 設(shè)備注冊(cè)、v4l2-subdev 節(jié)點(diǎn)、video_device 字符設(shè)備、vb2 緩沖區(qū)隊(duì)列這一整條鏈路。這篇筆記用我調(diào)過(guò)的一塊 OV7725 攝像頭模組的實(shí)際經(jīng)驗(yàn)把這包源碼拆開講清楚V4L2 框架怎么搭、兩個(gè)文件怎么讀、編譯加載和寄存器配置整套怎么走、以及最常踩的幾個(gè)坑。適合手里正好有 OV7725 模組要往 Linux 里塞的嵌入式工程師也適合第一次接觸 sensor 驅(qū)動(dòng)、想找一份能跑通的參考代碼入手的同學(xué)。2. 先把框架立起來(lái)V4L2 底下 OV7725 怎么掛進(jìn)內(nèi)核2.1 sensor 不是獨(dú)立外設(shè)I2C 從設(shè)備、v4l2-subdev 與 video_device 的關(guān)系很多第一次寫 sensor 驅(qū)動(dòng)的朋友會(huì)有一個(gè)誤解只要把 ov7725.c 編進(jìn)內(nèi)核/dev/video0就自動(dòng)出來(lái)了。實(shí)際上在 V4L2 框架里OV7725 承擔(dān)的角色只是一個(gè)掛在 I2C 總線上的從設(shè)備。它負(fù)責(zé)的是寄存器配置、曝光增益調(diào)整、幀同步信號(hào)的產(chǎn)生而真正被應(yīng)用層 open 的/dev/videoX字符設(shè)備是由另一側(cè)的接口控制器驅(qū)動(dòng)注冊(cè)的——比如并口橋接芯片、CSI 控制器或者平臺(tái)自帶的 camera 接口。這套源碼里ov7725_probe、ov7725_remove的命名風(fēng)格和ov7725_video_init/ov7725_video_cleanup這種直白的視頻流開關(guān)函數(shù)明顯是內(nèi)核 3.x 時(shí)代甚至更早的寫法。那個(gè)年代的 sensor 驅(qū)動(dòng)經(jīng)常自己申請(qǐng)video_device把注冊(cè) subdev、創(chuàng)建節(jié)點(diǎn)、維護(hù) buffer queue 全揉在一個(gè)驅(qū)動(dòng)里?,F(xiàn)在主流內(nèi)核4.19 以上更推薦 v4l2-subdev v4l2_async_notifier 的異步注冊(cè)方式sensor 驅(qū)動(dòng)只做 subdev等接口控制器驅(qū)動(dòng)準(zhǔn)備好之后兩者通過(guò) media controller 的拓?fù)鋱D綁在一起。理解這個(gè)區(qū)別你就明白為什么在舊板子 BSP 里改一個(gè)ov7725_probe就能出圖的代碼換到新內(nèi)核上 insmod 之后ls /dev/video*還是空的。我一般建議拿到這種老驅(qū)動(dòng)源碼后第一件事不是看寄存器表而是在文件里搜索v4l2_async_register_subdev和video_register_device。前者是正兒八經(jīng)的 subdev 驅(qū)動(dòng)后者說(shuō)明這套代碼自己創(chuàng)建了設(shè)備節(jié)點(diǎn)。ov7725.c 的常見版本里兩種寫法都存在如果你手里的版本是后者移植到新內(nèi)核時(shí)要把 video 部分剝離出來(lái)只保留 I2C 寄存器和 subdev 回調(diào)函數(shù)。2.2 ov7725_probe 完整旅程設(shè)備樹匹配、復(fù)位時(shí)序與 ID 校驗(yàn)probe 函數(shù)是驅(qū)動(dòng)和硬件第一次握手的地方。內(nèi)核在 I2C 總線上掃描到地址匹配的設(shè)備后會(huì)回調(diào)這個(gè)函數(shù)。我拆過(guò)的 ov7725.c 里probe 的標(biāo)準(zhǔn)動(dòng)作一般是這樣static int ov7725_probe(struct i2c_client *client) { struct ov7725_device *dev; int ret; /* 1. 分配私有數(shù)據(jù)結(jié)構(gòu)存 I2C client、v4l2 subdev 和運(yùn)行狀態(tài) */ dev devm_kzalloc(client-dev, sizeof(*dev), GFP_KERNEL); if (!dev) return -ENOMEM; dev-client client; i2c_set_clientdata(client, dev); /* 2. 上電復(fù)位時(shí)序先把 RESET 拉低再拉高等時(shí)鐘穩(wěn)定 */ ret ov7725_power_on(dev); if (ret) return ret; /* 3. 讀 0x0a/0x0b 兩個(gè) ID 寄存器確認(rèn)總線上掛的是 OV7725 */ ret ov7725_detect(dev); if (ret) { dev_err(client-dev, ov7725 detect failed\n); return ret; } /* 4. 注冊(cè) v4l2 subdev掛到媒體控制器拓?fù)渖?*/ ret ov7725_v4l2_register(dev); if (ret) return ret; dev_info(client-dev, ov7725 probe success\n); return 0; }這段代碼的核心邏輯有三個(gè)。第一是分配私有數(shù)據(jù)結(jié)構(gòu)把 I2C client 指針存進(jìn)dev-client后面所有寄存器讀寫都依賴這個(gè)指針第二是上電復(fù)位OV7725 的復(fù)位時(shí)序要求 RESET 引腳拉低至少 1ms 再拉高拉高之后還要等 1ms 左右的時(shí)鐘穩(wěn)定時(shí)間否則第一筆 I2C 讀操作大概率超時(shí)第三是讀 ID 寄存器0x0a 固定讀 0x770x0b 讀版本號(hào)這個(gè)校驗(yàn)?zāi)芊乐?I2C 總線上同一個(gè)地址掛的是別的芯片導(dǎo)致后面所有寄存器表全寫錯(cuò)。配套的設(shè)備樹節(jié)點(diǎn)和 id_table 匹配表也要對(duì)齊。常見寫法是這樣static const struct i2c_device_id ov7725_id[] { { ov7725, 0 }, {} }; MODULE_DEVICE_TABLE(i2c, ov7725_id); static const struct of_device_id ov7725_of_match[] { { .compatible ovti,ov7725 }, {} }; MODULE_DEVICE_TABLE(of, ov7725_of_match); static struct i2c_driver ov7725_i2c_driver { .driver { .name ov7725, .of_match_table ov7725_of_match, }, .probe ov7725_probe, .remove ov7725_remove, .id_table ov7725_id, }; module_i2c_driver(ov7725_i2c_driver);老內(nèi)核用i2c_device_id匹配新內(nèi)核走設(shè)備樹compatible ovti,ov7725。兩顆最容易翻車的雷我都踩過(guò)一是 I2C 地址OV7725 的 7 位地址由 SID 引腳電平?jīng)Q定多數(shù)模組是 0x21但有些國(guó)產(chǎn)模組把地址拉到 0x20設(shè)備樹 reg 寫錯(cuò)直接 probe 不到二是 i2c_driver 的 id_table 里如果沒(méi)加MODULE_DEVICE_TABLEmodprobe 時(shí)熱插拔事件匹配不上insmod 也會(huì)靜默跳過(guò) probe。2.3 數(shù)據(jù)流鏈路s_stream 打開 sensorvb2 把幀從 sensor 搬給 /dev/video0probe 成功只是萬(wàn)里長(zhǎng)征第一步真正的數(shù)據(jù)流從用戶態(tài)應(yīng)用打開/dev/video0才開始。V4L2 的標(biāo)準(zhǔn)流程是open設(shè)備節(jié)點(diǎn)VIDIOC_S_FMT設(shè)置輸出分辨率和像素格式VIDIOC_REQBUFS申請(qǐng)緩沖區(qū)VIDIOC_QBUF把緩沖區(qū)交給驅(qū)動(dòng)VIDIOC_STREAMON正式開流。應(yīng)用層這一套 ioctl 下來(lái)驅(qū)動(dòng)里最關(guān)鍵的s_stream回調(diào)才會(huì)被調(diào)用。ov7725 驅(qū)動(dòng)里 s_stream 的典型實(shí)現(xiàn)長(zhǎng)這樣static int ov7725_s_stream(struct v4l2_subdev *sd, int enable) { struct ov7725_device *dev v4l2_get_subdevdata(sd); if (enable) { /* 每次開流都把寄存器表重新刷一遍保證狀態(tài)干凈 */ ov7725_video_init(dev); /* COM4: 打開 PCLK 輸出sensor 開始出圖 */ ov7725_write_reg(dev, 0x0f, 0x00); } else { /* 關(guān)流時(shí)先停掉像素時(shí)鐘再關(guān)電源 */ ov7725_write_reg(dev, 0x0f, 0x01); ov7725_power_off(dev); } return 0; }注意這里有個(gè)細(xì)節(jié)enable分支里每次開流都重新執(zhí)行ov7725_video_init。這個(gè)習(xí)慣很關(guān)鍵。如果你在應(yīng)用層反復(fù)STREAMON/STREAMOFF寄存器狀態(tài)可能因?yàn)樯洗萎惓jP(guān)閉殘留在奇怪的值上重新刷一遍寄存器表是最穩(wěn)妥的恢復(fù)手段。我見過(guò)有人為了省這幾毫秒把這段去掉結(jié)果就是應(yīng)用層重啟預(yù)覽時(shí)圖像顏色一次一個(gè)樣這種玄學(xué)問(wèn)題定位起來(lái)比老老實(shí)實(shí)刷寄存器費(fèi)時(shí)間得多。s_stream 打開之后sensor 通過(guò)并口輸出 PCLK、HSYNC、VSYNC 和 8 位像素?cái)?shù)據(jù)這個(gè)數(shù)據(jù)流由接口控制器接收寫入 vb2 buffer。vb2 框架負(fù)責(zé)管理 buffer 的生命周期應(yīng)用層DQ出一幀處理完再Q(mào)回來(lái)一輪一輪循環(huán)。這套代碼里雖然沒(méi)有完整實(shí)現(xiàn) vb2 的ops但理解這條鏈路對(duì)你調(diào)驅(qū)動(dòng)非常有用出圖慢先看 s_stream 有沒(méi)有被調(diào)用沒(méi)有說(shuō)明流程沒(méi)走到 sensor 這一層問(wèn)題在接口控制器驅(qū)動(dòng)而不是 ov7725.c。3.1 ov7725.h 里的設(shè)備結(jié)構(gòu)體與寄存器宏ov7725.h 是理解整個(gè)驅(qū)動(dòng)的一把鑰匙。頭文件里定義了設(shè)備結(jié)構(gòu)體、寄存器地址宏以及內(nèi)部函數(shù)的聲明。很多新手讀驅(qū)動(dòng)喜歡一頭扎進(jìn) ov7725.c 的函數(shù)體里實(shí)際上先把頭文件捋一遍后面看代碼會(huì)順很多。我把常見版本里的核心內(nèi)容整理一下#ifndef __OV7725_H__ #define __OV7725_H__ #include linux/i2c.h #include media/v4l2-subdev.h /* 7 位 I2C 地址部分模組高地址是 0x20 */ #define OV7725_I2C_ADDR 0x21 /* 核心寄存器地址 */ #define OV7725_REG_GAIN 0x00 /* 模擬增益 */ #define OV7725_REG_PID 0x0a /* 產(chǎn)品 ID固定 0x77 */ #define OV7725_REG_VER 0x0b /* 版本號(hào) */ #define OV7725_REG_COM3 0x0c /* 輸出格式、鏡像控制 */ #define OV7725_REG_COM4 0x0f /* PCLK 分頻控制 */ #define OV7725_REG_CLKRC 0x11 /* 幀率與 PLL 配置 */ #define OV7725_REG_HTS 0x2c /* 行總長(zhǎng)高字節(jié) */ #define OV7725_REG_VTS 0x2d /* 幀總長(zhǎng)高字節(jié) */ #define OV7725_REG_EXH 0x43 /* 曝光時(shí)間高字節(jié) */ #define OV7725_REG_EXL 0x44 /* 曝光時(shí)間低字節(jié) */ struct ov7725_win_size { unsigned short width; unsigned short height; }; struct ov7725_device { struct i2c_client *client; struct v4l2_subdev sd; struct v4l2_rect crop; unsigned int xclk_freq; unsigned int fps; bool power_on; }; #endif寄存器宏這塊沒(méi)什么玄學(xué)就是 datasheet 里寄存器地址的常量聲明。重點(diǎn)說(shuō)一下struct ov7725_device里那幾個(gè)字段crop保存裁剪區(qū)域V4L2 協(xié)議允許應(yīng)用層通過(guò)VIDIOC_S_CROP改取景范圍xclk_freq是外部輸入時(shí)鐘頻率傳感器默認(rèn)值是 24MHz這個(gè)值直接影響幀率計(jì)算power_on是一個(gè)軟件狀態(tài)位避免重復(fù)上電或者重復(fù)關(guān)電導(dǎo)致引用計(jì)數(shù)混亂。3.2 video_init / video_cleanup視頻流開關(guān)的完整時(shí)序這兩個(gè)函數(shù)是整個(gè) ov7725.c 里最值得逐行讀的部分。ov7725_video_init做的是 sensor 的上電初始化和寄存器配置ov7725_video_cleanup反過(guò)來(lái)把 sensor 置于節(jié)電狀態(tài)。static int ov7725_video_init(struct ov7725_device *dev) { int i, ret; /* 1. 軟復(fù)位寄存器恢復(fù)默認(rèn)值 */ ov7725_write_reg(dev, 0x12, 0x80); msleep(10); /* 2. 寫基礎(chǔ)配置表YUV422 輸出、VGA 640x480、默認(rèn)時(shí)序 */ static const struct regval ov7725_defaults[] { { 0x12, 0x00 }, /* COM7: YUV 輸出VGA 模式 */ { 0x11, 0x00 }, /* CLKRC: PLL 關(guān)閉外部時(shí)鐘直通 */ { 0x0c, 0x08 }, /* COM3: RGB565 格式鏡像關(guān) */ { 0x3d, 0x03 }, /* COM9: PCLK 上升沿采樣 */ { 0x2c, 0x0f }, /* HTS 高字節(jié)行總長(zhǎng) 0x02f0 */ { 0x2d, 0x01 }, /* VTS 高字節(jié)幀總長(zhǎng) 0x01f4 */ { 0x2a, 0xf0 }, /* HTS 低字節(jié) */ { 0x2b, 0x01 }, /* VTS 低字節(jié) */ { 0x00, 0x00 }, /* 增益默認(rèn) */ }; for (i 0; i ARRAY_SIZE(ov7725_defaults); i) { ret ov7725_write_reg(dev, ov7725_defaults[i].addr, ov7725_defaults[i].val); if (ret) { dev_err(dev-client-dev, write reg 0x%02x failed\n, ov7725_defaults[i].addr); return ret; } } return 0; }提示代碼里第二個(gè)參數(shù)0x12, 0x80是軟復(fù)位寄存器。寫完這個(gè)值后 sensor 內(nèi)部所有寄存器回到 datasheet 默認(rèn)值但這個(gè)過(guò)程需要幾毫秒所以后面跟了一個(gè)msleep(10)。別省也別把延時(shí)改成 1ms穩(wěn)壓芯片上電時(shí)間有時(shí)候就超過(guò) 5ms。ov7725_video_cleanup就簡(jiǎn)單直接了它把像素時(shí)鐘停掉再發(fā)一次軟復(fù)位讓 sensor 進(jìn)入低功耗狀態(tài)static int ov7725_video_cleanup(struct ov7725_device *dev) { /* 1. 先停 PCLK避免關(guān)電瞬間并口還在跳電平 */ ov7725_write_reg(dev, 0x0f, 0x01); /* 2. 軟復(fù)位回到默認(rèn)寄存器狀態(tài) */ ov7725_write_reg(dev, 0x12, 0x80); msleep(5); return 0; }這里有一個(gè)值得養(yǎng)成的習(xí)慣關(guān)流的順序一定是先停 PCLK再軟復(fù)位最后才斷 sensor 電源。如果反過(guò)來(lái)sensor 在斷電瞬間仍在輸出時(shí)鐘和數(shù)據(jù)信號(hào)輕則并口上產(chǎn)生毛刺導(dǎo)致下一輪初始化失敗重則有幾率把接口控制器的輸入引腳電平打壞。嵌入式里這叫時(shí)序敏感性調(diào)一次就長(zhǎng)記性了。3.3 曝光、增益、幀率圖像參數(shù)在寄存器表里的位置OV7725 之所以在圖像參數(shù)上大有文章是因?yàn)槠毓?、增益、幀率這幾個(gè)參數(shù)不是獨(dú)立可調(diào)的它們共享同一個(gè)時(shí)間基準(zhǔn)。幀率公式是幀率 xclk / (HTS × VTS)其中 HTS 是行總長(zhǎng)VTS 是幀總長(zhǎng)。曝光時(shí)間則是曝光行數(shù) / 行總長(zhǎng) / 幀率改 HTS 會(huì)影響幀率改 VTS 會(huì)影響曝光上限參數(shù)之間互相牽制。下面這個(gè)表是調(diào)試時(shí)最常動(dòng)的寄存器參數(shù)寄存器說(shuō)明常見配置模擬增益0x000x00~0x3f數(shù)字越大越亮低光環(huán)境從 0x10 起調(diào)輸出格式0x12 COM7bit7 軟復(fù)位bit3 YUV/RGB 選擇0x00YUV422PCLK 分頻0x0f COM4PCLK 分頻系數(shù)影響輸出速率0x00不分頻幀率時(shí)鐘0x11 CLKRC內(nèi)部 PLL 倍頻和分頻0x0024MHz 直通行總長(zhǎng)0x2c/0x2aHTS水平總像素?cái)?shù)0x02f0752幀總長(zhǎng)0x2d/0x2bVTS垂直總行數(shù)0x01f4500曝光高字節(jié)0x43曝光行數(shù)高 8 位配合 VTS 使用曝光低字節(jié)0x44曝光行數(shù)低 8 位低于 VTS 才有效實(shí)戰(zhàn)中改參數(shù)有個(gè)血淚經(jīng)驗(yàn)改造曝光時(shí)0x43/0x44寫入的曝光行數(shù)一定不能大于 VTS 值否則 sensor 輸出幀率會(huì)直接受影響甚至花屏。調(diào)試順序我一般是先定 HTS/VTS 把幀率鎖死再調(diào)曝光范圍最后用增益做微調(diào)。如果你調(diào)完增益圖像出現(xiàn)橫向條紋別急著改驅(qū)動(dòng)先看看是不是供電電源紋波大了sensor 的模擬供電對(duì)紋波非常敏感這是硬件問(wèn)題軟件怎么配都救不回來(lái)。4. 避坑OV7725 驅(qū)動(dòng)移植常見問(wèn)題與排查記錄4.1 I2C 探測(cè)失敗probe 沒(méi)觸發(fā)還是寄存器讀不到現(xiàn)象模塊 insmod 成功但 dmesg 里沒(méi)有任何 probe 日志或者ov7725 detect failed反復(fù)出現(xiàn)。原因兩個(gè)層面。一是設(shè)備樹匹配問(wèn)題I2C 總線號(hào)寫錯(cuò)、reg 地址和模組實(shí)際地址不一致、compatible 字符串和驅(qū)動(dòng)里的of_match_table對(duì)不上都會(huì)導(dǎo)致 probe 回調(diào)根本不被調(diào)用。二是上電時(shí)序問(wèn)題RESET 引腳和 PWDNpower down引腳的時(shí)序不滿足I2C 應(yīng)答時(shí)好時(shí)壞第一筆讀 ID 就超時(shí)。解決先用 i2c-tools 探一下硬件層面到底通不通i2cdetect -y -r 2 0 1 2 3 4 5 6 7 8 9 a b c d e f 10: 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 70: 70 71 72 73 74 75 76 77看到21說(shuō)明 I2C 地址正確sensor 已經(jīng)在線。如果掃不到 21先檢查設(shè)備樹i2c2節(jié)點(diǎn)是不是真的對(duì)應(yīng)硬件上的 I2C 2 號(hào)總線再量 RESET 引腳電平上電后應(yīng)該是高電平被拉低就是 GPIO 配置反了。如果21能掃到但驅(qū)動(dòng)讀寄存器超時(shí)多半是 i2c 控制器時(shí)鐘頻率太高OV7725 的 SCCB 接口建議跑 100kHz 穩(wěn)妥你把它配到 400kHz 有的模組就不應(yīng)答了。4.2 圖像花屏、偏色、上下顛倒現(xiàn)象v4l2-ctl 抓幀成功但存下來(lái)的 raw 圖要么花成雪花點(diǎn)要么整體偏紅偏綠要么圖像是倒的鏡像的。原因花屏優(yōu)先查采樣時(shí)序。OV7725 通過(guò)并口輸出 PCLK 時(shí)鐘和數(shù)據(jù)接口控制器如果在錯(cuò)誤的時(shí)鐘沿采樣采到的數(shù)據(jù)全是亂的。偏色則是像素格式不匹配驅(qū)動(dòng)里設(shè)的 YUYV 但 sensor 實(shí)際輸出 RGB565或者反過(guò)來(lái)數(shù)據(jù)解釋錯(cuò)位。鏡像問(wèn)題最簡(jiǎn)單是寄存器控制位沒(méi)配。解決逐個(gè)排查寄存器配置按下面順序試/* 1. PCLK 采樣沿COM9 寄存器 bit1 控制 */ ov7725_write_reg(dev, 0x3d, 0x02); /* 下降沿采樣 */ ov7725_write_reg(dev, 0x3d, 0x03); /* 上升沿采樣 */ /* 2. 輸出格式匹配 */ ov7725_write_reg(dev, 0x12, 0x00); /* YUV422 */ ov7725_write_reg(dev, 0x12, 0x04); /* RGB565 */ /* 3. 鏡像控制COM3 寄存器 bit5/bit4 */ ov7725_write_reg(dev, 0x0c, 0x48); /* 水平鏡像 */ ov7725_write_reg(dev, 0x0c, 0x28); /* 垂直翻轉(zhuǎn) */這種問(wèn)題調(diào)試時(shí)最怕一次改多個(gè)變量。我的習(xí)慣是抓一幀 raw 數(shù)據(jù)用 python 的 matplotlib 或者 ffmpeg 直接轉(zhuǎn)成 PNG 看效果每改一個(gè)寄存器抓一幀看到哪種配置圖像正常就能反推出 sensor 實(shí)際的輸出模式。別用眼睛盯著屏幕調(diào)太慢而且容易把之前的正常配置搞亂。4.3 打開視頻流報(bào) EBUSY誰(shuí)把 buffer 占住了現(xiàn)象應(yīng)用層v4l2-ctl --stream-mmap執(zhí)行到VIDIOC_STREAMON時(shí)返回Device or resource busy驅(qū)動(dòng) dmesg 沒(méi)有任何報(bào)錯(cuò)。原因最常見的是上一個(gè)進(jìn)程退出時(shí)沒(méi)有正常關(guān)閉設(shè)備節(jié)點(diǎn)或者進(jìn)程被 kill -9 強(qiáng)殺文件描述符雖然釋放了但 vb2 隊(duì)列里的 buffer 狀態(tài)還停留在占用的位置。另一種情況是驅(qū)動(dòng)內(nèi)部video_init返回了錯(cuò)誤但狀態(tài)位沒(méi)復(fù)位下一次 STREAMON 時(shí)驅(qū)動(dòng)認(rèn)為還在流中直接返回忙。解決先確認(rèn)誰(shuí)占著設(shè)備節(jié)點(diǎn)fuser /dev/video0 lsof /dev/video0有 PID 就 kill 掉重試。如果 fuser 沒(méi)輸出但依然 busy大概率是驅(qū)動(dòng)狀態(tài)沒(méi)干凈。在驅(qū)動(dòng)里顯式加一個(gè)復(fù)位邏輯static int ov7725_s_stream(struct v4l2_subdev *sd, int enable) { /* 關(guān)流時(shí)無(wú)論什么狀態(tài)都強(qiáng)制走一遍清理 */ if (!enable || dev-power_on) { ov7725_video_cleanup(dev); dev-power_on false; } ... }順手在vb2_ops里實(shí)現(xiàn)wait_prepare和wait_finish這兩個(gè)回調(diào)負(fù)責(zé)在等待 buffer 時(shí)釋放隊(duì)列鎖能避免多進(jìn)程搶占導(dǎo)致的死鎖式 busy。這套組合拳打完EBUSY 基本絕跡。4.4 幀率對(duì)不上xclk、PLL 與 HTS/VTS 互相牽制現(xiàn)象應(yīng)用層設(shè)定 30fps 采集實(shí)際讀取流幀率只有 18fps或者看到 dmesg 里有幀超時(shí)提示。原因幀率公式幀率 xclk / (HTS × VTS)。硬件上 xclk 晶振不是驅(qū)動(dòng)里認(rèn)為的 24MHz比如實(shí)際是 12MHz或者 HTS/VTS 寄存器值配置太大導(dǎo)致每幀耗時(shí)變長(zhǎng)。有些模組的晶振直接焊的是 27MHz 的型號(hào)驅(qū)動(dòng)里按 24MHz 算出來(lái)的寄存器值自然對(duì)不上。解決先拿頻率計(jì)或示波器量 xclk確認(rèn)真實(shí)值。然后反推寄存器# 假設(shè) xclk24MHz目標(biāo) 30fps # HTS 固定 0x02f0752VTS 24000000 / (752 * 30) ≈ 1064 i2cset -y 2 0x21 0x2d 0x04 # VTS 高字節(jié) i2cset -y 2 0x21 0x2b 0x28 # VTS 低字節(jié)0x04281064CLKRC 寄存器 0x11 也影響幀率它控制 PLL 倍頻。常見場(chǎng)景是外部 12MHz 晶振想得到類似 24MHz 的系統(tǒng)時(shí)鐘就需要把 CLKRC 配置成 2 倍 PLL。但倍頻會(huì)放大時(shí)鐘抖動(dòng)對(duì)畫質(zhì)有影響。我一般優(yōu)先改 HTS/VTS 而不是動(dòng) PLL只有 HTS/VTS 調(diào)整空間不夠時(shí)才用 CLKRC畢竟圖像質(zhì)量是最終目標(biāo)幀率差幾幀能用參數(shù)找補(bǔ)回來(lái)花屏畫質(zhì)差沒(méi)法找補(bǔ)。5. 最后一公里用 v4l2-ctl 和 i2c-tools 驗(yàn)證 OV7725 采集鏈路5.1 確認(rèn)驅(qū)動(dòng)在線的三連命令驅(qū)動(dòng)編譯加載完成后不要急著寫應(yīng)用先用三個(gè)命令確認(rèn)鏈路狀態(tài)ls /dev/video* v4l2-ctl --list-devices i2cdetect -y 2v4l2-ctl --list-devices會(huì)列出所有注冊(cè)的 V4L2 設(shè)備節(jié)點(diǎn)以及它們對(duì)應(yīng)的驅(qū)動(dòng)名稱。如果你看到ov7725的出現(xiàn)說(shuō)明 subdev 注冊(cè)成功/dev/video0存在說(shuō)明接口控制器的 video_device 也掛上了i2cdetect能掃到 0x21 說(shuō)明硬件鏈路沒(méi)斷。三條都通過(guò)驅(qū)動(dòng)這層基本穩(wěn)了。5.2 抓一幀原始圖并驗(yàn)證格式驅(qū)動(dòng)在線之后驗(yàn)證圖像數(shù)據(jù)最直接的方式是抓一幀裸數(shù)據(jù)轉(zhuǎn)成圖片看v4l2-ctl -d /dev/video0 --set-fmt-videowidth640,height480,pixelformatYUYV v4l2-ctl -d /dev/video0 --stream-mmap --stream-count1 --stream-toyuyv.raw ffmpeg -f rawvideo -pix_fmt yuyv422 -s 640x480 -i yuyv.raw -frames:v 1 yuyv.png--stream-mmap指定用 mmap 方式采集--stream-count1只抓一幀--stream-to指定輸出文件。抓下來(lái)后用 ffmpeg 轉(zhuǎn)成 PNG 是很多工程師的第一個(gè)閉環(huán)驗(yàn)證。這里有個(gè)細(xì)節(jié)如果抓出來(lái)的 raw 文件是綠色大概率是 YUYV 字節(jié)序填反了試著把pixelformat改成YUY2或者攝像頭調(diào)換數(shù)據(jù)線再看。這一步排除的是接口控制器的數(shù)據(jù)通路問(wèn)題。5.3 寄存器級(jí)驗(yàn)證應(yīng)用層驗(yàn)證通過(guò)后我會(huì)再補(bǔ)一步寄存器級(jí)驗(yàn)證確認(rèn)驅(qū)動(dòng)對(duì) sensor 的控制真實(shí)有效# 讀產(chǎn)品 ID確認(rèn)通信鏈路 i2cget -y 2 0x21 0x0a # 返回 0x77 # 寫 CLKRC 改變幀率再讀回來(lái)驗(yàn)證 i2cset -y 2 0x21 0x11 0x01 i2cget -y 2 0x21 0x11 # 返回 0x01讀出來(lái)是 0x77說(shuō)明驅(qū)動(dòng)和硬件之間的 I2C 鏈路完全可信。改寄存器能寫能讀說(shuō)明 sensor 沒(méi)有被拉死。這套驗(yàn)證做完OV7725 的移植才算真的落地。這段路我走過(guò)的最大教訓(xùn)是驅(qū)動(dòng)編譯過(guò)了、設(shè)備節(jié)點(diǎn)出來(lái)了不代表圖像鏈路就是通的。有一次花了大半天查圖像花屏問(wèn)題最后發(fā)現(xiàn)是并口數(shù)據(jù)線順序接錯(cuò)三根軟件怎么調(diào)寄存器都沒(méi)用。從那以后每次拿到新模組我都不急著改代碼先強(qiáng)制走一遍 i2cdetect → 讀 0x0a → 抓原始幀 → 轉(zhuǎn) PNG 這條完整鏈路確認(rèn)每個(gè)節(jié)點(diǎn)都亮了再動(dòng)手寫業(yè)務(wù)邏輯。希望這套流程也能幫你少走幾個(gè)彎路。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
狼人伊人天堂| 日韩国产在线免费观看| 日本九九视频| 色情五月天导航| 91超碰在线观看| 五月人人丁香婷婷五月人人丁香| 九色PORNY自拍成人精彩视频| 日本少妇裸体做爰高潮片| 国产密乳av一区二区三区四区| 亚洲AV成人精品日韩在线播放| www,99视频| 99热最新精品| 五月天婷婷激情| www.伊人天堂偷偷婷婷| 涩涩五月天综合| 99热全是精品| 1囯产午夜仑鲁鲁| 国产精品18久久久| 欧类av怡春院| 欧美性生交XXXXX无码小说| 大香蕉久久久| 亚洲无码另类| 丁香六月婷婷久久综合| 色啪综合| 99在线精品免费视频| 色五月激情五月天| 色婷婷视频在线| 亚洲性图一区二区三区| 久久久er热| 婷婷五月天奸女| 色爱爱综合网| 俺去婷婷 丁香| 偷拍九九热| 国产精品色色| 噼里啪啦完整版中文在线观看| 五月婷婷欧美| 日日操日日撸| 丰满老熟妇BBBBB搡BBB| 久久AAAA片一区二区| 狠狠综合网| 99热免费| 97操在线视频| 色五月婷婷网| 国产av一区二区三区| 五月丁香综合激情| 99久热视频在线| 图片区 小说区 区 亚洲五月| 在线综合网| 五月婷婷狠狠干| 五月丁香六月婷婷成人电影| 婷婷大香蕉| 婷婷久久五月丁香| 五月天婷婷激情| 97久久视频| 国产成人网站在线观看| 五月天开心色色网| 77777亚洲午夜久久| yazhochengrenavwang| 丁香六月婷婷久久亚洲天堂| 日韩成人AV在线| 97中文在线| 九九综合| 襙比视频| av在线免费网站| 久久小视频| av在线免费网站 | 亚洲久艹| 91超碰人人操| 五月天成人在线| 婷婷网五月| 激情综合网激情五月丁香| 日日做天天操夜夜爽| 懂色AⅤ| 91久久婷婷人人澡草| 天天天日天天天干| 超碰成人免费| 久热精彩视频98| 99热丁香| 五月情婷婷| 九九热re99re6在线精品| 婷婷五月天激情电影| 五月丁香影视| 久xxxx| 大香蕉网站,大香蕉综合| 久久综合九九| 亚洲激情五月天| 99自拍视频| 亚洲国产精品VA在线看黑人| 九九精品综合| 婷婷五月天欧美图片在线播放电驴| 天天玩夜夜操| se色婷婷视频| 九九视频网| 激情激情激情网| 天天爽天天摸天天爱| 嫩草视频在线观看| 中文字幕人妻AV| 丁香婷婷色五月| 都市激情小说婷婷| 人妻丰满精品一区二区A片| 禁片二区| 色小说五月婷婷| 精品人妻在线| 热996精品在线观看| 丁香六月天AV| 五月婷婷婷| 婷婷丁香五月天之开心少妇| 开心婷婷五月花| 五月天综合色| 91干在线视频| 99热最新网址| 日韩成人影片网站| 99热这里只有精品亚洲| 激情涩涩网| 九九色视频| 天天插天天插| 亚洲无码猫咪| 丁香五月天精品| 色在线99| 在线伦子99热| 26uuu欧美日本| 亚洲欧美成人在线| 九月激情综合婷婷| 激情综合色婷婷啪啪六月天| 激情五月综合网| 国产亚洲99久久精品| 色婷婷91| 噜噜视频| 99操不停| 丁香六月婷婷激情| yirenjiqingshiping| 久久久中文| 99这里都是精品6| 99热综合| 激情五月婷婷欧美极品| 99热自拍| 亚洲激情校园| 欧美成人在线观看| 亭亭五月天黑人2014| 在线成人网址| 五月丁香综合啪啪| 玖玖热视频| 婷婷五月乱交换| 五月天播播综合| 激情综合区| 亚洲超碰中文字幕| 日本五月天一页| 五月婷婷影院| 日本成人噜噜噜噜噜| 婷婷五月天色色| 五月 成人 婷婷| 六月婷婷在线视频| 欧美激情中文字幕| 久婷五月| 激情深愛五月視頻| 97caop| 99re思思| 久久性爱99国产| 美女天天久久| 日韩成人无码人妻| 婷婷丁香高潮了| 超碰在线人妻| 久久婷婷欧美| 久久精品噜噜噜成人A∨色欲| 五月丁香伊人网| 八戒青柠影视剧在线观看| 天天操天天日天天爱| 激情综合网址| 色欲Av五月天| 亚洲免费综合一区| 色99在线| 五月色情婷婷| AV人人操| 玖玖精品视频| 97香蕉碰碰人妻国产欧美| 99自拍视频网站| www.综合久久.com| 亚洲精品视频在线播放| 五月丁香黄色| 99九九视频精彩在线| 欧美视频五区| 丁香五月六月婷婷自拍| 变天就操逼婷婷五月| 久久婷婷五月天| 色色色综合色| 亚洲 在线 另类| 色五狠狠| 狼人久草| 五月天婷婷狂暴白浆| 色婷婷综合网站| www九月婷婷| 另类激情中文| 精品婷婷五月视| 免费观看全黄做爰的视频| 五月停停丁香| 97操碰日本女人| 九九热九九| 久久久久久xxxxx| 成人国产欧美大片一区| 色色综合激情| 思思热精品免费视频| 中日韩美欧成人一区二区精品在线 | 婷婷综合五月天激情| 亚洲丁香五冃97色| 成人日韩欧美| 丁香婷婷色| 激情久久久久久久久| 99久久性爱| 开心五月色婷| 成人短视频在线| 一本大道嫩草AV无码专区| 丁香六月天堂| 亚洲精品操一操、噜一噜、摸一摸、爽| 岛囯综合激情网| 日韩操逼大片| 天天日天天干天天爽| 中文字幕AV在线播放| 国产精品99久久久久久久女警| 这里只有精品视频99| 中文字幕av久久爽一区| 碰碰碰97免费精彩视频| 国产av天堂| 五月婷婷在线视频| 99只有这里是精品| 一区二区中文字幕| 九色PORNY在线精品酒店| 日日夜夜天天| 色色色999| 开心五月深爱五月丁香五月激情五月 | 久久这里精彩免费在线观看| 六月婷婷操逼| 四LLL少妇BBBB槡BBBB| 婷婷五月天黄色小说| 久久这里只有精品5| 9热在线视频| 欧美性生交XXXXX无码小说| 97五月天| 操操操Av| 色婷婷五月综合| 人人舔人人色人人高潮| 亚洲综合激| 色综合中文色综合网| 九九婷| 思思热在线播放| 欧美五月丁香| 丁婷婷五月天在线播放| 狠狠xx| 玖久精品视频9| 五月天激情黄色小说在线观看| 色五月婷婷91在线| 91窝窝| 91se视频| 婷婷五月丁香综合网| 丁香五月天堂网| 久草热视频在线观看| 婷婷伊人久久综合| 战争与艾拉电影免费观看| 亚洲另类婷婷五月丁香在线播放| 婷婷导航| 五月婷婷六月激情在线| 新久久五月天激情| Va另类视频| 电影爱拉战争免费观看| www.狠狠操.con| 成人五月天在线观看| 五月丁香啪啪啪综合网| 九九热这里只有精品5| 人人综合久| 五月天婷婷激情在线色图| 91午夜婷婷狠狠久久综合9色| 亚洲字幕AV一区二区三区四区| 亚洲五月花| 日本色色色| 天天肏夜夜肏| 色欲天天综合| 丰满少妇猛烈A片免费看观看 | 色99视| 色五月婷婷久久爱| 欧美婷婷色五月| 狠狠色噜噜狠狠| 五月婷导航| 99精品小视频| 婷香五月| 国产偷人爽久久久久久老妇APP| 天天色情站| 少妇出轨做爰高潮A片| 日本性视频| 99热亚洲只有色| 在线综合91| 在线观看av网站| 1024日韩| 国产亚洲精久久久久| 亚洲色激情| 激情五月久久| 婷婷伊人綜合中文字幕| 丁香深五月婷婷| 亚洲婷婷丁香五月| 性色欲情 网站| 性爱在线播放av| 天堂婷婷丁香六月网| 亚洲情a| 超碰爱爱爱| 人妻综合网| 免费啪啪啪网站| 婷婷和五月天| 五月激情六月宗合| 九九色婷婷| www.9操| 99久久五月婷婷| 91九色中文字幕女在线观看| 大狠狠在线| 中文字幕 中文字幕明步| 久久人人九九| 丁香五月天91| 五月丁香婷婷色色| 色色色热| 色五月色综合| 高清无码.com| 色色a| 精品色色| 欧美日韩成人一区二区| 久久综合天天综合| 第四色五月天| 亚洲操B视频| 欧美97p| 另类激情五月| 婷婷新网址| aaaaaa片| 9 1超碰九色| 婷婷六月天国产综合| 日韩操逼大片| 人妻精品一区二区三区| 久久久天堂国产精品女人| 婷婷狠狠干| 婷婷在线视频| 色欲五月婷婷| 中文av网| 国产精品成av人在线视午夜片| 97色婷| 九九精品网| 免费视频WWW在线观看网站| 色一情一乱一乱一区9| 欧洲亚洲免费视频区| 国产成人高清| 大香蕉久久婷婷精品综合| 亚洲爱爱无码婷婷色五月| 大香线蕉伊人| 九月色婷婷综合| 天天天操天天天日| www.99热. com这里只有精品| 九九综合九九| 超碰色综合| 99热草草| 欧美成人性爱网| 图片区 小说区 区 亚洲五月| 色婷婷综合久久久久| 午夜丁香婷婷| 婷婷亚洲久久| 婷婷五月丁香色综合| 去色色五月天| 天天插天天射| 91婷婷色| 日本色色图| 怡春院久操| 79精品视频在线观看,| 亚洲妇女熟BBW| 99热在线免费观看精品| 双性美人被调教到喷水A片| Av九九| 丁香五月六月综合激情| 97久久精品| 天天综合久久| 六月婷婷激情| 欧美激情综合色综合啪啪五月| 一本久道综合色婷婷五月| 黄色一级影片| 久久久五月天| 婷婷丁香九月| 狠狠狠激情网| 久9热插入| 天天干天天射色综合| 色婷婷丁香女女| 色婷婷五月天综合网| 不卡的AV网站| 天天干电影| 69久久99精品久久久久婷婷| 色综合色综合色综合色综合| 婷婷亚洲日本| 国产精品色情AAAAA片软件 | 大香蕉手机视频| 国产成人精品一区二三区熟女在线 | 婷婷丁香成人五月天| 大香蕉在线观看9| 国产精品久久久海的味道| 日本三日本三级少妇三级66| 淫视馆aV二区一区| 五月丁香好婷婷A片网| 天天干天天日蜜臀av| 日本激情综合| 欧美婷婷丁香五月社区| 午夜丁香婷婷| 久久偷拍综合五月天| 亚洲国产另类av| 天天爱天天做天天| 激情五月伊人婷婷| 五月开心啪啪| 国产这里只有精品| 色色 亚洲| 色情婷婷。| www.婷婷,com| 丁香涩涩爱| 亚洲在线操| 无码人妻丰满熟妇奶水区码| 五月天久久网站| 五月天激情综合首页| 色色五月婷婷狠狠| 国产免费一区二区在线A片视频| 五月六月丁香婷婷在线观看| 69色婷婷| 淫五月停停| 久久92| 热99久久这里只有精品| 丁香蜜臀黄色婷婷五月天| 操碰97| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 亚洲综合网在线| 婷婷99狠狠| 97五月天婷婷午夜| 久久狠狠干| 99热热热99精品婷婷| 丁香婷婷性久久| 激情的五月| 吾爱AV导航| www婷婷| 丁香色婷婷| 丁香五月婷婷啪| 在线成人av播放| 国产精品18久久久| 99自拍视频网站| 婷婷五月色综合| 狠狠干婷婷| 日韩AV在线免费| 五月天另类激情在线| 五月色天情| 97五月天婷婷午夜| 色色五月丁香| 99九九综合久久九九| 艹B高清无码| 99精品久久| 中文av网| 亚洲亚洲永久无码777777| 开心五月综合激情综合五月| 婷婷五月天激情偷拍| 成人丁香色| 偷偷操九九| www久视频com| 亚洲精品久久久无码| 啪啪啪大香蕉| 久久人操| 伊人久久艹| 99人妻碰碰碰久久久久禁片| 五月婷婷草| 岛国AV网| 人妻久久人妻久久第一区| m色激情网| 综合五月亭亭9| 亚洲热综合| 亚洲激情婷婷| 欧美精产国品一二三区| 六月婷婷视频| www.五月婷婷久久.com| 一起草Av| 色色激情网| 99综合网| 色色五月丁香婷婷| 天天综合精品| 五月丁香亭亭激情操逼网| 熟女人妻一区二区三区免费看| 99热思思| 亚洲人妻AV| 99ri视频| 鲁鲁色五月| 精品二区| 久久九九亚洲| 欧美色图天堂网| 91日本在线观看| 伊人久久五月天| 五月婷婷另类| 色五月丁香激情| 六月丁香婷婷色综合| 激情亚洲五月| 狠狠插日日干撸| 久婷婷色| 六月婷婷综合| 超碰人妻公开在线| www.AV在线| www.五月婷婷.com| WWW.夜夜操.com| 久久av电影| 狠狠艹狠狠艹| 伊人五月综合网| 色香久久| 欧美韩国日本| 青青草网武则天| 免费国产视频| 99热成人精品| 国产午夜一区二区三区| 色九月| 噼里啪啦在线观看免费完整版视频| 五月天黄色激情小说| 可以免费看AV网站| 五月天伊人| 亚洲在线免费成人| 91ncm视频| 五月天五月色婷婷综合| 99视频这里有精品免费观看| 五月婷婷激情综合| 五月综合激情久久| 开心久久五月天| 日日夜夜天天爽| 综合网啪| 中文字幕免费高清电视剧| 久久九九99.www| 成人电影在线免费试看| 五月丁香五月激情综合色综合| www.丁香五月| 三男玩一女三A片| 亚洲色图日韩网址| 丁香婷婷丁香五月欧美人| www.五月天社区| 激情性爱五月天| 激情图片亚洲| 五月丁香六月色婷婷综合五月天| 九九热思思| 少妇2做爰HD韩国电影| 97色视频网| 九九热视频首页/这里只有精品| 天天做天天摸| 午夜69成人做爰视频| 青青草99热久久精品国| www,五月丁,com| 婷婷五月天综合网| 亚洲视频操| 天天天摸夜夜夜玩| 九九伊人网| 噜噜操操| 色天五月天在线观看视频| 无码少妇高潮喷水A片免费| 26.uuu丁香五月婷婷| 亲子乱AV一区二区三区下载| 六月婷欧美| 俺也高清无码高清视频| 亚洲深喉aV| 99成人网一区| 免费婷婷| 久久综合影院| 久色资源| 色情五月天。| 婷婷久久精品| 十区av| 婷婷五月色亚洲| 亚洲另类在线观看| 婷婷五月天成人在线视频| 色噜噜狠噜噜视频| 超碰猛烈的性猛交| 人人草人人看| 日本情色一区二区| 99亚洲无码| 91色呦哟| 五月丁香久久激情网| 99热这里只有精品在线| 91婷婷| 成人五月天丁香| 色婷婷精品视频| 日日.c| 色婷婷精品视频在线播放| 午夜精品777| 久9视频| 另类色网| 性色做爰片在线观看WW| 色五月aV| 日韩人妻AV在线| 亚洲射激情| 欧美性色A片免费免费观看的| 色色色五月婷| 久久五月丁香| 情情五月天色| 亚洲狠狠干| 碰碰碰碰碰99| 五月天激情图片| 99热插| 激情六月天婷婷| 婷婷丁香色五月亚洲| 婷婷色五月天在线观看| 欧美成人Va| 国产精品国产成人国产三级| 五月天激情日色在线| 超碰成人黄色网| 天堂草在线观| 欧美超级视频97| 色婷婷成人网| 丁香五月婷婷少妇| www.99.色| 中文字幕 中文字幕明步| 久久综合性| 人妻AV在线| 丁香五月av在线| 超碰99热在线观看| 五月婷婷中文字幕| 五月丁香啪啪网| 亚洲乱码精品久久久久..| 久久人人人人妻| 91丨九色丨国产在线| AV在线免费播放| 色婷婷偷拍| 大战熟女丰满人妻AV| 九九在线这里只有精品视频 | 啪啪日热| 伦乱天堂| 婷婷五月免费在线| 六月撸婷婷| 丁香六月婷婷色XXXXX| 天天综合图片| 色婷婷88| 中文字幕 中文字幕明步 | 超碰操日| caop在线视频| 五月天中文网| 成人AV在线电影| 91av传媒高清在线视频网| 亚洲丁香五月天视频| 婷婷另类开心| 婷婷丁香五月天影院 | www.色情五月天.com| 日本99久久| 免费观看欧美成人AA片爱我多深| www。88热在线视频免费观看| 精品九九久久| 婷婷五月色| 五月天国产| 婷婷的五月天另类视频| 91打屁股视频网站| 五月亭久久无码视频| 天天日天天爽| 超碰二区| 吉澤明步Av一區二區| 天天舔天天插天天爱| 九九性爱网| 激情久久伊人| 99成人| 国产九九一区二区三区| 亚洲经典小视频| 丁香五月婷婷性爱| 大香蕉啪啪| 婷婷五月色图| 中文字幕在线不卡视频| 亚洲黄色网址| av国产精品| 五月丁香色色网| 色婷婷电影网| 日本色爽| 影音先锋777xfplay色资源网站| www.av视频xx999.com| 日韩精品超碰在线观看| 激情五月婷婷色色| 玖玖婷婷免费| 影音先锋91视频| 亚洲欧美日韩VIP| 九九精品免费| 久久九九99| 色久女| 激情九九六月激情免费视频| 婷婷色婷婷| 丁香六月婷婷综合欧美| 丁香六月婷婷一区二区三区| 五月婷婷丁香色吧网| 色五月丁香激情视频| 最新日本A片| sisi热国产| 激情五月天噢美| 九九碰九九爱97| 久久狼人天堂| 丁香婷婷五月综合色情| 粉嫩av懂色av蜜臀av熟妇| 国产激情综合| 精品99这里有| 五月丁香激情五月天| 99这里有精品久久97| 色婷婷五月天av在线| 婷婷 丁香 久久| 欧洲一区二区| 日本精品99| 9l视频自拍9l九色成人| 九九视频免费| 五月激情综合激情五月| 五月婷婷成人网首页| 激情五月无码| 人人操人人爱丁香五月| 成人丁香五月| A在线观看| 婷婷色在线观看| 92久久精品一区二区| 国产麻豆视频| A1片久久| 操97| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 亚洲色五月天| 97干97色| 国产精产国品一二三在观看| 97人碰人操| 色婷婷色五月综合| 五月天色播网| 丁香九月婷婷色| 久久怡红院| 丁香五月婷婷六月| 中日韩美欧成人一区二区精品在线| 五月天激情图片网| 色色五月丁香| 久久婷婷五月丁香| 先锋资源婷婷| 久久久久久久人妻| 99国产精品久久久久久久久久久 | 色婷婷五月天天天干天天操天天爽 | 日本色色网站| 噜噜在线| 婷婷综合干| 九久9精品| 五月天伊人手机在线播放AV| 色婷婷丁香五月| 婷婷99| 亚洲av成人一区二区电影在线| 五月色婷婷影院| 亚洲avjiujiur91| 天天肏天天肏天天肏| 丁香六月婷婷| 狠狠色婷婷7777久综合| 综合久色五月| 色婷久| 精品久9| 五月婷婷xxx| 亚洲视频图片婷婷五月| 丁香在线视频| 五月丁香六月婷婷综合| 影音先锋色婷婷| 天天爽夜爽| 第九色区av天堂| 六月丁香狠狠爱| 青草久久五月婷伊人| 激情六月婷婷| 壅壅儕家a| 97丁香花五月天激情小说| 婷婷久久丁香| 丁香五月婷婷激情97| 啊V视频在线观看| 激情五月天在线免费美女视频| 99视频内射三四| 婷婷五月天激情电影| 丁香五月,激情五月,深爱五月| 久久婷五月天| a性生活久久无| 综合色五月天| 色五月天婷婷| 中文字幕AV网址| 常久最新免费的色吊丝| AV在线中文| 婷婷激情在线| 丁香五月人妻| av网站免费在线| 日本色婷婷五月天成人电影| 另类图片天天影视在线观看| 丁香婷婷六月天| 看片视频在线免费日产在线看| 99原创自拍视频在线观看| 九九日本视频| 日本三级韩三级99久久| 五月丁香婷婷在线| 激情五月天啪啪| 久热9热| 情婷婷五月天| 婷婷丁香五月天熟女丝袜| 色婷婷五月天堂资源| 色色婷| 婷婷六月丁香在线| 色婷婷影院| 亭亭丁香aV| 天天干夜晚夜操| 日韩无码专区| 99爱在线免费视频| 色色五月天激情| 丁香五月天之婷婷影院| 激情五月婷婷丁香六月| 天天操人人干| 九月丁香婷婷综合激情| 这里只有精品视频| 五月丁香综合啪啪対白| 乱岳熟女50岁| 日韩AAA| 色啦啦视频| 五月天婷网| 第四色五月婷婷| 成人五月天丁香婷| 我爱大香蕉| 天天影院色| 亚洲精品色色| 六月色婷婷| 秋霞电影理论| 九九精品丁香花| 色爱亚洲| 天天色天天搡| 色色无码| 色丁香婷婷| 热九九九九| 五月天色丁香| 情色五月天网站| 99这里都是精品| 亚洲综合五月天综合| 丁香五月综合网| 九九热啪啪| 婷婷五月小说色综合| 欧美S码亚洲码精品M码| 久久99成人性爱高清视频| 超碰99成人在线| 九月丁香| AⅤ色区| 91jiuseshunv| 五月丁香婷中文| 色婷婷丁香六月| 怡红院成人AV| 这里只有精品免费视频| 99re思思热这里| 色婷婷丁香社综合| 激情五月丁香五月| 伊人在线婷婷草| 97在线干| 五月天激情小说| 色婷婷激情五月天在线观看| 欧美99热| 日韩久久系列| 五月天开心色情网| 五月丁香六月婷| 久久久婷| 99热这里都是精品| www.婷婷五月| 91狼友视频在线观看| 亚洲综合激情五月久久| 99性爱精品| 国产成人AV在线| 北条麻妃九九九国产精品视频| 天天狠狠六月婷丁香影院| 久久免费精品小视频| 男人先锋久久| 日良久久| 中文字幕色色色| 色五月婷婷激情综合网| 2022久久婷婷| 色婷婷综合网站| 久色激情| 婷婷五月天论坛| 九色视频91| 色吊丝99| 天堂成人A片永久免费网站| 婷婷五月天国产| 激情综合网亚洲色图| 色五月婷婷91| 五月婷婷丁香| 激情六月婷婷| 伊人网色婷婷五月天| 婷婷色九月| 丁香五月激情图片婷婷| 97欧美在线| 蜜桃婷婷丁香| 国产99久久久| 五月天丁香啪啪网| 五月婷婷啪啪| 亚洲综合色婷婷| 五月婷啪啪| 色五月婷婷色五月| 甈吧vv| 狠狠干在线视频| 99这里只有精品视频免费| 热996精品在线观看| 亚洲字幕AV一区二区三区四区| 99九九热视频| 五月天激情小说网| 开心婷婷五月天激情网| xxx综合在线| 激情五婷精品网在线观看网址| 婷婷六月色| 婷婷月综合| 99在线视频女女视频| 丁香操逼| 久久久婷婷色五月资源网| 色狠狠色综合久久久绯色aⅴ影视| 五月丁香五月综合欧美| 激情综合色网| 色激情五月天| 99热在线观看精品| 亚洲综合色婷婷| 欧美精品啪啪| 激情五月影院| 深爱激情综合| 色99视频| 99久久久| 91人人爱| 另类亚洲电影| 日日噜噜久久婷婷五月天| 亚洲Av成人在线观看| 岛国资源站| 九九热99在线视频| 人碰91| 天天搡日日搡aaaaⅩ| 丁香婷婷九月| 日日噜噜夜夜狠狠久久丁香六月| 久久网日本| www.99热国产| 亚洲成人电影aaaa| 五月丁香激情婷婷综合| 色噜噜婷婷| 激情五月丁香六月综合AVXXXX| 五月婷婷影院| 亚洲激情视频在线观看| 丁香五月影院| 久久久久久久人妻| 免费观看全黄做爰的视频| 九九九九精品精| 777精品久无码人妻蜜桃| ..真实国产乱子伦对白在线_欧 | 99久久婷婷国产综合精品草原| www.久久| 色无婷婷| 性爱网六月丁香| 中文激情网| 丁香五月天天日| 99re这里只有精品在线观看| 99视频精品8| 丁香激情五月天| 久久婷婷亚洲| 午夜性做爰电影| 99这里只有精| 7777久久亚洲中文字幕| 欧美色图天堂网色| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 五月天久久丁香| 99视频只有精品| WWW.婷婷| 九九无码AV| 亚洲人妻电影| 五月激情另类| 久久久精品色| 99久久久久| 国产高潮A片羞羞视频涩涩| 久久久人人操A V| jiujiu热在线视频| 伊人五月网| 人人摸人人干| 激情小说色五月| WWW99热| 99er在线观看| 色色色9| 色色色香蕉五月婷| 婷婷情色五月天| 另类丁香五月天区图| 久热91精品| 强辱丰满人妻HD中文字幕| 99偷拍视频在线日本| 国产精品色婷婷久久久精品| 青青草婷婷综合五月| 97性视频| 亚洲丁香五冃97色| 熟女激情网| 五月的色婷婷高潮| 国产伦亲子伦亲子视频观看| 五月婷婷综合影院| 热99re| 另类激情综合| 激情久久综合网| www.av视频xx999.com| 九九激情| 国产熟妇的荡欲午夜视频| 丁香密臀AV激情网| 五月天婷婷丁香社区| 日本婷婷| 啪啪六月婷婷| 五月天激情久色| 亚洲综合另类| 伦乱天堂| 久久婷婷综合五月天| 玖玖婷婷免费| 亚洲五月丁香综合网| 六月婷婷综合| 播丁香五月婷婷欧美| 九九热九九热精品| 亚洲天堂热| 丁香花操逼| 久热网在线视频| 成人无码精品1区2区3区免费看| 99九九热在线观看| 6080av| 亚洲日本韩国| 天天摸.天天mo| 97色色综合| 色玖玖玖| 99热激情| 色色色色色九九九九九| 欧美va亚洲va在线播放| www.超碰在线| 丁香九月婷| 97色女人在线| 在线你懂的亚洲欧| 中文av网| 天色色综合网| 九九激情| 热婷婷av| 色五婷婷| 九九综合影音先锋| 欧美色六月婷婷| 婷婷99狠狠| 天搞天天天天天| www.婷婷六月天| 99欧美| 色婷婷色99国产综合精品| 超碰免费成人| 丁香五月性| 91美女被操| 综合五月婷婷| 爱性综合网| 丁香五月欧美| 五月婷婷中文网| 91在线就要啪| 丁香激激情网| 玖玖99婷婷| 五月天婷婷成人| 欧美亚洲成人在线| 五月丁香六月婷婷色情| 日本久热| 中文AV网站| 六月丁香视频网站| 狠狠色噜噜狠| 色五XX| 欧美在线视频9| 五月天大香蕉| 激情综合网之激情五月| 国产亚洲精品AAAAAAA片| 99日这里只有精品| 欧美色碰| 婷婷色丁香五月| 第二色AⅤ| 综合色、色综合| 天天色综合图片| 久久婷婷的综合色丁香五月| 六月婷婷啪啪| 99综合网| 五月丁香啪综合| 亚洲综合网激情五月天| 两性婷婷丁香五月| 亚洲精品永久久久久久| 久久天天天| 成人美女网| 婷婷五月天电影区小说区| 六月婷婷av| 天天射影院| 97色色在线视频| 亚洲综合九九| 怡红院AV亚洲一区二区三区H| 婷婷丁香激情| AV在线免费播放| 久久激情视频| 伊人五月成人| 婷婷五月天在线看| 国产偷人爽久久久久久老妇APP| 丁香五月欧美激情| 丁香婷婷人妻| 亚洲永远av在线播放| 亚洲成人无码网站| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 日韩五月天婷婷| 激情五月婷婷| 婷婷六月啪啪| 国产99视频永久免费| 久久久aaa| 五月丁香婷婷综合网| 日本欧美国产| 激情五月婷婷她| 国产精品99久久久久久久女警| 五月天综合影院| 热中文字幕| 六月丁香色色色| 亚洲妇女熟BBW| 婷婷五月丁香基地| 亚洲狠狠狠色婷婷综合激情久久久| 亚洲AV电影美洲AV电影| 五月婷婷中文字幕| 99爱在线精品视频免费观看| 婷婷丁香六月综合激情站| 婷婷五月欧美综合| 免费视频无码| 五月天婷婷基地| 91操操操| 色优久久| 日韩av网站在线观看| 日本91在线播放| 欧美激情综合| 久久婷婷成人综合色怡春院| www.色窝| 久久综合性| 久久伊人婷| 丁香五月色激情| 日本狠狠干| 中文字幕综合| 99热这里只有精品55| 五月天色官网| WWW·色色色·COM| 久久一级免费黄色片| 国产欧美精品AAAAAA片| 五月婷婷视频| 国产色五月| oumeisesewang| 日日日,com| 99噜噜| 人人操91色| 另类亚洲电影| 狠狠婷婷色综合| 大香蕉婷婷色| 熟女激情网| 5五月综合网亚洲| 开心激情五月天网| 色狠狠综合| 五月色情婷婷开心五月色情| WWW、日本色丁香co m| 操B五月天| 99热日| 六月婷婷久久| 91热手机在线| 五月婷婷啪啪啪啪| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 色优久久| 色五月婷婷中文字幕| 亚洲热久久| 99日本黄站| 婷婷综合五月天亚洲综合| 成年人99热| 亚洲情a| 激情婷婷综合五月少妇| 99久久玖玖| 五月丁香中文字幕| 日韩在线aaa| 99∨VTV| 久久久久婷 | 亚洲欧美国产A片免费观看| 热久久婷婷| 午夜福利成人AV91| 天天综合网~91| 婷婷五月综合中文字幕| 色婷婷色综合久久精品V| 狠狠色噜噜色狠狠狠综合色 | 激情综合亚洲| 99亚洲天堂| 天堂婷婷五月色| 亚洲色小说在线综合| 成人在线日韩| A在线观看| 激情五月天啪啪| 色婷婷五月中文字幕在线dvd| 激情丁香图片| 婷婷五月综合网| 久操人妻| 大香蕉综合在线| 伊人激情AV一区二区三区| 丁香深五月婷婷| 69人人操人人爽| 97碰人人操| 99色这里| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 久久伊人婷婷| 久操热| 婷婷色五月噜噜| 午夜丁香五月天综合| 天天爱综合网| www.97碰碰com| 久久免片| 精品国产乱码久久久久久免费| 色综合色色色色色色综合| www.9797国产| 欧美日韩成人在线网站| 五月天天天综合| 天天碰天天插天天操| 婷婷五月天综合久久| 俺去也婷婷| 91碰免费视频| 超碰人人色| 六月丁香综合999| 99视频九九热| 婷婷亚洲综合| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 9久久网| 日本久久网| 五月激情婷婷在线| 亚洲激情婷婷| 99久久久| 婷婷丁香亚洲色综合91| 丁香五月AV综合| 久久丁香综合| 91久久久久久| 久久婷婷网址| 亚洲婷婷在线播放十月| 五月天婷婷青青草| 99色视频在线| 五月丁香六月停停停| 天天开心婷婷丁香五月| 丁香五月色欲| 九月av| 1024成人免费看| www.超碰在线| 色噜噜狠狠色综合日日| 99色综合| av色婷婷| 婷婷六月激情在线视频| 97人人干| 亚洲综合另类| 开心五月婷婷激情网| 亚洲日日日| 天天肏天天肏| 操一操| 天天玩夜夜操| 99re视频在线| 五月天激情开心网| 91精品丝袜久久久久久| AA久久| 五月天婷婷中文字幕在线播放| 天天日天天插| 五月天激情久久| 丁香五月婷婷动漫| 婷婷综合五月| 婷婷久久性爱| 五月天婷久精视频| 日欧一片内射VA在线影院| 五月婷视频久久| 欧美色色色色色色色色色色| 一级七香蕉| 丁香五月综合图片在线观看| 久草A片| av在线观看网站| 人妻久久久久久久| 月丁香久久久| 九九热视频免费的| 国产AV熟妇人震精品一品二区| 久操大香蕉| 色情综合| 国产日韩av片| 婷婷五月深爱五月| 国产亚洲99久久精品熟| 欧美色六月婷婷| 99热在线观看| 激情小说五月天社区丁香| 九九色精品| 六月婷婷综合激情| 国産精品| 日本97在线| 亚洲AV日韩无码| 婷婷五月天综合AV| 日韩在线一级| 久久久久久久久久久月丁| 婷婷色综合av| 色五月婷婷五月天激情综合| 99思思热只有在这里看| 99久久超级|