版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、嵌入式linux下常見的文件系統(tǒng)RomFS:只讀文件系統(tǒng),可以放在ROM空間,也可以在系統(tǒng)的RAM中,嵌入式linux中常用來作根文件系統(tǒng) RamFS:利用VFS自身結(jié)構(gòu)而形成的內(nèi)存文件系統(tǒng),使用系統(tǒng)的RAM空間 JFFS/JFFS2:為Flash設(shè)計的日志文件系統(tǒng) Yaffs:專門為Nand Flash設(shè)計 proc:為內(nèi)核和內(nèi)核模塊將信息發(fā)送給進程提供一種機制,可以查看系統(tǒng)模塊裝載的信息 devFS:設(shè)備文件系統(tǒng)Linux上的Ext2fs 支持4 TB 存儲、文件名稱最長1012 字符 可選擇邏輯塊 快速符號鏈接 Ext2不適合flash設(shè)備 是為象IDE 設(shè)備那樣的塊設(shè)備設(shè)計的,邏輯塊大
2、小必須是512 byte、1 KB、2KB等 沒有提供對基于扇區(qū)的擦除寫操作的良好管理 如果在一個扇區(qū)中擦除單個字節(jié),必須將整個扇區(qū)復(fù)制到RAM,然后擦除,再重寫入 在出現(xiàn)電源故障時,Ext2fs 是不能防止崩潰的 文件系統(tǒng)不支持損耗平衡,縮短了flash的壽命jffs/jffs2文件系統(tǒng)的優(yōu)缺點 日志文件系統(tǒng) 提供了更好的崩潰、掉電安全保護 jffs2支持對flash的均勻磨損 在扇區(qū)級別上執(zhí)行閃存擦除寫讀操作要比Ext2文件系統(tǒng)好 文件系統(tǒng)接近滿時,JFFS2 會大大放慢運行速度垃圾收集Nand上yaffs文件系統(tǒng)的優(yōu)勢 專門為Nand flash設(shè)計的日志文件系統(tǒng) jffsjffs2不適
3、合大容量的Nand flash jffs的日志通過jffs_node建立在RAM中,占用RAM空間:對于128MB的Nand大概需要4MB的空間來維護節(jié)點 啟動的時候需要掃描日志節(jié)點,不適合大容量的Nand flash FAT系統(tǒng)沒有日志編譯yaffs文件系統(tǒng) mtd的最新補丁升級? 接口更新,適合與yaffs 與原有的mtd驅(qū)動程序不兼容,需要重寫 如果使用舊mtd驅(qū)動需要定義Makefile中MTD_OLD = -DCONFIG_YAFFS_USE_OLD_MTD 參考文檔: yaffs-rootfs-howto 最新版的yaffs網(wǎng)站:使用yaffs文件系統(tǒng) 通過cat /proc/ya
4、ffs命令可以看到y(tǒng)affs系統(tǒng)的相關(guān)信息 mount -t yaffs /dev/mtdblock/0 /mnt/yaffs關(guān)于Linux文件系統(tǒng)JFFS全稱為:The Journalling Flash File System(日志閃存文件系統(tǒng))最初由瑞典的 Axis Communications 開發(fā),Red Hat 的 David Woodhouse 對它進行了改進。作為用于微型嵌入式設(shè)備的原始閃存芯片的實際文件系統(tǒng)而出現(xiàn)。JFFS文件系統(tǒng)是日志結(jié)構(gòu)化的,這意味著它基本上是一長列節(jié)點。每個節(jié)點包含有關(guān)文件的部分信息 可能是文件的名稱、也許是一些數(shù)據(jù)。相對于 Ext2 fs,JFFS 因
5、為有以下這些優(yōu)點而在無盤嵌入式設(shè)備中越來越受歡迎: 1 JFFS 在扇區(qū)級別上執(zhí)行閃存擦除寫讀操作要比 Ext2 文件系統(tǒng)好。 2 JFFS 提供了比 Ext2 更好的崩潰掉電安全保護。當需要更改少量數(shù)據(jù)時,Ext2 文件系統(tǒng)將整個扇區(qū)復(fù)制到內(nèi)存(DRAM)中,在內(nèi)存中合并新數(shù)據(jù),并寫回整個扇區(qū)。這意味著為了更改單個字,必須對整個扇區(qū)(64 KB)執(zhí)行讀擦除寫例程 這樣做的效率非常低。要是運氣差,當正在 DRAM 中合并數(shù)據(jù)時,發(fā)生了電源故障或其它事故,那么將丟失整個數(shù)據(jù)集合,因為在將數(shù)據(jù)讀入 DRAM 后就擦除了閃存扇區(qū)。JFFS 附加文件而不是重寫整個扇區(qū),并且具有崩潰掉電安全保護這一功能
6、。 3 這可能是最重要的一點:JFFS 是專門為象閃存芯片那樣的嵌入式設(shè)備創(chuàng)建的,所以它的整個設(shè)計提供了更好的閃存管理。 要構(gòu)建JFFS文件系統(tǒng),首先要有硬件設(shè)備FLASH及支持JFFS文件系統(tǒng)的操作系統(tǒng)。摘要:本文主要分析了uclinux 2.4內(nèi)核的jffs文件系統(tǒng)機制。希望能對基于uclinux開發(fā)產(chǎn)品的廣大工程師有所幫助。關(guān)鍵詞:uclinux vfs jffs申明:這份文檔是按照自由軟件開放源代碼的精神發(fā)布的,任何人可以免費獲得、使用和重新發(fā)布,但是你沒有限制別人重新發(fā)布你發(fā)布內(nèi)容的權(quán)利。發(fā)布本文的目的是希望它能對讀者有用,但沒有任何擔保,甚至沒有適合特定目的的隱含的擔保。更詳細的情
7、況請參閱 GNU 通用公共許可證(GPL),以及GNU 自由文檔協(xié)議(GFDL)。你應(yīng)該已經(jīng)和文檔一起收到一份GNU 通用公共許可證(GPL)的副本。如果還沒有,寫信給:The Free Software Foundation, Inc., 675 Mass Ave, Cambridge,MA02139, USA歡迎各位指出文檔中的錯誤與疑問一、flash讀寫的特殊性對于嵌入式系統(tǒng),flash是很常見的一種設(shè)備,而大部分的嵌入式系統(tǒng)都是把文件系統(tǒng)建立在flash之上,由于對flash操作的特殊性,使得在flash上的文件系統(tǒng)和普通磁盤上的文件系統(tǒng)有很大的差別,對flash操作的特殊性包括:(1
8、) 不能對單個字節(jié)進行擦除,最小的擦寫單位是一個block,有時候也稱為一個扇區(qū)。典型的一個block的大小是64k。不同的flash會有不同,具體參考flash芯片的規(guī)范。(2) 寫操作只能對一個原來是空(也就是該地址的內(nèi)容是全f)的位置操作,如果該位置非空,寫操作不起作用,也就是說如果要改寫一個原來已經(jīng)有內(nèi)容的空間,只能是讀出該sector到ram,在ram中改寫,然后寫整個sector。由于這些特殊寫,所以在flash這樣的設(shè)備上建立文件也有自己獨特的特點,下面我們就以jffs為例進行分析。二、jffs體系結(jié)構(gòu)介紹1、存儲結(jié)構(gòu)在jffs中,所有的文件和目錄是一樣對待的,都是用一個jffs
9、_raw_inode來表示整個flash上就是由一個一個的raw inode排列組成,一個目錄只有一個raw inode,對于文件則是由一個或多個raw inode組成。2、文件組成在文件系統(tǒng)mount到flash設(shè)備上的時候,會掃描flash,從而根據(jù)flash上的所有屬于一個文件的raw inode建立一個jffs_file結(jié)構(gòu)以及node list。下面的圖顯示了一個文件的組成一個文件是由若干個jffs_node組成,每一個jffs_node是根據(jù)flash上得jffs_raw_inode而建立的,jffs_file主要維護兩個鏈表版本鏈表:主要是描述該node創(chuàng)建的早晚,就是說vers
10、ion_head指向的是一個最老的node,也就意味著垃圾回收的時候最該回收的就是這個最老的node。區(qū)域鏈表:這個鏈表主要是為讀寫文件創(chuàng)建的,version_head指向的node代表的文件數(shù)據(jù)區(qū)域是0n-1 之后依次的節(jié)點分別是 nm-1 mo-1 .其中n<M<="" p="" />3、操作對文件的讀操作應(yīng)該是比較簡單,但是寫操作,包括更改文件名等操作都是引起一個新的jffs_node的誕生,同時要寫一個相映的raw inode到flash上,這樣的操作有可能導(dǎo)致前面的某個jffs_node上面的數(shù)據(jù)完全失效,從而導(dǎo)致對應(yīng)flas
11、h上的raw inode的空間成為dirty。下面舉一個例子可能會更清楚一些。一個文件的range list是由上面的三個jffs_node組成,當我們做如下寫操作的時候lseek( fd, 10, SEEK_SET );write( fd, buf,40 );第一個和最后一個node被截短了,第二個node完全被新數(shù)據(jù)替換,該node會從鏈表上摘下來,flash上空間變成dirty。如果做如下寫操作的時候lseek( fd, 23, SEEK_SET );write( fd, buf,5 );此時,第二個node被分裂成兩個node,同時產(chǎn)生一個新的node,range鏈表的元素變成五個。基
12、于Linux2.6的YAFFS文件系統(tǒng)移植v1.0,2005-6-6一、YAFFS文件系統(tǒng)簡介YAFFS,Yet Another Flash File System,是一種類似于JFFS/JFFS2的專門為Flash設(shè)計的嵌入式文件系統(tǒng)。與JFFS相比,它減少了一些功能,因此速度更快、占用內(nèi)存更少。YAFFS和JFFS都提供了寫均衡,垃圾收集等底層操作。它們的不同之處在于:(1)、JFFS是一種日志文件系統(tǒng),通過日志機制保證文件系統(tǒng)的穩(wěn)定性。YAFFS僅僅借鑒了日志系統(tǒng)的思想,不提供日志機能,所以穩(wěn)定性不如JAFFS,但是資源占用少。(2)、JFFS中使用多級鏈表管理需要回收的臟塊,并且使用系
13、統(tǒng)生成偽隨機變量決定要回收的塊,通過這種方法能提供較好的寫均衡,在YAFFS中是從頭到尾對塊搜索,所以在垃圾收集上JFFS的速度慢,但是能延長NAND的壽命。(3)、JFFS支持文件壓縮,適合存儲容量較小的系統(tǒng);YAFFS不支持壓縮,更適合存儲容量大的系統(tǒng)。YAFFS 還帶有NAND芯片驅(qū)動,并為嵌入式系統(tǒng)提供了直接訪問文件系統(tǒng)的API,用戶可以不使用Linux中的MTD和VFS,直接對文件進行操作。NAND Flash大多采用MTD+YAFFS的模式。MTD( Memory Technology Devices,內(nèi)存技術(shù)設(shè)備)是對Flash操作的接口,提供了一系列的標準函數(shù),將硬件驅(qū)動設(shè)計和
14、系統(tǒng)程序設(shè)計分開。二、YAFFS文件系統(tǒng)的移植yaffs代碼可以從下載(yaffs代碼包括yaffs_ecc.c,yaffs_fileem.c,yaffs_fs.c,yaffs_guts.c,yaffs_mtdif.c,yaffs_ramem.c。)表一 Yaffs文件系統(tǒng)源代碼相關(guān)文件及功能描述文件名 功 能yaffs_ecc.c ECC校驗算法yaffs_fileem.c 測試flashyaffs_fs.c 文件系統(tǒng)接口函數(shù)yaffs_guts.c Yaffs文件系統(tǒng)算法yaffs_mtdif.c NAND函數(shù)yaffs_ramem.c Ramdisk實現(xiàn)1.內(nèi)核中沒有YAFFS,所以需要
15、自己建立YAFFS目錄,并把下載的YAFFS代碼復(fù)制到該目錄下面。#mkdir fs/yaffs#cp *.c(yaffs source code) fs/yaffs2.修改fs/Kconfig,使得可以配置yaffs :source "fs/yaffs/Kconfig"3修改fs/makefile,添加如下內(nèi)容:obj-$(CONFIG_YAFFS_FS) += yaffs/4.在fs目錄下生成yaffs目錄,并在里面生成一個makefile 和KconfigMakefile 內(nèi)容為:yaffs-objs := yaffs_fs.o yaffs_guts.o yaffs_
16、mtdif.o yaffs_ecc.oEXTRA_CFLAGS += $(YAFFS_CONFIGS) -DCONFIG_KERNEL_2_6Kconfig內(nèi)容為:# YAFFS file system configurations#config YAFFS_FStristate "Yet Another Flash Filing System(YAFFS) file system support"helpYAFFS, for Yet Another Flash Filing System, is a filing systemoptimised for NAND Flas
17、h chips.To compile the YAFFS file system support as a module, choose M here:the module will be called yaffs.If unsure, say N.Further information on YAFFS is available at<>.config YAFFS_MTD_ENABLEDbool "NAND mtd support"depends on YAFFS_FShelpThis adds the yaffs file system support fo
18、r working with a NAND mtd.If unsure, say Y.config YAFFS_RAM_ENABLEDbool "yaffsram file system support"depends on YAFFS_FShelpThis adds the yaffsram file system support. Nice for testing on x86,but uses 2MB of RAM. Don't enable for NAND-based targets.If unsure, say N.comment "WARNI
19、NG: mtd and/or yaffsram support should be selected"depends on YAFFS_FS && !YAFFS_MTD_ENABLED && !YAFFS_RAM_ENABLEDconfig YAFFS_USE_OLD_MTDbool "Old mtd support"depends on YAFFS_FS && 0helpEnable this to use the old MTD stuff that did not have yaffs support.You
20、can use this to get around compilation problems, but the bestthing to do is to upgrade your MTD support. You will get better speed.If unsure, say N.config YAFFS_USE_NANDECCbool "Use ECC functions of the generic MTD-NAND driver"depends on YAFFS_FSdefault yhelpThis enables the ECC functions
21、of the generic MTD-NAND driver.This will not work if you are using the old mtd.NB Use NAND ECC does not work at present with yaffsram.If unsure, say Y.config YAFFS_ECC_WRONG_ORDERbool "Use the same ecc byte order as Steven Hill's nand_ecc.c"depends on YAFFS_FShelpThis makes yaffs_ecc.c
22、 use the same ecc byte order asSteven Hill's nand_ecc.c. If not set, then you get thesame ecc byte order as SmartMedia.If unsure, say N.config YAFFS_USE_GENERIC_RWbool "Use Linux file caching layer"default ydepends on YAFFS_FShelpUse generic_read/generic_write for reading/writing files
23、. Thisenables the use of the Linux file caching layer.If you disable this, then caching is disabled and file read/writeis direct.If unsure, say Y.config YAFFS_USE_HEADER_FILE_SIZEbool "Use object header size"depends on YAFFS_FShelpWhen the flash is scanned, two file sizes are constructed:*
24、 The size taken from the object header for the file.* The size figured out by scanning the data chunks.If this option is enabled, then the object header size is used,otherwise the scanned size is used.If unsure, say N.config YAFFS_DISABLE_CHUNK_ERASED_CHECKbool "Turn off debug chunk erase check
25、"depends on YAFFS_FSdefault yhelpEnabling this turns off the test that chunks are erased in flashbefore writing to them. This is safe, since the write verificationwill fail. Suggest enabling the test (ie. say N)during development to help debug things.If unsure, say Y.#config YAFFS_DISABLE_WRITE
26、_VERIFY# bool "Disable write verify (DANGEROUS)"# depends on YAFFS_FS && EXPERIMENTAL# help# I am severely reluctant to provide this config. Disabling the# verification is not a good thing to do since NAND writes can# fail silently. Disabling the write verification will cause your#
27、 teeth to rot, rats to eat your corn and give you split ends.# You have been warned. ie. Don't uncomment the following line.# If unsure, say N.#config YAFFS_SHORT_NAMES_IN_RAMbool "Cache short names in RAM"depends on YAFFS_FSdefault yhelpIf this config is set, then short names are stor
28、ed with theyaffs_Object. This costs an extra 16 bytes of RAM per object,but makes look-ups faster.If unsure, say Y.5在/arch/arm/mach-s3c2410/mach-smdk2410.c找到smdk_default_nand_part結(jié)構(gòu),修改nand分區(qū),如下:struct mtd_partition smdk_default_nand_part = 0 = .name = "vivi",.size = 0x00020000,.offset = 0x
29、00000000,1 = .name = "param",.size = 0x00010000,.offset = 0x00020000,2 = .name = "kernel",.size = 0x00100000,.offset = 0x00030000,3 = .name = "root",.size = 0x01900000,.offset = 0x00130000,4 = .name = "user",.size = 0x025d0000,.offset = 0x01a30000,;注:此分區(qū)要結(jié)合viv
30、i里面的分區(qū)來進行設(shè)置。6配置內(nèi)核時選中MTD支持:Memory Technology Devices (MTD) -><*> Memory Technology Device (MTD) supportMTD partitioning support- User Modules And Translation Layers<*> Direct char device access to MTD devices<*> Caching block device access to MTD devicesNAND Flash Device Drivers
31、-><*> NAND Device Support<*> NAND Flash support for S3C2410 SoCS3C2410 NAND driver debug 7配置內(nèi)核時選中YAFFS支持:File systems ->Miscellaneous filesystems -><*> Yet Another Flash Filing System(YAFFS) file system supportNAND mtd supportUse ECC functions of the generic MTD-NAND drive
32、rUse Linux file caching layerTurn off debug chunk erase checkCache short names in RAM8.編譯內(nèi)核并將內(nèi)核下載到開發(fā)板的flash中。三、Yaffs文件系統(tǒng)測試:1.內(nèi)核啟動之后,在啟動信息里面可以看到如下內(nèi)容:NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)Scanning device for bad blocksCreating 5 MTD partitions on "NAND 6
33、4MiB 3,3V 8-bit":0x00000000-0x00020000 : "vivi"0x00020000-0x00030000 : "param"0x00030000-0x00130000 : "kernel"0x00130000-0x01a30000 : "root"0x01a30000-0x04100000 : "user"2.如果在內(nèi)核里面添加了proc文件系統(tǒng)的支持那么你在proc里面可以看到有關(guān)yaffs的信息 # cat proc/filesystemsnodev
34、 sysfsnodev rootfsnodev bdevnodev procnodev sockfsnodev pipefsnodev futexfsnodev tmpfsnodev eventpollfsnodev devptsnodev ramfsvfatnodev devfsnodev nfsyaffsnodev rpc_pipefs3.查看dev目錄下相關(guān)目錄可以看到: # ls dev/mtd -aldrwxr-xr-x 1 root root 0 Jan 1 00:00 .drwxr-xr-x 1 root root 0 Jan 1 00:00 .crw-rw-rw- 1 root
35、 root 90, 0 Jan 1 00:00 0cr-r-r- 1 root root 90, 1 Jan 1 00:00 0rocrw-rw-rw- 1 root root 90, 2 Jan 1 00:00 1cr-r-r- 1 root root 90, 3 Jan 1 00:00 1rocrw-rw-rw- 1 root root 90, 4 Jan 1 00:00 2cr-r-r- 1 root root 90, 5 Jan 1 00:00 2rocrw-rw-rw- 1 root root 90, 6 Jan 1 00:00 3cr-r-r- 1 root root 90, 7
36、Jan 1 00:00 3rocrw-rw-rw- 1 root root 90, 8 Jan 1 00:00 4cr-r-r- 1 root root 90, 9 Jan 1 00:00 4ro # ls dev/mtdblock/ -aldrwxr-xr-x 1 root root 0 Jan 1 00:00 .drwxr-xr-x 1 root root 0 Jan 1 00:00 .brw- 1 root root 31, 0 Jan 1 00:00 0brw- 1 root root 31, 1 Jan 1 00:00 1brw- 1 root root 31, 2 Jan 1 00
37、:00 2brw- 1 root root 31, 3 Jan 1 00:00 3brw- 1 root root 31, 4 Jan 1 00:00 44.mount、umount建立mount目錄 #mkdir /mnt/flash0 #mkdir /mnt/flash1Mountblockdevice設(shè)備 #mount t yaffs /dev/mtdblock/3 /mnt/flash0 #mount t yaffs /dev/mtdblock/4 /mnt/flash1 #cp 1.txt /mnt/flash0 #cp 2.txt /mnt/flash1查看mount上的目錄,可以
38、看到該目錄下有剛才拷貝的文件,將其umount后,再次mount上來可以發(fā)現(xiàn)拷貝的文件仍然存在,這時刪除該文件然后umount,再次mount后,可以發(fā)現(xiàn)拷貝的文件已經(jīng)被刪除,由此可以該分區(qū)可以正常讀寫。5.在flash上建立根文件系統(tǒng) # mount t yaffs /dev/mtdblock/3 /mnt/flash0 #cp (your rootfs) /mnt/flash0 #umount /mnt/flash0重新啟動,改變啟動參數(shù):param set linux_cmd_line "noinitrd root=/dev/mtdblock3 init=/linuxrc co
39、nsole=ttySAC0"重新啟動,開發(fā)板就可以從flash啟動根文件系統(tǒng)了。注:這里你得在內(nèi)核中添加devfs文件系統(tǒng)的支持,否則內(nèi)核無法找到/dev/mtdblock/3目錄目前flash的文件系統(tǒng)比較多,用的比較多的就是JFFS2文件系統(tǒng)?;贜OR flash上的JFFS2文件系統(tǒng)可以說算是比較成熟了,支持NAND flash的JFFS2也已經(jīng)發(fā)布了。源代碼可以到上面下載。但是在我的測試過程中,在nand flash上掛接的JFFS2文件系統(tǒng)很不穩(wěn)定,經(jīng)常有CRC錯誤產(chǎn)生。特別是進行寫操作的時候,每次復(fù)位都會產(chǎn)生CRC錯誤,可以說支持NAND flash的JFFS2文件系統(tǒng)
40、目前還不成熟。而YAFFS文件系統(tǒng)則是專門針對NAND flash的,源代碼可以到上下載。在測試過程中穩(wěn)定性能比JFFS2文件系統(tǒng)要穩(wěn)定的多,而且mount分區(qū)的時間也比JFFS2文件系統(tǒng)少的多。用JFFS2 mount一個2m的文件系統(tǒng)大約需要1s。下面分別介紹在uclinux下面使用JFFS2和YAFFS文件系統(tǒng)。1、JFFS2到上面下載最新的MTD和JFFS2壓縮包。壓縮包里面還有有關(guān)的內(nèi)核補丁和一些MTD的相關(guān)工具。主要的補丁就是ilookup-.patch,因為最新的MTD驅(qū)動中要用到一個ilookup()函數(shù)。打完補丁、更新了MTD驅(qū)動和JFFS2文件系統(tǒng)之后就開始寫自己nand flash驅(qū)動了。如果不想把JFFS2作為根文件系統(tǒng)的話,還需要修改MTD_BLOCK_MAJOR。驅(qū)動可以參考里面的例子,最簡單的就是參考spia.c。寫驅(qū)動主要工作是定義flash分區(qū)結(jié)構(gòu)、定義flash讀寫地址、寫控制flash的*_hwcontrol()函數(shù)。具體的操作要看所用的nand flash的芯片資料。相對NOR flash來說驅(qū)動要簡單多了。:)改完之后再配置Memory Technology Devices(MTD)下CONFIG_MTD=YCONFIG_MTD_DEBUG=YCONFIG_MTD_DEBUG_VERBOSE=3 CONFIG_MT
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025【合同范本】運輸公司合同范本
- 2025勞動合同中英對照
- 2025學(xué)校游泳池承包合同范文
- 2025雙因素理論在醫(yī)院合同制護士隊伍建設(shè)中的應(yīng)用
- 2025器械配置買賣合同書
- 跨領(lǐng)域?qū)W習(xí)的心態(tài)調(diào)整與興趣培養(yǎng)
- 二零二五年度建筑工程承攬合同與綠色施工技術(shù)培訓(xùn)協(xié)議4篇
- 二零二五年度船舶船員勞務(wù)合同(遠洋航行專項)3篇
- 工業(yè)安全安全生產(chǎn)托管服務(wù)合同范本解析考核試卷
- 個人勞務(wù)合同協(xié)議書
- 廣東省茂名市電白區(qū)2024-2025學(xué)年七年級上學(xué)期期末質(zhì)量監(jiān)測生物學(xué)試卷(含答案)
- 2024版?zhèn)€人私有房屋購買合同
- 2024爆炸物運輸安全保障協(xié)議版B版
- 2025年度軍人軍事秘密保護保密協(xié)議與信息安全風險評估合同3篇
- 《食品與食品》課件
- 讀書分享會《白夜行》
- 光伏工程施工組織設(shè)計
- DB4101-T 121-2024 類家庭社會工作服務(wù)規(guī)范
- 化學(xué)纖維的鑒別與測試方法考核試卷
- 2024-2025學(xué)年全國中學(xué)生天文知識競賽考試題庫(含答案)
- 自動駕駛汽車道路交通安全性探討研究論文
評論
0/150
提交評論