




已阅读5页,还剩78页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux3.6.7在OK6410平台的移植(一)前言 对于我这个新手而言,第一次学习linux,面对庞大的代码,复杂的程序结构和自身对linux知识的严重缺乏,一下子还真不知道该做什么。想想开发板厂家提供的演示程序,其过程是这样:先运行bootloader,bootloade引导linux内核启动,启动后再运行UI程序。对应的程序也有三个分别为u-boot.bin zImage 和rootfs.yaffs2.最初的想法是linux内核启动就是这个zImage,但这个rootfs.yaffs到底是何方妖怪?来这里做甚?初步认为是一个UI(用户界面),后面随着移植的深入,才明白这是一个根文件系统,当然里面包含了UI的应用程序。好吧,一直在linux门外徘徊也不是办法,不管怎样,硬着头皮进去看看再说。于是我决定先编译一个能够启动的linux内核,这个内核对于开发板上一些外部设备的驱动先不去管它,主要达到的目的是能够启动。我当时对“启动”的理解就是能够运行到有一个shell界面。后面对文件系统,根文件系统等等概念稍微理解后才明白“启动”和shell界面还是两个部分。启动包括linux必要的一些初始化,系统的或外部设备的。初始化完成后linux还要通过读取某些文件才能够运行shell程序。而这些文件就包含在这个rootfs.yaffs2中(其实shell程序也包含在这个文件中)。这就涉及到几个概念,文件系统,根文件系统,yaffs2文件系统,yaffs2根文件系统。在网上稍微了解后,对这几个概念有了初步的理解:linux内核启动后需要读取的这些文件需要放在某个地方(SDRAM或者NANDflash或者是宿主机的硬盘上)中。放在SDRAM中的比如有个ramdisk,它是一个设备,相当于在SDRAM中建立了一个“硬盘”,里面就放好了这些运行文件(初步印象,未进一步了解);放在NAND flash的有cramfs或者yaffs等等,而cramfs比较适合用于Nor flash上,yaffs适合Nand flash上;放在宿主机上的有NFS根文件系统。那么,yaffs2文件系统和yaff2根文件系统不是一回事吗?想想以前用过STM32做一些实验时有个FATFS,好像也是文件系统,当时用这个系统从SD卡中读取图片、文档,而SD卡首先必须格式化为FAT32(FAT)类型。yaffs2文件系统就有点像这个fatfs,我们把它包含在linux程序中意味着linux能够采用这种格式去读取一些文件。yaff2根文件系统就是把包含有linux启动必须的脚本和目录的这些文件采用yaffs2这种格式打包,然后放在Nand flash中。简单理解就相当于先把NAND的某个区域“格式化”为yaffs2格式,再把这些文件放在NAND上面。最初的理解就是这样了,那么,接下来我们要做的事就是先“启动”,再运行“shell”。Linux3.6.7在OK6410平台的移植(二)编译配置linux3.6.71.修改主目录下Makefile:ARCH ?= $(SUBARCH)CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:%=%)改为:ARCH ?= armCROSS_COMPILE ?= /usr/local/arm/4.5.1/bin/arm-linux-2.arch/arm/mach-s3c64xx目录下 2.1 拷贝个mach-mini6410.c重命名为mach-ok6410.c并修改其内容: 2.1.1 把所有mini6410字样都替换为ok6410,注意是小写 2.1.2 把所有MINI6410字样都替换为OK6410,注意是大写 2.1.3 修改static struct mtd_partition ok6410_nand_part/*0 = .name = uboot,.size = SZ_1M,.offset = 0,1 = .name = kernel,.size = SZ_2M,.offset = SZ_1M,2 = .name = rootfs,.size = MTDPART_SIZ_FULL,.offset = SZ_1M + SZ_2M,*/改为.name = Bootloader,.offset = 0,.size = (2 * SZ_1M),.mask_flags = MTD_CAP_NANDFLASH,.name = Kernel,.offset = (2 * SZ_1M),.size = (5*SZ_1M) ,.mask_flags = MTD_CAP_NANDFLASH,.name = File System,.offset = (7 * SZ_1M),.size = (200*SZ_1M) ,.name = User,.offset = MTDPART_OFS_APPEND,.size = MTDPART_SIZ_FULL, 2.2修改Kconfig文件,参照Mini6410的配置,加入OK6410如下:config MACH_OK6410bool OK6410select CPU_S3C6410select S3C_DEV_HSMMCselect S3C_DEV_HSMMC1select S3C64XX_SETUP_SDHCIselect S3C_DEV_USB_HOSTselect S3C_DEV_NANDselect S3C_DEV_FBselect S3C64XX_SETUP_FB_24BPPselect SAMSUNG_DEV_ADCselect SAMSUNG_DEV_TShelpMachine support for the FORLINX OK6410 2.3 修改Makefile文件,参照MINI6410,加入OK6410如下:obj-$(CONFIG_MACH_OK6410) += mach-ok6410.o3. 修改arch/arm/tools/mach-types文件,加入OK6410的mach-type,这个必须和U-BOOT中的MACH-TYPE一致,这里选用smdk6410的mach-type:1626。如下:ok6410 MACH_OK6410 OK6410 16264.回到主目录下执行Make menuconfig rootubuntu:/home/my# cd linux-3.6.7/ rootubuntu:/home/my/linux-3.6.7# make menuconfig配置如下: 4.1 先选择Load an Alternate Configuration File,输入arch/arm/configs/s3c6400_defconfig 4.2 选择General Setup,打开Cross_compiler tool perfix,输入 /usr/local/arm/4.5.1/bin/arm-linux- 4.3选择System Type,取消SMDK6400 ,A&W6410,SMDK6410等平台,只选择OK6410 4.4 选择Save an Alternate Configuration File,保存为.config然后退出。5.回到主目录下执行make zImage生成zImage文件6.回到主目录下执行make uImage生成uImage文件 uImage文件是u boot 所支持的文件格式。 6.1 拷贝u-boot-2012.10/tools/目录下的mkimage文件到主机/usr/bin目录下 6.2 修改Entry_Point问题,参考另一篇文章:Linux3.6.7中Make uImage的load address 和 Entry Point相同的问题 6.3 回到主目录下执行make uImage生成uImage文件7. 把uImage烧写到NAND中运行,NAND flash放置程序的结构如下: 0000 0000 -0020 0000 大小2M 放置uboot 0020 0000 -0070 0000 大小5M 放置uImage 0070 0000 -0CF0 0000 大小200M 放置 rootfs 结果如下: NAND read: device 0 offset 0x200000, size 0x5000005242880 bytes read: OK# Booting kernel from Legacy Image at 50008000 .Image Name: Linux-3.6.7Image Type: ARM Linux Kernel Image (uncompressed)Data Size: 1476616 Bytes = 1.4 MiBLoad Address: 50008000Entry Point: 50008040Verifying Checksum . OKXIP Kernel Image . OKOKStarting kernel .Uncompressing Linux. done, booting the kernel.Booting Linux on physical CPU 0Linux version 3.6.7 (rootubuntu) (gcc version 4.5.1 (ctng-1.8.1-FA) ) #1 Mon Dec 3 15:54:25 CST 2012CPU: ARMv6-compatible processor 410fb766 revision 6 (ARMv7), cr=00c5387dCPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cacheMachine: OK6410Memory policy: ECC disabled, Data cache writebackCPU S3C6410 (id 0x36410101)S3C24XX Clocks, Copyright 2004 Simtec Electronicscamera: no parent clock specifiedS3C64XX: PLL settings, A=533000000, M=533000000, E=24000000S3C64XX: HCLK2=266500000, HCLK=133250000, PCLK=66625000 mout_apll: source is fout_apll (1), rate is 533000000mout_epll: source is epll (1), rate is 24000000mout_mpll: source is mpll (1), rate is 533000000usb-bus-host: source is clk_48m (0), rate is 48000000audio-bus: source is mout_epll (0), rate is 24000000audio-bus: source is mout_epll (0), rate is 24000000audio-bus: source is mout_epll (0), rate is 24000000irda-bus: source is mout_epll (0), rate is 24000000camera: no parent clock specifiedCPU: found DTCM0 8k 00000000, not enabledCPU: moved DTCM0 8k to fffe8000, enabledCPU: found DTCM1 8k 00000000, not enabledCPU: moved DTCM1 8k to fffea000, enabledCPU: found ITCM0 8k 00000000, not enabledCPU: moved ITCM0 8k to fffe0000, enabledCPU: found ITCM1 8k 00000000, not enabledCPU: moved ITCM1 8k to fffe2000, enabledBuilt 1 zonelists in Zone order, mobility grouping on. Total pages: 65024Kernel command line: noinitrd root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200PID hash table entries: 1024 (order: 0, 4096 bytes)Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)Memory: 256MB = 256MB totalMemory: 256784k/256784k available, 5360k reserved, 0K highmemVirtual kernel memory layout:vector : 0xffff0000 - 0xffff1000 ( 4 kB)DTCM : 0xfffe8000 - 0xfffec000 ( 16 kB)ITCM : 0xfffe0000 - 0xfffe4000 ( 16 kB)fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)vmalloc : 0xd0800000 - 0xff000000 ( 744 MB)lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)modules : 0xbf000000 - 0xc0000000 ( 16 MB).text : 0xc0008000 - 0xc02818ac (2535 kB).init : 0xc0282000 - 0xc029cb54 ( 107 kB).data : 0xc029e000 - 0xc02c7f20 ( 168 kB).bss : 0xc02c8024 - 0xc02f9064 ( 197 kB)SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1NR_IRQS:246VIC f6000000: id 0x00041192, vendor 0x41VIC f6010000: id 0x00041192, vendor 0x41sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 4294967286msConsole: colour dummy device 80x30Calibrating delay loop. 353.89 BogoMIPS (lpj=1769472)pid_max: default: 32768 minimum: 301Mount-cache hash table entries: 512CPU: Testing write buffer coherency: okSetting up static identity map for 0x501dd240 - 0x501dd29cDMA: preallocated 256 KiB pool for atomic coherent allocationsOK6410: Option string ok6410=0OK6410: selected LCD display is 480x272s3c64xx_dma_init: Registering DMA channelsPL080: IRQ 73, at d0846000, channels 0.8PL080: IRQ 74, at d0848000, channels 8.16S3C6410: Initialising architecturebio: create slab at 0usbcore: registered new interface driver usbfsusbcore: registered new interface driver hubusbcore: registered new device driver usbROMFS MTD (C) 2007 Red Hat, Inc.io scheduler noop registeredio scheduler deadline registeredio scheduler cfq registered (default)start plist testend plist tests3c-fb s3c-fb: window 0: fbSerial: 8250/16550 driver, 4 ports, IRQ sharing disableds3c6400-uart.0: ttySAC0 at MMIO 0x7f005000 (irq = 69) is a S3C6400/10console ttySAC0 enableds3c6400-uart.1: ttySAC1 at MMIO 0x7f005400 (irq = 70) is a S3C6400/10s3c6400-uart.2: ttySAC2 at MMIO 0x7f005800 (irq = 71) is a S3C6400/10s3c6400-uart.3: ttySAC3 at MMIO 0x7f005c00 (irq = 72) is a S3C6400/10brd: module loadedloop: module loadedS3C24XX NAND Driver, (c) 2004 Simtec Electronicss3c24xx-nand s3c6400-nand: Tacls=4, 30ns Twrph0=8 60ns, Twrph1=6 45nss3c24xx-nand s3c6400-nand: System booted from NANDs3c24xx-nand s3c6400-nand: NAND soft ECCNAND device: Manufacturer ID: 0xec, Chip ID: 0xd5 (Samsung NAND 2GiB 3,3V 8-bit), page size: 4096, OOB size: 218No oob scheme defined for oobsize 218- cut here -kernel BUG at drivers/mtd/nand/nand_base.c:3278!Internal error: Oops - BUG: 0 #1 ARMModules linked in:CPU: 0 Not tainted (3.6.7 #1)PC is at nand_scan_tail+0x580/0x67cLR is at nand_scan_tail+0x580/0x67cpc : lr : psr: 60000013sp : cf82fe98 ip : 00000001 fp : cf80a210r10: c0181530 r9 : c0181524 r8 : 00000001r7 : 00000000 r6 : cfa2fa80 r5 : cf80a000 r4 : cf80a210r3 : c02ae464 r2 : c02ae464 r1 : 20000093 r0 : 00000025Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernelControl: 00c5387d Table: 50004008 DAC: 00000017Process swapper (pid: 1, stack limit = 0xcf82e268)Stack: (0xcf82fe98 to 0xcf830000)fe80: cf80a000 cf854300fea0: cfa2fa80 c01816fc 00000000 cfa2f9c0 cf827fc0 00000000 c02f8900 c02f88f8fec0: c02f8900 c02ad1ac c02ad178 c02c48e8 c029c8b8 c0295ce0 00000000 c01658a0fee0: c0165888 c0164634 00000000 c02ad178 c02c48e8 c02ad1ac 00000000 00000049ff00: c0295ce0 c0164844 c02c48e8 cf82ff18 c01647b8 c0162f3c cf803878 cf8238e0ff20: c02c48e8 c02c48e8 c02c1288 cfa2f9c0 00000000 c0163e60 c0250c40 c02c48e8ff40: c02c48e8 c02c8040 cf82e000 00000000 00000049 c0164d68 00000000 c0298b6cff60: c02c8040 cf82e000 00000000 00000049 c0295ce0 c0008704 c02af678 00000000ff80: c026fb28 c0295ce0 00000049 c0035fac c0253f3c c026f698 00000006 00000006ffa0: c02af678 c0298b6c 00000006 c0298b4c c02c8040 00000049 c029c8b8 c0282168ffc0: 00000000 c0282840 00000006 00000006 c0282168 00000000 00000000 c0282758ffe0: c000f10c 00000013 00000000 00000000 00000000 c000f10c ffffffff ffffffff (nand_scan_tail+0x580/0x67c) from (s3c24xx_nand_probe+0x1c0/0x480) (s3c24xx_nand_probe+0x1c0/0x480) from (platform_drv_probe+0x18/0x1c) (platform_drv_probe+0x18/0x1c) from (driver_probe_device+0x7c/0x200) (driver_probe_device+0x7c/0x200) from (_driver_attach+0x8c/0x90) (_driver_attach+0x8c/0x90) from (bus_for_each_dev+0x54/0x80) (bus_for_each_dev+0x54/0x80) from (bus_add_driver+0x170/0x240) (bus_add_driver+0x170/0x240) from (driver_register+0x78/0x144) (driver_register+0x78/0x144) from (do_one_initcall+0x34/0x180) (do_one_initcall+0x34/0x180) from (kernel_init+0xe8/0x1b0) (kernel_init+0xe8/0x1b0) from (kernel_thread_exit+0x0/0x8)Code: 0a000003 e1a01003 e59f00e4 eb017dbe (e7f001f2)- end trace 707c2cde67d9c275 -Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b内核启动了,但由于NAND驱动的问题使得内核初始化没有完成。接下来就是要改NAND驱动了。Linux3.6.7在OK6410平台的移植(三)NAND HWECC 8BIT驱动1.从开发板厂家提供的源码中找到s3c_nand.c,放到drivers/mtd/nand目录下,修改其Makefile,加入:obj-$(CONFIG_MTD_NAND_S3C) += s3c_nand.o 修改Kconfig,为了和原来的NAND驱动区分开来,我把新加的驱动叫S3C64xx S5P64xx,原来的叫做S3C24xx S3C64xx.修改的地方如下:并加入:config MTD_NAND_S3Ctristate NAND support for Samsung S3C64xx S5P64xxdepends on (ARCH_S3C64XX | ARCH_S5P64XX | ARCH_S5PC1XX) & MTD_NANDhelpThis enables the NAND flash controller on the S3CNo board specific support is done by this driver, each boardmust advertise a platform_device for the driver to attach.config MTD_NAND_S3C_DEBUGbool Samsung S3C64xx S5P64xx NAND driver debugdepends on MTD_NAND_S3ChelpEnable debugging of the S3C NAND driverconfig MTD_NAND_S3C_HWECCbool Samsung S3C64xx S5P64xx NAND Hardware ECC 8BITSdepends on MTD_NAND_S3ChelpEnable the use of the S3Cs internal ECC generator whenusing NAND. Early versions of the chip have had problems withincorrect ECC generation, and if using these, the default ofsoftware ECC is preferable.If you lay down a device with the hardware ECC, then you willcurrently not be able to switch to software, as there is noimplementation for ECC method used by the S3C2.arch/arm/plat-samsung/include/plat/regs_nand.h加入寄存器定义:#define S3C_NFCONF S3C2410_NFREG(0x00)#define S3C_NFCONT S3C2410_NFREG(0x04)#define S3C_NFCMMD S3C2410_NFREG(0x08)#define S3C_NFADDR S3C2410_NFREG(0x0c)#define S3C_NFDATA8 S3C2410_NFREG(0x10)#define S3C_NFDATA S3C2410_NFREG(0x10)#define S3C_NFMECCDATA0 S3C2410_NFREG(0x14)#define S3C_NFMECCDATA1 S3C2410_NFREG(0x18)#define S3C_NFSECCDATA S3C2410_NFREG(0x1c)#define S3C_NFSBLK S3C2410_NFREG(0x20)#define S3C_NFEBLK S3C2410_NFREG(0x24)#define S3C_NFSTAT S3C2410_NFREG(0x28)#define S3C_NFMECCERR0 S3C2410_NFREG(0x2c)#define S3C_NFMECCERR1 S3C2410_NFREG(0x30)#define S3C_NFMECC0 S3C2410_NFREG(0x34)#define S3C_NFMECC1 S3C2410_NFREG(0x38)#define S3C_NFSECC S3C2410_NFREG(0x3c)#define S3C_NFMLCBITPT S3C2410_NFREG(0x40)#define S3C_NF8ECCERR0 S3C2410_NFREG(0x44)#define S3C_NF8ECCERR1 S3C2410_NFREG(0x48)#define S3C_NF8ECCERR2 S3C2410_NFREG(0x4c)#define S3C_NFM8ECC0 S3C2410_NFREG(0x50)#define S3C_NFM8ECC1 S3C2410_NFREG(0x54)#define S3C_NFM8ECC2 S3C2410_NFREG(0x58)#define S3C_NFM8ECC3 S3C2410_NFREG(0x5c)#define S3C_NFMLC8BITPT0 S3C2410_NFREG(0x60)#define S3C_NFMLC8BITPT1 S3C2410_NFREG(0x64)#define S3C_NFCONF_NANDBOOT (131)#define S3C_NFCONF_ECCCLKCON (130)#define S3C_NFCONF_ECC_MLC (124)#define S3C_NFCONF_ECC_1BIT (023)#define S3C_NFCONF_ECC_4BIT (223)#define S3C_NFCONF_ECC_8BIT (123)#define S3C_NFCONF_TACLS(x) (x)12)#define S3C_NFCONF_TWRPH0(x) (x)8)#define S3C_NFCONF_TWRPH1(x) (x)4)#define S3C_NFCONF_ADVFLASH (13)#define S3C_NFCONF_PAGESIZE (12)#define S3C_NFCONF_ADDRCYCLE (11)#define S3C_NFCONF_BUSWIDTH (10)#define S3C_NFCONT_ECC_ENC (118)#define S3C_NFCONT_LOCKTGHT (117)#define S3C_NFCONT_LOCKSOFT (116)#define S3C_NFCONT_MECCLOCK (17)#define S3C_NFCONT_SECCLOCK (16)#define S3C_NFCONT_INITMECC (15)#define S3C_NFCONT_INITSECC (14)#define S3C_NFCONT_nFCE1 (12)#define S3C_NFCONT_nFCE0 (11)#define S3C_NFCONT_INITECC (S3C_NFCONT_INITSECC | S3C_NFCONT_INITMECC)#define S3C_NFSTAT_ECCENCDONE (17)#define S3C_NFSTAT_ECCDECDONE (16)#define S3C_NFSTAT_BUSY (10)#define S3C_NFECCERR0_ECCBUSY (1oobsize) 里面加入case 218:chip-ecc.layout = &nand_oob_218;break;找到if (!chip-ecc.strength) pr_warn(Driver must set ecc.strength when using hardware ECCn);BUG();把BUG();屏蔽掉4.主目录下make menuconfig:找到Device Drivers - Memory Technology Device (MTD) support -NAND Device Support - 取消NAND support for Samsung S3C24xx S3C64xx ,选择 NAND support for Samsung S3C64xx S5P64xx保存后退出然后 make uImage,烧写后运行如下:Starting kernel .Uncompressing Linux. done, booting the kernel.Booting Linux on physical CPU 0Linux version 3.6.7 (rootubuntu) (gcc version 4.5.1 (ctng-1.8.1-FA) ) #3 Mon Dec 3 21:15:19 CST 2012CPU: ARMv6-compatible processor 410fb766 revision 6 (ARMv7), cr=00c5387dCPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cacheMachine: OK6410Memory policy: ECC disabled, Data cache writebackCPU S3C6410 (id 0x36410101)S3C24XX Clocks, Copyright 2004 Simtec Electronicscamera: no parent clock specifiedS3C64XX: PLL settings, A=533000000, M=533000000, E=24000000S3C64XX: HCLK2=266500000, HCLK=133250000, PCLK=66625000 mout_apll: source is fout_apll (1), rate is 533000000mout_epll: source is epll (1), rate is 24000000mout_mpll: source is mpll (1), rate is 533000000usb-bus-host: source is clk_48m (0), rate is 48000000audio-bus: source is mout_epll (0), rate is 24000000audio-bus: source is mout_epll (0), rate is 24000000audio-bus: source is mout_epll (0), rate is 24000000irda-bus: source is mout_epll (0), rate is 24000000camera: no parent clock specifiedCPU: found DTCM0 8k 00000000, not enabledCPU: moved DTCM0 8k to fffe8000, enabledCPU: found DTCM1 8k 00000000, not enabledCPU: moved DTCM1 8k to fffea000, enabledCPU: found ITCM0 8k 00000000, not enabledCPU: moved ITCM0 8k to fffe0000, enabledCPU: found ITCM1 8k 00000000, not enabledCPU: moved ITCM1 8k to fffe2000, enabledBuilt 1 zonelists in Zone order, mobility grouping on. Total pages: 65024Kernel command line: noinitrd root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200PID hash table entries: 1024 (order: 0, 4096 bytes)Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)Memory: 256MB = 256MB totalMemory: 256772k/256772k available, 5372k reserved, 0K highmemVirtual kernel memory layout:vector : 0xffff0000 - 0xffff1000 ( 4 kB)DTCM : 0xfffe8000 - 0xfffec000 ( 16 kB)ITCM : 0xfffe0000 - 0xfffe4000 ( 16 kB)fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)vmalloc : 0xd0800000 - 0xff000000 ( 744 MB)lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)modules : 0xbf000000 - 0xc0000000 ( 16 MB).text : 0xc0008000 - 0xc02828ec (2539 kB).
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 紫胶漂白工操作考核试卷及答案
- 新能源绿色信贷政策在2025年执行效果分析及优化策略研究报告
- 制造业绿色供应链管理中的绿色供应链绿色供应链评估技术研究与应用报告
- 2025年文化产业园区公共服务平台建设中的文化产业发展路径研究报告
- 回转窑球团焙烧工工艺考核试卷及答案
- 粮库中控工应急处置考核试卷及答案
- 农村电商发展背景下消费升级与县域市场渠道拓展研究报告
- 淡水珍珠养殖工效率提升考核试卷及答案
- 稳定土拌和设备操作工岗位操作技能考核试卷及答案
- 木焦油工招聘考核试卷及答案
- 景区安全用电管理制度
- 《生物化学》课件-1、绪论
- 大队委选拔笔试题目及答案
- 全科医师基层实践结业考试试题及答案
- 玉环宏博钢材有限公司年产5万吨钢材及配件生产线技改项目环评报告
- 保价保量保供协议书
- 母子亲属房产赠与合同5篇
- 消防中级理论试题及答案
- 2023年江苏省宝应县事业单位公开招聘辅警33名笔试题带答案
- 2025德州市禹城市梁家镇社区工作者考试真题
- 医学科研实验技术的发展与趋势展望
评论
0/150
提交评论