嵌入式wince實踐教程,手把手你寫驅(qū)動-arm_第1頁
嵌入式wince實踐教程,手把手你寫驅(qū)動-arm_第2頁
嵌入式wince實踐教程,手把手你寫驅(qū)動-arm_第3頁
嵌入式wince實踐教程,手把手你寫驅(qū)動-arm_第4頁
嵌入式wince實踐教程,手把手你寫驅(qū)動-arm_第5頁
免費預(yù)覽已結(jié)束,剩余96頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

ARMCE華技大學(xué)國家電工電子教學(xué) 《ARM嵌入式WINDOWSCE實踐》是ARM嵌入式技術(shù)系列之一。該采用華技大學(xué)和創(chuàng)維特信息技術(shù)聯(lián)合研制的JXARM9-2410嵌入式教學(xué)實驗系統(tǒng)作為教WindowsCE嵌入式操作系統(tǒng)是目前嵌入式主流操作系統(tǒng)之一,它以超強的性能、友好的Windows人機界面以及標準化、可視化的軟件開發(fā)過程被越來越多地使用在、PDA等產(chǎn)品中,本書結(jié)合ARM9嵌入式處理器的特點,介紹了在其上進行WindowsCE開發(fā)本書詳細地講解了WindowsCEBSP開發(fā)平PlatformBuild4.2的建立過程WindowsCEBSP板級支持包的開發(fā)驅(qū)動程序的設(shè)計以及基于EmbeddedVisualC++嵌入式WindowsCE應(yīng)用程序的設(shè)計和開發(fā)等,內(nèi)容覆蓋WindowsCE開發(fā)的全過程,它不僅可以作為嵌入式WindowsCE開發(fā)的初學(xué)者作為實踐而且對于WindowsCE開發(fā)人員也有一定的參考價值。 第1章安裝WindowsCE 安裝WINDOWSCE 安裝WINDOWSCE4.2 第2章WindowsCE內(nèi)核定制實 特性安裝(Catalog 運行image文 設(shè)置并建立tftp服務(wù) 通過uboot 第3章WINCE和桌面系統(tǒng)通訊實 硬件連 WINCE端設(shè) activeSync安 USB驅(qū)動程序安 通 第4章WindowsCE應(yīng)用程序?qū)?4.1并安 eMbeddedVisualC++ 4.3并運 第5章WindowsCE多實 建立WINCE和桌面系統(tǒng)之間的通訊連 文件到WINCE 第6章WindowsCE驅(qū)動程序?qū)?WINCE驅(qū)動程序模 運 第7章WindowsCE以太網(wǎng)驅(qū)動程序?qū)?JXARM9-2410網(wǎng) NE2000兼容網(wǎng)卡驅(qū)動程序中斷處 NE2000兼容網(wǎng)卡驅(qū)動程序硬件地 NE2000兼容網(wǎng)卡驅(qū)動程序的編 附錄A使用Eboot通過以太網(wǎng)附錄B通過USB 附錄C通過uboot燒寫 附錄D通過仿真器燒寫 附錄ESMDK2410USB驅(qū)動安 附錄F驅(qū)動程序編 附錄GSMDK2410觸摸屏校 附錄H將WINCE燒寫到norflash中運 附錄IWindowsCELCD支持代碼說 附錄J將WINCE燒寫到CF中運 1WindowsCEWINDOWSCEWINDOWSCE4.2DVDDVDDVD驅(qū)動器中的setup.exe程序。啟動安裝界面如下,點擊“Install”。并在“CustomSetup”框中按照下圖進行設(shè)置。其余安裝過程請按照提示完成。本文假設(shè)WINCE420安裝在E盤的 WINDOWSCE4.2在WINCE420\PLATFORM 下已有名為SMDK2410的 拷貝光盤中的WINCE420\2410WinCE4.2BSP 創(chuàng)建的SMDK2410 只讀屬性一定要去掉,而且包括SMDK2410及其下所 和文件在WINDWOS2000或者WINDOWSXP中SMDK2410的右鍵菜單2WindowsCE特性安裝(Catalog打開“PlatformBuilder4.2”,選擇“File”菜單下的“ManageCatalogPB4.2自帶的“smdk2410.cec”(即BSP) 在特性 區(qū)將可以看到“SamsungSMDK2410:ARMV4”和“Samsung選擇“File”菜單中的“New彈出“NewPlatformWizard–Step1”選擇(3)在“NewPlatform Step2”中,選擇“SAMSUNGSMDK2410:ARMV4”BSP按“Next”按鈕繼續(xù)。(4)選擇“Availableconfigurations”列表中的配置,在此為“MobileHandheld”,并輸入“Platformname”,在此為“SMDK2410”,點“Next”繼續(xù)。在“NewPlatformWizard–Step4”中選擇你所需要的配置,點在框中按照如圖改變編譯選項(BuildOptions):[EnableCETargetControlSupport]->Unchecked[EnableKITL]->點擊“BuildPlatform”按鈕或者點擊”Build”->”BuildPlatform”菜單開 nk.bin、nk.nb0使用光盤中的image文件, 為WINCE420/image/。tftptools\tftpd32j\tftpd32.exe文件。運行后請點擊“Browse”按鈕選tftp服務(wù)器,如下圖所示,設(shè)d:\tftpboot\tftp服務(wù)器根。通過uboot首先將nk.nb0拷貝到tftp服務(wù)器 如下所示為uboot界面:56uboot 將 下的 改名為SMDK2410bak將WINCE420\2410WinCE4.2Public 拷貝到E:\WINCE420\PUBLIC 改名為SMDK2410。打開PB,按照下圖所示,點擊“File”菜單下的“Openorkspace…。并在框中選擇E:\WINCE420\PUBLIC\SMDK2410\ 然后點擊“Build”菜單的“RebuildAll”。進行編按照上節(jié)提示將生成的nk.nb0到ARM中運行WINCEE:\WINCE420,則需要重新定制內(nèi)核并編2.2Step4中按照如下andMouse”上右擊菜單“AddToPlatform”。3WINCE本節(jié)介紹如何通過微軟公司提供的 PCUSBJXARM9-2410J11SLAVEUSBSOCKET,同時將如果教學(xué)系統(tǒng)采用5.7寸STNLCDWINCE420\image\nk.nb0.stn,如果教學(xué)系統(tǒng)采用8寸TFTLCD,請并運行按照如下提示在WINCE并在“新建連接”設(shè)置框中,選擇連接類型為“直接連接”,并點擊“下一步”系統(tǒng)將彈出一個“設(shè)備框”,在該框的“選擇設(shè)備”下拉列表中選擇“S3C2410USBCABLE:”,然后點擊“完成”按鈕。這時將在“連接”中添加“我的回到“控制面板”,點擊【PC連接】圖標,進入“PC連接屬性”設(shè)置框,在“更改連接”設(shè)置框的下拉列表框中選擇剛才建立的連接“我的連接”,然如果此時觸摸屏出現(xiàn)校準不正確的情況,請參考附錄G進行觸摸屏的請使用光盤中的WINCE映象文件或者2.4節(jié)編譯出來的映象文件,不能使用2.2節(jié)章中的映象文件,2.2中生成的映象文件有許多特性不支持,需要下的MSASYNC.exe。雙擊該文件開始安裝WINCE端設(shè)置正確且硬件連接正確后,系統(tǒng)將提示找到新的硬件, 在“我的電腦”中將添加“移動設(shè)備”WINCE文件系WINCEUSBPCUSB插座,可能導(dǎo)致連接不上,此時,請USB線拔下然后重新插入即可。WINCE同步,可以和操WINDOWS其它一樣操作該,包括拷貝文件到該已經(jīng)將文件從該拷貝到PC機。4WindowsCE4.1并安 eMbeddedVisualC++1)eMbeddedVisualC++4.0簡eMbeddedVisualC4.0WindowsCE.NETeMbeddedVisualC++4.0令開發(fā)人員方便而靈活地為WindowsCE.NET創(chuàng)建大了解有關(guān)的信息請以下地址 Windows?2000ProfessionalSP2、Window2000ServerSP2或者WindowsXPProfessional。Windows2000ProfessionalWindowsXPProfessional96需要CD-ROM360MBeMbeddedVisualC++請從如下地址eMbeddedVisualC++/download/WindowsCENETPlatformBuilder/Install/4.0/NT5XP/EN-eMbeddedVisualC++4.0請從如下地址eMbeddedVisualC++4.0/download/a/7/3/a735c7fb-dcbd-429f-9090-d09b3b15d3fa/e安裝eMbeddedVisualC++eVC4.exe 的setup.exe文件開始安裝eMbedded另外,請關(guān)閉norton等殺毒工具。安裝過程建議使用缺省設(shè)置。安裝過程請使用cdkey.txt文件中的cdkey。sdksetup.exePlatformSDK。安裝過程建安裝eMbeddedVisualC++4.0eVC4SP4.exe然后執(zhí)行解壓后的setup.exe文件開始安裝eMbeddedVisualC++4.0PBnorton等殺毒工具。eMbeddedVisualC++4.0的界面,如下圖所示,如果出現(xiàn)該界面表 oWorld工選擇File菜單的New菜單項,出現(xiàn)如下圖所示框入工程保存路徑,在CPUs中請選擇所有的選項。然后點擊OK按鈕。編譯oWorld工選擇編譯版本,請按照下圖所示選擇“Win32[WCEARMV4]ReleaseBuildRebuildAll編譯成功出現(xiàn)上圖所示提示信息,此時在E:\EVC\4.3并運 ▲JXARM9-2410UART0連接至計算機串USBJXARM9-2410實驗箱的SLAVEUSB按照第二章的內(nèi)容通過ubootnk.nb0,并運行WinCEimage文件。運行的結(jié)果將在LCD上出現(xiàn)WINCE啟動界面。3WINCEactiveSync如果連接正確,將上節(jié)生成的oWorld.exe文件拷貝到“移動設(shè)備下的“My 此時oWorld.exe文件已經(jīng)被拷貝到WINCE中,在WINCE中,點 s”,如果已經(jīng)存在oWorld.exe程序請雙擊該文件,將開始運行oWorld程序。如果此時觸摸屏出現(xiàn)校準不正確的情況,請參考附錄G進行觸摸屏的請使用光盤中的WINCE映象文件或者2.4節(jié)編譯出來的映象文件,不能使用2.2節(jié)章中的映象文件,2.2中生成的映象文件有許多特性不支持,需要第5章WindowsCE多實請使用光盤中的WINCE映象文件或者2.4節(jié)編譯出來的映象文件,不能使用2.2節(jié)章中的映象文件,2.2中生成的映象文件有許多特性不支持,需要添加WINCE后如果桌面上有“MediaPlayer”圖標,則表示已經(jīng)安裝了媒體器,否則沒有安裝。 為E:\WINCE420\PUBLIC\SMDK2410。按照下圖提示將“BasicMultimedia”下三個選項添加到Platform中,方法為點擊右鍵菜單“AddtoPlatform”。按照上圖提示將“MultimediaComponents Platform”菜單編譯整個工程將編譯生成的nk.nb0到教學(xué)系統(tǒng)中運行,如果正確在桌面上有“MediaPlayer”圖標。 拷貝使用文件到WINCE的My 錄下有測試用文件,可以拷貝該文件到WINCE中。WINCE 由于和音頻壓縮算法很多,對于必須在當前WINCE器已如果此時觸摸屏出現(xiàn)校準不正確的情況,請參考附錄G進行觸摸屏的校可以直接使用光盤中的WINCE映象文件,該映象文件中已經(jīng)加入6WindowsCEWINCE的驅(qū)動程序有兩種模型,它們是本機設(shè)備驅(qū)動程序和流接口WINCE的,所以這類設(shè)備的驅(qū)動程序稱作WINCE平臺的設(shè)LEDLEDnleddrv.libDLLGWES統(tǒng)一加載和管WINCE的平臺有著緊密的連接,而每WINCEWINCE的流接口驅(qū)動程序是一般類型的設(shè)備驅(qū)動程序。流接口驅(qū)動程序表現(xiàn)為在用戶一級的動態(tài)庫L,用來實現(xiàn)一組固定的函數(shù)稱為流接口函數(shù),這些流統(tǒng)幾INE對于本機設(shè)備驅(qū)動程序,PB提供了一些驅(qū)動程序的樣本。PB中包含的樣MDD,PDDMDDPDDMDD流接口驅(qū)動程序是為連接到基于WINCE的平臺的設(shè)備而設(shè)計的。這些設(shè)備包括MODEM、、數(shù)字相機和PC卡等。設(shè)備的驅(qū)動程序就像桌面計算機的驅(qū)動程序一樣,都當作用戶模式的程序來運行,所WINCE的驅(qū)動是在用戶模式下運行的。這些程序使用里面通常被描述為COM1WINCE的設(shè)備文件通常保存在固定的路徑下,通過表機制來完成特殊名慣例設(shè)備管理器使用在HKEY_LOCAL_MACHINE\Drivers\鍵中的鍵Active\:此鍵包含由設(shè)備管理程序加載的當前活動的驅(qū)動程序。當1,2,3…這代表加載驅(qū)動程序的順序, 函數(shù)返回的設(shè)備句柄值。Name:設(shè)備文件名,例如“COM1”和“COM2Key:HKEY_LOCAL_MACHINE中的設(shè)備驅(qū)動程序鍵的表路徑。Builtin\:此鍵包含由基于WINCE的平臺制造商提供的流接口驅(qū)動程序,PCMCIA\:此鍵含有與PCResource\:此鍵記錄了系統(tǒng)的中斷和IO在WINCE中應(yīng)用程序通過文件系統(tǒng)里的特殊設(shè)備。WINCEIO操作到適當?shù)牧鹘涌赪INCE的設(shè)備文件名是由三個大寫字母、一個數(shù)字和冒號組成的,例如WINCE設(shè)備文件名中的數(shù)字是用來區(qū)分由同一個流接口驅(qū)動程序管理的如果需要10個文件名可以把0也用上。WINCE內(nèi)核使用。這些函數(shù)通常叫做流接口驅(qū)動程序的DLL接口。下面將分別描述,其中函數(shù)名稱前面的XXX表示DWORDXXX_Open(DWORDhDeviceContext,DWORDAccessCode,DWORDShareMode)如一些PC卡的設(shè)備讀寫的時候是否可以共享。返回值:返回驅(qū)動程序事例句柄參數(shù):DWORDhOpenContext,設(shè)備驅(qū)動的事例句柄,由返回值:調(diào)用成功返回TRUE,失敗返回FALSE描述:這個函數(shù)用于關(guān)閉一個驅(qū)動程序的事例。應(yīng)用程序通過CloseHandle來調(diào)用這個函數(shù),當執(zhí)行完成這個函數(shù)的時候驅(qū)動程序的事例,hOpenContext將不再有效。接口驅(qū)動在表那的設(shè)置。ActivateDeviceEx函數(shù)來調(diào)用的。函數(shù)執(zhí)行后如果成功則返回一個設(shè)備的句BOOLXXX_Deinit(DWORD返回值:調(diào)用成功返回TRUE,失敗返回FALSE。DeactivateDevice函數(shù)調(diào)用這個函數(shù)。 DWORDCount)參數(shù):DWORDhOpenContext,CreateFile,ReadFile函數(shù)對這個設(shè)備進行讀操作,ReadFilehFile參數(shù)就讀寫的地址,如果操作失敗則返回值為-1DWORDXXX_Write(DWORDhOpenContext,LPCVOIDpSourceBytes,DWORDNumberOfBytes)參數(shù):DWORDhOpenContext,CreateFile,WriteFile函數(shù)對這個設(shè)備進行寫操作,WriteFilehFile參數(shù)就CountNumberOfBytes,用于表示BOOLXXX_IOControl(DWORDDWORDdwCode,PBYTEpBufIn,DWORDdwLenIn,PBYTEpBufOut,PDWORD參數(shù):DWORDhOpenContext,CreateFileDWORDdwCode,IOControl操作的語義,DWORDdwLenIn,要傳送給驅(qū)動程序使用數(shù)據(jù)的長度。PBYTEpBufOut,緩沖區(qū)指針指向驅(qū)動程序傳給應(yīng)用程序使用的數(shù),返回值:調(diào)用成功返回TRUE,失敗返回FALSE描述:這個函數(shù)通常用于向設(shè)備發(fā)送一個命令。應(yīng)用程序使用DeviceIOControl函數(shù)來操作系統(tǒng)調(diào)用這個函數(shù)。通過參數(shù)dwCode來通EVC彈出新建工程向?qū)Э?。如下圖所示。由于流接口驅(qū)動程序是以動態(tài)庫在新彈出的框中按照下圖進行選擇,然后點擊“Finish”完成建工程向?qū)Э颍凑障聢D進行設(shè)置。這時就會為建立的工程創(chuàng)建一個文件名稱為TestDRV.cpp。TestDRV.cpp#include#include#define WCHARDWORDdwReason,LPVOIDlpv){{case returncase G(1,(TEXTcase G(1,(TEXTcase #ifdefcase case }}DWORDTST_Init(DWORD{DWORD G(1,(TEXT//memset(strBuff,0,BUF_SIZE*//}BOOLTST_Deinit(DWORD{BOOL G(1,(TEXTreturn}DWORDTST_Open(DWORDhDeviceContext,DWORDAccessCode,DWORD{DWORD G(1,(TEXT}BOOLTST_Close(DWORD{BOOL G(1,(TEXTreturn}BOOLTST_IOControl(DWORDPBYTEpBufIn,DWORDdwLenIn,PBYTEpBufOut,DWORDdwLenOut,{BOOL G(1,(TEXTreturn}voidTST_PowerDown(DWORD{ G(1,(TEXT}voidTST_PowerUp(DWORD{ G(1,(TEXT}DWORDTST_Read(DWORDhOpenContext,LPVOIDpBuffer,DWORD{DWORD G(1,(TEXT//確定實際要的字節(jié)的大小數(shù)據(jù)DWORDcbBuffer=wcslen(strBuff);dwRet=min(cbBuffer,Count);//返回實際的字節(jié)return}DWORDTST_Seek(DWORDhOpenContext,longAmount,DWORD{DWORD G(1,(TEXTreturn}DWORDTST_Write(DWORDhOpenContext,LPCVOIDpSourceBytes,DWORD{DWORD G(1,(TEXT//確定實際要讀入的字節(jié)數(shù),寫入數(shù)據(jù)dwRet=min(BUF_SIZE,NumberOfBytes);//return}TestDRV.defLIBRARY 為E:\WINCE420\PUBLIC\SMDK2410。platform.bibNK 此 PBtestdrv.dlltest.drv.exe此處后面一句可以不加,而是通過運行WINCE后將testdrv.exeWINCEtestdrv.exeWINCE420\image\testdrv.exe,方法是直接將該文件拷貝到e:\EVC\TestDRVApp\ARMV4Dbg\下。platform.reg這里只是對每一個調(diào)用過程進行簡單說明,源程序見光盤的 void{//Openthedevicefile{{}}

