《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > μCOSII在基于Cortex-M3核的ARM處理器上的移植
μCOSII在基于Cortex-M3核的ARM處理器上的移植
電子科技
關海,馮大政
摘要: μCOSII在基于Cortex-M3核的ARM處理器上的移植,介紹了源代碼公開的實時操作系統μCOSII在ARM處理器STM32F103VBT6上的移植過程。首先簡要介紹了ARM核Cortex—M3的一些基本概念,然后結合其基本概念用C語言和匯編語言修改了移植過程中需要修改的所有源代碼文件且給出了其詳細解釋。最后給出了一個基于μCOSII嵌入式操作系統的簡單應用,討論了基于嵌入式操作系統的應用程序開發方法與傳統應用程序開發方法的區別,說明前者方法的優越性并驗證了移植的成功。
關鍵詞: ARM Cortex-M3 μCOSII
Abstract:
Key words :

目前,嵌入式技術已被廣泛應用到汽車電子、無線通信、數碼產品等各個領域。嵌入式操作系統及嵌入式處理器技術發展迅猛,嵌入式操作系統典型代表有μCOS—II、μClinux、Winclow CE、VxWorks等;嵌入式處理器包括ARM、MIPS、PowerPC等。隨著軟硬件技術的發展,人們開始意識到基于嵌入式操作系統的程序開發模式的便利性及可靠性,并且在程序開發過程中開始傾向于從傳統超循環開發模式轉向基于嵌入式操作系統的開發模式。

1 軟硬件開發環境及處理器介紹
1.1 軟件硬開發環境
   
本移植過程使用的軟件環境是RealView MDK開發套件,此產品是ARM公司最新推出的針對各種嵌入式處理器的軟件開發工具,該開發套件功能強大,包括了μVision3集成開發環境和RealView編譯器。使用的硬件平臺是深圳英蓓特公司推出的全功能評估板STMl03V100,其上所采用的處理器是ST意法半導體公司生產的32位哈佛結構ARM處理器STM32F103VBT6,該處理器內置ARM公司最新的Cortex—M3核,并且具有非常豐富的片上資源。
1.2 關于基于Cortex-M3" title="Cortex-M3">Cortex-M3的ARM處理器的介紹
   
基于Cortex—M3核的ARM處理器支持兩種模式,分別稱為線程模式和處理模式。程序可以在系統復位時或中斷返回時兩種情況下進入線程模式,而處理模式只能通過中斷或異常的方式來進入。處于線程模式中代碼可以分別運行在特權方式下和非特權方式下。處于處理模式中的代碼總是運行在特權方式下。運行在特權方式下的代碼對系統資源具有完全訪問權,而運行在非特權方式下的代碼對系統資源的訪問權受到一定限制。處理器可以運行在Thumb狀態或Debug狀態。在指令流正常執行期間,處理器處于Thumb狀態。當進行程序調試時,指令流可以暫停執行,這時處理器處于Debug狀態。處理器有兩個獨立的堆棧指針,分別稱為MSP和PSP。系統復位時總是處于線程模式的特權方式下,并且默認使用的堆棧指針是MSP。本移植過程中假設任務總是運行在線程模式的特權方式下且總是使用堆棧指針PSP。

2 移植過程詳解
2.1 μCOS-II內核介紹

    μCOS—II是一個實時可剝奪型操作系統內核,該操作系統支持最多64個任務,但每個任務的優先級必須互不相同,優先級號小的任務比優先級號大的任務具有更高的優先級,并且該操作系統總是調度優先級最高的就緒態任務運行。此內核的代碼是美國人Jean J.Labrosse用C語言編寫的,具有很好的可移植性,其2.52版本通過了美國航天航空管理局的安全認證,可靠性非常高。文中所述的移植過程使用的就是該版本的源代碼。
2.2 開始移植
    μCOS—II v2.52的源代碼按照移植要求分為需要修改部分和不需要修改部分。其中需要修改源代碼的文件包括頭文件OS_CPU.H、C語言文件OS_CPU.C以及匯編格式文件OS_CPU_A.ASM。
2.2.1 修改頭文件OS_CPU.H
   
