0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CPCI技術(shù)下對(duì)伺服卡WDM設(shè)計(jì)與研究

電子設(shè)計(jì) ? 作者:工程師 ? 2018-10-08 14:36 ? 次閱讀

引言

在當(dāng)前光電子學(xué)系統(tǒng)中,以PC104 作為伺服控制分系統(tǒng),體積龐大,不便于系統(tǒng)管理。 開發(fā)具有伺服控制能力的處理卡,用一塊板卡替代原來的系統(tǒng),能簡(jiǎn)化系統(tǒng)結(jié)構(gòu),提高系統(tǒng) 的集成度,使電子學(xué)系統(tǒng)最終成為一個(gè)高度集成的控制平臺(tái)。

CPCI(CompactPCI)總線在PCI 總線基礎(chǔ)之上,采用了歐洲卡結(jié)構(gòu),拋棄金手指式互 連方式,改用2mm 密度的針孔連接器,并具有可熱插拔性,使其具有了更高的可靠性和開放 性,并且能適應(yīng)惡劣的工作環(huán)境,在工業(yè)控制、航空航天等領(lǐng)域得到廣泛應(yīng)用。自行開發(fā)的 伺服控制卡基于CPCI 總線,以DSP 作為卡上控制CPU,與FPGA 結(jié)合實(shí)現(xiàn)控制。本論文以該 伺服控制卡為依托,在概述其硬件平臺(tái)結(jié)構(gòu)的基礎(chǔ)上,介紹了在Windows 2000 下CPCI 設(shè)備 驅(qū)動(dòng)程序的設(shè)計(jì)與開發(fā),重點(diǎn)闡述了橋接芯片PCI9054 的DMA 數(shù)據(jù)傳輸實(shí)現(xiàn)及中斷處理機(jī)制。

1.伺服控制卡的系統(tǒng)結(jié)構(gòu)與硬件實(shí)現(xiàn)方案

伺服控制卡以 TI 公司的TMS320F2812 DSP 作為核心處理器,與FPGA 結(jié)合來實(shí)現(xiàn)整 個(gè)板卡的控制功能,通過CPCI 總線完成與上位PC 機(jī)的通信,其系統(tǒng)功能框圖如圖1 所示:

CPCI技術(shù)下對(duì)伺服卡WDM設(shè)計(jì)與研究
圖 1 伺服控制卡硬件結(jié)構(gòu)圖

FPGA 選用Altera 公司的EPF10K30A,它內(nèi)嵌1536ByteRAM,此RAM 為主機(jī)與DSP 共享,用于上位機(jī)與DSP 之間的高速數(shù)據(jù)緩沖,F(xiàn)PGA 負(fù)責(zé)接收上位機(jī)傳遞的命令和參數(shù) 等數(shù)據(jù),經(jīng)處理后發(fā)送給DSP 進(jìn)行相應(yīng)的控制操作,同時(shí)反饋信息給上位機(jī)。 TMS32F2812 的主要任務(wù)就是完成復(fù)雜的伺服控制算法,特別是位置控制和速度控制。

FPGA 通過2812 的外部中斷XINT1 和XINT2 來觸發(fā)2812 接收控制命令和參數(shù),2812 接收 到命令后,根據(jù)自身定義的工作協(xié)議進(jìn)入相應(yīng)的工作狀態(tài)。

系統(tǒng)設(shè)計(jì)中采用 PLX 公司的PCI9054 作為總線接口芯片,實(shí)現(xiàn)CPCI 局部總線與FPGA 的通信。PCI9054 采用C 模式,在該模式下,PCI 的數(shù)據(jù)線與地址線是非復(fù)用的,設(shè)計(jì)時(shí)只 需關(guān)注9054 的本地端總線。

2.WDM 驅(qū)動(dòng)程序設(shè)計(jì)

在Windows 環(huán)境下,位于用戶態(tài)的應(yīng)用程序不能之間訪問硬件資源,而要通過執(zhí)行核 心態(tài)的驅(qū)動(dòng)程序來間接完成對(duì)硬件資源的訪問,因此,對(duì)于上位機(jī)上的應(yīng)用程序,要對(duì)伺服 控制卡進(jìn)行訪問,必須要為其開發(fā)驅(qū)動(dòng)程序。