::MessageBox(NULL,_T("OpenTEST1:Succed"),_T("TestDRV"),void{{}}void{WCHARDWORDdwBytesRead=256;::MessageBox(NULL,wch,TEXT("TestDRV"),}void{DWORDWCHAR*pString=TEXT("ThisisatestofWINCEdevicedriver.Thisisonlya}void{::DeviceIoControl(hStr,NULL,NULL,NULL,NULL,NULL,NULL,}此程序完成了打開、關(guān)閉、寫字符、字符以及調(diào)用IOControl這將6.3節(jié)編譯生成的nk.nb0到教學(xué)系統(tǒng)中運行拷貝6.4節(jié)編譯生成的TestDRV.exe文件到WINCE的My 錄下,在WINCE420\image 下有該文件,可以拷貝該文件到WINCE中。第7WindowsCEJXARM9-2410教學(xué)實驗系統(tǒng)采用RTL8019AS網(wǎng)卡驅(qū)動它是NE2000兼容類型,是通用的網(wǎng)卡,在WindowsCE中已經(jīng)包含改的驅(qū)動程序,其源代碼在如下中。WINCE420\PUBLIC\COMMON\OAK\DRIVERS\NETCARD\NE2000intOEMInterruptHandler(unsignedintelseif(IntPendVal //EINT4~7{= submask=s2410IOP

ifsubmask&(14))//0x10EINT4NE2000EINT4{s2410IOP->rEINTPEND=0x10;=

s2410INT->rSRCPND=if(s2410INT->rINTPND&BIT_EINT4_7)s2410INT-return //}} idInt,//@parmInterruptIDtobeenabled.<lInterruptID's.Interrupt foralistofpossbleLPVOIDpvData,//@parmptrtodatapassedinintheInterruptInitialize><p

cbData)//@parmSizeofdatapointedtocaseSYSINTR_ETHER: //EthernetonEINT4.s2410IOP->rGPFCON&=~(3<<8);s2410IOP->rGPFCON|= //s2410IOP->rEXTINT0&=~(7<<s2410IOP->rEXTINT0|(4 //EINT4 =0x10; &=~0x10; //S3C2410XDeveloperNotice(page4)warnsagainstwritinga1toa0bitintheINTPNDregister.if(s2410INT->rINTPND&BIT_EINT4_7)s2410INT->rINTPND=s2410INT- &=~BIT_EINT4_7;//NE2000兼容網(wǎng)卡驅(qū)動程序硬件訪問地址由注冊表項:[HKEY_LOCAL_MACHINE\Comm\NE20001\Parms]下的"IoBaseAddress"鍵值決定,在JXARM9-2410中為0xA ,該鍵在platform.reg文件中定義。ne2000ne2000驅(qū)動程序,方法如1、首先點擊”Build”->”O(jiān)penBuildReleasecdbuildNE2000的Windws類似。也可以直接修改表并啟動時自動建立,下面介紹修改表的方法。在platform.reg文件中添加如下表項該項設(shè)置NE2000網(wǎng)絡(luò)設(shè)備,設(shè)備名稱為"DisplayName"鍵值,即設(shè)備名稱為"DisplayName"鍵值,即"NE2000"。動態(tài)庫為設(shè)置網(wǎng)絡(luò)設(shè)備參數(shù),包括硬件地址0xA 2、并運行WindowsCE的網(wǎng)卡地址設(shè)置為5,請將主機IP地址設(shè)置為5DNSWindows類似。1、如果修改了NE2000驅(qū)動程序的源代碼,必須參照7.42platform.reg文件,請重新“RebuildAll”,或者先“Clean”AEboot通過以太網(wǎng)首先將eboot.nb0拷貝到tftp服務(wù)器 在uboot中,分別輸入如下命令:JX2410#tftp JX2410#下面是一個配置的示例,IP地址請根據(jù)您的網(wǎng)絡(luò)設(shè)置,其余的可以設(shè)置為RemoteConnection…”。在“Download:”下拉列表框中選擇“Ethernet”在“Kernel”下拉列表框中選擇“Ethernet”然后將看到一個“ConfigureEthernetDownloadService”框 在”Target”菜單中選擇“Download/Initialize”,將開始“nk.bin”image到在在附錄B通過USB首先必須保證“u2410mon.bin”imageflash中,燒寫方法請參考“附錄C”。USB驅(qū)動程序,安裝驅(qū)動程序的方法請參考“附錄E”。dnw ”然后選擇Serial Port/Connect,然后在標題欄將看到[COM1, 在LCD上可以看到啟動界面。首先將WINCE420\image\u2410mon.bin文件拷貝到tftp服務(wù)器目錄JX2410#protectoffJX2410#tftp JX2410#erase1:0JX2410# 0u2410mon.bin程序運行以后在串口中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論