在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

手把手教你制作DAPLink

Rice嵌入式開(kāi)發(fā)技術(shù)分享 ? 來(lái)源:Rice嵌入式 ? 作者:Rice嵌入式 ? 2023-12-26 08:35 ? 次閱讀

這篇文章主要描述利用RT-THREAD+CherryUSB制作DapLink調(diào)試器(R_DapLink)全流程。這里先感謝網(wǎng)友:sakumisu提供cherryUSB協(xié)議棧的技術(shù)支持。

  • 什么是下載調(diào)試器簡(jiǎn)單來(lái)說(shuō),下載調(diào)試器是將PC(例如通過(guò)USB協(xié)議)發(fā)送的命令轉(zhuǎn)換為MCU(負(fù)責(zé)MCU內(nèi)部外圍設(shè)備)理解的語(yǔ)言(例如SWD或JTAG協(xié)議)的設(shè)備,加載代碼并精確控制執(zhí)行。

  • 什么是標(biāo)準(zhǔn)簡(jiǎn)單來(lái)說(shuō),標(biāo)準(zhǔn)是一組規(guī)則和協(xié)議,特定行業(yè)中的每個(gè)參與者都同意遵循并執(zhí)行。符合某種內(nèi)核的單片機(jī)Q,都可以使用這種協(xié)議來(lái)下載程序。JTAG和SWD其實(shí)都是一種標(biāo)準(zhǔn)的協(xié)議。比如JTAG和SWD,都支特下載ARMQ內(nèi)核單片機(jī)的程序。

  • 各種調(diào)試器的區(qū)別「J-Link:」最有名氣、各種渠道版本最多,號(hào)稱支持芯片量最多。

  1. 適合場(chǎng)景:如果項(xiàng)目文件比較大,首選!下載又快又穩(wěn),仿真調(diào)試也是杠杠的神器。
  2. 優(yōu)點(diǎn):最快、穩(wěn)如老狗。STM32F407芯片+109K代碼實(shí)測(cè)8秒完成燒錄過(guò)程。
  3. 缺點(diǎn):最貴,和諧版都四五十元起步,正版上至數(shù)千元。注意:V9版本以下的J-Link大多數(shù)不支持STM8

「ST-Link:」隨著STM32這十年八年的壟斷,ST-Link也跟著發(fā)大火了, 妥妥銷量一哥。

  1. 適合場(chǎng)景:學(xué)校里開(kāi)STM32課程的,幾乎每個(gè)宿舍都有吧~
  2. 優(yōu)點(diǎn):便宜、便宜,便宜!x寶13元包郵。特別注意一下:驅(qū)動(dòng)包就在KEIL本身的文件夾里頭,你說(shuō)它多火。
  3. 缺點(diǎn):不夠穩(wěn)定! 可能不時(shí)的來(lái)個(gè)彈窗。

「CMSIS-DAP:」軟硬件開(kāi)源!這兩三年,含量在火箭式起飛。很多人知道它是因?yàn)榧夹⌒潞土?chuàng)EDA的開(kāi)源工程。比STLink稍貴。

  1. 適合場(chǎng)景:玩stm32的,這個(gè)是最優(yōu)選擇。
  2. 優(yōu)點(diǎn):開(kāi)源、虛擬串口、免驅(qū)。大愛(ài)的虛擬串口,很爽、很爽, (有些下載器也有虛擬串口),更愛(ài)它開(kāi)源沒(méi)心病。
  3. 缺點(diǎn):真沒(méi)啥缺點(diǎn),能拼JLink的穩(wěn)定, 也能拼ST-Link的便宜,還沒(méi)版權(quán)問(wèn)題!109K代碼燒錄實(shí)測(cè)10秒,也算杠杠的吧。