WDM 驅(qū)動(dòng)程序是一種Pnp 驅(qū)動(dòng)程序,它能夠?qū)崿F(xiàn)Windows 98 與Windows 2000 、 Windows XP 之間的源代碼級(jí)兼容。Windows 2000 性能穩(wěn)定,在調(diào)試自行開發(fā)的板卡時(shí),仍 然是首選的操作系統(tǒng)。在Windows 2000 中,所有對(duì)驅(qū)動(dòng)程序的I/O 請(qǐng)求都轉(zhuǎn)化為I/O 請(qǐng)求 包(IRP)來表示,IRP 是I/O 管理器在響應(yīng)I/O 請(qǐng)求時(shí)從非分頁(yè)系統(tǒng)內(nèi)存中分配的一個(gè)可變 大小的數(shù)據(jù)結(jié)構(gòu),I/O 管理器負(fù)責(zé)產(chǎn)生代表一次I/O 操作的IRP,并將IRP 傳至正確的設(shè)備 驅(qū)動(dòng)程序,并通過分層的驅(qū)動(dòng)程序傳遞給物理設(shè)備。設(shè)備驅(qū)動(dòng)程序則接收IRP,執(zhí)行相應(yīng)的 操作,完成后再將IRP 傳送回I/O 管理器,表示I/O 操作的完成或者通過I/O 管理器將其傳 遞給其他的驅(qū)動(dòng)程序進(jìn)行進(jìn)一步的處理。

3.伺服控制卡的WDM 驅(qū)動(dòng)程序設(shè)計(jì)與實(shí)現(xiàn)

驅(qū)動(dòng)程序的開發(fā)環(huán)境常用的有微軟的DDK、Jungo 的WinDriver 和Numega 的Driver Studio。Driver Studio 把DDK 封裝成類,包含完善的代碼生成和調(diào)試工具,并且提供對(duì)WDM 驅(qū)動(dòng)的完全支持,利用它開發(fā)的核心態(tài)驅(qū)動(dòng)程序運(yùn)行效率也很高。本系統(tǒng)在VC 環(huán)境下利用 Driver Studio 開發(fā)驅(qū)動(dòng)程序。

接口芯片 PCI9054 支持主模式、從模式和DMA 模式三種數(shù)據(jù)傳輸方式。DMA 傳輸不 通過處理器,直接進(jìn)行數(shù)據(jù)交換,可以節(jié)省CPU 資源;并且DMA 模式還支持CPCI 總線與本 地總線之間的高效突發(fā)。

3.1 DMA 數(shù)據(jù)傳輸實(shí)現(xiàn)

PCI9054 集成了兩個(gè)互相獨(dú)立的DMA 通道,每一個(gè)通道由一個(gè)DMA 控制器和一個(gè)專 用雙向FIFO 組成,都支持塊DMA 和分散/集中DMA 操作,這里選用DMA 通道0,采用塊 DMA 方式實(shí)現(xiàn)傳輸。在Driver Works 中提供了三個(gè)類來實(shí)現(xiàn)DMA傳輸,分別是KDmaAdapter 類、KDmaTransfer 類和KCommonDmaBuffer 類。

3.1.1.DMA 適配器

對(duì)于DMA 傳輸,驅(qū)動(dòng)程序需要?jiǎng)?chuàng)建一個(gè)DMA 適配器,來表明一個(gè)DMA 通道的特性 和提供串行化訪問的服務(wù)。KDmaAdapter 類實(shí)現(xiàn)對(duì)DMA 適配器的操作。在它的初始化函數(shù) Initialize(PDEVICE_DESCRIPTION pDesc,PDEVICE_OBJECT pPdo)中第一個(gè)參數(shù)是一個(gè) DEVICE_DESCRIPTION 結(jié)構(gòu)的指針,這個(gè)參數(shù)用于對(duì)DMA 通道的屬性進(jìn)行設(shè)置。

3.1.2. DMA 控制器

