




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第第頁NANDFlash上均勻損耗與掉電恢復(fù)在線測(cè)試NANDFlash以其大容量、低價(jià)格等優(yōu)勢(shì)迅速成為嵌入式系統(tǒng)存儲(chǔ)的新寵,因此其上的文件系統(tǒng)研究也日益廣泛。本文簡(jiǎn)要介紹了常用的NANDFlash文件系統(tǒng)YAFFS,并針對(duì)YAFFS在均勻損耗和掉電恢復(fù)方面進(jìn)行在線測(cè)試。在給出測(cè)試結(jié)果的同時(shí),著重研究嵌入式軟件測(cè)試方案和方法;對(duì)測(cè)試結(jié)果進(jìn)行分析,并提出改進(jìn)方案和適用環(huán)境。
關(guān)鍵詞NANDFlash均勻損耗軟件測(cè)試YAFFS
引言
隨著嵌入式技術(shù)在各種電子產(chǎn)品中的廣泛應(yīng)用,嵌入式系統(tǒng)中的數(shù)據(jù)存儲(chǔ)和管理已經(jīng)成為一個(gè)重要的研究課題。Flash存儲(chǔ)器具有速度快、容量大、成本低等很多優(yōu)點(diǎn),因此在嵌入式系統(tǒng)中被廣泛用作外存儲(chǔ)器件。嵌入式系統(tǒng)中的Flash存儲(chǔ)器需要有自己的文件系統(tǒng),而不能直接移植通用文件系統(tǒng),主要有兩個(gè)原因:第一,嵌入式系統(tǒng)的應(yīng)用條件惡劣,電源電壓不穩(wěn)定,突發(fā)性斷電以及非法插拔都容易造成災(zāi)難性的影響,通用文件系統(tǒng)對(duì)于可靠性的設(shè)計(jì)考慮不足;第二,通用文件系統(tǒng)的記錄信息(如FAT表)需要被多次修改,而記錄信息放在Flash存儲(chǔ)器固定的區(qū)塊中,將導(dǎo)致該區(qū)塊的頻繁操作,從而縮短Flash器的使用壽命。這樣就對(duì)軟件技術(shù)提出了更高的要求。
為了管理復(fù)雜的存儲(chǔ)硬件,同時(shí)提供可靠高效的存儲(chǔ)環(huán)境,出現(xiàn)了基于NAND和NOR的文件系統(tǒng)。目前主流的FFS(FlashFileSystem)有如下3種:TrueFFS、JFFSx以及YAFFS。YAFFS(YetAnotherFlashFileSystem)是專門為NANDFlash設(shè)計(jì)的嵌入式文件系統(tǒng),適用于大容量的存儲(chǔ)設(shè)備。它是日志結(jié)構(gòu)的文件系統(tǒng),提供了損耗平衡和掉電保護(hù)等機(jī)制,可以有效地減小上述原因?qū)ξ募到y(tǒng)一致性和完整性的影響。本文正是基于這樣的前提,介紹了關(guān)于嵌入式Y(jié)AFFS文件系統(tǒng)測(cè)試方案,針對(duì)文件系統(tǒng)中損耗平衡和掉電保護(hù)兩個(gè)重要的系統(tǒng)性能指標(biāo)進(jìn)行實(shí)時(shí)在線的測(cè)試與分析,不同的應(yīng)用環(huán)境使用該文件系統(tǒng)應(yīng)進(jìn)行相應(yīng)的修改。
1YAFFS文件系統(tǒng)概述
YAFFS文件系統(tǒng)類似于JFFS/JFFS2文件系統(tǒng)。不同的是,JFFS1/2文件系統(tǒng)最初是針對(duì)NORFlash的應(yīng)用場(chǎng)合設(shè)計(jì)的,而NORFlash和NANDFlash本質(zhì)上有較大的區(qū)別。盡管JFFS1/2文件系統(tǒng)也能應(yīng)用于NANDFlash,但由于它在內(nèi)存占用和啟動(dòng)時(shí)間方面針對(duì)NOR的特性做了一些取舍,所以對(duì)NAND來說通常并不是最優(yōu)的方案。
1.1NOR和NAND的比較
基本上NOR比較適合存儲(chǔ)程序代碼,其容量一般較?。ū热缧∮?2MB),且價(jià)格較高;而NAND容量可達(dá)1GB以上,價(jià)格也相對(duì)便宜,適合存儲(chǔ)數(shù)據(jù)。一般來說,128MB以下容量NANDFlash芯片的一頁大小為512字節(jié),用來存放數(shù)據(jù),每一頁還有16字節(jié)的備用空間(SpareData),充當(dāng)OOB(OutOfBand)區(qū)域,用來存儲(chǔ)ECC(ErrorCorrectionCode)校驗(yàn)/壞塊標(biāo)志等信息;再由若干頁組成一個(gè)塊,通常一塊為32頁(16KB)。與NOR相比,NAND不是完全可靠的。每塊芯片出廠時(shí)允許有一定比例的壞塊存在,對(duì)數(shù)據(jù)的存取不是使用線性地址映射,而是通過寄存器的操作串行存取數(shù)據(jù)。
1.2YAFFS數(shù)據(jù)在NAND上的存儲(chǔ)方式
YAFFS根據(jù)NAND閃存以頁為單位存取的特點(diǎn),將文件組織成固定大小的數(shù)據(jù)段。利用NAND閃存提供的每頁16字節(jié)的備用空間來存放ECC檢驗(yàn)信息和文件系統(tǒng)的組織信息,不僅能夠?qū)崿F(xiàn)錯(cuò)誤檢測(cè)和壞塊處理,而且能夠提高文件系統(tǒng)的加載速度。
YAFFS將文件組織成固定大小(512字節(jié))的數(shù)據(jù)段。每個(gè)文件都有一個(gè)頁面專門存放文件頭,文件頭保存了文件的模式、所有者id、組id、長(zhǎng)度、文件名等信息。為了提高文件數(shù)據(jù)塊的查找速度,文件的數(shù)據(jù)段組織成樹形結(jié)構(gòu)。YAFFS在文件進(jìn)行改寫時(shí),總是先寫入新的數(shù)據(jù)塊,然后將舊的數(shù)據(jù)塊從文件中刪除。YAFFS使用存放在頁面?zhèn)溆每臻g中的ECC進(jìn)行錯(cuò)誤檢測(cè),出現(xiàn)錯(cuò)誤后會(huì)進(jìn)行一定次數(shù)的重試;多次重試失敗后,該頁面就被停止使用。以(512+16)字節(jié)為一頁的NANDFlash芯片為例,YAFFS文件系統(tǒng)數(shù)據(jù)的存儲(chǔ)布局如圖1所示。
圖1YAFFS文件系統(tǒng)數(shù)據(jù)的存儲(chǔ)布局
2YAFFS文件系統(tǒng)測(cè)試方案總體設(shè)計(jì)
2.1測(cè)試總體說明
YAFFS文件系統(tǒng)是開源的,測(cè)試基于白盒測(cè)試。在所關(guān)心的代碼段中,插入測(cè)試代碼。為保證測(cè)試代碼不對(duì)原代碼造成影響,測(cè)試后可立即恢復(fù)為原代碼,所有測(cè)試代碼(包括測(cè)試用變量和函數(shù))均嵌入到#defineFS_TEST宏定義中。
2.2模擬文件的生成
嵌入式環(huán)境下對(duì)文件系統(tǒng)進(jìn)行大量、長(zhǎng)時(shí)間的測(cè)試存在很多問題,不易實(shí)現(xiàn),對(duì)測(cè)試代碼的插入和數(shù)據(jù)的監(jiān)視也比較困難。這里采用PC模擬測(cè)試的形式,用文件的讀/寫模擬NAND器件,并在PC上對(duì)模擬文件監(jiān)視,以達(dá)到測(cè)試的目的。代碼定義了各種NAND器件的類型,以適應(yīng)不同的器件。模擬器件時(shí),也用這些信息生成相應(yīng)的模擬文件。
指明要模擬的NAND器件的大?。‵ILE_SIZE_IN_MEG)和結(jié)構(gòu)(BLOCKS_PER_MEG,BLOCK_SIZE)后,按照相應(yīng)的大小和結(jié)構(gòu)生成文件g_filedisk。
3均勻損耗測(cè)試
3.1測(cè)試目的
NANDFlash器件每個(gè)Block區(qū)塊的擦寫次數(shù)有限。在需要實(shí)時(shí)記錄的應(yīng)用環(huán)境中,為保證器件壽命,應(yīng)盡量使每個(gè)區(qū)塊的擦寫次數(shù)相對(duì)平均,以最大程度地延長(zhǎng)NANDFlash器件的使用壽命。此項(xiàng)測(cè)試記錄每個(gè)Block區(qū)塊的擦寫次數(shù),以測(cè)試YAFFS文件系統(tǒng)在均勻損耗方面的性能。
3.2測(cè)試方法
測(cè)試代碼在器件模擬文件的每一頁的Spare區(qū)后,增加了字節(jié),用于記錄該頁的擦寫次數(shù)。由于擦寫是以Block為單位進(jìn)行的,因此每個(gè)Block各頁的擦寫記錄數(shù)是相同的。在以后的測(cè)試中,可以只使用第一頁的該Block空間記錄擦寫次數(shù),其他空間作其他測(cè)試用。
測(cè)試代碼插入到CheckInit()和yaffs_FEEraseBlockInNAND()(yaffs_fileem.cpp)中,在初始化器件模擬文件時(shí),生成(新模擬文件)或讀?。河心M文件)擦寫次數(shù);并在程序執(zhí)行擦寫函數(shù)時(shí),對(duì)擦寫次數(shù)進(jìn)行累加和保存。
測(cè)試程序用到的測(cè)試變量:記錄擦寫次數(shù)的數(shù)組-g_ersNumArray[FILE_SIZE_IN_MEG*BLOCKS_PER_MEG]、指向擦寫的最大值-g_pErsMax和指向擦寫的最小值?g_pErsMin。
測(cè)試程序用WireOut0.log和WireOut1.log兩個(gè)文件記錄每個(gè)Block區(qū)塊的擦寫次數(shù),查看這兩個(gè)文件,可以看到每個(gè)區(qū)塊的擦寫次數(shù)以及最大/最小值。兩個(gè)文件是等同的,因測(cè)試時(shí)間比較長(zhǎng),取兩個(gè)文件以避免系統(tǒng)在寫記錄文件時(shí)出錯(cuò),而丟失所有的記錄;兩個(gè)文件輪流寫,保證至少有一個(gè)文件的內(nèi)容是系統(tǒng)出錯(cuò)前最近的記錄。
3.3測(cè)試結(jié)果
YAFFS文件系統(tǒng)按“順序”使用未分配的空間用于新的寫入操作,并以同樣“順序”擦除廢棄的區(qū)塊。寫入和擦除操作,均按順序在未分配的空間或廢棄的空間中進(jìn)行。當(dāng)系統(tǒng)未用空間小于某一預(yù)設(shè)值后,系統(tǒng)將對(duì)存在廢棄頁的區(qū)塊進(jìn)行回收。這種寫入和擦除策略在一定程度上保證了損耗的均勻性。
這種機(jī)制雖然在一定程度上滿足均勻損耗的要求,但還是存在問題,并不適用于所有的嵌入式應(yīng)用環(huán)境。假設(shè)在一塊16MB的NAND器件上,有10MB空間用來存放相對(duì)固定、不經(jīng)常修改的數(shù)據(jù)文件,則經(jīng)常修改的文件只能在剩下的6MB空間上重復(fù)擦寫,在這6MB空間上做到“均勻損耗”。對(duì)整個(gè)器件來說,系統(tǒng)并沒有合適的搬移策略對(duì)固定文件進(jìn)行搬移,整個(gè)器件做不到均勻損耗。在實(shí)時(shí)記錄信息量比較大的應(yīng)用環(huán)境中,應(yīng)編寫相應(yīng)的搬移策略函數(shù),對(duì)固定文件進(jìn)行定期的搬移,以確保整個(gè)NAND器件的均勻損耗。
4掉電恢復(fù)性能測(cè)試
4.1測(cè)試目的
文件系統(tǒng)應(yīng)能保證在系統(tǒng)突然斷電的情況下,最大限度地恢復(fù)(保護(hù))有用數(shù)據(jù)。如果在修改一個(gè)文件時(shí)掉電,那么掉電后的文件保護(hù)方式根據(jù)實(shí)際情況可分為3種:
①用舊文件完全代替新寫文件,新寫文件(沒寫完)被忽略。這種保護(hù)方式應(yīng)用比較多,比如在更新設(shè)置時(shí)掉電,使用掉電前的設(shè)置,用戶是可以接受的。
②用新文件完全代替舊文件(新文件寫了多少就保留多少)。這種保護(hù)方式適合應(yīng)用于文本的情況,比如短信。新短信雖然不完整,但根據(jù)情況用戶可以得到部分信息,如果發(fā)送方信息完整或?qū)儆诳刹聹y(cè)的情況,則可以要求發(fā)送方重發(fā)。
③己寫部分用新文件,未寫部分用老文件,所謂“新加舊”的保護(hù)方式。這種保護(hù)方式可以應(yīng)用在動(dòng)態(tài)更新的文件上。但是,對(duì)于使用偏移量進(jìn)行的文件讀寫操作,采用這種保護(hù)方式,會(huì)產(chǎn)生亂碼。
4.2測(cè)試方法
測(cè)試代碼隨機(jī)產(chǎn)生掉電消息,模擬一次掉電行為。測(cè)試代碼插入到y(tǒng)affs_FEWriteChunkToNAND()(yaffs_fileem.cpp)中,在寫Data區(qū)和Spare區(qū)時(shí)分別產(chǎn)生隨機(jī)掉電位置,模擬掉電行為。掉電后,程序重新掛接文件系統(tǒng),并讀取掉電時(shí)正在更新的文件,與原文件相比給出判定結(jié)果。
程序用到的測(cè)試變量:掉電類別?g_tstPowerOff,1為Data區(qū)掉電,2為Spare區(qū)掉電。在完全模擬時(shí),掉電類別隨機(jī)產(chǎn)生。程序用TestLog.log記錄掉電后判定的結(jié)果。TestLog.log為增加方式打開,新記錄寫在最后,不影響原有的記錄結(jié)果。
4.3測(cè)試手段
模擬一次“掉電”行為,需要進(jìn)行特殊的處理。實(shí)際的掉電行為在電源重新供給后,整個(gè)系統(tǒng)會(huì)重新開始,包括重新啟動(dòng)文件系統(tǒng)。掉電前系統(tǒng)的所有參數(shù)、系統(tǒng)堆棧以及現(xiàn)場(chǎng)均失效。在測(cè)試中模擬掉電行為有一定的難度,直接斷電既不安全,也不現(xiàn)實(shí),可用exit()函數(shù)中止程序來模擬。在執(zhí)行寫操作時(shí),寫入隨機(jī)的字節(jié)數(shù)后,用exit()函數(shù)立即中止程序的運(yùn)行;再重新啟動(dòng)程序,讀取掉電時(shí)寫入的文件,分析文件以檢查文件系統(tǒng)新的掉電保護(hù)功能。
上述測(cè)試手段不適用于自動(dòng)測(cè)試,也不可能手工進(jìn)行大量的測(cè)試。筆者在該項(xiàng)測(cè)試中,巧妙地使用了try{}和catch{}結(jié)構(gòu),既模擬了實(shí)際的掉電行為,又保證了自動(dòng)測(cè)試的順利進(jìn)行。
模擬掉電行為的核心代碼如下:
#ifdefFS_TEST//測(cè)試代碼段
switch(rand()%5){//隨機(jī)產(chǎn)生20%的掉電率
case0://無掉電情況
case1:
case2:
case3:
write(g_filedisk,localData,512);
break;
case4://模擬掉電行為,隨機(jī)產(chǎn)生掉電時(shí)己寫的字節(jié)數(shù)
write(g_filedisk,localData,rand()%512);
close(g_filedisk);//己掉電,關(guān)閉磁盤模擬文件
initialised=0;//為防止文件系統(tǒng)出差,置初始化標(biāo)志為未初始化拋出異常,直接返回到文件系統(tǒng)加載處,跳過函數(shù)正常返回的過程
throwint(0x01);
//exit(0);
break;
}
#endif
主控程序代碼如下:
yaffs_StartUp();
yaffs_mount((signedchar*)"/Root");
poCode=0;
try{
//修改一個(gè)文件(在寫文件時(shí),每頁會(huì)有20%的掉電率)
modify_in_a_file("/Root/File");
}
catch(inti_code){
poCode=i_code;
}
//模擬掉電結(jié)束后重新掛接系統(tǒng),并測(cè)試掉電文件的正確性
yaffs_StartUp();
yaffs_mount((signedchar*)"/Root");
copy_out_a_file("File.poff",(signedchar*)"/Boot/File");
yaffs_unmount((signedchar*)"/Root");
//以下檢測(cè)File.poff的正確性
4.4測(cè)試結(jié)果
YAFFS-NAND文件系統(tǒng),只提供上述的②和③兩種文件保護(hù)方式。在打開文件時(shí),若以“截短為0”的方式打開已有文件,則保護(hù)方式為第②種,使用新文件完全代替舊文件。若以修改的方式打開己有文件,則保護(hù)方式為第③種,使用新加舊的保護(hù)方式。
需要注意的是:在數(shù)據(jù)區(qū)掉電的情況下,以上兩種保護(hù)方式完好,測(cè)試通過。但在Spare區(qū)掉電的情況下,文件系統(tǒng)有很大的概率讀不出掉電時(shí)的文件,幾乎不能正常使用。在實(shí)際掉電情況中,按Data區(qū)和Spare區(qū)的比例關(guān)系(512∶16),寫操作掉電時(shí)發(fā)生在Spare區(qū)的概率為3.03%,不可接受。另外,文件系統(tǒng)不提供舊文件的保護(hù)方式,對(duì)于這類應(yīng)用(還是比較多的)需要另外實(shí)現(xiàn)。
4.5對(duì)YaffsNAND在掉電保護(hù)方面的改進(jìn)
4.5.1增加保護(hù)方式
Yaffs-NAND文件系統(tǒng)在原理上決定了只能有上述的②和③兩種文件保護(hù)方式。要提供第一種保護(hù)方式,需要對(duì)文件系統(tǒng)進(jìn)行擴(kuò)展,增加2個(gè)函數(shù)和2個(gè)結(jié)構(gòu)體:
intyaffs_openEx(signedchar*path,intoflag,intmode,SProInfo*i_proInfo=NULL)
intyaffs_closeEx(intfd,SProInfo*i_proInfo=NULL)
typedefenumEProMode{
EOnlyOld,
EOnlyNew,
ENewOld,
EDefault,
}EProMode;
typedefstructSProInfo{
EProModeproMode;
signedchar*name;
intfd;
SProInfo(){
proMode=EDefault;
name=NULL;
fd=-1;
}
}SProInfo;
EOnlyOld、EOnlyNew、ENewOld和EDefault分別表示3種不同的保護(hù)方式和默認(rèn)保護(hù)方式(由原文件系統(tǒng)提供)。SProInfo結(jié)構(gòu)不僅記錄保護(hù)方式,還記錄了該文件名,供關(guān)閉文件時(shí)使用。
yaffs_openEx()根據(jù)傳入的保護(hù)方式,修改打開文件的標(biāo)志,以顯式地設(shè)置原有的②、③兩種保護(hù)方式。當(dāng)保護(hù)方式為EOnlyOld時(shí),yaffs_openEx()將打開另一個(gè)新的臨時(shí)文件,并返回給用戶使用。傳入的SProInfo結(jié)構(gòu)的指針,將帶回文件名和文件句柄,供關(guān)閉文件時(shí)用。yaffs_closeEx()函數(shù)在關(guān)閉文件時(shí),檢查文件的保護(hù)方式。若為第②、③種情況,則直接關(guān)閉;若為第一種情況,則先刪除原文件,再把新文件重新命名,以達(dá)到文件保護(hù)的目的。
使用方法如下:
①使用默認(rèn)方式,則與原文件系統(tǒng)使用方法相同。新參數(shù)默認(rèn)為NULL,可以直接兼容己有代碼。
②使用擴(kuò)展方式,則要先生成一個(gè)SProInfo的對(duì)象,但將其指針傳給yaffs_openEx()。關(guān)閉時(shí)同樣要將其指針傳給yaffs_closeEx()。例如:
SProInfopif;
Mode=EOnlyOld;//使用第一種保護(hù)方式
inth=yaffs_openEx(Name,O_CREAT|O_RDWR,S_IREAD|S_IWRITE,
//用文件句柄h對(duì)文件進(jìn)行讀寫操
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 榆林能源科技職業(yè)學(xué)院《鋼琴基礎(chǔ)二》2023-2024學(xué)年第一學(xué)期期末試卷
- 合肥職業(yè)技術(shù)學(xué)院《幼兒園語言教育活動(dòng)設(shè)計(jì)與指導(dǎo)》2023-2024學(xué)年第二學(xué)期期末試卷
- 皖西學(xué)院《康復(fù)溝通與交流2》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津理工大學(xué)《看花識(shí)草認(rèn)中藥》2023-2024學(xué)年第二學(xué)期期末試卷
- 嘉興南洋職業(yè)技術(shù)學(xué)院《藥品質(zhì)量控制》2023-2024學(xué)年第二學(xué)期期末試卷
- 邵陽學(xué)院《新媒體平臺(tái)運(yùn)營(yíng)實(shí)戰(zhàn)企業(yè)》2023-2024學(xué)年第二學(xué)期期末試卷
- 贛南科技學(xué)院《藝術(shù)批評(píng)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東工業(yè)大學(xué)《學(xué)院通選課傳統(tǒng)文化藝術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 3C認(rèn)證基礎(chǔ)知識(shí)課件
- 人教PEP版英語五年級(jí)下冊(cè)教學(xué)課件Unit 4 Part A 第二課時(shí)
- 《騎鵝旅行記》名著閱讀讀課件
- 2025上海煙草機(jī)械限責(zé)任公司高校畢業(yè)生招聘39人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年02月水利部珠江水利委員會(huì)所屬事業(yè)單位公開招聘30人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 《外科護(hù)理學(xué)》課件- 乳腺癌術(shù)后淋巴水腫預(yù)防和護(hù)理
- 2025年沈陽地鐵集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 【含聽力9英一模】合肥市蜀山區(qū)2024年中考一模英語
- 2025至2031年中國(guó)蝴蝶蘭行業(yè)投資前景及策略咨詢研究報(bào)告
- 房地產(chǎn)投資項(xiàng)目不確定性因素分析
- 《中匯稅務(wù)師事務(wù)所》課件
- 2025屆東北三省三校高三第二次聯(lián)考語文試卷含解析
- 專題03辨析題解題技巧與方法(課件)道德與法治中考復(fù)習(xí)題型解題技巧與方法
評(píng)論
0/150
提交評(píng)論