「DAP-Link:」CMSIS-DAP的升級(jí)版。

  1. 適合場(chǎng)景:嗯,如果你的動(dòng)手能力高超,這個(gè)最合適,軟硬都開(kāi)源,可玩性極高,比如做個(gè)拖拽的脫機(jī)下載
  2. 優(yōu)點(diǎn):拖拽燒錄、升級(jí)固件。包括了CMSIS-DAP的優(yōu)點(diǎn):開(kāi)源+虛擬串口+免驅(qū)。
  3. 缺點(diǎn):真沒(méi)啥缺點(diǎn),能拼JLink的穩(wěn)定, 也能拼ST-Link的便宜,還沒(méi)版權(quán)問(wèn)題!

R_DapLink說(shuō)明

  • R_DapLink支持:DapLink+CDC(虛擬串口),采用USB2.1協(xié)議。采用GPIO模擬SWD時(shí)序

硬件準(zhǔn)備

  • R_DapLink的硬件采用stm32f103c8t6,內(nèi)核:ARM Cortex-M3,主頻:72MHz,F(xiàn)lash:64KB,RAM:20KB
b79144b2-a386-11ee-be60-92fbcf53809c.jpg
  • 開(kāi)發(fā)板我們需要做一些改動(dòng),由于SWD的數(shù)據(jù)線有輸入和輸出,我們這里采用兩個(gè)引腳合并成一個(gè)引腳作為SWD的數(shù)據(jù)線。stm32的GPIOB0作為SWD的數(shù)據(jù)線的輸出,stm32的GPIOA7作為SWD的數(shù)據(jù)線的輸入
b79765f4-a386-11ee-be60-92fbcf53809c.jpg
  • 準(zhǔn)備一個(gè)現(xiàn)成的調(diào)試器來(lái)調(diào)試我們的R_DapLink,這里采用正點(diǎn)原子的DapLink。
  • R_DapLink支持CDC(虛擬串口),所以我們還需要一個(gè)串口工具,這里采用CH340。

軟件準(zhǔn)備

  • R_DapLink采用RT-Thread作為我們實(shí)時(shí)系統(tǒng),提供系統(tǒng)調(diào)度,IPC通信。選擇RT-Thread的原因:RT-Thread已經(jīng)包含了cherryUSB協(xié)議棧軟件,這給我減少了很多移植的工作量。
  • R_DapLink的USB協(xié)議棧采用cherryUSB協(xié)議棧,其代碼鏈接:https://github.com/cherry-embedded/CherryUSB。cherryUSB協(xié)議棧提供了對(duì)應(yīng)的文檔,其文檔鏈接:https://cherryusb.readthedocs.io/zh-cn/latest/
  • DAPLink:Arm Mbed DAPLink是一個(gè)開(kāi)源軟件項(xiàng)目,可以對(duì)Arm Cortex CPU上運(yùn)行的應(yīng)用程序進(jìn)行編程和調(diào)試。其鏈接:https://github.com/ARMmbed/DAPLink

移植DapLink

準(zhǔn)備rt-thread工程

  1. 下載rt-thread的源碼,源碼鏈接:https://gitee.com/rtthread/rt-thread,我們采用4.1.1的版本,所以下載完源碼需要切換到4.1.1版本中。
  2. 下載完源碼,進(jìn)入stm32f103-blue-pill這個(gè)BSP,路徑:xxxbspstm32stm32f103-blue-pill,通過(guò)env工具dist出來(lái),
b7add65e-a386-11ee-be60-92fbcf53809c.jpg
  1. 從dist目錄下拷貝stm32f103-blue-pill工程出來(lái),并修改名字為:r_daplink。

增加cherryUSB軟件包

  1. 進(jìn)入上面準(zhǔn)備好的工程:r_daplink,在工程目錄中打開(kāi)env工具,輸入menuconfig。
b7b7be6c-a386-11ee-be60-92fbcf53809c.jpg
  1. 配置增加cherryUSB
b7bed01c-a386-11ee-be60-92fbcf53809c.jpg
  1. r_daplink的USB是作為device,所以選擇選擇Device mode
b7ce8994-a386-11ee-be60-92fbcf53809c.jpg
  1. r_daplink的usb的速度為全速,選擇FS,stm32f103c86的USB IP為FSDEV,并選擇上cdc,用于實(shí)現(xiàn)虛擬串口。