采用 DMA 方式時(shí),CPU 要放棄對(duì)系統(tǒng)總線的使用權(quán),主存儲(chǔ)器和外部設(shè)備是被控制的對(duì) 象,它們之間沒有相互控制的能力,需要利用DMA 控制器來代替CPU 完成控制功能。

在用DriverWorks 開發(fā)驅(qū)動(dòng)時(shí), KDmaTransfer 類用于控制DMA 的傳輸;它可以啟動(dòng)一個(gè)DMA 傳 輸,指定DMA 傳輸?shù)姆较?,DMA 傳輸數(shù)據(jù)緩沖區(qū)的物理地址和要傳輸?shù)淖止?jié)數(shù)。 KDmaTransfer 類的Initiate()函數(shù)用于初始化一個(gè)KDmaTransfer 對(duì)象;在成功初始化 一個(gè)KDmaTransfer 類對(duì)象后,將會(huì)調(diào)用DMA 準(zhǔn)備就緒回調(diào)例程OnDmaReady,在該例程中獲 取要傳輸?shù)膬?nèi)存的地址和字節(jié)數(shù),并調(diào)用StartDMA 例程開始DMA 傳輸。

與中斷結(jié)合的DMA 傳輸在一次傳輸結(jié)束后會(huì)再次調(diào)用 KDmaTransfer 類的Continue()函數(shù)發(fā)起下一次的DMA 傳輸操作,直到傳輸完成。

3.1.3. DMA 公共緩沖區(qū)

在DriverWorks 中KCommonDmaBuffer 類實(shí)現(xiàn)對(duì)公用緩沖區(qū)的操作。在實(shí)際使用時(shí),聲 明一個(gè)KCommonDmaBuffer 類對(duì)象并初始化。在傳輸結(jié)束后,釋放公共緩沖區(qū),以防止內(nèi)存 丟失。

3.1.4. 寄存器設(shè)置

PCI9054 在DMA 模式下傳輸,驅(qū)動(dòng)程序要通過I/O 指令設(shè)置DMA 控制器內(nèi)部的寄存器 以實(shí)現(xiàn)兩總線間的數(shù)據(jù)傳送,需要設(shè)置的內(nèi)部寄存器及其具體功能如下表1 所示:

CPCI技術(shù)下對(duì)伺服卡WDM設(shè)計(jì)與研究

3.2 驅(qū)動(dòng)開發(fā)中的中斷處理機(jī)制及實(shí)現(xiàn)

本系統(tǒng)的驅(qū)動(dòng)程序采用塊DMA 與中斷結(jié)合的方式來實(shí)現(xiàn)主機(jī)與伺服控制卡之間的數(shù) 據(jù)傳輸。以讀操作為例,每次DMA 傳輸完后,都會(huì)產(chǎn)生一個(gè)DMA 中斷,中斷處理程序應(yīng) 答中斷,并獲取公共緩沖區(qū)中的數(shù)據(jù),通知主機(jī)端有數(shù)據(jù)到達(dá);可以看出,高效的DMA 處 理依賴于高效的中斷處理過程。

中斷處理完成 CPU 與I/O 設(shè)備之間的信息交換,在為硬件板卡開發(fā)驅(qū)動(dòng)程序時(shí)需要為 中斷配置相應(yīng)的驅(qū)動(dòng)處理。在處理中斷之前要對(duì)中斷資源進(jìn)行配置,首先定義并初始化一個(gè) 中斷對(duì)象,在初始化階段,提取IRP 資源中的中斷級(jí)別、中斷模式、中斷向量、共享模式 等信息。利用上面獲得的參數(shù)來連接中斷,連接中斷操作的主要目的是注冊(cè)設(shè)備驅(qū)動(dòng)的中斷 服務(wù)例程(ISR),以便在中斷發(fā)生后中斷服務(wù)例程能夠被調(diào)用。在DriverWorks 中用KInterrupt 類實(shí)現(xiàn)對(duì)硬件中斷的處理。

status = m_Irq.InitializeAndConnect(pResListTranslated, LinkTo(Isr_Irq), this)