頭文件OS_CPU.H中需要修改的內容有與編譯器相關的數據類型重定義部分和與處理器相關的少量代碼。由于本移植過程中使用的是RealView編譯器,因此通過查閱此編譯器的相關說明文檔可以得到其所支持的基本數據類型,據此修改OS_CPU.H中與編譯器相關的數據類型重定義部分。修改后代碼如下所示:

   
    其中定義的數據類型OS_STK指出了處理器堆棧中的數據是32位的,OS_CPU_SR指出了處理器狀態寄存器字長也為32位。
    頭文件中與處理器相關部分代碼包括臨界區訪問處理、處理器堆棧增長方向及任務切換宏定義。臨界區代碼訪問涉及到全局中斷開關指令,由文獻可以得知關中斷和開中斷可以分別由指令CPSID i和CPSIE i實現,文中臨界段訪問處理如下:

   
    其中INT_DIS()和INT_EN()分別對應關中斷和開中斷處理過程。
    根據文獻可知文中所使用的處理器支持的堆棧為滿遞減方式,即堆棧的增長方向是從內存高地址向低地址方向遞減并且堆棧指針總是指向棧頂的數據。在頭文件OS_CPU.H中相應代碼只須修改一條,如下所示
    #define OS_STK_GROWTH1
    此定義中的1代表堆棧方向是向下遞減的。
    頭文件OS_CPU.H中最后一個要修改的地方是任務切換宏定義,μCOS—II內核就是通過這個宏調用來觸發任務級的任務切換。任務切換一般是通過陷阱或軟件中斷來實現的,在基于Cortex—M3核的處理器中支持一條稱為超級用戶調用的指令SVC,此指令是ARM軟件中斷指令SWI的升級版。此處的宏定義代碼修改為如下形式
    #define OS_TASK_SW()OS_SVC()
    其中OS_SVC()之中包含了SVC指令,它可以由嵌入匯編的方式在C語言代碼中進行定義,如下所示
    _asm void OS_SVC(void){SVCOx00}
    以上代碼以嵌入匯編的方式定義了一個輸入參數和返回值都為空的C語言函數,嵌入匯編的格式在RealView編譯器的說明文檔中有詳細的說明。
2.2.2 修改C語言文件OS_CPU.C
   
根據文獻可知文件OS_CPU.C中有10個C語言函數需要編寫,這些函數中唯一必要的函數是OSTaskStkInit,其他9個函數必須聲明,但不一定要包含任何代碼。為了簡潔起見,本移植過程只編寫了OSTaskStkInit,此函數的作用是把任務堆棧初始化成好像剛發生過中斷一樣。要初始化堆棧首先必須了解微處理器在中斷發生前后的堆棧結構,根據文獻易知微處理器在中斷發生前后的堆棧結構,并且可知寄存器xPSR、PC、LR、R12、R3、R2、R1、RO是中斷時由硬件自動保存的。初始化時需要注意的地方是xPSR、PC和LR的初值,對于其他寄存器的初值沒有特別的要求。xPSR比特位是Thumb狀態位,初始化時須置1,否則執行代碼時會引起一個稱為Invstate的異常,這是因為內置Cortex—M3核的微處理器只支持Thumb和Thumb2指令集。堆棧中PC和LR須初始化為任務的入口地址值,這樣才能在任務切換時跳轉到正確的地方開始執行。此函數可以用以下代碼來實現


2.2.3 修改匯編語言文件OS_CPU_A.ASM
   
