日日干夜夜草,美女视频网站免费,久久无码精品一区二区三区 http://www.bjzhda.cnzh-cn曙海教育集團論壇http://www.bjzhda.cnRss Generator By Dvbbs.Netofficeoffice@126.comimages/logo.gif曙海教育集團論壇PowerPC VxWorks BSP分析http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1943&Page=1wangxinxin2010-12-1 10:50:451 PowerPC BSP定制
如圖1,BSP的主要功能在于配置系統硬件使其工作于正常的狀態,以及完成硬件與軟件之間的數據交互,為OS及上層應用程序提供一個與硬件無關的軟件平臺。因此從執行角度來說,其可以分為兩大部分:
? 目標系統啟動時的硬件初始化及操作系統引導例程,它只在系統啟動過程中執行一次;
? 目標板上控制硬件運行的設備驅動程序,由它來完成硬件與軟件之間的銜接。
圖片點擊可在新窗口打開查看
 
圖1 BSP在系統中所處的位置
一般說來,BSP的設計與開發可以分為以下幾個步驟:
(1)建立開發環境。安裝VxWorks集成開發環境(Tornado);選擇合適的開發工具。目前幾乎每一種處理器都支持JTAG/BDM接口,大多數處理器都有JTAG/BDM調試工具支持,如vision ICE等,采用目標板供應商的DEBUG ROM調試工具也是一種可以考慮的途徑。
(2)選擇合適的BSP模板。如有可能,所選的模板盡可能與硬件平臺相近,當然,實際情況中考慮到費用及充分利用已有的資源,所選的模板可能需要較大的修改才能移植到需要的硬件平臺。
(3)修改或添加WIND內核激活前的初始化代碼,包括初始化CPU內核、MMU、CACHE禁止/使能等。
(4)內核激活以后,連接系統中斷、系統時鐘,修改或添加所需要的設備驅動程序等。
(5)測試與驗證。BSP的正確性與穩定性對上層軟件和整個系統的穩定起著至關重要的作用。因此BSP完成后要經過測試驗證。
BSP主要文件目錄的組成及作用:
圖片點擊可在新窗口打開查看
target/config/All目錄
這個目錄下的文件是所有BSP文件共享的,不是特別需要不要更改里面的任何文件。
configAll.h:
缺省定義了所有VxWorks的設置,如果不用缺省的設置,可在BSP目錄下的config.h文件中用#define或#undef方式來更改設置。
bootInit.c:
在romInit.s后,完成Boot ROM的第二步初始化。程序從romInit.s中的romInit()跳到這個文件中的romStart()來執行必要的解壓和ROM image的放置
bootConfig.c: 完成Boot ROM image的初始化和控制
usrConfig.c: VxWorks image的初始化代碼
target/config/comps/src目錄
涉及系統核心的components,主要由target/config/All中usrConfig.c中函數調用
target/config/bspname目錄
包含系統或硬件相關的BSP文件
Makefile
一些命令行控制images的生成
README
BSP發布紀錄,版本,總的文檔
config.h
包括所有涉及CPU主板的設置及定義(includes,definations)
configNet.h
網絡驅動的主要設置文件,主要對END驅動設置.
romInit.s
匯編語言文件,是VxWorks Boot ROM和ROM based image的入口,參見系統啟動部分
sysALib.s
匯編語言文件,程序員可以把自己的匯編函數放在這個文件里,在上層調用。VxWorks image的入口點_sysInit在這個文件里,是在RAM中執行的第一個函數
sysLib.c
包含一些系統相關的函數例程,提供了一個board-level的接口,VxWorks和應用程序可以以system-indepent的方式生成。這個文件還能包含目錄target/config/comps/src的驅動
sysScsi.c
可選文件用于SCSI設備設置和初始化
sysSerial.c
可選文件用于所有的串口設置和初始化
bootrom.hex
ASIC文件包含VxWorks Boot ROM代碼
VxWorks
運行在目標機上,完整的,連結后的VxWorks二進制文件
VxWorks.sym
完全的,連結后帶有符號表的VxWorks二進制文件
VxWorks.st
完全的,連結后,standalone,帶有符號表的VxWorks二進制文件
1.1啟動過程
VxWorks OS有三種映像:
? Loadable Images:由Bootrom引導通過網口或串口下載到RAM
? ROM-based Images(壓縮/沒有壓縮):即將Image直接燒入ROM,運行時將Image拷入RAM中運行。
? ROM-Resident Images:Image的指令部分駐留在ROM中運行,僅將數據段部分拷入RAM。
注意這里說的三種映像都是包含真正操作系統VxWorks的映像,其中后兩種可以直接啟動并運行起來,但是第一種不行,它必須借助另一個叫做Boot Image的映像(可以在Tornado中的build->build boot rom中生成)才能運行起來,也就是利用Boot Image引導起來然后通過網口或串口下載真正包含VxWorks的Loadable Image,然后才能運行起來。也就是說Boot Image是和Loadable Image 結合使用的。
現在看來一共有四種映像文件,讓我們看看它們的組成吧:
? Boot Image:包含一段叫做BootStrap Programs的程序+一段ROM BOOT Program程序。
? Loadable Images:由操作系統VxWorks和應用組成的映像。
? ROM-based Images(壓縮/沒有壓縮):包含一段叫做BootStrap Programs的程序+ Loadable Images(即由操作系統VxWorks和應用組成的映像)
? ROM-Resident Images:同上
通過上面我們可以看出,ROM-based Images,ROM-Resident Images,Boot Image三種映像都包含一段叫做BootStrap Programs的程序,它具有啟動功能,可以把ROM中的代碼段和數據段拷貝到RAM中。
下面我們來看看三種VxWorks OS映像的啟動順序:
Boot Image + Loadable Images
Loadable Images是依靠Boot Image加載啟動的,首先有Boot Image中的程序BootStrap Programs把Boot Program程序加載到RAM中的RAM_HIGH_ADRS處,然后控制權交給Boot Program,由Boot Program負責一系列簡單的硬件初始化(網口,串口等),開始下載Loadable Images(即包含應用的VxWorks操作系統)到RAM_LOW_ADRS,之后控制權交給VxWorks操作系統開始執行。
圖片點擊可在新窗口打開查看
 
圖2 Loadable Images VxWorks啟動過程
 
如圖2,第一階段的執行流程使用的是上圖的左邊的源文件中的那些函數(romInit();romStart();usrInit();sysHwinit();usrKernelinit();usrRoot());第二階段執行流程使用的是上圖中右邊源文件中的那些函數(sysInit(); usrInit();sysHwinit();usrKernelinit();usrRoot();usrAppInit())。下面具體解釋:
第一階段:
romInit.s:romInit()
? 系統上電之后,首先調用的函數就是romInit()
? 禁止中斷
? 把啟動類型(冷啟動/熱啟動)放在堆棧上
? 清除cache
? 初始化CPU基本寄存器,調用SDRAM初始化函數初始化UPM
? 直接跳轉到bootInit.c:romStart()
bootInit.c:romStart()
? 把代碼段和數據段從bootrom復制到RAM當中
? 完成程序映象的解壓縮(如果映象是壓縮版本的)
? 跳轉到bootConfig.c:usrInit()
bootConfig.c:usrInit()
? VxWorks OS中第一個C語言完成的代碼。執行操作系統內核所必須的初始化程序。
? Cache程序庫的初始化
? 清零系統的BSS段
? 初始化中斷向量表
? 使硬件工作在一個“安靜”的狀態,盡量不產生各種中斷或者異常
? 控制權移交給KernelInit(),產生usrRoot根任務
? 在usrRoot根任務中解析Bootline,產生bootCmdLoop任務,用于啟動、加載VxWorks映像
/target/config/all/bootConfig.c是Boot ROM設置模塊,用于加載VxWorks image。執行流程為:
usrRoot();bootCmdLoop(void)命令行選擇,或autobooting;bootLoad(pLine, &entry)加載模塊到內存(網絡、TFFS、TSFS...);netifAttach();go(entry);(entry)()從入口開始執行,不返回。
第二階段:
bootConfig.c: bootLoad( )
? 加載VxWorks映像,并轉向它的加載地址,從sysInit入口開始執行VxWorks映像
sysALib.s: sysInit( )
? 與romInit.s : romInit()的初始化過程類似,但不再初始化Memory(DRAM和Memory控制器通常初始化一次)
usrConfig.c: usrInit( )
? 設置cache的工作模式,板級硬件初始化,初始化Wind內核,啟動usrRoot( )根任務
usrConfig.c: usrRoot( )
? 初始化內存,系統時鐘,I/O系統,標準輸入輸出錯,異常處理,添加用戶應用程序。
ROM-based Images(壓縮/沒有壓縮)
和上面那種啟動方式相比,這種啟動方式省去了一些步驟,執行完romStart()之后就已經加載VxWorks 到RAM中了,因此,下一步就是把控制權交給VxWorks,由VxWorks從sysInit()開始執行即可。下面是具體的流程:
圖片點擊可在新窗口打開查看
romInit.s:romInit()
? 系統上電之后,首先調用的函數就是romInit()
? 禁止中斷
? 把啟動類型(冷啟動/熱啟動)放在堆棧上
? 清除cache
? 初始化CPU基本寄存器,調用SDRAM初始化函數初始化UPM
? 直接跳轉到bootInit.c:romStart()
bootInit.c: romStart()
? 把代碼段(如果是VxWorks_romResident映像,則不拷貝代碼段)和數據段從bootrom復制到RAM當中
? 完成程序映象的解壓縮(如果映象是壓縮版本的)
? 跳轉到sysALib.s: sysInit()
sysALib.s: sysInit()
? 重新進行CPU內核(主要是cache)的初始化,這些工作在romInit.s:romInit()中曾經進行
? 是RAM中運行的第一段代碼
? 跳轉到usrConfig.c: usrInit()
usrConfig.c: usrInit()
? VxWorks 中第一個C語言完成的代碼。執行操作系統內核所必須的初始化程序。
? Cache程序庫的初始化
? 清零系統的BSS段
? 初始化中斷向量表
? 使硬件工作在一個“安靜”的狀態,盡量不產生各種中斷或者異常
? 控制權移交給KernelInit(),產生usrRoot根任務
ROM-Resident Images
這種映像的加載和上一種是基本相同的,其執行順序為:
文件romInit.s中的romInit();文件bootInit.c中的romStart();文件usrConfig.c中的usrInit();sysHwInit();usrKernelInit();KernelInit(usrRoot,...)。
usrRoot()任務的主要功能包括:
? 初始化內存分區表(memory partition library)
? 初始化系統時鐘(system clock)
? 初始化輸入輸出系統(I/O system)----可選
? Create devices----可選
? 設置網絡(Configure network)----可選
? 激活WDB目標通信(Activate WDB agent)----可選
? 調用程序(Activate application
]]>
VxWorks BSP制作概要http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1942&Page=1wangxinxin2010-12-1 10:49:19    要了解vxworks BSP的制作,首先要對vxworks的啟動過程有個大體的了解,下面我們從vxworks的啟動過程開始介紹。
    VxWowks的啟動過程
            一般來說,所有的處理器執行相同的邏輯步驟初始化和加載VxWorks,但一些處理器可能會有一些特殊的步驟,而另外一些則可能跳過一些步驟。但它們都要進行以下步驟,如:初始化處理器,并在存儲器的特定位置提供一段代碼(可能還有一些表)以供處理器上電或重啟時運行。這段代碼設置處理器的狀態,初始化存儲器和存儲器地址,關中斷把控制權交給啟動代碼(bootstrapping code)。
    
        
        1. 處理器首先跳到ROM的入口地址,設置狀態字并創建一個啞堆棧(DUMMY stack);
        2. 跳到C程序的入口地址,根據啞堆棧中的參數決定是否清零內存RAM(如是冷啟動(cold start)則清零),再把ROM段的剩余部分拷貝到RAM(如果ROM代碼是壓縮的,還要解壓);
        3. 處理器跳到RAM的入口地址(bootConfig.c),使cache無效,清零bss段,初始化向量表,進行板級初始化。
        4. 啟動多任務內核。
       VxWorks的boot ROM本身就是一個獨立的應用。開發者可用它來通過網絡啟動一個VxWorks映像并和應用代碼連接。
    
         1  VxWorks啟動流程
            romInit()——》romStart()——》sysInit()——》initVectBaseSet()——》sysHwInit()——》usrKernelInit() ——》kernelInit()——》usrRoot()
    
        2 文件和程序說明
    romInit.S: romInit()
    關中斷,把啟動類型(cold/warm)入棧,清零cache后跳到romStart的入口。
    
    bootInit.C:romStart()
    把ROM代碼和數據段拷貝并重定位到RAM,清零RAM的未用部分,需要的話要進行解壓縮,然后跳到sysInir()的入口地址。
    拷貝的過程如下:
    A,代碼段不是駐留在ROM中,要拷貝代碼段和數據段;
    B,如代碼段是駐留在ROM中的,則只拷貝數據段;
    C,未用的內存清零;
    D,需要時,要進行解壓縮。
    
    sysALib.S:sysInit()
    sysInit()是VxWorks映像的入口地址,起始地址由RAM-LOW-ADR定義。它首先關中斷,使cache無效,初始化處理器的寄存器為缺省值,使tracing無效,清除中斷寄存器,初始化usrInit()的堆棧并激活usrInit()。
    注意,在sysInit()中必須重新初始化在romInit()中所做的硬件初始化。
    
    usrConfig.C and bootConfig.C:usrInit()
    它是VxWorks運行的第一個C代碼,在supervisor mode中激活。它關中斷,存儲有關啟動類型(boot type)的信息,在VxWorks內核運行前進行必要的初始化。
    A,初始化cache的模式,設置為安全狀態,在usrInit()結束時使cache有效;
    B,清零系統bss段;
    C,初始化中斷向量表,調用VectBaseSet(),exeVectInit();
    D,初始化系統硬件,但使之無效(Quiescent State),調用sysHwInit(),這是一個與硬件有關的過程,是我們要針對不同的目標板進行修改的重要部分,其中涉及到串口,網口的初始化,CONSOLE的配置等;
    E,調用usrKernelInit(),并使能cache;
    F,調用kernelInit(),創建usrRoot()。
    
    usrKernel.C:kernelInit()
    初始化內核可選組件(kernel facility)。
    
    kernelLib.C:usrKernelInit()
    初始化多任務環境。
    調用intLockLevelSet(),使時間片(round-robin)方式無效,在內存的高端創建中斷堆棧,ROOT堆棧和TCB,創建usrRoot(),中斷usrInit()的運行,然后打開中斷,注意要清除中斷寄存器。
    
    usrConfig.C and bootConfig.C:usrRoot()
   初始化I/O系統,驅動器,設備(在configAll.h和config.h中指定)。
    
        3 程序列表
         對于硬件初始化的順序,大致可按下表中形式進行:
函   數    函  數  功  能    所 在 文 件
sysInit()    (a)鎖住中斷;(b)禁用緩沖;
(c)用缺省值初始化系統中斷表(僅i960);
(d)用缺省值初始化系統錯誤表(僅i960);
(e)初始化處理器寄存器到一缺省值;
(f)使回溯失效;(g)清除所有懸置中斷;
(h)激活usrInit(),指明啟動類型。    sysALib.s
usrInit()    (a)對bss賦零;
(b)保存bootType于sysStartType;
(c)調用excVecInit(),初始化所有系統和缺省中斷向量;
(d)依次調用sysHwInit(),  usrKernelInit(),kernelInit().    usrConfig.c
usrKernelInit()    依次調用classLibInit(),taskLibInit(),taskHookInit(),semBLibInit(),semMLibInit(),semCLibInit(),semOLibInit(),wdLibInit(),msgQLibInit(),qInit(),workQInit()    usrKernel.c
kernelInit()    初始化并啟動內核。
(a)激活intLockLevelSet();
(b)從內存池頂部創建根堆棧和TCB;
(c)調用taskInit(),taskActivate(),用于usrRoot();
(d)調用usrRoot().    kernelLib.c
usrRoot()    初始化I/O系統,驅動器,設備(在configAll.h和config.h中指定)
(a)調用sysClkConnect(),sysClkRateSet(),
iosInit(),[ttyDrv()];
(b)初始化excInit(),logInit(),sigInit().
(c)初始化管道,pipeDrv();
(d)stdioInit(),mathSoftInit()或mathHardInit()
(e)wdbConfig():配置并初始化目標代理機    usrConfig.c

        在大多數目標板的板級支持包中,VxWorks的入口點由兩個函數:romInit()和romStart()來完成,而非sysInit()。具體基于ROM的VxWorks的初始化過程如下表所示:
函數    函數功能    所在文件
1.romInit()




2.romStart()




3.usrInit()

4.usrKernelInit()
5.kernelInit()

6.usrRoot()

7.Application routine    (a)禁止中斷;
(b)保存啟動類型;
(c)硬件初始化;
(d)調用romStart();

(a)將數據段從ROM拷貝到RAM,清內存;
(b)將代碼段從ROM拷貝到RAM,有必要的話解    壓縮;
(c)調用usrInit();

初始化程序

如果相應的配置文件被定義,對應函數被調用

初始化并啟動內核

初始化I/O系統,驅動器,創建設備

應用程序代碼    romInit.s




bootInit.c




usrConfig.c

usrKernel.c

kernelLib.c

usrConfig.c

Application source file

    BSP的結構
        BSP是一系列文件的集合,這些文件按功能大致可分為三個部分:一是操作系統載體的硬件初始化文件;二是操作系統初始化文件;三是生成BSP目標代碼所需的工具文件,如各種編譯連接文件等。

        BSP的文件構成如下:
        1,硬件初始化文件:處理器初始化程序。
        2,操作系統初始化文件:各類頭文件,驅動程序,操作系統內核初始化程序,創建多任務環境程序。
        3,工具文件:各類make文件,制作系統引導文件的工具。
  BSP的工作
        1,單板硬件初始化,主要是CPU的初始化,為整個軟件系統提供底層的硬件]]>
基于ARM7核處理器VxWorks系統BSP設計http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1941&Page=1wangxinxin2010-12-1 10:44:44關鍵詞:ARM7TDMI S3C4510B VxWorks BSP

1 介紹

S3C4510B是三星公司推出的針對嵌入式應用的16/32 位嵌入式處理器,該微控制器專為以太網通信系統的集線器和路由器而設計,具有低成本和高性能的特點, S3C4510B中內置了設計的16/32位ARM7TDMI處理器, 可以執行32位的ARM指令,也可執行16位的THUMB指令, 并集成了多種外圍部件,主要有

● 時鐘頻率50MHz

● 內核/IO電壓3.3V

● 8KB的Cache/SRAM

● 一個10/100Mbps 以太網控制器,MII接口

● 兩個HDLC通道,每個通道可支持10Mbps

● 兩個UART通道

● 兩個DMA通道

● 兩個32位定時/計數器

● 18個可編程I/O口

● 中斷控制器,支持21個中斷源,包括4個外部中斷

● 支持SDRAM,EDO DRAM,SRAM,Flash等

● 具有擴展外部總線

● JTAG接口,支持軟件開發 ,硬件調試

S3C4510B支持目前常用的嵌入式操作系統,如VxWorks、pSoS、ucLinux等,本文將主要介紹VxWorks操作系統下的軟件開發。

ARM7TDMI是ARM家族通用的一款32位微處理器,它主要為用戶提供了高性能、低價格解決方案。

ARM7TDMI具有三級流水線的32位RISC處理器,處理器結構為馮·諾依曼Load/Store。該CPU具有兩種指令集,即ARM和Thumb指令集。ARM指令集是32位,它可以利用CPU最大性能;而Thumb指令集則是16位指令集。

ARM7TDMI內核方塊圖如圖1所示。

2 系統硬件圖

該系統主要以S3C4510B為核心,外圍集成了以太網卡、SDRAM、FLASH、UART以及HDLC等。圖2是以S3C4510B為核心的最小系統設計圖。

SDRAM選用HY57V653220(8Mbyte)、兩片FLASH分別為AM29F040(存放bootrom)和T28F160BT(作為文件系統用)。

3 VxWorks操作系統下BSP構建

在完成板上基本硬件的測試后,下面我就開始對vxWorks操作系統下BSP進行開發,開發前需要做一些準備工作,如準備開發工具等。

① 開發工具用的是Tornado2.2 for ARM;

② 參考資料有BSP Kit、S3C4510B DataSheet;

③ 參考Tornado2.2 for ARM下自帶的wrSBCArm7 BSP;

④ 燒寫程序采用編程器。

通常在開發BSP的時候,我們需要在Tornado原帶BSP目錄下找一個與我們所用的處理器相同或相近。與BSP相關的文件有:romInit.s、sysAlib.s、bootInit.c、bootConfig.c、sysLib.c、config.h、configNet.h、makefile以及與我們硬件相關的,如串口sysSerial.c等。由于篇幅所限,具體的文件作用在此就不說了。下面主要根據S3C4510B來闡述一下BSP開發步驟。

(1)拷貝BSP

將wrSBCArm7 BSP拷貝一份并命名為4510BSP,接下來的工作就是修改該目錄下的文件,從而得到自己的BSP。

(2)修改MakeFile文件

修改4510BSP目錄下的makefile文件,修改如下幾行

TARGET_DIR = 4510BSP # changed by caiyang

VENDOR = CAI # changed by caiyang

BOARD = MyArmBoard # changed by caiyang

ROM_TEXT_ADRS = 01000000 # ROM entry address

ROM_WARM_ADRS = 01000004 # ROM warm entry address

ROM_SIZE = 00080000 # number of bytes of ROM space

RAM_LOW_ADRS = 00006000 # RAM text/data address (bootrom)

RAM_HIGH_ADRS = 00486000 # RAM text/data address (bootrom)

MACH_EXTRA =

注解:ROM_TEXT_ADRS:BOOT ROM的入口地址。對大多數板來說,這就是ROM地址區的首地址,然而也有的硬件配置使用ROM起始的一部分地址區作為復位向量,因此需要根據此設置偏移量作為它的地址。這個偏移量因CPU結構而定。

ROM_WARM_ADRS:BOOT ROM熱啟動入口

]]>
VxWorks在AT91RM9200上的BSP設計http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1940&Page=1wangxinxin2010-12-1 10:42:00
1 BSP概念

BSP通常是指針對具體的硬件平臺,用戶所編寫的啟動代碼和部分設備驅動程序的集合。它所實現的功能包括初始化和驅動部分設備。最基本的BSP僅需要支持處理器復位、初始化、驅動串口和必要的時鐘處理。BSP是相對于操作系統而言的,不同的操作系統對應不同形式的BSP,因此,在寫BSP時一定要按照要求的操作系統對BSP的定義形式來寫。在VxWorks系統中,BSP是介于底層硬件環境和VxWorks之間的一個軟件接口,它的主要功能是系統加電后初始化目標機硬件和VxWorks,并提供部分硬件驅動程序。BSP在VxWorks系統中的層次關系如圖1所示。

圖片點擊可在新窗口打開查看

BSP為各種板卡的硬件功能提供了統一的軟件接口,包括硬件初始化、中斷的捕捉和處理、硬件時鐘和定時器管理、內存地址映射,以及內存分配等。每個BSP還包括一個ROM啟動或其他啟動機制。

2 VxWorks的引導過程

在編寫BSP之前,首先要了解整個系統的啟動過程。VxWorks的映像由代碼段、數據段和BSS段3部分組成。VxWotks內核可以分為3種:可加載類型映像、基于ROM的VxWorks映像和RoM駐留型映像。這3種類型的映像組織是不一樣的,因此啟動過程有所區別。

可加載映像包括VxWorks和Boot ROM兩部分內容,兩部分是獨立創建的。首先,由系統引導代碼把ROM引導程序搬到RAM_HIGH_ADRS。然后,ROM引導程序開始運行,將VxWorks映像加載到RAM_LOW_ADRS,之后跳轉到VxWorks映像裝入點。

基于ROM的VxWorks映像在BSP初始化時,會把lmage完全搬到RAM中執行,包括代碼段和數據段。在拷貝執行完畢后,系統控制權轉移給RAM中VxWorks映像的初始化代碼。

ROM駐留型映像只是將ROM中VxWorks映像的數據段和BSS段拷貝到RAM中,完成后系統控制權轉移給ROM/Flash里VxWorks映像的初始化代碼,代碼段留在ROM中并在ROM中運行。在ROM中運行的VxWorks映像主要足為了節省RAM空間,帶來的不利則是運行速度慢。

圖2和圖3分別是下載型和ROM型VxWorks映像的初始化流程。

圖片點擊可在新窗口打開查看

下面以ROM型VxWorks內核啟動流程為例,說明各文件的作用:

romlnit()保存啟動類型,屏蔽中斷;初始化內存和寄存器,屏蔽Cache;初始化CPU,將堆棧指針定位于被拷貝Boot ROM映像在RAM的地址;跳到romStart()。

roraStart()根據不同的映像類型將VxWorks映像的不同部分解壓縮<如果需要)并加載到RAM中。

usrInit() 對VxWorks映像的BSS段清零;調用intVecBaseSet()設置中斷矢量基地址表;調用excVecInit()初始化異常中斷矢量;調用sysHwInit()初始化系統硬件;調用usrKernelInit()初始化wind內核;調用kernellnit()啟動wind內核,啟動usrRoot()任務。

usrRoot()設置操作系統時鐘,創建設備,安裝驅動,調用sysHwInit2()安裝系統時鐘和輔助時鐘中斷以及串口等設備的中斷,初始化I/O、文件系統、調用應用程序。

3 VxWorks在AT91RM9200上的BSP設計

3.1 AT91RM9200簡介

AT91RM9200的片上資源包括:ARM920T處理器棱、16KB的內部SRAM和128KB的內部ROM存儲器;支持SDRAM、SRAM、Burst Flash和CompactFlash、SmartMedia以及NANDFlash的無縫連接;16KB的數據Cache,16KB的指令Cache,完全可編程的外部總線接口EBI,4個32位的PIO控制器可以達到122個可編程I/O引腳(每個都有輸入控制、可中斷及開路的輸出能力);帶有8個優先級、可單獨屏蔽中斷源的先進中斷控制器、6組硬件定時器、4個通用同步/異步收發器USART。

3.2 BSP中幾個重要文件的修改

由于AT91RM9200的內核是ARM920T,所以BSP文件主要在VxWorks編澤環境Tornado的目錄target/config/all和target/config/integrator920t文件夾里。其中,a11文件夾里的文件對于絕大多數BSP都是共用的,一般來說不需要修改,特別是“configAll.h”;integrator920t文件夾里的文件就是所要編寫的BSP文件,這些文件往往與系統硬件密切相關。

3.2.1 修改Makeflie

Makefile文件定義編譯和鏈接整個BSP的規則,如編譯工具的選擇、編譯選項和包含文件路徑等;控制生成VxWorks映像文件的類型,同時含有存儲區大小的信息,對于存儲區大小信息的改動必須與Config.h的對應改動同步。有些參數需在該文件中定義,如處理器類型、編譯工具、目標地址等。下面介紹一些須修改的參數和地址:

圖片點擊可在新窗口打開查看

3.2.2 修改Config.h

Config.h文件包含了所有頭文件和與CPU相關的特殊定義。VxWorks內核組件的配置由Config.h文件定義。Config.h中的主要修改內容有定義引導行和修改地址。

(1)定義引導行

圖片點擊可在新窗口打開查看

其中,mac(O,0)為AT91RM9200芯片中的EMAC設備;host為主機名;VxWorks為要下載的文件名;h為主機IP地址;e為目標板IP地址;u為用戶名;pw為密碼;tn為目標板名稱。

(2)修改地址

該文件中的地址定義,如ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADR、SRAM_HIGH_SIZE等要與Makefik文件中的相關定義一致。本設計中代碼段存儲在連接ARM芯片外部片選CSO上的Flash里面,基地址為Oxl0000000,因此.定義如下:

圖片點擊可在新窗口打開查看

VxWorks的缺省配置由configAll.h來確定。一般來說,缺省配置的設置與自行開發的硬件系統的配置不同,用戶可通過Cotlfig.h來改變缺省配置。用戶須查看configAll.h,并在Config.h中將不需要的軟硬件配置和初始化去掉。例如,缺省配置中一般包含浮點處理器,而AT9lRM9200中沒有浮點寄存器,因此就要刪掉相關配置。]]>
Tornado BSP Developer's Kit for VxWorks User's Guidehttp://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1939&Page=1wangxinxin2010-12-1 10:40:301                   簡介

VxWorks的一個優勢就是它為應用代碼提供了高度的架構和硬件獨立性。這種可移植性得益于VxWorks的模塊化設計, 而這種模塊化設計將所有硬件相關的功能函數分離到了一套稱為板級支持包(BSP)的庫中。BSP庫為所有開發板的硬件相關功能提供了一個一致的接口。 這些功能包括硬件初始化, 中斷處理, 中斷產生, 硬時鐘和Timer管理, 本地和總線內存空間的映射, 以及內存尺寸控制等等。

總的來說, 有如下幾種類型的VxWorks移植:

A.      宿主移植: 將Tornado和VxWorks的開發能力移植到一個以前不支持的宿主機上。

B.      架構移植: 將VxWorks 和Tornado 調試器移植到一個以前不支持的目標處理器或架構上。

C.     板級移植: 將VxWorks 移植到一個新的目標板上, 在此之前應該已經有了宿主移植和架構移植。

D.     升級pre-Tornado BSPs 使之工作于Tornado 平臺。

E.      移植一個可選的部件。

宿主移植和架構移植需要訪問全部的VxWorks源代碼, 超出了本文的范圍。 板級移植是我們要討論的重點, 板級移植只需要訪問VxWorks中硬件相關的那部分源代碼(BSP)和調試器。

多年以來, 風河公司(Wind River)能夠提供給客戶各種BSP, 然而, 隨著許多新的CPU板的大批流行, 尤其是許多客戶自己設計的CPU板的大量出現, 使得風河已經不能夠跟上市場對于新的BSP的需求。

本書就是為了解決這個問題, 本書旨在幫住你創建、測試新的BSP、部件和項目。 移植VxWorks到一個新的板子上是一件非常有挑戰性的工作, 尤其是只有在移植完成后那些VxWorks開發工具才能夠被使用的時候。根據本書的策略可以使移植變得簡單一點。本書提供了移植策略和系統元件如何相互作用的詳細描述, 本書也包括了基于Tornado2.0來創建和發布部件或項目所需要的 技術信息。

本書所涉及的BSP 工具集與Tornado 2.0 或更高版本兼容, 升級早期的BSP 使之工作于Tornado 2.0 是相當容易的, 參考A。升級一個BSP到Tornado 下。


1.1          Tornado 2.0 的新特性介紹:

SCSI 1 廢止: 對于SCSI-1 驅動和庫的支持已經被廢止, 雖然這些庫仍然被包括在Tornado2.0 中,但是它們已經被列為廢除并且不會被包括在將來的版本中。

宏 TYCO5_2被刪除:TYCO5_2這個宏不再被支持, 客戶應當使用Tornado 2.0 下的SIO驅動 。

BSP封裝被變更: 參考10。2  BSP封裝, P???頁以獲得更詳細的關于封裝要求的描述。 參考O。BSP產品內容以獲得一個典型產品內容的的快速總結。

文檔: 所有的在線文檔現在是以HTML格式提供, 在系統中包含了一個稱為refgen的工具,用來從現存的nroff輸入產生HTML頁。

 VxWorks網絡協議棧:VxWorks網絡協議棧是Tornado 1.0.1 用戶的可選部件, 現在是唯一被Winriver 支持的協議棧。 所有的BSP現在都使用為VxWorks網絡協議棧而修改的驅動程序。 VxWorks網絡協議棧是基于BSD 44 協議棧的。在BSP中 BSD44 和 END 驅動都可被使用。END驅動是BSP的缺省驅動。

新的驅動: 許多新的END網絡驅動已經被加入到驅動產品中來以便使盡可能多的產品擁有至少一個可用的END 驅動。

集成的模擬器: Tornado 2.0包括一個集成的模擬器, 它允許開發人員在硬件環境就續以前就能夠開始應用的開發。

集成的WindView:Tornado 2.0包括一個集成的WindView 工具, 用來檢查運行時的行為, 參考 <<WindView User’s Guide>> 來了解更多關于WindView的特性。

VTS 測試更新: VTS(驗證測試套件)有了微小的升級以便使它能夠正確地工作于target shell 的新的虛擬輸入輸出特性。

SCSI 測試套件: SCSI性能測試套件在以前的移植工具中被忽略了, 現在可用。

ROM_WARM_ADRS 這個新宏被引入到BSP模板和一些BSP中, 它代表進入到boot ROM 代碼的熱啟動入口, 它被用來去除基于不同CPU家族所手工計算出來的入口地址。 正常情況下, ROM_WARM_ADRS是基于一個來自于ROM_TEXT_ADRS的偏移, 例如:

#define  ROM_WARM_ADRS             (ROM_TEXT_ADRS + 8)

