《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 如何用C語言開發DSP嵌入式系統
如何用C語言開發DSP嵌入式系統
摘要: 本文以TI公司的DSP器件TMS320F24X系列為例,講述怎樣用C語言開發一個完整的DSP嵌入式系統。
關鍵詞: DSP C語言 TMS320F24X
Abstract:
Key words :

  引言

  大家在開發嵌入式產品時首先會想到用控制器的匯編語言編寫監控程序,主要原因是:①匯編語言生成的程序對應的二進制代碼少,程序執行要比高級語言生成的程序快;②控制器剛問世時,沒有相應的高級語言可供使用;③存儲器的價格問題和尋址空間的限制。

  以上所述問題目前已基本解決,在這就不闡述了。實際情況是:在單片機的應用領域,開發者已開始使用C語言進行開發。大家發現用高級語言開發嵌入式產品是如此輕松,并且C語言程序編譯后的二進制代碼也非常短小精練。

  目前使用最多的數字信號處理器(DSP)是美國TI公司的TMS320家族,而工業控制上用得最多的又是TMS320F2XX系列。TI公司為每一個DSP芯片提供了匯編語言和C語言供開發者選用。本人一直使用C語言進行產品開發,而目前很少見到這方面的介紹、所以特撰此文,以TMS320F240為例,向各位同行推薦用C語言開發DSP嵌入式系統。

  1 DSP的C語言的特殊性

  大家在使用51系列C語言時已經注意到,控制器的C語言和PC機上使用的C有一個顯著的特點:經常要對硬件操作,程序中有大量針對控制器內部資源進行操作的語句。所以,開

 

發者要明白怎樣用C語言來操縱控制器的內部資源,即怎樣用C語句操作寄存器和內部存儲器等。

 

  舉個例子:在51匯編中我們寫 MOV A,#20H;匯編程序能夠識別A是指累加器;而在51的C程序中我們寫ACC=32;,編譯器能夠識別ACC是指累加器而不是一般的變量。即每一個寄存器都有一個專有名字供開發者使用,它們定義在一個頭文件reg51.h中,程序員只需在程序的開始部分用#include“reg51.h”語句將該文件包含進來即可。注意:這些寄存器的名字不能用作變量名。

  同樣,在TMS320F240的C語言中也有一個頭文件C240.H定義各個寄存器的名稱,這里摘錄幾條語句進行介紹。

  比如:#define IMR((PORT)0x0004)

  #define XINTI_CR((PORT) 0x07070)

  IMR、XINT1_CR就對應兩個寄存器,實際是寄存器的地址,用高級語言的說法是指針。我們也在程序的開始部分用#include“c240.h”語句將該文件包含進來。這樣,在DSP的C語言中使用它們只需在前面加一個星號(*),例如,

  *IMR=0X1010;/*將十六進制數1010H賦給IMR寄存器*/

  *XINT1_CR=0X0A0B0;/*將十六進制數A0B0H賦給XINT1_CR寄存器*/

  開發者最好將c240.h這個文件打印出來,弄清楚各個寄存器的定義名稱。至于不涉及硬件的語法和ANSI語法一樣。需要注意的是,有些ANSI標準中的函數在DSP的編譯器中不提供,讀者可以參考DSP編譯器的C語言手冊。搞清楚了這些特殊性,由匯編語言轉到C語言開發是很容易的事。當然,沒有匯編語言編程基礎的人同樣可以用C語言開發DSP應用系統。

  有關嵌入式系統的C語言編程可參考《單片機與嵌入式系統應用》2001年1~6期《嵌入式C編程技術》,本文不作討論。下面只針對以TMS320F240芯片為處理器的嵌入式C語言編程進行闡述,希望能夠指導讀者進行具體操作。

  2 TMS320F240芯片的C語言開發過程

  簡單地說,整個過程包括以下5個步驟:

 ?、倬庉婥語言源程序;

 ?、诰幾g源程序(注意編譯參數);

 ?、坻溄幽繕宋募ㄗ⒁庥肅MD文件);

 ?、茉诰€仿真;

  ⑤固化程序。

  2.1源程序的編輯

  可以用任何一個編輯器書寫源程序,如EDIT。NOTEPAD等,最后以.C為后綴存盤。源代碼可以寫在一個C文件中,也可寫在多個C文件中;有些預定義變量和函數原型聲明可以集中放在一個頭文件中。

  注意事項:不要忘記在C程序的前面用 #in-clude “c240.h”將寄存器定義文件包括進來。

  2.2源程序的編譯

  源程序編輯好后可以用DSPCL編譯程序進行編譯,生成OBJ文件。

  使用格式:DSPCL源文件名 參數

  例如: DSPCL EX1.C-V2XX-GK-MN

  常用參數的意義:

  V2XX——表示C編譯器選擇處理器2XX系列;

  GK——保留編譯生成的匯編文件(.ASM文件);

  MN——進行正常優化。

  其它參數請參考DSP編譯器的手冊。如果有多個源文件分別編譯,每一個源文件經編譯后產生一個OBJ文件和ASM文件。

 

 

  2.3  目標文件的鏈接

  2.3.1 TI公司的COFF文件格式

  TI公司新的匯編器和編譯器創建的目標文件采用COFF(Common Object File Format)的目標文件格式。采用COFF格式有利于模塊化編程,為管理代碼段和目標系統存儲器提供更加有力和靈活的方法?;贑OFF格式編寫匯編程序或C語言程序時,不必為程序代碼和變量指定目標地址;為程序編寫和程序移植提供了極大的方便。

 

  COFF格式的基本思想是:鼓勵程序員在用匯編語言或C語言編程時運用代碼塊和數據塊的概念。這種塊稱為SECTION,是目標文件中的最小單位。

  所有的塊分為兩大類:已初始化塊和未初始化塊。已初始化塊包含程序代碼和數據,未初始化塊是為未初始化的數據在存儲器中的保留塊。C編譯器對C程序編譯后產生已初始化塊和未初始化塊,已初始化塊如.text塊、.const塊、.cinit塊;未初始化塊如.bss塊。

  舉個例子,當程序員用C語句float data[100];定義一個數組時,不需要指定這100個數組元素的具體位置,編譯器會在數據區預留所需空間。到鏈接時鏈接器會具體定位。

  2.3.2  鏈接器對塊的處理

  鏈接器對塊的處理有兩個功能:其一,將COFF目標文件中的塊用來建立程序塊和數據塊,并將這些塊組合成可以被DSP芯片執行的COFF輸出模塊;其二,鏈接器為輸出塊指定存儲位

 

