《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > C語(yǔ)言嵌入式系統(tǒng)編程之軟件架構(gòu)篇
C語(yǔ)言嵌入式系統(tǒng)編程之軟件架構(gòu)篇
摘要: 本篇介紹了嵌入式系統(tǒng)編程軟件架構(gòu)方面的知識(shí),主要包括模塊劃分、多任務(wù)還是單任務(wù)選取、單任務(wù)程序典型架構(gòu)、中斷服務(wù)程序、硬件驅(qū)動(dòng)模塊設(shè)計(jì)等,從宏觀上給出了一個(gè)嵌入式系統(tǒng)軟件所包含的主要元素。
Abstract:
Key words :

  模塊劃分

 

  模塊劃分的“劃”是規(guī)劃的意思,意指怎樣合理的將一個(gè)很大的軟件劃分為一系列功能獨(dú)立的部分合作完成系統(tǒng)的需求。C語(yǔ)言作為一種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,在模塊的劃分上主要依據(jù)功能(依功能進(jìn)行劃分在面向?qū)ο笤O(shè)計(jì)中成為一個(gè)錯(cuò)誤,牛頓定律遇到了相對(duì)論),C語(yǔ)言模塊化程序設(shè)計(jì)需理解如下概念:

  (1) 模塊即是一個(gè).c文件和一個(gè).h文件的結(jié)合,頭文件(.h)中是對(duì)于該模塊接口的聲明;

  (2) 某模塊提供給其它模塊調(diào)用的外部函數(shù)及數(shù)據(jù)需在.h中文件中冠以extern關(guān)鍵字聲明;

  (3) 模塊內(nèi)的函數(shù)和全局變量需在.c文件開(kāi)頭冠以static關(guān)鍵字聲明;

  (4) 永遠(yuǎn)不要在.h文件中定義變量!定義變量和聲明變量的區(qū)別在于定義會(huì)產(chǎn)生內(nèi)存分配的操作,是匯編階段的概念;而聲明則只是告訴包含該聲明的模塊在連接階段從其它模塊尋找外部函數(shù)和變量。如:

  /*module1.h*/

  int a = 5; /* 在模塊1的.h文件中定義int a */

  /*module1 .c*/

  #i nclude “module1.h” /* 在模塊1中包含模塊1的.h文件 */

  /*module2 .c*/

  #i nclude “module1.h” /* 在模塊2中包含模塊1的.h文件 */

  /*module3 .c*/

  #i nclude “module1.h” /* 在模塊3中包含模塊1的.h文件 */

  以上程序的結(jié)果是在模塊1、2、3中都定義了整型變量a,a在不同的模塊中對(duì)應(yīng)不同的地址單元,這個(gè)世界上從來(lái)不需要這樣的程序。正確的做法是:

  /*module1.h*/

  extern int a; /* 在模塊1的.h文件中聲明int a */

  /*module1 .c*/

  #i nclude “module1.h” /* 在模塊1中包含模塊1的.h文件 */

  int a = 5; /* 在模塊1的.c文件中定義int a */

  /*module2 .c*/

  #i nclude “module1.h” /* 在模塊2中包含模塊1的.h文件 */

  /*module3 .c*/

  #i nclude “module1.h” /* 在模塊3中包含模塊1的.h文件 */

  這樣如果模塊1、2、3操作a的話,對(duì)應(yīng)的是同一片內(nèi)存單元。

  一個(gè)嵌入式系統(tǒng)通常包括兩類模塊:

  (1)硬件驅(qū)動(dòng)模塊,一種特定硬件對(duì)應(yīng)一個(gè)模塊;

  (2)軟件功能模塊,其模塊的劃分應(yīng)滿足低偶合、高內(nèi)聚的要求。

 

  多任務(wù)還是單任務(wù)

 

  所謂“單任務(wù)系統(tǒng)”是指該系統(tǒng)不能支持多任務(wù)并發(fā)操作,宏觀串行地執(zhí)行一個(gè)任務(wù)。而多任務(wù)系統(tǒng)則可以宏觀并行(微觀上可能串行)地“同時(shí)”執(zhí)行多個(gè)任務(wù)。

  多任務(wù)的并發(fā)執(zhí)行通常依賴于一個(gè)多任務(wù)操作系統(tǒng)(OS),多任務(wù)OS的核心是系統(tǒng)調(diào)度器,它使用任務(wù)控制塊(TCB)來(lái)管理任務(wù)調(diào)度功能。TCB包括任務(wù)的當(dāng)前狀態(tài)、優(yōu)先級(jí)、要等待的事件或資源、任務(wù)程序碼的起始地址、初始堆棧指針等信息。調(diào)度器在任務(wù)被激活時(shí),要用到這些信息。此外,TCB還被用來(lái)存放任務(wù)的“上下文”(context)。任務(wù)的上下文就是當(dāng)一個(gè)執(zhí)行中的任務(wù)被停止時(shí),所要保存的所有信息。通常,上下文就是計(jì)算機(jī)當(dāng)前的狀態(tài),也即各個(gè)寄存器的內(nèi)容。當(dāng)發(fā)生任務(wù)切換時(shí),當(dāng)前運(yùn)行的任務(wù)的上下文被存入TCB,并將要被執(zhí)行的任務(wù)的上下文從它的TCB中取出,放入各個(gè)寄存器中。

  嵌入式多任務(wù)OS的典型例子有Vxworks、ucLinux等。嵌入式OS并非遙不可及的神壇之物,我們可以用不到1000行代碼實(shí)現(xiàn)一個(gè)針對(duì)80186處理器的功能最簡(jiǎn)單的OS內(nèi)核,作者正準(zhǔn)備進(jìn)行此項(xiàng)工作,希望能將心得貢獻(xiàn)給大家。

  究竟選擇多任務(wù)還是單任務(wù)方式,依賴于軟件的體系是否龐大。例如,絕大多數(shù)手機(jī)程序都是多任務(wù)的,但也有一些小靈通的協(xié)議棧是單任務(wù)的,沒(méi)有操作系統(tǒng),它們的主程序輪流調(diào)用各個(gè)軟件模塊的處理程序,模擬多任務(wù)環(huán)境。

 

  單任務(wù)程序典型架構(gòu)

 

  (1)從CPU復(fù)位時(shí)的指定地址開(kāi)始執(zhí)行;

  (2)跳轉(zhuǎn)至匯編代碼startup處執(zhí)行;

  (3)跳轉(zhuǎn)至用戶主程序main執(zhí)行,在main中完成:

  a.初試化各硬件設(shè)備;

  b.初始化各軟件模塊;

  c.進(jìn)入死循環(huán)(無(wú)限循環(huán)),調(diào)用各模塊的處理函數(shù)

  用戶主程序和各模塊的處理函數(shù)都以C語(yǔ)言完成。用戶主程序最后都進(jìn)入了一個(gè)死循環(huán),其首選方案是:

  while(1)

  {

  }

  有的程序員這樣寫:

  for(;;)

  {

  }

  這個(gè)語(yǔ)法沒(méi)有確切表達(dá)代碼的含義,我們從for(;;)看不出什么,只有弄明白for(;;)在C語(yǔ)言中意味著無(wú)條件循環(huán)才明白其意。

  下面是幾個(gè)“著名”的死循環(huán):

  (1)操作系統(tǒng)是死循環(huán);

  (2)WIN32程序是死循環(huán);

  (3)嵌入式系統(tǒng)軟件是死循環(huán);

  (4)多線程程序的線程處理函數(shù)是死循環(huán)。

  你可能會(huì)辯駁,大聲說(shuō):“凡事都不是絕對(duì)的,2、3、4都可以不是死循環(huán)”。Yes,you are right,但是你得不到鮮花和掌聲。實(shí)際上,這是一個(gè)沒(méi)有太大意義的牛角尖,因?yàn)檫@個(gè)世界從來(lái)不需要一個(gè)處理完幾個(gè)消息就喊著要OS殺死它的WIN32程序,不需要一個(gè)剛開(kāi)始RUN就自行了斷的嵌入式系統(tǒng),不需要莫名其妙啟動(dòng)一個(gè)做一點(diǎn)事就干掉自己的線程。有時(shí)候,過(guò)于嚴(yán)謹(jǐn)制造的不是便利而是麻煩。君不見(jiàn),五層的TCP/IP協(xié)議棧超越嚴(yán)謹(jǐn)?shù)腎SO/OSI什么是OSI?

  OSI是一個(gè)開(kāi)放性的通行系統(tǒng)互連參考模型,他是一個(gè)定義的非常好的協(xié)議規(guī)范。OSI模型有7層結(jié)構(gòu),每層都可以有幾個(gè)子層。

  七層協(xié)議棧大行其道成為事實(shí)上的標(biāo)準(zhǔn)?

  經(jīng)常有網(wǎng)友討論:

  printf(“%d,%d”,++i,i++); /* 輸出是什么?*/

  c = a+++b; /* c=? */

  等類似問(wèn)題。面對(duì)這些問(wèn)題,我們只能發(fā)出由衷的感慨:世界上還有很多有意義的事情等著我們?nèi)ハ瘮z入的食物。

  實(shí)際上,嵌入式系統(tǒng)要運(yùn)行到世界末日。

 

  模塊劃分

 

  模塊劃分的“劃”是規(guī)劃的意思,意指怎樣合理的將一個(gè)很大的軟件劃分為一系列功能獨(dú)立的部分合作完成系統(tǒng)的需求。C語(yǔ)言作為一種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,在模塊的劃分上主要依據(jù)功能(依功能進(jìn)行劃分在面向?qū)ο笤O(shè)計(jì)中成為一個(gè)錯(cuò)誤,牛頓定律遇到了相對(duì)論),C語(yǔ)言模塊化程序設(shè)計(jì)需理解如下概念:

  (1) 模塊即是一個(gè).c文件和一個(gè).h文件的結(jié)合,頭文件(.h)中是對(duì)于該模塊接口的聲明;

  (2) 某模塊提供給其它模塊調(diào)用的外部函數(shù)及數(shù)據(jù)需在.h中文件中冠以extern關(guān)鍵字聲明;

  (3) 模塊內(nèi)的函數(shù)和全局變量需在.c文件開(kāi)頭冠以static關(guān)鍵字聲明;

  (4) 永遠(yuǎn)不要在.h文件中定義變量!定義變量和聲明變量的區(qū)別在于定義會(huì)產(chǎn)生內(nèi)存分配的操作,是匯編階段的概念;而聲明則只是告訴包含該聲明的模塊在連接階段從其它模塊尋找外部函數(shù)和變量。如:

  /*module1.h*/

  int a = 5; /* 在模塊1的.h文件中定義int a */

  /*module1 .c*/

  #i nclude “module1.h” /* 在模塊1中包含模塊1的.h文件 */

  /*module2 .c*/

  #i nclude “module1.h” /* 在模塊2中包含模塊1的.h文件 */

  /*module3 .c*/

  #i nclude “module1.h” /* 在模塊3中包含模塊1的.h文件 */

  以上程序的結(jié)果是在模塊1、2、3中都定義了整型變量a,a在不同的模塊中對(duì)應(yīng)不同的地址單元,這個(gè)世界上從來(lái)不需要這樣的程序。正確的做法是:

  /*module1.h*/

  extern int a; /* 在模塊1的.h文件中聲明int a */

  /*module1 .c*/

  #i nclude “module1.h” /* 在模塊1中包含模塊1的.h文件 */

  int a = 5; /* 在模塊1的.c文件中定義int a */

  /*module2 .c*/

  #i nclude “module1.h” /* 在模塊2中包含模塊1的.h文件 */

  /*module3 .c*/

  #i nclude “module1.h” /* 在模塊3中包含模塊1的.h文件 */

  這樣如果模塊1、2、3操作a的話,對(duì)應(yīng)的是同一片內(nèi)存單元。

  一個(gè)嵌入式系統(tǒng)通常包括兩類模塊:

  (1)硬件驅(qū)動(dòng)模塊,一種特定硬件對(duì)應(yīng)一個(gè)模塊;

  (2)軟件功能模塊,其模塊的劃分應(yīng)滿足低偶合、高內(nèi)聚的要求。

 

  多任務(wù)還是單任務(wù)

 

  所謂“單任務(wù)系統(tǒng)”是指該系統(tǒng)不能支持多任務(wù)并發(fā)操作,宏觀串行地執(zhí)行一個(gè)任務(wù)。而多任務(wù)系統(tǒng)則可以宏觀并行(微觀上可能串行)地“同時(shí)”執(zhí)行多個(gè)任務(wù)。

  多任務(wù)的并發(fā)執(zhí)行通常依賴于一個(gè)多任務(wù)操作系統(tǒng)(OS),多任務(wù)OS的核心是系統(tǒng)調(diào)度器,它使用任務(wù)控制塊(TCB)來(lái)管理任務(wù)調(diào)度功能。TCB包括任務(wù)的當(dāng)前狀態(tài)、優(yōu)先級(jí)、要等待的事件或資源、任務(wù)程序碼的起始地址、初始堆棧指針等信息。調(diào)度器在任務(wù)被激活時(shí),要用到這些信息。此外,TCB還被用來(lái)存放任務(wù)的“上下文”(context)。任務(wù)的上下文就是當(dāng)一個(gè)執(zhí)行中的任務(wù)被停止時(shí),所要保存的所有信息。通常,上下文就是計(jì)算機(jī)當(dāng)前的狀態(tài),也即各個(gè)寄存器的內(nèi)容。當(dāng)發(fā)生任務(wù)切換時(shí),當(dāng)前運(yùn)行的任務(wù)的上下文被存入TCB,并將要被執(zhí)行的任務(wù)的上下文從它的TCB中取出,放入各個(gè)寄存器中。

  嵌入式多任務(wù)OS的典型例子有Vxworks、ucLinux等。嵌入式OS并非遙不可及的神壇之物,我們可以用不到1000行代碼實(shí)現(xiàn)一個(gè)針對(duì)80186處理器的功能最簡(jiǎn)單的OS內(nèi)核,作者正準(zhǔn)備進(jìn)行此項(xiàng)工作,希望能將心得貢獻(xiàn)給大家。

  究竟選擇多任務(wù)還是單任務(wù)方式,依賴于軟件的體系是否龐大。例如,絕大多數(shù)手機(jī)程序都是多任務(wù)的,但也有一些小靈通的協(xié)議棧是單任務(wù)的,沒(méi)有操作系統(tǒng),它們的主程序輪流調(diào)用各個(gè)軟件模塊的處理程序,模擬多任務(wù)環(huán)境。

 

  單任務(wù)程序典型架構(gòu)

 

  (1)從CPU復(fù)位時(shí)的指定地址開(kāi)始執(zhí)行;

  (2)跳轉(zhuǎn)至匯編代碼startup處執(zhí)行;

  (3)跳轉(zhuǎn)至用戶主程序main執(zhí)行,在main中完成:

  a.初試化各硬件設(shè)備;

  b.初始化各軟件模塊;

  c.進(jìn)入死循環(huán)(無(wú)限循環(huán)),調(diào)用各模塊的處理函數(shù)

  用戶主程序和各模塊的處理函數(shù)都以C語(yǔ)言完成。用戶主程序最后都進(jìn)入了一個(gè)死循環(huán),其首選方案是:

  while(1)

  {

  }

  有的程序員這樣寫:

  for(;;)

  {

  }

  這個(gè)語(yǔ)法沒(méi)有確切表達(dá)代碼的含義,我們從for(;;)看不出什么,只有弄明白for(;;)在C語(yǔ)言中意味著無(wú)條件循環(huán)才明白其意。

  下面是幾個(gè)“著名”的死循環(huán):

  (1)操作系統(tǒng)是死循環(huán);

  (2)WIN32程序是死循環(huán);

  (3)嵌入式系統(tǒng)軟件是死循環(huán);

  (4)多線程程序的線程處理函數(shù)是死循環(huán)。

  你可能會(huì)辯駁,大聲說(shuō):“凡事都不是絕對(duì)的,2、3、4都可以不是死循環(huán)”。Yes,you are right,但是你得不到鮮花和掌聲。實(shí)際上,這是一個(gè)沒(méi)有太大意義的牛角尖,因?yàn)檫@個(gè)世界從來(lái)不需要一個(gè)處理完幾個(gè)消息就喊著要OS殺死它的WIN32程序,不需要一個(gè)剛開(kāi)始RUN就自行了斷的嵌入式系統(tǒng),不需要莫名其妙啟動(dòng)一個(gè)做一點(diǎn)事就干掉自己的線程。有時(shí)候,過(guò)于嚴(yán)謹(jǐn)制造的不是便利而是麻煩。君不見(jiàn),五層的TCP/IP協(xié)議棧超越嚴(yán)謹(jǐn)?shù)腎SO/OSI什么是OSI?

  OSI是一個(gè)開(kāi)放性的通行系統(tǒng)互連參考模型,他是一個(gè)定義的非常好的協(xié)議規(guī)范。OSI模型有7層結(jié)構(gòu),每層都可以有幾個(gè)子層。

  七層協(xié)議棧大行其道成為事實(shí)上的標(biāo)準(zhǔn)?

  經(jīng)常有網(wǎng)友討論:

  printf(“%d,%d”,++i,i++); /* 輸出是什么?*/

  c = a+++b; /* c=? */

  等類似問(wèn)題。面對(duì)這些問(wèn)題,我們只能發(fā)出由衷的感慨:世界上還有很多有意義的事情等著我們?nèi)ハ瘮z入的食物。

  實(shí)際上,嵌入式系統(tǒng)要運(yùn)行到世界末日。

 

  中斷服務(wù)程序

 

  中斷是嵌入式系統(tǒng)中重要的組成部分,但是在標(biāo)準(zhǔn)C中不包含中斷。許多編譯開(kāi)發(fā)商在標(biāo)準(zhǔn)C上增加了對(duì)中斷的支持,提供新的關(guān)鍵字用于標(biāo)示中斷服務(wù)程序(ISR),類似于__interrupt、#program interrupt等。當(dāng)一個(gè)函數(shù)被定義為ISR的時(shí)候,編譯器會(huì)自動(dòng)為該函數(shù)增加中斷服務(wù)程序所需要的中斷現(xiàn)場(chǎng)入棧和出棧代碼。

  中斷服務(wù)程序需要滿足如下要求:

  (1)不能返回值;

  (2)不能向ISR傳遞參數(shù);

  (3) ISR應(yīng)該盡可能的短小精悍;

  (4) printf(char * lpFormatString,…)函數(shù)會(huì)帶來(lái)重入和性能問(wèn)題,不能在ISR中采用。

  在某項(xiàng)目的開(kāi)發(fā)中,我們?cè)O(shè)計(jì)了一個(gè)隊(duì)列,在中斷服務(wù)程序中,只是將中斷類型添加入該隊(duì)列中,在主程序的死循環(huán)中不斷掃描中斷隊(duì)列是否有中斷,有則取出隊(duì)列中的第一個(gè)中斷類型,進(jìn)行相應(yīng)處理。

  /* 存放中斷的隊(duì)列 */

  typedef struct tagIntQueue

  {

  int intType; /* 中斷類型 */

  struct tagIntQueue *next;

  }IntQueue;

  IntQueue lpIntQueueHead;

  __interrupt ISRexample ()

  {

  int intType;

  intType = GetSystemType();

  QueueAddTail(lpIntQueueHead, intType);/* 在隊(duì)列尾加入新的中斷 */

  }

  在主程序循環(huán)中判斷是否有中斷:

  While(1)

  {

  If( !IsIntQueueEmpty() )

  {

  intType = GetFirstInt();

  switch(intType) /* 是不是很象WIN32程序的消息解析函數(shù)? */

  {

  /* 對(duì),我們的中斷類型解析很類似于消息驅(qū)動(dòng) */

  case xxx: /* 我們稱其為“中斷驅(qū)動(dòng)”吧? */

  …

  break;

  case xxx:

  …

  break;

  …

  }

  }

  }

  按上述方法設(shè)計(jì)的中斷服務(wù)程序很小,實(shí)際的工作都交由主程序執(zhí)行了。

 

  硬件驅(qū)動(dòng)模塊

 

  一個(gè)硬件驅(qū)動(dòng)模塊通常應(yīng)包括如下函數(shù):

  (1)中斷服務(wù)程序ISR

  (2)硬件初始化

  a.修改寄存器,設(shè)置硬件參數(shù)(如UART應(yīng)設(shè)置其波特率,AD/DA設(shè)備應(yīng)設(shè)置其采樣速率等);

  b.將中斷服務(wù)程序入口地址寫入中斷向量表:

  /* 設(shè)置中斷向量表 */

  m_myPtr = make_far_pointer(0l); /* 返回void far型指針void far * */

  m_myPtr += ITYPE_UART; /* ITYPE_UART: uart中斷服務(wù)程序 */

  /* 相對(duì)于中斷向量表首地址的偏移 */

  *m_myPtr = &UART _Isr; /* UART _Isr:UART的中斷服務(wù)程序 */

  (3)設(shè)置CPU針對(duì)該硬件的控制線

  a.如果控制線可作PIO(可編程I/O)和控制信號(hào)用,則設(shè)置CPU內(nèi)部對(duì)應(yīng)寄存器使其作為控制信號(hào);

  b.設(shè)置CPU內(nèi)部的針對(duì)該設(shè)備的中斷屏蔽位,設(shè)置中斷方式(電平觸發(fā)還是邊緣觸發(fā))。

  (4)提供一系列針對(duì)該設(shè)備的操作接口函數(shù)。例如,對(duì)于LCD,其驅(qū)動(dòng)模塊應(yīng)提供繪制像素、畫線、繪制矩陣、顯示字符點(diǎn)陣等函數(shù);而對(duì)于實(shí)時(shí)鐘,其驅(qū)動(dòng)模塊則需提供獲取時(shí)間、設(shè)置時(shí)間等函數(shù)。

 

  C的面向?qū)ο蠡?/strong>

 

  在面向?qū)ο蟮恼Z(yǔ)言里面,出現(xiàn)了類的概念。類是對(duì)特定數(shù)據(jù)的特定操作的集合體。類包含了兩個(gè)范疇:數(shù)據(jù)和操作。而C語(yǔ)言中的struct僅僅是數(shù)據(jù)的集合,我們可以利用函數(shù)指針將struct模擬為一個(gè)包含數(shù)據(jù)和操作的“類”。下面的C程序模擬了一個(gè)最簡(jiǎn)單的“類”:

  #ifndef C_Class

  #define C_Class struct

  #endif

  C_Class A

  {

  C_Class A *A_this; /* this指針 */

  void (*Foo)(C_Class A *A_this); /* 行為:函數(shù)指針 */

  int a; /* 數(shù)據(jù) */

  int b;

  };

  我們可以利用C語(yǔ)言模擬出面向?qū)ο蟮娜齻€(gè)特性:封裝、繼承和多態(tài),但是更多的時(shí)候,我們只是需要將數(shù)據(jù)與行為封裝以解決軟件結(jié)構(gòu)混亂的問(wèn)題。C模擬面向?qū)ο笏枷氲哪康牟辉谟谀M行為本身,而在于解決某些情況下使用C語(yǔ)言編程時(shí)程序整體框架結(jié)構(gòu)分散、數(shù)據(jù)和函數(shù)脫節(jié)的問(wèn)題。我們?cè)诤罄m(xù)章節(jié)會(huì)看到這樣的例子。

 

  總結(jié)

 

  本篇介紹了嵌入式系統(tǒng)編程軟件架構(gòu)方面的知識(shí),主要包括模塊劃分、多任務(wù)還是單任務(wù)選取、單任務(wù)程序典型架構(gòu)、中斷服務(wù)程序、硬件驅(qū)動(dòng)模塊設(shè)計(jì)等,從宏觀上給出了一個(gè)嵌入式系統(tǒng)軟件所包含的主要元素。

  請(qǐng)記住:軟件結(jié)構(gòu)是軟件的靈魂!結(jié)構(gòu)混亂的程序面目可憎,調(diào)試、測(cè)試、維護(hù)、升級(jí)都極度困難。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 高柳家动漫在线观看 | 秋霞精品| 国产性生活一级片 | 亚洲一区二区三区 | 久久久久97国产精 | 女人被狂躁c到高潮 | 欧美成人免费网址 | 俺也去婷婷 | 亚洲调教欧美在线 | 成人自拍一区 | 亚洲视频在线观看免费的欧美视频 | 经典三级伦理另类基地 | 中国亚洲女人69内射少妇 | 久久久久精彩视频 | 五十路亲子中出在线观看 | 蜜桃av一区二区 | 97se狠狠狠狠狼鲁亚洲综合色 | 久久人人爽人人爽人人片亚洲 | 国产极品探花一区二区三区 | 精品热| 亚洲富人天堂视频 | 欧美亚洲综合视频 | 亚洲综合国产精品 | 亚洲免费影视 | 凹凸日日摸天天碰免费视频 | 国产精品资源 | 夜夜躁人人爽天天天天大学生 | 久久久久激情 | 精品视频免费在线观看 | 日本加勒比在线 | h网址在线观看 | 欧美国产日韩另类 | 97超碰导航| 做爰xxxⅹ性69免费视频 | 国产精品久久久久久久免费观看 | 亚州毛片 | 成人午夜视频精品一区 | 色综合999| 久久亚洲精品成人av | 91草草草 | 国产女主播喷水视频在线观看 | 国内精品伊人久久久久7777 | 毛片一二三区 | 欧美丰满老熟妇xxxxx性 | 女同 另类 激情 重口 | 欧美野外猛男的大粗鳮台湾同胞 | 隣の若妻さん波多野结衣 | 欧美精品欧美精品系列 | 成人综合色站 | 女同激情久久av久久 | 日韩少妇 | 美女嘘嘘嘘aaaaaaaa级 | 91视在线国内在线播放酒店 | 中文字幕一区二区视频 | 久久亚洲堂色噜噜av入口网站 | 91香草视频 | 亚洲最大av网站在线观看 | 欧美日韩一区二区三区四区五区 | 久久综合国产 | 亚洲中文无码永久免费 | 亚洲乱码国产乱码精品精在线网站 | 青青啪啪 | 欧美性猛交xxxx黑人交 | 中文字幕自拍偷拍 | 樱花草涩涩www在线播放 | 九一九色国产 | gv天堂gv无码男同在线观看 | 日本啪啪网 | 黄色a视频 | 激烈的性高湖波多野结衣 | 久久久精选 | 亚洲码国产岛国毛片在线 | 日韩精品无码一区二区 | 国产乱码字幕精品高清av | 中国白嫩丰满少妇xxxxx明星 | 国人天堂va在线观看免费 | 久久这里只有精品23 | 黄片毛片在线免费观看 | 欧美日p视频 | 国产同性女女互磨在线播放 | 国产片在线 | 成人免费看片粪便 | 激情五月激情综合网 | 亚洲午夜久久久久久久国产 | 欧美激情精品久久久久久 | 中文字幕一级片 | 午夜剧场免费看 | 国产a在亚洲线播放 | 国产精品不卡一区 | 91久久国产露脸精品 | 97在线免费观看 | 精品人妻少妇一区二区三区在线 | 精品一区二区三区在线播放视频 | 欧美xxxx精品 | 国产欧美xxxx6666| 黄色3级视频 | 久久av无码精品人妻系列试探 | 老女人丨91丨九色 | 尹人成人 | 久久久久人妻精品一区 | 对白脏话肉麻粗话av | 91黄色免费看 | 午夜生活片| 在线成人精品国产区免费 | 日本乱码一区二区三区芒果 | 午夜影院色 | 丰满人妻熟妇乱又伦精品视 | 国产成人久久av免费高清蜜臀 | 香港日本韩国三级网站 | 欧美人与动交tv | 亚洲熟妇无码av在线播放 | 亚洲肥老太bbw中国熟女 | 国产午夜夜伦鲁鲁片 | 99国产午夜精品一区二区天美 | 人人妻人人爽人人做夜欢视频九色 | 日韩人妻无码精品—专区 | 久久精品国产99国产 | 成人国产片 | 中文字幕亚洲日韩无线码 | 亚洲色图二区 | 新婚之夜疯狂做爰视频一区二区 | 山东少妇露脸刺激对白在线 | 又湿又紧又大又爽a视频 | 亚洲午夜免费 | 中文字幕在线精品中文字幕导入 | 色婷婷88av视频一二三区 | 日韩永久免费 | www.五月天婷婷 | 免费av入口| 国产精品美女一区二区 | 放荡的少妇2欧美版 | 欧美中文视频 | 欧美三级韩国三级日本三斤在线观看 | 色橹橹欧美在线观看视频高清 | 亚洲成人网络 | 玖玖爱av | 一线毛片 | 久久香蕉国产线看观看精品yw | 人妻无码一区二区三区四区 | 国产真实交换配乱吟91 | 人妻少妇精品无码专区动漫 | 亚洲中文字幕久在线 | 国产乱人伦偷精精品视频 | 影院一区| 国产哺乳奶水91在线播放 | 亚洲黄网在线观看 | 亚洲一区二区三区四区五区xx | 新超碰在线 | 调教+趴+乳夹+国产+精品 | 国产亚洲日韩欧美一区二区三区 | 91精品国产综合久久香蕉922 | 精品久久久久久无码中文字幕 | 18禁裸体女免费观看 | 亚洲色图吧 | 亚洲色图36p | 大波大乳videos巨大 | 伊人久久超碰 | 久久综合亚洲 | 国精产品999国精产 亚洲 欧美 综合 在线 精品 | 亚洲风情第一页 | 性开放的欧美大片 | 色综合天 | 国产精品久久久久久久久岛 | 中文字幕精品无码一区二区 | 国产精品igao | 色偷偷偷在线视频播放 | 精品熟女碰碰人人a久久 | 久久天天躁夜夜躁狠狠85麻豆 | 国产传媒毛片精品视频第一次 | 蜜桃av噜噜一区二区三区小说 | 女人下边被添全过视频的网址 | 日本成熟视频免费视频 | 一区二区三区回区在观看免费视频 | 懂色av一区二区在线播放 | 一区二区三区视频网站 | 日本韩国欧美一区 | 久久成人在线视频 | 亚洲精品9 | 黄色av网站免费看 | a级黄色录像 | 天天综合网久久 | 国产又大又黑又粗免费视频 | 99re8这里有精品热视频免费 | 极品福利视频 | 国产精品久久久久久人妻精品 | 欧美二区在线观看 | 99国产伦精品一区二区三区 | 婷婷亚洲天堂 | 情欲按摩院同性3 | 奇米影视7777久久精品 | 久久艳片www17ccom | 国产精品久久国产精麻豆96堂 | av免费在线观看网站 | 国产精品二区一区 | 日韩av午夜在线观看 | 亚洲精品成人天堂一二三 | 国产精品久久久久久久久久免费 | 蜜臀av人妻国产精品建身房 | 夜夜偷天天爽夜夜爱 | 黄色免费观看网站 | 婷婷六月综合网 | 免费国产成人 | 国产igao激情视频入口 | 男人的天堂在线播放 | 欧美乱大交做爰xxxⅹ性3 | 人妻丰满av无码久久不卡 | 亚洲欧美日韩国产综合 | 国产精品视频免费在线观看 | sese婷婷 | 国产丝袜一区二区在线 | 少妇哺乳期在线喷奶 | 国语对白老女人一级hd | 国产成人精品a视频一区www | 特黄视频在线观看 | 中文字幕在线不卡 | caopeng在线视频 | 亚洲国产精品毛片av不卡在线 | 女性脱给我揉视频 | 国产精品igao | 很很干很很日 | 国产亚洲精品久久久久久牛牛 | 2020最新无码福利视频 | 草逼视频网 | 成人高潮片 | 国产午夜精品一区二区三区在线观看 | 蜜桃久久精品成人无码av | 欧美精品一区二区三区久久久 | 亚洲欧美人色综合婷婷久久 | www四虎com| 亚洲中字幕日产av片在线 | 精品国产百合女同互慰 | 在线日本看片免费人成视久网 | 久久久久久综合 | 国产精品51麻豆cm传媒的特点 | 国内精品久久久久影视老司机 | 国产精品7m凸凹视频分类 | 欧美色图狠狠干 | 欧美视频一级 | 小蜜蜂www视频在线观看高清 | 激情啪啪网站 | 蜜桃精品免费久久久久影院 | 小荡货奶真大水多好紧视频 | 国产人妻久久精品二区三区特黄 | 天堂а√在线资源在线 | 黑人巨大精品欧美一区二区小视频 | 精品69| 麻豆黄色一级片 | 日产91精品卡2卡三卡四 | 一区二视频 | 国产在线拍偷自揄拍精品 | 午夜欧美精品久久久久久久 | 69精品欧美一区二区三区 | 天天干天天谢 | 国产乱码日产乱码精品精 | 国产色午夜婷婷一区二区三区 | 久久久久久久久一区 | 川上奈美侵犯中文字幕在线 | 日本伦理一区 | 白白色2012年最新视频 | 曰本不卡视频 | 久草大| 亚洲精品久久久久久婷婷 | 日本黄在线观看 | 全部免费的毛片在线播放 | 群交射精白浆视频 | 天堂中文字幕在线 | 搡老女人一区二区三区视频tv | 萌白酱国产一区二区 | 一本岛高清乱码2020叶美 | 在线观看中文字幕2021 | 欧洲色网站| av在线亚洲天堂 | 久久精品水蜜桃av综合天堂 | 国产中文字幕网 | 极品国产在线 | 成人免费观看视频大全 | 成 人 免费观看网站 | 日本精品婷婷久久爽一下 | 西西人体44www大胆无码 | www.91成人| 99国产精品白浆在线观看免费 | 伊人久久在线 | 四虎影视在线影院在线观看免费视频 | 精精国产xxxx视频在线 | 久久精品一 | 国产真实一区二区三区 | 久久久噜噜噜久久久 | 亚洲欧美一区二区三区在线 | 天天综合网7799精品 | 亚洲一区h | 狠狠色噜噜狠狠狠狠色综合网 | 日韩一级免费看 | 99久久久无码国产精品性 | 日韩少妇白浆无码系列 | 韩国bj大尺度vip福利网站 | 国产精品视频偷伦精品视频 | 看成人片| 国产在线观看h | 色天堂视频 | 精品不卡一区 | 黄色国产精品视频 | 国产精品av一区二区 | 精品国产a∨无码一区二区三区 | a网站在线 | 美女的奶胸大爽爽大片 | 成人在线视频播放 | 日韩av手机在线播放 | 成人黄色小说视频 | aaa黄色大片 | 爆乳2把你榨干哦ova在线观看 | 双性人hdsexvideos| 狠狠色狠狠色综合网 | 娇喘顶撞深初h1v1 | 夜夜躁狠狠躁日日躁2020 | 在线观看中文字幕一区 | 国产精品久久久久久久久久辛辛 | 搡国产老太xxx网站 搡老女人一区二区三区视频tv | 成熟人妻av无码专区 | 久久久久久久久久久网 | 国产精品久久久久精k8 | 那里有毛片看 | 精品国产粉嫩内射白浆内射双马尾 | 推油少妇久久99久久99久久 | 91最新视频 | gav成人网免费免播放器播放 | 国产精品视频500部 国产精品视频99 | 欧美一级淫片免费视频欧美辣图 | 久久黄色一级视频 | 羽月希奶水一区二区三区 | av中文天堂| 无码人妻少妇伦在线电影 | 毛片网在线观看 | 中文字幕日韩一区 | 91精品一二区 | 国产精品美女www爽爽爽软件 | 爱情岛论坛国产首页 | 光明影院手机版在线观看免费 | 91蜜桃 | 无码专区人妻系列日韩精品 | 国产精品久久久久久久久久iiiii | 成人毛片一区二区三区 | 51国偷自产一区二区三区 | 少妇情欲一区二区影视 | 狠狠搞av | 久久人人爽人人爽人人av | 亚洲深深色噜噜狠狠网站 | 日本黄色美女 | 欧美三级视频在线播放 | 国产午夜成人av在线播放 | 含羞草91大少妇 | 麻豆国产成人av高清在线 | 欧美 日韩 人妻 高清 中文 | 全国最大成人免费视频 | 午夜亚洲国产理论片一二三四 | 性感美女一级片 | 久久99国产综合精品免费 | 成人免费在线观看网站 | 免费人成网站在线观看欧美高清 | 国产在线一二区 | 亚洲三级久久 | 日韩天堂视频 | 台湾swag在线播放 | 国产麻豆xxxvideo实拍 | 一本一道久久a久久精品综合 | 少妇激情视频一二三区 | 看黄a大片日本真人视频直播 | 99久久99久久精品国产片果冻 | 成人福利视频一区二区 | 亚洲色婷婷六月亚洲婷婷6月 | 国产午夜福利在线观看视频 | 日韩少妇毛片 | 天天天天天天操 | 九一国产在线观看 | 扶她futa粗大做到怀孕 | 嘿嘿射在线观看 | 国产区一区二 | 日本人与黑人做爰视频 | 日韩一区二区三区久久 | 天天摸天天看天天做天天爽 | 久久免费视频在线观看30 | 丝袜av在线播放 | 丁香婷婷激情 | 午夜三级a三级三点窝 | 国产69精品一区二区亚洲孕妇 | 国产女s调教男m免费网站 | 国产精品久久久久久久久久免费 | 亚洲春色av无码专区在线播放 | 精品一区二区免费 | 可以观看的av | 国产一精品av一免费爽爽 | aaa一区二区| 美国一级黄色毛片 | 亚洲欧美韩日 | www亚洲com | 男人久久 | 天天在线免费视频 | 少妇喷潮明星 | 午夜在线视频一区二区区别 | 毛片av免费| 成人一区二区三区四区 | 男人激烈吮乳吃奶视频片 | 日本一区二区在线 | 美女与动人物aa交性 | 国产成人精品一区二区秒拍 | 欧美日韩四区 | 香蕉依人 | 国产精品 日韩精品 | 国产福利91精品 | 欧美成人无尺码免费视频软件 | 国产精品久久久久永久免费看 | 欧美视频中文在线看 | 中文字幕乱码一二三区 | 成人乱人乱一区二区三区 | 欲妇荡岳丰满少妇岳 | 亚洲乱码日产精品bd在线观看 | 中文字字幕 | 国产老头和老太xxxx视频 | 国产精品久久久久久久毛片 | 国产精品成人一区二区三区夜夜夜 | 一色屋精品久久久久久久久久 | 美女100%挤奶水视频吃胸 | 精品国产91久久久久久久 | 成人av视屏 | 国内成人精品 | 国产精品第一页在线观看 | 日韩av一区二区在线播放 | 欧美亚洲一级 | 亚洲爱色 | 性生交大片免费全视频 | 亚洲三级影院 | 亚洲国产成人精品片在线观看 | 国产精品成 | 国产精品嫩草影院8vv8 | 少妇真人直播免费视频 | 青青久在线视频 | 91超薄丝袜肉丝一区二区 | 中文字幕在线视频观看 | 欧美性猛交xxxx乱大交 | 成人免费av在线播放 | 久久丫精品系列 | 少妇淫真视频一区二区 | 国产成人免费观看久久久 | 暖暖av在线 | 国产精品久久久久久av福利软件 | 亚洲性事 | 337p人体粉嫩久久久红粉影视 | 国产91在线播放 | 亚洲精品一区在线 | 91av视频在线播放 | 草久网| 亚洲 欧美 清纯 校园 另类 | 狠狠色噜噜狠狠狠狠奇米777 | 精品国产一区二区三 | 中文字幕在线观看免费视频 | 国内精品免费午夜又爽又色愉情 | 亚洲欧美在线一区 | 午夜性无码专区 | 娇小发育未年成性色xxx8 | 中文字幕有码在线观看 | 天堂国产 | 91av国产精品 | 精品欧洲av无码一区二区 | 99久国产| 欧美激情视频在线播放 | 国产精品福利一区二区 | 国产精品福利网站 | 99蜜桃臀久久久欧美精品网站 | 亚洲精品国产精品国自产观看浪潮 | 天堂аⅴ在线最新版在线 | 一起草av在线 | 精品国产乱码久久久久乱码 | 一级黄色片a | 日本一区二区三区中文字幕 | 久久久精品欧美一区二区免费 | 国产中的精品av涩差av | 综合色婷婷一区二区亚洲欧美国产 | 免费se99se | 久久久精品国产sm调教 | 午夜xxxx| 午夜色大片在线观看 | 欧美成人第一页 | 国产精品一区二区三区在线 | 国产亚洲精品久久久久久大师 | 久久久久久久9 | 亚洲第一视频在线播放 | 欧美日韩人成综合在线播放 | 国产一区视频在线免费观看 | 黄色三级片毛片 | 国精产品一区一区三区有限公司杨 | 国产精品成人av片免费看最爱 | 午夜黄色网址 | 天天干在线播放 | 在线免费av网站 | 日本视频黄 | 日韩精品精品 | 亚洲国产成人久久精品软件 | 久久影视中文字幕 | 亚洲黄色在线观看视频 | www欧美亚洲 | 伊人视屏 | 五月天导航 | 久久一卡二卡 | 欧美精品久久久久久久久久丰满 | 久久噜 | 日本女人黄色片 | 久国久产久精永久网页 | 精品人妻码一区二区三区 | 国产女主播自拍 | 91精品久久天干天天天按摩 | 一本色道av立川理惠 | lutu成人福利在线观看 | www视频一区 | 亚洲人成人网站在线观看 | 国产在线观看免费 | 欧美xxxx黑人又粗又长精品 | 无码内射中文字幕岛国片 | 国产精品天天看天天狠 | 丰满少妇免费做爰大片人 | 成人开心激情 | 亚洲性图av| 最新激情网 | 国产亚洲精品综合一区91 | 午夜视频免费观看 | 国产免费一区二区三区在线能观看 | 五月婷婷激情网 | 国产又粗又猛又爽又黄的视频p站 | 乱中年女人伦 | 快好爽射给我视频 | 久久99日韩国产精品久久99 | 99久久国语露脸精品国产 | 午夜精品久久久久久久91蜜桃 | 日日鲁夜夜视频热线播放 | 极品人妻videosss人妻 | 四虎成人精品无码永久在线 | 午夜xxxxx | 欧美激情内射喷水高潮 | 任你躁久久久久久妇女av | 亚洲一区二区三区影院 | 亚洲中文字幕无码一区 | www.亚洲免费 | 日韩亚洲欧美中文字幕 | 免费无毒av| 佐佐木希av一区二区三区 | 激情偷乱人伦小说视频在线 | 韩国美女主播娇喘乳奶摇 | 日本久久成人 | 久久精品视频16 | 亂倫近親相姦中文字幕 | 国语自产少妇精品视频 | 91原创国产| 暖暖在线日本免费高清最新版 | 亚洲欧美综合精品久久成人网无毒不卡 | 精品人妻少妇嫩草av无码专区 | 久久免费看少妇 | 国产成人三级一区二区在线观看一 | 国产网友自拍在线视频 | 国产a√精品区二区三区四区 | 欧美做受xxxxxⅹ性视频 | 看国产一级毛片 | 国产亚洲精品久久久久久国模美 | 亚洲第一综合天堂另类专 | 精品入口麻豆88视频 | 日韩av无码中文无码不卡电影 | 色在线视频观看 | 天堂中文在线看 | 制服 丝袜 激情 欧洲 亚洲 | 少妇饥渴偷公乱第95 | 99久久婷婷国产综合精品草原 | 国产一区二区在线视频观看 | 精品国产乱码久久久久久绯色 | 国产乱码精品一区二区三区中文 | 欧美精品影院 | 日韩一二三四五区 | 久久婷婷五月综合色一区二区 | аⅴ天堂中文在线网 | 白洁av| 亚洲不卡中文字幕 | 国产成人精品一区二区 | 91艹| 欧美日韩一级特黄 | 在线观看亚洲国产精品 | av在线麻豆 | 欧美视频影院 | 麻豆传传媒久久久爱 | 啪啪网站免费 | 亚洲第一免费 | 污视频在线播放网站 | 亚洲国产精品国自产拍av秋霞 | 国产一区二区在线观看视频 | 日本高清www色视频 国产一区日韩二区欧美三区 | 深夜久久久| 日本少妇喷水 | 精品一区不卡 | 精品国产乱码久久久久久图片 | 国产韩国精品一区二区三区 | 日韩欧美国产视频 | 少妇挑战三个黑人惨叫4p国语 | 欧美色亚洲 | 欧美日韩二区三区 | 亚洲精品国产av成拍色拍 | 成人中文字幕+乱码+中文字幕 | 久久久综合香蕉尹人综合网 | 蜜臀久久99精品久久久久久 | 乱人伦精品视频在线观看 | 99热在线观看精品 | 沦为黑人姓奴的少妇 | 日韩av在线永久免费 | 小丽的性荡生活 | 狠狠爱成人| 无毒黄色网址 | 人妻夜夜爽天天爽三区麻豆av网站 | 伊人中文字幕在线观看 | 欧美激情久久久 | 一道本道加勒比天天看 | 日韩一级片网站 |