新的SIO IOCTLs: 新的SIO IOCTL 代碼用來支持modem控制線路。 IOCTLs  例如SIO_OPEN和SIO_HUP當設備被打開和關閉時通知驅動程序。 而SIO_HW_OPTS_SET 和SIO_HW_OPTS_GET允許用戶管理字符長度、奇偶、停止位和modem 控制線路。 可選位 CLOCAL 禁止了modem 控制線路在驅動程序中的使用, 為了保持向后兼容性, CLOCAL選項在Wind River BSP中默認是選擇的。

Target.txt 文件被刪除: 文本格式的target.nr 文件(為Windows 宿主用戶而產生)已經被刪除了, 目前UNIX 和WINDOWS平臺均使用瀏覽器來閱讀HTML格式的文檔。 宿主工具refgen取得nroff的輸入并且產生HTML的輸出。

1.2          進行BSP開發的一些先決條件:

首先, 你應當有底層C和匯編語言的知識, 熟悉設備驅動, 熟悉中斷, 最好具有同硬件接口的軟件開發經驗, 另外, 你應當熟悉Tornado開發工具或者至少已經讀過了Tornado用戶指南。最后, 你應當有一個基于你的目標系統上所用的CPU的參考BSP, 這可以節省你的大量時間。

你也應當有一個適用于你的項目架構的模板BSP,以及模板驅動程序, 大部分客戶購買一個或多個設備驅動程序的源代碼。


]]>
基于LPC2104的VxWorksBSP設計http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1938&Page=1wangxinxin2010-12-1 10:34:57關鍵詞:VxWorks LPC2104 BSP ARM

VxWorks是一種商用嵌入式實時操作系統(RTOS)多年來,風河公司為用戶提供了一系列廣泛的板級支持包(BSP)。但是,隨著CPU的發展,用戶自己設計的硬件平臺越來越多,分散性越來越大,因此介于硬件平臺和操作系統之間的BSP的自主設備也日益緊迫。EasyARM開發板是廣州周立功單片機有限公司開發的基于飛利浦LPC2104型ARM7TDMI芯片的低價位學習板,具有128KB的Flash,16KB的RAM,滿足VxWorks運行的最低要求。 1 格式說明及格式轉換程序的制作

Tornado產生的目標代碼的默認格式是Motorola開發板的Flash下載工具只能下載Intel 32bit格式。必須將它們進行轉換才能將代碼寫入到Flash中去。下面以Motorola的S2格式為例說明格式的轉換。

S2的一種實際格式如下:

S0120000626F6F74726F6D5F726532E686578CF

S214000000060000EABD0300EAA50300EAB70300EA1B

S804000000FB

其中第一條是記錄的頭部。第二條是地址和對應的數據記錄,S2表示24位地址的格式,14表示起始地址000000和對應的數據及奇偶效驗對的總和。最后兩位表示所有十六進制數對的校驗和。最后一條是記錄的結束標志。 Intel 32 bit的一種實際格式如下:

:020000040000FA

:10000000060000EABD0300EABB50300EAB70300EA20

…………

:00000001FF

其中第一條是記錄的頭部,表示32位地址的高16位為0000。在第二條記錄中,:表示記錄的開始,10表示記錄對的個數,0000表示起始地址的值,最后兩位表示校驗和。最后一條是記錄的結束標志。

了解這兩種格式后,編寫格式轉換程序就是很簡單的一件事件。

2 BSP的設計過程及軟件仿真方法

2.1 駐留ROM/Flash的系統各段分配情況

由于LPC2104只有16KB的RAM,故只能程序代碼和數據放在Flash中,開機后再將數據拷貝到RAM內,而程序依然放在Flash中并在其中運行,即所謂的ROM Resident Image設計。在Tornado集成開發環境下,選取templatARM的BSP生成的bootrom_res.hex文件就是這種ROM_Resident文件,其代碼段、數據段、堆棧段分別在Flash和RAM中的情況如圖1。

Flash的分配和對應常量的定義

片內Flash的地址空間為0x00000000~0x00020000

ROM_TEXT_ADRS=00000000代碼段的起始地址

ROM_SIZE=00020000 Flash的大小

RAM的分配和對應常量的定義

片內RAM的地址空間為0x40000000~0x40003FFF

0x40000000~0x4000003F共64字節,放中斷向量表LOCAL_MEM_LOCAL_ADRS=0x400000000

RAM_LOW_ADRS=0x40000600

RAM_HIGH_ADRS=0x40000F00

LOCAL_MEM_SIZE=0x00020000

根據上面的分析,修改Makefile和config.h中相應的部分,使兩者一樣。

堆棧的分配

堆棧的地址設為STACK_ADRS,由系統定義,從RAM_LOW_ADRS開始向下伸展。

2.2 romlnit.s文件

ARM的異常向量表如表1。LPC2104的異常向量表也一樣,只不過它可以重新映射到RAM的頭部,即從0x40000000開始的32個字節。 表1 ARM異常向量位置

地 址異 常

0x0000 0000復位0x0000 0004未定義指令0x0000 0008軟件中斷0x0000 000C預取指中止(從存儲器取指出錯)0x0000 0010數據中止(數據訪問存儲器出錯)0x0000 0014保留0x0000 0018IRQ0x0000 001CFIQ *在ARM文檔中標識為保留,該位置被Boot裝載程序用作者有效的用戶程序關鍵字。

基于ARM體系結構的VxWorks的其中四個異常 入口函數為:excEnterUndef、ecxEnterSwi、excEnterPrefetchAbort、excEnterDataAbort。直接在對應的位置用B指令跳到對應的函數中即可。代碼如下:_ARM_FUNCTION(romInit)

_romInit:

ARM的異常向量表如表1。LPC2104的異常向量表也一樣,只不過它可以重新映射到RAM的頭部,即從0x40000000開始的32個字節。

基于ARM體系結構的VxWorks的其中四個異常入口函數為:excEnterUndef、excEnterSwi、excEnterPrefetchAbort、excEnterDataAbort。直接在對應的位置用B指令跳到對應的函數中即可。代碼如下:

_ARM_FUNCTION(romInit)

_romInit:

cold:

B start /*復位異常*/

B excEnterUndef /*未定義異常 */

B excEnterSwi /*軟中斷*/

B excEnterPreftchAbort/*予取指異常*/

B excEnterDataAbort /*數據異常*/

.ascii "20B9" /*保留空間,由格式轉換程序超填入0xB9205F80*/

LDR pc,[pc,#-0xFF0]/*IRQ中斷入口函數*/

B FIQ_Hander /*FIQ中斷入口函數*/

IRQ中斷函數的入口函數是C語言寫的sysClkInt()和sysAuxClkInt(),需要自己保存現場和恢復現場,代碼為:

_ARM_FUNCTION(TIME0_IRQ_Hander)

_TIME0_IRQ_Hander:

SUB LR,LR,#4 /*計算返回地址*/

STMFD SP!,{R0-R11,R12,LR} /*保存任務環境*/

MRS R3,SPSR /*保存狀態*/

STMFD SP!,{R3}

BL sysClkInt /*調用C語言的中斷處理程序*/

LDMFD SP!,{R3}

MSR SPSR_cxsf,R3

LDMFD SP!,{R0-R11,R12,PC}

_ARM_FUNCTION(TIME1_IRQ_Hander)

_TIME1_IRQ_Hander:

SUB LR,LR,#4 /*計算返回地址*/

STMFD SP!,{R0-R11,R12,LR} /*保存任務環境*/

MRS R3,SPSR /*保存狀態*/

STMFD SP!,{R3}

BL sysAuxClkInt /*調用C語言的中斷處理程序*/

LDMFD SP!,{R3}

MSR SPSR_cxsf,R3

LDMFD SP!,{R0-R11,R12,PC}

快速中斷函數VxWorks不用由用戶自己定義。其框架如下:其中FIQ_Exception()函數由C語言定義,在文件開始用globl FUNC(FIQ_Exception)聲明。

FIQ_Hander:

STMFD SP!,{R0-R12,LR}

BL FIQ_Exception

LDMFD SP!,{R0-R12,LR}

SUBS PC,LR,#4

當系統上電時,如果地址0x00000014內的數據是0xB9205F80,則從Flash的零地址開始執行,也就是執行romInit()函數。此函數將啟動方式BOOT_COLD放在R0中,作為romStart的參數,將系統設為SVC32模式,并禁止IRQ和FIR中斷,設置好系統堆棧指針跳到romStart()執行。驗證此部分程序執行情況的最簡單的一種方法是用匯編寫一段點燈程序,用以指令程序的執行情況。其中常量PINSEL0、PINSEL1、IODIR、SPI_IOCON可以頭文件templatARM.h中用define定義。

#define PINSEL0 0xE002C000

#define PINSEL1 0xE002C004

#define IODIR 0xE0028008

#define SPI_IOCON 0x00003DD0

我們設計的點燈程序如下。將其放在romInit.s適當的位置,可以定位程序的運行情況。

LDR r0,=PINSEL0

MOV r1,#0

STR r1,[R0],#4

STR r1,[R0]

LDR r0,=PINSEL1

MOV r1,#0

STR r1,[R0],#4

STR r1,[R0]

LDR r0,=IODIR

LDR r1,SPI_IOCON

STR r1,[R0]

在Tornado集成開發環境下,templatARM的BSP生成bootrom_res.bin文件后,可以借助ASD1.2的AXD反匯編調方式器進行單步仿真和調試。

2.3 sysLib.c文件

在這個文件中,主要是在sysHwInit()函數內實現系統外設的配置,中斷向量表的拷貝和重映射,系統定時器中斷向量的安裝,串口初始化等功能。在串口還沒有調通之前,可以借助上面提到的簡單點燈函數實現程序的定位。其用C語言重新定義如下(將它插入本文件的適當地址,可以指示各個函數的執行情況):

#include “LPC2106.h”

PINSEL0=0x00000000;

PINSEL1=0x00000000;

IODIR=0x00003DD0;

系統的初始化和配置與硬件系統高度相關。對這部分的代碼不作過多的解釋,請參看代碼注釋。幾個常量定義如下:

#define Fosc 11059200 /*晶振頻率,10MHz~25MHz應與實際一致*/

#define Fcclk(Fosc *4)

/*系統頻率,必須為Fosc的整數倍(1~32),且<=60MHz*/

#define Fcco (Fosc *4)

/*CCO頻率,必須為Fcclk的1、2、4、8倍,范圍為156MHz~320MHz*/

#define Fpclk (Fcclk/4)*2

/*VPB時鐘頻率,只能為(Fcclk/4)的1、2、4倍*/

2.4 templateTimer.c文件

本文件主要實現與系統時鐘和系統輔助時鐘相關的函數。關于系統時鐘的各函數定義如下(系統輔助時鐘的各函數與系統時鐘一樣,只須將T0換成T1即可):

/*SysClkInt(),此函數每個時鐘Tick被調用一次*/

void sysClkInt(void){

/*通知系統中斷結束*/

T0IR=0x01;

T0MR0+=(Fpclk/sysClkTicksPerSecond);

VICVectAddr=0;

/*調用系統中斷函數*/

if(sysClkRoutine!=NULL)

(*sysClkRoutine)(sysClkArg);

}

/*sysClkDisable()禁止系統時鐘*/

void sysClkDisable(void){

if(sysClkRunning){

/*禁止系統時鐘中斷*/

VICIntEnClr=0x10;

T0TC=0;

SysClkRunning=FLASE;

}

}

/*sysClkEnable()啟動系統時鐘*/

void sysClkEnable(void){

static BOOL connected=FALSE;

if(!connected){

/*定時器0初始化*/

T0TC=0;

T0TCR=0x01;

T0MCR=0x01;

T0MR0=(Fpclk/sysClkTicksPerSecond);

VICIntEnable=0x10;

Connected=TRUE;

}

if(!sysClkRunning){

T0TC=0;

sysClkRunning=TRUE;

}

}

3 應用程序設計

由于EasyARM開發板本身資源較少,不可能與PC機連接成宿主機一目標機的調試環境,通過主機將代碼下載到目標機再執行。因此在設計應用程序時,可以修改bootConfig.c文件中的bootCmdLoop()函數,生成bootrom_res.hex文件,格式轉換后,下載到Flash中運行,在PC機上借助串口調試助手打印調試信息。具體過程是:在Tornado2.2集成開發環境下選取Build->Build Boot Rom,BSP選定templateARM,Image選定bootrom_res.hex,編譯器選gnu,確認即可。

4 小結

VxWorks所需要的唯一的驅動程序是系統時鐘,本文詳細給出了系統時鐘源代碼,同時還給出了串口通信的源代碼,使得開發板與PC機能正常通信。另外,給出了基于VxWorks的應用程序的設計方法。由于BSP的設計本身就是一件很具有挑戰性的工作,相信本文對VxWorks的BSP設計得有所幫助。

]]>
VxWorks在AT91RM9200上的BSP設計http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1937&Page=1wangxinxin2010-12-1 10:33:20關鍵詞 VxWorks BSP 映像 ARM AT91RM9200

    VxWorks是美國Wind River公司開發的嵌入式實時操作系統,具有高性能、可裁減性好等特點,能支持多種微處理器(如PowerPC、X85、ARM、SPARC);自問世以來,以其良好的町靠性和卓越的實時性被廣泛地應用于通信、航空、航天等高精尖技術及實時性要求極高的領域中。BSP(Board Support Package,板級支持包)的作用是針對特殊的硬件平臺,為操作系統內核提供操作接口,使操作系統能夠獨立于底層硬件。對上層應用屏蔽具體硬件,VxWorks的高可移植性就是通過BSP實現的。AT91RM9200是Atmel公司生產的一款ARM9核芯片,本文重點介紹將VxWorks移植到該芯片過程中BSP的定制過程。

1 BSP概念
    BSP通常是指針對具體的硬件平臺,用戶所編寫的啟動代碼和部分設備驅動程序的集合。它所實現的功能包括初始化和驅動部分設備。最基本的BSP僅需要支持處理器復位、初始化、驅動串口和必要的時鐘處理。BSP是相對于操作系統而言的,不同的操作系統對應不同形式的BSP,因此,在寫BSP時一定要按照要求的操作系統對BSP的定義形式來寫。在VxWorks系統中,BSP是介于底層硬件環境和VxWorks之間的一個軟件接口,它的主要功能是系統加電后初始化目標機硬件和VxWorks,并提供部分硬件驅動程序。BSP在VxWorks系統中的層次關系如圖1所示。

圖片點擊可在新窗口打開查看

   BSP為各種板卡的硬件功能提供了統一的軟件接口,包括硬件初始化、中斷的捕捉和處理、硬件時鐘和定時器管理、內存地址映射,以及內存分配等。每個BSP還包括一個ROM啟動或其他啟動機制。

2 VxWorks的引導過程
   
在編寫BSP之前,首先要了解整個系統的啟動過程。VxWorks的映像由代碼段、數據段和BSS段3部分組成。VxWotks內核可以分為3種:可加載類型映像、基于ROM的VxWorks映像和RoM駐留型映像。這3種類型的映像組織是不一樣的,因此啟動過程有所區別。

    可加載映像包括VxWorks和Boot ROM兩部分內容,兩部分是獨立創建的。首先,由系統引導代碼把ROM引導程序搬到RAM_HIGH_ADRS。然后,ROM引導程序開始運行,將VxWorks映像加載到RAM_LOW_ADRS,之后跳轉到VxWorks映像裝入點。

    基于ROM的VxWorks映像在BSP初始化時,會把lmage完全搬到RAM中執行,包括代碼段和數據段。在拷貝執行完畢后,系統控制權轉移給RAM中VxWorks映像的初始化代碼。

    ROM駐留型映像只是將ROM中VxWorks映像的數據段和BSS段拷貝到RAM中,完成后系統控制權轉移給ROM/Flash里VxWorks映像的初始化代碼,代碼段留在ROM中并在ROM中運行。在ROM中運行的VxWorks映像主要足為了節省RAM空間,帶來的不利則是運行速度慢。

    圖2和圖3分別是下載型和ROM型VxWorks映像的初始化流程。

圖片點擊可在新窗口打開查看

下面以ROM型VxWorks內核啟動流程為例,說明各文件的作用:
    romlnit()保存啟動類型,屏蔽中斷;初始化內存和寄存器,屏蔽Cache;初始化CPU,將堆棧指針定位于被拷貝Boot ROM映像在RAM的地址;跳到romStart()。
    roraStart()根據不同的映像類型將VxWorks映像的不同部分解壓縮<如果需要)并加載到RAM中。
    usrInit() 對VxWorks映像的BSS段清零;調用intVecBaseSet()設置中斷矢量基地址表;調用excVecInit()初始化異常中斷矢量;調用sysHwInit()初始化系統硬件;調用usrKernelInit()初始化wind內核;調用kernellnit()啟動wind內核,啟動usrRoot()任務。
    usrRoot()設置操作系統時鐘,創建設備,安裝驅動,調用sysHwInit2()安裝系統時鐘和輔助時鐘中斷以及串口等設備的中斷,初始化I/O、文件系統、調用應用程序。

3 VxWorks在AT91RM9200上的BSP設計
3.1 AT91RM9200簡介
    AT91RM9200的片上資源包括:ARM920T處理器棱、16KB的內部SRAM和128KB的內部ROM存儲器;支持SDRAM、SRAM、Burst Flash和CompactFlash、SmartMedia以及NANDFlash的無縫連接;16KB的數據Cache,16KB的指令Cache,完全可編程的外部總線接口EBI,4個32位的PIO控制器可以達到122個可編程I/O引腳(每個都有輸入控制、可中斷及開路的輸出能力);帶有8個優先級、可單獨屏蔽中斷源的先進中斷控制器、6組硬件定時器、4個通用同步/異步收發器USART。

3.2 BSP中幾個重要文件的修改

    由于AT91RM9200的內核是ARM920T,所以BSP文件主要在VxWorks編澤環境Tornado的目錄target/config/all和target/config/integrator920t文件夾里。其中,a11文件夾里的文件對于絕大多數BSP都是共用的,一般來說不需要修改,特別是“configAll.h”;integrator920t文件夾里的文件就是所要編寫的BSP文件,這些文件往往與系統硬件密切相關。

3.2.1 修改Makeflie
    Makefile文件定義編譯和鏈接整個BSP的規則,如編譯工具的選擇、編譯選項和包含文件路徑等;控制生成VxWorks映像文件的類型,同時含有存儲區大小的信息,對于存儲區大小信息的改動必須與Config.h的對應改動同步。有些參數需在該文件中定義,如處理器類型、編譯工具、目標地址等。下面介紹一些須修改的參數和地址:

圖片點擊可在新窗口打開查看

4 編譯生成映像
   
系統定制完成后,有兩種編譯方式:一種是在Tornado下進行編譯,生成映像文件;另一種是直接用Make工具編譯,但要寫好腳本文件。裝載到目標板中的VxWorks映像取決于使用的下載方式,其中主要包括以下幾種:
    ①VxWorks。這是基于RAM的映像,VxWorks需要通過目標板上的引導程序從串口或網口把它下載到目標板的RAM中運行。在Tornado開發環境下,這是一個默認選項,主要用在調試階段。使用宿主機上的WindSh工具和符號表。
    ②VxWorks.st。這也是基于RAM的映像,需要通過引導ROM把VxWorks映像下載到目標機內存中才能執行。該對象文件內置符號表。
    ③VxWorkS_rom。這是一個非壓縮、基于ROM的映像。在這個對象文件執行前,先把自己拷貝到目標機RAM中。這種類型的映像通常在啟動階段速度比較慢,因為代碼在ROM中執行,但執行階段比ROM駐留型的映像要快。
    ④VxWorks.st_rom。這是基于ROM壓縮的VxWorks映像。它在執行前先把自己解壓并拷貝到目標機RAM中執行。
    ⑤VxWorks.res_rom。這是ROM駐留型的非壓縮VxWorks的映像。它在執行前把數據段拷貝到目標機RAM中。這種類型的映像在啟動階段比較快,但在目標機上執行的速度比基于ROM類型的映像慢(因為CPU訪問ROM比訪問RAM要慢)。通常在RAM空間比較小的目標機上使用這種類型的映像。

5 需要注意的問題
   
首先,應該避免在romInit.s中進行過多的初始化操作。該史件中只是進行必要的最小硬件初始化,大部分硬件的初始化都是在sysHwInit()中完成的。另外,romTnit.s中的代碼不應當被其他模塊或函數調用。

    其次,應該避免sysAlib.s中工作太少。BSP開發人員通常錯誤地認為在romInit.s里初始化過的設備不需要在sysAlib.s中重新初始化。實際上,VxWorks映像并不認為它是由引導映像程序引導的,因此,它必須重新設置和初始化所有它自己需要使用的設備。sysInit()是該文件中最主要的一個函數,也是第一個函數。該例程中很多工作與romInit()是相同的,目的是保證內核映像在運行與冷啟動時,軟硬件環境高度一致。

    最后,對特定的BSF。驅動程序的修改,只能在特定的BSP目錄下。此設計中目錄為target/config/integra-tor920t,不要直接在target/src/drv以及target/h/drv中修改。只有風河公司的源程序才能存放在這些目錄下。

6 結論
   
本文在介紹BSP的概念、作用和vxWorks映像分類以及系統啟動流程的基礎上,以Atmel公司生產的ARM9處理器AT91RM9200為例,重點介紹了VxWorks的BSP設計中需要修改的幾個重要文件,最后提出了需要注意的問題。盡管目標板硬件不同,BSP的實現也不盡相同,但基本思想是一樣的。本設計對各類開發板的系統移植和后續的應用程序開發有一定的參考價值。

]]>
基于VmWare的VxWorks BSP定制及調試環境構建方法http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1936&Page=1wangxinxin2010-12-1 10:31:53

<!--[if !supportLists]-->1          <!--[endif]-->概述

如圖1,嵌入式系統的調試方法一般為通過PC(宿主機)上的集成開發環境交叉編譯針對特定電路板(目標機)的程序,然后將程序通過目標板的JTAG、串口或網口等途徑下載到目標板上運行。因此,為了構造一個嵌入式系統的學習環境,擁有一塊包含CPU、存儲器及I/O電路的目標電路板往往是必要的。雖然許多集成開發環境附帶模擬軟件,但僅限于指令集的模擬,均無法模擬物理的目標機硬件平臺,因而在其上只能進行應用程序的象征性模擬開發。但是,并非所有人都能擁有一塊物理的電路板。在這種情況下,我們如何構造一個模擬的開發環境,其學習效果就如同擁有完全真實的電路板一樣呢?本文試圖解答此問題,主體內容包括四個方面:

<!--[if !supportLists]-->?         <!--[endif]-->利用VMware等軟件模擬真實的目標機;

<!--[if !supportLists]-->?         <!--[endif]-->構建VMware虛擬PC上VxWorks BSP,建立Bootrom和OS映像;

<!--[if !supportLists]-->?         <!--[endif]-->修改Tornado相關設置,連接宿主機與目標機,建立調試通道;

<!--[if !supportLists]-->?         <!--[endif]-->寫一個簡單的應用程序并下載到目標系統運行。

id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">


















o:title="" />
<!--[if !vml]--><!--[endif]-->

圖1 嵌入式系統的調試

本文工作的最終目標為:

(1)VxWorks在VMware啟動成功并順利運行,如圖2;

style='width:267pt;height:195pt'>
o:title="vxworks in vmware" />
<!--[if !vml]--><!--[endif]-->

圖2 在VMware中運行的VxWorks

(2)可在Tornado上針對目標板編譯程序并進行調試,如圖3。

style='width:334.5pt;height:231pt'>
o:title="tornado in run" />
<!--[if !vml]--><!--[endif]-->

圖3 與目標機建立調試通道的Tornado

<!--[if !supportLists]-->2          <!--[endif]-->模擬目標機

PC也具有目標機的所有特點,實際上,我們可以把PC作為嵌入式系統的目標機,從而構造如圖4所示的開發模型:

type="#_x0000_t75" style='width:182.25pt;height:59.25pt' o:ole="">
o:title="" />
<!--[if !vml]--><!--[endif]-->

圖4 PC作為目標機

很遺憾,這種方法實際上非常麻煩,同時開動兩臺PC進行調試將使你和你的室友飽受折磨。因此,我們可以借助VMware來在本機上虛擬出另一PC。

VMware的確是天才的作品!在同一PC上,利用VMware幾乎可以安裝所有的操作系統,而且操作系統之間的切換不需要重新啟動電腦。VM的意義是Virtual Machine,即虛擬出一個邏輯的電腦,它可以提供基于Intel CPU的虛擬PC系統環境,包括CPU、內存、BIOS、硬盤和其他外圍硬件設備。

下面我們講解用VMware來建立一臺虛擬PC的步驟:

(1)下載并安裝VMware;

(2)使用VMware向導建立一個針對VxWorks的虛擬機;

此步驟中注意在操作系統中選擇“other”,如圖5:

style='width:277.5pt;height:246pt'>
o:title="" />
<!--[if !vml]--><!--[endif]-->

圖5 選擇Other操作系統

由于目標機最終通過軟盤啟動,因此要求你的電腦具有軟驅。很遺憾,當年日常使用的軟盤如今成了古董,很少再有電腦配備軟驅。因此,我們再來制造一個假冒偽劣產品,虛擬一個軟驅。又一個天才的工具軟件RamDiskNT為我們提供了這一便利,圖6演示了用RamDiskNT虛擬一個1.44M軟盤的方法。

style='width:289.5pt;height:291.75pt'>
o:title="" />
<!--[if !vml]--><!--[endif]-->

圖6 虛擬軟驅和軟盤

僅僅虛擬一個軟驅是不夠的,把這個軟驅添加到我們建立的虛擬機中才算修成正果,圖7演示了添加軟驅后的虛擬機硬件設置。

id="_x0000_i1032" type="#_x0000_t75" style='width:414.75pt;height:319.5pt'>
o:title="" />
<!--[if !vml]--><!--[endif]-->

圖7 包含軟驅的虛擬機

<!--[if !supportLists]-->3          <!--[endif]-->構造BSP

<!--[if !supportLists]-->3.1         <!--[endif]-->下載和編譯網卡驅動

VMware為運行于其上的操作系統提供虛擬網卡支持,該網卡類型即為AMD的PC-NET。實際上,在Tornado開發包中已經包含了該類型網卡的驅動程序,但經過測試,對于VMware無法正常工作,所以需要從AMD的網站下載最新的驅動程序。

下載得到的是一個可執行的安裝程序,運行該程序將得到一個壓縮包和一個幫助文件,按照該幫助的要求,將壓縮包直接釋放到Tornado目錄下。如果提示是否允許覆蓋文件,則選擇允許。

此后按如下步驟完成驅動程序的編譯和替換:

(1)打開一個控制臺窗口,運行批處理程序:

C:\tornado2.2\host\x86-win32\bin\torVars.bat;

該批處理文件用于設置環境變量,其內容為:

rem Command line build environments

set WIND_HOST_TYPE=x86-win32

set WIND_BASE=C:\Tornado2.2

set PATH=%WIND_BASE%\host\%WIND_HOST_TYPE%\bin;%PATH%

       如果沒有設置成功,可以手工設置這些環境變量。

(2)定位到C:\tornado2.2\target\src\drv\end目錄,運行:

make CPU=PENTIUM tool=gnu ln97xend.o

(3)定位到C:\tornado2.2\target\lib\pentium\PENTIUM\common目錄,并將上一步生成的文件ln97xend.o復制到此目錄下。備份此目錄下的文件libdrv.a;

(4)運行命令arpentium -d libdrv.a ln97xEnd.o,刪除libdrv.a中原有的ln97xEnd模塊;

(5)運行命令arpentium -ra iOlicomEnd.o libdrv.a ln97xEnd.o將我們剛剛創建的新ln97xEnd模塊添加進去。

<!--[if !supportLists]-->3.2         <!--[endif]-->修改配置文件

我們要修改編譯VxWorks的配置頭文件Config.h中定義的一些參數,使編譯出來的系統引導程序和VxWorks的映象符合我們的要求;同時還要修改sysLn97xEnd.c這個文件,以使系統的網絡功能正常運行。

(1)定位目錄到C:\tornado2.2\target\config\pcPentium并打開該目錄下Config.h文件;

(2)查找到定義DEFAULT_BOOT_LINE宏的地方,修改預處理條件CPU == PENTIUM分支下的定義如下:

#define DEFAULT_BOOT_LINE \

"lnPci(0,0)your_host_name:d:\\vxWorks h=193.168.80.169 e=193.168.80.254 u=target pw=vxworks tn=target"

其中:

lnPci(0,0)指定了使用第0個網卡和第0個處理器,lnPci這個標識會因為使用的驅動程序不同而有所不同,但這里用lnPci就可以了;

host指定你的主機的名字,使用host就可以;

d:\\vxWorks指定了VxWorks映象下載的完整路徑(后面會有說明);

h=193.168.80.169是宿主機的IP地址,可以根據實際情況修改;

e=193.168.80.254是目標機的IP地址,可以根據實際情況修改;

u=target指定了FTP服務器的用戶名,這個FTP就是用來下載VxWorks映象的,后面還會提到;

pw=target是用戶名對應的口令;

tn=target指定目標機的名字,任意指定即可。

(3)指定網卡驅動程序

首先查找“Network driver options”這段文字,之后你可以看到在該注釋后面定義了一系列的有關網卡驅動的宏定義。注意保證INCLUDE_END和INCLUDE_LN_97X_END這兩個宏處于定義狀態(define),其他的宏都處于未定義狀態(undef),即:

/* Network driver options */

#define INCLUDE_END             /* Enhanced Network Driver Support */


#undef  INCLUDE_DEC21X40_END    /* (END) DEC 21×4x PCI interface */

#undef  INCLUDE_EL_3C90X_END    /* (END) 3Com Fast EtherLink XL PCI */

#undef  INCLUDE_ELT_3C509_END   /* (END) 3Com EtherLink III interface */

#undef  INCLUDE_ENE_END         /* (END) Eagle/Novell NE2000 interface */

#undef    INCLUDE_FEI_END         /* (END) Intel 8255[7/8/9] PCI interface */

#undef    INCLUDE_GEI8254X_END    /* (END) Intel 82543/82544 PCI interface */

#define INCLUDE_LN_97X_END      /* (END) AMD 79C97x PCI interface */

#undef  INCLUDE_ULTRA_END       /* (END) SMC Elite16 Ultra interface */


#undef  INCLUDE_BSD             /* BSD / Netif Driver Support (Deprecated) */


#undef  INCLUDE_EEX             /* (BSD) Intel EtherExpress interface */

#undef  INCLUDE_EEX32           /* (BSD) Intel EtherExpress flash 32 */

#undef  INCLUDE_ELC             /* (BSD) SMC Elite16 interface */

#undef  INCLUDE_ESMC            /* (BSD) SMC 91c9x Ethernet interface */

(4)包含PC_CONSOLE

缺省情況下,VxWorks系統是不接受外部輸入設備(如鍵盤)的輸入,也不向外部輸出設備(如顯示器)輸出數據。為了便于調試,我們必須改變它的這種缺省狀態。我們查找定位宏INCLUDE_PC_CONSOLE,然后保證其處于定義狀態(define)即可,即:

#define INCLUDE_PC_CONSOLE                /* PC keyboard and VGA console */


#ifdef INCLUDE_PC_CONSOLE

#   define PC_CONSOLE           (0)      /* console number */

#   define N_VIRTUAL_CONSOLES   (2)      /* shell / application */

#endif /* INCLUDE_PC_CONSOLE */

(5)修改sysLn97xEnd.c

打開C:\tornado2.2\target\config\pcPentium目錄下的sysLn97xEnd.c文件,先定位到“memory-mapped IO base”這段文字,然后將其前面的參數由pciRsrc[endUnit].bar[1]修改為NONE,保存即可,即:

 sprintf (paramStr, paramTemplate,

       endUnit,                     /* END unit number */

       NONE,     /* memory-mapped IO base */

       pciRsrc[endUnit].bar[0],     /* IO address space base */

       PCI2DRAM_BASE_ADRS,          /* host PCI mem. base */

       pciRsrc[endUnit].irqvec,     /* IRQ vector */

       pciRsrc[endUnit].irq,        /* IRQ number */

       LN97X_CSR3_VALUE,            /* csr3 register value */

       LN97X_OFFS_VALUE,            /* offset */

       LN97X_RSVD_FLAGS,            /* flags (reserved) */

       &ln97xStrDesc[typeIdx]       /* device description */

       );

<!--[if !supportLists]-->3.3         <!--[endif]-->編譯Bootrom和VxWorks映像

編譯Bootrom

打開Tornado開發工具,在Build菜單下選擇Build Boot ROM,選擇BSP為pcPentium,image類型為bootrom,工具為gnu,如圖8。點擊OK,Bootrom就會編譯。

style='width:254.25pt;height:154.5pt'>
o:title="" />
<!--[if !vml]--><!--[endif]-->