當(dāng)硬件發(fā)生中斷時(shí),硬件抽象層(HAL)把中斷級(jí)別(IRQL)提升到合適的中斷級(jí)別, 然后調(diào)用中斷服務(wù)例程(ISR)。CPCI 總線是中斷共享的,因此,ISR 首先確定是哪一個(gè)設(shè) 備發(fā)生了中斷, 如果不是當(dāng)前設(shè)備的中斷,立即返回FALSE ,以便HAL 把中斷發(fā)送給其 他設(shè)備的驅(qū)動(dòng)程序。如果是當(dāng)前設(shè)備的中斷,則在清除該中斷,并做相應(yīng)的處理。中斷處理 的整個(gè)過程如下圖2 所示:

ISR 執(zhí)行在高于DISPATCH_LEVEL 的IRQL 上,它凍結(jié)了其CPU 上所有低于或等于該 IRQL 上的其他活動(dòng),為了提高系統(tǒng)性能,ISR 例程應(yīng)該盡可能快的完成;此外,ISR 中使 用的所有代碼和數(shù)據(jù)必須存在于非分頁(yè)內(nèi)存中,能調(diào)用的內(nèi)核模式函數(shù)也十分有限。

CPCI技術(shù)下對(duì)伺服卡WDM設(shè)計(jì)與研究
圖2:中斷處理流程圖

Windows 2000 提供了延遲過程調(diào)用(DPC)機(jī)制來解決這個(gè)問題,ISR 決定當(dāng)前請(qǐng)求的 完成并請(qǐng)求一個(gè)DPC,之后,內(nèi)核在DISPATCH_LEVEL 級(jí)上調(diào)用這個(gè)DPC 例程。當(dāng)有當(dāng) 前設(shè)備的中斷到來時(shí),把一個(gè)DPC 插入到DPC 隊(duì)列中。實(shí)現(xiàn)代碼如下:

m_DpcFor_Irq.Setup(LinkTo(DpcFor_Irq), this);//創(chuàng)建一個(gè)DPC m_DpcFor_Irq.Request(NULL, NULL)// 把一個(gè)DPC 插入到DPC 隊(duì)列等待執(zhí)行

4. 應(yīng)用程序與驅(qū)動(dòng)程序的通信

4.1 通信的實(shí)現(xiàn)策略

應(yīng)用程序采用Win32 事件通知的方式與驅(qū)動(dòng)程序進(jìn)行通信:應(yīng)用程序調(diào)用API 函數(shù) CreatFile 打開設(shè)備,調(diào)用CreateEvent 創(chuàng)建事件句柄hEvent 并置為無(wú)信號(hào)態(tài),把hEvent 作為 函數(shù)DeviceIoControl 的參數(shù)傳遞給驅(qū)動(dòng)程序,同時(shí)調(diào)用CreateThread 創(chuàng)建等待線程;WDM 驅(qū)動(dòng)程序接收事件句柄hEven,初始化KEvent 類對(duì)象m_hEvent,當(dāng)中斷發(fā)生時(shí),在DPC 中 執(zhí)行m_hEvent-》Set(),將事件設(shè)置為信號(hào)態(tài),喚醒應(yīng)用程序中的等待線程,然后調(diào)用 DeviceIoControl 完成數(shù)據(jù)傳輸。

4.2 數(shù)據(jù)傳輸速率測(cè)量

在實(shí)際測(cè)量時(shí),采用了硬件測(cè)量法,應(yīng)用程序不斷向DSP 處理卡發(fā)送數(shù)據(jù)/接收數(shù)據(jù), 利用示波器來觀測(cè)BLAST#和ADS#信號(hào)的變化周期,得出每組數(shù)據(jù)的傳輸時(shí)間。該DSP 卡本地端總線為8 位,在DMA 模式下,測(cè)得的發(fā)送/接收時(shí)的測(cè)量結(jié)果如下表2 所示:

CPCI技術(shù)下對(duì)伺服卡WDM設(shè)計(jì)與研究

從以上結(jié)果可以看出,無(wú)限突發(fā) DMA 模式傳輸速率最高,可達(dá)26.3Mbyte/s,若本地端總線 為32 位,則數(shù)據(jù)傳輸速率可以達(dá)到26.3*4=105.2Mbyte/s ,接近32 位PCI 總線的極限傳輸速率133Mbyte/s,能夠滿足大部分高速數(shù)據(jù)傳輸要求。

