




已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
S5PV210顯示驅動分析與移植(android)一、LCD控制器1 綜述要使一塊LCD正常的顯示文字或圖像,不僅需要LCD驅動器,而且還需要相應的LCD控制器。在通常情況下,生產廠商把LCD驅動器會以COF/COG的形式與LCD玻璃基板制作在一起,而LCD控制器則是由外部的電路來實現,現在很多的MCU內部都集成了LCD控制器,如S5PV210等。通過LCD控制器就可以產生LCD驅動器所需要的控制信號來控制STN/TFT屏了。 LCD控制器可以通過編程支持不同LCD屏的要求,例如行和列像素數,數據總線寬度,接口時序和刷新頻率等。LCD控制器的主要作用,是將定位在系統(tǒng)存儲器中的顯示緩沖區(qū)中的LCD圖像數據傳送到外部LCD驅動器,并產生必要的控制信號,例如RGB_VSYNC, RGB_HSYNC, RGB_VCLK等。如下是S5PV210的LCD控制器內部結構框圖:主要由VSFR, VDMA, VPRCS , VTIME和視頻時鐘產生器幾個模塊組成: VSFR由121個可編程控制器組,一套gamma LUT寄存器組(包括64個寄存器),一套i80命令寄存器組(包括12個寄存器)和5塊256*32調色板存儲器組成,主要用于對lcd控制器進行配置。 VDMA是LCD專用的DMA傳輸通道,可以自動從系統(tǒng)總線上獲取視頻數據傳送到VPRCS,無需CPU干涉。 VPRCS收到數據后組成特定的格式(如16bpp或24bpp),然后通過數據接口(RGB_VD, VEN_VD, V656_VD or SYS_VD)傳送到外部LCD屏上。 VTIME模塊由可編程邏輯組成,負責不同lcd驅動器的接口時序控制需求。VTIME模塊產生 RGB_VSYNC, RGB_HSYNC, RGB_VCLK, RGB_VDEN, VEN_VSYNC等信號。主要特性: 支持4種接口類型:RGB/i80/ITU 601(656)/YTU444 支持單色、4級灰度、16級灰度、256色的調色板顯示模式 支持64K和16M色非調色板顯示模式 支持多種規(guī)格和分辨率的LCD 虛擬屏幕最大可達16MB 5個256*32位調色板內存 支持透明疊加2 接口信號FIMD顯示控制器全部信號定義如下所示SignalI/ODescriptionLCD TypeLCD_HSYNCO水平同步信號RGB I/FLCD_VSYNCO垂直同步信號LCD_VDENO數據使能LCD_VCLKO視頻時鐘LCD_VD23:0OLCD像素數據輸出SYS_OEO輸出使能VSYNC_LDIOIndirect i80接口,垂直同步信號i80 I/FSYS_CS0OIndirect i80接口,片選LCD0SYS_CS1OIndirect i80接口,片選LCD1SYS_RSOIndirect i80接口,寄存器選擇信號SYS_WEOIndirect i80接口,寫使能信號SYS_VD23:0IOIndirect i80接口,視頻數據輸入輸出SYS_OEOIndirect i80接口,輸出使能信號VEN_HSYNCO601接口水平同步信號ITU 601/656 I/FVEN_VSYNCO601接口垂直同步信號VEN_HREFO601接口數據使能V601_CLKO601接口數據時鐘VEN_DATA7:0O601接口YUV422格式數據輸出V656_DATA7:0O656接口YUV422格式數據輸出V656_CLKO656接口數據時鐘VEN_FIELDO601接口域信號其中主要的RGB接口信號: LCD_HSYNC: 行同步信號,表示一行數據的開始,LCD控制器在整個水平線(整行)數據移入LCD驅動器后,插入一個LCD_HSYNC信號; LCD_VSYNC: 幀同步信號,表示一幀數據的開始,LCD控制器在一個完整幀顯示完成后立即插入一個LCD_VSYNC信號,開始新一幀的顯示;VSYNC信號出現的頻率表示一秒鐘內能顯示多少幀圖像,稱為“顯示器的頻率” LCD_VCLK:像素時鐘信號,表示正在傳輸一個像素的數據; LCD_VDEN: 數據使能信號; LCD_VD23:0: LCD像素數據輸出端口3 工作時序下圖是LCD RGB接口工作時序圖:上面時序圖上各時鐘延時參數的含義如下:(這些參數的值,LCD產生廠商會提供相應的數據手冊) VBPD(vertical back porch):表示在一幀圖像開始時,垂直同步信號以后的無效的行數 VFBD(vertical front porch):表示在一幀圖像結束后,垂直同步信號以前的無效的行數 VSPW(vertical sync pulse width):表示垂直同步脈沖的寬度,用行數計算 HBPD(horizontal back porch):表示從水平同步信號開始到一行的有效數據開始之間的VCLK的個數 HFPD(horizontal front porth):表示一行的有效數據結束到下一個水平同步信號開始之間的VCLK的個數 HSPW(horizontal sync pulse width):表示水平同步信號的寬度,用VCLK計算(1)幀的傳輸過程1)VSYNC信號有效時,表示一幀數據的開始,信號寬度為 (VSPW + 1)個HSYNC信號周期,即(VSPW + 1)個無效行;2)VSYNC信號脈沖之后,總共還要經過(VBPD + 1)個HSYNC信號周期,有效的行數據才出現;所以,在VSYNC信號有效之后,還要經過(VSPW + 1 + VBPD + 1)個無效的行;3)隨即發(fā)出(LINEVAL + 1)行的有效數據;4)最后是(VFPD + 1)個無效的行; (2)行中像素數據的傳輸過程 1)HSYNC信號有效時,表示一行數據的開始,信號寬度為(HSPW + 1)個VCLK信號周期,即(HSPW + 1)個無效像素;2)HSYNC信號脈沖之后,還要經過(HBPD + 1)個VCLK信號周期,有效的像素數據才出現; 3)隨后發(fā)出(HOZVAL + 1)個像素的有效數據; 4)最后是(HFPD + 1)個無效的像素; (3)將VSYNC、HSYNC、VCLK等信號的時間參數設置好之后,并將幀內存的地址告訴LCD控制器,它即可自動地發(fā)起DMA傳輸從幀內存中得到圖像數據,最終在上述信號的控制下出現在數據總線VD23:0上。用戶只需要把要顯示的圖像數據寫入幀內存中。4 外部接口S5PV210內部LCD控制器接口圖如下:如下是信號的引腳連接描述:(1)16M(24BPP)色的顯示模式 用24位的數據來表示一個像素的顏色,每種顏色使用8位LCD控制器從內存中獲得某個像素的24為顏色值后,直接通過VD23:0數據線發(fā)送給LCD; 在內存中,使用4個字節(jié)(32位)來表示一個像素,其中的3個字節(jié)從高到低分別表示紅、綠、藍,剩余的1個字節(jié)無效; (2)64K(16BPP)色的顯示模式 用16位的數據來表示一個像素的顏色; 格式又分為兩種:5:6:5使用5位來表示紅色,6位表示綠色,5位表示藍色 ;5:5:5:1分別使用5位來表示紅、綠、藍,最后一位表示透明度;每種bpp模式下的引腳定義5 寄存器主要寄存器如下:(其它參照用戶手冊S5PV210X_UserManual_preliminary_v0.0_090908.pdf) VIDCON0: 配置視頻輸出格式,顯示使能 VIDCON1: RGB 接口控制信號 VIDCON2 : 輸出數據格式控制 VIDCON3 : 圖像增強控制 I80IFCONx: i80接口控制信號 ITUIFCON : ITU接口控制信號 VIDTCONx: 配置視頻輸出時序及顯示大小 WINCONx: 每個窗口特性設置 VIDOSDxA,B : 窗口位置設置 VIDOSDxC,D: OSD大小設置寄存器描述:VIDEO主控制寄存器0(VIDCON0,R/W,ADDRESS=0XF800_0000)二、Framebuffer驅動1 簡介幀緩沖是Linux為顯示設備提供的一個接口,它把一些顯示設備描述成一個緩沖區(qū),允許應用程序通過FrameBuffer定義好的接口訪問這些圖形設備,從而不用去關心具體的硬件細節(jié)。對于幀緩沖設備而言,只要在顯示緩沖區(qū)與顯示點對應的區(qū)域寫入顏色值,對應的顏色就會自動的在屏幕上顯示。下面來看一下在不同色位模式下緩沖區(qū)與顯示點的對應關系:2. 驅動結構幀緩沖設備為標準的字符型設備,在Linux中主設備號29,定義在/linux/major.h中的FB_MAJOR,次設備號定義幀緩沖的個數,最大允許有32個FrameBuffer,定義在/include/linux/fb.h中的FB_MAX,對應于文件系統(tǒng)下/dev/fb%d設備文件。幀緩沖設備驅動在Linux子系統(tǒng)中的結構如下:我們從上面這幅圖看,幀緩沖設備在Linux中也可以看做是一個完整的子系統(tǒng),大體由fbmem.c和xxxfb.c(對應我們的s3cfb.c)組成。向上給應用程序提供完善的設備文件操作接口(即對FrameBuffer設備進行read、write、ioctl等操作),接口在Linux提供的fbmem.c文件中實現;向下提供了硬件操作的接口,只是這些接口Linux并沒有提供實現,因為這要根據具體的LCD控制器硬件進行設置,所以這就是我們要做的事情了(即s3cfb.c部分的實現)。3. 數據結構及接口函數從幀緩沖設備驅動程序結構看,該驅動主要跟fb_info結構體有關,該結構體記錄了幀緩沖設備的全部信息,包括設備的設置參數、狀態(tài)以及對底層硬件操作的函數指針。在Linux中,每一個幀緩沖設備都必須對應一個fb_info,fb_info在/linux/fb.h中的定義如下:(只列出重要的一些) struct fb_info int node;int flags;struct fb_var_screeninfo var;/*LCD可變參數結構體*/struct fb_fix_screeninfo fix;/*LCD固定參數結構體*/struct fb_monspecs monspecs;/*LCD顯示器標準*/struct work_struct queue;/*幀緩沖事件隊列*/struct fb_pixmap pixmap; /*圖像硬件mapper*/struct fb_pixmap sprite; /*光標硬件mapper*/struct fb_cmap cmap; /*當前的顏色表*/struct fb_videomode *mode;/*當前的顯示模式*/#ifdef CONFIG_FB_BACKLIGHTstruct backlight_device *bl_dev;/*對應的背光設備*/struct mutex bl_curve_mutex;u8 bl_curveFB_BACKLIGHT_LEVELS;/*背光調整*/#endif#ifdef CONFIG_FB_DEFERRED_IOstruct delayed_work deferred_work;struct fb_deferred_io *fbdefio;#endifstruct fb_ops *fbops; /*對底層硬件操作的函數指針*/struct device *device;struct device *dev;/*fb設備*/int class_flag;#ifdef CONFIG_FB_TILEBLITTINGstruct fb_tile_ops *tileops; /*圖塊Blitting*/#endifchar _iomem *screen_base;/*虛擬基地址*/unsigned long screen_size;/*LCD IO映射的虛擬內存大小*/ void *pseudo_palette;/*偽16色顏色表*/ #define FBINFO_STATE_RUNNING0#define FBINFO_STATE_SUSPENDED1u32 state;/*LCD的掛起或恢復狀態(tài)*/void *fbcon_par;void *par;其中,比較重要的成員有struct fb_var_screeninfo var、struct fb_fix_screeninfo fix和struct fb_ops *fbops,他們也都是結構體。fb_var_screeninfo結構體主要記錄用戶可以修改的控制器的參數,比如屏幕的分辨率和每個像素的比特數等,該結構體定義如下: struct fb_var_screeninfo _u32 xres;/*可見屏幕一行有多少個像素點*/_u32 yres;/*可見屏幕一列有多少個像素點*/_u32 xres_virtual;/*虛擬屏幕一行有多少個像素點*/_u32 yres_virtual;/*虛擬屏幕一列有多少個像素點*/_u32 xoffset;/*虛擬到可見屏幕之間的行偏移*/_u32 yoffset;/*虛擬到可見屏幕之間的列偏移*/_u32 bits_per_pixel;/*每個像素的位數即BPP*/_u32 grayscale;/*非0時,指的是灰度*/struct fb_bitfield red;/*fb緩存的R位域*/struct fb_bitfield green;/*fb緩存的G位域*/struct fb_bitfield blue;/*fb緩存的B位域*/struct fb_bitfield transp;/*透明度*/_u32 nonstd;/* != 0 非標準像素格式*/_u32 activate;_u32 height;/*高度*/_u32 width;/*寬度*/_u32 accel_flags;/*定時:除了pixclock本身外,其他的都以像素時鐘為單位*/_u32 pixclock;/*像素時鐘(皮秒)*/_u32 left_margin;/*行切換,從同步到繪圖之間的延遲*/_u32 right_margin;/*行切換,從繪圖到同步之間的延遲*/_u32 upper_margin;/*幀切換,從同步到繪圖之間的延遲*/_u32 lower_margin;/*幀切換,從繪圖到同步之間的延遲*/_u32 hsync_len;/*水平同步的長度*/_u32 vsync_len;/*垂直同步的長度*/_u32 sync;_u32 vmode;_u32 rotate;_u32 reserved5;/*保留*/;而fb_fix_screeninfo結構體又主要記錄用戶不可以修改的控制器的參數,比如屏幕緩沖區(qū)的物理地址和長度等,該結構體的定義如下: struct fb_fix_screeninfo char id16;/*字符串形式的標示符 */unsigned long smem_start;/*fb緩存的開始位置 */_u32 smem_len;/*fb緩存的長度 */_u32 type;/*看FB_TYPE_* */_u32 type_aux;/*分界*/_u32 visual;/*看FB_VISUAL_* */ _u16 xpanstep;/*如果沒有硬件panning就賦值為0 */_u16 ypanstep;/*如果沒有硬件panning就賦值為0 */_u16 ywrapstep;/*如果沒有硬件ywrap就賦值為0 */_u32 line_length;/*一行的字節(jié)數 */unsigned long mmio_start;/*內存映射IO的開始位置*/_u32 mmio_len;/*內存映射IO的長度*/_u32 accel;_u16 reserved3;/*保留*/;fb_ops結構體是對底層硬件操作的函數指針,該結構體中定義了對硬件的操作有:(這里只列出了常用的操作) struct fb_ops struct module *owner;/檢查可變參數并進行設置int (*fb_check_var)(struct fb_var_screeninfo *var, struct fb_info *info);/根據設置的值進行更新,使之有效int (*fb_set_par)(struct fb_info *info);/設置顏色寄存器int (*fb_setcolreg)(unsigned regno, unsigned red, unsigned green,unsigned blue, unsigned transp, struct fb_info *info);/顯示空白int (*fb_blank)(int blank, struct fb_info *info);/矩形填充void (*fb_fillrect) (struct fb_info *info, const struct fb_fillrect *rect);/復制數據void (*fb_copyarea) (struct fb_info *info, const struct fb_copyarea *region);/圖形填充void (*fb_imageblit) (struct fb_info *info, const struct fb_image *image);4. LCD參數配置在S5PV210中,LCD控制器被集成在芯片的內部作為一個相對獨立的單元,所以Linux把它看做是一個平臺設備,故在內核代碼/arch/arm/plat-s5p/devs.c中定義有LCD相關的平臺設備及資源,代碼如下: /* LCD Controller */LCD控制器的資源信息static struct resource s3cfb_resource = 0 = .start = S5P_PA_LCD, /控制器IO端口開始地址(0xf8000000).end = S5P_PA_LCD + S5P_SZ_LCD - 1,/控制器IO端口結束地址(1M).flags = IORESOURCE_MEM,/標識為LCD控制器IO端口,在驅動中引用這個就表示引用IO端口,1 = .start = IRQ_LCD1,/LCD中斷.end = IRQ_LCD1,.flags = IORESOURCE_IRQ,/標識為LCD中斷;static u64 fb_dma_mask = 0xffffffffUL;struct platform_device s3c_device_fb = .name = s3cfb,/作為平臺設備的LCD設備名.id = -1,.num_resources= ARRAY_SIZE(s3cfb_resource),/資源數量.resource = s3cfb_resource,/引用上面定義的資源.dev = .dma_mask= &fb_dma_mask,.coherent_dma_mask= 0xffffffffUL;EXPORT_SYMBOL(s3c_device_fb);/導出定義的LCD平臺設備,好在mach-t34h.c的smdkv210_devices中添加到平臺設備列表中 除此之外,Linux還在/arch/arm/plat-s5p/include/plat/fb.h中為LCD平臺設備定義了一個s3c_platform_fb結構體,該結構體主要是記錄LCD的硬件參數信息(比如該結構體的s3cfb_lcdy成員結構中就用于記錄LCD的屏幕尺寸、屏幕信息、可變的屏幕參數、LCD配置寄存器等),這樣在寫驅動的時候就直接使用這個結構體。下面,我們來看一下內核是如果使用這個結構體的。在/arch/arm/mach-s5pv210/mach-t34h.c中定義有: /* LCD driver info */LCD硬件的配置信息,這些參數要根據具體的LCD屏進行設置static struct s3c_platform_fb lte480wv_fb_data _initdata = .width = 1024,/屏幕寬度.height = 600,/屏幕高度 /以下一些參數在上面的時序圖分析中講到過,各參數的值請跟據具體的LCD屏數據手冊結合上面時序分析來設定. freq = 60,/像素時鐘.bpp = 32,/色位模式. h_fp= 160,/行切換,從同步到繪圖之間的延遲. h_bp= 160,/行切換,從繪圖到同步之間的延遲. h_sw= 2,/水平同步的長度. v_fp= 12,/幀切換,從同步到繪圖之間的延遲. v_fp= 23,/幀切換,從繪圖到同步之間的延遲. v_sw= 2,/垂直同步的長度;static struct s3c_platform_fb lte480wv_fb_data _initdata = .hw_ver= 0x62,.nr_wins = 5,.default_win = CONFIG_FB_S3C_DEFAULT_WINDOW,.swap = FB_SWAP_WORD | FB_SWAP_HWORD,.lcd = <e480wv,.cfg_gpio= s3cfb_cfg_gpio,.backlight_on= s3cfb_backlight_on,.backlight_off = s3cfb_backlight_off, .lcd_on = s3cfb_lcd_on,.lcd_off = s3cfb_lcd_off,;5. Framebuffer設備注冊S3cfb.c中的s3cfb_probe設備探測,是驅動注冊的主要函數,/*定義一個結構體用來維護驅動程序中各函數中用到的變量先別看結構體要定義這些成員,到各函數使用的地方就明白了*/static int _devinit s3cfb_probe(struct platform_device *pdev)struct s3c_platform_fb *pdata;/*LCD屏配置信息結構體*/struct s3cfb_global *fbdev;/*驅動程序全局變量結構體*/struct resource *res; /*用來保存從LCD平臺設備中獲取的LCD資源*/int i, j, ret = 0;printk(%sn,_func_);fbdev = kzalloc(sizeof(struct s3cfb_global), GFP_KERNEL);if (!fbdev) dev_err(&pdev-dev, failed to allocate for global fb structuren);ret = -ENOMEM;goto err_global;fbdev-dev = &pdev-dev;fbdev-regulator = regulator_get(&pdev-dev, pd);if (!fbdev-regulator) dev_err(fbdev-dev, failed to get regulatorn);ret = -EINVAL;goto err_regulator;ret = regulator_enable(fbdev-regulator);if (ret dev, failed to enable regulatorn);ret = -EINVAL;goto err_regulator;/*獲取LCD參數信息*/pdata = to_fb_plat(&pdev-dev);if (!pdata) dev_err(fbdev-dev, failed to get platform datan);ret = -EINVAL;goto err_pdata;fbdev-lcd = (struct s3cfb_lcd *)pdata-lcd;/*配置GPIO端口*/if (pdata-cfg_gpio)pdata-cfg_gpio(pdev);/*設置時鐘參數*/if (pdata-clk_on)pdata-clk_on(pdev, &fbdev-clock);/*獲取LCD平臺設備所使用的IO端口資源,注意這個IORESOURCE_MEM標志和LCD平臺設備定義中的一致*/res = platform_get_resource(pdev, IORESOURCE_MEM, 0);if (!res) dev_err(fbdev-dev, failed to get io memory regionn);ret = -EINVAL;goto err_io;/*申請LCD IO端口所占用的IO空間(注意理解IO空間和內存空間的區(qū)別),request_mem_region定義在ioport.h中*/res = request_mem_region(res-start, res-end - res-start + 1, pdev-name);if (!res) dev_err(fbdev-dev, failed to request io memory regionn);ret = -EINVAL;goto err_io;/*將LCD的IO端口占用的這段IO空間映射到內存的虛擬地址,ioremap定義在io.h中 注意:IO空間要映射后才能使用,以后對虛擬地址的操作就是對IO空間的操作*/fbdev-regs = ioremap(res-start, res-end - res-start + 1);if (!fbdev-regs) dev_err(fbdev-dev, failed to remap io regionn);ret = -EINVAL;goto err_mem;#ifdef CONFIG_FB_S3C_LTE480WV/*設置寄存器初始狀態(tài)*/s3cfb_pre_init_para(fbdev); #endif /*設置gamma 值*/ s3cfb_set_gamma(fbdev);/*設置VSYNC中斷*/s3cfb_set_vsync_interrupt(fbdev, 1);/*設置全局中斷*/s3cfb_set_global_interrupt(fbdev, 1);/*fb設備參數信息初始化*/s3cfb_init_global(fbdev);/*為framebuffer分配空間,進行內存映射,填充fb_info*/if (s3cfb_alloc_framebuffer(fbdev) ret = -ENOMEM;goto err_alloc;/*注冊fb設備到系統(tǒng)中*/if (s3cfb_register_framebuffer(fbdev) ret = -EINVAL;goto err_register;s3cfb_set_clock(fbdev);s3cfb_set_window(fbdev, pdata-default_win, 1);s3cfb_display_on(fbdev);fbdev-irq = platform_get_irq(pdev, 0);if (request_irq(fbdev-irq, s3cfb_irq_frame, IRQF_SHARED,pdev-name, fbdev) dev_err(fbdev-dev, request_irq failedn);ret = -EINVAL;goto err_irq;#ifdef CONFIG_FB_S3C_LCD_INITif (pdata-backlight_on)p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化工儀表入職試題及答案
- 急性心衰考核試題及答案
- 探討紡織品產業(yè)鏈各環(huán)節(jié)的質量控制試題及答案
- 神華歷年實操試題及答案
- 探索紡織品復合材料的應用試題及答案
- 2024國際商業(yè)美術設計師的風險應對策略試題及答案
- 幼兒文學考試題及答案
- 服裝設計的市場需求分析試題及答案
- 2024年廣告設計師考試品牌策略試題及答案
- 2024年商業(yè)設計師考試的真題解讀試題及答案
- 血糖監(jiān)測操作流程及考核標準(100分)
- 初中體育課堂學生體質發(fā)展及體能鍛煉有效措施優(yōu)秀獲獎科研論文
- 部編版語文二年級下冊第6單元奇妙的大自然大單元整體作業(yè)設計
- 2023年住院醫(yī)師考試-康復醫(yī)學住院醫(yī)師考試題庫(含答案)
- 高中音樂鑒賞 《黃河大合唱》
- GB/T 29049-2012整樘門垂直荷載試驗
- 2022年貴州貴陽市中考英語真題
- FZ/T 32001-2018亞麻紗
- 《大數據環(huán)境下的網絡安全問題探討(論文)8000字》
- 粵教科技版科學六年級下冊第14課《生物生存的環(huán)境》教學課件
- 高考語文作文素材:《典籍里的中國》課件33張
評論
0/150
提交評論