圖8 編譯bootrom

       編譯VxWorks映像

編譯生成bootrom后,還要創建一個VxWorks映象(image),也就是VxWorks操作系統本身的代碼,步驟為:

(1)創建一個“bootable VxWorks image”的工程,BSP 選擇pcPentium;

style='width:357.75pt;height:271.5pt'>
o:title="" />
<!--[if !vml]--><!--[endif]-->

圖9 建立基于pcPentium BSP的VxWorks映像

(2)選擇需要的VxWorks組件

如圖10,在這個例子中我們需要包括兩個重要的組件:Telnet server 和 Target shell。前者使我們可以通過Telnet協議登錄到VxWorks操作系統中;后者則可以讓我們通過命令行控制VxWorks系統。另外,需要把所有C++相關的選項都包含進去。

style='width:201.75pt;height:298.5pt'>
o:title="" />
<!--[if !vml]--><!--[endif]-->

圖10 包括Telnet server和Target shell組件

完成選擇后,即可開始編譯程序。到此我們已經生成了VxWorks的系統引導程序和運行時的代碼映象。這里還要提醒讀者,在你每次修改完系統的配置信息(如:config.h)后,都要重新創建一個工程來編譯VxWorks映象,以免出現代碼不一致的問題。將生成的名為“vxworks”的文件(在你創建的工程的目錄下)復制到D:\VxWorks目錄下。這個路徑是由上面我們所設置的DEFAULT_BOOT_LINE宏中的路徑參數決定的,必須保持二者一致。

<!--[if !supportLists]-->3.4         <!--[endif]-->創建引導軟盤

現在開始制作VxWorks系統引導磁盤,用于引導裝載VxWorks運行映象。定位目錄到C:\tornado2.2\target\config\pcPentium,插入您已經格式化好的軟盤,然后運行:

mkboot a: bootrom

該命令將在軟盤上建立VxWorks系統引導分區,并將引導程序復制到軟盤上。

 

<!--[if !supportLists]-->4          <!--[endif]-->建立調試環境

<!--[if !supportLists]-->4.1         <!--[endif]-->配置FTP服務器

這里的FTP服務器用于在系統成功引導后,下載VxWorks的運行時映象。我們這里使用Tornado開發環境自帶的FTP服務器。

如圖11,打開Tornado FTP Server,選擇“Security”菜單下的“Users/Rights”子菜單,創建User Name為“target”,修改“Home Directory”為D:\VxWorks目錄(此路徑由上面的DEFAULT_BOOT_LINE參數決定),同時修改口令為“target”,最后點擊“Done”按鈕完成修改。

style='width:291.75pt;height:140.25pt'>
o:title="" />
<!--[if !vml]--><!--[endif]-->

圖11 配置FTP服務器

為了便于調試,我們還要打開FTP Server的日志功能。選擇“Logging”菜單下的“Logging Options”子菜單,其中除了“Winsock Calls”外,讓其他選項全都處于開啟狀態。

保持FTP Server窗口處于打開狀態(這樣FTP服務器就處于運行狀態)。

虛擬機從軟盤啟動,接下來會下載服務器D:\vxworks映像,服務器的FTP會有相關的log,如圖12:

圖12 FTP服務器 id="_x0000_s1026" type="#_x0000_t75" style='position:absolute;left:0;
text-align:left;margin-left:9pt;margin-top:1.8pt;width:415.5pt;height:286.5pt;
z-index:-1;mso-position-horizontal-relative:text;
mso-position-vertical-relative:text' wrapcoords="-39 0 -39 21543 21600 21543 21600 0 -39 0"
o:allowoverlap="f">
o:title="Snap1" />

]]>
開發COLDFIRE5235開發板的VXWORKS BSP的過程總結。http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1935&Page=1wangxinxin2010-12-1 10:29:31COLDFIRE5235沒有BSP的開發模板,但是有5272的BSP,所以選用5272的BSP為模板。

1. 啟動。 COLDFIRE5235復位后,CS0選通,做為啟動設備。CPU從地址0讀入兩個LONG字,第一個為SP,另一個為PC的值。所以在FLASH映像中,至少前面兩個LONG字必須存儲對應值。另外一個就時PC值,可以在一開始賦值時就給其一個在FLASH中的地址,如0XFFE00008。也可以賦一個以0為基址的偏移給PC,如0X00000008,不過這樣賦值的話,必須在接著的代碼中用JUMP語句調到以0XFFE00000為基址的FLASH空間中去。

2. 調試手段。 剛開始運行時,沒有其他手段,就需要使用LED點燈,或者使用自己定義的串口輸出函數來進行調試。不過要注意的是,在VXWORKS中初始化串口后,注意考慮自己定義的串口函數和系統之間的沖突。

]]>
基于S3C44BOX的VxWorks BSP設計http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1934&Page=1wangxinxin2010-12-1 10:28:39

摘要  S3C44BOX固定的中斷管理模式與VxWorks的異常處理機制存在著沖突。本文分析VxWorks的異常處理機制后,提出一種解決方案,實現VxWorks在S3C44BOX上的BSP定制。該方案保留VxWorks原有的中斷處理機制,從而保證VxWorks移植后的穩定性和可靠性。
關鍵詞  VxWorks S3C44BoX  BSP  中斷處理機制

引 言
    VxWorks是現在所有獨立于處理器的實時系統中最具特色的操作系統之一。它支持的CPU包括:PowerPC、x86、MIPS、ARM等,其微內核Wind具有任務問切換時間短、中斷延遲小、網絡流量大等特點,是一個具有較高性能的標準嵌入式實時操作系統。此外,VxWorks操作系統還具有較好的可裁減性和易于移植等特點。

    S3C44BOX是韓國Samsung公司出品的一款ARM(Advanced RISC Machines)微控制器,CPU核心為ARM7TDMI。S3C44BOX具有非常豐富的外圍資源,集成LCD控制器、12C總線控制器、I2S總線控制器、2個串口控制器、2個通用DMA(Direct Memory Access)控制器、8個10位ADC(Analog to Digital Converter)通道、71個通用I/O引腳等,大大減少了系統成本,是各種學習板和開發板的首選ARM芯片

1 BSP概念
    BSP(Board Support Packet,板級支持包)是介于底層硬件和上層軟件之間的底層軟件開發包,它的主要功能為屏蔽硬件,提供操作系統的驅動及硬件的驅動,具體功能包括:
    ◆目標機硬件初始化,主要是CPU的初始化,為整個軟件系統提供底層硬件支持;
    ◆為操作系統提供設備驅動程序和系統中斷服務程序;
    ◆定制操作系統的功能,為軟件系統提供一個實時多任務的運行環境。

2 VxWorks啟動流程
    VxWorks的啟動涉及到兩個映像文件:Bootrom映像和VxWorks映像,其中每一類又可以再細分為壓縮、非壓縮、駐留ROM和非駐留ROM類型的映像。不同的映像對應的啟動流程也有所不同,但它們的基本流程是相同的,如表1所列。

圖片點擊可在新窗口打開查看

   

]]>
vxworks中斷服務程序http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1933&Page=1wangxinxin2010-12-1 9:35:05void pciInt (int irq ){
PCLlNT RTN *pRtn;
for (pRm = (PCI_INT_RTN*)DLL_FIRST(&pcilntList[irq]);
pRtn!=NULL;
pRtn =(PCI_INT_RTN*)DLL_NEXT(&pRtn->node))
(*pRtn->routine)(pRtn->parameter);
}
   當PCI總線上有中斷發生時,系統調用void pcilnt(int irq)函數,再由pciInt使用內部的鏈表來依次調用掛在該中斷上的ISR。如果某個ISR不能正常退出,就會影響到其它ISR的運行。在調試時為了檢查中斷向量是否已經和ISR可靠的連接上,可以在命令行上或程序中直接調用pciInt來查看ISR是否被觸發。在硬件確定的情況下,可以小心設計保證各個硬件使用不同的中斷,這樣對PCI上的設備也可直接使用intConnect來掛中斷。
        需要說明的是ISR掛上中斷向量的過程不是簡單的在向量表中設置中斷向量值。VxWorks除了設置中斷向量值以外,還在與中斷向量相連的ISR加上了一層薄薄的包裝,包括IsR執行前保存寄存器值.設置堆棧以及IsR執行后恢復寄存器和堆棧。在中斷頻繁的場合,系統中中斷堆棧有可能被耗盡而溢出。為了避免上述情況發生,必須修改系統的中斷堆棧大小,即在config.h中加入以下代碼:
#define INCLUDE_KERNEL
#define ISR_STACK_SIZE 0xl000 //表示系統中中斷堆棧的大小為4k
由于中斷處理程序的特殊性,中斷處理程序中不能使用可能導致阻塞的函數,如printf,semTake等,具體不可使用的函數列表可以在<<VxWoks Programmer Guide>>中查到。有時候為了調試方便,希望在ISR中打印一些信息,系統提供了一個與prinf等價的函數sysLog,該函數可接受7個參數。它是非阻塞的。比較而言,prinf函數要在打印任務完成后才返回,sysLog只把打印任務放到系統的打印隊列中就返回。在ISR中雖然不可以使用semTake,但可以使用semGive(互斥類型的除外)。一般使用semTake和semGive在ISR和普通程序間通信:當一個中斷產生,ISR 完成必要的任務后,調用semGive通知另外一個使用semTake等待ISR信號的任務,該任務收到semGive釋放的信號后,繼續完成ISR中不便處理的任務。 ]]>
VxWorks BSP和啟動過程http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1932&Page=1wangxinxin2010-12-1 9:33:10
1.定義:Board Support Package, Provides VxWorks with primary interface to hardware environment。

2.作用:

在通電后,初始化硬件;

支持VxWorks和硬件驅動通信;

使hardware-dependent 和 hardware-independent在VxWorks系統中很好的結合;

二.開發BSP主要的兩點:

系統image的生成,image的種類,image的download下載過程,系統的啟動順序和過程,調試環境的配置及遠端調試的方式和方法,相應BSP設置文件的修改(網絡,串口... ),BSP各文件的組成和作用。

要對系統底層驅動清楚,也就是對CPU及相關的硬件有所了解.主要是32微處理器(上電啟動過程, download image的方式方法,讀寫ROM,地址空間分配,MMU,寄存器,中斷定義,..).參照硬件資料,多讀一些源碼會有所幫助.



三.兩個主要兩個協議:

WTX協議(Wind River Tool eXchange): 用于開發機內部Tornado工具與Target Server之間通信.

WDB協議(Wind DeBug): 用于主機Target Server與目標機之間的通信.



四.主要BSP主要文件目錄的組成及主要文件的作用:

1.目錄target/config/All:

這個目錄下的文件是所有BSP文件共享的,不是特別需要不要更改里面的任何文件.

a. configAll.h:
缺省定義了所有VxWorks的設置.如果不用缺省的設置,可在BSP目錄下的config.h文件中用#define或#undef方式來更改設置.

b. bootInit.c:
在romInit.s后,完成Boot ROM的第二步初始化.程序從romInit.s中的romInit()跳到這個文件中的romStart().來執行必要的解壓和ROM image的放置.

c. bootConfig.c: 完成Boot ROM image的初始化和控制.

d. usrConfig.c: VxWorks image的初始化代碼.



2.目錄target/config/comps/src:

涉及系統核心的components,主要由target/config/All中usrConfig.c中函數調用.



3.目錄target/config/bspname:

包含系統或硬件相關的BSP文件.

a. Makefile 一些命令行控制images的生成。

b. README BSP發布紀錄,版本,總的文檔

c. config.h 包括所有涉及CPU主板的設置及定義(includes,definations),參見 BSP設置文件及生成下載

d. configNet.h 網絡驅動的主要設置文件,主要對END驅動設置.

e. romInit.s 匯編語言文件,是VxWorks Boot ROM和ROM based image的入口,參見 系統啟動部分

f. sysALib.s 匯編語言文件,程序員可以把自己的匯編函數放在這個文件里,在上層調用.VxWorks image的入口點_sysInit在這個文件里,是在RAM中執行的第一個函數.

g. sysLib.c 包含一些系統相關的函數例程,提供了一個board-level的接口,VxWorks和應用程序可以以system-indepent的方式生成.這個文件還能包含目錄target/config/comps/src的驅動.

h. sysScsi.c 可選文件用于Scsi設備設置和初始化.

i. sysSerial.c 可選文件用于所有的串口設置和初始化.

j. bootrom.hex SIC文件包含VxWorks Boot ROM代碼

k. VxWorks 運行在目標機上,完整的,連結后的VxWorks二進制文件.

l. VxWorks.sym 完全的,連結后帶有符號表的VxWorks二進制文件

m. VxWorks.st 完全的,連結后,standalone,帶有符號表的VxWorks二進制文件

注:

BSP用"make"來編譯連接生成(Created),而不是用Tornado的工具.

BSP和應用程序都可以在"make"或"tornade"上開發(developed)

BSP被設置包括以下驅動:

中斷控制interrupt controller,計時器timer(sys/aux),串口UART(serial),顯示屏LCD,鍵盤Keyboard(opt),觸摸屏touch-screen(opt)。

一.VxWorks Image的種類:

BSP默認的download VxWorks RAM image方式是從Ethernet. 串口電纜需要用來和開發板(COM1)通信,通過協議WDB.



可加載的映像( Loadable images) 可分為:
1.ROM-based images---compressed/uncompressed(只要一個映像)。

2.ROM-Resident images(BootRom + VxWorks Image 模式)。



BootRom中燒錄的映像:

VxWorks boot images---A VxWorks image designed to load another VxWorks images containing application code (often refer to as "boot code") ,"Burned" into ROM or loaded into Flash,Maybe execute in ROM/Flash (ROM-resident),Maybe execute out of RAM.



VxWorks映像(包含用戶程序) :

VxWorks images---A VxWorks image containing "end-user" code,

VxWorks映像又分為以下兩類:

1.Loadable VxWorks image--VxWorks images loaded by VxWorks boot image.

2.VxWorks ROM image--VxWorks image "burned" into ROM or loaded into Flash.May execute in Flash.



VxWorks Image文件類型的說明

1.Uploaded images(通過網口或串口下載到RAM):

vxWorks - basic Tornado, shell 和 symbol table 在主機端

vxWorks.st(文件很大)- 獨立的 image,包含shell和 symbol table在目標板運行

2.ROM based images(直接燒入ROM的VxWorks):

vxWorks_rom - Tornado in ROM,非壓縮, 在 RAM 中運行

vxWorks.res_rom_nosym - Tornado in ROM, 非壓縮,在 ROM 中運行

vxWorks.st_rom - Stand-alone in ROM, 壓縮, RAM 中運行

vxWorks.res_rom - Stand-alone in ROM, 非壓縮, ROM 中運行



VxWorks映像包含數據和程序段兩個部分

VxWorks images consist of:

1.Text segment---executable instruction.

2.Data segment---Initilized global and static varibles.





非BSP make文件中包括:

include $(TGT_DIR)/h/make/rules.library
include $(TGT_DIR)/h/make/defs.default(define default value for makefile)

...............

BSP make文件中包括: include $(TGT_DIR)/h/make/rules.bsp ...




一.系統啟動順序

VxWorks image

分為在ROM中運行和在RAM中運行兩種.兩者啟動順序的區別在于sysInit()函數的調用.該函數在RAM運行的VxWorks中初始化RAM。



1.ROM中運行的VxWorks :

VxWorks在ROM中運行,即寫入ROM中的VxWorks是非壓縮的,不需要解壓,系統直接跳到ROM的首地址,運行VxWorks.注意:ROM運行的VxWorks并不支持所有的主扳,應以主板手冊為準.

1.1執行順序

romInit.s的romInit()-->bootInit.c的romStart()-->usrConfig.c中的usrInit()-->sysHwInit()-->usrKernelInit()-->KernelInit(usrRoot,...)

1.2優點

VxWorks在ROM中運行主要是為了節省RAM空間,以便應用程序有更大的空間運行.只把VxWorks image的data段復制到RAM的LOCAL_LOW_ADRS, text部分留在ROM并在ROM中執行.

1.3缺點

ROM中運行的VxWorks缺點是運行速度慢.



2. RAM中運行的VxWorks

VxWorks在RAM中運行,即寫入ROM中的Boot或VxWorks Image是壓縮的,需要先解壓copy所有的text和data到RAM的LOCAL_LOW_ADRS中,下面sysInit()主要是初始化RAM用的,系統直接跳到RAM的首地址,運行VxWorks。usrInit()前面不壓縮,即romInit(),romStart()不能壓縮.

2.1程序執行順序

romInit.s中的romInit()-->bootInit.c中的romStart()-->sysaLib.s中的sysInit()-->usrConfig.c中的usrInit()-->sysHwInit()-->usrKernelInit()

-->KernelInit(usrRoot,...)



Boot或VxWorks image的text段或data段會從ROM復制到RAM,在RAM中運行。其中usrRoot()是VxWorks啟動的第一個任務,由它來初始化 driver,network等描述: romInit.s first execute in flash,minal initiliz,then jump to romStart.romStart() 開始裝載和解壓image到RAM,sysaLib.s是在RAM中執行的第一個函數.



BootROM image

BootROM image 最少的系統初始化,主要用于啟動裝載VxWorks image.一般有壓縮和不壓縮兩種形式,如bootrom和boot_uncmp.與VxWorks image的區別在于一個Bootrom調用bootConfig.c,而VxWorks調用usrConfig.c.



1.1程序執行順序

romInit.s中的romInit()-->bootInit.c中的romStart()-->文件bootConfig.c中的usrInit()-->sysHwInit()-->usrKernelInit()

-->KernelInit(usrRoot,...)



其中 /target/config/all/bootConfig.c是Boot ROM設置模塊.用于通過網絡加載VxWorks image.

usrRoot()-->bootCmdLoop(void)命令行選擇,或autobooting

-->bootLoad(pLine, &entry)加載模塊到內存(網絡,TFFS,TSFS...)

-->netifAttach()-->go(entry)-->(entry)()從入口開始執行,不返回.



1.2各個函數的主要作用

romInit() power up,disable interrupt,put boot type on the stack,clears caches.

romStart() load Image Segments into RAM.

usrInit() Interrupt lock out,save imformation about boot type,handle all the Initialization before the kernel is actually started,then starts the kernel execution to create an initial task usrRoot().This task completes the start up.

sysHwInit() Interrupt locked,Initializeshardware,registers,

activation kernel

KernelInit(usrRoot,...)

Initializes and starts the kernel.

Defines system memory partition.

Activates a task tUsrRoot to complete initalization.

Unlocks inierrupts.

Uses usrInit()stack.

usrRoot() 初始化內存分區表(memory partition library)

初始化系統系統時鐘(system clock)

初始化輸入輸出系統(I/O system)----可選

Create devices----可選

設置網絡(Configure network)--------可選

激活WDB目標通信(Activate WDB agent)---------可選

調用程序(Activate application)



VxWorks 在ROM中的情況

ROM 低地址位為沒有壓縮的romInit.s和romStart()在ROM的起始位置,系統power up后,從這個起始位開始執行,即執行romInit(),起始位置由硬件定義,一般為0x00000000。ROM 高地址位為壓縮的VxWorks Imgage

其中 RAM_LOW_ADRS, RAM_HIGH_ADRS 等一些地址在makefile 和BSP config.h中定義。
]]>
VxWorks實時操作系統下BSPhttp://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1931&Page=1wangxinxin2010-12-1 9:30:07
68 VxWorks實時操作系統下BSP
%A VxWorks實時操作系統下BSP
%A 丁大尉 煙臺大學 王金剛 宮霄霖 姜 平 天津大學
%A 摘要文中介紹實時操作系統V Works中BSP的概念,以及開發BSP必須要了解的交叉調試環境、系統的啟動過
%A 程、V works Image的分類以及BSP文件的組成等內容。
%A 關鍵詞 VxWorks lISP
%A The Concept of BSP in VxWorks
%A DiI1g Dawei Wang Jingang Gong Xiaolin Jiang Ping
%A Abstract In this paper,the concept of BSP in VxWorks,a real―time operating system are presented. It also described
%A the cross debug environment,the boot process of the system,the sorts of VxWorks Image and the composition of BSP files.
%A Keywords VxWorks BSP
%A 1 BSP
%A Vxworks操作系統是一種嵌入式實時操作系
%A 統(RTOS),它采用微內核的結構,可以運行于
%A 目前幾乎所有的CPU 上,包括intel x86、Power
%A PC、ARM、MIPS等, 但前提是必須有相應的
%A BSP (板極支持包)支持。BSP包含了與硬件相關
%A 的功能函數,提供Vxworks與硬件之間的接口,
%A 但是BSP不等同于硬件驅動。
%A BSP主要完成硬件初始化,包括系統上電時
%A 在特定位置提供人口代碼,初始化存儲器,關中
%A 斷,把VxWorks加載到RAM 區等; 支持Vx―
%A Works與硬件驅動的通信。有些硬件驅動是需要
%A 。BSP支持的,例如硬件驅動定義它的中斷服務例
%A 程(ISR),由BSP來將此ISR連接到中斷向量表;
%A 將獨立與硬件的軟件和與硬件相關的軟件在Vx―
%A Works系統中很好地結合起來。
%A 2 BSP開發
%A 做BSP開發,應首先建立Tornado開發環境,
%A 根據具體情況配置VxWorks組件;接著選擇合適
%A 的BSP模板,對相應的文件進行修改;最后添加
%A 自己的設備驅動程序,進行仿真和調試。
%A Tornado 2.2交叉調試環境嵌入式操作系統
%A 在調試環境上與桌面操作系統存在明顯的區別,它
%A 又稱為交叉調試。因為Tornado開發環境是基于
%A 架構的,所以選擇的時候要根據自己的處理器內核
%A 選擇合適的版本。因為我們使用的處理器
%A S3CA510B采用的是ARM 核, 所以我們選用Tor―
%A nado2.2 for ARM ,這就保證了使用的開發環境里
%A 包括了需要的開發工具以及同類的BSP參考模板。
%A ? /target/eonfig/all/eonfigAl1.h中包含所有
%A 的VxWorks組件選項, 可以在32程中對這些組件
%A 進行添加或者刪除。
%A 選擇BSP模板并對相應文件進行修改 Vx-
%A Works的板級支持包BSP提供了Vxworks同硬件
%A 環境的基本接口界面,支持對硬件驅動的訪問,將
%A Vxworks中硬件相關和硬件無關的軟件集成到一
%A 體,其功能相當于PC機的BIOS。它包括源文件、
%A 頭文件、make文件、導出文件和二進制的驅動模
%A 塊。
%A BSP主要由C源文件和匯編文件組成,BSP
%A 的開發可以從WindRiver公司提供的BSP模板開
%A 始,在此基礎上作相應的修改。主要需要做以下幾
%A 個方面的修改:
%A ① eonfig.h
%A VxWorks的缺省配置由eonfigAl1.h確定, 用
%A 戶需要按照自己的需要來改寫eonfig.h,如設置存
%A 儲區的大小、增加新的程序模塊、刪除不需要的模
%A 塊等。
%A ② makefile
%A 它控制生成VxWorks的映像文件的類型,另
%A 外它還包含存儲區大小的信息。所有新增加的程序
%A 模塊必須在makefile中使用MACH ―EXTRA 命
%A 令將其目標模塊加入到最終的VxWorks映像文件
%A 中。
%A ③ 編制專用接口驅動程序
%A VxWorks的缺省配置提供了通用接口的驅動
%A 程序,但是并不一定適合用戶具體的硬件環境,所
%A 以用戶需要使用ar-d命令將這些模塊從庫文件中
%A 刪除,然后將其源程序復制到用戶的BSP 目錄中
%A 進行修改,并在makefile中使用MACH―EXTRA
%A 命令將其目標模塊加入到最終的Vxworks映像文
%A 件中。
%A 維普資訊圖片點擊可在新窗口打開查看http://www.cqvip.com
%A 皇 量技術?2005年第一期 69
%A VxWorks Image的分類 VxWorks Image可
%A 以分為三類:ROM-based Image(壓縮或非壓縮);
%A ROM -Resident Image; Loadable Image
%A 。
%A VxWorks Image由Text段、Data段和BSS
%A 段組成,Text段是可執行代碼段,Data是已初始
%A 化的全局變量和靜態變量,BSS段是未初始化全局
%A 變量和靜態變量。
%A 對于不同的Vxworks Image,啟動步驟也不
%A 一樣。但對于三種Image,第一步是相同的,都是
%A 處理器跳到某一特定地址, 開始執行啟動代碼
%A (BootStrap)。它們都完成相同的功能:關閉中斷,
%A 初始化目標存儲器,裝載要運行的VxWorks Im―
%A age段到RAM 中。
%A RoM―Resident Image與ROM-based Image兩
%A 種Image都是用于產品階段, 即直接燒錄到ROM
%A 中。在開發調試階段, 這兩種Image由于需要頻
%A 繁的燒寫RoM 所以非常不方便。
%A Loadable
%A Image 是位
%A 于主機上的
%A 二進制文件,
%A 由燒錄在目
%A 標板RoM
%A 中的boot―
%A RoM Image
%A LoCAL MEM
%A LoCAL ADRS
%A RAM LOW
%A ADRS
%A FREE RAM
%A ADRS
%A RAM HIGH
%A ADRS
%A 將其從主機
%A 下載到目標 圖1 Loadable Image的下載過程
%A 板的RAM
%A 中。實際上,boot―RoM Image是一個高度裁減的
%A 最小Vxworks系統,它的唯一作用就是實現目標
%A 機與主機通信,將位于主機硬盤上的loadable Im―
%A age下載到目標板RAM 中, 執行情況如圖1。首
%A 先執行BootStrap,Bo otStrap完成最基本的硬件初
%A 始化工作, 并將boot―RoM Image拷貝到RAM ―
%A H IGH
%A ― ADRS處開始執行,把主機上指定位置的
%A Loadable Image下載到RAM ―LOW ―ADRS處,
%A 然后由此Image來接管目標板,Bo ot Program 已
%A 完成使命,它所占用的RAM 區由系統回收,作為
%A 系統內存池的一部分。另外,boot―RoM Image也
%A 可以是壓縮的, 在拷貝到RAM ―HIGH ―ADRS
%A 時進行解壓;也可以駐留在ROM 中執行,而只將
%A 它的Data段和BSS段拷貝到RAM ―HIGH ―
%A ADRS處。
%A 系統啟動順序 對于ROM-based Image和
%A ROM-Resident Image,其啟動順序如下:
%A rom Init () 一rom Start () 一sysInit ()
%A usrInit () ._+Kernellnit (usrRoot, ? ? )
%A 各函數的作用如下:
%A romInit():關閉中斷, 做盡量少的硬件初始
%A 化,使C程序得以運行。
%A romStart(): 將Vxworks Image拷貝到
%A RAM 中,如果需要則進行解壓縮;如果是ROMResident
%A Image, 則只拷貝Data段和BSS段。
%A sysInit():初始化系統中斷, 即把所有寄存
%A 器置為已知狀態, 并清除所有中斷。
%A usrInit():在文件usrConfig.c中,完成系統
%A 內核運行前需要完成的所有初始化,包括初始化
%A cache、BsS段清零、初始化中斷向量等。
%A Kernellnit():初始化并啟動多任務內核,開
%A 中斷,創建一個根任務usrRoot。
%A usrRoot(): 初始化I/O 系統,初始化系統時
%A 鐘,創建設備,安裝驅動,初始化網絡,調用用戶
%A 應用程序。
%A 驅動程序的開發 與BSP開發工具包一起發
%A 布的軟件中包含了各種類型驅動程序的模板,這些
%A 模板提供了所有驅動程序共用的邏輯結構,設計驅
%A 動程序時一般應該按照從上到下的順序。在完成對
%A 驅動程序的計劃,以及初步形成了由函數和數據結
%A 構構成的骨架之后, 就可以開始準備執行和測試
%A 了。這部分工作比較復雜,主要包括編寫代碼,測
%A 試、調試、重新編譯和性能測試等幾個步驟,請讀
%A 者參見參考資料l_1]。
%A 參考資料
%A 1 W ind River Systems, Inc. VxWorks BSP Developer s
%A Guide,5.5,Edition 1,DOC-14695一ND-00,U & A
%A 2002.
%A 2 Wind River Systems, Inc. VxWorks Programmer’s
%A Guide,5.5,Ed ition 1,1:)O(2-14617一ZD00,U. & A
%A 2002.
%A 3 陳翌,田 捷,王金剛.嵌入式軟件開發技術.北
%A 京:國防工業出版社,2003
%A 。爭‘奪 爭 奪 奪 奪‘奪 奪 奪‘奪 奪‘奪’奪 奪 奪 奪 奪 奪’奪 奪
%A .
%A 矗 侖
%A 妾 降低數據采集的成本 蕁
%A 立 毒
%A 羔 通過推出M系列DAQ產品,NI公司不每
%A 寸斷在擴展數據采集功能的同時降低設備的成jc
%A 乏本。實際上,盡管M系列產品增強了I/O的奪
%A 功能,不過同時每個I/0通道的成本也降低jc
%A 喜了30 9/6。M系列產品采用了以前DAQ產品÷
%A 寧所不具備的NI-STC 2,NI―MCal和NI―PGIA X
%A 毒技術,它還能和NI LabVIEW 和NI―DAQmx々
%A 寧測量服務軟件無縫地集成,從而具有更好的性
%A 毒能、更高的價值并提供更多的I/0。
%A . 奪.奪.奪.奪.奪.奪.奪.奪.奪.奪.奪.奪.爭.爭.奪.奪.奪.奪.爭.{-.{-.???啼一.奪t}
%A 維普資訊圖片點擊可在新窗口打開查看http://www.cqvip.com
]]>
基于PC104總線的VxWorksBSP設計http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1930&Page=1wangxinxin2010-12-1 9:24:40VxWorks的一種基于PC104總線的板載支持包,完成了相關的外圍驅動程序設計和調試工作。

[關鍵詞] PC104總線;VxWorks;集成開發環境Tornado;板載支持包BSP

1 引言

VxWorks是由美國的WindRiver推出的一種嵌入式強實時操作系統,它存在多任務調度的方式,可以管理多個外設,而且它可根據應用程序的需求對操作系統進行裁剪,最大程度的壓縮代碼,實現程序的優化。

Intelx86系列處理器的嵌入式應用一般是以PC104的形式出現的,PC104除包括PC/AT的所有標準功能外,它的CPU模塊還有一些獨特的優點:開發周期短、費用低、體積小、層疊連接、功耗小、模塊化、抗沖擊及震動能力強,工作及存儲溫度范圍寬、集成度高,可靠性高。

在PC/104總線設備上使用的數據存儲設備通常有硬盤和基于閃存技術的固態電子盤。由于嵌入式系統工作環境一般比較惡劣,硬盤在惡劣的震動條件下無法正常工作,而固態電子盤的工作范圍很寬,可以選擇相應環境下的器件(零下40℃到零上85℃),并且體積很小,適合嵌入式應用。本嵌入式系統中數據存儲設備采用了CE公司的CF(CompactFlash)卡,而在此軟硬件平臺上設計開發了嵌入式實時操作系統VxWorks的并基于PC104總線的板載支持包。

2 VxWorks板載支持包BSP設計

2.1 基于PC104總線設備的VxWorks操作系統映像開發

在實時操作系統VxWorks中,硬件抽象層是以板載支持包BSP的形式出現的。針對不同的處理器體系結構以及硬件環境設計不同的板載支持包,實時操作系統VxWorks就可以用于不同的硬件環境,大大減少了資源浪費。因為板載支持包同時具有硬件相關性和操作系統相關性,是一個介于硬件與軟件之間的軟件層次,包括了系統中的大部分與硬件相關的軟件模塊。VxWorks板載支持包BSP的設計概念使嵌入式實時操作系統VxWorks成為一個通用的嵌入式軟件開發包,使得相關的高層的嵌入式應用能夠有效地運行于特定的、應用相關的硬件設備之上,使嵌入式實時操作系統VxWorks的可移植性大大加強。

BSP與VxWorks操作系統的層次結構如下圖1所示:

圖1BSP與VxWorks操作系統的層次結構圖

基于PC104總線設備的VxWorks操作系統映像開發主要工作有3個方面:

①板載支持包設計與開發

VxWorks實時操作系統的板載支持包的開發通常提供一般模板程序,選擇一個相同處理器結構板載支持包進行設計。

②相關外圍硬件設備驅動程序

嵌入式系統是針對某一具體應用場合開發的專用系統,因此常常會使用到一些非標準的硬件設備,而VxWorks操作系統并不提供相關的外設驅動程序,使用時需自行開發相應的外設驅動程序。

③操作系統映像配置與生成

對VxWorks操作系統各個功能模塊進行配置,使其在滿足功能需求的條件下達到代碼量最小,同時也減少出錯的可能性。

2.2 BSP的基本功能及其啟動過程分析