b7dccb12-a386-11ee-be60-92fbcf53809c.jpg

增加DAPLink源碼

  1. 下載DAPLink代碼,鏈接:https://github.com/ARMmbed/DAPLink
  2. DAPLink代碼很多,但實(shí)際我們只用核心的部分,將DAPLink代碼中:sourcedaplinkcmsis-dap目錄拷貝到r_daplink工程中。
b7e906a2-a386-11ee-be60-92fbcf53809c.jpg
  1. r_daplink工程中增加兩個(gè)文件:DAP_config.h和IO_Config.h文件。其中:DAP_config.h用于配置DAPLink的配置,并適配SWD時(shí)序模擬的GPIO,IO_Config.h用于配置SWD使用到的GPIO的描述。具體內(nèi)容看我的開(kāi)源倉(cāng):https://gitee.com/RiceChen0/r_daplink

USB適配

  1. r_daplink的daplink采用winusb+cdc,其中包含3個(gè)接口,4個(gè)端點(diǎn),其設(shè)備描述符適配:
constuint8_tcdc_winusb_descriptor[]={
USB_DEVICE_DESCRIPTOR_INIT(USB_2_1,0xEF,0x02,0x01,USBD_VID,USBD_PID,0x0100,0x01),
USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE,0x03,0x01,USB_CONFIG_BUS_POWERED,USBD_MAX_POWER),
USB_INTERFACE_DESCRIPTOR_INIT(0x00,0x00,0x02,0xff,0x00,0x00,0x02),
USB_ENDPOINT_DESCRIPTOR_INIT(WINUSB_OUT_EP,0x02,USB_MAX_MPS,0x00),
USB_ENDPOINT_DESCRIPTOR_INIT(WINUSB_IN_EP,0x02,USB_MAX_MPS,0x00),
CDC_ACM_DESCRIPTOR_INIT(0x01,CDC_INT_EP,CDC_OUT_EP,CDC_IN_EP,USB_MAX_MPS,0x00),
///////////////////////////////////////
///string0descriptor
///////////////////////////////////////
USB_LANGID_INIT(USBD_LANGID_STRING),
///////////////////////////////////////
///string1descriptor
///////////////////////////////////////
0x12,/*bLength*/
USB_DESCRIPTOR_TYPE_STRING,/*bDescriptorType*/
'R',0x00,/*wcChar0*/
'i',0x00,/*wcChar1*/
'c',0x00,/*wcChar2*/
'e',0x00,/*wcChar3*/
'C',0x00,/*wcChar4*/
'h',0x00,/*wcChar5*/
'e',0x00,/*wcChar6*/
'n',0x00,/*wcChar7*/
///////////////////////////////////////
///string2descriptor
///////////////////////////////////////
0x1E,/*bLength*/
USB_DESCRIPTOR_TYPE_STRING,/*bDescriptorType*/
'R',0x00,/*wcChar0*/
'i',0x00,/*wcChar1*/
'c',0x00,/*wcChar2*/
'e',0x00,/*wcChar3*/
'',0x00,/*wcChar4*/
'C',0x00,/*wcChar5*/
'M',0x00,/*wcChar6*/
'S',0x00,/*wcChar7*/
'I',0x00,/*wcChar8*/
'S',0x00,/*wcChar9*/
'-',0x00,/*wcChar10*/
'D',0x00,/*wcChar11*/
'A',0x00,/*wcChar12*/
'P',0x00,/*wcChar13*/
///////////////////////////////////////
///string3descriptor
///////////////////////////////////////
0x1C,/*bLength*/
USB_DESCRIPTOR_TYPE_STRING,/*bDescriptorType*/
'R',0x00,/*wcChar0*/
'i',0x00,/*wcChar1*/
'c',0x00,/*wcChar2*/
'e',0x00,/*wcChar3*/
'-',0x00,/*wcChar4*/
'2',0x00,/*wcChar5*/
'0',0x00,/*wcChar6*/
'2',0x00,/*wcChar7*/
'3',0x00,/*wcChar8*/
'0',0x00,/*wcChar9*/
'1',0x00,/*wcChar10*/
'0',0x00,/*wcChar11*/
'1',0x00,/*wcChar12*/
0x00
};
  1. winusb端點(diǎn)適配
