《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > μC/OSⅡ實時內核在TMS320C6201上的移植

μC/OSⅡ實時內核在TMS320C6201上的移植

2009-10-09
作者:熊志金 郭洪娜

  摘? 要: 將嵌入式實時內核μC/OSⅡ移植到TI公司的DSP處理器TMS320C6201上的方法。重點說明了內核中與處理器相關部分的編程及其在系統中的作用。

  關鍵詞: μC/OSⅡ內核? 嵌入式操作系統? DSP? 移植

?

  嵌入式系統設計及其應用已對人類生活產生了巨大影響,并使人們未來的生活方式產生變化。進行嵌入式系統開發的一個基礎工作是實現嵌入式操作系統在相關處理器平臺上的移植。本文基于目前應用非常廣泛的DSP處理器體系結構,對μC/OS-Ⅱ嵌入式實時操作系統內核的移植做了分析和介紹,并給出了相應的移植源代碼。

1 μC/OSⅡ實時內核介紹

  μC/OS-Ⅱ是一個簡單、高效的嵌入式實時操作系統內核,已被應用到各種嵌入式系統中。它支持x86、ARM、PowerPC、MIPS、DSP等眾多體系結構,并有上百個商業應用實例,其穩定性和可用性是經過實踐驗證的。同時,它的源代碼公開,可以從www.ucos-ii.com網站上獲得全部源碼以及其在各種體系結構平臺上的移植范例。

  μC/OS-Ⅱ 2.0版以上的內核都具有可搶占的實時多任務調度功能。另外它還提供了許多系統服務,例如信號量、消息隊列、郵箱、內存管理、時間函數等,這些功能可以根據不同的需求進行裁減??梢哉f,μC/OS-Ⅱ是一個具備現代操作系統特點的RTOS。它結構清晰、注解詳盡,具有良好的可擴展性和可移植性,被廣泛地應用于各種架構的微處理器上。

2?TMS320C6201芯片介紹

  TMS320C6201是TMS320系列產品中的新一代高性能的DSPs芯片。它是16位的定點數字信號處理器,在200MHz速率工作時可達1 600Mips;四通道DMA控制端口;最大3Mb片上存儲器;備有三種掉電模式;二個多通道緩沖串口;二枚32位定時器;超薄256/352腳BGA封裝;先進超長指令字結構;每周期執行八條32位指令,八個獨立通用功能單元;業內最先進的DSP C語言編譯器;一個新直觀性而又類似RISC的指令集,方便易用;匯編優化程序調度任務,方便匯編語言編程。

3?實時內核的移植

  移植工作包括以下內容:修改OS_CPU.H中常量、數據類型和宏;用C語言改寫OS_CPU_C.C中六個簡單的函數;用匯編語言改寫OS_CPU_A.ASM中的四個函數。

3.1 OS_CPU.H文件的修改

  在OS_CPU.H頭文件中定義了與處理器相關的常量OS_STK_GRCWTH、宏OS_ENTER_CRITICAL( )、宏OS_EXIT_CRITICAL( )、宏OS_TASK_SW( )以及可移植的數據類型等。

  (1)可移植的數據類型

  由于C語言中的short、int、long等數據類型的數位數隨著所使用處理器的不同而變化,所以移植性不強,μC/OSⅡ不支持。μC/OSⅡ定義了可移植的數據類型,包括8位、16位、32位的有符號數和無符號數等。此外還需要根據DSP芯片TMS320C6201的堆棧寬度定義任務堆棧數據類型OS_STK。具體定義如下:

typedef unsigned ? char BOOLEAN;布爾量

typedef unsigned?? char INT8U;8位無符號數

typedef signed???? char INT8S;8位有符號數

typedef unsigned?? short INT16U;16位無符號數

typedef signed???? short INT16S;16位有符號數

typedef unsigned ? int INT32U;32位無符號數

typedef signed???? int INT32S;32位有符號數

typedef float????? ??? FP32;32位單精度浮點數

typedef double????????? FP64;64位雙精度浮點數

typedef unsigned ? int OS_STK;TMS320C6201的堆棧入口寬度為32位

  (2)宏定義

  由于某些代碼在執行時不可分割,μC/OSⅡ實時內核在訪問這些代碼臨界區時必須禁止中斷,因此μC/OSⅡ實時內核在頭文件OS_CPU.H中還定義了宏OS_ENTER_CRITICAL( )和OS_EXIT_CRITICAL( ),分別用于開中斷和關中斷。對TMS320C6201而言,可用如下代碼實現:

  extern cregister volatile unsigned int IER;

  extern volatile unsigned int Always_Enabled_Interrupts;

  extern volatile unsigned int Normally_Enabled_Interrupts;

  static inline void OS_ENTER_CRITICAL(void)

  {???? IER=Always_Enabled_Interrupts;

???? ?? asm(″NOP 4″);

  } /*關全局中斷,進入臨界區*/