VxWorks板級支持包BSP在功能上包含兩個部分:初始化和驅動程序支持。BSP提供了VxWorks同硬件環境的基本接口界面,并在上電時進行硬件初始化(包括中斷向量的初始化、定時器初始化、核心內存映象的加載等),支持VxWorks對硬件驅動的訪問,將VxWorks中軟件集成到一體,其功能相當于PC機的BIOS。

VxWorks內核的加載分為兩個步驟,第一個步驟是PCBIOS對bootrom的加載,第二個步驟是BSP引導映像bootrom對VxWorks操作系統映像加載。基本流程如下所示:

2.3 BSP中函數調用過程分析

BSP啟動操作系統的過程中,需要調用一列函數以完成對系統內存映像的加載,整個過程分析如下,RomInit函數初始化處理器,關閉高速緩存,關中斷,初始化內存。接著調用RomStart,把映像的數據段拷貝到RAM中去,然后調用usrInit()對Bss段清零,調用intVecBaseSet()設置矢量基地址表,調用excVecInt()初始化中斷以及異常的向量表,初始化系統硬件,調用usrKernelInit()初始化wind內核,最后執行流程執行到kernelInit(),kernelInit啟動wind內核。Wind內核的第一個任務是usrRoot它通過調用usrAppInit啟動用戶的任務,系統可真正啟動。

2.4 修改BSP設計概要

一般情況下,Tornado提供一些評估板的板載支持包,而PC104主機板是根據工作實際需要購買的,評估板的板載支持包不能夠直接使用,需要進行修改完善。可行的方法是:基于pc586的BSP作為模板進行適當修改,以滿足這款PC104主機板的特定硬件環境。

板載支持包通常存放在Tornado的安裝目錄下面,其路徑是Root/target/config/bspname,root代表tornado的安裝目錄。設計一個可用的新的板載支持包,必須對Tornado本身自帶板載支持包作一定的分析。pc586板載支持包主要包括一些C文件和一些匯編文件,它們是:config.h,configAll.h,Pc.h,sysLib.c,ctdt.c,sysNetif.c,mkboot.c。板載支持包的缺省配置是由configALL.h來確定的,用戶可通過config.h來改變缺省配置。缺省配置是按照處理器廠商的評估板外圍硬件進行系統配置,根據實際硬件環境,一般需要做一定的改動,通常會在config.h中進行,通過一系列的定義宏,完成系統配制工作。

要設計針對這個半物理仿真試驗的所選用的PC104主機板板載支持包,增加VxWorks對CF卡支持,需要做出較大改動的文件是config.h和configAll.h以及sysLib.c這3個文件,具體如下:

①在config/bspname/bspname.h中找到修改其CF卡的中斷號,因為一般中斷號0x9是預留給硬盤接口,為了避免產生中斷沖突,將#define ATA1_INT_LVL0x9,改為#define ATA1_INT_LVL0xf

②在config/bspname/sysLib.c中找到ATA_RESOURCEataResource[]={................PCMCIA................ }

修改為ATA_RESOURCEataResource[]={................IDE_LOCAL................. }

另外還需要改寫其他的參數,例如ATA1_CONFIG等。

③在config.h中,把#define SYS_WARM_ATA_CTRL 0改為#define SYS_WARM_ATA_CTRL 1這樣系統熱啟動后,就會從CF卡上的引導區上引導。

④在config.h中將#define SYS_WARM_TYPE SYS_WARM_FD/*warmstartdevice*/改為#define SYS_WARM_TYPESYS_WARM_ATA

⑤修改ataType數組使它和所選的CF卡的幾何參數(磁道,扇區,柱面等)相等。

將原來的ataTypes數組ATA_TYPEataTypes[ATA_MAX_CTRLS] [ATA_MAX_DRIVES]= {................{{761,8,39,512,0xff},/*ctrl1drive0*/...............};

改為ATA_TYPE ataTypes [ATA_MAX_CTRLS] [ATA_MAX_DRIVES]= {................{{984,16,4,512,0xff},/*ctrl1drive0*/...............};

這個參數可以在主機板的BIOS中查找到,進入BIOS后使用idedetection就可以查看到CF卡幾何參數,根據查到CF卡的幾何參數,就可以在sysLib.c中做出相應的修改。

2.5 BSP的調試

針對板載支持包的設計開發,VxWorks并沒有提供了非常好的調試手段,這樣就給調試BSP帶來的很大困難。所以在對BSP進行調試之前,盡量減少代碼量,通過改寫BSP目錄下Makefile來去除不需要的代碼編譯,然后再對BSP調試。調試的方式一般采用閃燈的方式,通過在有疑問的代碼之間插入閃燈的代碼,通過對I/O端口的可視LED訪問,觀察燈是否閃亮來判斷BSP的執行流程。

3 結束語

通過多次試驗的調試,最終設計出了基于PC104總線的VxWorks板載支持包。并應用于某型飛機燃油系統的智能化管理,實踐結果表明,這種方法是一種切實可行的方案。

]]>
Vxworks bsp的制作http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1929&Page=1wangxinxin2010-12-1 9:23:21用開始寫的驅動程序的文檔替代此文檔.

從該設備的概要開始.指出該驅動實現整個設備的部分還是全部細節.

描述所有該設備的操作模式,指出該驅動所實現的是哪種.

寫出該設備在BSP中創建和初始化的步驟.寫出可把該驅動定制為特殊硬件環境的所有宏(macros).

寫出所有可幫助用戶理解該設備如何工作和設備的接口.

模板概要:

這是一個串口驅動模板.可用來作為寫Vxworks5.3或更新版本的新驅動的起點.

這些驅動支持舊串口驅動沒有的新功能,首先,它們提供一個設置硬件選項的接口;

例如,停止位數,數據位,奇偶,等等.

其次,它們提供可用來提供串口線上的外部模式調試(如,ROM監視器調試)的輪巡通訊(polled communication)接口.通常只支持異步模式驅動. 貫穿整個文件,單詞"template"用來替換一個真實的設備名,按慣例采用廠商名的第一個字母加產品編號.例如,Zilog 8530 串口設備應一個名為Z8530——DUSAART

數據結構,好過TEMPLATE_DUSART.

數據結構

設備數據結構在文件 h/drv/sio/templateSio.h里定義。一個數據結構——TEMPLATE_CHAN被定義,為每個通道。具有多串口通道的設備也為整個芯片定義了一個數據結構.例如,此驅動有一個芯片級的,有兩個通道結構作為成員數據結構叫TEMPLATE_DUSART。

回調

傳輸準備就緒(transmitter ready)中斷調用服務采用回調至高層庫以獲得一個字符來傳送。 默認地,此驅動安裝不做任何事情的傀儡回調程序。使用此驅動的高層庫(例如,ttyDrv)將用SIO_INSTALL_CALLBACK控制命令(ioctl command)安裝自己的回調程序. 同樣,一個接受中斷處理采用回調來將字符傳給高層庫。

模式

理想模式下該驅動應支持輪巡和中斷模式,并可動態切換模式。但這并非必須。Vxworks可支持此設備上的tty設備,即使該驅動只支持

中斷模式.

增加動態模式切換允許當信息送至時將外部代理激活(例如,在第一楨時中斷). 對允許動態模式切換的驅動,注意驅動將在其輸入ISR中間被要求切換模式.一個驅動的輸入ISR看起來應如此: inChar = *pDev->dr;/@ 從數據寄存器里讀一個字符 @/ *pDev->cr = GOT_IT;/@ 承認中斷@/ pDev->putRcvChar (...);/@ 發送字符到高層 @/ /@ give the character to the higher layer @/ 如果該通道用作外部模式調試的通訊路徑,且接收的該字符是"幀結束"字符,則代理的回調會鎖定中斷,切換設備到輪巡模式,并使用輪巡模式下的設備片刻.此后代理會解鎖中斷,切換模式到中斷模式,并返回ISR. 特別地,回調能使兩模式切換,首先到輪巡模式然后到中斷模式,后返回. 這要求小心處理中斷處理內的回調。例如,在調用回調前你必須先承認中斷。

用法:

該驅動通常為BSP調用.該模塊里直接調用程序是 templateDevInit(), templateDevInit2(),templateIntRcv(), templateIntTx(), and templateIntErr(). BSP調用templateDevInit()來初始化或重啟芯片.它用intConnect()連接中斷處理(templateIntRcv, templateIntTx,和 templateIntErr). 連接中斷處理后,BSP調用templateDevInit2()來告訴驅動中斷模式操作已可行.

BSP: 按常規所有BSP特定的串口初始化在sysSerial.c(被sysLib.c包含)里進行, sysSerial.c實現至少4個函數:sysSerialHwInit(),sysSerialHwInit2(), sysSerialChanGet(),和sysSerialReset(),如下工作: sysSerialHwInit被sysHwInit調用來初始化串口設備.此程序將在調用能復位設備及安裝驅動函數指針的templateDevinit前初始化TEMPLATE_DUSART結構的所有板特定的區域(如,寄存器的I/O地址,等等).sysSerialHwInit還將執其他所有串口驅動所需要的過程,比如適當配置板上的中斷控制器. sysSerialHwInit2被sysHwInit2調用來用intConnect連接驅動的中斷處理.連接好中斷處理后,templateDevInit2的調用允許中斷模式操作開始. sysSerialChanGet被usrRoot調用來取得與串口通道號相關的串口通描述.該程序使用一個0-NUM_TTY之間的一個數為單一的參數.它返回一個指向相應通道描述——SIO_CHAN * 的指針,它正好是TEMPLATE_CHAN結構的地址. sysSerialReset被sysToMonitor()調用且會復位串口設備到一個不活動的狀態. 該驅動可通過重定義TEMPLATE_REG_READ和TEMPLATE_REG_WRITE宏來定制.這兩個宏用來訪問實際的芯片.如不定義,源代碼會假定用對所有寄存的read/write訪問來對設備進行簡單內存映射.

測試:

中斷驅動接口可用通常方法來測試.當它(測試信息,譯者如是猜測)來到時Vxworks打印到串口控制臺,于是看到加電后VxWorks輸出表示該驅動基本開始工作. VxWorks的Portkit測試也可用來進行更嚴格的測試. 輪巡接口容易被檢驗——你可調用通道的SIO_MODE_SET ioctllai使它進入輪巡模式.注意通常的打印工具不能在輪巡模式下與串口通道一起工作.一些代理必須執行輪巡循環來處理基于字符的字符輸入/輸出.這不是自動進行.當切換WDB串口線到輪巡模式時,WDB代理執行它自己的輪巡循環. 動態模式切換可用tornado工具來檢查.重新配置代理使用WDB_COMM_UDLP_SLIP通訊路徑(詳見VxWorks run_time Guide的配置章節). 如下開始wtxtcl %wtxtcl 從tcl提示符,連接到target server: wtxtcl.ex> wtxToolAttach 通知代理來轉換外部模式檢查回應是OK(0). wtxtcl.ex>wtxAgentModeSet 2 0 要求代理掛起系統(請求會以中斷模式傳到,但回應會以輪巡模式被傳送): wtxtcl.ex>wtxContextSuspend 0 0 0 在此時目標將被掛起.控制臺將顯示凍結(果板卡有一個控制臺設備),你不能"ping"目標的網絡接口.

恢復目標:

wtxtcl.ex>wtxContextResume 0 0 0 現在目標將重新運行,于是你能敲信息到控制臺(如果板卡有一個控制臺設備)并可從主機"ping"目標的網絡接口.

vxworks下bsp制作教程

1 vxworks概述

vxworks是WIND RIVER公司的產品。作為一種商用的嵌入式操作系統?vxworks擁有強大的功能和友好的用戶界面。與免費的嵌入式操作系統相比?商用操作系統經過嚴格的測試?具有良好的實時性?易用性和大量的文檔支持?但是它的源碼是不公開的并且價格昂貴;免費的嵌入式操作系統有很多?大都是linux的移植?公開源代碼?但缺乏文檔?要對照源碼進行開發。

2 BSP的流程

BSP流程分成兩部分。首先是位于BootRom中的Boot代碼?它的作用是實現配置硬件和啟動vxworks下載程序。接下來是下載后跳轉到vxworks的入口地址運行操作系統和應用程序。

流程入圖:

ROM中的啟動代碼部分:RomInit在文件在文件romInit.s中。它是運行的開始?實現這一部分是首先的。它實現判斷啟動類型?配置內核和非內核寄存器以及內存和外圍設備的讀寫時序?因此可以在此處加入內存檢測功能。在BSP中無法進行調試?只能通過閃燈實現云信正確與否的判斷。閃燈功能函數也要在此加入。判斷啟動類型和配置寄存器?這一部分不需要改動。配置內存和外圍設備讀寫時序?要進行改動。這一部分的SDRAM?ROM?FLASH?FPGA有相應的模板可以參考。它的實現是通過使用宏定義來實現的。但是要改動的話也不難?一般是改動空間大小的屏蔽位?讀寫位數?以及片選寄存器OR和BR。至于特殊外設的讀寫有待討論。內存檢測在這里實現較復雜?它根據相應的內存檢測算法實現。主要是對地址線和數據線的檢測。通過寫入數據再會讀出數據來判斷。使用"走步1"和"走步0"
算法。這一部分較多的依賴硬件?可移植性較差?根據自己的單板改動。閃燈在這一部分是強烈推薦的。因為閃燈才能定位程序的運行位置。閃燈函數可移植?一般要改動?因為燈可能接在不同的I/O口上。另外注意860SAR的PORT B是32位的。具體的端口見相應的CPU的I/O口的參數?配置相應的寄存器。

RomInit在函數結尾跳入RomStart。

RomStart在BootInt.c文件中。它是系統運行的第一個C函數。這一部分是Wind River公司提供的標準程序?一般不需改動。該函數是C的入口函數,由匯編程序調用,主要完成清內存,將ROM中的程序拷貝到RAM,解壓并跳至解壓后的程序處運行。UsrInit在BootConfig.c文件中。它主要是實現硬件的初始化。其中涉及到串口?網口的初始化?CONSOLE的配置等。其中串口和網口的配置BSP的重要部分?但860CPU對串口和王口有很好的支持?只要做很小的改動即可?串口很簡單?網口較復雜一些。UsrRoot在BootConfig.c文件中。它主要是實現vxworks文件的下載?并且跳轉到vxworks的入口地址。從而進入到操作系統中去。

VXWORKS文件中的代碼部分:

SysInit在sysAlib.s中。它是vxworks的啟動代碼。它與RomInit的作用相同?對于這個文件?我們一般不需要去改動它。UsrInit在Usrconfig.c中。它的作用與Boot中的UsrInit的作用相同?他們都調用SysLib.c中的子函數。實現相同的硬件初始化功能。UsrRoot在UsrConfig.c中。它的作用與Boot中的UsrRoot的作用類似。但是這里的UsrRoot是最終進入到應用程序中去。

]]>
嵌入式語音通信系統中VxWorks BSP的設計實現http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1928&Page=1wangxinxin2010-12-1 9:22:150 引 言
    當前普遍使用的DSP語音處理技術只能對語音進行簡單處理,不能適應語音業務的多樣化趨勢。本文介紹利用MPC860和VxWorks實現綜合語音通信平臺,支持多板卡、多路語音實時傳輸,可擴展多路語音共聽功能。利用MPC860的通信和信號處理功能,且Vx-Works具有占用空間小、執行效率高、方便進行個性化定制和較好的兼容性等特點,所以該綜合語音通信平臺在功能、硬件結構、體積、功耗以及靈活性上具有較大優勢。
    在設計中盡量采用嵌入式開發中的常用器件,以便稍加改動即可應用于其他設計。可以根據實際需要更改系統中語音通道的數目和擴展多路語音共聽功能等。

1 系統結構及工作原理
1.1 系統組成及特點

    整個通信平臺由語音通信處理主板和語音采集回放子板組成。語音通信處理主板包括CPU MPC860、FLASH存儲器、SDRAM存儲器、10/100Mb/s網絡接口、RS 232串口、BDM調試接口、Console接口、供電和復位電路及120pin連接器。通信處理主板的核心MPC860是Motorola公司的一款由MC68360演變而來的通用單片集成嵌入式微處理器,適用于通信和網絡系統。該微處理器內部有兩個處理器:PowerPC和32位RISC處理器。PowerPC核同內存管理單元(MMU)、指令和數據Cache一同處理高層次應用,CPM則負責完成低層數據通信。兩個處理器主要通過共享內存交互。通信處理模塊利用SCC,SMC,SPI和I2C串行通道與外部設備通信,其中SCC和SMC支持時分復用。設計中,SCC工作在QMC協議Trans-parent Mode。通信處理模塊(CPM)新增了數字信號處理(DSP)功能。語音采集回放子板由語音采集電路、語音回放電路、基于FPGA實現的通信控制器和與語音通信處理主板連接的120pin連接器組成。
    由于MPC860的數據傳輸速度相比ADC和DAC要快很多,設計相應的邏輯電路控制語音的采集和回放、協調MPC860和數據采集、回放電路之間的通信是保證系統正常工作的關鍵。文中設計了基于Altera公司的CycloneⅡEP2C8芯片實現的通信控制器來解決這一問題。
    將通信平臺分為語音通信處理主板和語音采集回放子板分別設計實現,是為了降低系統開發難度和便于系統維護、升級和擴展。例如語音通信處理主板無需改動即可利用已有的連接器、FEC網絡接口和SDRAM存儲器等資源與視頻編解碼芯片、視頻壓縮/解壓縮芯片組成網絡視頻服務器。
1.2 功能結構和工作原理
   
語音通信處理主板的功能結構如圖1所示。

圖片點擊可在新窗口打開查看

    系統上電后,語音通信處理主板復位電路產生復位信號,MPC860接收到復位信號后,跳轉到0X100處開始執行啟動代碼。按照BSP配置逐步執行CPU初始化、板上其他硬件電路的初始化、操作系統運行所需數據結構的初始化、啟動VxWorks WIND內核、創建UserRoot任務、初始化系統中用到的可選擴展模塊(如I/O系統、文件系統、網絡協議等)、創建任務usrAppInit(),此時語音通信平臺準備就緒,可以執行語音通信任務。采集板的功能結構如圖2所示,語音通信處理主板啟動完畢后,語音采集回放子板可在通信控制器控制下采集和回放語音,并對語音數據進行壓縮編解碼和IP封裝、解封裝處理。

圖片點擊可在新窗口打開查看

1.3 數據處理流程
   
MPC860T和ADC AD7825,DAC AD7305之間的通信由通信控制器控制。通信控制器由數據緩沖區(Rx FIFO,Tx FIFO),基于FSM(有限狀態機)實現的控制邏輯(Rx control,Tx control)和8位串并、并串轉換器,時鐘電路組成。其數據接收過程為:接收控制邏輯(Rx control)控制ADC AD7825將各個通道的語音數字化,并把轉換結果存入接收緩沖區(Rx FIFO),直至Rx FIFO滿時Rx control開始向MPC860T提供周期性幀同步信號,頻率為32 kHz。MPC860在幀同步信號和時鐘信號的驅動下讀取Rx FIFO中的數據到SCC數據接收緩沖區。Rx FIFO讀空(即讀指針追上了寫指針)后,Rx control停止向MPC860發送幀同步信號終止數據傳輸,同時向MPC860發送中斷信號IRQ3,MPC860響應中斷把數據從接收緩沖區讀到接收ring buffer中等待應用程序處理。其數據發送過程為:MPC860完成IP解封裝、解壓縮后的語音數據將會在檢測到發送緩沖區可用時,輸出到SCC發送緩沖區,通信控制器提供發送幀同步信號驅動數據傳輸到Tx FIFO(發送緩沖區),待到Tx FIFO滿時停止發送幀同步信號。數據發送完后,CPM會清零,TxBD)中的R位表示MPC860可向SCC發送緩沖區中裝入新的數據,為下次傳輸做準備。
1.4 QMC通信協議
    多通道控制器(QUICC Multichannel Controler,QMC)是為了實現時分復用數據傳輸而設計的,它可以把時分復用幀的數據分發到多達64個邏輯通道。該模式下把每一幀的數據劃分成若干個時隙(Timeslots),每時隙8 b。在時隙分配表中規定每時隙數據從屬于某個通道,每個通道都有一組特定的緩沖區描述符和相應的緩沖區。一個時隙的數據在收發時被放置在特定的緩沖區里,MPC860T就可把分散的數據聚集在一起發送,或把聚集在一起的數據分發到各自專用的緩沖區,而不需要額外的處理來區分各種各樣的數據流。

2 BSP 設計實現
    設計中軟件開發主要包括啟動代碼的編寫、操作系統的移植、硬件驅動程序和語音編、解碼和IP封裝、解封裝應用程序。篇幅有限,本文僅介紹BSP移植。BSP即板級支持包,其功能為硬件、軟件初始化、工程影像的下載和設備驅動等。
2.1 BSP的定制
    無論是BootRom還是VxWorks都要使用BSP代碼,BSP定制需要根據硬板配置、系統設計需求、軟件功能等實際情況。實際開發過程中,為了縮短產品開發周期,通常以WINDRIVER公司的BSP模板或者第三方公司提供的可供參考的BSP為基礎,根據軟硬件具體配置進行修改,添加新的程序驅動新增硬件和功能。本課題中先把APC860開發板的BSPMPC860TEVB拷貝到installdir:\Tornado\target\collfig\ppcs860目錄下,主要做下列修改。
2.1.1 config.h文件
    根據實際情況,需要修改啟動行,內存地址、容量等配置,修改部分代碼如下:

    圖片點擊可在新窗口打開查看
2.1.2 makefile文件的修改
    makefile文件的修改,部分程序如下:

    圖片點擊可在新窗口打開查看

]]>
PowerPC VxWorks BSP分析6——image加載http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1927&Page=1wangxinxin2010-12-1 9:20:301 VxWorks加載
1.1 從TFFS文件系統加載
Tornado的TrueFFS是和VxWorks兼容的一種M-Systems Flite實現方式,它為種類繁多的flash存儲設備提供了統一的塊設備接口,并且具有可重入、線程安全的特點,支持大多數流行的CPU構架。有了Tornado的TrueFFS,應用程序對 flash存儲設備的讀寫就好象它們對擁有MS-DOS文件系統的磁盤設備的操作一樣。
如圖18所示,TrueFFS由核心層(core layer)和三個功能層,翻譯層(translation layer)、MTD層(MTD layer)、socket層(socket layer)組成。
clip_image002
圖18 TrueFFS層結構布局
核心層(Core layer):核心層主要起相互連接其他幾層的功能。同時它也可以進行碎片回收、定時器和其他系統資源的維護。通常WindRiver公司將這部分內容以二進制文件提供。
翻譯層主要實現TrueFFS和dosFs之間的高級交互功能。它也包含了控制flash映射到塊、wear-leveling、碎片回收和數據完整性所需的智能化處理功能。目前有三種不同的翻譯層模塊可供選擇。選擇哪一種層要看你所用的flash介質是采用NOR-based,還是NAND-based,或者SSFDC-based技術而定。
Socket層則是提供TrueFFS和板卡硬件(如flash卡)的接口服務。其名字來源于用戶可以插入flash卡的物理插槽。用來向系統注冊socket設備,檢測設備拔插,硬件寫保護等。后面將詳細講解它的功能。
MTD層(Memory Technology Drivers)功能主要是實現對具體的flash進行讀、寫、擦、ID識別等驅動,并設置與 flash密切相關的一些參數。TrueFFS已經包含了支持Intel、AMD以及samsung部分flash芯片的MTD層驅動。新的芯片需要新的 MTD支持,你可以使用一個標準的接口來加入這些驅動。
以上四部分,我們通常要的工作就是后兩層。
MX29LV160BT芯片上建立TrueFFS文件系統
1.配置相關文件
在此,以Nor Flash MX29LV160BT為例,開發工具為Tornado2.2 for PPC。要在VxWorks映像中包含 TrueFFS文件系統,首先必須在config.h文件中定義INCLUDE_TFFS。這使得VxWorks的初始化代碼調用tffsDrv()來創建管理TrueFFS所需的結構和全局變量,并為所有掛接了的flash設備注冊socket組件驅動。在鏈接的時候,通過解析與tffsDrv()相關聯的符號(symbols)可以將TrueFFS所必需的軟件模塊鏈接到VxWorks映象中。
為了支持TrueFFS,每一個BSP目錄下都必須包含一個sysTffs.c文件。它將TrueFFS所有的層(翻譯層,socket層和MTD 層)鏈接到一起并和VxWorks綁定。因此,必須編輯這個文件并決定哪一種MTD和翻譯層模塊應該包含到TrueFFS中。即:
#define INCLUDE_MTD_MX29LV /* MX29LV160BT MTD driver */
#define INCLUDE_TL_FTL /* FTL translation layer */
#define FLASH_BASE_ADRS 0x2a10000 /* Flash memory base address */
#undef FLASH_SIZE
#define FLASH_SIZE 0x001f0000 /*Flash memory size, 2M (parameter block) */
其他無關的MTD driver包含頭都#undef掉,同時定義Flash在系統中的基地址和大小。另外,還必須編輯sysLib.c中的 sysPhysMemDesc[ ]數組,將Flash基地址和大小加入到MMU中,以供將來訪問Flash,否則訪問Flash會失敗。如果BSP目錄下沒有sysTffs.c文件,那么我們可以從其他BSP目錄下拷貝一個即可,然后做上述修改,其他的內容基本可以不用修改。
接下來需要修改tffsConfig.c文件,為了方便管理,通常我們將src/drv/tffs/目錄下該文件拷貝到我們BSP目錄下,然后再做出修改。在MTDidentifyRoutine mtdTable[]表中加入如下語句:
#ifdef INCLUDE_MTD_MX29LV
mx29lvMTDIdentify,
#endif /* INCLUDE_MTD_MX29LV */
并在該文件開頭聲明。
#ifdef INCLUDE_MTD_MX29LV
FLStatus mx29lvMTDIdentify (FLFlash vol);
#endif /* INCLUDE_MTD_MX29LV */
最后就是將我們的flash相關MTD驅動加入到makefile中。即:
MACH_EXTRA = mx29lvMtd.o
為了方便我們調試MTD驅動,應該在重新編譯VxWorks映象前將諸如格式化flash、創建TrueFFS塊設備、綁定此塊設備到dosFs所必要的功能包含到VxWorks映像中。比如如下定義:
#define INCLUDE_TFFS
#ifdef INCLUDE_TFFS
#define INCLUDE_TFFS_DOSFS
#define INCLUDE_TFFS_SHOW
#define INCLUDE_DOSFS /* dosFs file system */
#define INCLUDE_SHOW_ROUTINES /* show routines for system facilities*/
#define INCLUDE_TL_FTL
#define INCLUDE_IO_SYSTEM
#define INCLUDE_DISK_UTIL
#endif /* INCLUDE_DOSFS */
2.MTD驅動
做了上述配置后,進入VxWorks操作系統后,我們在shell上利用tffsShow工具來顯示flash的信息。TffsShow函數最終會調用 MTD驅動中的mx29lvMtdIdentiy( )函數,在mx29lvMtdIdentiy ( )函數主要是通過讀取MX29LV160BT芯片的設備和廠商ID來識別它,然后對FLFlash結構成員進行初始化,最主要的幾個參數是:
type:Flash內存的JEDEC ID號;
erasableBlockSize:Flash內存的擦除塊大小(字節)。設置這個值時應考慮到interleaving。因此,通常通過如下方法來設置它的大小;
Vol.erasableBlockSize = MX29LV_MTD_SECTOR_SIZE * vol.interleaving;
對于MX29LV160BT,MX29LV_MTD_SECTOR_SIZE為64K字節;
chipSize:使用來構建TrueFFS文件系統的flash實際大小(字節);
noOfChips:使用來構建TrueFFS文件系統的flash實際片數;
interleaving:Flash內存交叉因子(interleaving factor)。即擴展數據總線的設備數。比如,一個32位數據總線上,我們可以使用4片8位或2片16位的設備;
map:指向flash內存映射(map)函數。該函數將flash映射到內存區;
read:指向flash內存的讀函數。在MTD驅動識別函數中,這個成員函數已經被初始化為缺省的讀函數。通常情況下,我們不需要再初始化它,否則還需要修改很多相關的函數;
write:指向flash內存的寫函數。這個成員必須初始化,這是我們要做的一個重要工作;
erase:指向flash內存的擦除函數。這個成員必須初始化,這也是我們要做的一個重要工作。
針對FLFlash結構成員,我們所關心的兩個函數就是寫和擦除函數。在mx29lvMtdIdentiy()函數中必須有如下定義:
vol.write = mx29lvWrite;
vol.erase = mx29lvErase;
在mx29lvWrite()函數中主要是實現將數據寫到flash中。首先需要對扇區進行解鎖,然后寫入寫命令,之后才能進行數據的寫入。最后需要判斷數據是否寫完。為了確保操作成功,我們應該在寫完每個數據后進行數據的比較,比較正確后方能進行下一個數據的操作。
在mx29lvErase()函數中主要是實現flash扇區的擦除。如今的flash一般都是按照扇區進行擦除操作的。在擦除操作之前也應該首先對扇區進行解鎖,然后寫擦除建立和扇區擦除命令。擦除成功后,flash中的內容應該是0xffff。所以為了確保成功,我們還是應該在擦除后進行比較,比較正確后方能進入下一個扇區的擦除操作,否則返回擦除錯誤標志。
所以,對于MTD驅動的調試,基本上就是調試寫和擦除兩個函數。在調試過程中,我們可以在這兩個函數相應位置加入打印語句來調試。為了能調試這兩個函數,我們通過在shell上輸入命令tffsDevFormat來格式化flash, tffsDevFormat最終會調用mx29lvErase和mx29lvWrite函數,如果成功就會返回0,否則返回-1。當然也可以調用 tffsDevCreate函數來驗證我們的寫和擦除函數的正確性。圖19說明了tffsDevCreate調用過程。
clip_image004
圖19 tffsDevCreate()調用過程
在shell上利用tffsShow來驗證mx29lvMtdIdentiy。
&gt; tffsShow
0: socket=RFA: type=0x2249, unitSize=0x10000, mediaSize=0x1f0000
value = 49 = 0x31 = "1"
說明已正確識別到MX29LV160BT設備,設備號為0x2249。
建立TFFS設備
1.掛接設備名
MTD驅動調試成功后,我們就可以給flash設備掛接上dos設備名,如下操作:
格式化:
&gt;    tffsDevFormat 
value = 1
&gt;    usrTffsConfig 0,0,”/tffs0”
value = 0
然后通過devs來查看掛接的設備名:
&gt;    devs
drv name                
  0 /null               
  1 /tyCo/0             
  1 /tyCo/1             
  5 host:               
  6 /pty/rlogin.S       
  7 /pty/rlogin.M       
  3 /tffs0/             
  8 /vio                
value = 25 = 0x19
看到/tffs0/說明掛接設備已經成功,接下來就可以利用dosFs文件系統相關命令來操作flash了。如,ls、copy等。
用代碼來完成上述過程:
STATUS flashInit(void)
{
STATUS rc = OK;
if (tffsDrv() != OK)
{
printf("Could not initialize.\n");
return (ERROR);
}
#if 0
printf("Attaching to flash file system... ");
#endif
dosFsInit(NUM_DOSFS_FILES); /* initialize DOS-FS */
if (usrTffsConfig(driveNumber1, 0, SYS_BASE_FS) == ERROR)
{
printf("\ncore file system not exist.\n");
rc = sysTffsFormat(0, 0, 0, SYS_BASE_FS, 0, 0, 0);
}
return rc;
}
上述代碼中的sysTffsFormat()會調用tffsDevFormat()進行格式化操作,如:
tffsDevFormat(driveNumber, (int)params);
params為tffsDevFormatParams結構體指針,即格式化參數,如:
#define TFFS_FORMAT_PARAM_WITH_ROOM_FOR_CONFIG_WORD \
{{1, 99, 1, 0x10000l, NULL, {0,0,0,0}, NULL, 2, 0, NULL}, FTL_FORMAT_IF_NEEDED}
而函數usrTffsConfig( )則將tffsDevCreate( )和dosFsDevInit( )進行了合成,是一個快捷函數。
2.從Flash中啟動并下載VxWorks映像
要從flash中下載VxWorks映像,首先需要把VxWorks映像拷貝到flash中,在shell中的操作命令為copy “VxWorks”,“tffs0/VxWorks”,然后修改config.h文件中引導行,如下:
#define DEFAULT_BOOT_LINE \
"tffs=0,0(0,0)host:/tffs0/VxWorks h=192.168.0.153 e=192.168.0.154 u=target pw=target o=cpm"
修改完后,重新編譯生成bootrom_uncmp.bin,并把它燒寫到flash中。然后重新啟動,即可看到如下啟動畫面:
boot device          : tffs=0,0
unit number          : 0 
processor number     : 0 
host name            : host
file name            : /tffs0/VxWorks
inet on ethernet (e) : 192.168.0.154
host inet (h)        : 192.168.0.153
user (u)             : target
ftp password (pw)    : target
flags (f)            : 0x0 
other (o)            : cpm
Attaching to TFFS... done.
Loading /tffs0/VxWorks...894304
Starting at 0x10000...
Development System
        VxWorks version 5.5.1
        KERNEL: WIND version 2.6
        Copyright Wind River Systems, Inc., 1984-2003
    CPU: Motorola ADS - PowerPC 860.  Processor #0.
    Memory Size: 0x1000000.  BSP version 1.2/5.
    WDB Comm Type: WDB_COMM_END
                 WDB: Ready.