置。

 

  鏈接器提供兩個命令實現上述功能:MEMORY和SECTIONS。MEMORY命令定義目標系統的存儲器,程序員可以定義每一塊存儲器并指定起始地址和長度;SECTIONS命令用來定義輸入塊的組合和輸出塊在存儲器中的存放位置。若不用MEMORY和SECTIONS命令,鏈接器采用缺省的分配算法。推薦使用這兩個命令,但要注意這兩個命令在CMD文件(鏈接器命令文件)中使用。

  下面分析一個TMS320F240芯片的典型CMD文件。(假設文件名 EX1.CMD。)

  (1)CMD文件的構成及其詳細解釋

  BOOT.OBJ  /*F240的中斷矢量表,參見后面的說明*/

  EX1.OBJ  /*源程序編譯后對應的目標文件*/

  /*若程序有多個目標文件,一塊寫在這里*/

  -STACK 0X400       /*設定系統堆棧*/

  -C                /*ROM初始化*/

  -O EX1.OUT     /*輸出的文件名*/

 ?。璏  EX1.MAP      /*輸出映像文件名*/

  -L RTS2XX.LIB    /*漣接RTS2XX.LIB庫*/

  MEMORY /*MEMORY命令規定系統的存儲器配置*/

 ?。?/p>

   PAGEO:ROM0:origin=0000h,length=003fh

  /*FLASH ROM*/

  PAGE0:ROM1:origin=0040h,length=0200h

  /*FLASH ROM*/

  PAGEO:ROM2:origin=0240h,length=3000h

  /*FLASH ROM*/

  PAGE1:RAM_B2:origin=0060h,length=0020h

  /*內部RAMB2*/

  PAGE1:RAM_B1:origin=0300h,length=0100h

  /*內部RAM B1*/

  PAGE1:RAM_B0:origin=0100h,length=0100h

  /*內部RAM B0*/

  PAGE1:RAM_EX:origin=0d000h,length=2800h

  /*外部擴展RAM*/

  }

  SECTIONS  /*SECTIONS命令規定了程序中塊的具體分配方法*/

  {

  .vectors:load=ROM0  /*規定矢量表的存放位置*/

  .cinit:load=rom1   /*C初始化表的存放位置*/

 ?。畉ext:    load=ROM2   /*系統程序的存放位置*/

 ?。産SS   load=RAM_B0    /*未初始化數據的存放位置*/

  .const  load=RAM_B1   *已初始化數據的存放位置*/

 ?。?/p>

 ?。?)TMS320F240鏈接時所需的中斷矢量表文件

 

  TMS320F240的目標文件在鏈接時要用到中斷矢量表。中斷矢量表用匯編語言編寫,和具體的DSP芯片有關。假設TMS320F240的中斷矢量表對應的匯編程序為BOOT.ASM,匯編后的文件名為BOOT.OBJ。

  下面是一個典型的矢量表文件。(假設程序名為BOOT.ASM。)

 ?。畃ort /*定義中斷函數的名字*/

  .globl_c_int0 /*中斷0對應的函數名*/

  .globl_c_int1    /*中斷1對應的函數名,以下語句的意義相同*/

 ?。甮lobl_c_int2   /*可以將中斷函數名看作中斷入口地址*/

 ?。甮lobl_c_int3   /*矢量表的存放不需程序員干預*/

 ?。甮lobl_c_int4

 ?。甮lobl_c_int5

  .globl_c_int6

 ?。甮lobl_c_int7

  .globl_c_int8

  ·sect“.vectors”/*用.sect命令自定義一個塊,用于存放中斷矢量表*/

  RSVE

 