???   static inline void OS_EXIT_CRITICAL(void)

  {?? IER=Normally_Enabled_Interrupts;

???   asm(″NOP 5″);

  } /*開全局中斷,進入臨界區*/

  #define OS_STK_GROWTH 1/*TMS320C6201的堆棧是由

?????????????????????? 低地址向高地址遞增*/

3.2 OS_CPU_C.C文件的修改

  OS_CPU_C.C文件中需要用戶修改六個函數:OSTaskCreateHook( )、OSTaskDelHook( )、OSTaskSwHook( )、OSTaskStatHook( )、OSTaskCreateHook( )、OSTaskStkIinit( )。而實際需要修改的只有OSTaskStkIinit( )函數,其他函數是為方便用戶擴展功能而設,其定義可為空。

  函數OSTaskStkIinit( )用于系統創建用戶任務時,建立并初始化任務堆棧。該函數與處理器的硬件體系密切相關,它將所有的寄存器壓棧,返回新的堆棧棧頂,并將它們保存在該任務的任務控制塊OS_TCB中,最終使初始化后的堆棧跟剛發生過一次中斷一樣。這樣,系統無需對調度程序作特殊處理即可直接對新任務進行調度。由于在TMS320C620中堆棧是按32位數據類型進行操作,所以堆棧數據類型OS_STK聲明為32位無符號整數。OSTaskStkIinit( )函數代碼如下:

void *OSTaskStkInit(void(*task)(void*pd),void*pdata,

void *ptos,INT16U opt)

{???? INITIAL_REGISTER_FRAME *Frame,*StackBottom

int*FirstFreeCellInStack

  Frame=(INITIAL_REGISTER_FRAME*)((int)ptos &~7)

  StackBottom=Frame

  Frame--

  Frame->A0.integer=0x0A0?? /*初始化寄存器*/

  Frame->A1.integer=0x0A1

  Frame->A2.integer=0x0A2

  Frame->A3.integer=0x0A3

  Frame->A4.integer=(int) pdata

  Frame->A5.integer=0x0A5

  Frame->A6.integer=0x0A6

  Frame->A7.integer=0x0A7

  Frame->A8.integer=0x0A8

  Frame->A9.integer=0x0A9

  Frame->A10.integer=0x0A10

  Frame->A11.integer=0x0A11

  Frame->A12.integer=0x0A12

  Frame->A13.integer=0x0A13

  Frame->A14.integer=0x0A14

  Frame->A15.integer=0xA15

  Frame->B0.integer=0x0B0

  Frame->B1.integer=0x0B1

  Frame->B2.integer=0x0B2

  Frame->B3.integer=0x0B3

  Frame->B4.integer=0x0B4

  Frame->B5.integer=0x0B5

  Frame->B6.integer=0x0B6

  Frame->B7.integer=0x0B7

  Frame->B8.integer=0x0B8

  Frame->B9.integer=0x0B9

  Frame->B10.integer=0x0B10

  Frame->B11.integer=0x0B11

  Frame->B12.integer=0x0B12

  Frame->B13.integer=0x0B13

  Frame->B14.integer=ReturnCurrentDP()

  Frame->B15.integer=(int)StackBottom

  Frame->AMR_Adressing_Mode_Register=0

  Frame->CSR_Control_Status_Register=(0<<8)+3

  Frame->IER_Interrupt_Enable_Register=Normally_

??????????????????????????????? Enabled_Interrupts

  Frame->IRP_Interrupt_Return_Pointer=0xdeadbeef

  Frame->Start_Address=task

  rsFreeCellInStack=(int*) Frame

  rstFreeCellInStack--

  turn (FirstFreeCellInStack)

}