到此,說明引導成功。flash整個TFFS文件系統就已經建立成功。
在一片FLASH同時裝載BootRom、VxWorks文件
我們將Flash地址映射成兩個地址段,一段用做BootRom,一段用做VxWorks使用,用做BootRom的地址段為0xFFF00000~0xFFF80000,另外一段用做VxWorks的地址段為0x04080000~0x04800000(假設此Flash大小為8M大小),在 0xFFF00000~0xFFF80000地址段寫入BootRom,在0x04080000~0x04800000地址段寫入VxWorks,加電后,PC指針會跳到0xFFF00100地址執行第一條指令,引導BootRom起來并最終VxWorks系統引導成功。實現過程:
1.片選(?)
在romInit.s文件中要做如下的片選操作,片選0為BOOT Flash的地址片選,片選1為Flash的地址片選,其中ROM_BASE_ADRS為0xFFF00000
/* -------------------------------------------------------- */
/* Initialize Chip Select 0 for Bootrom */
/* ------------------------------------------------------------- */
lis r5, HIADJ( ROM_BASE_ADRS | BR_PS_8 | BR_WP | BR_V)
addi r5, r5, LO( ROM_BASE_ADRS | BR_PS_8 | BR_WP | BR_V)
stw r5, BR0(0)(r4)
lis r5, HIADJ( 0xFFF80000 | 0x00000100 | 0x00000080)
addi r5, r5, LO( 0xFFF80000 | 0x00000100 | 0x00000080)
stw r5, OR0(0)(r4)
/* -------------------------------------------------- */
/* Initialize Chip Select 1 for FLASH */
/* -------------------------------------------------- */
lis r5, HIADJ( 0x04000000 | BR_PS_16 | 0x00000001)
addi r5, r5, LO( 0x04000000 | BR_PS_16 | 0x00000001)
]]>
嵌入式語音通信系統中VxWorks BSP的設計實現http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1926&Page=1wangxinxin2010-12-1 9:18:560 引 言

  當前普遍使用的DSP語音處理技術只能對語音進行簡單處理,不能適應語音業務的多樣化趨勢。本文介紹利用MPC860和VxWorks實現綜合語音通信平臺,支持多板卡、多路語音實時傳輸,可擴展多路語音共聽功能。利用MPC860的通信和信號處理功能,且Vx-Works具有占用空間小、執行效率高、方便進行個性化定制和較好的兼容性等特點,所以該綜合語音通信平臺在功能、硬件結構、體積、功耗以及靈活性上具有較大優勢。

  在設計中盡量采用嵌入式開發中的常用器件,以便稍加改動即可應用于其他設計。可以根據實際需要更改系統中語音通道的數目和擴展多路語音共聽功能等。

  1 系統結構及工作原理

  1.1 系統組成及特點

  整個通信平臺由語音通信處理主板和語音采集回放子板組成。語音通信處理主板包括CPU MPC860、FLASH存儲器SDRAM存儲器、10/100Mb/s網絡接口、RS 232串口、BDM調試接口、Console接口、供電和復位電路及120pin連接器。通信處理主板的核心MPC860是Motorola公司的一款由MC68360演變而來的通用單片集成嵌入式微處理器,適用于通信和網絡系統。該微處理器內部有兩個處理器:PowerPC和32位RISC處理器。PowerPC核同內存管理單元(MMU)、指令和數據Cache一同處理高層次應用,CPM則負責完成低層數據通信。兩個處理器主要通過共享內存交互。通信處理模塊利用SCC,SMC,SPI和I2C串行通道與外部設備通信,其中SCC和SMC支持時分復用。設計中,SCC工作在QMC協議Trans-parent Mode。通信處理模塊(CPM)新增了數字信號處理(DSP)功能。語音采集回放子板由語音采集電路、語音回放電路、基于FPGA實現的通信控制器和與語音通信處理主板連接的120pin連接器組成。

  由于MPC860的數據傳輸速度相比ADC和DAC要快很多,設計相應的邏輯電路控制語音的采集和回放、協調MPC860和數據采集、回放電路之間的通信是保證系統正常工作的關鍵。文中設計了基于Altera公司的CycloneⅡEP2C8芯片實現的通信控制器來解決這一問題。

  將通信平臺分為語音通信處理主板和語音采集回放子板分別設計實現,是為了降低系統開發難度和便于系統維護、升級和擴展。例如語音通信處理主板無需改動即可利用已有的連接器、FEC網絡接口和SDRAM存儲器等資源與視頻編解碼芯片、視頻壓縮/解壓縮芯片組成網絡視頻服務器。

  1.2 功能結構和工作原理

  語音通信處理主板的功能結構如圖1所示。

圖片點擊可在新窗口打開查看


  系統上電后,語音通信處理主板復位電路產生復位信號,MPC860接收到復位信號后,跳轉到0X100處開始執行啟動代碼。按照BSP配置逐步執行CPU初始化、板上其他硬件電路的初始化、操作系統運行所需數據結構的初始化、啟動VxWorks WIND內核、創建UserRoot任務、初始化系統中用到的可選擴展模塊(如I/O系統、文件系統、網絡協議等)、創建任務usrAppInit(),此時語音通信平臺準備就緒,可以執行語音通信任務。采集板的功能結構如圖2所示,語音通信處理主板啟動完畢后,語音采集回放子板可在通信控制器控制下采集和回放語音,并對語音數據進行壓縮編解碼和IP封裝、解封裝處理。

圖片點擊可在新窗口打開查看


  1.3 數據處理流程

  MPC860T和ADC AD7825,DAC AD7305之間的通信由通信控制器控制。通信控制器由數據緩沖區(Rx FIFO,Tx FIFO),基于FSM(有限狀態機)實現的控制邏輯(Rx control,Tx control)和8位串并、并串轉換器,時鐘電路組成。其數據接收過程為:接收控制邏輯(Rx control)控制ADC AD7825將各個通道的語音數字化,并把轉換結果存入接收緩沖區(Rx FIFO),直至Rx FIFO滿時Rx control開始向MPC860T提供周期性幀同步信號,頻率為32 kHz。MPC860在幀同步信號和時鐘信號的驅動下讀取Rx FIFO中的數據到SCC數據接收緩沖區。Rx FIFO讀空(即讀指針追上了寫指針)后,Rx control停止向MPC860發送幀同步信號終止數據傳輸,同時向MPC860發送中斷信號IRQ3,MPC860響應中斷把數據從接收緩沖區讀到接收ring buffer中等待應用程序處理。其數據發送過程為:MPC860完成IP解封裝、解壓縮后的語音數據將會在檢測到發送緩沖區可用時,輸出到SCC發送緩沖區,通信控制器提供發送幀同步信號驅動數據傳輸到Tx FIFO(發送緩沖區),待到Tx FIFO滿時停止發送幀同步信號。數據發送完后,CPM會清零,TxBD)中的R位表示MPC860可向SCC發送緩沖區中裝入新的數據,為下次傳輸做準備。

  1.4 QMC通信協議

  多通道控制器(QUICC Multichannel Controler,QMC)是為了實現時分復用數據傳輸而設計的,它可以把時分復用幀的數據分發到多達64個邏輯通道。該模式下把每一幀的數據劃分成若干個時隙(Timeslots),每時隙8 b。在時隙分配表中規定每時隙數據從屬于某個通道,每個通道都有一組特定的緩沖區描述符和相應的緩沖區。一個時隙的數據在收發時被放置在特定的緩沖區里,MPC860T就可把分散的數據*在一起發送,或把*在一起的數據分發到各自專用的緩沖區,而不需要額外的處理來區分各種各樣的數據流。

  2 BSP 設計實現

  設計中軟件開發主要包括啟動代碼的編寫、操作系統的移植、硬件驅動程序和語音編、解碼和IP封裝、解封裝應用程序。篇幅有限,本文僅介紹BSP移植。BSP即板級支持包,其功能為硬件、軟件初始化、工程影像的下載和設備驅動等。

  2.1 BSP的定制

  無論是BootRom還是VxWorks都要使用BSP代碼,BSP定制需要根據硬板配置、系統設計需求、軟件功能等實際情況。實際開發過程中,為了縮短產品開發周期,通常以WINDRIVER公司的BSP模板或者第三方公司提供的可供參考的BSP為基礎,根據軟硬件具體配置進行修改,添加新的程序驅動新增硬件和功能。本課題中先把APC860開發板的BSPMPC860TEVB拷貝到installdir:\Tornado\target\collfig\ppcs860目錄下,主要做下列修改。

  2.1.1 config.h文件

  根據實際情況,需要修改啟動行,內存地址、容量等配置,修改部分代碼如下:

圖片點擊可在新窗口打開查看


  2.1.2 makefile文件的修改

  makefile文件的修改,部分程序如下:

圖片點擊可在新窗口打開查看


  2.1.3 romInit文件修改

  romlnit.s模塊包含了VxWorks在ROM中的入口點romlnit(),它是單板上電以后最先執行的匯編程序代碼。該函數功能包括處理器的復位、內存的初始化以及其他的最基本和必要的初始化工作。需要修改的內容如下:

  內部存儲器映射寄存器IMMR。該寄存器用來標識內部地址空間的基址,將該寄存器設置為“FF000000”。

  SIU模式配置寄存器SIUMCR。包括有外部總線仲裁器配置,外部master的支持,DEBUG調試端口配置,系統接口引腳配置以及奇偶校驗支持,將該寄存器設置為“00E10000”。

  BSP中討論SDRAM的初始化過程,首先對MAMR寄存器的初始化,再得到UPM的RAM陣列表的地址,然后將RAM陣列表地址中的值寫入MPC860 RAM WORDS ARRAY中,最后初始化OR以及BR寄存器。

  2.1.4 ppcs860.h

  ppcs860.h是參數配置頭文件,該文件包含大量宏定義,為使MPC860T正常運行且SCC串口工作在QMC協議透明模式,根據實際需要做了如下配置:

  (1)修改系統常量對應的宏定義:SCCx參數在雙端口RAM中存儲的起始地址、緩沖區描述符(BD)的基地址、緩沖區和BD的數目等;

  (2)串口和時隙分配表的初始化,主要包括時隙分配、引腳分配等,通過設置SI RAM參數,規定了每個邏輯通道對應的時隙和數據路由,本系統中選擇SCC2和TDMB接口實現QMC通信,引腳配置如下:

  PC6 RSYNC,PA2 RXC,PA10 RXD,PA0 TXC。PA11 TXD

  (3)SCC2初始化:設置SCC2工作在QMC模式;

  (4)QMC全局參數初始化:MCBASE(多通道基地址指針),初始化為SCC2對應外部BD表的基地址,MRBLR(最大接收緩沖區長度),接收、發送時隙分配表起始地址的指針(Rx S PTR,Tx S PTR),接收、發送時隙分配表當前時隙的指針(Rx PTR,TxPTR),中斷循環表基地址(INTBASE),中斷循環表下一可用入口的指針(INTPTR)等;

  (5)QMC特定通道參數初始化:TBASE,RBASE(該邏輯通道的緩沖區描述符的起始地址),TBPTR,RBPTR(當前發送、接收緩沖區描述符指針),TMR-BLR(最大接收幀長度)等。

  2.1.5 驅動程序

  驅動程序直接對硬件操作,實現硬件和操作系統、應用程序之間的交互。需要自行編寫MPC860 SCC串口驅動程序ppcs860QmcSio.c,通信平臺中SCC工作在QMC Transparent模式。ppcs860QmcSio.c文件中包含SIO_DRV_FUNCS結構體中定義的5個函數和中斷處理函數ppc860QmcInt()、Qmc邏輯通道復位函數ppc860QmcChannelReset()。ppc860SccIoctl()提供了一些設備控制選項,包括停止數據傳送、察看當前通信狀態(空閑還是忙)、輪詢或中斷模式選擇等;ppc860sccInt()處理QMC通道的中斷請求,通過中斷方式實現數據的收發功能;ppc860SccStartuP()函數啟動一個發送周期;ppc860SccCallbackInstall()安裝回調函數。中斷處理函數的功能有:

  (1)提供接收、發送中斷處理函數,調用回調函數完成設備和較高層協議之間的數據傳送。

  (2)處理數據接收過程中出現的接收數據過長,數據傳送被迫終止等異常。由于不需要QMC的輪詢模式,因此ppc860SccPollInput()和ppc860SccPollOutput()以NULL函數的形式實現。同時還要編寫sysSccSeri-al.c文件,修改sysLib.c文件和usrConfig.c文件。在sysSccQmc.c中提供SCC設備描述符的初始化例程、SCC中斷連接例程等;通過修改sysLib.c和usrCon-fig.c文件以實現VxWorks對QMC驅動程序的調用和QMC驅動程序與TTY系統的掛接。

  2.1.6 通道中斷處理過程

  數據收發的核心是中斷處理函數。QMC中的所有邏輯通道共享SCC2的中斷,SCC2維持有一個全局中斷表,表中每一項里面都含有邏輯通道號和中斷源,可以被驅動識別以處理不同情況下出現的事件。中斷發生時,驅動從SCCE寄存器里面判斷全局中斷源,如果中斷是由邏輯通道引起,中斷服務程序便查找全局中斷表以找到該邏輯通道,并從中斷條目里面檢查中斷信息以確定是什么類型,再調用相應的收發和錯誤處理函數。

  2.1.7 數據接收和發送

  多通道語音通信系統中MPC860T SCC串口時分復用即工作在QMC模式,邏輯通道的通信協議為Trasparent mode,該協議僅傳輸二進制數據,不對數據流進行位級操作,不區分數據幀中的格式位、起止位和數據位等,不對接收的數據做檢錯處理,因而具有較高的數據傳輸速率。

  接收函數由中斷服務例程調用。由于是每接收一幀產生一次中斷,故接收函數也每次處理一幀的數據。數據的接收由接收描述符RxBD控制。當要接收數據時,接收函數首先需要確定RxBD有效;確定沒有問題后,才將數據從接收緩沖區拷貝到接收Ring buffer,并復位RxBD;否則在進行相應錯誤處理后復位RxBD。接收函數流程如圖3所示。

圖片點擊可在新窗口打開查看


  數據發送不調用中斷處理函數,發送函數檢測到發送緩沖區可用(即TxBD中R位為1)后,調用回調函數將數據從發送Ring buffer拷貝到串口發送緩沖區(Txbuffer)。這里為發送功能開辟足夠大的環形緩沖區(足以容納應用程序每一幀的數據)。發送函數流程如圖4所示。

  2.2 BSP調試方法和遇到的問題

  2.2.1 調試方法

  開發調試有兩種方法,一種是使用仿真器通過BDM(后端調試模式)一步步地跟蹤調試,另一種是通過點燈的方式進行所謂的“黑”調。“黑”調的方法是通過“燈”閃、用示波器測片選等,根據外部現象和所編的測試代碼進行比較分析來調試程序。進行“黑”調的目的是調通信串口部分代碼,宿主機可以通過串口與目標機的通信,然后再調試其他部分。調試流程分成兩部分。首先是預內核啟動代碼(Pre-Kernel Initializa-tion),待最小內核啟動正常后再添加I/O系統、文件系統、網絡系統等組件和調試應用程序。使用仿真器Vi-sion Probe通過BDM方式調試BSP并將BootRom映像燒入FLASH。

  2.2.2 調試中遇到的問題

  (1)系統無法正常復位

  在調試過程中,發現MPC860T的CLKOUT引腳無輸出信號,系統上電復位過程沒有完成,系統無法正常工作。初步判斷是硬件問題。用萬用表和示波器逐步檢查上電復位、硬件復位、軟件復位、時鐘輸入和BDM調試等模塊電路,發現正常。判斷是BGA焊接出現問題,將芯片取下,重新焊接,系統復位正常,時鐘信號輸出穩定正常。

  (2)網絡無法與外界通信

  100 Mb/s快速以太網驅動加載中,網絡層協議無法運行,目標板無法與外界網絡建立聯系。目標板網絡啟動時發出的MAC地址信息幀外界無法收到。通過仿真器發現程序單步運行正常。經過反復試驗和測試,最終發現因SDRAM初始化程序沒有運行導致程序運行(需要SDRAM支持突發模式)出錯。更改調試方式,將BootRom開始的所有程序燒入FLASH,上電啟動,網絡正常,目標板與外界建立良好的網絡通信。

  3 結 語

  該系統在實際測試中話音質量穩定,測試時聲音清晰,沒有串擾和雜音,沒有較大延遲,說明硬件設計正確完備,QMC驅動程序和語音編解碼和IP封裝與解封裝應用程序性能優良。

  如果板卡上語音通道更多,則每幀的時隙增多、長度增大,因為FPGA內部電路所提供的的幀同步信號周期并不改變,所以只是實際數據傳輸速率提高,可以保證各路語音的同步和實時性。系統中QMC工作在Transparent Mode限制了它的應用范圍,如何改進使系統支持多種通信協議是需要進一步研究的問題。

]]>
基于PC104總線的VxWorksBSP設計http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1925&Page=1wangxinxin2010-12-1 9:15:43

 

1 引言

VxWorks是由美國的WindRiver推出的一種嵌入式強實時操作系統,它存在多任務調度的方式,可以管理多個外設,而且它可根據應用程序的需求對操作系統進行裁剪,最大程度的壓縮代碼,實現程序的優化。

Intelx86系列處理器的嵌入式應用一般是以PC104的形式出現的,PC104除包括PC/AT的所有標準功能外,它的CPU模塊還有一些獨特的優點開發周期短、費用低、體積小、層疊連接、功耗小、模塊化、抗沖擊及震動能力強,工作及存儲溫度范圍寬、集成度高,可靠性高。

PC/104總線設備上使用的數據存儲設備通常有硬盤和基于閃存技術的固態電子盤。由于嵌入式系統工作環境一般比較惡劣,硬盤在惡劣的震動條件下無法正常工作,而固態電子盤的工作范圍很寬,可以選擇相應環境下的器件(零下40到零上85),并且體積很小,適合嵌入式應用。本嵌入式系統中數據存儲設備采用了CE公司的CF(CompactFlash),而在此軟硬件平臺上設計開發了嵌入式實時操作系統VxWorks的并基于PC104總線的板載支持包。

 

]]>
arm技術VxWork BSP啟動過程http://www.022-oo.cn/bbs/dispbbs.asp?BoardID=37&ID=1924&Page=1wangxinxin2010-12-1 9:11:44開發BSP主要的兩點:
  1. 系統image的生成,image的種類,image的download下載過程,系統的啟動順序和過程,調試環境的配置及遠端調試的方式和方法,相應BSP設置文件的修改(網絡,串口..),BSP各文件的組成和作用.

  1. 要對系統底層驅動清楚,也就是對CPU及相關的硬件有所了解.主要是32微處理器(上電啟動過程, download image的方式方法,讀寫ROM,地址空間分配,MMU,寄存器,中斷定義,..).參照硬件資料,多讀一些源碼會有所幫助.

Tornado 2 開發調試環境協議框圖

主機開發(Host Development System)

目標機(Target System)

Tornado 工具

 

WTX協議通信<==========>

Editor Project
Shell Debugger Browser Windview

Target Server

|

Target Agent VxWorks Target Simulator

WDB協議通信
<==========>

Application VxWorks OS VxWorks Target (WDB)Agent

兩個主要兩個協議

WTX協議(Wind River Tool eXchange): 用于開發機內部Tornado工具與Target Server之間通信.

WDB協議(Wind DeBug): 用于主機Target Server與目標機之間的通信.

 

一.基本概念

BSP定義:

Provides VxWorks with primary interface to hardware environment.

作用: 

  • 在通電后,初始化硬件.

  • 支持VxWorks和硬件驅動通信.

  • 使hardware-dependent 和 hardware-independent在VxWorks系統中很好的結合.

主要BSP主要文件目錄的組成及主要文件的作用:

  • 目錄target/config/All:

這個目錄下的文件

是所有BSP文件共享的,不是特別需要不要更改里面的任何文件.

configAll.h:

缺省定義了所有VxWorks的設置.如果不用缺省的設置,可在BSP目錄下的config.h文件中用#define或#undef方式來更改設置.

bootInit.c:

在romInit.s后,完成Boot ROM的第二步初始化.程序從romInit.s中的romInit()跳到這個文件中的romStart().來執行必要的解壓和ROM image的放置.

bootConfig.c: 完成Boot ROM image的初始化和控制.

usrConfig.c: VxWorks image的初始化代碼.

  • 目錄target/config/comps/src:

涉及系統核心的components,主要由target/config/All中usrConfig.c中函數調用

  • 目錄target/config/bspname:

包含系統或硬件相關的BSP文件.

Makefile

一些命令行控制images的生成,參見 BSP設置部分及生成下載

README

BSP發布紀錄,版本,總的文檔

config.h

包括所有涉及CPU主板的設置及定義(includes,definations),參見 BSP設置文件及生成下載

configNet.h

網絡驅動的主要設置文件,主要對END驅動設置.

romInit.s

匯編語言文件,是VxWorks Boot ROM和ROM based image的入口,參見 系統啟動部分

sysALib.s

匯編語言文件,程序員可以把自己的匯編函數放在這個文件里,在上層調用.VxWorks image的入口點_sysInit在這個文件里,是在RAM中執行的第一個函數.

sysLib.c

包含一些系統相關的函數例程,提供了一個board-level的接口,VxWorks和應用程序可以以system-indepent的方式生成.這個文件還能包含目錄target/config/comps/src的驅動.

sysScsi.c

可選文件用于Scsi設備設置和初始化.

sysSerial.c

可選文件用于所有的串口設置和初始化.

bootrom.hex

ASIC文件包含VxWorks Boot ROM代碼

VxWorks

運行在目標機上,完整的,連結后的VxWorks二進制文件.

VxWorks.sym

完全的,連結后帶有符號表的VxWorks二進制文件

VxWorks.st

完全的,連結后,standalone,帶有符號表的VxWorks二進制文件

 

  • BSP用"make"來編譯連接生成(Created),而不是用Tornado的工具.

  • BSP和應用程序都可以在"make"或"tornade"上開發(developed)

  • BSP被設置包括以下驅動:

中斷控制interrupt controller,計時器timer(sys/aux),串口UART(serial),顯示屏LCD,鍵盤Keyboard(opt),觸摸屏touch-screen(opt).