CT B  _c_int0    /*中斷0發生后,程序的跳轉目的地址*/

 

  INT1  B  _c_int1 /*中斷1發生后,則跳到c_int1()函數處*/

  INT2  B  _c_int2 /*意義同上,下同*/

  INT3 B  _c_int3

  INT4 B  _c_int4

  INT5 B  _c_int5

  INT6 B  _c_int6

  用匯編器匯編該程序,命令形式:DSPABOOT.ASM-V2XX生成BOOT.OBJ文件供鏈接器使用。這樣,就可以按如下形式在C源程序中編寫中斷函數:

  voidc_inx() /*x為1~8中之一*/

  {

  中斷程序的C語句系列;

 ?。?/p>

  注意事項:c_int0()是系統入口函數,用戶不能編寫。

  經過上面對命令文件(CMD文件)和中斷矢量表的介紹,接下來可以鏈接命令文件來生成所需要的OUT文件供DSP芯片執行或進行軟仿真。

  命令形式:DSPLNK CMD文件名

  例如:DSPLNK EX1.CMD

  另一種情況是,不使用CMD文件,使用缺省配置,簡單介紹如下:

  命令形式:DSPLNK OBJ文件名參數

  例如:DSPLNK EX1.OBJ BOOT.OBJ-O XX1.OUT-M XX1.MAP

  以上三步可以用圖1描述。

  2.4程序的仿真

  用EMURST仿真器復位命令

  EMU2XXW EX1.OUT

  載入COFF格式的二進制代碼仿真運行。有關調試器的使用略。

  2.5程序的固化

  程序仿真運行正確后,需要固化到Flash ROM中。TMS320F240內部有16K字的Flash ROM可以用來固化程序,而不需要外擴EPROM(程序不大于16K字的情況下)。

  TI公司提供有固化程序的軟件,可以通過仿真器經JTAG口將程序寫入芯片內、目前發展了一種新的固化技術,可以通過串口寫入DSP芯片,特別適合于現場調試。下面介紹通過JTAG口的固化方法。

  首先用EMURST命令復位調試器,然后執行下面三個批處理文件。

  第一步,執行BCO.BAT批處理文件,將FlashROM清除(CLEAR),使全為0。

  第二步,執行BE0.BAT批處理文件,將FlashROM擦除(ERASE),使全為1。

 ?。ㄒ陨蟽刹讲恍枰薷能浖凶詭У倪@兩個BAT文件。)

  第三步,執行BP16K.BAT批處理文件,將自己的OUT文件寫入到DSP內部的Flash ROM中。執行這一步之前,要先修改BP16K,BAT,將待寫入的OUT文件替換成自己的OUT文件。下面看一下這個批處理文件。假設軟件包的安裝目錄為C:\DSP,該目錄下有一個子目錄SRC。

  prg2xx-p240-m0x0006-w6src\c2xx_bpx.out要寫入的OUT文件

  如果要將EX1.OUT寫入到DSP的Flash中,則執行下面的命令:

  prg2xx-p240-m0x0006-w6src\c2xx_bpX.out c:\dsp\EX1.out

 

 

  經過以上步驟即完成了程序固化,可以將系統放到現場實驗了。

  注意:固化程序時,CPU一定要工作在20MHz的頻率下。在SRC子目錄下有一個配置文件C240_CFG.I,讀者可以根據程序說明并結合自己系統的外部晶振頻率將CPU的工作頻率設為20MHz(寫入時的頻率)。

 

  本文以TMS320F240的開發為例,介紹了怎樣用C語言開發DSP系統的全過程。希望對讀者會有所啟發和幫助。

  參考文獻

  [1]Texas Instruments. TMS320F/C24XDSP Con-trollers Peripheral Library And Specific Devive.1999

  [2]Texas Instrument.TMS320C2X/C5X OptimizingC Compiler User’s Guide.1994

  [3]張雄偉.DSP芯片的原理與開發應用.北京:電子工業出版社,  2001

  [4]章云.DSP控制器及其應用.北京:機械工業出版社, 2001

 
