版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于MTK65xx平臺(tái)lcm和背光驅(qū)動(dòng)的編寫一、 與LCD驅(qū)動(dòng)相關(guān)的主要文件路徑mediatekplatformmt6573ubootmt6573_disp_drv.cmediatekplatformmt6573ubootmt6573_disp_drv_dpi.cmediatekplatformmt6573uboot mt6573_disp_drv_dbi.cmediatekplatformmt6573uboot mt6573_dpi_drv.cmediatekplatformmt6573uboot mt6573_dsi_drv.cmediatekplatformmt6573uboot mt6
2、573_lcd_drv.cmediateksourcekerneldriversvideomtkfb.cmediateksourcekerneldriversvideodisp_drv.cmediateksourcekerneldriversvideodisp_drv_dpi.cmediateksourcekerneldriversvideodisp_drv_dbi.cmediatekplatformmt6573kerneldriversvideolcd_drv.cmediatekplatformmt6573kerneldriversvideodpi_drv.cmediatekplatform
3、mt6573kerneldriversvideodsi_drv.cmediatekcustomcommonkernellcmLCM_NAMELCM_NAME.cmediatekplatformmt6573uboot mt6573_pwm.cmediatekplatformmt6573uboot mt65xx_leds.cmediateksourcekerneldriversledsleds.cmediatekcustomginwave73_gbkernelledsmt65xxcust_leds.c二、 怎樣新建一個(gè)LCD驅(qū)動(dòng)LCD模組主要包括LCD顯示屏和驅(qū)動(dòng)IC。比如LF040DNYB16a
4、模組的驅(qū)動(dòng)IC型號(hào)為NT35510。要在MTK6573平臺(tái)上新建這個(gè)lcd的驅(qū)動(dòng),步驟如下:1、 在mediatekcustomcommonkernellcm目錄下新建文件夾nt35510,在此文件夾中新建nt35510.c。這就是LCM硬件層驅(qū)動(dòng)文件。2、 修改mediatekcustomcommonkernellcm mt65xx_lcm_list.c, 在 lcm_driver_list lcm_count 中增加nt35510_lcm_drv。3、 打開mediatekconfigginwave73_gbProjectConfig.mk,修改CUSTOM_UBOOT_LCM = nt3
5、5510, CUSTOM_KERNEL_LCM = nt35510;修改LCM_WIDTH、LCM_HEIGHT、BOOT_LOGO為正確的值。三、 驅(qū)動(dòng)文件(nt35510.c) 主要任務(wù)是實(shí)現(xiàn)LCM_DRIVER nt35510_lcm_drv = .name = "nt35510",.set_util_funcs = lcm_set_util_funcs,.get_params = lcm_get_params,.init
6、160; = lcm_init,.suspend = lcm_suspend,.resume = lcm_resume,.compare_id = lcm_compare_id, (1)lcm_get_params主要是設(shè)置LCM相關(guān)的參數(shù),數(shù)據(jù)結(jié)構(gòu)如下:typedef str
7、uct LCM_TYPE type;LCM_CTRL ctrl; /! how to control LCM registers unsigned int width; unsigned int height;unsigned int io_select_mode;
8、; /DBI or DPI should select IO mode according to chip spec /* particular parameters */ LCM_DBI_PARAMS dbi; LCM_DPI_PARAMS dpi; LCM_DSI_PARAMS dsi; LCM_PARAMS;LCM_TYPE 定義LCM與HOST間的接口,主要分為3種,DBI, DPI, DSI。其中DBI又分為
9、parallel DBI 和serial DBI。parallel DBI(B型DBI)的命令和數(shù)據(jù)都在數(shù)據(jù)總線D17:0上傳輸。CSX為低時(shí)數(shù)據(jù)有效。WRX線控制D17:0為寫時(shí)序,RDX控制D17:0為讀時(shí)序。D/CX指示D17:0上傳輸?shù)氖敲钸€是數(shù)據(jù)。注:MT6573使用LPA0線作為D/CX線,LPCE線作為CSX線,LWRB線作為WRX線,LRDB線作為RDX線。serial DBI(C型DBI)的命令和數(shù)據(jù)都在SPI接口上傳輸。CSX為低時(shí)SDA有效。SCL提供時(shí)鐘,DIN輸入,DOUT輸出。當(dāng)SDA_EN=1時(shí),DIN線成為雙向的SDA線,即可輸入又可輸出,DOUT線不用。C型
10、DBI分為3線(沒(méi)有D/CX線)和4線(有D/CX線)兩種。3線的使用一個(gè)D/CX bit來(lái)區(qū)分命令/數(shù)據(jù),4線的使用D/CX線來(lái)區(qū)分命令/數(shù)據(jù)。注:MT6573使用LSA0線作為D/CX線,LSCE線作為CSX線。LSCK線作為SCL線,LSDA線作為SDA線。DPI的命令在SPI上傳輸,Pixel data(RGB data)在D17:0上傳輸。其命令傳輸方式與serial DBI相同。對(duì)于Pixel data(RGB data),需要自己的4條控制線:DPICK_PIN(RGB時(shí)鐘) 、DPIDE_PIN(RGB數(shù)據(jù)有效)、 DPIVSYNC(場(chǎng)同步)、 DPIHSYNC(行同步) 。t
11、ypedef enum LCM_CTRL_NONE = 0, LCM_CTRL_SERIAL_DBI, LCM_CTRL_PARALLEL_DBI, LCM_CTRL_GPIO LCM_CTRL定義LCM與HOST之間傳遞command的方式,有SERIAL_DBI、PARALLEL_DBI、GPIO幾種控制方式。如果是DPI接口,其LCM_CTRL可以選擇SERIAL_DBI或者GPIO。Width和height定義LCM的寬度和高度。io
12、_select_mode有這些選項(xiàng):0(LCD_IO_SEL_16CPU_24RGB),1(LCD_IO_SEL_18CPU_18RGB),2(LCD_IO_SEL_24CPU_8RGB),3(LCD_IO_SEL_24CPU_ONLY)。根據(jù)driver IC 的定義填寫。LCM_×××_PARAMS根據(jù)不同的LCM_TYPE取值,這是針對(duì)DBI/DPI/DSI接口類型的詳細(xì)參數(shù)定義。比如LCM_DPI_PARAMS定義如下:typedef struct unsigned int mipi_pll_clk_ref;
13、 / 0.1 unsigned int mipi_pll_clk_div1; / 0.63 unsigned int mipi_pll_clk_div2; / 0.15 unsigned int dpi_clk_div; / 2.32 unsigned int dpi_clk_duty;
14、 / (dpi_clk_div - 1) . 31 /* polarity parameters */ LCM_POLARITY clk_pol; LCM_POLARITY de_pol; LCM_POLARITY vsync_pol; LCM_POLARITY hsync_pol; /* timing parameters */
15、160; unsigned int hsync_pulse_width; unsigned int hsync_back_porch; unsigned int hsync_front_porch; unsigned int vsync_pulse_width; unsigned int vsync_back_porch; unsigned int vsync_front_porch;
16、0; /* output format parameters */ LCM_DPI_FORMAT format; LCM_COLOR_ORDER rgb_order; unsigned int is_serial_output; /* intermediate buffers parameters */ unsigned int intermediat_bu
17、ffer_num; / 2.3 /* iopad parameters */ LCM_DRIVING_CURRENT io_driving_current; LCM_DPI_PARAMS;其中,第一段前4項(xiàng)用于控制DPI時(shí)鐘,計(jì)算公式如下:Pixel Clock Frequency = 26MHz * mipi_pll_clk_div1 / (mipi_pll_clk_ref + 1)/ (2 * mipi_pll_clk_div2)/ dpi_clk_div第二段4個(gè)參數(shù)設(shè)
18、置DPICK_PIN(RGB時(shí)鐘) 、DPIDE_PIN(RGB數(shù)據(jù)有效)、 DPIVSYNC(場(chǎng)同步)、 DPIHSYNC(行同步)線是上升沿還是下降沿有效。行同步脈沖開始前和開始后的幾個(gè)時(shí)鐘周期,是行信號(hào)消隱期;場(chǎng)同步開始前和開始后的幾個(gè)行周期,是場(chǎng)信號(hào)消隱期。消隱期不傳遞圖像信號(hào)。消隱期特性由第三段六個(gè)參數(shù)定義:hsync_pulse_width; hsync_back_porch; hsync_front_porch; vsync_pulse_width; vsync_back_porch; vsync_front
19、_porch;LCM_DPI_FORMAT指定每個(gè)像素中RGB各占幾個(gè)bit.LCM_COLOR_ORDER指定RGB的順序。上述參數(shù)的值,均依照LCM spec及驅(qū)動(dòng)IC datasheet中的定義。這里要說(shuō)說(shuō)一個(gè)特別之處。NT35510使用DPI接口,SERIAL_DBI ctrl 方式時(shí),沒(méi)有D/CX線,datasheet上定義的傳輸方式是9 bits,即在數(shù)據(jù)byte前加個(gè)D/CX bit。但使用了NT35510的LCMLF040DNYB16a,其spec中卻另外定義了其串口使用16 bits 模式傳輸。Byte1 是標(biāo)志byte, 前3位分別為 R/W bit, D/CX bit,
20、High/Low bit;Byte2 則是命令或數(shù)據(jù)。NT35510的每個(gè)command長(zhǎng)度為2byte,還可能帶有若干bytes的參數(shù),比如命令F001,參數(shù)AA,應(yīng)該這樣傳輸:0x20 0xF0 0x00 0x01 0x40 0xAA。(2)lcm_init主要實(shí)現(xiàn)LCM的初始化,包括如下步驟:config_gpio配置GPIO。發(fā)送reset信號(hào)。RESET pin low和RESET pin high需要持續(xù)的時(shí)間一般為若干ms, 以datasheet 為準(zhǔn)。init_lcm_registers初始化LCM的寄存器。具體可以廠家提供的初始代碼為參考。一般在此函數(shù)末尾,都會(huì)使用喚醒命令組
21、(見(jiàn)后文),使LCM進(jìn)入工作狀態(tài)。(3)lcm_suspend 使LCM休眠,使用特定的命令,并遵守datasheet定義的時(shí)間特性。常用命令組如下:0X2800 (or 0X28) set display off 0X1000 (or 0X10) enter sleep mode對(duì)nt35510而言,還有一種更深睡眠的狀態(tài)deep standby mode,使用如下命令進(jìn)入:0X4F00 0X01(4)lcm_resume使LCM蘇醒,使用特定的命令,并遵守datasheet定義的時(shí)間特性。喚醒命令組:0X1100 (or 0X11) exit
22、sleep mode0X2900 (or 0X29) set display on對(duì)nt35510而言,如果在lcm_suspend中使LCM enter deep standby mode,則不能使用喚醒命令組,需要使用reset信號(hào)并要重新init_lcm_registers。四、 驅(qū)動(dòng) nt35510_lcm_drv怎樣被上層使用Mtkfb.c中實(shí)現(xiàn)了LCM的platform driver:static struct platform_driver mtkfb_driver = .driver =
23、60; .name = “mtk-fb”, .bus = &platform_bus_type, .probe = mtkfb_probe, .remove =
24、 mtkfb_remove, .suspend = mtkfb_suspend, .resume = mtkfb_resume, , mtkfb_probe會(huì)調(diào)用函數(shù)mtkfb_find_lcm_driver來(lái)發(fā)現(xiàn)LCM的硬件層驅(qū)動(dòng)。mtkfb_find_lcm_driverDISP_Se
25、lectDevicedisp_drv_get_lcm_driver,檢查lcm_driver_list, 得到當(dāng)前使用的LCM及其驅(qū)動(dòng)名稱。Mt6573_devs.c中,定義了framebuffer型的platform device,這個(gè)設(shè)備在mt6573_board_init()調(diào)用時(shí)被注冊(cè)。它所對(duì)應(yīng)的驅(qū)動(dòng)就是上文提到的mtkfb_driverstatic struct platform_device mt6573_device_fb = .name = "mtkfb", .
26、id = 0, .num_resources = ARRAY_SIZE(resource_fb), .resource = resource_fb, .dev = .dma_mask = &mtkfb_dmamask, .cohe
27、rent_dma_mask = 0xffffffff, ,;在linux 內(nèi)核中l(wèi)cd 設(shè)備驅(qū)動(dòng)所使用的是framebuffer設(shè)備類型,framebuffer設(shè)備驅(qū)動(dòng)程序的核心數(shù)據(jù)結(jié)構(gòu)是fb_ops;用戶空間就是通過(guò)此結(jié)構(gòu)體,調(diào)用其中的函數(shù)來(lái)對(duì)LCD實(shí)現(xiàn)控制。Mtkfb.c中定義并實(shí)現(xiàn)了fb_ops類型的mtkfb_ops。一個(gè)使用mtkfb_ops的例子見(jiàn)mediateksourcekerneldriversgpupvrservices43rdpartymtklfb mtklfb_displayclass.c。static struct fb
28、_ops mtkfb_ops = .owner = THIS_MODULE, .fb_open = mtkfb_open, .fb_release = mtkfb_release, .fb_setcol
29、reg = mtkfb_setcolreg, /批量配置顏色參數(shù) .fb_pan_display = mtkfb_pan_display_proxy, /虛擬屏幕內(nèi)容顯示 .fb_fillrect = cfb_fillrect, /填充區(qū)域顯示 .fb_copyarea = cfb_copyarea, /復(fù)制區(qū)域顯示 .fb_imageblit &
30、#160; = cfb_imageblit, /顯示圖象 .fb_cursor = mtkfb_soft_cursor, /光標(biāo)顯示 .fb_check_var = mtkfb_check_var, /檢查并配置fb_var_screeninfo參數(shù) .fb_set_par = mtkfb_set_par, /change display mode and
31、set parameter .fb_ioctl = mtkfb_ioctl, /特定ioctl配置LCD屏幕特性;五、 Frame Buffer 設(shè)備驅(qū)動(dòng)mtkfb_driver中的各個(gè)函數(shù)會(huì)調(diào)用到DISP_xxx函數(shù)(DISP_drv.c),而DISP_xxx會(huì)調(diào)用到LCD_xxx函數(shù)(lcd_drv.c)以及LCM硬件層驅(qū)動(dòng)。mtkfb_probe的主要工作如下:* find lcm driver* Register interrupt handler (call back func
32、tion), Init screen update wait queue, create screen update kThread* Allocate and initialize frame buffer device (fb_info , mtkfb_device), select panel type according to machine type* Initialize Display Driver PDD Layer (DISP_init)* Initialize fb_info struct (mtkfb_fbinfo_init)* Reg
33、ister mtkfb_device fs to system (mtkfb_register_sysfs)* Register fb_info to system (register_framebuffer)fb_info結(jié)構(gòu)定義如下:struct fb_info int node;int flags;struct mutex lock; /* Lock for open/release/ioctl funcs */struct mutex mm_lock; /* Lock for fb_mmap and smem_* fields */struct fb
34、_var_screeninfo var; /* Current var */struct fb_fix_screeninfo fix; /* Current fix */struct fb_monspecs monspecs; /* Current Monitor specs */struct work_struct queue; /* Framebuffer event queue */struct fb_pixmap pixmap; /* Image hardware mapper */struct fb_pixmap sprite; /* Cursor
35、 hardware mapper */struct fb_cmap cmap; /* Current cmap */struct list_head modelist; /* mode list */struct fb_videomode *mode; /* current mode */#ifdef CONFIG_FB_BACKLIGHT struct backlight_device *bl_dev;struct mutex bl_curve_mutex; u8 bl_curveFB_BACKLIGHT_LEV
36、ELS;#endif#ifdef CONFIG_FB_DEFERRED_IOstruct delayed_work deferred_work;struct fb_deferred_io *fbdefio;#endifstruct fb_ops *fbops;struct device *device; /* This is the parent */struct device *dev; /* This is this fb device */int class_flag;
37、 /* private sysfs flags */#ifdef CONFIG_FB_TILEBLITTINGstruct fb_tile_ops *tileops; /* Tile Blitting */#endifchar _iomem *screen_base; /* Virtual address */unsigned long screen_size; /* Amount of ioremapped VRAM or 0 */ voi
38、d *pseudo_palette; /* Fake palette of 16 colors */ #define FBINFO_STATE_RUNNING 0#define FBINFO_STATE_SUSPENDED 1u32 state; /* Hardware state i.e suspend */void *fbcon_par; /* fbcon use-only private
39、area */* From here on everything is device dependent */void *par; struct apertures_struct unsigned int count;struct aperture resource_size_t base;resource_size_t size; ranges0; *apertures;1)fb_var_screeninfo 這個(gè)結(jié)構(gòu)描述了顯示卡的特性: NOTE: _u32 是表示 unsigned 不帶符號(hào)的 32 bits 的數(shù)據(jù)類型,其余類推。這是 Linu
40、x 內(nèi)核中所用到的數(shù)據(jù)類型,如果是開發(fā)用戶空間(user-space)的程序,可以根據(jù)具體計(jì)算機(jī)平臺(tái)的情況,用 unsigned long 等等來(lái)代替 struct fb_var_screeninfo _u32 xres; /* visible resolution */ /可視區(qū)域 _u32 yres; _u32 xres_virtual; /* virtual resolution */ /可視區(qū)域 _u32 yres_virtual; _u32 xoffset; /* offset from virtual to v
41、isible resolution */ /可視區(qū)域的偏移 _u32 yoffset; _u32 bits_per_pixel; /* guess what */ /每一象素的bit數(shù) _u32 grayscale; /* != 0 Gray levels instead of colors */等于零就成黑白 struct fb_bitfield red; /* bitfield in fb mem if true color, */真彩的bit機(jī)構(gòu) struct fb_bitfield green; /* else only length
42、is significant */ struct fb_bitfield blue; struct fb_bitfield transp; /* transparency */ 透明 _u32 nonstd; /* != 0 Non standard pixel format */ 不是標(biāo)準(zhǔn)格式 _u32 activate; /* see FB_ACTIVATE_* */ _u32 height; /* height of picture in mm */ 內(nèi)存中的圖像高度 _u32 width; /* width of pictur
43、e in mm */ 內(nèi)存中的圖像寬度 _u32 accel_flags; /* acceleration flags (hints) */ 加速標(biāo)志 /* Timing: All values in pixclocks, except pixclock (of course) */ 時(shí)序-_-這些部分就是顯示器的顯示方法了,可以找相關(guān)的資料看看 _u32 pixclock; /* pixel clock in ps (pico seconds) */ _u32 left_margin; /* time from sync to picture
44、 */ _u32 right_margin; /* time from picture to sync */ _u32 upper_margin; /* time from sync to picture */ _u32 lower_margin; _u32 hsync_len; /* length of horizontal sync */ 水平可視區(qū)域 _u32 vsync_len; /* length of vertical sync */ 垂直可視區(qū)域 _u32 sync; /* see FB_SYNC_* */ _
45、u32 vmode; /* see FB_VMODE_* */ _u32 reserved6; /* Reserved for future compatibility */ 備用以后開發(fā) 2) fb_fix_screeninfon 這個(gè)結(jié)構(gòu)在顯卡被設(shè)定模式后創(chuàng)建,它描述顯示卡的屬性,并且系統(tǒng)運(yùn)行時(shí)不能被修改;比如FrameBuffer內(nèi)存的起始地址。它依賴于被設(shè)定的模式,當(dāng)一個(gè)模式被設(shè)定后,內(nèi)存信息由顯示卡硬件給出,內(nèi)存的位置等信息就不可以修改。 struct fb_fix_screeninfo char id16; /* id
46、entification string eg "TT Builtin" */ID unsigned long smem_start; /* Start of frame buffer mem */ 內(nèi)存起始 /* (physical address) */ 物理地址 _u32 smem_len; /* Length of frame buffer mem */ 內(nèi)存大小 _u32 type; /* see FB_TYPE_* */ _u32 type_aux; /* Interleave for interleaved Pl
47、anes */插入?yún)^(qū)域? _u32 visual; /* see FB_VISUAL_* */ _u16 xpanstep; /* zero if no hardware panning */沒(méi)有硬件設(shè)備就為零 _u16 ypanstep; /* zero if no hardware panning */ _u16 ywrapstep; /* zero if no hardware ywrap */ _u32 line_length; /* length of a line in bytes */ 一行的字節(jié)表示 unsigned
48、long mmio_start; /* Start of Memory Mapped I/O */內(nèi)存映射的I/O起始 /* (physical address) */ _u32 mmio_len; /* Length of Memory Mapped I/O */ I/O的大小 _u32 accel; /* Type of acceleration available */ 可用的加速類型 _u16 reserved3; /* Reserved for future compatibility */ Mtkfb_device結(jié)構(gòu)定
49、義如下:struct mtkfb_device int state; void *fb_va_base; /* MPU
50、 virtual address */ dma_addr_t fb_pa_base; /* Bus physical address */ unsigned long fb_size_in_byte; unsigned long layer
51、_enable; MTK_FB_FORMAT layer_formatHW_OVERLAY_COUNT; unsigned int layer_config_dirty; int xscale, yscale, mirror; /* transform
52、ations. rotate is stored in fb_info->var */ u32 pseudo_palette17; struct fb_info *fb_info; /*
53、 Linux fbdev framework data */ struct device *dev;六、 uBoot階段Mt6573_board.c中,board_init函數(shù)執(zhí)行硬件先期初始化工作,它調(diào)用mt65xx_disp_init函數(shù)(Mt6573_disp_drv.c)。board_initmt65xx_disp_initDISP_Initdisp_drv_init_contextDISP_DetectDevicedisp_drv_get_lcm_driverlcm_driver_list disp_drv_init_con
54、textDISP_GetDriverDPI / DISP_GetDriverDBI / DISP_GetDriverDSIDISP_GetDriverDPI (mt6573_disp_drv_dpi.c)DPI_DISP_DRV. dpi_initinit_dpiDPI_Init (Mt6573_dpi_drv.c)DISP_GetDriverDBI (mt6573_disp_drv_dbi.c)DBI_DISP_DRV. dbi_initinit_lcdLCD_xxx(Mt6573_lcd_drv.c)DISP_GetDriverDSI (mt6573_disp_dr
55、v_dsi.c)DSI_DISP_DRV. dsi_initinit_lcd,init_dsiDSI_Init(Mt6573_dsi_drv.c)DISP_InitLCD_Init (Mt6573_lcd_drv.c) DISP_UpdateScreenLCD_StartTransfer (Mt6573_lcd_drv.c)七、 背光控制Cust_leds.c中定義了cust_mt65xx_led類型的數(shù)組cust_led_list,列出了平臺(tái)的所有l(wèi)ed設(shè)備,包括不同顏色的led燈,軌跡球、鍵盤、按鍵、LCD等的背光燈。不同led設(shè)備可以有各自不同的背光控制
56、方式,比如PWM(脈沖寬度調(diào)制)方式,GPIO方式,PMIC方式,用戶自定義方式等。如下所示:static struct cust_mt65xx_led cust_led_listMT65XX_LED_TYPE_TOTAL = "red", MT65XX_LED_MODE_PWM, PWM3,"green", MT65XX_LED_MODE_PWM, PWM2,"blue", MT65XX_LED_MODE_PWM, PWM1,"jogball-backlight&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人借款權(quán)益轉(zhuǎn)讓合同模板(2024年版)版B版
- 2025年度幕墻抗風(fēng)抗震加固工程合同范本4篇
- 2025年度文化娛樂(lè)品牌授權(quán)使用許可
- 2025年度出租車司機(jī)職業(yè)操守與信息保密合同
- 2025年度墓地陵園墓地使用權(quán)購(gòu)買協(xié)議3篇
- 2025年度肉類產(chǎn)品加工與銷售一體化合同3篇
- 2025年度餐飲加盟店品牌授權(quán)與維護(hù)合同3篇
- 二零二五年度寵物貓寵物用品代理銷售合同3篇
- 2025版基因編輯技術(shù)合作項(xiàng)目建議書編制范本3篇
- 2025年KTV主題房間租賃及定制服務(wù)協(xié)議3篇
- 成長(zhǎng)小說(shuō)智慧樹知到期末考試答案2024年
- 紅色革命故事《王二小的故事》
- 海洋工程用高性能建筑鋼材的研發(fā)
- 蘇教版2022-2023學(xué)年三年級(jí)數(shù)學(xué)下冊(cè)開學(xué)摸底考試卷(五)含答案與解析
- 英語(yǔ)48個(gè)國(guó)際音標(biāo)課件(單詞帶聲、附有聲國(guó)際音標(biāo)圖)
- GB/T 6892-2023一般工業(yè)用鋁及鋁合金擠壓型材
- 冷庫(kù)安全管理制度
- 2023同等學(xué)力申碩統(tǒng)考英語(yǔ)考試真題
- 家具安裝工培訓(xùn)教案優(yōu)質(zhì)資料
- 在雙減政策下小學(xué)音樂(lè)社團(tuán)活動(dòng)有效開展及策略 論文
- envi二次開發(fā)素材包-idl培訓(xùn)
評(píng)論
0/150
提交評(píng)論