亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        DSP28335嵌入式系統(tǒng)的SCI在線編程方法實現(xiàn)

        2013-12-07 05:54:29羅秋鳳
        河北科技大學學報 2013年4期
        關鍵詞:程序方法

        羅秋鳳,葉 慧,李 勇,高 源

        (1.南京航空航天大學無人機研究院,江蘇南京 210016;2.南京航空航天大學自動化學院,江蘇南京 210016)

        DSP28335嵌入式系統(tǒng)的SCI在線編程方法實現(xiàn)

        羅秋鳳1,葉 慧2,李 勇2,高 源2

        (1.南京航空航天大學無人機研究院,江蘇南京 210016;2.南京航空航天大學自動化學院,江蘇南京 210016)

        為了解決嵌入式系統(tǒng)主流控制器DSP28335程序升級維護不便、成本高的問題,提出了一種通過異步串行通信接口SCI向片內(nèi)FLASH在線編程的方法。將特定的GPIO引腳狀態(tài)配置為SCI引導模式,DSP芯片上電自檢后調(diào)用BootLoader中的SCI_Boot函數(shù),將燒寫控制程序通過SCI口下載到片上SARAM,然后調(diào)用API功能函數(shù)將用戶程序固化到FLASH。實驗結(jié)果表明,該方法有效可行,簡單方便,可脫離JTAG仿真器進行操作,提高了傳輸距離,降低了成本。

        DSP28335;SCI引導;API函數(shù);在線編程

        DSP28335是TI公司新推出的一款具有強大的控制和信號處理能力的32位浮點型數(shù)字信號處理器[1],主頻高達150 MHz,片上集成了256 KWord的FLASH存儲器、34 KWord的SARAM,8 KWord的Boot ROM以及多種先進的外設,可廣泛應用于工業(yè)控制、移動通信、軍事安全等領域[2]。

        隨著電子技術(shù)的發(fā)展和用戶需求的提升,對已投入使用的DSP嵌入式設備軟件的維護和更新也越來越頻繁,當進行程序升級時,要擦除芯片內(nèi)容并重新燒寫新的程序代碼和數(shù)據(jù)[3],通常使用TI公司的CCS燒寫插件并通過仿真器JTAG口對片上FLASH進行編程的方法[4-6]。雖然該方法簡單易用,但一般只是在程序的開發(fā)和調(diào)試階段使用,在復雜的工作環(huán)境中,直接取下設備、連接仿真器存在較大困難,或現(xiàn)場還存在不能拆開設備情況。因多數(shù)嵌入式設備都有通信端口如USB,CAN,SCI,SPI或無線通信口等,因此可通過通信端口對FLASH進行燒寫可以有效解決這個問題[7-10]。

        本文在詳細介紹了DSP28335 SCI引導模式的上電加載思想和串口在線編程的原理后,研究了一種通過異步串行通信SCI口對片上FLASH進行燒寫的方法。

        1 API功能函數(shù)的選擇與介紹

        圖1 通過FLASH API燒寫DSP示意圖Fig.1 Diagram of DSP by FLASH API programmer

        DSP片上FLASH存儲器中放置的是用戶/應用程序和初始化代碼,要實現(xiàn)嵌入式終端的在應用編程(IAP)功能,需要采用專門的定制方案,即利用TI公司提供的應用程序接口庫(API)[11]文件,其中包含用于對FLASH及一次性編程單元OTP進行操作的各種函數(shù),利用API函數(shù)進行擦除、編程和校驗FLASH的方法如圖1所示。

        1.1擦除函數(shù)Erase( )

        擦除FLASH時每次最小只能擦除一個扇區(qū),不能對其中的某一位進行擦除,剩余沒有指定的扇區(qū)內(nèi)容保持不變。

        函數(shù)原型(Defined inFlash2833x_API_Library.h)

        extern Uintl6 Flash2833x _Erase

        (Uintl6 SectorMask,//定義標示位來指示擦除的扇區(qū);

        FLASH_ST *FeraseStat,//定義FLASH結(jié)構(gòu)的狀態(tài)指針FeraseStat,執(zhí)行擦除操作后狀態(tài)返回值,判斷操作是否成功;)。

        1.2編程函數(shù)Program( )

        該函數(shù)對用戶指定的FLASH扇區(qū)或一次性編程單元OTP上進行編程,編程時將位由1變?yōu)?,一次編程一個字存儲單元。

        函數(shù)原型(Defined inFlash2833x_API_Library.h)

        extern Uintl6 Flash2833x_Program

        (Uintl6 *FlashAddr //定義指向需要燒寫到FLASH或OTP區(qū)域的起始地址指針;

        Uintl6 *BufAddr //定義程序當前存放在內(nèi)存RAM空間的首地址指針;

        Uint32 Length //定義編程到FLASH或OTP的16位數(shù)據(jù)的總長度;

        FLASH_ST *FprogStatus //定義FLASH結(jié)構(gòu)的狀態(tài)指針,返回FLASH的燒寫狀態(tài);)。

        1.3校驗函數(shù)Verify( )

        因為編程函數(shù)在燒寫時自身已經(jīng)進行過狀態(tài)反饋校驗,因此該函數(shù)是在編程結(jié)束后進行的完整性校驗。實際上就是將接收緩沖區(qū)(RAM空間)和FLASH或OTP中寫入的數(shù)據(jù)進行比較,如果完全相同,就表明終端已將接收緩沖區(qū)中的數(shù)據(jù)全部正確地寫入了FLASH中。

        函數(shù)原型(Defined inFlash2833x_API_Library.h)

        extern Uintl6 Flash2833x_Verify

        Uintl6 *startAddr //定義指向已經(jīng)燒寫的FLASH或OTP區(qū)域的起始地址指針

        Uintl6 *BufAddr //定義程序搬移到內(nèi)存RAM空間的首地址指針

        Uint32 Length //定義編程到FLASH或OTP的16位數(shù)據(jù)的總數(shù)長度

        FLASH_ST *FVerifyStatus //定義FLASH結(jié)構(gòu)的狀態(tài)指針,返回FLASH的校驗狀態(tài)

        2 串口在線編程方案

        通常要實現(xiàn)IAP功能還需要一個獨立的存儲器,這是由FLASH的特性決定的。當對FLASH進行編程操作時,整個FLASH會被加上高于普通工作電壓的編程電壓,致使對FLASH讀取不穩(wěn)定,系統(tǒng)無法在該FLASH空間中運行。

        考慮到API函數(shù)的調(diào)用需遵循嚴格的時序要求,否則不能實現(xiàn)功能[12]。DSP28335帶有34 KWord×16位的片上RAM,在讀寫訪問時可以全速運行,即等待周期為零,因此把FLASH API函數(shù)加載到片上RAM空間執(zhí)行是切實可行的。同時,RAM中要留有足夠空間,以便存放復制到RAM中的FLASH編程函數(shù)。且編程不是實時進行,從上位機接收到的待編程的用戶代碼必須先放入緩沖區(qū),所以還需要在RAM中分配一個足夠大的空間用于保存接收到的編程代碼。以DSP28335為核心處理器的終端完全具備開發(fā)IAP系統(tǒng)的硬件條件。圖2說明了3種裝載FLASH API的方法。

        圖2 3種裝載FLASH API的方法Fig.2 Three methods to load the FLASH API library

        由于API算法嵌入在燒寫控制程序(KPL)中,通過KPL調(diào)用API算法來進行對FLASH的操作。

        方法A:通過JTAG口將KPL代碼直接下載到片上RAM,這種方法主要是通過CCS/仿真器或SDFLASH軟件實現(xiàn)。

        方法B:通過SCI,SPI,Parallel,I2 C,eCAN中的任何一種BootLoader將KPL從片外空間直接下載到片上SARAM。

        方法C:將KPL燒寫固化到FLASH,OTP或XINTF中,編程前將需要執(zhí)行FLASH編程任務的API函數(shù)復制到獨立的存儲器SARAM內(nèi),然后從其中運行,再燒寫FLASH操作。

        這3種方法中,方法B和方法C都能滿足系統(tǒng)遠程升級的要求。為了簡單方便,本文討論的是用方法B來燒寫FLASH。

        3 SCI BootLoader引導機理

        引導加載程序BootLoader是位于片內(nèi)Boot ROM中的一段用于引導的程序,在系統(tǒng)上電復位后才會執(zhí)行,從而完成一系列的初始化和引導操作[13-14]。BootLoader包含了一系列的引導加載器函數(shù),用來將預先存儲到外部非易失的存儲介質(zhì)的代碼拷貝到快速的存儲介質(zhì)片上RAM中,并自動執(zhí)行。

        為了滿足不同系統(tǒng)的需求,BootLoader提供了16種可選擇的引導模式,BootLoader通過查詢GPIO12,GPIO13,GPIO14,GPIO15這4個通用I/O引腳的狀態(tài),判斷選擇相應的引導模式。本文通過串口實現(xiàn)軟件編程和升級,將模式選擇端口配置為SCI-A啟動模式。

        3.1SCI引導啟動流程

        系統(tǒng)上電復位完成后,首先調(diào)用BootLoader中的第1個初始化引導程序(InitBoot),該程序主要把器件初始化成C28X工作模式,然后讀取安全代碼模塊的密碼,如果CSM密碼被擦除(全1)則自動解鎖,否則CSM仍被鎖定。對密碼讀取完成后,BootLoader將調(diào)用SelectBootMode(引導模式選擇)函數(shù),該函數(shù)將4個通用I/O引腳配置為輸入,然后檢測引腳的狀態(tài),依次進行選擇判斷,確定為SCI-A引導模式后,SCI_Boot(SCI-A引導加載器)函數(shù)將從外部設備復制數(shù)據(jù)到DSP的片上SARAM存儲介質(zhì)中,程序下載完成后返回輸入數(shù)據(jù)流決定的入口地址,以便引導結(jié)束后執(zhí)行應用程序,SCI引導啟動流程如圖3所示。

        圖3 SCI引導啟動流程Fig.3 SCI boot procedure

        3.2SCI引導加載過程

        綜上所述,BootLoader通過異步方式將代碼數(shù)據(jù)從SCI-A傳輸?shù)狡瑑?nèi)存儲器是整個引導流程的關鍵和核心。

        BootLoader選擇SCI引導模式后,開始了引導加載流程:SCI_Boot函數(shù)將主機發(fā)送的第一個字和8位數(shù)據(jù)流的關鍵字0x08AA進行比較,匹配有效后開始按一定順序重復讀入傳輸?shù)拿總€數(shù)據(jù)塊內(nèi)容,一旦檢測到數(shù)據(jù)塊大小等于0,就表示所有數(shù)據(jù)塊下載完成,然后指向BootLoader的指針將跳轉(zhuǎn)到由數(shù)據(jù)流中確定的程序入口地址處,接著開始執(zhí)行應用程序,基本流程圖如圖4所示。

        SCI下載模式是一種異步傳輸方式,只支持8位數(shù)據(jù)流格式,其通用結(jié)構(gòu)如表1所示。

        圖4 SCI_Boot程序加載的執(zhí)行流程Fig.4 Execution flow of SCI_Boot program loader

        表1 8位數(shù)據(jù)結(jié)構(gòu)

        4 程序代碼格式轉(zhuǎn)換

        為了能夠使用DSP28335的BootLoader功能,首先必須制作包含BootLoader所需的完整數(shù)據(jù)流的引導表,建立引導表的總體步驟如下。

        4.1COFF文件生成

        TI公司提供的DSP集成開發(fā)環(huán)境CCS[15]對整個工程文件進行編譯、鏈接后生成.out為后綴的二進制通用對象文件格式(COFF)文件。它有著復雜的結(jié)構(gòu),不僅包含了以段的形式組織的代碼和數(shù)據(jù),而且還包含了文件頭、符號表、段地址、初始化段入口等信息,但是該文件格式的模塊化結(jié)構(gòu)與實際的內(nèi)存存儲區(qū)間不匹配,不能直接用來加載到RAM或?qū)懭隖LASH,需要將其轉(zhuǎn)換成內(nèi)存能識別的數(shù)據(jù)格式(二進制文件.BIN)。

        4.2HEX文件生成

        HEX文件是指機器代碼的十六進制文件,并且是用一定格式的ASCII碼來表示。對于2000系列的DSP,TI公司提供了文件格式轉(zhuǎn)換工具hex2000.exe,可將COFF格式轉(zhuǎn)化成HEX格式。具體格式如下:ASCII HEX,Extened Tektronix,Intel MCS-86(tatel),Motorola-S,TI-Tagged。

        進行十六進制轉(zhuǎn)換可以通過單條命令再加各種選項的方法實現(xiàn),也可以將命令和有關選項匯總到一個文件(稱為命令文件)中,然后再利用該文件完成十六進制轉(zhuǎn)換。

        4.2.1 命令文件建立

        以Intel MCS-86(tatel)為例給出燒寫控制程序KPL的命令文件編寫格式:

        -KPL.out //被轉(zhuǎn)換的輸入文件,由CCS產(chǎn)生

        -memwidth 16 //16位存儲器系統(tǒng)

        -datawidth 32 //DSP的字長32位

        -boot //將程序中的各段都轉(zhuǎn)換到引導表

        -sci8 //8位數(shù)據(jù)寬度的SCI引導格式

        -map KPL-hex.map //數(shù)據(jù)流對應的map地址文件

        -o KPL.hex //生成的數(shù)據(jù)流文件名為KPL.hex

        -i //輸出文件為INTEL格式

        保存到hex2000.exe所在的文件夾目錄,并將文件命名。文件名: KPL-hex.cmd,然后從開始菜單—運行—cmd,輸入命令文件hex2000.exe KPL-hex.cmd,運行即可生成KPL.hex文件。生成的HEX文件格式如圖5所示。

        圖5 Intel HEX格式Fig.5 Intel HEX format

        4.2.2 Intel HEX格式解析

        Intel HEX文件是記錄文本行的ASCII文本文件,在Intel HEX文件中,每一行是一個HEX記錄,由十六進制數(shù)組成的機器碼或者數(shù)據(jù)常量。

        以第1行為例,來解析該文件,“:”號表示一行的開始,第1,2個字符表示本行包含數(shù)據(jù)的長度0x20即32個;第3~6個字符表示數(shù)據(jù)存儲的起始地址,這里表示從0x0000地址開始存儲32個字符數(shù)據(jù);第7,8個字符0x00即為普通數(shù)據(jù)記錄類型;之后的32個字符就是本行包含的數(shù)據(jù),每兩個字符表示一個字節(jié)數(shù)據(jù),總共有16個字節(jié)。

        4.3BIN文件生成

        BIN文件是按照“順序格式”表示的二進制機器代碼,由于HEX文件中數(shù)據(jù)域ASCII碼表示的十六進制與二進制是一一對應的,這些二進制數(shù)據(jù)應串行地保存在程序空間。

        選用的平臺是DSP28335,使用FLASH,RAM作為程序/數(shù)據(jù)存儲器,因為DSP的存儲字長是16 bit,所以4個十六進制ASCII碼表示一條機器指令或者地址。根據(jù)HEX文件的協(xié)議格式,在VC6.0平臺上開發(fā)了HEX文件到BIN文件轉(zhuǎn)換程序,原理是從文件中依次讀出字符,根據(jù)“:”判斷每行的開始,然后每兩位ASCII碼字符轉(zhuǎn)換成一個十六進制字節(jié)數(shù),然后將該字節(jié)數(shù)重新以ASCII碼形式保存。這時生成的代碼數(shù)據(jù)是內(nèi)存可以識別的可執(zhí)行代碼,可以通過FLASH讀寫函數(shù)寫到用戶指定的地址空間中,從而實現(xiàn)在線編程。

        5 實驗驗證

        圖6 BIN格式Fig.6 BIN format

        以嵌入式DSP28335最小系統(tǒng)核心板為測試平臺,通過串口連接線將上位機和核心板對接,上電前設定I/O引腳GPIO15=1,GPIO14=1,GPIO13=1,GPIO12=0,配置為SCI-A引導模式。打開上位機在線編程調(diào)試軟件,設置異步串口通信方式為波特率115 200 bps,8位數(shù)據(jù)位,無校驗,1個停止位。

        實驗開始前,先運行上位機在線編程調(diào)試界面,點擊打開文件按鈕,選擇保存的KPL.hex,對該文件進行格式轉(zhuǎn)換,生成的KPL.bin文件格式(以十六進制顯示)如圖6所示。

        該文件可存儲為.txt文本格式,里面詳述了關鍵字、保留位、入口地址、數(shù)據(jù)塊存儲地址、數(shù)據(jù)塊長度、數(shù)據(jù)字等信息,即為符合數(shù)據(jù)流加載的標準和要求的引導表。

        DSP上電后,調(diào)試界面打開KPL.bin文件,并選擇發(fā)送到RAM空間,傳輸成功后KPL開始運行并接管CPU的控制權(quán),等待PC機握手指令并反饋應答信號。握手成功后,接收PC機發(fā)送的用戶程序的BIN文件,根據(jù)選擇的FLASH扇區(qū)調(diào)用API擦寫函數(shù),對用戶程序進行編程,若校驗通過則FLASH燒寫成功,如圖7所示。

        本實驗中,燒寫的程序為控制GPIO1口輸出占空比為1/3的PWM脈沖波形。當程序燒寫結(jié)束后,將GPIO15,GPIO14,GPIO13,GPIO12引腳配置為FLASH引導模式,重新上電后發(fā)現(xiàn)GPIO1有規(guī)律地輸出預期的波形,通過觀察示波器捕捉到的波形如圖8所示。

        圖7 擦除、燒寫及校驗成功后狀態(tài)Fig.7 Success staus of erasing, programming and verification

        圖8 GPIO1引腳波形Fig.8 GPIO1 pin waveform

        6 結(jié) 語

        系統(tǒng)介紹了通過串口實現(xiàn)DSP28335程序在線編程的原理、軟硬件框圖以及步驟流程,提出了一種可以脫離仿真器,只需要一根串口電纜便可以完成DSP程序固化的方法。在TMS320F28335最小系統(tǒng)的實驗電路板上進行了測試驗證,結(jié)果表明該方案正確可行、便于操作,在工程應用中具有重要的實際意義,并對TI公司其他系列DSP系統(tǒng)的FLASH編程具有很強的通用性和借鑒價值。如果應用程序代碼較大,而片上RAM,F(xiàn)LASH空間有限,燒寫過程用戶代碼無法緩存到片內(nèi)RAM,而后再完全編程至片內(nèi)FLASH中時,則須擴展外部RAM和FLASH等存儲器,修改燒寫引導程序中的CMD文件中的地址空間分配代碼即可。

        /

        [1] Texas Instruments.TMS320F28335 Digital Signal Controllers Data Manual[M].[S.l.]:[s.n.],2007.

        [2] 蘇奎峰, 呂 強, 鄧志東,等.TMS320X28XXX原理與開發(fā)[M].北京:電子工業(yè)出版社,2009.

        SU Kuifeng, LYU Qiang, DENG Zhidong. Principles and Development of TMS320X28XXX[M]. Beijing: Publishing House of Electronics Industry, 2009.

        [3] 黃正謹. 在線系統(tǒng)編程技術(shù)及其應用[M]. 南京:東南大學出版社,2007.

        HUANG Zhengjin. Online System Programming Technology and Its Application[M].Nanjing: Southeast University Press, 2007.

        [4] 孫 軼,許少尉.TMS320F2812芯片的FLASH燒寫技術(shù)[J].航空計算技術(shù), 2006, 36(5):46-49.

        SUN Yi, XU Shaowei. TMS320F28l2 on-chip FLASH programming technique [J]. Aeronautical Computing Technique,2006, 36(5):46-49.

        [5] 李 靜,張樹團. TMS320F2812片內(nèi)FLASH在線燒寫技術(shù)研究[J].國外電子元器件,2008,10(6):34-37.

        LI Jing,ZHANG Shutuan. Research on on-line programming techniques for FLASH in TMS320F2812[J]. International Electronic Elements,2008, 10(6):34-37.

        [6] 陳若珠, 胡金平, 李戰(zhàn)明. TMS320VC5509在線燒寫Flash并自舉啟動方法研究[J].微型機與應用, 2011, 30(2):9-11.

        CHEN Ruozhu,HU Jinping,LI Zhanming.Research of on-line programming external Flash and bootloading based on TMS320VC5509 [J]. Microcomputer & Its Applications, 2011, 30(2):9-11.

        [7] 張 祿,張興敢,柏業(yè)超,等.便攜式可在線編程雷達信號模擬器[J].南京大學學報(自然科學版), 2010,46(4): 359-365.

        ZHANG Lu,ZHANG Xinggan,BAI Yechao,et al. A portable and online programmable radar signal simulator[J].Journal of Nanjing University (National Science), 2010,46(4):359-365.

        [8] 張 艷, 鮑可進. 整車控制器BootLoader的設計與實現(xiàn)[J].計算機工程,2011,37(12): 233-235.

        ZHANG Yan, BAO Kejin.Design and implementtion of BootLoader for vehicle control unit [J]. Computer Engineering, 2011,37(12): 233-235.

        [9] 徐 佩,向靜波.基于F2812的多處理器串行加載系統(tǒng)設計[J].航空計算技術(shù),2011,41(4):98-101.

        XU Pei,XIANG Jingbo.Design of serial loading system for multiprocessor based on F2812[J]. Aeronautical Computer Technique,2011,41(4):98-101.

        [10] 馬喜強,劉維亞,鄭喜鳳.基于多通信方式實現(xiàn)DSP程序在線編程[J].電子器件, 2013,36(1): 112-115.

        MA Xiqiang, LIU Weiya,ZHENG Xifeng.On-line programming of DSP based on multiple communications [J]. Electron Devices,2013,36(1):112-115.

        [11] Texas Instruments. TMX320F281x Flash API Rev[M].[S.l.]:[s.n.], 2007.

        [12] 林志貴,鐘晴晴.HCS08系列FLASH在線編程方法比較與分析[J].天津工業(yè)大學學報,2011,30(5): 71-75.

        LIN Zhigui,ZHONG Qingqing.Analysis and comparison of in-circuit programming for FLASH in HCS08Mcu family [J]. Journal of Tianjin Polytechnic University ,2011,30(5): 71-75.

        [13] Texas Instruments. TMS320F2833x Boot ROM Reference Guide[M].[S.l.]:[s.n.], 2008.

        [14 ] 殷樹明, 王宜懷. 嵌入式系統(tǒng)中多用戶程序在線編程技術(shù)[J].計算機工程,2009,35(5):37-39.

        YIN Shuming, WANG Yihuai. Technology of multi-program in-circuit programming in embedded system[J]. Computer Engineering, 2009, 35(5):37-39.

        [15] Texas Instruments.TMS320C28x Optimizing C/C++Compiler User's Guide[M].[S.l.]:[s.n.],2009.

        SCI online programming for DSP28335 embedded system

        LUO Qiufeng1, YE Hui2, LI Yong2, GAO Yuan2

        (1.Department of UAV, Nanjing University of Aeronautics & Astronautics, Nanjing Jiangsu 210016, China; 2.Department of Automation, Nanjing University of Aeronautics & Astronautics, Nanjing Jiangsu 210016, China)

        In order to solve the problems of maintenance inconvenience and higher cost in the mainstream embedded DSP28335 system, this paper proposes an online on-chip FLASH programming method through asynchronous serial communication interface (SCI),. The particular state of the GPIO pins is configured as a SCI boot mode and the DSP chips calls SCI_Boot function of BootLoader after power-on self-test, Then, the burning control program is downloaded to the on-chip SARAM by the SCI_interface and calls the API functions to the user program to burned into the FLASH. The experiment shows that the method is effective and feasible, simple and convenient, can be broken away from the JTAG emulator for operation, which has improved the transmission distance and reduced the costs.

        DSP28335; SCI_Boot; API function; online programming

        1008-1542(2013)04-0318-07

        10.7535/hbkd.2013yx04012

        TP311

        A

        2013-04-11;

        2013-05-27;責任編輯:李 穆

        羅秋鳳(1970-),女,江西吉安人,高級工程師,碩士,主要從事無人飛行器相關的自動檢測與故障診斷方面的研究。

        E-mail:YQWL2002@126.com

        猜你喜歡
        程序方法
        學習方法
        試論我國未決羈押程序的立法完善
        人大建設(2019年12期)2019-05-21 02:55:44
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        可能是方法不對
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        創(chuàng)衛(wèi)暗訪程序有待改進
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢方法
        日本免费大片一区二区| 97在线视频免费| 中文字幕一区,二区,三区| 91久久精品一区二区| 国产成人午夜高潮毛片| 海角国精产品一区一区三区糖心| 亚洲七七久久综合桃花| 中文字幕二区三区在线| 亚洲黄片av在线播放| 久久精品人妻无码一区二区三区| 91在线精品老司机免费播放| 中文字幕亚洲乱亚洲乱妇| 日本一区二区不卡在线| 激情伊人五月天久久综合| 亚洲熟妇色xxxxx欧美老妇y| 麻豆AV无码久久精品蜜桃久久| 九九精品国产亚洲av日韩| 国产av一区二区精品凹凸| 亚洲国产一区二区三区亚瑟| 丰满人妻中文字幕乱码| 亚洲中文av中文字幕艳妇| 97精品超碰一区二区三区| 国产又黄又爽视频| 在线精品亚洲一区二区三区| 国产精品国产三级第一集| 国产福利一区二区三区在线观看| 久久99热精品免费观看欧美| 久久精品国产亚洲av四区| 国产三级精品三级| 欧美高大丰满freesex| 亚洲国产精品第一区二区三区| 日本av亚洲中文字幕| 久久中文精品无码中文字幕下载| 久久精品国产亚洲不av麻豆| 国产精品老女人亚洲av无| 熟女无套高潮内谢吼叫免费| 免费精品无码av片在线观看| 亲少妇摸少妇和少妇啪啪| 国产精品妇女一区二区三区| 白又丰满大屁股bbbbb| 精品国产AⅤ一区二区三区V免费|