voidusbd_winusb_out(uint8_tep,uint32_tnbytes)
{
usbd_ep_start_read(WINUSB_OUT_EP,usb2dap_buff[usb2dap_index],USB2DAP_PACK_SIZE);
}

voidusbd_winusb_in(uint8_tep,uint32_tnbytes)
{
if((nbytes%USB_MAX_MPS)==0&&nbytes){
usbd_ep_start_write(WINUSB_IN_EP,NULL,0);
}
}

structusbd_endpointwinusb_out_ep={
.ep_addr=WINUSB_OUT_EP,
.ep_cb=usbd_winusb_out
};

structusbd_endpointwinusb_in_ep={
.ep_addr=WINUSB_IN_EP,
.ep_cb=usbd_winusb_in
};
  1. cdc端點(diǎn)適配
voidusbd_cdc_acm_bulk_out(uint8_tep,uint32_tnbytes)
{
usbd_ep_start_read(CDC_OUT_EP,usb2uart_buff,USB2UART_PACK_SIZE);
}

voidusbd_cdc_acm_bulk_in(uint8_tep,uint32_tnbytes)
{
if((nbytes%USB_MAX_MPS)==0&&nbytes){
usbd_ep_start_write(CDC_IN_EP,NULL,0);
}
}

structusbd_endpointcdc_out_ep={
.ep_addr=CDC_OUT_EP,
.ep_cb=usbd_cdc_acm_bulk_out
};

structusbd_endpointcdc_in_ep={
.ep_addr=CDC_IN_EP,
.ep_cb=usbd_cdc_acm_bulk_in
};
  1. usb初始化
intusb_service_init(void)
{
usbd_desc_register(cdc_winusb_descriptor);
usbd_bos_desc_register(&bos_desc);
usbd_msosv2_desc_register(&msosv2_desc);

usbd_add_interface(&intf0);
usbd_add_endpoint(&winusb_out_ep);
usbd_add_endpoint(&winusb_in_ep);

usbd_add_interface(usbd_cdc_acm_init_intf(&intf0));
usbd_add_interface(usbd_cdc_acm_init_intf(&intf1));
usbd_add_endpoint(&cdc_out_ep);
usbd_add_endpoint(&cdc_in_ep);

usbd_initialize();
returnRT_EOK;
}
  1. 以上適配完將板子的USB插上電腦,通過(guò)設(shè)備管理器查看是否成功
b7ef8a86-a386-11ee-be60-92fbcf53809c.jpg

cdc適配

  1. 我們采用串口3作為我們USB到串口的轉(zhuǎn)發(fā)。
  2. cdc虛擬串口的配置傳給串口3,具體實(shí)現(xiàn)如下:
staticvoiduart_config_set(uart_config_t*config)
{
if(rt_memcmp(&uart_config,(rt_uint8_t*)config,sizeof(uart_config_t))!=0)
{
rt_memcpy((rt_uint8_t*)&uart_config,config,sizeof(uart_config_t));
uart_is_config=RT_TRUE;
}
if(uart_is_config)
{
structserial_configureserial_config=RT_SERIAL_CONFIG_DEFAULT;
if(uart_dev!=RT_NULL){
rt_device_close(uart_dev);
uart_dev=RT_NULL;
}

uart_is_config=RT_FALSE;
uart_dev=rt_device_find(UART_NAME);
serial_config.baud_rate=uart_config.baudrate;
serial_config.stop_bits=uart_config.stopbit;
serial_config.parity=uart_config.parity;
serial_config.data_bits=uart_config.databit;
serial_config.bufsz=UART_PACK_SIZE;
rt_device_control(uart_dev,RT_DEVICE_CTRL_CONFIG,&serial_config);

rt_device_open(uart_dev,RT_DEVICE_FLAG_DMA_RX);
rt_device_set_rx_indicate(uart_dev,uart_recv_isr);
}
}
  1. cdc虛擬串口數(shù)據(jù)到串口3的實(shí)現(xiàn)如下:
voidusb2uart_handler(rt_uint8_t*data,rt_uint16_tlen)
{
if(uart_dev)
{
rt_device_write(uart_dev,0,data,len);
}
}
  1. 串口3數(shù)據(jù)到cdc虛擬串口的實(shí)現(xiàn)如下:
staticrt_err_tuart_recv_isr(rt_device_tdev,rt_size_tsize)
{
if(size>0)
{
rt_sem_release(&uart_rx_sem);
}
returnRT_EOK;
}

staticvoiduart2usb_handler(void*param)
{
rt_uint16_trx_size=0;
for(;;)
{
rt_sem_take(&uart_rx_sem,RT_WAITING_FOREVER);
if(uart_dev)
{
rx_size=rt_device_read(uart_dev,0,uart_rx_buff,UART_PACK_SIZE);
usb_service_uart2usb(uart_rx_buff,rx_size);
}
}
}
  1. 測(cè)試驗(yàn)證:
b802227c-a386-11ee-be60-92fbcf53809c.jpg

daplink適配

  1. daplink的實(shí)現(xiàn)原理:將usb接收到的數(shù)據(jù)傳輸?shù)紻AP_ExecuteCommand()函數(shù),并且從這個(gè)函數(shù)獲取返回?cái)?shù)據(jù),將數(shù)據(jù)傳輸?shù)絬sb上。

  2. 我們將usb接收到數(shù)據(jù)通過(guò)郵箱的方式傳輸?shù)綌?shù)據(jù)處理現(xiàn)成,具體實(shí)現(xiàn)如下:

staticvoidusb2dap_handler(rt_uint8_t*data,rt_uint16_tlen)
{
rt_mb_send(&dap2usb_mb,(rt_ubase_t)data);
}

staticvoiddap2usb_handler(void*param)
{
char*rx_data=NULL;
for(;;)
{
if(rt_mb_recv(&dap2usb_mb,(rt_ubase_t*)&rx_data,RT_WAITING_FOREVER)==RT_EOK)
{
if(rx_data[0]==ID_DAP_QueueCommands)
{
rx_data[0]=ID_DAP_ExecuteCommands;
}
dap2usb_size=DAP_ExecuteCommand((constuint8_t*)rx_data,dap2usb_buff);
usb_service_dap2usb(dap2usb_buff,dap2usb_size);
}
}
}
  1. 驗(yàn)證:我們keil里面選擇我們dap,可以正常的識(shí)別到DAP,并且能識(shí)別鏈接的設(shè)備
b80863d0-a386-11ee-be60-92fbcf53809c.jpg

r_daplink的燒錄驗(yàn)證

b80ed74c-a386-11ee-be60-92fbcf53809c.jpgb81ba030-a386-11ee-be60-92fbcf53809c.jpg

總結(jié)

r_daplink的開(kāi)源鏈接:https://gitee.com/RiceChen0/r_daplink

b82a1e44-a386-11ee-be60-92fbcf53809c.png