前面三個是BSP的主要部分.

  • BSP默認的download VxWorks RAM image方式是從ethernet.

  • 串口電纜需要用來和開發板(COM1)通信,通過協議WDB.

    VxWorks Image的種類:

  • Loadable images.

  • ROM-based images---compressed/uncompressed.

 

]]>
主站蜘蛛池模板: 51被公侵犯玩弄漂亮人妻 | 巴西极品性猛交 | 男女边吃奶边做边爱视频 | 黄色一级大片在线免费看产 | 色婷婷久久久 | 日本乱妇乱子视频网站-百度 | 99re视频精品 | 亚洲精品无码久久一线 | 97精品国产97久久久久久粉红 | 7788色淫视频观看日本人 | 高清国产mv视频在线观看 | av片在线观看网站 | 任你躁国产老女人 | 91视频综合| 99这里只有是精品2 末发育娇小性色xxxx | 国产成人艳妇aa视频在线 | 92国产精品午夜福利免费 | 色婷婷激情网 | 久热热| 国产精品美女www爽爽爽视频 | 久操资源站| 黄网站免费永久在线观看网址 | 91嫩草私人成人亚洲影院 | 天堂在线www资源在线 | 成人a级片免费观看 | 国产成人女人毛片视频在线 | 奇米网狠狠干 | brazzers精品成人一区 | 午夜啊啊啊 | 欧美视频精品在线 | 国内精品久久久久久中文字幕 | 最新中文字幕av无码专区不 | 亚洲 欧美 制服 综合 另类 | 亚洲一级片网站 | 国产裸体xxxx视频在线播放 | 欧美毛茸茸 | 亚洲乱码卡一卡二卡新区仙踪木木 | 国产激情免费 | 九九热.com | 国产午夜精品久久久久久久蜜臀 | 成年女人午夜性视频 | 狠狠色噜噜狠狠狠888奇米 | 96在线看片免费视频国产 | 欧洲精品一区二区三区 | 热久久国产 | 成人aaa片一区国产精品 | 中文字幕一区二区三三 | 人妻无码中文字幕免费视频蜜桃 | 青青草视频在线观看视频 | 久久九九热re6这里有精品 | 亚洲涩涩爱 | 国产一在线 | 另类小说激情 | 在线a网| 亚洲精品视频免费观看 | 国产精品成久久久久三级6二k | 欧美成人网视频 | 少妇人妻呻吟青椒bobx | 无码国产精品一区二区免费16 | 国产精品久久综合 | 久久丝袜脚交足免费播放导航 | www.人人草| 天堂av2021 | 亚洲天堂av在线播放 | 久草免费在线色站 | 国产精品久久午夜夜伦鲁鲁 | 婷婷国产v国产偷v亚洲高清 | 精品国产色 | 亚洲欧美一区二区三区日产 | 国产精品久久99综合免费观看尤物 | 国产免费一区二区 | av在线播放免费观看 | 久草在线新视觉 | 欧美成人dvd在线视频 | 青青青在线免费观看 | 99av国产精品欲麻豆 | 拍拍拍无挡免费视频 | 国产真实露脸精彩对白 | 美女露隐私免费视频网站 | 国产精品第七页 | 国产男人搡女人免费视频 | 先锋资源国产 | 国产夫妻在线 | 自拍偷在线精品自拍偷99九色 | 99热在线精品免费全部 | jizz日韩 | 国产福利第一视频在线播放 | 色婷婷综合网 | 久久精品福利 | 亚洲国产成人在人网站天堂 | 91涩涩视频 | 亚洲欧洲精品成人久久曰影片 | 国产成人 综合 亚洲欧美 | 亚洲午夜av久久久精品影院色戒 | 第一福利丝瓜av导航 | 天堂资源在线www中文 | 亚洲综合资源 | 少妇人妻在线视频 | 亚洲综合区小说区激情区 | 91成人精品一区在线播放69 | 催眠淫辱の教室3在线观看 亚洲中字慕日产2020 | 国产麻豆乱子伦午夜视频观看 | 夜夜揉揉日日人人青青 | 青青草原影视 | 极品探花在线播放 | 波多野结衣视频网址 | 亚洲欧洲精品一区 | 亚洲成人三区 | 久久精品h | 成人a大片 | 日本狂喷奶水在线播放212 | av无码免费岛国动作片不卡 | 91丝袜超薄交口足 | www.视频一区 | 蜜桃av影院| h肉动漫无码无修6080动漫网 | 欧美处交wwwvideos另类 | 国产综合一区二区三区黄页秋霞 | 亚欧洲精品在线视频 | 天天综合精品 | 国产国产国产国产系列 | 天天操人人干 | 国产999精品久久久久久 | 欧美亚洲国产一区二区三区 | 一本大道av伊人久久综合 | 欧美91视频| 肉欲性毛片交19 | 少妇爆乳无码av无码专区 | 好爽…又高潮了毛片免费看 | 七七婷婷婷婷精品国产 | 欧美一区1区三区3区公司 | 黑人巨大xxxxxxx精品 | 亚洲毛片无码专区亚洲a片 午夜精品亚洲一区二区三区嫩草 | 国精产品国语对白东北 | 久久99热精品免费观看 | 五月天堂色 | 国产交换配乱淫视频α | 精品少妇一区二区30p | 日韩人妻精品无码一区二区三区 | 国产区小视频 | 国产精品成人一区二区网站软件 | 色欲国产精品一区成人精品 | 国产三区在线成人av | 国产欧美日韩国产高清 | 山东熟女啪啪哦哦叫 | 欧洲熟妇性色黄在线观看免费 | 国产精品国产三级国产试看 | 亚洲国产精品一区二区成人片国内 | 久久久久成人片免费观看 | 男女啪啪免费网站 | 狠狠躁天天躁综合网 | 国产女精品视频网站免费蜜芽 | 欧美制服丝袜亚洲另类在线 | 亚洲国产高清在线 | 天天爽天天爽 | 青青草视频播放 | 嫩草影院 | 欧美成人精品高清视频 | 亚洲欧美另类视频 | 成人同人动漫免费观看 | 久久99这里只有精品 | 男人添女人下部高潮全视频 | 久久伊人影院 | 日韩中文亚洲欧美视频二 | 深夜爽爽动态图无遮无挡 | 综合无码一区二区三区四区五区 | 日韩美女国产精品 | 一及黄色大片 | 黑人巨大精品欧美一区二区免费 | 红杏aⅴ成人免费视频 | 亚洲精品一卡2卡三卡4卡5卡 | 中国亚州女人69内射少妇 | 久久手机免费视频 | 久久精彩免费视频 | av大片在线播放 | 午夜在线视频播放 | 中文精品一卡2卡3卡4卡国色 | 久久精品夜夜夜夜夜久久 | 一本清日本在线视频精品 | 亚洲精品国产成人99久久 | 欧美真人性做爰全过程 | 久久精品日产第一区二区三区在哪里 | 国产尤物av尤物在线观看 | 少妇性l交大片欧洲热妇乱xxx | 一区二区 中文字幕 | 大唐艳妇臀荡乳欲伦小说 | 国产精品奇米一区二区三区小说 | 亚洲乱码国产乱码精品精大量 | 欧美人与动牲交xxxxbbbb | 日韩大片免费在线观看 | 日韩中字在线观看 | 国内精品久久久久久久影视红豆 | 国产成人夜色高潮福利影视 | 最新国产精品自在线观看 | 国产成人在线小视频 | 亚洲婷婷五月综合狠狠 | 揉着我的奶从后面进去视频 | 天天干网站 | 国产日本一级二级三级 | 99热香蕉| 91原创视频在线观看 | 91超级碰 | 久久99久久99精品免观看粉嫩 | 无码人妻视频一区二区三区 | 爱涩av | 色插图午夜影院 | 小说区 综合区 首页 | 东京一本一道一二三区 | 四虎永久免费在线 | 国产精品无码一区二区在线 | 在线播放少妇奶水过盛 | 欧美在线视频免费 | 人妻在客厅被c的呻吟 | 蜜月va乱码一区二区三区 | 成人小视频在线观看 | 色欲天天婬色婬香综合网完整 | 精品欧美乱码久久久久久 | 亚洲天堂免费av | 国产真实强被迫伦姧女在线观看 | 国产精品视频一区二区三区四 | 北京少妇宾馆露脸对白 | 精品人人人 | 最新超碰| 最新中文av | 日本中文字幕在线视频 | 美国一区二区三区无码视频 | 日本高清在线一区 | 亚洲综合久久av一区二区三区 | 日韩欧美国产中文字幕 | 欧美a免费 | 亚洲精品小视频 | 亚洲国产成人久久一区二区三区 | 久久99精品国产.久久久久 | 色天天综合网 | 国产911情侣拍拍在线播放 | 久久久久青草线蕉亚洲 | 国产精品毛片大全 | www.久久 | 日韩中文字幕精品 | 国模冰莲极品自慰人体 | 国产欧美激情 | 粉色午夜视频 | 亚洲精品色视频 | youjizz在线视频 | 2020年最新国产精品正在播放 | 欧美第一页在线 | 欧美日本高清视频 | 国产娇喘喷水呻吟在线观看 | 日韩亚洲精品视频 | 欧美大片www | 99美国热| 少妇下蹲露大唇无遮挡 | a亚洲视频 | 中文字幕日韩亚洲乱码日韩在线 | 无码中文精品专区一区二区 | 97久久精品人妻人人搡人人玩 | 一级毛片黄片 | 欧美国产日韩a欧美在线观看 | 97超碰碰 | 2018天天弄 | 无码人妻久久一区二区三区蜜桃 | 国产精品美女久久久浪潮软件 | 成人性做爰aaa片免费看 | 日韩另类视频 | 国产破处在线视频 | 男人的天堂一级片 | 久久久久久亚洲av毛片大全 | 日韩欧美一区二区在线观看 | 开心激情播播 | 精品国产成人高清在线观看 | 免费国产裸体美女视频全黄 | av中文字幕免费在线观看 | 另类天堂网 | 亚洲精品无线乱码一区 | 青青青青国产免费线在线观看 | 国产精品自拍合集 | 92久久精品一区二区 | 国产一二区在线 | 久久精品亚洲日本波多野结衣 | 在线资源天堂 | 午夜影院a | 麻花传媒mv一二三区别在哪里看 | 久久夜色精品久久噜噜亚 | 少妇一级淫片日本 | 5x性社区免费视频播 | 国产中文字幕在线观看 | 青青青免费在线视频 | 日韩av无码一区二区三区 | 18级成人毛片免费观看 | 免费观看久久久 | 久久久亚洲精品成人 | av伊人久久 | 99热这里只有精品3 亚洲精品毛片av | 亚洲精品9999久久久久无码 | 亚洲熟妇无码一区二区三区导航 | 成人av鲁丝片一区二区小说 | 登山的目的在线观看 | 成人123区| 在线激情网 | 人妻少妇heyzo无码专区 | 在线视频99 | 午夜在线精品偷拍 | 免费精品人在线二线三线 | 你懂得在线观看 | 青草av在线 | 久久综合中文网 | 欧美人与动牲交免费观看 | 国产大学生援交视频在线观看 | 女人喷水高潮时的视频网站 | 国产黄色一区 | 午夜dj在线观看高清在线视频完整版 | 久久精品人人槡人妻人人玩 | 99久re热视频这只有精品6 | 青青草原在线免费 | 亚洲人成国产精品无码果冻 | 亚洲欧美在线综合图区 | 伊人嫩草久久欧美站 | 可播放的亚洲男同网站 | 一区二区三区在线视频免费观看 | 一级免费毛片 | aⅴ免费视频在线观看 | 久久久噜噜噜久久久白丝袜 | 精品久久99 | 国产碰碰| 亚洲乱妇| 蜜臀av999无码精品国产专区 | 久久久久av无码免费网 | 国产综合欧美 | 九九九伊在人线综合2023 | 波多野结衣aⅴ在线 | 天天干天天天 | 星空大象mv高清在线观看免费 | 日b在线视频 | 午夜免费啪在线观看视频 | 高清国产天干天干天干不卡顿 | 夜色爽爽影院18禁妓女影院 | 国产精品成人嫩草影院 | 日韩免费高清视频 | 免费视频爱爱太爽了激情 | 色婷婷国产 | 伊人久久大香线蕉av网站 | 国产精品高潮呻吟av久久小说 | 久久精品国产99久久无毒不卡 | 在线视频第一页 | 精品无码国产一区二区三区51安 | 91pro国产福利网站www | 久久夜色撩人精品国产小说 | 色综合天天综合网国产成人网 | 国产精品 视频一区 二区三区 | 国产日韩在线免费观看 | 欧洲熟妇乱xxxxx大屁股7 | 亚洲一区二区三区小说 | 在线黄色网 | 国产精品美女久久久另类人妖 | 国产精品v欧美精品∨日韩 天天躁日日躁狠狠躁喷水软件 | 中文字幕亚洲欧美日韩2019 | 午夜黄色av | 精品自拍亚洲一区在线 | 中文字幕第56页 | 欧美福利专区 | 污污又黄又爽免费的网站 | 视频一区二区三区在线观看 | 日产免费一区二区 | xxxx少妇高潮毛片新婚之夜 | 最新69国产成人精品视频 | 狠狠干网| 国产精品综合网 | 亚洲中文久久精品无码 | 国产午夜永久福利视频在线观看 | 91视频国产一区 | 日韩精品无码一区二区三区四区 | 国产欧美va欧美va香蕉在线观看 | 98视频精品全部国产 | 国内成人综合 | 欧美 变态 另类 人妖 | 日韩三级毛片 | 国产精品对白一区二区三区 | 久久大香国产成人av | 亚洲精品88欧美一区二区 | 少妇a级 | hs在线观看| 日韩欧美亚洲成人 | 亚洲成a人片在线观看无码专区 | 无码人妻丰满熟妇区五十路在线 | av最新在线观看 | 成人本色视频在线观看 | 嫩草国产露脸精品国产软件 | 亚洲成人久久久久久久 | 久久97超碰色中文字幕总站 | 一区二区 在线 | 中国 | 日韩一区二区三区北条麻妃 | 国产精品久久久久久亚洲 | 张津瑜警花国产精品一区 | 五月婷婷在线综合 | 日本wv一本一道久久香蕉 | 亚洲精品无码成人网站 | 免费的av片 | 亚洲精品成人无限看 | 99re6热视频这里只精品首页 | 欧美视频在线不卡 | 国产美女的第一次好痛在线看 | 涩涩屋av | 国产第十页 | 台湾午夜a级理论片在线播放 | a级特黄毛片| 亚洲成人tv | 日日摸天天摸97狠狠婷婷 | 色吊丝最新永久免费观看网址 | 8x拔播拔播国产在线视频 | 欧洲精品视频在线 | 天堂伊人网 | 久久无码人妻精品一区二区三区 | 久久伊人精品影院一本到综合 | 高清免费视频日本 | 亚洲蜜桃v妇女 | 欧美精品久久久久久久久大尺度 | 欧美一级大片免费看 | 无码精品人妻一区二区三区涩爱 | 国产91免费视频 | 天天操天天干天天 | 天堂av在线中文 | 日韩少妇内射免费播放 | 99久久香蕉 | 国产高清吹潮免费视频 | 免费aa毛片 | 欧美第十页 | 女人与拘性猛交视频 | 日日碰狠狠添天天爽五月婷 | 亚洲不卡在线视频 | 国内精品久久久久久影院 | 久久亚洲精品日韩高清 | 艹男人的日日夜夜 | 伊人色播| 国产av无码专区亚洲aⅴ | 国产亚洲精品久久久久久小说 | 日韩精品在线观看中文字幕 | 日本熟妇色xxxxx日本妇 | 午夜影院毛片 | 色综合久久网 | 国产乱码人妻一区二区三区四区 | 亚洲伊人久久精品影院 | 久久久久9999亚洲精品 | 亚洲高清无码加勒比 | 成人三级在线看 | 日本真人边吃奶边做爽免费视频 | 日产精品中文一区二区三区 | 影音先锋亚洲成aⅴ人在 | 中文字字幕在线中文无码 | 亚洲码欧美码一区二区三区 | 国产三级漂亮女教师 | 蜜桃av一区二区三区 | 国内精品久久久久久久小说 | 欧美激情一二三区 | 亚洲成人精品av | 亚洲 春色 另类 小说 | 五月狠狠亚洲小说专区 | 97福利视频 | 国产偷窥女洗浴在线观看 | 无码中文av波多野吉衣迅雷下载 | 美女视频免费在线 | 亚洲精品视频网 | 国产成年人免费视频 | 成人三级无码视频在线观看 | 国产白嫩精品又爽又深呻吟 | 欧美精欧美乱码一二三四区 | 久久国产精品影视 | 视频在线日韩 | 久草在线亚洲 | 丝袜人妻一区二区三区网站 | 国产人妻精品一区二区三首 | 日产乱码一二三区别免费麻豆 | 99热国产这里只有精品9 | 极品xxxx欧美一区二区 | 国产人与禽zoz0性伦 | 91干网 | 亚洲精品制服丝袜四区 | 久久人人做人人妻人人玩精品va | 国产精品人人爽人人做我的可爱 | 亚洲精品入口a级 | 狠狠色噜噜狠狠狠狠色吗综合 | 日韩岛国片 | 国精产品一区一区三区mba视频 | 欧美天天看 | 91人人澡人人爽 | 热99re久久免费视精品频 | 日韩精品五区 | 国产卡一卡二卡三免费入口 | 精品久久久久久无码中文字幕一区 | 无码视频免费一区二区三区 | 欧美jizzhd精品欧美 | 日日骚av | 欧美福利影院 | 亚洲精品久久久打桩机小说 | 日本女优中文字幕 | 18禁白丝喷水视频www视频 | 日日干夜夜草 | 亚洲性无码一区二区三区 | 久久青草精品一区二区三区 | 夜夜爽夜夜叫夜夜高潮 | av无码一区二区二三区1区6区 | 欧美怡春院一区二区三区 | 又大又粗弄得我出好多水 | 免费看成人aa片无码视频 | 欧美精品欧美人与动人物牲交 | 亚洲国产欧美日韩在线 | jizzyou中国少妇农村 | 亚洲成熟少妇视频在线观看 | 国产精品免费久久久久软件 | 三级网站视频在在线播放 | 91插插插永久免费 | 国产女厕所盗摄老师厕所嘘嘘 | 天天干天天草天天射 | 亚洲精品乱码久久久久久自慰 | 亚洲色欲色欲综合网站sw0060 | 丝袜a∨在线一区二区三区不卡 | 亚洲成aⅴ人最新无码 | 九色国产 | 麻豆国产成人av高清在线观看 | 一本一本久久a久久 | 谁有毛片网站 | 亚洲图片小说激情综合 | 久久视频在线视频 | 久久狼人大香伊蕉国产 | 上海少妇和黑人老外做爰 | 久久久国产99久久国产久麻豆 | 国产一二区在线 | 综合亚洲桃色第一影院 | 亚洲欧美日韩系列 | 亚洲另类色综合网站 | 成年女人毛片免费视频 | 亚欧乱色国产精品免费视频 | 野外吮她的花蒂高h在线观看 | 亚洲精品无码不卡在线播放he | 久久99视频精品 | 在线资源天堂www | 800av在线播放| 中文字幕一本 | 一区二区三区黄 | 欧美精品亚洲精品日韩传电影 | 国产精选一区 | 久久青草费线频观看 | 国产成人一区二区在线 | 午夜免费啪视频在线观看区 | 婷婷成人综合网 | 五月婷婷视频 | 欧洲少妇bbbbb曰曰 | 成人在线精品视频 | 水蜜桃亚洲精品一区二区 | 少妇全黄性生交片 | 国内精品视频一区二区八戒 | 性刺激的欧美三级视频中文字幕 | 国产精品白浆在线观看无码专区 | 日本少妇作爱视频 | 偷偷操影院 | 一区二区三区四区精品 | 久久精品免费看 | 成人一区二区三区视频在线观看 | 青青青视频香蕉在线观看视频 | 性猛交富婆╳xxx乱大交天津 | www.成人网.com | 久久午夜夜伦鲁鲁片免费无码 | 在线天堂√8 | 亚洲影视久久 | 人体写真福利视频 | 北条麻妃99精品青青久久主播 | 国产播放隔着超薄丝袜进入 | 国产真实乱对白精彩久久小说 | 91久久夜色精品国产九色 | 亚洲一区二区三区四区五区午夜 | 亚洲欧美久久久 | 男人打飞出精视频无码 | 日韩av无码免费大片bd | 亚洲日韩一区二区一无码 | 国产无套粉嫩白浆内精在线网站 | 久久综合伊人九色综合 | 忘忧草社区在线播放日本韩国 | 国产免费人成视频在线观看 | 久久99中文字幕 | 国产一区二区久久久 | 亚洲欧洲日本无在线码 | 丰满少妇人妻久久久久久 | 欧美午夜激情在线 | 国色天香一区二区 | 中文字幕在线观看网 | 成人特级毛片www免费版 | 国产精品aaa| 精品夜色国产国偷在线 | 神马影院午夜dy888 | 亚洲鲁丝片av无码多人 | 国产成人一区二区青青草原 | 亚l州综合另中文字幕 | 永久免费黄色大片 | 91porny在线 | 亚洲成av人片在线观看无码 | 色婷婷亚洲婷婷7月 | 久久精品人人做人人爽播放器 | 色拍拍在线精品视频 | 熟女人妻国产精品 | 5678少妇影院 | 国产成人无码av一区二区在线观看 | 夜夜欢天天干 | 国产精品苏妲己野外勾搭 | 亚洲高清在线视频 | 葵司免费一区二区三区四区五区 | 澳门永久av免费网站 | 午夜影院在线观看 | 日韩av无码免费大片bd | 国产成人精品亚洲777人妖 | 五月婷婷六月综合 | 高h纯肉大尺度调教play | 超碰在线公开 | 欧美日韩国产码高清 | 日韩在线一区二区不卡视频 | 97超碰人人爱香蕉精品 | 亚洲国产精品成人综合色在线婷婷 | 久热中文 | 日日噜噜夜夜狠狠久久丁香五月 | 日本黄色一级片视频 | 999综合网 | 欧美激情视频一区二区 | 999国产精品亚洲77777 | 欧美肥熟妇xxxxx | 国产一区二区在线播放 | 国产拍拍拍 | 99久久国产热无码精品免费 | 久草视频免费 | 77777亚洲午夜久久多喷 | 国产老妇伦国产熟女老妇高清 | 黄色av国产 | 国产啪精品视频网站免费尤物 | 久久久成人一区二区免费影院 | 五月开心播播网 | 欧美精品无码一区二区三区 | 狠狠插狠狠干 | 狠狠色丁香久久综合频道日韩 | 亚洲精品入口一区二区乱 | 欧洲黄色网 | 亚洲欧美在线视频免费 | 大胸双性奶水浪荡美人 | 国产精品久久久久人妻无码 | 粉色午夜视频 | 99热精品国产三级在线 | 中国丰满人妻videoshd | 激情综合五月丁香亚洲 | 开心五月激情综合婷婷 | 在线看片免费人成视频久网下载 | 欧美极品在线播放 | 超碰人人澡 | 欧美乱人伦人妻中文字幕 | 久久人人爽av亚洲精品天堂 | 最新国产网址 | 日本韩国欧美在线 | 在线永久看片免费的视频 | 亚洲第一综合网 | 80s毛片| 日韩亚洲在线观看 | 色欲天天婬色婬香综合网 | 男女午夜网站 | 亚洲综合色视频在线观看 | 日本www一道久久久免费榴莲 | 国精产品国语对白东北 | 她也啪在线视频 | 日韩精品一卡2卡3卡4卡新区 | 少妇高清一区二区免费看 | 亚洲香蕉精品 | 国产成人精品综合在线观看 | 99精品国产免费久久久久久按摩 | 国产小呦泬泬99精品 | 九九热在线观看 | 日韩乱码人妻无码超清蜜桃 | www.91插插插| 国产一区二区在线精品 | www欧美日韩 | 一本岛高清乱码2020叶美 | 色综合天天综合色综合av | 99国产欧美另类久久久精品 | 超碰国产在线观看 | 亚洲13p| 亚洲插插| 亚洲精品美女久久久 | 亚洲免费天堂 | 95视频在线| 蜜臀av中文字幕 | 九九热在线视频精品店 | 日韩精品久 | 国产无套一区二区三区浪潮 | 99er这里只有精品 | 久久国产夜色精品鲁鲁99 | 欧美日本高清视频 | 国产欧美久久久久久 | 日本网站在线 | 国内精品卡一卡二卡三 | 午夜天堂av| 无码av免费一区二区三区四区 | 人妻少妇不满足中文字幕 | 中文字幕在线字幕中文 | 亚洲中文波霸中文字幕 | 91精品国产美女在线观看 | 又色又爽又黄高潮的免费视频 | 97超碰国产精品无码 | 久久无码人妻热线精品 | 理论片久久 | 好吊射视频988gaocom | 中文字幕一本 | 丝袜精品 欧美 亚洲 自拍 | 97无码视频在线看视频 | 日本3级网站| 亚洲色大成网站www久久九九 | 中文字幕av无码免费久久 | 亚洲黄色免费看 | 国产精品久久国产三级国不卡顿 | 国产91在线播放9色不卡 | 日韩无套无码精品 | 囯精品人妻无码一区二区三区99 | 国产麻豆果冻传媒视频观看 | 国产午夜激无码av毛片 | 7m视频成人精品分类 | 国产精品成人网址在线观看 | 久久艹免费视频 | 青草青草久热精品视频在线观看 | 你懂的手机在线观看 | 亚洲欧美成人久久综合中文网 | 天天爱天天操天天干 | 网站在线看 | 亚洲精品一卡2卡三卡4卡5卡 | 午夜男女爽爽爽免费体验区 | 久久久精品中文字幕 | 欧美亚洲国产成人一区二区三区 | 一区二区三区午夜免费福利视频 | 久久久久久久久久久91 | 久久99精品久久久久子伦 | 又大又长粗又爽又黄少妇毛片 | 粗大的内捧猛烈进出看视频 | 欧美草逼网站 | 日韩丝袜欧美人妻制服 | 久久夜色网 | av在线播放日韩亚洲欧我不卡 | 日本欧美www | 欧美激情小视频 | www.youjizz.com在线观看 | 四虎av在线播放 | 四虎网址最新 | 日韩在线观看一区二区 | 亚洲激情av在线 | www.在线国产| 婷婷五月深深久久精品 | 久久久久国产精品人妻aⅴ牛牛 | 香蕉久久精品日日躁夜夜躁夏 | 亚洲伊人影院 | 麻豆精品一区二区综合av | 新版天堂资源中文8在线 | 性色a∨精品高清在线观看 岛国激情片 | 免费看国产曰批40分钟 | 色呦呦视频网站在线观看h污 | 熟女人妻少妇精品视频 | 免费的黄色影片 | 天无日天天射天天视 | 综合色婷婷一区二区亚洲欧美国产 | 国产成人三级三级三级97 | 久久久99久久 | 末成年女av片一区二区丫 | 天堂草影院 | 伊人色综合九久久天天蜜桃 | 韩国午夜福利片在线观看 | 欧美一区二区三区精品 | 人人妻人人狠人人爽 | 欧美寡妇性猛交xxx免费 | 少妇性l交大片久久免费 | 日日操天天 | 欧美日韩一卡2卡三卡4卡 乱码欧美孕交 | 成人性生交7777 | 少妇爽滑高潮几次 | 国产成人综合自拍 | 国产成人无码a区在线观看视频 | 亚洲另类天堂 | 特级黄www欧美水蜜桃视频 | 日韩人妻无码制服丝袜视频 | 九九av在线| 亚av在线 | 电影 国产 偷窥 亚洲 欧美 | 色婷婷啪啪| 成人一级黄色毛片 | 亚洲字幕在线观看 | 少妇人妻av毛片在线看 | 日韩黄网 | 精品国产综合成人亚洲区 | www.youjizz在线 | 国产99视频精品免费视频7 | 人妻系列无码专区免费视频 | 性饥渴的少妇av无码影片 | 日日噜噜噜夜夜爽爽狠狠视频, | 欧美视频亚洲图片 | 久草热久 | 国产美女在线精品免费观看 | 成人无码免费视频在线播 | 国产又黄又硬又湿又黄的网站免费 | 欧美片一区二区 | 五月婷在线视频 | 2020最新无码福利视频 | 97视频总站 | 强奷乱码欧妇女中文字幕熟女 | 超碰在线资源站 | 亚洲三级图片 | 波多野结衣一区二区三区av高清 | 在线伊人av | 成人免费视频视频在线观看 免费 | 日韩精品片 | 国产suv精品一区二区883 | 欧洲肉欲k8播放毛片 | 麻豆av久久av盛宴av | 日本一区二区免费在线 | 欧美亚洲一级 | 天天色天天色天天色 | 久久国产精品大桥未久av | 激情av在线播放 | 久久久91精品 | 欧美爱爱小视频 | 久久久精品人妻无码专区不卡 | 国产又色又爽又黄的视频在线观看 | 曰韩无码av一区二区免费 | 在线看片免费人成视频影院看 | 色一情一乱一伦一区二区三区四区 | 九九九亚洲 | 人人爽人人澡人人人妻、百度 | 成年片在线观看 | 91丨九色丨蝌蚪丨少妇在线观看 | 久久国产亚洲精选av | 亚洲精品一区二区三区婷婷月 | 中文字幕亚洲中文字幕无码码 | 日产国产精品精品a∨ | 色婷婷久久 | 青青草网站在线观看 | 欧美一级大片免费看 | 成在人线av无码免观看麻豆 | 狠狠躁夜夜躁人人爽天天bl | 国产资源在线播放 | 免费观看黄色 | 色网站在线免费观看 | 九九热免费精品 | 人人插插 | 日本精品4080yy私人影院 | 亚洲色av性色在线观无码 | 国产精品色拉拉 | 日日日网站| 最新版中文官网资源 | 国产做受蜜臀 | 欧美香蕉爽爽人人爽 | 日韩一区二区三区无码免费视频 | 色翁荡熄又大又硬又粗又动态图 | 蜜桃av少妇久久久久久高潮不断 | 中文人妻av久久人妻水密桃 | 男人视频网 | 日本欧美视频在线观看三区 | 国产成人无码a区在线观看视频免费 | 丁香啪啪综合成人亚洲小说 | 精品精品国产男人的天堂 | 成人污视频在线观看 | 69国产成人综合久久精品欧美 | 亚洲精品国精品久久99热一 | 亚洲va久久久噜噜噜久久无码 | 日本一区二区更新不卡 | 综合色区亚洲熟妇另类 | 成人在线小视频 | 一级精品视频 | 亚洲一区二区三区日本久久九 | 亚洲无在线 | 92国产精品午夜免费福利视频 | 91精产品一区一区三区40p | 午夜色大片在线观看 | 18禁黄网站禁片免费观看不卡 | 中文字幕无码免费不卡视频 | 国产日产欧产精品精乱子 | 一二三四视频社区在线播放中国 | 国产精品av一区二区 | 亚洲最大av无码网站最新 | 亚洲色大成网站www尤物 | 日韩精品毛片无码一区到三区 | 爱爱高清免费视频 | 一区二区三区回区在观看免费视频 | 久久出品必属精品 | 日本韩国亚洲欧美在线 | 日韩精品无码专区免费播放 | 97自拍视频| 国产极品久久久久久久久 | 麻豆文化传媒精品一区观看 | 一道本无吗一区 | 亚洲中文字幕久久精品无码喷水 | 一本大道香一蕉久 | 奇米影视狠狠干 | 午夜亚洲精品 | 欧美人妖在线观看 | 欧美激情小说视频 | a4yy午夜 | 精品无码黑人又粗又大又长 | 中文字幕婷婷日韩欧美亚洲 | 四虎国产成人永久精品免费 | 国产色精品久久人妻 | 黑人巨大精品欧美一区二区一视频 | 鲁丝一区二区三区免费 | 国产午夜精品一区二区三区四区 | 狠狠色狠狠色综合日日五 | 亚洲 综合 欧美 动漫 丝袜 | 亚洲 日韩 欧美 成人 在线观看 | 99久久无色码中文字幕 | 亚洲 欧美 综合 在线 精品 | 日韩精品久久一区二区三区 | 91久久久久久久一区二区 | 免费看黑人男阳茎进女阳道视频 | 婷婷五月综合色中文字幕 | 欧美在线色视频 | 色多多在线观看视频 | 日韩无码在钱中文字幕在钱视频 | 欧美播放| 精品国产午夜理论片不卡 | 中文精品一卡2卡3卡4卡 | 中文字幕久久精品一二三区 | 午夜视频一区二区三区 | 国内精品久久人妻无码妲己影院 | 天堂成人网 | 国产精品女优 | 337p日本欧洲亚洲大胆精品555588 | 成人av18 | 国产精品18久久久久久白浆动漫 | 性做久久久久久久免费看 | www.91视频聊天.com | 在线不卡日本v一区二区 | 免费国产自线拍一欧美视频 | 精品国产一区二区三区在线观看 | 亚洲精品探花 | 成人午夜大片免费看爽爽爽 | 亚洲国产精品无码久久青草 | 久久国产精品99精品国产987 | 青青草国产免费国产是公开 | 日本最新免费二区 | 72式性无遮挡免费视频隐私的 | 亚洲欧美日韩高清 | 欧洲a级片| www.自拍偷拍 | 老熟女乱子伦 | 久久国内精品一区二区三区 | 99久久亚洲综合精品成人 | 国产精品视频2020年最新视频 | 国产高清在线a视频大全 | 韩日在线视频观看 | 国产69精品久久久久久人妻精品 | 三级在线看中文字幕完整版 | 日本精品视频一区 | 青青草大香焦在线综合视频 | 天堂在线中文字幕 | 久久人人97超碰a片精品 | 亚洲www. | 小宝贝荡货啊用力水湿aⅴ视频 | 久久这里只有精品国产 | 欧美黑人与白人精品a片 | 久久国产精品日本波多野结衣 | 无码国产69精品久久久孕妇 | 自慰小少妇毛又多又黑流白浆 | 亚洲欧美另类日本 | 天堂视频中文在线 | 久热超碰 | 国产精品ⅴ无码大片在线看 | 国产高清在线一区二区 | 男女av免费| 91在线精品一区二区三区 | 欧美a∨视频 | 国产成人免费97在线 | 伊人色综合影院 | 国产三级午夜理伦三级连载时间 | 国产福利合集 | 婷婷伊人五月色噜噜精品一区 | 亚洲中文久久精品无码照片 | 色窝窝无码一区二区三区色欲 | 亚洲性无码av在线dvd | 日韩 亚洲 欧美 国产 精品 | 国产激情无码一区二区app | 懂色av一区二区夜夜嗨 | 成人毛片视频网站 | 久久久久久亚洲精品无码 | 亚洲欧洲国产精品香蕉网 | 欧美激情视频网址 | 久久久国产亚洲精品 | 精品字幕 | 国产国产裸模裸模私拍视频 | 蜜桃一区二区三区 | 久久视频一区 | 午夜无码片在线观看影院 | 国产欧美另类精品久久久 | 天堂网www最新版官网 | 欧美大片免费观看网址 | 成人av片无码免费天天看 | 日本网站免费观看 | 亚洲天堂av网站 | 伊人久久亚洲精品一区 | 国产1卡2卡三卡四卡精品 | 啪啪.com| 亚洲日韩国产av无码无码精品 | 女主被强啪的动漫视频 | 可以免费观看的av毛片下载 | 香港三日本8a三级少妇三级99 | 欧美黑人做爰爽爽爽 | 伊人网伊人影院 | 午夜av亚洲女人剧场se | 毛片视 | 久久理论视频 | 夜夜狠狠操 | 国产第一区第二区 | av色综合久久天堂av色综合 | 性欧美videos 另类喷潮 | 国产91视频网 | 91精品视频网| 成人电线在线播放无码 | 亚洲人成未满十八禁网站 | 久久久6精品成人午夜51777 | 国产精品自产拍在线观看中文 | 熟妇人妻av无码一区二区三区 | 国产日产精品一区二区三区四区 | 偷拍福利视频一区二区三区 | 一区二区三区四区视频在线观看 | 最近中文字幕在线 | 欧美日本在线播放 | 国产午夜精品一区二区三区欧美 | 色欲a∨无码蜜臀av免费播 | www.欧美成| av一本久道久久波多野结衣 | 欧美日本高清在线不卡区 | 天天做天天欢摸夜夜摸狠狠摸 | 在线草| 久久丝袜脚交足免费播放导航 | 久久久精品日本 | 一本大道区一区二区三乱码八 | 蜜臀av国内精品久久久夜夜蜜臀 | 狠狠做五月深爱婷婷伊人 | 国产精品片aa在线观看 | 欧美综合婷婷欧美综合五月 | 国产涩涩视频在线观看 | 少女韩国电视剧在线观看完整 | 亚洲精品少妇高清30p | 亚洲熟女av综合网五月 | 无码人妻丝袜在线视频 | 国产一二三视频 | 色综合天天天天综合狠狠爱 | 色哟哟在线视频精品一区 | 日韩一区二区三区视频在线 | 中国少妇内射xxxhd免费 | 中文字幕人妻无码专区app | 色综合色综合色综合色欲 | 国产精品三级一区二区 | 免费无遮挡又黄又爽网站 | 亚洲中文字幕琪琪在线 | 欧美一级淫片aaaaaaa喷水 | 白嫩少妇xxxxx性hd美图 | 国产日韩久久 | 色欲狠狠躁天天躁无码中文字幕 | 亚洲天堂最新地址 | 色噜噜亚洲精品中文字幕 | 亚洲黄色小视频在线观看 | av在线播放一区二区 | 国产精品黄色网址 | 国产又粗又硬又爽的视频 | 久久黄色精品网站 | 天堂av片 | 少妇粗大进出白浆嘿嘿视频 | av丝袜美腿 | 99精品视频在线播放免费 | 黑人巨大精品欧美一区二区 | 色悠久久久久久久综合网伊人 | 12萝自慰喷水亚洲网站 | 亚洲第一色在线 | 欧美色图片一区 | 国产黄色片免费在线观看 | 三级欧美日韩 | 国产精品亚洲五月天高清 | 国产精品午夜剧场免费观看 | 天堂在线最新 | 久久久国产成人一区二区三区 | 国产精品久久精品 | 欧美日韩亚洲免费 | 蜜臀久久久久久999 亚洲成人教育av | 羞羞色男人的天堂 | va婷婷在线免费观看 | 午夜久久久 | 免费观看一区二区三区视频 | 毛片的网址 | 国产精品久久久久久久毛片 | 成年女人午夜毛片免费 | av无码不卡在线观看免费 | 日韩av三级在线观看 | 日日拍夜夜嗷嗷叫|日日摸 中文在线字幕观看 | 91精品日产一二三区乱码 | 一本色道久久88亚洲精品综合 | 看免费黄色片 | 欧美成年人视频在线观看 | 网红av在线| 狠狠干狠狠爱 | 久久成人国产精品入口 | 国精品人妻无码一区二区三区性色 | 极品少妇被猛得白浆直流草莓视频 | av成人毛片| 亚洲日产韩国一二三四区 | 99在线观看精品视频 | 粉嫩虎白女p虎白女在线 | 四面虎影最新播放网址 | 免费人成网站在线观看不卡 | 中文字幕欧美亚洲 | 888久久久 | 人妻无码久久一区二区三区免费 | 成人精品在线观看 | 日日日日做夜夜夜夜做无码 | 毛片免费全部播放无码 | 91精品国产综合久久久亚洲 | 男女的隐私视频播放 | 色欲av永久无码精品无码 | 欧美激情免费看 | 国产成人精品一区二区三区四区 | 久久午夜免费观看 | 欧美日韩一区二 | 国产极品美女高潮无套 | 小箩莉末发育娇小性色xxxx | 久久亚洲综合国产精品99麻豆的功能介绍 | 亚洲欧美系列 | 色琪琪综合男人的天堂aⅴ视频 | 亲近乱子伦免费视频 | 深夜视频在线免费 | 久久久精品国产99久久精品芒果 | a在线观看免费网站大全 | a级片久久 | 色av综合网| 亚洲性欧美 | 免费99视频 | 真实交videos乱叫娇小 | 久久爱av影视天堂影视 | 国产黄色aaa| 亚洲第一区第二区 | 少妇人妻无码专区视频免费 | 国产精品国语对白 | 麻豆午夜视频 | 日日日干 | 亚洲天堂一| 亚洲 另类 小说 国产精品无码 | 久草免费在线观看视频 | 亚洲精品无码国产 | 国产精品久久久久久久久久久免费看 | 天天狠天天透 | 国产成人18黄网站免费观看 | 亚洲欧美成人在线 | 国产嘿嘿嘿视频在线观看 | 国产无遮挡无码很黄很污很刺激 | 国产v亚洲v天堂无码久久久 | 精品美女国产互换人妻 | 亚洲六月丁香色婷婷综合久久 | 99久久精品无码一区二区三区 | 日韩久久无码精品不卡一区二区电影 | 成人av日韩| 捏胸吃奶吻胸免费视频网站 | 国产亚洲综合网曝门系列 | 91网站免费视频 | 人人人妻人人澡人人爽欧美一区 | 人妻少妇被粗大爽9797pw | 国产丝袜美女精品av | 国产特级毛片aaaaaa | 老司机精品视频一区二区 | 人人爽人人看 | 色多多视频在线播放 | 视频一区二区三区视频 | 成人综合网亚洲伊人 | 高清毛茸茸的中国少妇 | 久无码久无码av无码 | 手机在线观看你懂的 | 狠狠色狠狠色狠狠五月 | 免费成人av片 | 91精品婷婷国产综合久久性色 | 久久91精品国产91久久跳 | 日本淫片免费啪啪3 | 天干夜天天夜天干天2004年 | 华人少妇被黑人粗大的猛烈进 | 四虎影院久久 | 亚洲一区 日韩精品 中文字幕 | 亚洲国产精品高潮呻吟久久 | 91国产视频在线观看 | 天天摸日日操 | 亚洲中文字幕无码一区二区三区 | 国产初高中生真实在线视频 | 久久人人爽人人人人片av | 亚洲3p激情在线观看 | 99爱国产精品免费高清在线 | 91插插插插插 | 美女啪啪国产 | 日韩美女中出 | 内射老妇bbwx0c0ck | 国产吞精囗交免费视频 | 好大好湿好硬顶到了好爽视频 | 国产福利在线视频蜜芽tv | 欧美碰碰碰| 噼里啪啦免费高清看 | 毛片女人18片毛片女人免费 | 97人人澡人人爽人人模亚洲 | 在线欧美亚洲 | 免费观看添你到高潮视频 | 精品999久久久 | 精品国产成人a区在线观看 性欧美丰满熟妇xxxx性5 | 中文字字幕在线中文无码 | 在线 偷窥 制服 另类 | 天堂av免费在线 | 久久久久国产精品久久久久 | 日韩专区在线观看 | 无码人妻丰满熟妇区10p | 亚洲无av在线中文字幕 | av资源天堂 | 国产精品爱久久久久久久电影 | 国产精品香蕉成人网在线观看 | 亚洲伊人久久大香线蕉 | 老司机午夜福利试看体验区 | 91精品国产综合久久久蜜臀图片 | 青青草超碰在线 | 免费看美女部位隐私网站 | 亚洲黄色小视频 | 国产精品亚洲色婷婷99久久精品 | 天天色天天爱 | 国产理论视频在线观看 | 自拍偷在线精品自拍偷无码专区 | 欧美亚洲综合网 | 黑人巨大xxxxx性猛交 | 精品一区二区三区在线播放 | 国产曰肥老太婆无遮挡 | 人妻aⅴ中文字幕 | 天堂视频在线免费观看 | 无遮挡十八禁污污污网站 | 久久99精品国产麻豆婷婷洗澡 | 一级片视频在线 | 中文字幕乱码人妻一区二区三区 | 91私拍| 亚洲国产2021精品无码 | 一级淫片a| 中文字幕亚洲无线码在线一区 | 国产美女视频免费观看网址 | 亚洲a级在线 | 伦理片无码电影在线看 | 131美女爱做视频免费 | 夜夜爽久久揉揉一区 | 免费无码一区无码东京热 | 国产精品无码无卡在线观看久 | aaa一级黄色片 | 殴美激情 | 亚洲精选久久久 | 国产免费无遮挡吸乳视频下载 | 国产精品久久久久桃色tv | 成人av一级 | 亚洲日本在线观看 | 久久精品成人热国产成 | 日本少妇高潮叫床声一区二 | 国产精品人人做人人爽人人添 | 日本视频在线播放 | 丰满少妇偷人51视频在线观看 | 久久久久黑人强伦姧人妻 | 亚洲欧洲自拍偷拍 | 日日狠狠久久偷偷色 | 丰满人妻熟妇乱又伦精品视频三 | 天天综合日 | 91完整视频| 中文字幕日韩欧美一区二区 | 亚洲在线精品视频 | 女人裸露免费视频无遮挡网站 | 亚洲精品伊人久久久大香 | 韩日精品视频 | 中文字幕乱码亚洲∧v日本 成在人线av无码免费高潮水老板 | 日本又色又爽又黄的a片18禁 | 无码人妻h动漫中文字幕 | 男人av的天堂 | 国产精品无码av不卡顿 | 不卡av电影在线 | 天天爽天天爽天天片a | 亚洲涩涩在线 | 久久中文字幕人妻av熟女 | 亚洲色图2| 亚洲娇小与黑人巨大交 | 青青草精品在线 | 亚洲第一黄 | 美国特色黄a大片 | av天堂中av世界中文在线播放 | 国产免费一级视频 | 免费三片在线观看网站 | 国产日韩一区二区三 | 国内自拍真实伦在线视频 | 国产无套在线 | 国产成人av无码片在线观看 | 欧美亚洲一级 | 人妻夜夜爽天天爽一区二区 | 动漫无遮挡h纯肉亚洲资源大片 | 乱辈干柴烈火小说 | 91日本在线观看 | 毛片直接看 | 日本亲与子乱人妻hd | 久久精品无码午夜福利理论片 | 国产第2页 | 欧美色图校园春色 | 男人打飞出精视频无码 | 国产午夜精品一区二区三区欧美 | 伊人色综合一区二区三区 | 国产欧美日韩不卡 | 不卡中文字幕在线观看 | 日本怡春院一区二区三区 | 小嫩批日出水视频 | 色婷婷综合久久久 | 日本少妇高潮正在线播放 | 人人爱人人乐免费 | 超碰在线人人 | 伊人蕉久中文字幕无码专区 | 国产办公室秘书无码精品99 | 久久久久久香蕉 | 久久99精品久久久影院老司机 | 国产痴汉av久久精品 | 亚洲精品久久久久久久久久 | 97人人揉人人捏人人添 | 四虎永久在线精品免费网站 | 亚洲伊人一本大道中文字幕 | 成人欧美一区二区三区黑人免费 | 91精品久久久久久久久青青 | 成人无码视频在线观看网站 | 国产乱人伦精品一区二区三区 | 一本一久本久a久久精品综合 | 久天啪天天久久99久孕妇 | 久久久久久久久嫩草精品乱码 | 变态 另类 欧美 大码 日韩 | 超碰九色 | 日产精品久久久久久久性色 | 噜噜色综合天天综合网mp3 | 久久99精品久久久久婷综合 | 亚洲福利视频导航 | 国产亚洲精品网站 | 日韩理论影院 | 精品久久久一二三区播放播放播放视频 | 狠狠色噜噜狠狠狠狠色综合久老司机 | 美女国产毛片a区内射 | 欧美偷拍视频 | 久久激情五月 | 91久久国产综合精品女同国语 | 少妇毛片久久久久久久久竹菊影院 | 一级特级毛片 | 另类视频一区 | 亚洲乱码国产乱码精品精姦 | 国产午夜福利精品一区二区三区 | a极黄色片 | 一个人看的www视频免费观看 | 97福利影院 | 在线免费观看黄色av | 在线视频免费无码专区 | 无码激情亚洲一区 | 51自拍视频在线观看 | 天堂网91| 乐播av一区二区三区在线观 | 99超碰在线观看 | 亚洲精品无码久久久久去q 国产亚洲精久久久久久无码77777 | 久久18禁高潮出水呻吟娇喘 | 色图在线观看 | 国产三级久久久久 | 久久精品国产大片免费观看 | 亚洲精品天堂成人片av在线播放 | 天堂av中文字幕 | 亚洲精品国产第一综合99久久 | 久久国产精品影视 | 国产二区精品 | 99久久精品费精品 | 性xxxx搡xxxxx搡按摩 | 好男人蜜桃av久久久久久蜜桃 | 国产精品视频久久久 | 嫩草影院网站 | 免费大黄网站 | 免费国产污网站在线观看 | 俄罗斯毛片 | 国产精品美女久久久m | 久久久美女 | 果冻传媒一区 | 亚洲成人精品在线播放 | 91影院在线播放 | 久久人人爽爽爽人久久久 | 中文字幕av高清 | 日本毛茸茸的丰满熟妇 | 52avavjizz亚洲精品 | 国产卡1卡2 卡三卡在线 | 日韩精品中文字幕无码一区 | 五十路熟女丰满大屁股 | 国产亚洲日韩在线一区二区三区 | 亚洲日韩看片无码超清 | 国产福利视频一区 | 国产三级aⅴ在在线观看 | 久久影视一区 | 日本韩国欧美一区二区三区 | 精品国产一区二区三区忘忧草 | 中文字幕精品亚洲字幕资源网 | 亚洲xxxxxxxxx| 婷婷五情天综123 | 久久无码人妻精品一区二区三区 | 欧美日韩a| h片在线看| 国产成人亚洲精品无码h在线 | 亚洲成av人片在线观看高清 | 成人18毛片 | 久久999精品久久久有什么优势 | 999久久久欧美日韩黑人 | 国产午夜亚洲精品国产成人 | 91精品播放| 国产精品久久久av | 国产精品一区二区在线观看99 | 三上悠亚网站在线观看一区二区 | 伊人国产女| 少妇中文字幕 | 色婷婷狠狠久久综合五月 | 黄床片30分钟免费视频教程 | 亚洲一线二线三线品牌精华液久久久 | 在线āv视频| 久久精品亚洲成在人线av麻豆 | 欧美激情一区二区视频 | 色婷婷精品| 久久狠狠高潮亚洲精品 | 欧美亚洲精品一区二区 | 日本高清视频在线www色 | 国产精品亚洲片在线 | 日本免费一本一二区三区 | 日韩免费二区 | 国产一区二区黄色 | 国产成人综合久久 | 色噜噜在线 | 日韩av一区二区三区免费看 | 亚洲黄色在线免费观看 | 国产高清黄色 | 欧美人与动牲交片免费播放 | 韩国av片永久免费 | 又大又粗又黄的网站不卡无码 | 欧美成人天堂 | 人人干人人玩 | 亚洲男人最新版本天堂 | 私人成片免费观看 | 欧美多人片高潮野外做片黑人 | 日本一区二区三区免费播放视频了 | 国产免费又黄又爽又刺激蜜月al | 国产无套内射又大又猛又粗又爽 | 婷婷黄色网 | 国产麻豆网 | 美女视频黄频大全免费 | 国产日本精品视频在线观看 | 亚洲成人系列 | 91精品国产92久久久久 | 国产精品国产精品国产专区不蜜 | 亚洲鲁鲁| 日韩aaaaaa | 日本狠狠干 | 国精品人妻无码一区二区三区d3 | 精品久久久无码中文字幕边打电话 | 五月精品夜夜春夜夜爽久久 | 无码人妻丰满熟妇精品区 | 婷婷性多多影院 | 狠狠网站 | 999久久久免费看 | 久久精品天堂 | 国内揄拍国内精品久久 | 国产精品亚洲专区无码导航 | 日韩免费无码视频一区二区三区 | 久久综合图片 | 波多野结衣一区二区三区av高清 | 天堂在线资源8 | 国产乱子伦一区二区三区四区五区 | 色播在线精品一区二区三区四区 | 亚洲精品国产精品国自产在线 | 欧美天天搞| 天堂av免费看 | 亚洲福利天堂 | 狠狠看穞片色欲天天 | 久久久久久一 | 欧美日韩在线一区二区 | 亚洲a∨精品一区二区三区 亚洲色大成网站www永久麻豆 | www.久久久精品 | 制服久久| 亚洲色域网 | 日韩精品免费在线播放 | 国产真实交换多p免视频 | 国产真实偷乱视频 | 人人爽人人爽人人爽人人爽 | 成人a大片在线观看 | 精品国产天堂综合一区在线 | 亚欧在线观看视频 | 日本不卡不码高清视频 | 美女啪啪免费网站 | 亚洲仺av香蕉久久 | 亚洲成人日韩 | 国产欧美日韩精品在线 | 亚洲国产中文在线二区三区免 | 亚洲乱亚洲乱妇小说网 | 日韩乱淫 | 精品一区二区三区免费 | 夜久久久 | 亚洲日韩国产一区二区三区 | 日本xxxx肉体谢液体色液体 | 欧美jizz19性欧美 | 二区视频在线 | 国产精品国产三级国产aⅴ下载 | 国产欧美日韩亚洲一区二区三区 | 大色综合 | 朝鲜女人大白屁股ass孕交 | 色在线亚洲视频www 国产区亚洲一区在线观看 欧洲色网 | 欧美人与动牲交免费观看网 | 亚洲欧美成人一区二区三区在线 | 中文字幕 自拍偷拍 | 国产精品亚洲专区无码蜜芽 | 国产成人av在线播放不卡 | 中文字幕亚洲情99在线 | 亚洲日韩精品国产一区二区三区 | 天天爽夜夜爽视频 | 久久国产精品网 | 奇米影视888 | 国产大尺度视频 | 无遮挡粉嫩小泬久久久久久久 | 成人午夜激情 | 在线中文字幕有码中文 | 亚洲中文字幕精品久久久久久直播 | 免费九九视频 | 最新黄色av网站 | 亚洲熟妇av一区二区三区漫画 | 久久视频一区二区 | 国产麻豆 9l 精品三级站 | 国产毛片毛片精品天天看软件 | 国模欢欢炮交啪啪150 | 羞羞视频网页 | 亚洲国产v高清在线观看 | 成人你懂的 | 亚洲精品国产成人av | 亚洲国产欧美在线观看的 | a毛片大片 | 在线精品自偷自拍无码中文 | 清纯 唯美 亚洲 自拍 小说 | 97香蕉久久超级碰碰高清版 | 亚洲一区二区不卡视频 | 久久大香伊蕉在人线免费 | 在线播放无码字幕亚洲 | 国产一级粉嫩xxxx | 精品国产一区二区三区无码 | 色偷偷偷在线视频播放 | 国产欧美日韩在线中文一区 | 麻婆豆传媒一区二区三区 | 操操网av| 182午夜视频 | 少妇伊人| 丝袜人妻一区二区三区 | 巨大荫蒂视频欧美另类大 | 日韩经典视频 | 最近中文字幕免费观看 | 亚洲精品成人网 | 国产女人伦码一区二区三区不卡 | porny九色| 一本色道久久88精品综合 | 宅女午夜福利免费视频 | 一本—道久久a久久精品蜜桃 | 日韩中文字幕在线视频观看 | 精品国产免费第一区二区三区 | 日本大尺度吃奶做爰久久久绯色 | 国产四虎影院 | 人妻无码视频一区二区三区 | 午夜在线国产 | 亚洲国产成人久久综合同性 | 琪琪无码午夜伦埋影院 | 精品国产成人a区在线观看 性欧美丰满熟妇xxxx性5 | 天天天天综合 | 国产未成满18禁止免费看 | 日韩中文字幕在线视频观看 | 美女18禁一区二区三区视频 | 亚洲天堂二区 | 色婷婷综合久久久久中文 | 黄色一级国产 | 国产一级免费视频 | 体验区试看120秒啪啪免费 | 国产剧情麻豆女教师在线观看 | 国产大学生援交视频在线观看 | 女人啪啪免费av大片 | 亚洲国色天香卡2卡3卡4 | 亚洲精品国产一区二区小泽玛利亚 | 中文字幕日本免费毛片全过程 | 欧美国产精品久久久乱码 | 91狠狠操| 国产在线清纯极品美女援交 | 国产中文字幕不卡 | 欧美成人xxxx | 亚洲激情综合 | 日本高清www午色夜com | 最新91在线 | 日韩com | 久久精品国产99国产精品导航 | www.色欧美| 日本成熟少妇激情视频免费看 | 狠日狠干日日射 | 中文字幕第12页 | 久操成人| 男女真实毛片视频图片 | 久久精品视频免费 | 艳妇臀荡乳欲伦交换在线看 | 大胆欧美熟妇xx | 亚洲乱 亚洲乱 亚洲 | 51精产品一区一区三区 | 一区二区三区在线观看av | 国产精品美女www爽爽爽软件 | 欧美巨鞭大战丰满少妇 | 久久久久国产精品午夜一区 | 婷婷国产v亚洲v欧美久久 | 男人av在线 | 亚洲aⅴ男人的天堂在线观看 | 国产白嫩白嫩白嫩大学生 | 51精品久久久久久久蜜臀 | 国产精品一区二区久久乐夜夜嗨 | 99热在线免费 | 人人射网站 | 奇米综合四色77777久久 | 日韩精品一区二区在线视频 | 国产成人免费高清直播 | 日韩在线播放一区二区 | 久久久久久久影院 | 国产精品午夜未成人免费观看 | 天堂√在线中文官网在线 | 亚洲国产不卡视频 | 成人四虎| 日韩aⅴ视频 | 中文免费高清观看 | 免费人成激情视频在线观看 | 亚洲成人第一区 | 99精品国产一区二区三区不卡 | 国内少妇人妻丰满av | 亚洲色欲av无码成人专区 | 手机看片169 | 人人澡人摸人人添学生av | 亚洲图片欧美视频 | 天天操天天添 | 狠狠爱五月丁香亚洲综合 | 西西人体大胆瓣开下部自慰 | 91午夜国产 | 亚洲国产精品无码久久久不卡 | 91在线高清 | 无码国产精成人午夜视频 | 欧洲性开放大片免费无码 | 亚洲欧美另类久久久精品能播放的 | 99亚洲精品 | 国产桃色无码视频在线观看 | 国产午夜福利精品久久不卡 | 日批视频免费在线观看 | 超碰97免费在线 | 色欲色香天天天综合网站 | 亚洲加勒比无码一区二区 | 亚洲草草网| 香蕉eeww99国产精选免费 | 久久久久久久国产免费看 | 美日韩在线视频一区二区三区 | 欧美久久激情 | 在线视频精品中文无码 | 精品少妇v888av | 亚洲综合国产精品第一页 | 久久精品av一区二区三 | 亚洲国产三区 | 玩丰满少妇ⅹxx性人妖 | 免费看黄色片. | 超碰自拍97 | 精品视频网 | 中文字幕第38页 | 毛片自拍 | 国产寡妇亲子伦一区二区三区 | 青春草在线免费视频 | 九九久久精品国产波多野结衣 | 亚洲国产成人久久综合区 | 无码av中文一区二区三区桃花岛 | 青青草综合网 | 女人被狂躁60分钟视频 | 日本高清一区二区视频 | 亚洲图片在线观看 | 啊轻点内射在线视频 | 美妇激情偷伦小说 | 凹凸精品熟女在线观看 | 69色综合| 日韩成人免费观看视频 | 91美女视频 | 欧美一级淫片免费视频魅影视频 | 日韩精品三区 | 人妻中出无码中字在线 | 免费看久久 | 亚洲天堂导航 | 久久无码字幕中文久久无码 | 欧日韩在线视频 | 真人无码作爱免费视频 | 国产一区二区三区av在线无码观看 | 黄色精品在线观看 | 国产亚洲欧美另类一区二区三区 | 在线看片免费人成视频国产片 | 视频一区国产精品 | 精品国产自在精品国产精华天 | 亚洲一区二区三区香蕉 | 久久丫精品忘忧草西安产品 | 最新天堂中文在线 | 精品国产一区二区三区忘忧草 | 伊人久久精品视频 | 性欧美becpho高清hd | 国产综合精品久久 | 日本无遮羞教调屁股视频网站 | 国产男女猛烈无遮挡在线喷水 | 久久大香香蕉国产免费网vrr | 久久国国产免费999 日亚韩在线无码一区二区三区 | 91久久偷偷做嫩草影院 | 男女啪啪永久免费观看网站 | 1区2区3区高清视频 欧美成人精品高清视频 | 亚洲真人无码永久在线观看 | 久久亚洲男人第一av网站 | 久久精品国产999久久久 | www.日韩在线观看 | 红尘影院手机在线观看 | 日本aⅴ| 少妇aaaaa | 一级视频在线 | 人人看人人插 | www夜色 | 欧美另类人妻制服丝袜 | 日本又黄又爽又无遮挡的视频 | 亚洲a区在线观看 | 丝袜美腿一区二区三区动态图 | 亚洲三级影院 | 14萝自慰专用网站 | a欧美亚洲日韩在线观看 | 无翼乌18禁全肉肉无遮挡彩色 | 青青青在线观看视频 | jizzzz中国| 欧美综合乱图图区乱图图区 | 成人区人妻精品一熟女 | 91网站观看| 欧美综合自拍亚洲综合图 | 中文字幕一二 | 亚洲精品成a人在线观看网站 | 中文字幕在线免费视频 | 日韩中文字幕在线观看 | www国产精品内射 | 插一插射一射视频 | 免费视频无遮挡在线观看 | 女被男啪到哭的视频网站 | 日本爽快片100色毛片 | 水蜜桃亚洲一二三四在线 | 国产精品亚洲专区无码老司国 | 久久国产精品老女人 | 国产午夜片无码区在线观看爱情网 | 成人精品久久 | 大学生久久香蕉国产线看观看 | 日操夜干| 精品中文字幕在线观看 | 色惰日本视频网站www | 天天澡日日澡狠狠欧美老妇 | 婷婷四房综合激情五月在线 | 99精品久久久久久久免费看蜜月 | 久久人人97超碰精品888 | 国产毛片久久久 | 亚洲日韩av无码一区二区三区 | 色综合久久久久无码专区 | 玖玖在线观看视频 | 97无码精品综合 | 日韩中文字幕在线一区二区三区 | 久久看视频只这 | 中国老妇荡对白正在播放 | 欧美日韩一区二区精品 | 中文在线日本 | 成人同人动漫免费观看 | 国产一级揄自揄精品视频 | 欧美天堂在线视频 | 国产免费一区二区三区不卡 | 国产av一区二区三区最新精品 | 成人一区二区三区久久精品嫩草 | 中文字幕一区二区三区中文字幕 | 任我行视频在线观看国语 | 国产三级在线观看播放 | 欧美在线一| 亚洲自偷自拍另类12p | 97国产在线看片免费人成视频 | 婷婷夜色潮精品综合在线 | 尤物毛片| 91色啪 | 最新国产久免费视频在线观看 | 午夜无码无遮挡在线视频 | 91精品国产91 | 日本高清免费的不卡视频 | 少妇人妻系列无码专区系列 | 免费看男人j放进女人p的视频 | 国产精品美女久久久网av | 成人h精品动漫一区二区三区 | 天天色综合2 | 亚洲第7页 | 综合在线视频精品专区 | 午夜亚洲精品久久一区二区 | 日本一区二区三区免费视频 | 午夜影皖精品av在线播放 | 四虎884| 欧美熟妇另类久久久久久不卡 | 亚洲国产精品久久精品怡红院 | 亚洲午夜不卡无码影院 | 娇小xxxx性开放国产精 | 久久久久九九九九九 | 欧美亚洲国产另类 | 国产各种高潮合集在线观看 | 精品色影院 | 亚洲一区av无码少妇电影 | 1024日韩基地 | 99视频久久| 国产视频手机在线播放 | 邻居少妇张开腿让我爽了在线观看 | 91久久精品日日躁夜夜躁国产 | 四虎最新紧急更新地址 | 少妇激情偷公乱柔佳 | 亚洲中文字幕无码永久在线 | 亚洲精品久久中文字幕 | 少妇综合| 中文区第一页永久有效 | 国产丝袜在线精品丝袜不卡 | 国产精品久久久久久免费软件 | porny九色 | 人妻精品久久无码专区精东影业 | 在线观看一区视频 | 免费人成在线观看播放a | 特级aaaaaaaaa毛片免费视频 | 亚洲区欧美区综合区自拍区 | 夜夜狠狠擅视频 | 中文字幕有码在线观看 | 亚洲成a人片在线观看高清 东方av正在进入 | 久草在线观看福利视频 | 国产精品国产午夜免费看福利 | 特黄特黄欧美亚高清二区片 | 黄色av免费网址 | 四虎成人精品国产永久免费 | 国产精品18久久久久久久久久久久 | 婷婷开心激情 | 久久久久久国产精品999 | av男人天堂影院 | 久久最新免费视频 | 欧美xxxx黑人又粗又大 | 99视频导航 | 99精品国产高清一区二区 | 国产三级在线观看免费 | 操批网站| 成人免费午夜无码视频在线播放 | 久久天天婷婷五月俺也去 | 国产亚洲另类无码专区 | 久久精品国产一区二区电影 | 国产精品午夜无码av天美传媒 | 欧美在线视频不卡 | 有码中文av无码中文av | 国产精品揄拍500视频 | 成人性生交大片免费看在线播放 | 天天av天天操 | 成人爱做日本视频免费 | 午夜天堂av天堂久久久 | 国产成人免费视频 | 国产精品成人精品久久久 | 亚洲日本中文字幕乱码在线 | 国产精品久久久久久久久久久久久久久久久 | 91在线日韩 | 国产女人成人精品a区 | 亚洲午夜精品久久久久久久久久久久 | 91精品国产综合久久精品图片 | 亚洲男人第一天堂 | 隔壁邻居是巨爆乳寡妇 | 一二三区毛片 | 女乱高潮久久久久久爽爽 | 成人黄色免费观看 | 亚洲 欧美 中文 日韩aⅴ综合视频 | 91在线看片| 污污网站18禁在线永久免费观看 | 色狠狠av | 中国一区二区三区 | 亚洲无吗视频在线 | 欧美午夜在线观看 | 日韩aⅴ在线观看 | 波多野结衣在线视频网站 | 亚洲玉足av久久影视 | 亚洲国产精品二区 | 国产欧美日韩精品丝袜高跟鞋 | 亚洲一区欧美激情 | 中文字幕爆乳julia女教师 | 丰满的少妇被猛烈进入白浆 | 欧美午夜精品久久久久久孕妇 | 高潮又爽又无遮挡又免费 | 中文字幕国产一区 | 色妞色综合久久夜夜 | 同性女女黄h片在线播放 | 欧美精品在线免费 | a国产一区二区免费入口 | 夜夜躁日日躁狠狠久久av | 国产农村妇女精品久久 | 女教师淫辱の教室蜜av臀 | 日本三级香港三级乳网址 | 色人阁图片 | 国产69精品久久久 | 国产黄在线观看免费观看不卡 | 久久er99国产精品免费 | 在线观看黄a | 欧美一级黄色视屏 | 久久在线中文字幕 | 久久国产精品视频一区 | 2018av视频| 97在线视频免费观看 | 国产美女亚洲精品久久久久 | aa视频免费在线观看 | 国产无遮挡免费视频 | 黄视频福利 | 亚洲亚洲精品av在线动态图 | 免费的av网站手机版 | 亚洲国产另类久久久精品 | 欧美阿v高清资源不卡在线播放 | 欧美一区二区高清 | 亚洲国产精品日本无码网站 | 日日摸夜夜添夜夜添国产精品 | 日日日色 | 亚洲成在线aⅴ免费视频 | 久久婷婷五月综合色中文字幕 | 久久国产乱子伦免费精品 | 99精品视频免费在线观看 | 人人揉人人捏人人添 | 精品国产欧美一区二区 | 爱爱爱av | 久久久免费精品视频 | 岛国成人av | 国产精品欧美亚洲韩国日本久久 | 天天操操操 | 欧美颜射内射中出口爆在线 | 久久精品国产9久久综合 | 精品卡一卡二卡3卡高清乱码 | 中文国产成人精品久久久 | www.四虎影院在线观看 | 少妇扣逼视频 | 性色综合 | 制服视频在线一区二区 | 少妇被又粗又大猛烈进出播放高清 | 国产在线观看高清视频黄网 | 夜夜爽久久精品国产三级 | 亚洲 日韩 国产 有码 不卡 | 色综合天天狠 天天透天天伊人 | 未满十八勿入av网免费 | 色婷婷综合久久久久中文一区二区 | 国产亚洲精品自在久久vr | 国产91精品看黄网站在线观看动漫 | 2021av视频| 亚洲国产精品一区二区手机 | 欧美性猛xxx | 人人看人人舔 | www伊人| 99国内精品久久久久影院 | 永久免费在线观看视频 | 天天狠天天干 | 国产777777线观看视频 | 亚洲情网站 | 色婷亚洲五月 | 成人区人妻精品一区二区不卡 | 亚洲处破女av日韩精品 | 99热精品久久 | 一本色道久久综合亚洲 | 欧美另类xxxx野战 | 国产乱人伦av在线a更新 | 日日噜噜噜夜夜狠狠久久蜜桃 | 91看片免费版 | 小明永久2015xxx免费看视频 | 亚洲最大av无码网站 | 成人一级视频在线观看 | 香港三日本三级少妇66 | 人妻中出受孕 中文字幕在线 | 国产精品久久久久无码av | 久久我不卡 | 亚洲欧洲日本一区二区三区 | 国产亚洲一区二区三区在线观看 | youjizz.com自拍 | 国产在线拍揄自揄拍免费下载 | 欧美一区在线视频 | 1024精品久久久久久久久 | 精品国产一区二区三区2021 | 99国产精品无码专区 | 噼里啪啦在线看免费观看视频 | 国产美女裸体无遮挡免费视频 | 国产网站黄色 | 66com色麻豆 亚洲无套 | 欧美激情1区2区3区 亚洲一区二区色图 | 好看的91视频 | 国产欧美一区二区三区在线看 | 日韩在线高清 | а 天堂 在线 | 极品白嫩高潮呻吟喷水av | 中文字幕人成无码免费视频 | 亚洲欧洲∨国产一区二区三区 | 成人一级片网站 | 色视频观看 | 2025成人免费毛片视频 | 久久亚洲综合网 | 国产人妖xxxx做受视频 | 欧美视频免费在线 | 国产日韩一区二区 | 国产精品露脸视频 | 亚洲精品拍拍央视网出文 | 亚洲乱码日产精品bd在线 | 99久久婷婷国产综合精品 | 少妇裸体淫交免费视频网站 | 欧美寡妇性猛交xxx片 | 欧美一区免费观看 | 在线精品国精品国产尤物 | 天天爱天天做天天大综合 | 欧美日韩综合一区二区 | 久久视频免费看 | 人人入人人| 永久免费的无码中文字幕 | 琪琪午夜福利免费院 | 日本免费最新高清不卡视频 | 久久第四色| 天堂中文av在线 | 国产乱子伦无套一区二区三区 | 神马久久av | 国产极品美女高潮视频写真网址 | sao虎视频在线精品永久 | 成人精品视频99在线观看免费 | 天堂网2021天堂手机版 | 亚洲第一a | 高清国产亚洲精品自在久久 | 亚洲国产中文字幕在线视频综合 | 亚洲中文字幕无码久久 | 91av中文字幕 | 日韩欧美国产一区二区三区在线观看 | 免费无码久久成人网站入口 | 五月天国产精品 | 日韩精品网址 | 欧美日韩成人 | 国产资源在线观看 | 亚洲自偷自偷在线成人网站传媒 | 少妇饥渴偷公乱av在线观看涩爱 | 激情久久五月 | 91美女片黄在线观看 | 国产xxxx视频在线 | 色一情一乱一伦一区二区三区小说 | 中文日产无乱码av在线观 | 免费纯肉3d动漫无码网站 | av中文字幕第一页 | 免费精品一区二区三区在线观看 | 亚洲综合无码精品一区二区 | 日韩在线国产 | 成人小视频在线观看免费 | 精品午夜福利在线视在亚洲 | 色在线亚洲视频www 国产区亚洲一区在线观看 欧洲色网 | 无码纯肉动漫在线观看 | 综合精品久久久 | 97人妻无码一区 | 亚洲爽图 | 在线观看亚洲大片短视频 | av无码免费永久在线观看 | 97人摸人人澡人人人超碰 | 亚洲国产精品成人综合久久久久久久 | 精品1卡二卡三卡四卡老狼 亚洲精品久久30p | 亚洲国产av高清无码 | 97精品国产一区二区三区四区 | 国产最露的三级 | 亚洲自国产拍揄拍 | 国产免费久久久久久无码 | 中文字幕一区二区三区乱码 | 伊人av超碰伊人久久久 | 成人免费在线视频观看 | 亚洲中文字幕无码中文字在线 | 能在线看的av | 特级毛片在线大全免费播放 | 狠狠色综合网站久久久久久久高清 | 久久婷婷五月综合中文字幕 | 中文字幕在线观看91 | 国产裸体美女视频全黄扒开 | 国产精品无码人妻在线 | 亚洲视频一区二区三区四区 | 国产黄视频网站 | www网站在线观看 | 欧美日本在线播放 | 成人在线高清 | 日本少妇作爱视频 | 久久青草精品一区二区三区 | 性高潮影院 | 亚洲卡1卡2卡新区网站 | 国产不卡福利片在线观看 | 日本舌吻大尺度呻吟视频 | 欧美日本一区二区三区 | 国产一区av在线 | www.se99午夜.com | 久久全国免费视频 | 日产精品卡2卡三卡乱码网站 | 亚洲偷自拍拍综合网 | 中文字幕一区二区三区免费 | 久久国产午夜精品理论片34页 | 99精品久久久久久中文字幕 | 隣の若妻さん 波多野结 | 国产在热线精品视频99公交 | 国产精品又粗又长 | 伊人久久久av老熟妇色 | 中文字幕久久精品波多野结百度 | 日韩激情免费 | 亚洲中文字幕日产无码2020 | 久久精品中文无码资源站 | 欧美96一区二区免费视频 | 亚洲天堂精品视频 | 欧美综合久久久 | 亚洲自拍一区在线观看 | 无码人妻精品一区二 | 91精品国产综合久久久久久 | 久热精品视频在线观看 | 成人福利院| 欧美第一页| 国产一区丝袜高跟鞋 | 国产精品美女久久久久久2018 | 国产成人女人毛片视频在线 | 日本高清一区二区视频 | 99久久国语露脸精品国产色 | 51久久夜色精品国产麻豆 | 日韩在线不卡视频 | 亚洲手机看片 | 国产精品视频麻豆 | 免费很黄无遮挡的视频 | 强开小婷嫩苞又嫩又紧视频韩国 | 欧美久久精品一级c片 | 免费黄色欧美视频 | 国产97色在线 | 中国 | 情侣av | 国自产拍偷拍精品啪啪模特 | 欧美日韩第二页 | 四虎黄色| 男人舌头进女屁股视频免费 | 亚洲国产精品福利片在线观看 | 亚洲精品在线视频免费 | 好男人社区资源 | 国产精品专区免费观看软件 | 国产色诱视频在线播放网站 | tom成人影院新入口在线观看 | 国产成人av在线桃花岛 | 18禁成人网站免费观看 | 日日夜夜天天干 | 精品国产一区二区三区免费 | 日韩毛片 | 午夜视频在线观看网站 | 老司机福利在线观看 | 精品av一区二区三区不卡 | 国产精品亚洲精品日韩已满 | 北岛玲熟邻居bd在线观看 | 亚洲精品福利一区二区三区蜜桃 | 国产精品国产三级国产不产一地 | 亚洲欧美日韩国产制服另类 | 永久免费无码av在线网站 | 少妇的肉体aa片免费 | 少妇一级淫片免费放正片 | 大狠狠大臿蕉香蕉大视频 | 国产欧美亚洲精品第一页 | 精品国产一区二区三区色欲 | 久9视频这里只有精品8 | 中日韩精品卡一卡二卡3卡 日韩一级一区 | 欧美日韩国产中文字幕 | 2019最新中文字幕在线观看 | 久操视频精品 | 国产成人啪精品视频免费网站软件 | 久久久人 | 无码专区亚洲综合另类 | 1024视频在线 | 另类天堂网不卡另类系列 | 久99久精品免费视频热 | 中文字幕免费观看 | 黄色一级视频免费 | 亚洲精品无码久久久久牙蜜区 | 最新亚洲中文av在线不卡 | 日韩一区二区三区视频在线 | 免费看美女毛片 | 免费在线日韩av | 加勒比东京热无码一区 | 亚洲国产精品综合久久网络 | 亚洲黄视频 | 在线看片日韩 | 国产福利视频一区二区 | 国内精品久久久久久不卡影院 | youjizz中国少妇| 色狠狠久久aa北条麻妃 | 尤物九九久久国产精品的特点 | 91看片淫黄大片在线天堂最新 | 日韩视频一 | 亚洲深深色噜噜狠狠爱网站 | 亚洲一区影视 | 亚洲精品第一国产综合国服瑶 | 丰满无码人妻热妇无码区 | 免费精品国偷自产在线2020 | 亚洲国产日产无码精品 | 超碰在线成人 | 午夜无码大尺度福利视频 | 九色精品国产成人综合网站 | 天堂8中文 | 黄色视屏在线 | 午夜精品网站 | 国产卡一卡二卡三 | 97超碰精品| 波多野吉衣一二三区乱码 | 色.www | 欧美一区二区三区黄色 | 婷婷五月六月激情综合色中文字幕 | 91官网视频 | 国产女人的高潮国语对白 | 93精品国产乱码久久久 | 无码高清 日韩 丝袜 av | 欧美黑人超粗男潮 | 欧美高清国产 | 国产av夜夜欢一区二区三区 | 国产成人人人97超碰超爽8 | 国产精品igao视频网网址3d | 天天爽夜夜爽人人爽从早干到睌 | 日本亚洲精品 | 岛国免费av| 天天爱天天做久久狼狼 | 自拍偷亚洲产在线观看 | 国产人碰人摸人爱视频 | 亚洲欧洲中文日韩乱码av | 四虎国产精亚洲一区久久特色 | 亚洲日韩欧美一区二区三区在线 | 国产精品福利网站 | 精品人妻潮喷久久久又裸又黄 | 亚洲欧美一区二区成人片 | 北岛玲熟邻居bd在线观看 | 日韩一区二区三区在线 | 中出视频在线观看 | 国语精品自产拍在线观看网站 | 农村女人十八毛片a级毛片 国产乱子伦一区二区三区四区五区 | 亚洲午夜久久久久久久国产 | av噜噜在线 | 99视频在线 | 免费观看性行为视频的网站 | 五月婷婷婷婷 | 无码免费婬av片在线观看 | 亚洲日本高清在线aⅴ | 动漫av纯肉无码av电影网 | 青青视频网站 | 日韩高清在线观看永久 | 日韩精品免费在线观看视频 | 无码ol丝袜高跟秘书在线观看 | 伊人亚洲综合影院首页 | 亚洲另类av | 亚洲ww不卡免费在线 | 久久精品九九 | 国产乱码精品一区二区三区五月婷 | 亚洲人成色777777精品音频 | 久久综合成人 | 国产精品亚洲一区二区三区天天看 | 人妻人人添人妻人人爱 | 久久www免费人成看片好看吗 | 全部孕妇毛片丰满孕妇孕交 | 诱惑网综合 | 极品少妇被弄得高潮不断 | 高潮内射双龙视频 | 国产乱辈通伦影片在线播放亚洲 | 欧美成人aaaaⅴ片在线看 | 岬奈奈美av | 日韩免费视频观看 | 乱子真实露脸刺激对白 | 欧美超级乱婬视频播放 | 美女张开腿让男人桶爽 | 亚洲欧美日韩另类精品一区 | 老熟女五十路乱子交尾中出一区 | 国产在线不卡一区 | 色哟哟—国产精品 | 热久久免费视频 | 欧美大片18禁aaa免费视频 | 99久久成人国产精品免费 | 国产又粗又猛又大爽又黄老大爷视频 | 爱情岛论坛亚洲永久入口口 | 欧美夜夜爽 | 亲子性教育中文字幕 | 亚洲第一成年网 | 少妇高潮久久久久久软件 | 欧美性猛交ⅹxxx乱大交妖精 | 青青草无码伊人久久 | 日韩国产成人在线 | 国产亚洲精品aa片在线观看网站 | 黄a一级片 | 日韩在线欧美 | 波多野吉衣一区二区三区 | 永久免费观看的毛片视频 | 一个人看的www片免费高清视频 | 中文字幕一级二级三级 | 人人狠狠久久亚洲综合88 | 国产不卡福利片在线观看 | 亚洲天堂黄 | 有码中文字幕 | 四虎永久在线精品免费网站 | 日韩中文字幕久久 | 人摸人人人澡人人超碰手机版 | 国产仑乱无码内谢 | 国产精品无码嫩草地址更新 | 久久亚洲精品ab无码播放 | 久久精品中文字幕大胸 | 97超级碰碰碰碰久久久久 | 人妻忍着娇喘被中进中出视频 | 午夜小网站 | 黄色大片免费观看视频 | 国产成人免费永久在线平台 | 18禁黄网站男男禁片免费观看 | 欧美日韩一区二区三区不卡 | 五月综合网亚洲乱妇久久 | 日韩精品亚洲aⅴ在线影院 看美女毛片 | 免费午夜福利不卡片在线播放 | 夜添久久精品亚洲国产精品 | 日韩在线观看三区 | 亚洲成a人v | 欧美成人一区在线 | 亚洲午夜小视频 | 超碰在线97免费 | 国产字幕av| 影音先锋在线视频 | 国产一级爱c视频 | 成人亚洲综合 | 亚洲另类色图 | 口爆吞精一区二区久久 | 中日精品无码一本二本三本 | 丁香一区二区 | 色就是色欧美色图 | 免费观看潮喷到高潮 | 欧美在线观看19 | 中文字幕漂亮人妻熟睡中被公侵犯 | 男女无遮挡xx00动态图120秒 | 亚洲午夜精品在线 | 人禽无码视频在线观看 | 强被迫伦姧惨叫人妻系列 | 91精品在线免费观看 | 性猛交xxxx乱大交3 | 精品999视频 | 91av一区二区三区 | 制服 丝袜 有码 无码 中文 | 亚洲天堂av片 | 国产黄色精品网站 | 亚洲乱人伦中文字幕无码 | 国产成人无码3000部 | 国产精品污www在线观看 | 在线观看麻豆国产成人av在线播放 | 亚洲日韩欧美在线观看一区二区三区 | 又硬又爽又长又粗又大毛片 | 国产精品xxx| 婷婷精品久久久久久久久久不卡 | 午夜在线网址 | 伊人网在线视频 | 欧美日韩在线免费观看 | 影视先锋av资源噜噜 | 日韩欧美国产中文 | 狠狠色香婷婷久久亚洲精品 | 蜜桃视频在线观看免费视频网站www | 最近日本免费观看高清视频 | 国产在线超清日本一本 | 美女爽爽影院 | 色拍拍视频 | 久久婷婷一级淫片aaa谢语彤 | 日韩国产激情 | 中国女人内谢69xxxx免费视频 | 亚洲午夜国产 | 欧美视频在线播放 | 亚洲精品无码成人a片在线软件 | 男人舌头进女屁股视频免费 | 一级片久久久久 | 激情五月婷婷色 | 国产精品亚洲专区无码web | 在线看片免费人成视频电影 | 东北老女人高潮大叫对白 | 日韩第一页在线 | 午夜性色福利在线视频18观看 | 日本 在线播放 | 日日操天天操 | 中产乱码中文在线观看免费软件 | av片手机在线观看 | 超碰在线亚洲 | 伊人久久爱 | 欧洲一级黄 | 天天干夜夜噜 | 日本高清va在线播放 | 日韩视频精品在线 | 国内精品一区二区三区在线观看 | 亚洲手机av| 精品视频入口 | 国产精品久久久精品 | 99久久婷婷国产综合精品草原 | 蜜桃视频成人在线观看 | 综合网五月 | 久久久久成人精品无码 | 天天干夜干 | 91久久在线观看 | 亚洲精品综合一区二区三 | 国产免费极品av吧在线观看 | 欧美69视频 | 在线亚洲日产一区二区 | 欧美成人h亚洲综合在线观看 | 亚洲精品高清在线观看 | 制服丝袜另类专区制服 | 久久久久久久影院 | 欧美丰满熟妇性xxxx | 欧美一区二区三区免费在线观看 | 中文无码乱人伦中文视频在线v | 肉体暴力强伦轩在线播放 | 99国产在线精品视频 | 天天做天天爱天天综合色 | 无套大战乌克兰白嫩美女 | 丰满的少妇愉情hd高清果冻传媒 | 福利片国产 | 久久久成人精品视频 | 大j8黑人w巨大888a片 | 国产精品第一区揄拍无码 | 国产精品一区二区三区在线免费观看 | 97香蕉碰碰人人澡人人爱 | 国产黑色丝袜高跟在线视频 | 姝姝窝人体色www在线观看 | 免费无码成人片 | 手机在线不卡av | 精品无码成人片一区二区98 | 国产又色 | 在线不卡av片免费观看 | 欧美又粗大人妖一进一出 | 国产又爽又大又黄a片 | 久久精品久久电影免费 | 婷婷丁香色 | 日韩精品一区二区av在线观看 | 性做久久久久久久久久 | 国产原创91 | 国产乱妇乱子在线视频 | 成人无码在线视频网站 | 女人下边被添全过视频的网址 | 欧美性猛交xxxx黑人猛交 | 丁香激情五月 | 亚洲依依成人亚洲社区 | 国产精品伦理久久久久 | 国产精品激情欧美可乐视频 | 综合三区后入内射国产馆 | 午夜精品久久久久久99热小说 | 日韩激情综合网 | 成人久久18免费网站 | 9lporm自拍视频区九色 | 真实单亲乱l仑对白视频 | 色一情一乱一伦一区二区三区四区 | 欧美国产综合色视频 | 男女午夜猛烈啪啦啦视频 | 国产精品视频免费网站 | 亚洲精品久久久久久av | 91免费在线播放 | 欧美老熟妇乱子伦牲交视频 | 天天狠天天天天透在线 | 日韩性猛片aaaaaaa做受 | 欧美一区二区三区在线看 | 午夜高清免费视频 | 国产精品久久久天天影视 | 欧美熟妇色ⅹxxx欧美妇 | 久久夜夜操妹子 | 国产你懂得 | 天天躁日日躁狠狠躁喷水软件 | 欧美人与性动交α欧美精品图片 | 久久久噜噜噜www成人网 | 久久久久人妻一区精品 | 日本久久久久久久久久加勒比 | 欧美jizz18| 天天狠天天透天干天天 | 久久精品熟女亚州av麻豆 | 中文在线免费观看 | 好色亚洲 | 久本草精品 | 诱惑网综合 | 色丁香影院 | 都市激情自拍偷拍 | 国产成人久久77777精品 | 欧美久久天堂 | 成人h动漫精品一区二区原神 | 欧美成 人 在线播放视频 | 中文字幕一区二区三区四区欧美 | 嫩模写真一区二区三区三州 | 久章草视频| 欧美成aⅴ人在线视频 | 九一视频在线看 | 亚洲国产综合无码一区二区bt下 | 国产精品人妻99一区二区三区 | 欧美城天堂网 | 亚洲第一网站在线观看 | 欧美激情综合五月色丁香小说 | 国产一区二区三区内射高清 | 国产 亚洲 中文在线 字幕 | 国产色婷婷精品综合在线播放 | 久久久久久91香蕉国产 | 色av色| 我要看免费毛片 | 在线观看的av免费网站 | 久久最新视频 | 亚洲精品天堂久久久老牛 | 2018中文字幕第一页 | 一个本道久久综合久久88 | 色爱区综合五月激情 | 国产人妖ts重口系列 | а√天堂www在线а√天堂视频 | 国产又黄又硬 | 1区2区在线观看 | 国产欧美视频一区二区三区 | 激情免费网站 | 欧美猛少妇色xxxxx欧美片 | 国产美女自拍 | 777米奇色狠狠俺去啦 | 久久久久综合成人免费 | 久久99精品久久久久久水蜜桃 | 中国少妇乱子伦视频播放 | 国内精品久久久久影院中文字幕 | 大香大香伊人在钱线久久 | 中文字幕无码av正片 | 蜜桃视频在线观看www社区 | 超清无码波多野吉衣中文 | 又色又爽又黄无遮挡的免费观看 | 国产麻豆网 | 国产午夜亚洲精品午夜鲁丝片 | 久久丫精品系列 | 日日综合| 中国极品少妇xxxxx | 午夜久久乐 | 久久国产网站 | 黄a大片av永久免费 亚洲裸男gv网站 | 国产欧美一区二区精品性色 | 精品人妻码一区二区三区 | 中文字幕精品亚洲人成在线 | 色播影音好色 | 色综合久久中文综合网 | 国产成人av性色在线影院 | 国产精品视频福利 | 午夜dj在线观看高清在线视频完整版 | 黄网在线播放 | 亚洲人成无码网站在线观看 | 久久艹在线 | 日韩av无码中文无码不卡电影 | 久久久久久一区二区 | 狠狠色综合欧美激情 | 欧美熟老妇乱 | 男女无遮挡猛进猛出 | 在线看片日韩 | 国产日产久久高清欧美一区 | 久久无码人妻国产一区二区 | 欧美精品videosbestsex日本 | 欧美日韩在线一 | 色噜噜亚洲男人的天堂 | 九一精品视频 | 国产69堂免费视频 | 免费精品国产人妻国语 | 妺妺窝人体色www聚色窝 | 欧美精品在线看 | 男女激情视频网站 | av免费播放一区二区三区 | 亚在线观看免费视频入口 | 国产香蕉尹人在线视频你看看 | 激情欧美一区二区三区免费看 | 欧美高清一级 | 国产高清视频色拍 | 又粗又紧又湿又爽的视频 | 日韩视频一区二区三区在线观看 | 亚欧成人在线 | 日韩精品无码一区二区三区不卡 | 黄色91在线观看 | 国产高清在线自在拍网站 | 国产一级淫片a | 欧美色成人综合影院 | 欧美艳星nikki激情办公室 | 伊人大香线蕉精品在线播放 | 国产精品毛片va一区二区三区 | 午夜爱爱爱爱爽爽爽网站 | 免费看成人毛片 | 玖玖在线观看视频 | 国产亚洲精品久久久久婷婷瑜伽 | 人妻少妇av无码一区二区 | 欧美精品欧美极品欧美激情 | 国产一级揄自揄精品视频 | 国产资源久久 | 香蕉久久视频 | 欧美一区二区在线播放 | 日韩欧美在线一区 | 亚洲欧美另类在线观看 | 国产成人精品女人久久久 | 狠狠干夜夜 | 美女少妇翘臀啪啪呻吟网站 | 中文字幕 日本 | 麻豆国产在线精品国偷产拍 | 特级无码毛片免费视频播放 | 风间由美乳巨码无在线 | 麻豆国产成人av高清在线观看 | 日日操夜夜撸 | 国产超高清麻豆精品传媒麻豆精品 | 亚洲精品无码鲁网午夜 | 天堂最新版在线www官网中文地址 | 有码在线播放 | 无码人妻精品丰满熟妇区 | 久久无码人妻丰满熟妇区毛片 | 性色av一区二区三区无码 | 香蕉午夜视频 | 亚洲中文字幕久久精品无码喷水 | 老司机精品福利视频 | 黄色激情小说视频 | 毛片内射久久久一区 | 免费毛片在线 | 91视频国 | 欧美日韩国产a | www.av在线.com | 日韩国产亚洲高清在线久草 | 很色很爽很黄裸乳视频 | 伊人青青操 | 91精品久久久久久久久中文字幕 | 美女光屁屁无遮挡韩 | 欧美激情在线观看一区 | 国产又黄又爽又色的免费视频白丝 | 久久中文字幕无码一区二区 | 国语对白嫖老妇胖老太 | 日韩精品在线观看中文字幕 | 九九天堂网| 国产婷婷色一区二区三区四区 | 久热精品在线 | 少妇与子乱在线观看 | 亚洲图片日本v视频免费 | 国产精品无码一区二区桃花视频 | 日韩精品少妇一区二区在线看 | 欧美成人手机在线 | 日韩人妻中文无码一区二区三区 | 日韩欧美一区二区在线观看 | 国产一级在线视频 | 中文字幕日韩精品有码视频 | 色婷婷综合激情综在线播放 | 老子午夜精品无码不卡 | 欧美日韩在线视频播放 | 国产 日韩 欧美 中文 在线播放 | 中文字幕乱码久久午夜 | 国产欧美亚洲一区二区 | 乱码精品一区二区三区 | 强开乳罩摸双乳吃奶网站 | 91国产在线看 | 99热青青草 | 黄色一区二区三区视频 | 伊人狼人久久 | 国产精品久久久久高潮 | 少妇爽到呻吟的视频 | 国产欧美视频综合二区 | 草av| 久久这里只有精品国产 | 精品国产杨幂在线观看 | 少妇被黑人4p到惨叫在线观看 | 成人性生交大片免费看9999 | 国产美女无遮挡免费 | ts在线观看| 波多野结衣免费一区视频 | 日本一区中文字幕 | 日本一级待黄大片 | 吃奶呻吟张开双腿做受在线播放 | 成人欧美激情 | 色小说综合网 | aa精品 | 操出白浆视频 | 在线观看亚洲欧美 | 美女性高潮 | 老头把我添高潮了a片 | 巨人精品福利官方导航 | 色欲一区二区三区精品a片 爱韩av | 91免费大片 | 国产又爽又粗又猛的视频 | 亚洲成av人片在线播放无码 | 丁香花完整视频在线观看 | 亚洲人成网站在线播放动漫 | 久久精品夜色噜噜亚洲a∨ 国产男女乱淫真高清视频免费 | 国产高清亚洲精品视bt天堂频 | 日日碰狠狠躁久久躁96 | 一区www | 国产精品9999| 日日夜夜噜噜 | 色偷偷人人澡人人爽人人模 | 国产超碰人人做人人爱一二区视品 | 国人精品va在线观看免费视频 | 久久久亚洲最大ⅹxxx | 亚洲欲色欲香天天综合网 | 国产精品久久久久久久毛片明星 | 天堂中文在线8最新版地址 本道久久综合无码中文字幕 | 亚洲人成网站18禁止大app | 不卡一二三 | 四虎永久视频 | 国产精品久久久久久久久久新婚 | 在线中文字幕视频 | 亚洲欧洲精品成人久久曰影片 | 亚洲 欧美 国产 67194 | 中文字幕2017 | 中文字幕资源在线观看 | 一级午夜| 我要看www免费看插插视频 | 免费看国产一级片 | 人妻精品久久久久中文字幕69 | 久久综合九色综合97婷婷 | 亚洲男人天堂2020 | 国产97色在线 | 国产 | 亚洲欧美一区二区三区久久 | 4455成人免费观看 | 欧美成人午夜精品久久久 | 中文字幕亚洲一区二区va在线 | 亚洲精品国产精品国自产小说 | 少妇综合网 | 在线观看免费网页欧美成 | 国产成人精品亚洲777 | 久久久精品456亚洲影院 | 裸体性做爰免费视频网站 | 日本一本久草 | 亚洲字幕在线观看 | 日本一区精品 | 中文字幕亚洲高清精品一区在线 | 婷婷色色狠狠爱 | 日韩欧美精品有码在线洗濯屋 | 狼友网精品视频在线观看 | 性色做爰片在线观看ww | 亚洲精品一区二区三区四区乱码 | 国产女人成人精品a区 | 亚洲国产午夜精品理论片在线播放 | 国内激情在线 | 日韩一级高清 | 欧美综合一区 | 国产精品无码一二区免费 | 高中国产开嫩苞实拍视频在线观看 | 欧美成人怡红院一区二区 | 亚洲欧美偷拍另类a∨色屁股 | 天天射天天色天天干 | 国产精品久久久久一区 | 婷婷久久婷婷 | youjizz自拍 | 国产午夜精品一区二区三区 | 中文字幕91 | 视频二区在线观看 | 91原创视频| 黄色三级片毛片 | 本道av无码一区二 | 亚洲婷婷天堂 | 日韩人妻熟女中文字幕a美景之屋 | 久久久久久一区二区三区 | 久久久久人妻一区精品色 | 国产久免费热视频在线观看 | 97久久超碰精品视觉盛宴 | xx性欧美肥妇精品久久久久久 | 97人伦色伦成人免费视频 | 香蕉啪视频在线观看视频久 | 欧美黑粗大 | av在线播放免费 | 美女福利在线观看 | 精品人妖videos欧美人妖 | 国产乱子伦无码精品小说 | 日本少妇久久 | 亚洲一区免费 | 国产69精品久久久久乱码 | 粗大的内捧猛烈进出小视频 | 91视频入口 | 无码人妻丝袜在线视频红杏 | 精品蜜桃av| 后进极品白嫩翘臀在线视频 | 成人黄色激情视频 | 真人一毛片 | 国产成人无码国产亚洲 | 亚洲国产精品视频在线 | 亚洲狠狠婷婷综合久久 | 日韩激情视频一区二区 | 上海少妇和黑人老外做爰 | 一本之道色综合网站 | 三上悠亚在线精品二区 | 丁香婷婷色综合激情五月 | 18禁男女污污污午夜网站免费暖暖 | 国色天香一区二区 | 亚洲综合国产 | 中文字幕观看在线 | 国产精品色婷婷亚洲综合看 | 亚洲色图欧美在线 | 国产精品看高国产精品不卡 | 亚洲精选中文字幕 | 91精品国产综合久久久久久软件 | 波多野结衣中文字幕一区二区三区 | 51免费看成人啪啪片 | 久青草久青草视频在线观看 | 亚洲国产成人精品无码区软件 | 日本熟妇人妻ⅹxxxx国产 | 又色又爽又黄的美女裸体网站 | 无码专区视频中文字幕 | 一色桃子656中文字幕 | 丰满的少妇愉情hd高清果冻传媒 | 国产中年熟女高潮大集合 | 国产黄色一级片 | 欧美最猛性xxxxx国产 | 国产小便视频在线播放 | 人与禽一级全黄 | 中文av一区| 国产大片aaa | 男女高潮又爽又黄又无遮挡 | 欧美精品a∨在线观看 | 日韩欧美一区二区三区免费观看 | 天天曰天天 | 亚洲另类激情视频 | av无码电影在线看免费 | 嫩草大剧院 | 99久久国语露脸精品国产色 | 真人二十三式性视频(动) | 嫩草影院懂你的影院 | av明星换脸无码精品区 | 午夜成人精品福利网站在线观看 | 狠狠躁夜夜躁av网站中文字幕 | 在线视频免费观看你懂的 | 亚洲射图 | 欧美大屁股流白浆xxxx | 国产精品久久久久久久免费看 | av青青| 精品欧美国产 | 明星乱亚洲 | 图片小说视频一区二区 | 精品久久久中文字幕人妻 | 国产成人免费视频精品 | 中文人妻无码一区二区三区 | 色悠久久久久综合先锋影音下载 | 综合 欧美 亚洲日本 | 日韩欧美在线观看视频网站 | 国产av老师丝袜美腿丝袜 | 国产调教丨ⅴk | 男人的天堂在线无码观看视频 | 一区二区三区福利视频 | 亚洲日韩看片成人无码 | 久久受| 欧美操操网| av高清不卡| 野花社区www高清视频 | 欧美成人操 | 亚洲人人爱 | 久草.com | 国产精品16p | 欧美另类一区 | 成人免费无码大片a毛片抽搐 | 五月婷婷六月天 | 国产av午夜精品一区二区入口 | 亚洲性喷水 | 精品久久伊人 | 国产99青青成人a在线 | 国产欠欠欠18一区二区 | 91在线免费观看网站 | 久久99久久99精品免观看 | 一区二区三区美女 | 欧美顶级毛片在线播放 | 西西人体做爰大胆性自慰 | 五十路熟妇亲子交尾 | 国产精品久久久久久久妇 | 欧美日韩加勒比 | 亚洲综合另类小说色区一 | 一区二区三区四区五区在线视频 | 中文字幕成人精品久久不卡 | 18禁强伦姧人妻又大又 | 国产成人一区二区啪在线观看 | 久久zyz资源站无码中文动漫 | 免费色黄视频 | 欧美1区2区3区视频 亚洲av禁18成人毛片一级在线 | 天天色综合av | 中国一区二区三区 | 大乳丰满人妻中文字幕日本 | 精品伊人久久大线蕉色首页 | 久久久久亚洲精品天堂 | 狠狠色狠狠色综合久久 | 国产九九在线 | 亚洲精品国产字幕久久不卡 | 怡红院av久久久久久久 | 亚洲精品视频一区 | www.天天操 | 亚洲三区av| 日本一区精品 | 最新在线精品国自产拍福利 | 91av国产精品 | 日本免费精品一区二区三区 | 99久久国产露脸精品竹菊传媒 | 深夜福利看片 | 国产区图片区小说区亚洲区 | 爱爱资源网 | 欧美三级在线看 | 中文字幕不卡乱偷在线观看 | 国产刺激出水片 | 国产精品久久久久久亚洲调教 | 伊人网av | 中国免费黄色 | 超碰碰碰 | 少妇一级淫片免费放2 | 黄色一级一片 | 久久9国产| 精品综合 | 伊人网成人 | 欧美 亚洲 日韩 中文2019 | 亚洲精品国产美女久久久99 | 欧美成人精品二区三区99精品 | 中文字幕无码日韩专区 | 成年免费视频黄网站在线观看 | 中文无遮挡h肉视频在线观看 | 久久99精品久久久大学生 | 老妇做爰xxx视频一区二区三区 | 亚洲狼人伊人中文字幕 | 538精品视频在线观看 | а√天堂资源地址在线8观看 | 无码av中文字幕久久专区 | 精品人伦一区二区三区蜜桃视频 | 日本熟妇色一本在线看 | 亚洲精品国产av现线 | 欧美亚洲视频一区二区 | 色婷婷久久久swag精品 | 一本久久综合亚洲鲁鲁五月天 | 中日躁夜夜躁 | 国产又黑又粗又黄又爽对白 | 亚洲高清视频在线观看 | 亚洲蜜芽在线精品一区 | 免费无码av片在线观看 | 日韩人妻无码免费视频一区二区 | 99爱精品| 国产精品99久久久久久宅男 | 综合婷婷| 麻豆91精品91久久久的内涵 | 亚洲国产果果在线播放在线 | 一个添下面两个吃奶把腿扒开 | a精品| 欧美啪啪一区二区 | 成人性做爰aaa片免费看不忠 | 亚洲日本高清一区二区三区 | 伊人久久大香线焦av色 | 你懂的网址在线 | 91亚洲精品国偷拍自产在线观看 | 日本三不卡 | 亚洲欧美国产日产综合不卡 | 2021亚洲va在线va天堂va国产 | 草久在线播放 | 亚洲精品乱码久久久久久日本麻豆 | av青青草 | 亚洲精品国产精品无码国模 | 国产精品久久久久无码人妻精品 | 国产精品欧美一区乱破 | 精品国产一区二区三区不卡蜜臂 | 日韩视频在线免费 | www.91色.com | 精品一区二区成人精品 | 亚洲第一视频在线观看 | 国产日韩在线免费观看 | 亚洲国产成av人天堂无码 | 久久精品国产一区二区三区肥胖 | 天天综合网日韩 | 性做久久久久久免费观看欧美 | 香蕉久久夜色精品国产尤物 | 欧美性天天影院 | 人妻系列无码专区av在线 | 青青草官网 | 日韩一区二区高清视频 | 男女吃奶做爰猛烈紧视频 | 7777kkkk成人观看 | 丰满少妇高潮在线观看 | 中文字幕乱码人妻无码久久 | 欧美大荫蒂xxx | 蜜桃视频一区二区三区四区开放时间 | 一级中文片| 2018av无码视频在线播放 | 久久久久青草线蕉综合 | 成人精品一区二区三区电影免费 | 欧美成人午夜精品久久久 | 超碰国产精品久久国产精品99 | 少妇人妻无码专区视频免费 | 92电影网午夜福利 | 九色国产 | 国产精品久久自在自线不卡 | 欧美日韩另类小说 | 五月婷婷中文字幕 | 爱情岛论坛成人 | 免费毛儿一区二区十八岁 | 无码日韩人妻av一区二区三区 | 国产成人影院一区二区三区 | 丰满五十六十老熟女hd | 深夜国产一区二区三区在线看 | 日韩人妻熟女毛片在线看 | 欧美成人一区二区三区四区 | 欧美人与动牲交zooz乌克兰 | 在线观看视频福利 | 东北老头嫖妓猛对白精彩 | 日本久热 | 爆乳2把你榨干哦ova在线观看 | 精品国产午夜理论片不卡精品 | 麻豆人妻少妇精品无码专区 | 一本加勒比hezyo无码专区 | 精品久久久久久天美传媒 | 日本久久高清免费观看 | 久久入 | 国产一区二区在线视频 | 妞干网这里只有精品 | 国产内射xxxxx在线 | 亚洲综合国产成人丁香五月激情 | 91久久婷婷国产一区二区 | 亚洲久视频 | 欧美性成人 | 亚洲处破女av一区二区中文 | 97精品国产97久久久久久春色 | yw尤物av无码国产在线观看 | 又粗又硬又黄又爽的视频永久 | 最近中文字幕在线免费观看 | 性久久| 一区二区三区在线视频免费观看 | 中文字幕av日韩 | 国精产品99永久一区一区 | 一级片小视频 | 日本少妇三级hd激情在线观看 | 亚洲а∨天堂男人无码 | 欧美伦理一区二区三区 | 国产在线一区视频 | 精品国产乱码久久久久久影片 | 欧美成人精品三级一二三在线观看 | 涩涩网站在线观看 | 精品国产午夜肉伦伦影院 | 日韩狠狠操 | 亚洲精品人成网线在线播放va | 中文字幕亚洲乱码熟女在线 | 女人裸体夜夜爽快 | 一级特黄aaa大片在线观看 | 亚洲宗合网 | 国产乱人对白 | 中国白嫩丰满人妻videos | 久久精品国产99久久久香蕉 | 97久久精品无码一区二区天美 | 丰满大肥婆肥奶大屁股 | 欧美日本视频在线观看 | 日本免费高清 | 日日干夜夜操视频 | 亚洲 精品 综合 精品 自拍 | 人人网av | www在线看 | 一二三区在线视频 | 在线观看a网站 | 日韩精品视频在线观看视频 | 午夜福利18以下勿进免费 | 国产吞精囗交免费视频 | 精品日产乱码久久久久久仙踪林 | 成人年人免费看xxxxxxx | 国产精品爱啪在线播放 | 亚洲黄色一级 | 女人18毛片一区二区三区 | 国产精品久久久久久二区 | 在线 国产 欧美 亚洲 天堂 | 国产成人理论在线视频观看 | 欧美色图视频在线 | 午夜福利影院私人爽 | 狠狠色丁香婷婷综合潮喷 | 日本精品日本一级乱黄中出 | 日本特级视频 | 男人的天堂免费 | 久久国产乱子伦精品免费午夜,浪货好紧 | 亚洲区精品区日韩区综合区 | av亚洲产国偷v产偷v自拍小说 | 日本少妇毛茸茸高潮 | 国产内射爽爽大片视频社区在线 | 新超碰在线 | 亚洲va欧美va人人爽 | 欧美黄色一级 | 亚洲二区在线播放 | 欧美xxxx精品另类 | 国产精品18hdxxxⅹ在线 | 8x8ⅹ在线永久免费入口 | 成人国产精品日本在线 | 在线看片免费人成视频福利 | 欧美成人看片一区二区三区尤物 | 亚洲中文字幕aⅴ天堂自拍 亚洲vs日韩vs欧美vs久久 | 亚洲欧美日韩系列 | 懂色一区二区三区免费观看 | 韩国大尺度吃奶做爰 | 中文字幕在线观看网址 | 婷婷色综合 | 99精品国产一区二区三区不卡 | 欧美 亚洲 另类 综合网 | 欧美1级片 | 欧美三日本三级少妇三2023 | 亚洲日韩精品看片无码 | 亚洲精品国产精品无码国模 | 日本在线视频www | 在线成人毛片 |