3.3 OS_CPU_A.ASM文件的修改

  此文件包括的四個函數都涉及對寄存器的處理,與處理器有關。由于不同的處理器有不同的寄存器,所以操作系統在這個文件中給用戶留下四個函數接口,以便用戶根據所選處理器編寫相應的匯編程序以完成固定的功能。四個函數分別是:多任務啟動函數中調用的OSSTartHightRdy( )、任務切換函數OSCtxSw( )、中斷任務切換函數OSIntCtxSw( )、時鐘節拍服務函數OSTickISR( )。

  (1)OSSTartHightRdy( )

  該函數是由啟動函數OSStart( )調用的,功能是使系統能及時運行優先級最高的就緒任務。由于系統中數據指針OSTCBHighRdy一直指向就緒任務中優先級最高的任務控制塊OS_TCB,使得OSSTartHightRdy( )可以輕易地獲取最高優先級任務的棧頂指針,再將保存在此任務堆棧的寄存器值恢復到CPU寄存器中,使該任務得以運行,實現多任務的啟動。對于TMS320C6201,其代碼如下:

  B??????? .S1???? _OSTaskSwHook?? /*調用用戶自

  定義的_OSTaskSwHook*/

  NOP??????????????????????????? 3

  MVKL???? .S2???? OSStartHighRdy_1,B3

  MVKH? ? .S2???? OSStartHighRdy_1,B3

  OSStartHighRdy_1:

  LDW???? .D2T2???? *+DP(_OSTCBHighRdy),B4

  /*獲得最高優先級任務的TCB地址*/

  LDB????? .D2T2???? *+DP(_OSPrioHighRdy),B5

  NOP3

  STW????? .D2T2???? B4,*+DP(_OSTCBCur)

??? STB????? .D2T2???? B5,*+DP(_OSPrioCur)

????|| mvk?? 1,b1

??? STB????? .D2T2???? B1,*+DP(_OSRunning)

????LDW????? .D2T2???? *B4,SP

????NOP????? 4

??? (2)OSCtxSw( )

??? 該函數由任務切換函數OS_TASK_SW( )進入。如果任務執行了某個函數,其結果若改變了當前任務的狀態(如OSTaskSuspend( )、OSTimeDly( ))或是改變了別的任務的狀態(如OSTaskResume( )、OSTimeDlyResume( )),則都要引起新的任務調度函數(OSSched( ))執行OS_TASK_SW( )。其代碼如下:

  addk?????? .s2 (4 -_Framesize),SP

  STW??????? .D2T2???? B3,*+SP(_StartAddress)

  STW??????? .D2T2???? B0,*+SP(_B0)

  || mvc???? AMR,B0

  STW??????? .D2T2???? B0,*+SP(_AMR)

  || mvc???? CSR,B0

  STW??????? .D2T2???? B0,*+SP(_CSR)

  || mvc??? IER,B0

  STW?????? .D2T2???? B0,*+SP(_IER)

  STW?????? .D2T1???? A0,*+SP(_A0)

  || MV???? .L1X???  SP,A0

  STW?????? .D2T1???? A1,*+SP(_A1)

  || addk?? .s1?????? (_IRP),A0

  STW?????? .D2T1???? A0,*+SP(_B15)

  STW?????? .D2T1???? A2,*+SP(_A2)

  STW?????? .D2T1???? A3,*+SP(_A3)

  STW?????? .D2T1???? A4,*+SP(_A4)

  STW?????? .D2T1???? A5,*+SP(_A5)

  STW?????? .D2T1???? A6,*+SP(_A6)

  STW?????? .D2T1???? A7,*+SP(_A7)

  STW?????? .D2T1???? A8,*+SP(_A8)

  STW?????? .D2T1???? A9,*+SP(_A9)

  STW?????? .D2T1???? A10,*+SP(_A10)

  STW?????? .D2T1???? A11,*+SP(_A11)

  STW?????? .D2T1???? A12,*+SP(_A12)

  STW?????? .D2T1???? A13,*+SP(_A13)

  STW?????? .D2T1???? A14,*+SP(_A14)

  STW?????? .D2T1???? A15,*+SP(_A15)

  LDW?????? .D2T2???? *+DP(_OSTCBCur),B0