匯編文件OS_CPU_A.ASM中需要編寫的函數分別為OSStartHighRdy、OSCtxSw、OSIntCtxSw和OSTickISR。第一個函數的作用是啟動多任務調度,此函數只在操作系統開始調度任務前執行一次,以后不再調用。按照文獻中所述須將堆棧中的寄存器依次彈出,然后執行一條中斷返回指令來開始第一個用戶任務的調度。但基于Cortex—M3核的ARM處理器在執行中斷返回指令時必須處于處理模式下,否則將會引起內存訪問異常。當系統上電啟動時或程序重置后,處理器會進入線程模式,而要在函數OSStartHighRdy中執行中斷返回指令就首先需要進行模式轉換,進入處理模式,而進行同步可控制模式轉換的途徑是超級用戶調用,即通過SVC指令產生軟件中斷可轉換到處理模式。實際上考慮到此函數只在啟動多任務調度開始前被調用一次,并且第一次調度任務運行時任務堆棧中除了xPSR、PC和LR的初值以外,其他寄存器的初值無關緊要。因此可以簡化該函數的編寫,只須從第一個任務的堆棧中取出該任務的首地址,然后修改堆棧指針使其指向任務堆棧中內存地址最高處,即相當于拋棄任務堆棧中所有數據,最后根據取出的地址直接跳轉到任務入口地址處開始執行。這樣可以免去軟件中斷和模式切換,從而簡化了對此函數的編寫。需要說明的是在拋棄任務堆棧中所用數據的同時也將xPSR的初值拋棄了,但這并不影響第一個任務投人運行,因為在跳轉到第一個任務運行之前,指令流是在Thumb狀態下正常執行的,xPSR已經有了確定的值。此函數代碼如下所示

    BX r0;直接跳轉到第一個任務的入口地址
    第二個匯編語言函數OSCtxSw是任務級的任務切換函數。若在任務執行過程中有一個比當前任務優先級更高的任務進入就緒態,μCOS—II內核就會啟動OSCtxSw進行任務切換。該函數會保存當前任務狀態,然后恢復那個優先級更高的任務狀態,使之投入運行。前述的宏定義#defineOS_TASK_SW()OS_SVC()中的OS_SVC()包含了SVC軟件中斷指令,此中斷的中斷向量應該設為函數OSCtxSw的入口地址,即OSCtxSw是SVC指令產生中斷的中斷服務程序,其源代碼如下


    由于微處理器在進入中斷時按堆棧增長方向自動順序保存了如下8個寄存器:xPSR、PC、LR、R12、R3、R2、R1、R0,因此在程序中只須保存另外8個寄存器,保存順序可以隨意,但注意彈棧時要按照先進后出的方式進行。按照本文開頭的假定,任務總是運行在線程模式的特權方式下且總是使用堆棧指針PSP。而中斷產生后,中斷服務程序將處于處理模式下,并且默認使用的堆棧指針是MSP。因此在保存堆棧指針的時候需要保存的是當前任務的PSP。中斷返回前新任務的堆棧指針需要恢復到PSP中。中斷返回使用如下指令
    MOVrO,#Oxfffffffd
    BXr0
    其中立即數#0xfffffffd包含了返回信息,用這兩條指令可以使中斷返回時使用任務堆棧指針PSP,返回后任務處于線程模式且使用任務堆棧指針PSP。
    第三個匯編語言函數OSIntCtxSw與OSCtxSw類似。若任務執行過程中產生了中斷,且中斷服務程序使得一個比當前被中斷的任務具有更高優先級的任務就緒時,μCOS—II內核就會在中斷返回之前調用函數OSIntCtxSw。在此函數中不需要像任務級任務切換函數那樣保存當前任務狀態,因為當前任務已經被中斷,在進入中斷服務程序的時候任務狀態已被保存。其源代碼與函數OSctxSw中保存當前任務堆棧PSP指令以后部分相同,此處不再列出。
    第4個匯編語言函數OSTickISR是系統時鐘節拍的中斷服務函數。處理器STM32F103VBT6中有一個專用系統時鐘節拍定時器SysTick,本移植過程使用此定時器產生每100 ms一次的時鐘節拍中斷。此函數源代碼如下

3 程序開發模式討論
   
