




已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計課程設(shè)計 題題 目 目 觸摸屏設(shè)備驅(qū)動程觸摸屏設(shè)備驅(qū)動程 序設(shè)計序設(shè)計 班班 級 級 姓姓 名 名 學(xué)學(xué) 號 號 指導(dǎo)教師 指導(dǎo)教師 成成 績 績 嵌入式系統(tǒng)嵌入式系統(tǒng) 課程設(shè)計報告課程設(shè)計報告 電子與信息工程學(xué)院電子與信息工程學(xué)院 信息與通信工程系信息與通信工程系 1 目目 錄錄 引言 2 1 設(shè)備驅(qū)動程序簡介 2 1 1 設(shè)備驅(qū)動程序的結(jié)構(gòu) 2 1 2 設(shè)備驅(qū)動程序的功能 3 2 嵌入式系統(tǒng)開發(fā)平臺構(gòu)建 3 3 觸摸屏設(shè)計流程 4 3 1 觸摸屏設(shè)計流程圖 4 3 2 觸摸屏工作原理 4 4 觸摸屏功能模塊程序設(shè)計與交叉編譯 5 4 1 功能模塊驅(qū)動程序設(shè)計 5 4 1 1 觸摸屏設(shè)備驅(qū)動中數(shù)據(jù)結(jié)構(gòu) 5 4 1 2 觸摸屏驅(qū)動模塊加載和卸載函數(shù) 7 4 1 3 觸摸屏設(shè)備驅(qū)動的讀函數(shù) 7 4 1 4 觸摸屏設(shè)備驅(qū)動的輪詢與異步通知 8 4 1 5 應(yīng)用程序的調(diào)試 8 4 2 觸摸屏功能模塊交叉編譯 8 5 根文件系統(tǒng)建立與文件系統(tǒng)下載 9 5 1 CRAMFS 根文件系統(tǒng)分析 9 5 2 文件系統(tǒng)映像文件生成 9 5 3 功能模塊運行與調(diào)試 10 5 3 1 vivi 的燒寫 10 5 3 2 linux 內(nèi)核的燒寫 10 5 3 3 cramfs 文件系統(tǒng)的燒寫 11 心得體會 11 2 引言 嵌入式 Linux 由于其可應(yīng)用于多種硬件平臺 內(nèi)核高效穩(wěn)定 源代碼開放 軟件豐富 網(wǎng)絡(luò)通信和文件管理機制完善等優(yōu)良特性 已經(jīng)成為嵌入式操作系統(tǒng)的主力軍 是整個 嵌入式系統(tǒng)的重要組成部分 在嵌入式 Linux 系統(tǒng)中 由于內(nèi)核的保護(hù)機制 用戶一般不 能直接訪問硬件 而是要通過調(diào)用驅(qū)動程序來實現(xiàn)對硬件的控制 進(jìn)行嵌入式系統(tǒng)的開 發(fā) 很大的工作量是為各種設(shè)備編寫驅(qū)動程序 設(shè)備驅(qū)動程序是 Linux 內(nèi)核的重要組成部 分 不同版本的內(nèi)核 其主要區(qū)別也是體現(xiàn)在設(shè)備驅(qū)動程序的不同 1 設(shè)備驅(qū)動程序簡介 1 1 設(shè)備驅(qū)動程序的結(jié)構(gòu) 1 Linux 的設(shè)備驅(qū)動程序與外界的接口可以分成三部分 a 驅(qū)動程序與操作系統(tǒng)內(nèi)核的接口 b 驅(qū)動程序與系統(tǒng)引導(dǎo)的接口 c 驅(qū)動程序與設(shè)備的接口 2 驅(qū)動程序的注冊與注銷 向系統(tǒng)增加一個驅(qū)動程序意味著要賦予它一個主設(shè)備號 這可以通過在驅(qū)動程序的 初始化過程中調(diào)用定義在 fs devices c 中的 register chrdev 函數(shù)或 fs block dev c 中的 register blkdev 函數(shù)來完成 而在關(guān)閉字符設(shè)備或者塊設(shè)備時 則要通過 unregister chrdev 或 unregister blkdev 函數(shù)從內(nèi)核中注銷設(shè)備 同時釋放占用的主設(shè)備 號 3 設(shè)備的打開與釋放 a 打開設(shè)備是通過調(diào)用定義在 include linux fs h 中的 file operations 結(jié)構(gòu)中的函數(shù) open 來完成 b 釋放設(shè)備是通過調(diào)用 file operations 結(jié)構(gòu)中的函數(shù) release 來完成 3 4 設(shè)備的讀寫操作 a 字符設(shè)備的讀寫操作相對比較簡單 直接使用函數(shù) read 和 write 就可以了 b 塊設(shè)備的話 則需要調(diào)用函數(shù) block read 和 block write 來進(jìn)行數(shù)據(jù)讀寫 5 設(shè)備的控制操作 通過設(shè)備驅(qū)動程序中的函數(shù) ioctl 來完成 6 設(shè)備的輪詢和中斷處理 a 設(shè)備執(zhí)行某個命令時 如 將讀取磁頭移動到軟盤的第 42 扇區(qū)上 設(shè)備驅(qū)動可以 從輪詢方式和中斷方式中選擇一種以判斷設(shè)備是否已經(jīng)完成此命令 b 不支持中斷的硬件設(shè)備 讀寫時需要輪流查詢設(shè)備狀態(tài) 1 2 設(shè)備驅(qū)動程序的功能 1 對設(shè)備的初始化和釋放 2 把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù)到內(nèi)核 3 讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請求的數(shù)據(jù) 這需要在用戶 空間 內(nèi)核空間 總線以及外設(shè)之間傳輸數(shù)據(jù) 4 檢測和處理設(shè)備出現(xiàn)的錯誤 2 嵌入式系統(tǒng)開發(fā)平臺構(gòu)建 開發(fā)嵌入式 Linux 系統(tǒng) 其實最方便的還是構(gòu)建一個標(biāo)準(zhǔn)的 Linux 開發(fā)環(huán)境 大大地 方便 Linux 開發(fā)中的編譯調(diào)試等工作 同樣地 EduKit2410 的 Linux 開發(fā)也可以在標(biāo)準(zhǔn) Linux 環(huán)境下進(jìn)行 比如選擇 Red Hat 等優(yōu)秀的系統(tǒng) 4 3 觸摸屏設(shè)計流程 3 1 觸摸屏設(shè)計流程圖 是 打開觸摸屏設(shè)備 創(chuàng)建等待隊列和緩沖 區(qū) 初始化隊列頭 等待中 斷 使用中斷子程序 更新 X Y 顯示一個觸摸點或坐標(biāo)值 開始 結(jié)束 圖 3 1 1 3 2 觸摸屏工作原理 1 普通轉(zhuǎn)換模式 普通轉(zhuǎn)換模式 AUTO PST 0 XY PST 0 是用作一般目的下的 ADC 轉(zhuǎn)換 這個模 式可以通過設(shè)置 ADCCON 和 ADCTSC 來進(jìn)行對 AD 轉(zhuǎn)換的初始化 而后讀取 ADCDAT0 ADC 數(shù)據(jù)寄存器 0 的 XPDATA 域 普通 ADC 轉(zhuǎn)換 的值來完成轉(zhuǎn)換 2 分離的 X Y 軸坐標(biāo)轉(zhuǎn)換模式 5 X 軸坐標(biāo)轉(zhuǎn)換 AUTO PST 0 且 XY PST 1 將 X 軸坐標(biāo)轉(zhuǎn)換數(shù)值寫入 ADCDAT0 寄存器的 XPDATA 域 轉(zhuǎn)換后 觸摸屏接口將產(chǎn)生中斷源 INT ADC 到中斷控制器 Y 軸坐標(biāo)轉(zhuǎn)換 AUTO PST 0 且 XY PST 2 將 Y 軸坐標(biāo)轉(zhuǎn)換數(shù)值寫入到 ADCDAT1 寄存器的 YPDATA 域 轉(zhuǎn)換后 觸摸屏接口將產(chǎn)生中斷源 INT ADC 到中斷控制器 3 自動 連續(xù) X Y 軸坐標(biāo)轉(zhuǎn)換模式 自動 連續(xù) X Y 軸坐標(biāo)轉(zhuǎn)換模式 AUTO PST 1 且 XY PST 0 以下面的步驟工 作 觸摸屏控制器將自動地切換 X 軸坐標(biāo)和 Y 軸坐標(biāo)并讀取兩個坐標(biāo)軸方向上的坐標(biāo) 觸摸屏控制器自動將測量得到的 X 軸數(shù)據(jù)寫入到 ADCDAT0 寄存器的 XPDATA 域 然后 將測量到的 Y 軸數(shù)據(jù)到 ADCDAT1 的 YPDATA 域 連續(xù) 自動轉(zhuǎn)換之后 觸摸屏控制 器產(chǎn)生中斷源 INT ADC 到中斷控制器 4 等待中斷模式 當(dāng)觸摸屏控制器處于等待中斷模式下時 它實際上是在等待觸摸筆的點擊 在觸摸 筆點擊到觸摸屏上時 控制器產(chǎn)生中斷信號 INC TC 中斷產(chǎn)生后 就可以通過設(shè)置 適當(dāng)?shù)霓D(zhuǎn)換模式 分離的 X Y 軸坐標(biāo)轉(zhuǎn)換模式或自動 X Y 軸坐標(biāo)轉(zhuǎn)換模式 來讀取 X 和 Y 的位置 5 靜態(tài) Standby 模式 當(dāng) ADCCON 寄存器的 STDBM 位被設(shè)為 1 時 Standby 模式被激活 在該模式下 A D 轉(zhuǎn)換操作停止 ADCDAT0 寄存器的 XPDATA 域和 ADCDAT1 寄存器的 YPDATA 正常 ADC 域保持著先前轉(zhuǎn)換所得的值 4 觸摸屏功能模塊程序設(shè)計與交叉編譯 4 1 功能模塊驅(qū)動程序設(shè)計 4 1 1 觸摸屏設(shè)備驅(qū)動中數(shù)據(jù)結(jié)構(gòu) 1 觸摸屏的 file operations static struct file operations s3c2410 fops owner THIS MODULE open s3c2410 ts open 6 read s3c2410 ts read release s3c2410 ts release ifdef USE ASYNC fasync s3c2410 ts fasync 異步通知 endif poll s3c2410 ts poll 輪詢 2 觸摸屏設(shè)備結(jié)構(gòu)體的成員與按鍵設(shè)備結(jié)構(gòu)體的成員類似 也包含一個緩沖區(qū) 同 時包括自旋鎖 等待隊列和 fasync struct 指針 typedef struct unsigned int penStatus PEN UP PEN DOWN PEN SAMPLE TS RET buf MAX TS BUF protect against overrun 環(huán)形緩沖區(qū) unsigned int head tail head and tail for queued events 環(huán)形緩沖區(qū)的頭尾 wait queue head t wq 等待隊列數(shù)據(jù)結(jié)構(gòu) spinlock t lock 自旋鎖 ifdef USE ASYNC struct fasync struct aq endif ifdef CONFIG PM struct pm dev pm dev endif TS DEV 3 觸摸屏結(jié)構(gòu)體中包含的 TS RET 值的類型定義 包 X Y 坐標(biāo)和狀態(tài) PEN DOWN PEN UP 等信息 這個信息會在用戶讀取觸摸信息時復(fù)制到用戶空間 typedef struct unsigned short pressure 壓力 這里可定義為筆按下 筆抬起 筆拖曳 unsigned short x 橫坐標(biāo)的采樣值 unsigned short y 縱坐標(biāo)的采樣值 unsigned short pad 填充位 7 TS RET 4 在觸摸屏設(shè)備驅(qū)動中 將實現(xiàn) open release read fasync 和 poll 函數(shù) 因 此 其文件操作結(jié)構(gòu)體定義 觸摸屏驅(qū)動文件操作結(jié)構(gòu)體 static struct file operations s3c2410 fops 4 1 2 觸摸屏驅(qū)動模塊加載和卸載函數(shù) 1 在觸摸屏設(shè)備驅(qū)動的模塊加載函數(shù)中 要完成申請設(shè)備號 添加 cdev 申請中 斷 設(shè)置觸摸屏控制引腳 YPON YMON XPON XMON 等多項工作 2 可知觸摸屏驅(qū)動中會產(chǎn)生兩類中斷 一類是觸點中斷 INT TC 一類是 X Y 位置轉(zhuǎn)換中斷 INT ADC 在前一類中斷發(fā)生后 若之前處于 PEN UP 狀態(tài) 則應(yīng)該 啟動 X Y 位置轉(zhuǎn)換 另外 將抬起中斷也放在 INT TC 處理程序中 它會調(diào)用 tsEvent 完 成等待隊列和信號的釋放觸摸屏設(shè)備驅(qū)動的觸點 抬起中斷處理程序 static void s3c2410 isr tc int irq void dev id struct pt regs reg 當(dāng) X Y 位置轉(zhuǎn)換中斷發(fā)生后 應(yīng)讀取 X Y 的坐標(biāo)值 填入緩沖區(qū)觸摸屏設(shè)備驅(qū)動 X Y 位置轉(zhuǎn)換中斷處理程序 static void s3c2410 isr adc int irq void dev id struct pt regs reg 觸摸屏設(shè)備驅(qū)動中獲得 X Y 坐標(biāo) s3c2410 get XY void 3 tsEvent 最終為 tsEvent raw 這個函數(shù)很關(guān)鍵 當(dāng)處于 PEN DOWN 狀態(tài)時調(diào)用 該函數(shù) 它會完成緩沖區(qū)的填充 等待隊列的喚醒以及異步通知信號的釋放 否則 處 于 PEN UP 狀態(tài) 將緩沖區(qū)頭清 0 也喚醒等待隊列并釋放信號 4 在包含了對拖動軌跡支持的情況下 定時器會被啟用 周期為 10ms 在每次定時 器處理函數(shù)被引發(fā)時 調(diào)用 start ts adc 開始 X Y 位置轉(zhuǎn)換過程觸摸屏設(shè)備驅(qū)動的定時器 處理函數(shù) static void ts timer handler unsigned long data 5 在觸摸屏設(shè)備驅(qū)動的打開函數(shù)中 應(yīng)初始化緩沖區(qū) penStatus 和定期器 等待隊 列及 tsEvent 時間處理函數(shù)指針 觸摸屏設(shè)備驅(qū)動的打開函數(shù) static int s3c2410 ts open struct inode inode struct file filp 4 1 3 觸摸屏設(shè)備驅(qū)動的讀函數(shù) 觸摸屏設(shè)備驅(qū)動的讀函數(shù)實現(xiàn)緩沖區(qū)中信息向用戶空間的復(fù)制 當(dāng)緩沖區(qū)有內(nèi)容時 直接復(fù)制 否則 如果用戶阻塞訪問觸摸屏 則進(jìn)程在等待隊列上睡眠 否則 立即返 8 回 EAGAIN 4 1 4 觸摸屏設(shè)備驅(qū)動的輪詢與異步通知 在觸摸屏設(shè)備驅(qū)動中 通過 s3c2410 ts poll 函數(shù)實現(xiàn)了輪詢接口 這個函數(shù)的實現(xiàn) 非常簡單 它將等待隊列添加到 poll table 當(dāng)緩沖區(qū)有數(shù)據(jù)時 返回資源可讀取標(biāo)志 否則返回 0 觸摸屏設(shè)備驅(qū)動的 poll 函數(shù) static unsigned int s3c2410 ts poll struct file filp struct poll table struct wait 而為了實現(xiàn)觸摸屏設(shè)備驅(qū)動對應(yīng)用程序的異步通知 設(shè)備 驅(qū)動中要實現(xiàn) s3c2410 ts fasync 函數(shù) 觸摸屏設(shè)備驅(qū)動的 fasync 函數(shù) static int s3c2410 ts fasync int fd struct file filp int mode 4 1 5 應(yīng)用程序的調(diào)試 使用 s3c2410 ts c 觸摸屏驅(qū)動編寫應(yīng)用程序 讀取觸摸屏的觸點坐標(biāo)值及動作信息 并在串口中斷打印出來對觸摸屏設(shè)別的操作有打開設(shè)備 關(guān)閉設(shè)備 讀操作等 編寫應(yīng) 用程序讀取觸摸屏的觸點坐標(biāo)值及動作信息時 只需利用觸摸屏驅(qū)動程序便可實現(xiàn) 先 打開觸摸屏設(shè)備 然后調(diào)用讀函數(shù)即可 其中 觸摸筆動作取值如下 define PEN UP 0 觸摸筆抬筆 即觸摸屏不被壓下 define PEN DOWN 1 觸摸筆下筆 即觸摸屏被壓下 define PEN FLEETING 2 觸摸筆拖動 結(jié)構(gòu)體定義如下 typedef struct unsigned short pressure 觸摸筆動作 unsigned short x 觸點 x 座標(biāo)值 unsigned short y 觸點 y 座標(biāo)值 unsigned short pad TS RET 4 2 觸摸屏功能模塊交叉編譯 將編寫好的源文件程序放在 cygwin 目錄中 交叉編譯生成文件 9 5 根文件系統(tǒng)建立與文件系統(tǒng)下載 5 1 Cramfs 根文件系統(tǒng)分析 一個完整的根文件系統(tǒng)通常包含以下幾個目錄 bin 應(yīng)用程序存放目錄 sbin 系統(tǒng)管理員服務(wù)程序 其中最重要的就是供內(nèi)核初始化之后執(zhí)行的 sbin init 進(jìn) 程 lib 存放程序運行所需要的動態(tài)庫 proc 系統(tǒng)狀態(tài)文件目錄 dev 驅(qū)動程序存放目錄 etc 系統(tǒng)配置文件及用戶數(shù)據(jù)存放目錄 mnt 用于設(shè)備安裝的目錄 通常包含 etc 子目錄和為塊設(shè)備安裝保留目錄 usr 用于存放用戶程序和配置文件的目錄 可以根據(jù)需要進(jìn)行設(shè)置 一般情況下都要把已經(jīng)規(guī)劃好的目錄結(jié)構(gòu)轉(zhuǎn)換成一個映象文件 即使用命令工具 mkcram 把相應(yīng)的 cramfs 目錄樹壓縮為單一的映象文件 其命令格式為 mkcramfs h e edition i file n name dirname outfile 5 2 文件系統(tǒng)映像文件生成 1 構(gòu)建 cramfs 文件系統(tǒng) 將 image 中的 root cramfs tar bz2 拷貝到 SOURCEDIR 目錄 運行 cygwin 執(zhí)行以下 命令解壓安裝 root root 文件夾中就是我們想要的 cramfs 文件系統(tǒng) 在 root 目錄中 新建 xx 文件夾 用于存放應(yīng)用程序 2 編譯應(yīng)用程序?qū)⒕帉懞玫脑次募?ts c 程序放在 cygwin 目錄中 3 拷貝測試程序到文件系統(tǒng)中 并編譯生成文件系統(tǒng)映象 新文件系統(tǒng)的制作 把剛才編譯輸出的 ts 文件拷貝到文件系統(tǒng)所在的工作目錄 root bin 目錄下 執(zhí)行以下命令生成新的文件系統(tǒng)映象 10 5 3 功能模塊運行與調(diào)試 5 3 1 vivi 的燒寫 1 首先把 SW104 短接 從 Nand Flash 啟動 運行 Embest online Flash Programmer for ARM version 3 0 以上 點擊菜單 Settings 選擇 Configure 項 配置當(dāng)前使用的 Embest JTAG 仿真器型號為 PowerICEARM9 并設(shè)置相應(yīng)的參數(shù) 2 點擊菜單 File 選擇 Open 打開燒寫配置文件 S3C2410 NandFLash vivi cfg Flash Programmer 的 Program 頁中選擇要燒寫的文件 在 vivi bon load bin 3 點擊按鈕 Progarm 開始燒寫 直到燒寫成功 4 連接串口線到 PC 機 COM1 運行光盤中提供的 Windows 超級終端 Hyper Terminal ht 5 把開發(fā)板重新加電 程序運行后 在超級終端上可以看到串口輸出類似以下信息 圖 5 3 1 1 6 看到以上信息后 表示正在等待用戶從超級終端下載文件 這時 請點擊超級終 端菜單 傳送 選擇 Xmodem 方式下載 vivi nand 文件 點擊 OK 后等待下載燒寫結(jié)束即可 5 3 2 linux 內(nèi)核的燒寫 1 首先 SW104 設(shè)為短接 從 Nand Flash 啟動 并確定已經(jīng)燒寫 vivi nand 加電 2 在 vivi 啟動等待中 敲入空格鍵進(jìn)入 vivi 界面環(huán)境 并輸入以下命令 vivi load flash kernel x 燒寫更新內(nèi)核約 4 分鐘即可燒寫完畢 3 點擊超級終端菜單中的 傳送 選 發(fā)送文件 zImage 燒寫結(jié)束 重起實驗板 11 觀測超級終端窗口提示信息就可以啟動 linux 內(nèi)核 5 3 3 cramfs 文件系統(tǒng)的燒寫 1 首先 SW104 設(shè)為短接 確定已經(jīng)成功燒寫
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度浙江省二級建造師之二建公路工程實務(wù)??碱A(yù)測題庫(奪冠系列)
- 學(xué)生興趣與學(xué)習(xí)動機的心理學(xué)解讀
- 鹽城師范學(xué)院《邏輯推理證明》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州輕工業(yè)大學(xué)《商務(wù)英語函電》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年度河南省護(hù)師類之社區(qū)護(hù)理主管護(hù)師模擬考試試卷A卷含答案
- 上海現(xiàn)代化工職業(yè)學(xué)院《多聲部音樂分析與習(xí)作2》2023-2024學(xué)年第二學(xué)期期末試卷
- 河北大學(xué)《國際金融管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 揚州大學(xué)廣陵學(xué)院《綜合英語(五)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西科技師范大學(xué)《功能材料專業(yè)英語》2023-2024學(xué)年第二學(xué)期期末試卷
- 《小兒推拿》課件-4.3腎系疾病之遺尿
- 知識產(chǎn)權(quán)相關(guān)的國際法的試題及答案
- 低壓電工復(fù)審培訓(xùn)
- 鋼結(jié)構(gòu)墻板拆除施工方案
- 2025年養(yǎng)老護(hù)理員專業(yè)知識測試卷:養(yǎng)老護(hù)理員護(hù)理技能操作試題集
- 新能源汽車充電系統(tǒng)故障診斷與維修技術(shù)研究
- 護(hù)理典型案例分享
- VDA6.3-2023版培訓(xùn)教材課件
- 2025年GCP(藥物臨床試驗質(zhì)量管理規(guī)范)相關(guān)知識考試題與答案
- 2019-2020學(xué)年廣東省中山市七年級下學(xué)期期末數(shù)學(xué)試卷-(含部分答案)
- 9.2解析三大訴訟 課件-高中政治統(tǒng)編版選擇性必修二法律與生活
- 冬蟲夏草的鑒別和栽培技術(shù)課件
評論
0/150
提交評論