審核編輯 黃宇


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7945

    瀏覽量

    264657
  • Link
    +關(guān)注

    關(guān)注

    0

    文章

    101

    瀏覽量

    26964
  • 調(diào)試器
    +關(guān)注

    關(guān)注

    1

    文章

    305

    瀏覽量

    23741
  • dap
    dap
    +關(guān)注

    關(guān)注

    1

    文章

    24

    瀏覽量

    8478
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    手把手教你制作機(jī)器人

    手把手教你制作機(jī)器人
    發(fā)表于 08-12 09:52

    手把手教你制作無(wú)線充電器

    手把手教你制作無(wú)線充電器(無(wú)線充電原理+產(chǎn)品應(yīng)用+DIY實(shí)例)
    發(fā)表于 09-28 07:48

    手把手教你構(gòu)建一個(gè)完整的工程

    手把手教你構(gòu)建一個(gè)完整的工程
    發(fā)表于 08-03 09:54 ?33次下載
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>構(gòu)建一個(gè)完整的工程

    手把手教你寫批處理-批處理的介紹

    手把手教你寫批處理-批處理的介紹
    發(fā)表于 10-25 15:02 ?69次下載

    美女手把手教你如何裝機(jī)(中)

    美女手把手教你如何裝機(jī)(中) 再來(lái)是硬碟的部份,這款機(jī)殼還不錯(cuò),可以旋轉(zhuǎn)支架~
    發(fā)表于 01-27 11:14 ?1467次閱讀

    美女手把手教你如何裝機(jī)(下)

    美女手把手教你如何裝機(jī)(下) 接著下來(lái)就是今天的重頭戲,開(kāi)核蘿!~
    發(fā)表于 01-27 11:16 ?2923次閱讀

    手把手教你制作立體聲調(diào)頻電臺(tái)

    手把手教你制作立體聲調(diào)頻電臺(tái)
    發(fā)表于 03-28 14:43 ?5542次閱讀
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b><b class='flag-5'>制作</b>立體聲調(diào)頻電臺(tái)

    手把手教你學(xué)電子書制作

    手把手教你學(xué)電子書制作,可以自己DIY電子書
    發(fā)表于 09-13 11:26 ?0次下載

    手把手教你安裝Quartus II

    本章手把手把教你如何安裝 Quartus II 軟件 ,并將它激活 。此外 還有USB -Blaster下載器的驅(qū)動(dòng)安裝步驟 。
    發(fā)表于 09-18 14:55 ?9次下載

    手把手教你在家搭建監(jiān)控系統(tǒng)

    手把手教你在家搭建監(jiān)控系統(tǒng)
    發(fā)表于 01-17 19:47 ?25次下載

    手把手教你做電子時(shí)鐘---前言

    手把手教你做彩鈴電子時(shí)鐘
    發(fā)表于 11-14 16:53 ?11次下載

    手把手教你如何開(kāi)始DSP編程

    手把手教你如何開(kāi)始DSP編程。
    發(fā)表于 04-09 11:54 ?12次下載
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>如何開(kāi)始DSP編程

    手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)

    手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)手把手教你學(xué)LabVIEW視
    發(fā)表于 03-06 01:41 ?3135次閱讀

    手把手教你開(kāi)關(guān)電源PCB排板

    手把手教你開(kāi)關(guān)電源PCB排板(新型電源技術(shù))-分享一下開(kāi)關(guān)電源PCB排板的基本要點(diǎn)及分析,以及例子講解。絕對(duì)的手把手
    發(fā)表于 09-18 12:27 ?58次下載
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>開(kāi)關(guān)電源PCB排板

    手把手教你學(xué)FPGA仿真

    電子發(fā)燒友網(wǎng)站提供《手把手教你學(xué)FPGA仿真.pdf》資料免費(fèi)下載
    發(fā)表于 10-19 09:17 ?2次下載
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>學(xué)FPGA仿真
    主站蜘蛛池模板: 好大好硬好长好爽a网站| 国产在线视频你懂的| 五月激情电影| 一级三级黄色片| 婷婷久久综合九色综合九七| 久久久久四虎国产精品| 成人av.com| 天天做夜夜爱| www.午夜色| 色妞网| 久久婷婷午色综合夜啪| 天天摸天天躁天天添天天爽 | 四虎永久地址4hu紧急入口| 人人插97| 天天操一操| 九九热re| 黄网站在线播放| 国产香蕉视频在线| 视频在线二区| 美日韩免费视频| 亚洲最新视频| 777午夜精品免费播放| 日本亚洲一区二区| 美女视频永久黄网站在线观看| 日本特级黄色录像| 有一婷婷色| 免费人成年激情视频在线观看| 天天操夜夜干| 在线精品一区二区三区| 国产在线永久视频| 欧美区在线| 日本黄色大片网站| 美女福利在线观看| 欧美aaaaaaaaa| 三级视频网站在线观看播放| 国产在线一卡| 黄色在线网站视频| 免费一级毛毛片| 1024手机免费看| 欧美色视频日本片高清在线观看 | 午夜视频国语|