傳統應用程序開發模式稱為超循環模式,即通常主程序是由C語言中的for語句或while語句構成的一個無限循環,程序在此循環中檢測事件的發生,從而轉向不同的任務。這種程序開發模式有兩個主要的不足之處。首先從程序維護和可靠性的角度來看,所有任務都需要程序開發人員來進行全局性的維護,當系統變得龐大和復雜時,任務的維護會變得非常麻煩,同時程序的可靠性也受到影響。其次,從任務級響應時間來看,這個時間是不確定的,因為程序在循環體中檢測事件發生的位置是固定的,但事件的發生是隨機的,因此從事件發生到程序檢測到事件發生這段時間也是不確定的。
    在基于嵌入式操作系統的應用程序開發過程中,應用程序開發人員只需關心各個任務本身,而任務調度由操作系統代勞。以下的例子說明了基于μCOS—II嵌入式操作系統的應用程序開發模式


    其中函數SysInit的作用是根據具體應用對處理器芯片進行必要的初始化,例如對系統的時鐘分配以及通用輸入輸出端口配置。函數OSInit是μCOS—II操作系統的內核初始化程序。第一個OSTaskCreate函數創建了任務Taskl,此任務的入口地址是Taskl,優先級是0。第二個OSTaskCreate函數創建了任務Task2,此任務的入口地址是Task2,優先級是1。函數OSTaskCrate還會將其創建的任務置于就緒態。文獻敘述了函數OSTa-skCreate的各個參數的含義。函數OSStart用于啟動多任務調度。OSTimeDly是μCOS—II內核提供的系統調用函數,用于延時或定時,這里的參數5表示延時5個時鐘節拍。應用程序開發人員需要做的就是通過調用μCOS—II內核提供的任務創建函數OSTaskCreate將編寫好的任務程序交給操作系統管理。
    該例中在調用OSStart后,操作系統發現任務Taskl的優先級最高,于是操作系統就調度任務Taskl使其投入運行,而任務Task2暫時不能獲得處理器的使用權。任務Taskl首先點亮一個LED,然后延時一段時間,當運行到OSTimeDly處時,該任務被掛起而處于等待狀態,此時任務Task2成為優先級最高的就緒態任務,于是操作系統調度Task2運行。當5個時鐘節拍的延時時間結束時,系統時間節拍中斷服務子程序會重新將任務Taskl置于就緒狀態,此時任務Taskl再一次成為優先級最高的就緒態任務,于是操作系統保存任務Task2的狀態,并恢復任務Taskl的狀態使其又一次獲得處理器的使用權。此后程序執行過程將重復上述步驟??梢钥吹?,在這個例子中的現象是某個LED燈不停的閃爍。
    μCOS—II操作系統內核是實時可剝奪型的,這意味著在任務執行過程中或中斷服務子程序中,一旦有一個新的更高優先級的任務就緒,內核將立刻調度此新任務運行,這說明響應任務的時間是即刻的、確定的。
    綜上所述,基于嵌入式操作系統的應用程序開發過程相對于以往傳統應用程序開發大為簡化而且任務級響應時間也得到最優化。


4 結束語
    通過將移植過程中修改的μCOS—II內核代碼與上述例子中的應用程序代碼在μVision3集成開發環境中編輯整合后進行編譯、鏈接并且下載到目標硬件平臺進行長時間觀察,發現LED不停的閃爍,說明本移植過程是成功的。

