《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > uC/OS-II在ADSP—BF531上的移植
uC/OS-II在ADSP—BF531上的移植
國外電子元器件
徐 波 喬純捷
摘要: uC/OS-II在ADSP—BF531上的移植,介紹源代碼公開的實時操作系統μC/OS-II的特點、內核結構及ADSP—BF53l的硬件特征,同時給出將μC/0S-II移植到ADSP-BF531型數字信號處理器上的詳細步驟和關鍵代碼。
Abstract:
Key words :

   摘要:介紹源代碼公開的實時操作系統μC/OS-II的特點、內核結構及ADSP—BF53l的硬件特征,同時給出將μC/0S-II移植到ADSP-BF531型數字信號處理器上的詳細步驟和關鍵代碼。

    關鍵詞:RTOS;μC/OS-II;ADSP-BF53l;移植

引言

隨著計算機技術的發展,嵌入式系統的應用愈來愈廣泛,對人們的生活產生了巨大的影響。通常,嵌入式系統的軟件部分都應用了實時操作系統(簡稱RTOS),在特定的RTOS之上開發應用軟件,可以讓程序開發人員屏蔽掉許多底層硬件細節,提高軟件功能設計效率,簡化開發難度,同時使得程序調試方便,移植簡單,易維護,大大縮短開發周期,RTOS也因此越來越受到嵌入式系統開發人員的青睞。目前實時操作系統很多,如VxWorks、Windows CE、pSOS等,但這些軟件的價格和使用成本(版權費、維護費等)都十分昂貴,因此商業級RTOS軟件在使用上受到諸多的限制。而μC/OS-II則不同,它的源代碼是全部公開的,并且完全免費,是一個自由操作系統,程序開發人員可以改寫其中的源代碼使之符合自己的要求。由于其極強的可移植性和可裁減性,用戶可以根據自己的需要,裁剪掉不需要的部分,使操作系統變得小巧靈活,同時又能夠滿足用戶特定操作系統的需要。μC/OS-II的可靠性完全可以與商業級RTOS軟件相媲美,因此筆者在移植過程中選用了這一實時操作系統。

1 ADSP—BF531的硬件特征

Blackfin系列中的ADSP—BF531型數字信號處理器是由ADl和Intel公司合作,針對音頻和視頻信號的編解碼、手持設備和移動通信設備而研發的16位定點處理器,是建立在微信號架構基礎之上,集高性能數字信號處理器與微控制器于一身。ADSP-BF53l的內核工作頻率最高可達400MHz,處理器內核中包含2個16位MAC、2個40位ALU及4個8位ALU。專門用于視頻信號的處理;還集成了許多片上外設,包括硬件UART、SPI接口、PPI接口、同步串口、

看門狗電路、16個GPIO接口等。為了達到降低功耗的目的,該處理器具有多種工作模式,同時通過編程還可以動態改變處理器內核的工作頻率和電壓.這些特性都為手持設備提供了絕佳的選擇。用戶可以利用ADI公司提供的VisualDSP++3.0(或更高版本)集成開發環境對處理器進行編程、調試和開發。

2 實時操作系統介紹

μC/OS-II是一種專門為微處理器設計的占先式實時多任務操作系統,具有源代碼公開、可移植性和可裁減性強、代碼可固化、穩定性和可靠性高等特點。其內核主要提供任務管理、內存管理、時間管理等服務,系統最多可以支持64個任務(8個留于系統),每個任務均有自己獨立的優先級。由于內核為占先式的,因此總是運行優先級最高的任務。系統提供了豐富的函數可供調用,實現任務間的通信和切換。μ/OS-II的大部分代碼都是使用標準的A-NIS C編寫的.只有與處理器相關的一部分代碼使用匯編語言.因此具有極強的移植性,在大多數8位、16位和32位處理器上都能穩定的運行。

圖1示出μC/OS-II的軟硬件體系結構。從圖中可以看出,要實現μC/OS-II的移植,必須為其編寫OS_CPU.H、0S_CPU_C.C和OS_CPU_A.ASM 3個文件,這3個文件都與處理器的硬件特性相關,提供任務切換和系統時鐘功能。其余源文件的代碼都是公開的,可以直接從μC/OS-II的官方網站下載。

3對編譯器的要求

雖然μC/OS-II具有很強的移植性,但在移植時,對處理器的編譯器有如下幾點要求:

處理器的C編譯器能夠產生可重人代碼;

用C語言可以打開和關閉中斷;

處理器支持中斷,并且能夠產生定時中斷;