??? STW?????? .D2T2???? B1,*+SP(_B1)

  STW?????? .D2T2???? B2,*+SP(_B2)

  STW?????? .D2T2???? B3,*+SP(_B3)

  STW? ???? .D2T2???? B4,*+SP(_B4)

  STW ????? .D2T2???? B5,*+SP(_B5)

  STW ????? .D2T2???? B6,*+SP(_B6)

  STW???????????????? SP,*B0

  STW?????? .D2T2???? B7,*+SP(_B7)

  STW?????? .D2T2???? B8,*+SP(_B8)

  STW?????? .D2T2???? B9,*+SP(_B9)

  STW?????? .D2T2???? B10,*+SP(_B10)

  STW?????? .D2T2???? B11,*+SP(_B11)

  STW?????? .D2T2???? B12,*+SP(_B12)

  STW?????? .D2T2???? B13,*+SP(_B13)

  STW?????? .D2T2???? B14,*+SP(_B14)

  (3)OSIntCtxSw( )

  μC/OS-Ⅱ中,中斷的產生可能會引起任務的切換,中斷服務程序的最后會調用OSIntExit( )檢查任務就緒狀況。如果需要進行任務切換,將調用OSIntCtxSw( )。所以SIntCtxSw( )又稱為中斷級的任務切換函數。需要注意是,任何中斷服務程序ISR前面都要像下文介紹的時鐘節拍函數STickISR( )流程的第②步那樣保存上下文環境。SIntCtxSw( )和OSCtxSw( )的后半部分幾乎相同,不同處是對當前任務的堆棧指針進行了調整。其代碼如下:

  LDW??????? .D2T2???? *+DP(_OSTCBCur),B0

  || mv?????? SP,B1

  || addk???? .s2????? (8),B1

  STW??????? ?.D2T2???? B1,*B0

  NOP????? ? 4

  (4)OSTickISR( ) 

  μC/OS-Ⅱ中,時鐘節拍中斷是一個非常重要的中斷,因為整個操作系統的活動都受到它的激勵。OSTickISR( )的執行流程為:①硬件進入中斷處理;②保護上下文環境;③調用OSIntEnter( ),記錄中斷嵌套層數;④調用OSTimeTick( ),檢查處理各個任務的延時,并根據情況修改就緒任務表;⑤調用OSIntExit( ),檢查就緒任務表,看是否有比當前任務優先級更高的任務就緒。如果有,則進行調度;如果沒有,OSIntExit( )返回并恢復②所保存的上下文環境,并執行RETI回到被中斷的那個任務中繼續運行。

4? 結束語

  μC/OS-Ⅱ作為一個優秀的實時操作系統已經被移植到各種體系結構的微處理器上,而DSP體系結構在嵌入式領域也獲得了廣泛的應用和支持。將μC/OS-Ⅱ移植到DSP平臺上,能夠更深入地了解實時操作系統的構造,加快在DSP平臺上的應用和開發,并為更高層次上的擴展和改進打下基礎。

參考文獻