結(jié)束語(yǔ)

自行開發(fā)的伺服控制卡,基于高速的CPCI 總線,以DSP 作為卡上處理器,以FPGA 實(shí)現(xiàn)邏輯處理,能夠作為一個(gè)獨(dú)立的單元替代原來的工控機(jī)子系統(tǒng),大大簡(jiǎn)化了當(dāng)前光電子 學(xué)系統(tǒng)結(jié)構(gòu);利用Driver Studio 為其開發(fā)的底層驅(qū)動(dòng)程序,能使板卡在Windows2000 下穩(wěn) 定地工作,在與中斷結(jié)合的DMA 數(shù)據(jù)傳輸模式下,數(shù)據(jù)傳輸速率能夠滿足伺服控制卡的精 度和實(shí)時(shí)性要求。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • WDM
    WDM
    +關(guān)注

    關(guān)注

    1

    文章

    109

    瀏覽量

    21017
  • CPCI
    +關(guān)注

    關(guān)注

    6

    文章

    71

    瀏覽量

    32858
  • 伺服卡
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    7468
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TFF型WDM器件技術(shù)原理

    `我們知道,光纖通信是技術(shù)是實(shí)現(xiàn)互聯(lián)網(wǎng)并改變世界的關(guān)鍵技術(shù)之一,光纖通信的一個(gè)優(yōu)勢(shì)是可以在一根光纖中同時(shí)傳輸數(shù)十個(gè)波長(zhǎng),稱作波分復(fù)用(WDM)。WDM傳輸?shù)幕驹枪鈱W(xué)濾波器,可通過
    發(fā)表于 05-18 18:00

    怎么實(shí)現(xiàn)基于CPCI總線的多網(wǎng)口設(shè)計(jì)?

    怎么實(shí)現(xiàn)基于CPCI總線的多網(wǎng)口設(shè)計(jì)?
    發(fā)表于 06-02 06:15

    WINDOWSPCI接口WDM驅(qū)動(dòng)程序的DMA編程技術(shù)

    本文主要討論了在Windows環(huán)境開發(fā)PCI接口DMA應(yīng)用的WDM編程技術(shù),并給出了一個(gè)應(yīng)用DriverWorks和VC++開發(fā)的實(shí)例程序代碼。現(xiàn)化微機(jī)的擴(kuò)展槽通常有ISA總線和P
    發(fā)表于 08-07 08:37 ?28次下載

    基于CPCI伺服的DMA和中斷研究

    為簡(jiǎn)化當(dāng)前光電設(shè)備電子學(xué)系統(tǒng)的結(jié)構(gòu),本文提出了基于CPCI 總線,以DSP 和FPGA 為控制核心的伺服控制結(jié)構(gòu),來取代原來的控制子系統(tǒng);在Windows 2000 ,利用Driv
    發(fā)表于 08-17 09:25 ?20次下載

    Windows環(huán)境開發(fā)PCI接口DMA應(yīng)用的WDM編程技

    本文主要討論了在Windows環(huán)境開發(fā)PCI接口DMA應(yīng)用的WDM編程技術(shù),并給出了一個(gè)應(yīng)用DriverWorks和VC++開發(fā)的實(shí)例程序代碼。關(guān)鍵詞:Windows、PCI總線、
    發(fā)表于 10-06 10:14 ?24次下載

    基于CPCI總線的伺服控制的設(shè)計(jì)和實(shí)現(xiàn)

    CPCI 總線是一種兼容性強(qiáng)、功能全面的計(jì)算機(jī)總線。文章通過對(duì)TI 公司推出的DSP 芯片(TMS320F2812)、FPGA 芯片(EPF10K30A)和CPCI 接口芯片(PCI9054)的功能和特點(diǎn)的深入分析,討論了
    發(fā)表于 12-19 12:08 ?35次下載

    WDM/DWDM技術(shù),什么是WDM/DWDM技術(shù)

    WDM/DWDM技術(shù),什么是WDM/DWDM技術(shù) 波分復(fù)用(WDM)是將兩種或多種不同波長(zhǎng)的光載波信號(hào)(攜帶各種信息)在發(fā)送端經(jīng)復(fù)用器(亦
    發(fā)表于 04-07 16:06 ?8944次閱讀

    基于CPCI總線的多網(wǎng)口設(shè)計(jì)

      以太網(wǎng)(Ethernet)作為應(yīng)用最廣泛的局域網(wǎng)技術(shù)異軍突起,已經(jīng)迅速走向工業(yè)自動(dòng)化控制領(lǐng)域的前臺(tái)。CPCI總線系統(tǒng)插槽有限,設(shè)計(jì)基于CPCI總線的多網(wǎng)口可節(jié)省空間,又可以滿
    發(fā)表于 09-10 09:56 ?1746次閱讀
    基于<b class='flag-5'>CPCI</b>總線的多網(wǎng)口<b class='flag-5'>卡</b>設(shè)計(jì)

    Windows 2000WDM驅(qū)動(dòng)程序的研究與開發(fā)

    本文分析研究了 Windows 2000 WDM 驅(qū)動(dòng)程序的基本原理。以 Microsoft 的 DDK 為開發(fā)工具,開發(fā)了基于 PCI 總線的通信接口板的 WDM 驅(qū)動(dòng)程序。證實(shí)
    發(fā)表于 04-18 10:02 ?0次下載

    CPCI 接口反射內(nèi)存

    CPCI接口反射內(nèi)存是一種用于實(shí)時(shí)網(wǎng)絡(luò)的硬件設(shè)備,它將反射內(nèi)存集成在上,通過計(jì)算機(jī)的CPCI(CompactPCI)插槽與計(jì)算機(jī)連接。CPCI
    的頭像 發(fā)表于 09-05 17:42 ?445次閱讀
    <b class='flag-5'>CPCI</b> 接口反射內(nèi)存<b class='flag-5'>卡</b>

    解析XMC轉(zhuǎn)CPCI載板轉(zhuǎn)接:連接不同接口的關(guān)鍵紐帶

    XMC轉(zhuǎn)CPCI載板轉(zhuǎn)接 CPCI2XMC轉(zhuǎn)接
    發(fā)表于 09-06 14:37 ?0次下載

    pmc轉(zhuǎn)cpci載板轉(zhuǎn)接

    電子發(fā)燒友網(wǎng)站提供《pmc轉(zhuǎn)cpci載板轉(zhuǎn)接.docx》資料免費(fèi)下載
    發(fā)表于 09-06 14:36 ?0次下載

    CPCI轉(zhuǎn)PCI載板轉(zhuǎn)接

    CPCI轉(zhuǎn)PCI載板轉(zhuǎn)接 ?
    發(fā)表于 09-07 09:37 ?1次下載

    CPCI轉(zhuǎn)PCI載板轉(zhuǎn)接 PCI2CPCI

    # 深入剖析 PCI 轉(zhuǎn) CPCI 載板轉(zhuǎn)接:連接不同架構(gòu)的橋梁? 在計(jì)算機(jī)技術(shù)不斷發(fā)展的進(jìn)程中,硬件接口的多樣性和演進(jìn)促使了各種轉(zhuǎn)接的出現(xiàn),以滿足不同接口標(biāo)準(zhǔn)之間的連接和通信需求
    的頭像 發(fā)表于 10-09 15:21 ?384次閱讀
    <b class='flag-5'>CPCI</b>轉(zhuǎn)PCI載板轉(zhuǎn)接<b class='flag-5'>卡</b> PCI2<b class='flag-5'>CPCI</b>

    XMC 轉(zhuǎn) CPCI 載板轉(zhuǎn)接

    XMC 轉(zhuǎn) CPCI 載板轉(zhuǎn)接是一種用于實(shí)現(xiàn) XMC(Extended Mezzanine Card)接口與 CPCI(CompactPCI)接口相互轉(zhuǎn)換和連接的硬件設(shè)備14。以下是關(guān)于它的一些
    的頭像 發(fā)表于 10-09 16:03 ?257次閱讀