處理器能夠容納一定量數據的硬件堆棧;

處理器有將堆棧指針和其他CPU寄存器讀出和存儲到堆棧空間或內存中的指令。

ADSP-BF531型處理器的集成開發環境Visu-al++3.0通過關鍵字asm能在C代碼中嵌入匯編語言,同時內核定時器可以為系統提供定時中斷,總數量達20kbyte的片上數據RAM和SP、FP、USP 3個堆棧指針寄存器為操作系統各任務提供了豐富的硬件堆??臻g及對堆棧的方便操作。筆者正是在這些基礎上利用Visual++3.0編譯環境成功地完成了對ADSP-BF531處理器的μC/OS-II移植。

4 移植μJLC/OS-II

4.1重定義OS_CPIJ.H文件

4.1.1與編譯器相關的數據類型

不同的處理器有不同的字長,μC/OS-II不使用C的short、int、long等與編譯器相關的數據類型,而是重新定義了一系列類型以確保系統的可移植性,在系統移植時必須在OS_CPU.H頭文件中對這些數據類型重新定義,具體內容如下:

typedef unsigned char BOOLEAN

typedef unsigned char INT8U

typedef signed char INT8S

typedef unsigned short INTl6U

typedef signed short INTl6S

typedef unsigned int INT32U

typedef signed int INT32S

μC/OS-II中的指針根據處理器堆棧數據入口寬度定義為OS_STK類型:

typedef unsigned int OS_STK

4.1.2臨界代碼

RTOS在進入系統臨界區之前都必須先關中斷,退出后再開中斷,μC/OS-II定義了2個宏指令來關閉/打開中斷:

 

#define OS_ENTER_CRITICAL0

asm(“cli%O:”:”=d”(InterrupLach))

#define OS_EXIT_CRITICAL()

asm(“sti%0:”::”=d”(InterrupLaeh))

其中InterrupLaeh為一全局變量,用于開關中斷時

IMASK寄存器內容的恢復和保存。

4.1.3堆棧增長方向設定

在OS CPU.H頭文件中還必須根據處理器堆棧的增長方向對OS_STK_GROWTH進行宏定義,由于ADSP-BF531是按照由高地址到低地址的結構組織處理器堆棧,因此宏定義如下:

#define OS_STK_GROWTH 1

4.1.4 OS_TASK_SW0宏定義

OS_TASK_SW0在μC/OS-II從低優先級任務切換到高優先級任務時被調用,定義如下:

#define OS_TASK_sw() asm(“raise 13;”)

4.2編寫OS_CPU_C.C文件

μC/OS-lI的移植要求用戶在OS_CPU_C.C文件中編寫6個簡單的C函數,其中主要是完成OS-TaskStkInit (),其余5個函數可以不作處理。OS-TaskStkInit()負責任務堆棧的初始化,使得任務堆??雌饋砭拖駝偘l生過中斷并將所有的寄存器保存到堆棧中的情形一樣。不同的編譯器在函數調用時有不同的入棧方法,因此在具體實現時必須根據處理器的編譯環境進行調整。VisualDSP++3.0在函數調用時的堆棧結構如圖2所示。

OSTaskStkInit()調用時需要傳遞任務代碼起始地址(task)、用戶參數指針(pdata)、任務堆棧頂端的地址(堆棧棧頂指針ptos)、返回參數為新任務堆棧棧頂指針,函數原型如下:

void OSTaskStkInit()

{OS_STK*stk;

stk=(void *)ptos;

opt=opt;

*stk--=fINT32U)pdata;//用戶數據區

*stk--=fINT32U)(task);//RETI寄存器

*stk--=fINT32U)ptos;//FP寄存器

(由于需要入棧的寄存器數量比較多,限于篇幅,在此省略其中多數)

*stk--=fINT32U)0; //SEQSq、AT寄存器

*stk--=fINT32U)0;//ASTAT寄存器

retum((void*)stk);}

任務建立時調用該函數對新建任務的堆棧進行初始化,初始化后的堆棧結構如圖3所示。

4.3編寫OS_CPU_A.ASM文件

μC/OS-II移植的最后還需要用戶編寫4個重要的匯編函數,包括OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()及OSTickISR()。分別介紹如下:

4.3.1 OSStartltighRdy()函數

該函數由OSStart()調用,用以運行優先級最高的就緒任務,其運行過程:調用用戶定義的OS-TaskSwHook()數→獲取任務堆棧指針→置位全局

變量0SRunning 出棧CPU寄存器 中斷返回。在ADSP-BF531中的實現如下:

_OSStartHighRdy:

call_OSTaskSwHook;

p0.1=_OSTCBHighRdy;

p0.h=_0STCBHighRdy;

pl=[p0];

ssync;

sp=[p1];

p0.1=_OSRunning;

p0.h=_OSRunning;

r0=TRUE;

[p0]=r0;

ASTAT=[sp++];

SEQSTAT=[sp++];

FP =[sp++];

RETI=[sp++;

rti;

4.3.2 OSCtxSw()函數

實時操作系統內任務級的切換是通過處理器的軟中斷實現的,并且軟中斷服務例程的向量地址必須指向OSCtxSw()函數,因此該函數的匯編程序代碼如下:

_OSCtxSw:

[--sp]=RETI;

[--sp]=FP;

[--sp]=SEQTAT;

[--sp]=ASTAT;

p0.1=_OSTCBCur;

p0.h=_OSTCBCur;

pl=[p0];

ssync;

[pl]=sp;

call_OSTaskSwHook;

p0.1 =_OSPrioHighRdy;

p0.h=_OSPrioHighRdy;

r0=[p0];

p0.1=_0SPrioCur;

p0.h=_OSPrioCur;

[p0]=r0;

p0.1=_OSTCBHighRdy;

p0.h=_OSTCBHighRdy;

pl=[p0];

rO=[p0];

ssync;

sp=[p1];

p0.1=_OSTCBCur;

p0.h=_OSTCBCur;

[p0]:r0; 、

ASTAT=[sp++];

SEQSTAT=[sp++];

FP:[SP++];

RETI=[sp++];

rti;

4.3.3 OSIntCtxSw()函數

OSIntCtxSw()用于實現中斷級任務切換,由于該函數在中斷服務程序中調用,因此在函數代碼中不需要寄存器入棧,但堆棧結構中還包含了一些用戶不需要的函數調用返回地址,因此該函數必須在最初清理堆棧(調整堆棧指針的位置),其匯編程序代碼如下:

_OSIntCtxSw:

p0=20;

sp=sp+p0;

p0.1=_OSTCBCur;

p0.h=_OSTCBCur;

pl=[p0];

ssync;

[p1]=sp;

call_OSTaskSwHook;

p0.1=_OSPrioHighRdy;

p0.h=_OSPrioHighRdy;

r0=[p0];

p0.1=_OSPrioCur;

p0.h=_OSPfioCur;

[po]=10;

p0.1=_OSTCBHighRdy;

p0.h=_OSTCBHighRdy;

pl=[p0];

r0=[p0];

ssync;

sp=[p1];

p0.1=_OSTCBCur;

p0.h=_0STCBCur;

[po】=r0;

ASTAT=[sp++];

SEQSTAT=[sp++];

FP =[sp++];

RETI=[sp++];

rti;

4.3.4 OSTicklSR()函數

μ,C/OS-II要求用戶提供一個時鐘資源來實現時間的延時和期滿功能。筆者在移植過程中使用內核定時器產生時鐘節拍,并通過定時器中斷服務例程OSTickISR0實現任務切換等功能,該函數的匯編程序代碼如下:

_OSTicklSR:

[--sp】=RETI;

[--sp]=FP;

[--sp]=SEQTAT;

[--sp]=ASTAT;

call_OSIntEnter;

call_OSTimeTick;

call_OSIntExit;

ASTAT=[sp++];

SEQSTAT=[sp++];

FP =[sp++];

RETI=[sp++];

rti;

4.4程序下載及調試

完成以上文件的修改和編寫之后。就可在Vi-sualDSP++3.0環境中對所有的源文件進行編譯和連接,生成處理器可執行的.dxe文件,通過JTAG直接下載到處理器內核的程序區運行。由于VisualD-SP++3.0提供了強大的調試功能,用戶能夠很清楚地了解μC/OS--II在處理器內的運行情況,這無疑也對μC/OS-Ⅱ向ADSP—BF531移植提供了強大的支持。

5 結束語

詳細介紹了向ADSP—BF531型處理器移植μC/OS-II實時操作系統的步驟和與處理器相關函數的代碼編寫,并成功地進行移植。通過測試,實時操作系統各任務之間的調用、中斷處理、任務之間的通信等都能夠穩定的運行。μC/OS-II實時操作系統的使用。將程序員從冗繁的流程圖中解放出來,使得應用程序的設計過程大大簡化,并且程序的可讀性、擴展性、可靠性也得到了很大的改善。

 

 

------------

關于μC/OS-II系列軟件版權的說明

Micrium 公司產品包括μC/OS-II,μC/GUI,uC/FS,μC/TCP-IP,μC/USB等。Micrium 公司提供嵌入式系統應用方面的產品,并對其軟件擁有知識產權。Micrium花費了大量的時間和財力為嵌入式領域提供高質量的軟件產品。所有上述產品都以源代碼的形式提供給客戶,具有極大的適用性。產品不是免費軟件,也不是開放源碼的軟件,因此,不能免費使用,需要清楚的闡明μC/OS-II和系列的軟件不是開放源碼的免費軟件,這是和Linux完全不一樣的。

開發和研究者可以通過購買Micrium公司的Jean先生的μC/OS-II的書籍,而得到μC/OS-II源代碼,但是僅可以作為個人和學校學習使用,所有和μC/OS-II直接和間接相關的商業目的行為,必須購買使用μC/OS-II及系列產品的商業授權,包括芯片/單板/系統廠家的任何參考設計,教學設備和最終的產品,如果沒有得到Micrium公司Jean先生簽字的合法授權都是不合法的使用, 這在μC/OS-II的書籍Micrium公司(www.micrium.com)和中國代理商-北京麥克泰軟件公司網站(www.bmrtech.com)上面中有明確規定。

Micrium公司其它軟件如μC/GUI,μC/FS,μC/TCP-IP,μC/USB 等的銷售模式與μC/OS-II不同,如果沒有購買使用授權,完全不可以擁有該源代碼,也不能將源代碼用于產品的設計,培訓,教學和生產。

μC/OS-II, μC/GUI,μC/FS,μC/TCP-IP,μC/USB 等授權方式有:單個產品、產品線(系列)、按照CPU 劃分的產品三種形式,μC/OS-KA,μC/OS-VIEW 等工具是按照使用人的數目收取費用的,相對起傳統的RTOS 動輒2-3萬美圓的開發費用和每塊單板的使用費(根據數量從數百到幾個美圓),μC/OS-II及系列產品是采用一次性的收費方式,應該只是大約相當于傳統RTOS 的10-20% 的總體費用。

如果您正在將μC/OS-II系列軟件用于您的產品,您需要購買并獲得正式使用授權。

北京麥克泰軟件技術有限公司

此內容為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>
          国产欧美日韩综合一区在线播放| 欧美深夜影院| 免费中文字幕日韩欧美| 欧美美女福利视频| 久久久久久久欧美精品| 午夜精品在线观看| 欧美a级理论片| 一区二区三区四区五区视频| 影视先锋久久| 在线观看亚洲一区| 亚洲综合清纯丝袜自拍| 久久国产福利国产秒拍| 黄色成人免费观看| 欧美二区乱c少妇| 老司机免费视频一区二区| 伊人成人开心激情综合网| 欧美成人免费在线视频| 尤物99国产成人精品视频| 国产欧美日韩不卡| 欧美高清视频一二三区| 国产精品成人一区二区三区吃奶| 欧美激情无毛| 91久久综合亚洲鲁鲁五月天| 欧美激情一二区| 尤物yw午夜国产精品视频| 国产精品美女久久久浪潮软件| 亚洲人成在线影院| 欧美日韩精品欧美日韩精品| 国产精品国产自产拍高清av| 亚洲欧美日韩精品久久| 国产精品一香蕉国产线看观看| 一区二区三区在线免费视频| 一区二区国产精品| 狠狠色丁香婷婷综合久久片| 欧美日韩视频不卡| 亚洲精品一区二区在线| 国产性天天综合网| 亚洲电影免费在线观看| 欧美日韩在线亚洲一区蜜芽| 国产精品h在线观看| 欧美中文字幕精品| 欧美激情精品久久久久| 一本色道久久综合亚洲精品小说| 亚洲国产精品尤物yw在线观看| 欧美人妖在线观看| 欧美日本一区二区高清播放视频| 亚洲人成毛片在线播放女女| 亚洲高清视频中文字幕| 亚洲另类自拍| 国产精品丝袜久久久久久app| 久久精品国产精品亚洲精品| 欧美一区二区大片| 国产日韩欧美亚洲| 亚洲欧美日韩一区二区三区在线| 红杏aⅴ成人免费视频| 亚洲宅男天堂在线观看无病毒| 国户精品久久久久久久久久久不卡| 国精产品99永久一区一区| 欧美一区二区高清| 亚洲欧美久久| 国产一区二区三区久久| 国产精品美女www爽爽爽视频| 亚洲精品视频免费观看| 午夜久久影院| 欧美阿v一级看视频| 亚洲视频免费看| 久久激情视频久久| 另类酷文…触手系列精品集v1小说| 91久久久久久久久久久久久| 久久夜色精品亚洲噜噜国产mv| 欧美制服丝袜第一页| 农夫在线精品视频免费观看| 国产自产女人91一区在线观看| 亚洲精品国产精品久久清纯直播| 欧美风情在线观看| 欧美二区视频| 欧美α欧美αv大片| 你懂的国产精品| 久久精品国产亚洲一区二区| 免费人成精品欧美精品| 国产视频精品xxxx| 欧美成人有码| 亚洲精品欧美日韩| 亚洲宅男天堂在线观看无病毒| 一区二区三区国产精品| 精品动漫一区二区| 国产欧美精品一区二区色综合| 国产精品免费区二区三区观看| 宅男精品导航| 中国日韩欧美久久久久久久久| 欧美a级片网| 这里只有精品电影| 一区二区三区免费看| 麻豆成人91精品二区三区| 亚洲午夜激情在线| 欧美成人亚洲成人日韩成人| 国产视频一区三区| 你懂的一区二区| 欧美色图麻豆| 久久精品日韩| 国语自产精品视频在线看抢先版结局| 小辣椒精品导航| 亚洲欧美综合一区| 久久久久久高潮国产精品视| 国产精品资源在线观看| 欧美高清视频在线| 亚洲欧美精品一区| 亚洲日本中文字幕区| 亚洲综合视频在线| 久久久久久久999精品视频| 亚洲美女av电影| 免费不卡在线视频| 国产一级一区二区| 好吊色欧美一区二区三区四区| 亚洲精品资源美女情侣酒店| 亚洲午夜久久久久久久久电影院| 亚洲欧美日韩在线综合| 国产人妖伪娘一区91| 国产精品高潮久久| 国产乱人伦精品一区二区| 久久精品国产99国产精品澳门| 国产精品免费视频观看| 国产精品久久97| 亚洲视频国产视频| 亚洲欧美在线免费| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美激情网站在线观看| 亚洲午夜影视影院在线观看| 久久精品一本| 狠狠色综合色综合网络| 国产精品爱久久久久久久| 欧美全黄视频| 欧美凹凸一区二区三区视频| 久久免费少妇高潮久久精品99| 久久亚洲影院| 欧美一区永久视频免费观看| 国产精品成人一区| 国内外成人免费激情在线视频| 亚洲日本视频| 国产精品一卡二卡| 久久久亚洲欧洲日产国码αv| 久久精品视频va| 中文成人激情娱乐网| 国产精品久久久久毛片软件| 国产精品私房写真福利视频| 久久免费观看视频| 欧美亚洲自偷自偷| 国产麻豆9l精品三级站| 在线成人激情视频| 国产欧美日韩免费看aⅴ视频| 欧美日韩午夜| 国产亚洲激情视频在线| 欧美日韩一区二区在线观看| 欧美日韩亚洲一区二区三区在线观看| 一区二区三区高清在线观看| 亚洲一区二区三区三| 99热在这里有精品免费| 欧美大胆a视频| 欧美午夜不卡视频| 午夜精品福利电影| 亚洲精品一区二区三区av| 国产日本欧美一区二区三区在线| 国产精品一区二区久激情瑜伽| 亚洲国产欧美在线人成| 亚洲欧洲日韩综合二区| 国产九九视频一区二区三区| 欧美一区二区三区久久精品茉莉花| 欧美色中文字幕| 久久久久女教师免费一区| 欧美日韩在线视频首页| 国产精品视频你懂的| 夜夜嗨av色一区二区不卡| 亚洲免费高清视频| 亚洲黄色性网站| 久久精品1区| 亚洲免费在线视频一区 二区| 影音先锋成人资源站| 日韩亚洲精品电影| 久久亚洲精品欧美| 欧美在线短视频| 亚洲一区二区三区四区在线观看| 激情欧美一区二区三区在线观看| 国产自产2019最新不卡| 亚洲午夜极品| 精品福利免费观看| 欧美日韩极品在线观看一区| 久久久精品国产免费观看同学| 国内精品久久久久久| 亚洲在线观看视频网站| 国产一级揄自揄精品视频| 欧美激情2020午夜免费观看| 欧美日本不卡| 欧美日韩成人网| 亚洲人在线视频| 国产精品一区二区在线观看| 久久久蜜桃精品| 亚洲天堂av在线免费观看| 欧美在线观看一区二区| 亚洲欧美精品在线| 欧美好吊妞视频| 99热精品在线观看| 欧美怡红院视频一区二区三区| 国产午夜精品一区二区三区视频| 久久久91精品国产一区二区三区| 欧美成人性生活| 欧美一区二区三区四区在线观看| 久久aⅴ乱码一区二区三区| 国产欧美一区二区白浆黑人| 亚洲精品黄色| 国产欧美一区二区精品秋霞影院| 欧美吻胸吃奶大尺度电影| 性色av一区二区怡红| 国产精品久久久久久久久久直播| 久久久久青草大香线综合精品| 欧美黄色免费网站| 亚洲欧美日韩国产一区二区| 久久综合给合久久狠狠狠97色69| 久久久久久国产精品mv| 亚洲一区二区在线| 国产日产欧美a一级在线| 欧美成人福利视频| 亚洲精品一区二区在线观看| 国产精品色在线| 裸体歌舞表演一区二区| 国产情人综合久久777777| 久久嫩草精品久久久久| 激情五月婷婷综合| 久久综合免费视频影院| 欧美xxxx在线观看| 亚洲欧美日韩在线高清直播| 国产亚洲aⅴaaaaaa毛片| 国产尤物精品| 亚洲一区综合| 亚洲国内欧美| 欧美综合国产| 国产日韩欧美视频在线| 欧美成年人在线观看| 亚洲砖区区免费| 国产精品高清网站| 亚洲资源在线观看| 美女国内精品自产拍在线播放| 国产精品成人免费精品自在线观看| 精品51国产黑色丝袜高跟鞋| 久久在线精品| 这里只有精品视频| 欧美人在线视频| 亚洲大片免费看| 午夜日韩福利| 欧美一区国产二区| 欧美精品一区三区在线观看| 99亚洲伊人久久精品影院红桃| 亚洲网站视频| 午夜一区二区三区在线观看| 欧美日韩一区在线观看视频| 亚洲一区二区三区四区中文| 国产精品福利影院| 亚洲精选中文字幕| 一区二区三区视频在线| 国产美女精品免费电影| 久久久久久久久久久久久久一区| 欧美成人免费在线视频| 欧美一级久久久| 午夜精品福利一区二区三区av| 欧美大片一区二区| 欧美视频在线免费| 国内精品视频久久| 亚洲欧美日本国产专区一区| 欧美日韩精品在线播放| 国产日韩在线看| 亚洲欧美日韩精品久久久久| 亚洲一区二区在线免费观看| 影音先锋亚洲电影| 亚洲第一精品电影| 国产精品久久久爽爽爽麻豆色哟哟| 在线观看视频免费一区二区三区| 久久免费午夜影院| 欧美色精品在线视频| 亚洲国产天堂网精品网站| 狠狠色综合一区二区| 国产精品日韩一区| 国产视频综合在线| 欧美日韩综合一区| 国产精品毛片在线看| 91久久精品国产91久久性色| 国产精品一区二区欧美| 亚洲欧美日韩专区| 精东粉嫩av免费一区二区三区| 欧美四级电影网站| 久久久99爱| 国产午夜精品久久久| 国产精品盗摄一区二区三区| 国产午夜精品在线观看| 欧美午夜寂寞影院| 国产亚洲aⅴaaaaaa毛片| 亚洲小说春色综合另类电影| 国产精品视频一| 99热精品在线| 国产精品国产三级国产| 国产三区二区一区久久| 欧美一区=区| 国产午夜精品美女视频明星a级| 欧美一区二区三区四区在线观看地址| 亚洲午夜三级在线| 欧美精品日韩| 国产亚洲欧美一区在线观看| 亚洲精品一区在线观看香蕉| 狠狠色伊人亚洲综合网站色| 玖玖视频精品| 日韩视频在线播放| 国产精品网红福利| 牛人盗摄一区二区三区视频| 亚洲欧美视频| 亚洲国产精品一区二区第一页| 欧美精彩视频一区二区三区| 激情五月***国产精品| 免费看精品久久片| 欧美一区二区三区电影在线观看| 9色porny自拍视频一区二区| 一区二区三区高清在线观看| 99香蕉国产精品偷在线观看| 正在播放欧美视频| 国产一区二区黄色| 免费不卡在线观看av| 好看的日韩视频| 欧美福利在线| 国产日韩欧美综合一区| 欧美成人情趣视频| 国产精品久久久91|