1?? LABROSSE J J著,邵貝貝譯.μC/OS-Ⅱ—源碼公開的實時嵌入式操作系統.北京:中國電力出版社,2001

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热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>
          午夜在线a亚洲v天堂网2018| 亚洲国产黄色片| 国产日韩综合| 国产综合色在线| 国内精品久久久久影院薰衣草| 久久免费国产| 久久精品国产视频| 国产在线视频欧美| 亚洲自啪免费| 亚洲丰满少妇videoshd| 欧美精品久久久久久久| 亚洲激情校园春色| 国产精品二区二区三区| 久久国产精品久久国产精品| 国产一区二区三区日韩欧美| 国产精品久久久久久久久免费樱桃| 一区二区欧美国产| 999在线观看精品免费不卡网站| 亚洲久久一区| 国产欧美高清| 国产精品家庭影院| 在线一区日本视频| 欧美一区二区精美| 国产精品久久网| 亚洲国产精品成人久久综合一区| 一区二区激情视频| 狂野欧美激情性xxxx欧美| 久久免费高清| 亚洲视频成人| 猛男gaygay欧美视频| 国产伦精品一区二区三区高清版| 99re6这里只有精品| 亚洲理论在线观看| 欧美在线综合| 欧美福利视频在线观看| 亚洲视频精品在线| 亚洲在线成人| 国产精品久久国产三级国电话系列| 欧美性大战xxxxx久久久| 欧美激情成人在线视频| 国产精品99久久久久久人| 亚洲高清久久网| 国产午夜精品视频| 国产精品亚发布| 国产区日韩欧美| 国产精品资源在线观看| 国产精品黄色| 黄色在线一区| 激情久久五月天| 在线观看国产成人av片| 午夜精品av| 欧美精品性视频| 欧美国产日韩二区| 国产精品www色诱视频| 国产一区二区三区四区三区四| 亚洲欧洲av一区二区| 亚洲国产精品精华液2区45| 激情一区二区三区| 国产美女搞久久| 久久婷婷成人综合色| 国产精品视频一区二区三区| 亚洲伦理久久| 久久av一区| 久久免费观看视频| 欧美中文在线观看国产| 欧美va天堂在线| 99国产一区| 亚洲国产你懂的| 亚洲第一黄色网| 欧美午夜片在线免费观看| 亚洲一区二区三区色| 亚洲一区二区三区乱码aⅴ蜜桃女| 最新日韩在线视频| 亚洲视频免费在线| 亚洲精品乱码久久久久久黑人| 日韩视频中午一区| 欧美视频专区一二在线观看| 亚洲欧美日本国产专区一区| 国产麻豆精品久久一二三| 欧美日韩你懂的| 国产精品视频999| 久久天堂成人| 亚洲永久字幕| 久久一区二区三区av| 欧美mv日韩mv国产网站app| 尤物yw午夜国产精品视频| 老司机67194精品线观看| 影音先锋日韩精品| 在线一区二区三区做爰视频网站| 午夜欧美大片免费观看| 好吊妞这里只有精品| 极品尤物av久久免费看| 欧美成人网在线| 久久噜噜亚洲综合| 久久久www| 亚洲高清视频在线| 麻豆精品视频在线观看视频| 国产精品videossex久久发布| 午夜欧美理论片| 国产资源精品在线观看| 99国内精品| 美女性感视频久久久| 亚洲国产欧美在线人成| 亚洲日韩欧美视频一区| 国产一区二区久久精品| 亚洲精品无人区| 国产精品视频一区二区三区| 国产精品美女久久久久aⅴ国产馆| 欧美极品一区| 国产亚洲欧美色| 国产欧美日韩91| 欧美日韩精品免费观看视频| 亚洲精品之草原avav久久| 91久久国产综合久久91精品网站| 午夜精品国产更新| 在线观看亚洲一区| 欧美日韩亚洲一区在线观看| 欧美一区二区三区四区夜夜大片| 亚洲欧洲日本mm| 亚洲精品一级| 国产欧美亚洲精品| 欧美电影免费网站| 国产精品一区=区| 欧美高清视频在线观看| 欧美中文字幕久久| 久久婷婷麻豆| 欧美日韩一区二区三区四区在线观看| 蜜桃av噜噜一区| 亚洲在线免费视频| 销魂美女一区二区三区视频在线| 亚洲第一区中文99精品| 久久视频这里只有精品| 欧美一区2区三区4区公司二百| 国产一区91精品张津瑜| 午夜精品福利在线| 久久久久国产免费免费| 国产精品美女黄网| 夜夜爽夜夜爽精品视频| 亚洲欧美日韩中文播放| 亚洲色诱最新| 国产精品盗摄久久久| 99re8这里有精品热视频免费| 国产一区二区三区在线免费观看| 小黄鸭精品密入口导航| 久久久五月天| 亚洲综合电影一区二区三区| 欧美日韩国产二区| 亚洲在线观看免费视频| 久久精品成人| 欧美电影在线观看完整版| 在线成人中文字幕| 欧美性感一类影片在线播放| 一区二区在线观看视频| 老司机精品久久| 一区二区三区回区在观看免费视频| 欧美午夜精品理论片a级按摩| 美女精品自拍一二三四| 亚洲精品在线观| 欧美三级日韩三级国产三级| 欧美日韩精品综合| 免费久久99精品国产| 国产精品视频一区二区高潮| 在线观看欧美成人| 国产亚洲精品一区二区| 午夜天堂精品久久久久| 欧美精品成人在线| 国产午夜精品在线| 亚洲视频专区在线| 久久亚洲风情| 91久久精品视频| 欧美日韩亚洲综合一区| 激情文学综合丁香| 在线视频观看日韩| 精品成人在线| 国产日韩精品一区二区三区| 国产视频久久久久久久| 国产日韩欧美高清免费| 亚洲性视频网址| 国产亚洲午夜高清国产拍精品| 午夜精品一区二区三区四区| 国产精品久久久久久影院8一贰佰| 欧美激情二区三区| 国内揄拍国内精品久久| 玖玖在线精品| 蜜臀久久久99精品久久久久久| 国产欧美日韩视频一区二区三区| 一区二区三区久久精品| 亚洲免费精彩视频| 久久久无码精品亚洲日韩按摩| 欧美自拍偷拍午夜视频| 久热re这里精品视频在线6| 欧美三日本三级少妇三2023| 欧美在线视频网站| 亚洲免费观看高清完整版在线观看| 国产日韩精品电影| 久久精品视频在线播放| 免费成年人欧美视频| 亚洲欧美国产毛片在线| 欧美激情aaaa| 一区二区三区视频免费在线观看| 欧美成人小视频| 欧美精品一区二区三区一线天视频| 欧美午夜精品理论片a级大开眼界| 999在线观看精品免费不卡网站| 狠狠久久亚洲欧美专区| 国产精品亚洲一区二区三区在线| 欧美成人免费播放| 欧美色网一区二区| 韩国在线一区| 久久国产精品色婷婷| 亚洲欧美综合一区| 激情校园亚洲| 老司机久久99久久精品播放免费| 欧美伊人久久大香线蕉综合69| 国产欧美日韩在线| 艳女tv在线观看国产一区| 亚洲黑丝在线| 国产一区二区黄色| 欧美午夜www高清视频| 99热免费精品| 国产色产综合产在线视频| 黄色精品一二区| 在线亚洲欧美专区二区| 91久久综合亚洲鲁鲁五月天| 一本色道久久综合亚洲精品按摩| 欧美午夜精品一区二区三区| 精品动漫一区| 久久精品在线视频| 国产精品大片免费观看| 99精品视频免费在线观看| 一区二区在线观看视频| 亚洲免费一在线| 欧美日韩国产影片| 欧美黄色一区二区| 亚洲专区在线视频| 一本色道久久综合亚洲精品小说| 欧美日韩国产电影| 国产一区二区精品| 欧美日韩卡一卡二| 欧美日韩专区| 先锋影音久久久| 欧美mv日韩mv国产网站app| 国产精品免费看久久久香蕉| 欧美在线播放一区二区| 亚洲欧美综合另类中字| 欧美国产日韩一二三区| 久久伊人一区二区| 国产精品老女人精品视频| 一本色道久久99精品综合| 欧美精品99| 国内一区二区三区在线视频| 久久久久久精| 久久久精品视频成人| 欧美性理论片在线观看片免费| 国产精品羞羞答答xxdd| 久久久国产亚洲精品| 一本大道久久精品懂色aⅴ| 欧美视频一区二区| 午夜欧美大尺度福利影院在线看| 久久久夜色精品亚洲| 浪潮色综合久久天堂| 一本色道久久| 亚洲精品日韩在线观看| 99精品视频一区二区三区| 亚洲桃色在线一区| 欧美精品三区| 亚洲国产高清一区| 亚洲精品美女91| 国产精品尤物| 国产精品xvideos88| 亚洲精品国产拍免费91在线| 欧美成人精品三级在线观看| 久久免费少妇高潮久久精品99| 亚洲一区二区精品视频| 国产三区二区一区久久| 欧美成人在线影院| 亚洲区中文字幕| 日韩午夜在线电影| 国产一区二区三区在线观看网站| 国产精品热久久久久夜色精品三区| 欧美黄色一区二区| 国产亚洲成av人片在线观看桃| 午夜国产欧美理论在线播放| 久久久亚洲国产天美传媒修理工| 免费观看亚洲视频大全| 99国产欧美久久久精品| 久久精品国产亚洲a| 亚洲精品网址在线观看| 欧美一区二区视频在线观看2020| 欧美a级一区二区| 久久影院午夜片一区| 久久偷看各类wc女厕嘘嘘偷窃| 国产午夜久久久久| 国内自拍亚洲| 亚洲精品在线视频| 伊人夜夜躁av伊人久久| 免费成人激情视频| 在线看成人片| 亚洲一区二区黄色| 亚洲欧美激情一区二区| 亚洲性线免费观看视频成熟| 亚洲国产一成人久久精品| 久久夜色精品国产欧美乱极品| 在线视频日韩| 久久久999精品| 亚洲影视在线播放| 欧美中文字幕精品| 国产精品草莓在线免费观看| 一本大道久久a久久精品综合| 一本色道久久综合一区| 国产亚洲午夜| 亚洲欧美国产毛片在线| 久久久久青草大香线综合精品| 欧美日韩视频在线观看一区二区三区| 在线日韩av片| 久久综合九色九九| 久久久久国产精品一区三寸| 蜜乳av另类精品一区二区| 欧美乱人伦中文字幕在线| 国产精品成人观看视频国产奇米| 在线日韩成人| 黄色成人av| 欧美激情欧美激情在线五月| 一区二区三区高清在线| 欧美日韩中文字幕日韩欧美| 国产手机视频一区二区| 激情久久影院| 久久久国产91|