此內容為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>
          国产主播精品| 一区二区三区免费观看| 最近中文字幕日韩精品| 欧美有码在线视频| 国产日韩一区二区三区在线| 国产精品久久久久久久浪潮网站| 国产欧美日韩亚州综合| 亚洲一区免费| 亚洲一二三区视频在线观看| 香蕉成人久久| 亚洲精品日本| 99re6热在线精品视频播放速度| 欧美性大战久久久久久久蜜臀| 久久天堂av综合合色| 欧美日一区二区三区在线观看国产免| 欧美在线播放高清精品| 久久久精品性| 欧美日韩成人在线| 欧美一区永久视频免费观看| 国产一区二区久久| 欧美黄色成人网| 一区二区三区在线免费观看| 激情成人av| 亚洲影视在线| 91久久精品日日躁夜夜躁欧美| 日韩午夜视频在线观看| 久久久久久久久久久成人| 欧美精品福利视频| 欧美电影专区| 亚洲一区中文字幕在线观看| 国产精品久久久一本精品| 亚洲国产欧美另类丝袜| 国产欧美日韩视频一区二区三区| 国产久一道中文一区| 国产亚洲日本欧美韩国| 亚洲日本aⅴ片在线观看香蕉| 久久久999精品视频| 一本色道久久综合亚洲精品不| 国产日本欧美一区二区三区| 午夜在线成人av| 亚洲精品国产无天堂网2021| 亚洲欧美日韩国产成人| 久久综合综合久久综合| 一区二区亚洲| 欧美日韩国产欧美日美国产精品| 欧美a级片网站| 欧美日韩高清在线一区| 国产亚洲精品综合一区91| 亚洲国产精品va在线观看黑人| 黄色国产精品一区二区三区| 国产精品家庭影院| 在线不卡中文字幕播放| 午夜精品影院| 一区精品在线播放| 国产日韩一区| 亚洲国产精品精华液2区45| 欧美中文字幕视频| 国产精品日日做人人爱| 久久中文字幕一区二区三区| 亚洲人成网站在线播| 欧美不卡激情三级在线观看| 欧美日韩成人在线视频| 国产精品成人午夜| 免费一区视频| 亚洲激情影视| 免费视频最近日韩| 久久综合伊人| 欧美精品v日韩精品v韩国精品v| 欧美成va人片在线观看| 欧美日韩天堂| 欧美日韩123| 一区二区三区成人精品| 精品av久久707| 一区免费观看视频| 欧美日韩免费一区二区三区| 欧美亚洲在线播放| 国产精品久久久对白| 亚洲精品一区在线观看| 久久久久国产成人精品亚洲午夜| 久久爱91午夜羞羞| 欧美在线free| 久久综合色一综合色88| 亚洲人成77777在线观看网| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲最新色图| 一区二区三区在线观看视频| 亚洲制服丝袜在线| 亚洲人成人99网站| 亚洲免费中文字幕| 欧美人与禽猛交乱配| 亚洲黄色免费电影| 欧美日韩在线精品一区二区三区| 亚洲精品九九| 中文欧美在线视频| 欧美国产精品人人做人人爱| 久久狠狠亚洲综合| aa日韩免费精品视频一| 99在线热播精品免费99热| 亚洲欧美日韩精品综合在线观看| 一区在线观看视频| 久久婷婷成人综合色| 99在线视频精品| 久久久久久久久久看片| 亚洲综合成人婷婷小说| 国产精品国产亚洲精品看不卡15| 欧美三级电影精品| 亚洲国产日韩欧美在线图片| 欧美高清视频在线播放| 亚洲视频在线观看视频| 麻豆精品91| 国产裸体写真av一区二区| 欧美日韩午夜在线| 欧美国产日韩一区二区在线观看| 在线视频国内自拍亚洲视频| 国产精品高潮呻吟久久av黑人| 老牛国产精品一区的观看方式| 国产精品九色蝌蚪自拍| 亚洲一区二区三区在线观看视频| 亚洲福利在线观看| 激情久久久久久久久久久久久久久久| 亚洲精品国精品久久99热一| 久久久一区二区三区| 麻豆成人在线| 男女激情久久| 欧美日韩精品免费看| 亚洲视频大全| 亚洲网站在线观看| 国产三区二区一区久久| 亚洲无玛一区| 国产精品视频你懂的| 久久精品视频在线| 欧美视频在线观看免费网址| 99国内精品久久久久久久软件| 国产日韩欧美在线播放不卡| 欧美精品久久99久久在免费线| 亚洲国产精品热久久| 国产精品嫩草99a| 欧美在线观看日本一区| 尹人成人综合网| 在线精品在线| 欧美日本一道本在线视频| 国产精品网曝门| 欧美丝袜第一区| 西西裸体人体做爰大胆久久久| 欧美成人a∨高清免费观看| 欧美视频一区二区| 欧美成人免费视频| 亚洲精品国产品国语在线app| 亚洲在线观看免费视频| 久久亚洲春色中文字幕久久久| 亚洲国产精品成人久久综合一区| 欧美成ee人免费视频| 欧美日韩网站| 亚洲第一网站| 99精品热6080yy久久| 亚洲新中文字幕| 国内成人自拍视频| 亚洲一区精品电影| 红桃视频成人| 在线观看日韩专区| 欧美一区二区三区男人的天堂| 久久精品夜夜夜夜久久| 久久精品国产2020观看福利| 欧美精品在线观看| 韩日精品中文字幕| 久久精品国语| 欧美成人资源| 在线成人性视频| 亚洲图片在线观看| 欧美激情第一页xxx| 久久爱www久久做| 欧美日韩综合视频| 欧美在线影院在线视频| 99riav1国产精品视频| 欧美久久久久久久久| 欧美日韩大片| 中文精品一区二区三区| 亚洲大片在线观看| 欧美中文字幕在线播放| 国产日韩欧美高清免费| 欧美日韩综合视频网址| 亚洲午夜久久久久久久久电影网| 狂野欧美激情性xxxx欧美| 国产专区欧美专区| 99精品欧美一区二区蜜桃免费| 亚洲精品久久久蜜桃| 欧美高清视频www夜色资源网| 久久亚洲一区二区| 久久久精品国产免大香伊| 久久免费的精品国产v∧| 一区二区三区高清不卡| 久久精品99久久香蕉国产色戒| 国产精品成人国产乱一区| 久久人体大胆视频| 一本一本久久a久久精品牛牛影视| 永久免费视频成人| 国内偷自视频区视频综合| 久久久综合香蕉尹人综合网| 欧美在线综合视频| 国产精品啊v在线| 国产精品v欧美精品v日韩精品| 国产自产在线视频一区| 欧美日韩在线免费视频| 国产精品福利在线观看网址| 亚洲美女淫视频| 亚洲少妇中出一区| 国产精品久久一卡二卡| 黄色成人小视频| 国产精品亚洲一区| 欧美日韩国产另类不卡| 久久久久网站| 欧美日韩另类字幕中文| 欧美电影免费观看高清完整版| 9l国产精品久久久久麻豆| 欧美亚洲在线视频| 中日韩美女免费视频网址在线观看| 欧美成人午夜激情在线| 久久狠狠久久综合桃花| 亚洲二区在线观看| 亚洲福利视频网| 一区二区三区久久久| 亚洲美女毛片| 99精品视频免费| 亚洲高清一区二区三区| 国产日韩精品在线播放| 一区二区三区视频在线| 欧美精品一区三区在线观看| 先锋资源久久| 亚洲国产精品毛片| 日韩视频一区二区三区在线播放| 亚洲福利一区| 国产真实精品久久二三区| 久久国产主播| 亚洲日本欧美在线| 亚洲永久字幕| 欧美午夜视频一区二区| 精品av久久久久电影| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美精品国产精品日韩精品| 香港久久久电影| 性欧美18~19sex高清播放| 国产人成精品一区二区三| 日韩一级黄色片| 欧美亚洲综合久久| 欧美一区二区在线观看| 亚洲欧美视频在线观看视频| 夜夜嗨一区二区| 欧美99久久| 亚洲毛片在线免费观看| 欧美激情欧美激情在线五月| 国产精品久久久久99| 亚洲精品国产精品国产自| 久久亚洲国产精品日日av夜夜| 欧美一区二区三区婷婷月色| 国产精品videosex极品| 影音先锋久久| 99精品热视频| 久久久国产成人精品| 亚洲午夜av| 欧美a一区二区| 一区二区激情小说| 欧美在线首页| 亚洲国产精品999| 欧美成人精品在线| 小黄鸭精品aⅴ导航网站入口| 国产亚洲精品美女| 欧美精品一区二区三区很污很色的| 一区二区三区久久精品| 一本色道久久综合狠狠躁篇怎么玩| 韩国三级电影久久久久久| 国产精品久99| 国产精品v一区二区三区| 欧美高潮视频| 极品尤物一区二区三区| 欧美a级片网| 制服丝袜亚洲播放| 国产精品高潮呻吟久久av无限| 在线视频欧美一区| 欧美亚洲网站| 亚洲一级片在线观看| 亚洲中无吗在线| 亚洲字幕一区二区| 精品动漫一区二区| 欧美日韩高清在线观看| 亚洲自啪免费| 激情欧美一区二区三区| 美女精品一区| 亚洲精品一区二区网址| 亚洲高清视频在线| 国产亚洲美州欧州综合国| 国产精品一区=区| 国产一区二区三区四区三区四| 欧美日韩亚洲免费| 精品成人一区二区| 欧美日韩精品在线| 欧美成人精品高清在线播放| 一本久道久久综合狠狠爱| 久久亚洲精选| 亚洲精品网站在线播放gif| 极品尤物久久久av免费看| 欧美日韩国产页| 玖玖玖国产精品| 亚洲黄色一区| 亚洲一区国产视频| 久久综合一区二区三区| 午夜精品影院在线观看| 欧美日韩p片| 在线亚洲自拍| 久久久免费av| 欧美一区二区高清| 欧美日本久久| 久久丁香综合五月国产三级网站| 黑人中文字幕一区二区三区| 美日韩在线观看| 欧美一区亚洲二区| 欧美激情综合| 久久成人亚洲| 精品成人在线观看| 亚洲在线不卡| 久久av资源网站| 蜜臀99久久精品久久久久久软件| 欧美日本韩国一区二区三区| 国产精品一区二区久久久久| 欧美一级成年大片在线观看| 91久久夜色精品国产九色| 在线观看日韩www视频免费| 久久国产一区| 国产欧美一区在线|