版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、遼寧工業(yè)大學(xué) 課程設(shè)計說明書(論文)遼寧工業(yè)大學(xué)單片機(jī)及接口技術(shù) 課程設(shè)計(論文)題目:直流電機(jī)驅(qū)動程序的設(shè)計院(系): 電子與信息工程學(xué)院專業(yè)班級:計算機(jī)101學(xué) 號: 100401018學(xué)生姓名:鄭杭指導(dǎo)教師:瞿濤教師職稱:講師起止時間:13-12-28 至 14-01-10課程設(shè)計(論文)任務(wù)及評語院(系):電子與信息工程學(xué)院教研室:計算機(jī)科學(xué)與技術(shù)號 學(xué)杭 K 關(guān)課程設(shè)計 (論文) 題目流 直課程設(shè)計論文 >任務(wù)訕用» 紂 伽 抄 M,互 或 相 ) 禁 機(jī) 禺 嚴(yán) 動 電 , 電 口 > 流WM 直 的 左 O 整 字、元00 匕匕 * O ws Il 畑 容
2、換 芯 幾 鉗 路 計份 厶冃 一 一 O 為7 流 以W加觀伽 直 M 刖流爪卄 將。 制 利序腫婦 wtMM圖 測 利朗完印 膽轉(zhuǎn):細(xì)W怖 育 M以打 M血W則何卄嘰 M十 iiIfflMa r/ 4 Tr- IT 4<一 一 - IV 巳土、 流能十#路也設(shè)原+:劉婦 根m認(rèn)撰 ff電近電Lr>itt近胡ffi:1>路2>3> 流要件直總設(shè)件態(tài)和求 電 直主e1.23 軟1.2 要 出指導(dǎo)教師評語及成績?nèi)赵履曛缚兂煽偰夸浀?章嵌入式linux 1第2章設(shè)備驅(qū)動程序簡介32.1設(shè)備驅(qū)動程序的概念32. 2設(shè)備驅(qū)動程序的基本結(jié)構(gòu) 3第3章搭建交叉編譯環(huán)境53.1
3、 安裝 Redhat 9.0Linux 操作系統(tǒng)53.2安裝交叉編譯器53.3配置NFS網(wǎng)絡(luò)文件系統(tǒng)53.4鏈接掛載5第4章 直流電機(jī)驅(qū)動程序的編寫 64.1驅(qū)動程序的編寫64.2直流電機(jī)用戶應(yīng)用程序 94.3驅(qū)動程序的編譯文件 Makefile 104.4用戶程序的 Makefile 文件11第5章運(yùn)行程序125.1建立設(shè)備進(jìn)入點(diǎn) 125.2加載驅(qū)動程序125.3運(yùn)行用戶應(yīng)用程序 12第6章課程設(shè)計總結(jié)13參考文獻(xiàn)14遼寧工業(yè)大學(xué) 課程設(shè)計說明書(論文)第1章嵌入式linuxLinux操作系統(tǒng)核心最早是由芬蘭的 Linus Torvalds于1991年9月在芬蘭赫辛基大 學(xué)上學(xué)時發(fā)布的(Li
4、nux 0。01版,第一個正式向外公布的Linux內(nèi)核版本),后來經(jīng)眾多 世界項尖的軟件工程師不斷修改和完善,Linux得以在全球普及開來,在服務(wù)器域及個人 桌面領(lǐng)域得到越來越多的應(yīng)用。Linux是在GNU公共許可權(quán)限下免費(fèi)獲的,是一款符合 POSIX標(biāo)準(zhǔn)的多用戶、多任務(wù)、支持多線程和多CPU的類Unix操作系統(tǒng)。Linux以其高效 性和活躍性著稱。Linux模塊化的設(shè)計結(jié)構(gòu),使得它既能夠在格昂貴的工作站上運(yùn)行又能 夠在廉價的PC機(jī)上實現(xiàn)全部的Unix特性。Linux當(dāng)前有很多發(fā)行版本,流行的有:RedHat Linux、Debian Linux、ReflagsLinux、Ubuntu等。由于
5、集成電路技術(shù)的飛速發(fā)展,嵌入 式系統(tǒng)的開發(fā)從單片機(jī)時代進(jìn)入到了一個“系統(tǒng)開發(fā)的階段,嵌入式操作系統(tǒng)也逐漸 走上了歷史舞臺。從國內(nèi)和國外來看,嵌入式操作系統(tǒng)主要有 WindowsCE VxWorks pSOS Palm OS等。Linux是一個成熟、穩(wěn)定的操作系統(tǒng),由于其在嵌入式開發(fā)方面具有其它操 作系統(tǒng)無可比擬的優(yōu)勢,經(jīng)過這幾年的發(fā)展,已迅速躋身主流嵌入式開發(fā)平臺。Linux作為嵌入式操作系統(tǒng)的優(yōu)勢在于:1. Li nux 是開放源代碼的免費(fèi)軟件。只要遵守 GPL的規(guī)定,就可以免費(fèi)獲得Linux 內(nèi)核和其它自由軟件的源代碼,采用Linux操作系統(tǒng)構(gòu)建嵌入式系統(tǒng),可以大大降低開發(fā) 成本和周期。2
6、丄inux具有完善的文檔和廣泛的技術(shù)支持。Linux是互聯(lián)網(wǎng)充分發(fā)展的產(chǎn)物,在網(wǎng) 上能夠找到許多關(guān)于Linux的文檔以及強(qiáng)大的技術(shù)支持。3丄inux內(nèi)核功能強(qiáng)大,性能高效、穩(wěn)定。Linux的內(nèi)核非常穩(wěn)定,它的高效和穩(wěn)定 性已經(jīng)在各個領(lǐng)域,尤其是在網(wǎng)絡(luò)服務(wù)器領(lǐng)域得到了事實的驗證。4.Linux能夠支持多種體系結(jié)構(gòu),是支持微處理器種類最多的操作系統(tǒng)。目前,Linux 已經(jīng)被移植到數(shù)十種硬件平臺上,幾乎所有主流的硬件平臺,如 X86 ARM PPC MIPS ALPHA SPAR(等, Linux 都支持。5丄inux擁有強(qiáng)大的網(wǎng)絡(luò)功能。隨著嵌入式系統(tǒng)的發(fā)展,嵌入式系統(tǒng)與Intemet結(jié)合得越來越緊
7、密。與其它操作系統(tǒng)相比,Linux在網(wǎng)絡(luò)方面有較大的優(yōu)勢,基本上所有的網(wǎng) 絡(luò)協(xié)議和網(wǎng)絡(luò)接口都可以在 Linux上找到。6.Linux大小和功能可定制。Linux繼承了 Unix的優(yōu)秀設(shè)計思想,內(nèi)核與用戶界面完 全獨(dú)立,各部分的可定制性很強(qiáng),可以按照需求進(jìn)行定制和配置, 這對于硬件資源有限的 嵌入式系統(tǒng)是一個理想的選擇。2遼寧工業(yè)大學(xué) 課程設(shè)計說明書(論文)第2章設(shè)備驅(qū)動程序簡介2.1設(shè)備驅(qū)動程序的概念設(shè)備驅(qū)動程序是有內(nèi)核中的相關(guān)例程和數(shù)據(jù)組成的1/O設(shè)備軟件接口,每當(dāng)內(nèi)核意識到要對某個設(shè)備今次那個特殊的操作是,它就調(diào)用相應(yīng)的驅(qū)動例程,當(dāng)驅(qū)動例程完成后,就返回至用戶進(jìn)程。設(shè)備驅(qū)動程序是操作系統(tǒng)內(nèi)
8、核、硬件之間的接口。設(shè)備驅(qū)動程序為應(yīng)用程序忽略 了硬件的細(xì)節(jié),這樣在應(yīng)用程序看來,硬件設(shè)備只是一個設(shè)備文 件,應(yīng)用程序可以象 操作普通文件一樣對硬件設(shè)備進(jìn)行操作。設(shè)備驅(qū)動程序是內(nèi)核的一 部分,它文成以下功能:(1) 對設(shè)備初始化和釋放。(2) 把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù)。(3) 讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請求的數(shù)據(jù)。(4) 檢測和處理設(shè)備出現(xiàn)的錯誤。每個設(shè)備驅(qū)動程序都有以下幾個特性:(1) 具有一整套的和硬件設(shè)備通訊的例程,并且提供給操作系統(tǒng)一套標(biāo)準(zhǔn)的 軟件接口。(2) 有一個可以被操作系統(tǒng)動態(tài)調(diào)用和移除的自包含組件。(3) 可以控制和管理用戶程序和物理設(shè)備之間
9、的數(shù)據(jù)流。2. 2設(shè)備驅(qū)動程序的基本結(jié)構(gòu)對用戶程序而言,設(shè)備驅(qū)動程序隱藏了設(shè)備的具體細(xì)節(jié), 對各種不同設(shè)備提供了一致 的接口。一般設(shè)備驅(qū)動程序可以分為三個主要組成部分:(1)自動配置和初始化子程序:自動配置和初始化子程序常在相應(yīng)的 driver中實現(xiàn),負(fù) 責(zé)檢測所要驅(qū)動的硬件設(shè)備是否存在和是否能正常工作。如果該設(shè)備正常,則對這個設(shè)備及其相關(guān)的設(shè)備驅(qū)動程序需要的狀態(tài)進(jìn)行初始化。這部分驅(qū)動程序僅在初始化的時候調(diào)用 一次。服務(wù)于I/ O請求的子程序:它又稱為驅(qū)動程序的上半部分, 調(diào)用這部分是由于系統(tǒng)調(diào)用的結(jié)果。這部分程序在執(zhí)行的時候,系統(tǒng)仍認(rèn)為是和進(jìn) 行調(diào)用的進(jìn)程屬于同一個進(jìn)程,只是由用戶態(tài)變成了核
10、心態(tài),具有進(jìn)行此系統(tǒng)調(diào)用的用戶 程序的運(yùn)行環(huán)境。因此可以在其中調(diào)用 sleepO等與進(jìn)程運(yùn)行環(huán)境有關(guān)的函數(shù)。(3)中斷服務(wù)子程序:在Lintm系統(tǒng)中,并不是直接從中斷向量表中調(diào)用設(shè)備驅(qū)動程序的中斷服務(wù)子程序,而是由系統(tǒng)來接收硬件中斷,再由系統(tǒng)調(diào)用中斷服務(wù)子程 序。中斷可以產(chǎn)生在任何一個進(jìn)程運(yùn)行的時候,因此,在中斷服務(wù)程序被調(diào)用的時候, 不能依賴于任何進(jìn)程的狀態(tài),也就不能調(diào)用任何與進(jìn)程運(yùn)行環(huán)境有關(guān)的函數(shù)。因為設(shè)備驅(qū)動程序一般支持同一類型的若干設(shè)備,所以一般在系統(tǒng)調(diào)用中斷服務(wù)子程序的時候, 都帶有 一個或多個參數(shù),以唯一標(biāo)識請求服務(wù)的從設(shè)備。4遼寧工業(yè)大學(xué) 課程設(shè)計說明書(論文)第3章搭建交叉編譯
11、環(huán)境3.1安裝Redhat 9.0Linux操作系統(tǒng)在PC機(jī)上安裝虛擬機(jī),并在虛擬機(jī)上安裝Redhat 9.0Linux操作系統(tǒng)。3.2安裝交叉編譯器似乎 啟動虛擬機(jī)并以root用戶名登錄,在主機(jī)的根目錄/下,創(chuàng)建linuette目錄, 如:mkdir /linuette 。在mnt/cdrom目錄下找到光盤,將光盤中 RPM?文件夾拷貝到 /linu ette目錄下,打開系統(tǒng)工具下地終端,此時,系統(tǒng)將彈出終端框,在里面改變目/linuette/RPMS 下,輸入如下命令:#rpm - Uvh *.rpm3.3配置NFS網(wǎng)絡(luò)文件系統(tǒng)根據(jù)在Linux主機(jī)終端上執(zhí)行setup,選中Firewall
12、 configuration,回車,進(jìn)入系統(tǒng)服務(wù)選項菜單,選擇 NOFIREWAL關(guān)閉防火墻。之后選中System setvices回車,選 中*nfs.保存退出。利用編輯器打開/etc/exports 文件,修改為:/(rw)保存退出。改 變目錄到/etc/rc.d/init.d/下,執(zhí)行如下命令:./nfs start 3.4鏈接掛載用交叉網(wǎng)線主機(jī)和實驗系統(tǒng)鏈接起來,打開minicom,配置波特率為115200,無奇偶校驗位。給系統(tǒng)上電,利用ifconfig eth0 192.168.0.12改變系統(tǒng)IP地址。在主機(jī)終端 上配主機(jī)Linux系統(tǒng)IP地址為192.168.0.11.利用pin
13、g命令看主機(jī)與實驗系統(tǒng)是否鏈接 上。利用chmod - R 777 /home/nfs改變/home/nfs文件夾屬性,在 minicom上輸入命令 mount 192.168.0.11/home/nfs /mnt/yaffs回車,掛載主機(jī)上的 /home/nfs 到實驗系統(tǒng)的/mnt/yaffs 目錄下。至此,Linux實驗環(huán)境搭建成功。5遼寧工業(yè)大學(xué) 課程設(shè)計說明書(論文)第4章 直流電機(jī)驅(qū)動程序的編寫4.1驅(qū)動程序的編寫首先是設(shè)備初始化,定義直流電機(jī)驅(qū)動程序的初始化函數(shù) ZLDJinit (),在函數(shù)中實 現(xiàn)向系統(tǒng)注冊設(shè)備號、設(shè)備名稱和初始化寄存器。向系統(tǒng)注冊設(shè)備,這里定義電機(jī)的主設(shè) 備
14、號宏符號名為ZLDJ-MAJOR設(shè)備名稱為zldj-drv ,設(shè)備的結(jié)構(gòu)體為&ZLDJ-ops,則設(shè)備 的注冊函數(shù)為:Devfs-register-chrdev(ZLDJ-MAJOR, ” zldj-dev ”,ZLDJ-ops);設(shè)備初始化函數(shù): Static int in tZLDJ-i ni t(void)In t ret=-ENODEV;ret= Devfs-register-chrdev(ZLDJ-MAJOR, ” ZLDJ-drv ” ,&ZLDJ-ops); showversio n();printk(ZLDJ-Module register success! -
15、kernel-n”);if(ret<0)/當(dāng)返回值小于0時,設(shè)備注冊失敗Printk (” Could not register ZLDJ-driver ”);return 0;驅(qū)動程序的file-operation數(shù)據(jù)結(jié)構(gòu),由于直流電機(jī)驅(qū)動程序只能控制電機(jī)旋轉(zhuǎn)和停止,因此只需要接口函數(shù)ioctl ()就夠了。static struct file-operations ZLDJ-ops=Ioctl:ZLDJ-ioctl ,控制直流電機(jī)轉(zhuǎn)動和停止的借口函數(shù),控制直流電機(jī)轉(zhuǎn)動和停止的借口函數(shù)ioctl()后,主要是設(shè)備寄存器 GPRS與寄存器GPCR勺值。GPSM置位寄存器,當(dāng)取值為1時,電
16、機(jī)開始轉(zhuǎn)動。GPSR2 |= (0x1«20;/ 電機(jī)正轉(zhuǎn)GPSR2 |=(0x1<<18;/ 電機(jī)反轉(zhuǎn)GRC為復(fù)位寄存器,當(dāng)取值為1時,電機(jī)停止轉(zhuǎn)動。GPCR2 |=(0x1<<20;/電機(jī)正轉(zhuǎn)停止GPCR2 |=(0x1<<18;/電機(jī)反轉(zhuǎn)停止udelay ()設(shè)置一段時否則會產(chǎn)生溢出,因此為了能讓電機(jī)旋轉(zhuǎn)一段時間后,自動停止轉(zhuǎn)動,要使用函數(shù) 間延遲。由于函數(shù)udelay ()是微妙級,且該值不能取得太大, 設(shè)置一個循環(huán)來加大延遲的時間。for ( i=0 ; i<300;i+)udelay(8000);/ 延時直流電機(jī)驅(qū)動源程序:#i
17、ncludevli nux/con fig.h>#i ncludevli nu x/kernel.h>#in cludevli nu x/sched.h>#i ncludevli nu x/timer.h>#in cludevli nux/ini t.h>#in cludevli nu x/module.h>#in cludevli nu x/delay.h>#in cludevli nux/in terrupt.h>#i ncludevli nu x/devfs-fs-kernel.h>#in cludevli nu x/fs.h>
18、#in cludevli nu x/slab.h>#in cludevasm/io.h>#i ncludevli nu x/asm/irq.h>#i ncludevli nu x/hardware.h>#define ZLDJ-MAJOR 111#define VERS ” ZLDJ-dev”void showversi on(v oid)prin tk();9遼寧工業(yè)大學(xué) 課程設(shè)計說明書(論文)printk(“ sn”,VERS);prin tk(*nn);/* 接口函數(shù) ioctl*/*file,u nsig nedintssize-tZLDJ-ioctl(stru
19、ct inode*ino de,struct filecmd, un sig ned long arg)int i;GPSR2 |=( 0x1«20;/電機(jī)正轉(zhuǎn)for ( i=0 ; i<300;i+)udelay(8000);/延時GPCR2 |=( 0x1<<20;/電機(jī)正轉(zhuǎn)停止for ( i=0 ; i<300;i+)udelay(8000);/延時GPSR2 |=( 0x1<<18;/電機(jī)反轉(zhuǎn)for ( i=0 ; i<300;i+)udelay(8000);/延時GPCR2 |=( 0x1<<18;/電機(jī)反轉(zhuǎn)停止udel
20、ay(arg);return 0;static struct file-operati ons ZLDJ-ops=ioctl ZLDJ-ioctl,;static int init set-ZLDJ-i nit(void)int ret=-ENODEV;ret=devfs-register-chrdev(ZLDJ-MAJOR, ” ZLDJ-drv ”,&ZLDJ-ops); showvers ion();printk(“ZLDJ-Module register success!-kernel-n”);if(retvO)/當(dāng)返回值小于0時,設(shè)備注冊失敗printk (“ Could n
21、ot register ZLDJ-driver ”);return 0;static void exit clea nup-ZLDJ-ctl(void)#ifdef OURS-HELLO-DEBUGprintk(“ cleanup-Module-kernel-n”);#en difdecfs-unregister-chrdev(ZLDJ-MAJOR,” ZLDJ-drv ” )MODULE-LICENS“(GPL )module-i nit(set-ZLDJ-i nit);module-exit(clea nup-ZLDJ-ctl);4.2直流電機(jī)用戶應(yīng)用程序直流電機(jī)用戶應(yīng)用程序設(shè)計分析,直流
22、電機(jī)應(yīng)用程序的功能是在用戶空間調(diào)用設(shè)備驅(qū)動程序,其主要設(shè)計步驟如下。第一步,獲取直流電機(jī)驅(qū)動程序的文件描述符。fd=open ("/dev/zldj_drv",O_RDWR );第二步,調(diào)用設(shè)備驅(qū)動程序中的函數(shù)ioctl (),向電機(jī)發(fā)出控制指令。ioctl(fd,0x1,1000);直流電機(jī)用戶應(yīng)用程序源程序:#i nclude<stdio.h>#in clude<sys/ioctl.h>#in clude<fc ntl.h>#in cludev un istd.h>int mai n() int fd,i nt ret;fd=o
23、pe n("/dev/zldj_drv",O_RDWR);if(fd<0) prin tf("nn Ope n device zldj error' n"); prin tf("n please in put Number (0-9):"); scan f("%x",&ret);ioctl(fd,0x1,1000);close(fd);printf("End of Test'n");return 0;4.3驅(qū)動程序的編譯文件MakefileKERNELDIR=/Li
24、 nuxINCLUDEDIR=$(KERNELDIR)/i ncludeCROSS_COMPILE=arm-Li nux-CC =$(CROSS_COMPILE)gccCFLAGS+=-l.CFLAGS+=-Wall-O-D_KERNEL_-DMODULE-l $ (INCLUDEDIR)TARGET=zldj_drv.oall:$(TARGET)zldj_drv.o:zlidj_drv.c$(CC) -c $ (CFLAGS) $ A-o $ in stall:in stall-d $ (INSTALLDIR)in stall-c $ (TARGET).o $ (INSTALLDIR)cle
25、an :rm-f *.o * core .depe nd4.4用戶程序的Makefile文件CC=arm-L inu x-gccSTD= _GUN_SOURCEWARN= -WallTARGTS=testZLDJ.c.o:$(CC) -c $ (CFLAGS)-D $ (STD) $ (WARN) $ < all: $(STARGTS)TestZLDJ:testZLDJ.o$(CC)testZLDJ.o -o testZLDJclea n:rm-f *.o core a.out $ (TARGTS)clobber:clea nrm-f $ (TARGTS)13遼寧工業(yè)大學(xué) 課程設(shè)計說明書(論文)第5章運(yùn)行程序5.1建立設(shè)備進(jìn)入點(diǎn)由于直流電機(jī)驅(qū)動程序中已經(jīng)定義其主設(shè)備號為111,此設(shè)備號沒有定義,故取默認(rèn)值為0.直流電機(jī)的設(shè)備進(jìn)入點(diǎn)為zldj_drv。創(chuàng)建直流電機(jī)驅(qū)動程序的設(shè)備進(jìn)入點(diǎn)如下: rootLi nux dcmo_drv# mk nod/dev/zldj_drv c 111 05.2加載驅(qū)動程序使用命令ins
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)學(xué)-山東省淄博市2024-2025學(xué)年第一學(xué)期高三期末摸底質(zhì)量檢測試題和答案
- 《文學(xué)概論》課程期末試題B卷及答案
- 小學(xué)一年級20以內(nèi)數(shù)學(xué)口算練習(xí)題
- 合伙經(jīng)營協(xié)議書(3篇)
- 小學(xué)數(shù)學(xué)六年級上冊《分?jǐn)?shù)四則混合運(yùn)算》教學(xué)設(shè)計
- 秋季腹瀉防治彩
- 《心內(nèi)科常見疾病》課件
- 企業(yè)社會責(zé)任與品牌價值計劃
- 游戲產(chǎn)業(yè)行業(yè)設(shè)計師培訓(xùn)總結(jié)
- 教學(xué)策略調(diào)整與靈活應(yīng)對計劃
- 辦公室改造裝修項目投標(biāo)方案(技術(shù)方案)
- 國家安全教育學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 精益生產(chǎn)篇(培訓(xùn)資料)
- 七年級上冊數(shù)學(xué)《有理數(shù)》計算題綜合訓(xùn)練帶答案
- 大學(xué)英語精讀原文1-6冊完整版
- 2022-2023學(xué)年高教版中職語文基礎(chǔ)模塊上冊月考卷四
- 交通刮蹭私了協(xié)議書范本
- 《冷戰(zhàn)史專題》筆記
- 2024-2030年中國輪轂電機(jī)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 小學(xué)中高年段語文學(xué)科基于課程標(biāo)準(zhǔn)評價指南
- (完整版)獸醫(yī)臨床診斷學(xué)
評論
0/150
提交評論