此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国内成人在线| 亚洲二区三区四区| 亚洲午夜国产成人av电影男同| 一区二区不卡在线视频 午夜欧美不卡在| 欧美成人按摩| 在线观看亚洲| 亚洲精品色图| 欧美日韩色一区| 亚洲国产欧美日韩精品| 亚洲男人的天堂在线| 欧美涩涩网站| 亚洲精品一区二区三区樱花| 久久精品成人欧美大片古装| 洋洋av久久久久久久一区| 精久久久久久久久久久| 欧美日韩一二三四五区| 狠狠操狠狠色综合网| 亚洲视频免费看| 久久精品国产亚洲5555| 一区二区三区日韩精品视频| 久久久综合激的五月天| 亚洲视频在线播放| 国内精品久久久久久久影视麻豆| 亚洲美女视频网| 亚洲国产精品va在看黑人| 欧美在线视频免费观看| 亚洲一级黄色av| 国产亚洲精品高潮| 欧美日韩一区二区三区| 噜噜噜在线观看免费视频日韩| 欧美69视频| 新狼窝色av性久久久久久| 欧美精品久久久久久久久老牛影院| 艳女tv在线观看国产一区| 国产欧美日韩三级| 欧美亚洲成人免费| 欧美精品在线一区| 久热精品视频在线观看| 国产精品免费视频xxxx| 激情综合电影网| 一本综合久久| 在线一区免费观看| 国产精品久久久久久久久久尿| 国产亚洲欧美在线| 久久久国产精品一区| 欧美三区不卡| 国产精品久久一卡二卡| 亚洲在线视频网站| 亚洲欧美日韩网| 国产欧美日韩精品专区| 亚洲美女av网站| 国产精品欧美一区喷水| 91久久精品国产91久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲九九爱视频| 久久精品国产第一区二区三区| 久久精品日韩| 亚洲欧美日本伦理| 一区二区不卡在线视频 午夜欧美不卡'| 在线播放日韩欧美| 亚洲国产小视频| 国产精品美女久久久久aⅴ国产馆| 亚洲色图制服丝袜| 在线观看欧美一区| 一本一本久久a久久精品牛牛影视| 欧美第十八页| 一区二区三区在线视频免费观看| 欧美日本韩国一区二区三区| 欧美日韩亚洲综合一区| 久久精品在这里| 亚洲精品视频啊美女在线直播| 亚洲一区二区四区| 欧美国产1区2区| 欧美午夜精品久久久| 乱中年女人伦av一区二区| 日韩西西人体444www| 欧美一区三区三区高中清蜜桃| aa级大片欧美| 欧美顶级大胆免费视频| 国产拍揄自揄精品视频麻豆| 欧美丰满高潮xxxx喷水动漫| 亚洲视频在线观看免费| 在线观看视频欧美| 亚洲精品美女久久7777777| 亚洲欧美日本国产有色| 99re6热在线精品视频播放速度| 欧美特黄a级高清免费大片a级| 国产在线精品一区二区中文| 国产精品毛片va一区二区三区| 亚洲欧洲一区二区三区| 国产亚洲网站| 嫩草伊人久久精品少妇av杨幂| 亚洲视频免费在线| 久久一区亚洲| 亚洲缚视频在线观看| 亚洲综合精品自拍| 蜜臀av一级做a爰片久久| 欧美日韩亚洲综合一区| 亚洲精品国产精品国产自| 欧美日韩一区二区三区| 国产农村妇女精品一二区| 欧美午夜在线观看| 欧美揉bbbbb揉bbbbb| 欧美xart系列在线观看| 欧美在线地址| 久热精品视频在线| 国产欧美在线看| 国产欧美日韩视频在线观看| 欧美午夜一区| 免费精品99久久国产综合精品| 国产日韩欧美日韩| 亚洲视频www| 中文网丁香综合网| 欧美日韩视频在线| 亚洲视频中文字幕| 亚洲一级特黄| 欧美性视频网站| 亚洲最新合集| 欧美午夜精品久久久久久超碰| 亚洲免费观看高清完整版在线观看| 一区二区三区高清视频在线观看| 欧美日韩aaaaa| 亚洲伊人观看| 国产精品尤物福利片在线观看| 久久久免费观看视频| 国产精品嫩草久久久久| 亚洲精品乱码久久久久久蜜桃91| 国产乱子伦一区二区三区国色天香| 欧美在线999| 亚洲在线1234| 欧美日韩综合一区| 免费观看欧美在线视频的网站| 欧美日本韩国一区二区三区| 欧美一区二区私人影院日本| 一本色道久久88精品综合| 欧美午夜一区二区福利视频| 国产资源精品在线观看| 亚洲高清在线精品| 欧美私人网站| 欧美jizzhd精品欧美巨大免费| 国产自产2019最新不卡| 亚洲国产精品第一区二区| 国产欧美一区二区三区久久人妖| 亚洲成色精品| 欧美日韩xxxxx| 欧美午夜片在线免费观看| 亚洲国产精选| 欧美大片国产精品| 久久久久久黄| 欧美日韩精品一本二本三本| 一本高清dvd不卡在线观看| 亚洲伦理中文字幕| 欧美系列亚洲系列| 久久99伊人| 欧美精品在欧美一区二区少妇| 国产精品视频九色porn| 欧美精品一区视频| 亚洲精品乱码久久久久久蜜桃91| 中文国产成人精品| 欧美偷拍一区二区| 夜夜嗨av一区二区三区| 国产亚洲激情在线| 国产区二精品视| 国产精品免费网站| 亚洲肉体裸体xxxx137| 国产丝袜一区二区三区| 最新日韩精品| 久久久噜噜噜久久中文字免| 久久精品导航| 欧美一区视频在线| 9久草视频在线视频精品| 久久蜜桃资源一区二区老牛| 在线精品高清中文字幕| 欧美一区午夜精品| 亚洲精品一区二区三区婷婷月| 久久手机精品视频| 亚洲精品视频一区二区三区| 国产乱码精品一区二区三区av| 在线看片欧美| 欧美午夜欧美| 尤物网精品视频| av不卡在线看| a4yy欧美一区二区三区| 国产视频丨精品|在线观看| 亚洲欧美视频在线观看| 欧美日韩的一区二区| 国产日韩精品视频一区二区三区| 国产精品你懂的在线欣赏| 一本大道久久a久久综合婷婷| 欧美国产一区视频在线观看| 欧美日韩精品在线视频| 欧美偷拍另类| 国产精品va| 亚洲国产aⅴ天堂久久| 国产精品美女在线观看| 欧美高潮视频| 欧美日本不卡高清| 久久国产视频网站| 久久精品99国产精品酒店日本| 国产欧美一区二区三区沐欲| 国产乱码精品一区二区三区不卡| 久久女同互慰一区二区三区| 国内精品一区二区三区| 欧美日韩不卡一区| 日韩午夜免费| 国产日韩欧美综合一区| 一本色道久久88亚洲综合88| 性欧美大战久久久久久久免费观看| 亚洲免费伊人电影在线观看av| 亚洲国产精品电影| 国产精品久线观看视频| 欧美三级资源在线| 国产视频精品xxxx| 免费成人你懂的| 久久久久九九九| 国产色婷婷国产综合在线理论片a| 欧美日韩第一区| 国产一区二区三区无遮挡| 欧美激情一区二区三区四区| 亚洲成人在线视频播放| 久久免费国产精品| 在线欧美电影| 久久综合九色综合网站| 精品1区2区3区4区| 亚洲性夜色噜噜噜7777| 亚洲一区二区伦理| 欧美日韩精品免费在线观看视频| 一区二区三区精品| 国产精品网红福利| 韩国三级电影一区二区| 久久只有精品| 久久免费精品日本久久中文字幕| 可以看av的网站久久看| 亚洲一区欧美二区| 久久精品国产亚洲精品| 美女脱光内衣内裤视频久久网站| 国产在线精品自拍| 国产精品青草久久久久福利99| 国产精品毛片a∨一区二区三区| 亚洲九九九在线观看| 欧美香蕉大胸在线视频观看| 好吊一区二区三区| 狠狠色噜噜狠狠色综合久| 在线观看成人小视频| 在线视频免费在线观看一区二区| 狠狠色噜噜狠狠色综合久| 亚洲深爱激情| 国产一二精品视频| 亚洲激情成人| 亚洲国产精品一区二区第一页| 欧美日韩免费一区二区三区视频| 黑人一区二区三区四区五区| 91久久久久久国产精品| 欧美日韩在线直播| 韩国一区二区三区美女美女秀| 亚洲大胆美女视频| 亚洲精选中文字幕| 麻豆乱码国产一区二区三区| 亚洲每日更新| 午夜在线观看免费一区| 又紧又大又爽精品一区二区| 欧美亚日韩国产aⅴ精品中极品| 欧美本精品男人aⅴ天堂| 欧美国产视频日韩| 午夜亚洲福利| 亚洲国产精品久久久久秋霞不卡| 久久天天躁夜夜躁狠狠躁2022| 亚洲精品午夜精品| 久久天堂精品| 亚洲激情国产| 99视频一区二区| 欧美国产精品日韩| 国产精品乱码人人做人人爱| 欧美日韩亚洲一区二区三区在线| 国产精品v欧美精品v日韩精品| 红桃视频国产一区| 欧美日韩系列| 99国产精品久久久久久久成人热| 欧美jizz19性欧美| 国产精品自拍三区| 欧美午夜电影在线| 一本久道久久综合狠狠爱| 亚洲欧洲精品一区二区| 久久九九99视频| 欧美国产一区二区在线观看| 国产精品久久久久久久久搜平片| 免费不卡在线观看| 午夜免费电影一区在线观看| 欧美精品在线观看91| 欧美精品国产精品| 国产精品色午夜在线观看| 亚洲伦理在线观看| 韩日午夜在线资源一区二区| 欧美与黑人午夜性猛交久久久| 亚洲精品极品| 免费精品99久久国产综合精品| 久久国产精品99国产| 欧美日韩国产综合视频在线| 中日韩午夜理伦电影免费| 亚洲一区在线免费观看| 国产精品网站在线| 国产精品国产三级国产专区53| 国产日韩欧美综合精品| 欧美日韩亚洲精品内裤| 欧美亚洲网站| 久久www成人_看片免费不卡| 国产专区欧美精品| 99re6热只有精品免费观看| 亚洲婷婷在线| 欧美欧美午夜aⅴ在线观看| 狠狠色丁香久久婷婷综合丁香| 亚洲免费观看高清完整版在线观看熊| 国内外成人在线视频| 午夜精品久久久久久久久久久| 在线观看亚洲视频啊啊啊啊| 国产亚洲欧美另类一区二区三区| 国产精品成人观看视频免费| 欧美电影专区| 一区二区高清在线观看| 国产精品大片| 亚洲国产片色| 日韩午夜av电影| 亚洲国产精品一区在线观看不卡| 久久久青草青青国产亚洲免观| 国产欧美一级| 国产精品亚洲不卡a| 亚洲精品孕妇| 欧美一区二区三区免费在线看|