版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七章
BootLoard及根文件系統(tǒng)第一節(jié)嵌入式BootLoard技術(shù)Bootloader的概念BootLoader的操作模式主要任務(wù)與典型結(jié)構(gòu)框架的Bootloader(vivi)BLOB簡(jiǎn)介7.1Bootloader的概念BootLoader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過它,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。通常,BootLoader是嚴(yán)重地依賴于硬件而實(shí)現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個(gè)通用的BootLoader幾乎是不可能的。盡管如此,我們?nèi)匀豢梢詫?duì)BootLoader歸納出一些通用的概念來(lái),以指導(dǎo)用戶特定的BootLoader設(shè)計(jì)與實(shí)現(xiàn)。7.1.1BootLoader所支持的
CPU和嵌入式板通常,每種CPU體系結(jié)構(gòu)都有不同的BootLoader。有些BootLoader也支持多種體系結(jié)構(gòu)的CPU,比如U-Boot就同時(shí)支持ARM體系結(jié)構(gòu)和MIPS體系結(jié)構(gòu)。移植的工作,Bootloader的板級(jí)移植7.1.2BootLoader的安裝媒介系統(tǒng)加電或復(fù)位后,所有的處理器通常都從某個(gè)預(yù)先安排的地址上取指令。比如,ARM在復(fù)位時(shí)從地址0x0取指。嵌入式系統(tǒng)中通常都有某種類型的固態(tài)存儲(chǔ)設(shè)備(比如:ROM、EEPROM或FLASH等)被映射到這個(gè)預(yù)先安排的地址上。因此在系統(tǒng)加電后,處理器將首先執(zhí)行BootLoader程序Bootloader是最先被系統(tǒng)執(zhí)行的程序7.1.3固態(tài)存儲(chǔ)設(shè)備的典型空間分配結(jié)構(gòu)Bootloader參數(shù)系統(tǒng)內(nèi)核根文件系統(tǒng)Flash從低地址到高地址方向7.1.4BootLoader的控制方式主機(jī)和目標(biāo)機(jī)之間一般通過串口建立連接,BootLoader軟件在執(zhí)行時(shí)通常會(huì)通過串口來(lái)進(jìn)行通訊,比如:輸出打印信息到串口,從串口讀取用戶控制字符也可以通過JTAG等其他接口通訊7.2BootLoader的操作模式大多數(shù)BootLoader都包含兩種不同的操作模式:?jiǎn)?dòng)加載模式下載模式最終用戶的角度看,BootLoader的作用就是用來(lái)加載操作系統(tǒng),而并不存在所謂的啟動(dòng)加載模式與下載工作模式的區(qū)別7.2.1啟動(dòng)加載模式啟動(dòng)加載模式,稱為“自主”(Autonomous)模式
BootLoader從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過程并沒有用戶的介入。這種模式是BootLoader的正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時(shí)侯,BootLoader顯然必須工作在這種模式下。7.2.2下載模式在下載模式下,目標(biāo)機(jī)上的BootLoader將通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)下載文件,如:下載內(nèi)核映像和根文件系統(tǒng)映像等從主機(jī)下載的文件通常首先被BootLoader保存到目標(biāo)機(jī)的RAM中,然后再被BootLoader寫到目標(biāo)機(jī)上的FLASH類固態(tài)存儲(chǔ)設(shè)備中。這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用;此外,以后的系統(tǒng)更新也會(huì)使用BootLoader的這種工作模式。工作于這種模式下的BootLoader通常都會(huì)向它的終端用戶提供一個(gè)簡(jiǎn)單的命令行接口。7.2.3BootLoader
與主機(jī)通信串口傳輸,傳輸協(xié)議通常是xmodem/ymodem/zmodem
。程序簡(jiǎn)單,傳輸?shù)乃俣缺容^慢,115200bps通過以太網(wǎng)傳輸是個(gè)好方法。TFTP協(xié)議是最常見的方式
7.3BL的主要任務(wù)與典型結(jié)構(gòu)框架大多數(shù)BootLoader都分為stage1和stage2兩大部分。依賴于處理器體系結(jié)構(gòu)和板級(jí)初始化的代碼,通常都放在stage1中,用匯編言實(shí)現(xiàn)而stage2則通常用C語(yǔ)言來(lái)實(shí)現(xiàn),這樣可以實(shí)現(xiàn)更復(fù)雜的功能,而且代碼會(huì)具有更好的可讀性和可移植性。7.3.1BootLoader的stage1通常包括以下步驟(以執(zhí)行的先后順序):硬件設(shè)備初始化。為加載BootLoader的stage2準(zhǔn)備RAM空間。拷貝BootLoader的stage2到RAM空間中。設(shè)置好堆棧。跳轉(zhuǎn)到stage2的C入口點(diǎn)。
7.3.2BootLoader的stage2(1/2)通常包括以下步驟(以執(zhí)行的先后順序):初始化本階段要使用到的硬件設(shè)備。檢測(cè)系統(tǒng)內(nèi)存映射(memorymap)。將kernel映像和根文件系統(tǒng)映像從flash上讀到RAM空間中。為內(nèi)核設(shè)置啟動(dòng)參數(shù)。調(diào)用內(nèi)核。7.3.2BootLoader的stage2確(2/2)stage2的代碼通常用C語(yǔ)言來(lái)實(shí)現(xiàn),以便于實(shí)現(xiàn)更復(fù)雜的功能和取得更好的代碼可讀性和可移植性。與普通C語(yǔ)言應(yīng)用程序不同的是,在編譯和鏈接bootloader這樣的程序時(shí),我們不能使用glibc
庫(kù)中的任何支持函數(shù)。7.4Linux的Bootloader系統(tǒng)配置、中斷接管、引導(dǎo)裝載內(nèi)核、根文件系統(tǒng)、參數(shù)傳遞、內(nèi)核調(diào)試、內(nèi)核和根文件系統(tǒng)的下載等等常見的uClinux(Linux)的Bootloader:RedbootBlobViviUbootarmBoot…7.4.1vivi
(1/2)UP-NETARM2410-S平臺(tái)的引導(dǎo)程序結(jié)構(gòu)簡(jiǎn)單基本功能:xmodem,F(xiàn)lash(Nand、Nor)壞塊管理保存參數(shù)7.4.1vivi
(2/2)支持Linux內(nèi)核引導(dǎo),可以傳遞內(nèi)核參數(shù)支持分區(qū)(bon)命令行7.4.2引導(dǎo)裝載程序的詳細(xì)設(shè)計(jì)第1階段代碼設(shè)計(jì)第2階段入口代碼設(shè)計(jì)FLASH的驅(qū)動(dòng)設(shè)計(jì)串口驅(qū)動(dòng)設(shè)計(jì)XMODEM協(xié)議的設(shè)計(jì)存儲(chǔ)器空間分布設(shè)計(jì)編譯、連接腳本設(shè)計(jì)網(wǎng)絡(luò)接口(可選)7.4.3閱讀Linux源碼的工具在windows平臺(tái)下SourceInsight(讀C代碼)UltraEdit(讀匯編)7.4.4vivi的啟動(dòng)過程vivi從vivi/arch/s3c2410/head.S開始配置PLL、SDRAM、IO、中斷等查看連接文件vivi/arch/vivi.lds程序定位在0x33f00000ARM指令的特點(diǎn)跳轉(zhuǎn)到第二階段on_the_ram7.4.5vivi的第二階段流程設(shè)置復(fù)位模式板上其他外設(shè)初始化內(nèi)存映射,MMU初始化系統(tǒng)堆(heap)空間初始化MTD設(shè)備(分區(qū))初始化初始化vivi命令進(jìn)入命令行或者引導(dǎo)系統(tǒng)7.4.6vivi的啟動(dòng)流程-裝載主要組件初始化文件系統(tǒng)裝載組件:boot_kernel.c:copy_kernel_img(to,(char*)from,size,media_type);運(yùn)行裝載后文件:boot_kernel.c:call_linux(0,mach_type,to);loaderrambitsflashbitsvivi的內(nèi)存映射7.4.7vivi的命令命令處理在lib/command.c文件中add_commandfind_cmdexeccmdcommand_help1.vivi的命令使用vivi>help
cpu[{cmds}]--Managecpuclocksbon[{cmds}]--Managethebonfilesystemreset--Resetthesystem
param[set|show|save|reset]--set/getparameterpart[add|del|show|reset]--ManageMTDpartitions
mem[{cmds}]--ManageMemoryload{...}--LoadafiletoRAM/Flashgo<addr><a0><a1><a2><a3>--jumpto<addr>dump<addr><length>--Display(hexdump)arangeofmemory.call<addr><a0><a1><a2><a3>--jump_with_returnto<addr>boot[{cmds}]--Bootinglinuxkernel
bootucos[{cmds}]--Bootingucossystemhelp[{cmds}]--Helpabouthelp?2.添加vivi的命令命令初始化流程:main.cinit_builtin_cmdsadd_command添加命令的流程示例:cp–af./arch/s3c2410/smdk2410_test.c./lib/my_test.c
編輯./lib/Config_cmd.inbool'built-inmytestcommand'CONFIG_MY_TEST編輯./lib/Makefileobj-$(CONFIG_TEST)+=my_test.o編輯my_test.c文件init_builtin_cmds中添加命令:externuser_command_t
my_test_cmd;add_command(&my_test_cmd);makemenuconfig
中添加命令的配置[*]built-inmytestcommand7.4.7vivi
bootloader的下載1、loadflashucosx
(注意:不是loadflashvivix)2、使用x-modem協(xié)議下載3、bootucos4、help命令:mytest[{cmds}]--Testfunctions5、mytest命令:vivi>mytestUsage:testsleep--Testsleepmode.(pwbtiseint0)testint--Testexternalinterrupt0testled--TestLEDs7.4.8在跳到內(nèi)核時(shí)要滿足的條件1.CPU寄存器的設(shè)置:
R0=0;
R1=機(jī)器類型ID;關(guān)于MachineTypeNumber,可以參見linux/arch/arm/tools/mach-types。
R2=啟動(dòng)參數(shù)標(biāo)記列表在RAM中起始基地址;2.CPU模式:
·必須禁止中斷(IRQs和FIQs);
·CPU必須為Supervisor的保護(hù)模式;3.Cache和MMU的設(shè)置:
·MMU必須關(guān)閉;
·指令Cache可以打開也可以關(guān)閉;
·數(shù)據(jù)Cache必須關(guān)閉;7.4.9各種模式下的可見寄存器7.4.10linux內(nèi)核的引導(dǎo)lib/boot_kernel.c中的boot_kernel函數(shù)傳遞啟動(dòng)參數(shù)退出vivi,處理cachevoidcall_linux(longa0,longa1,longa2)
函數(shù)負(fù)責(zé)啟動(dòng)7.5BLOB簡(jiǎn)介BootLoaderOBject
縮寫結(jié)構(gòu)簡(jiǎn)單功能完整:xmodem,tftp,flash等支持Linuxkernel引導(dǎo),可以傳遞內(nèi)核參數(shù)支持分區(qū)7.5.1Blob從哪里開始?正常的啟動(dòng)是從src/blob/start.S開始xlli接口,則和平臺(tái)相關(guān)XLLI:LowLevelInitializationxlli的優(yōu)點(diǎn):增強(qiáng)了平臺(tái)的移植性XLLI示例EXPORTxlli_GPIO_init;InitializetheGPIOpinsforthisplatformEXPORTxlli_MFPR_init;InitializetheMultiFunctionPinRegistersEXPORTxlli_MFPR_offset_table;MFPRoffsetloouptableEXPORTxlli_Dmem_initP1;DynamicMemoryControllerInitializationPart#1EXPORTxlli_Rcomp;RunRcompcalibrationEXPORTxlli_DDR_HCAL;HardwaredelaylinecalibrationroutineEXPORTxlli_DDR_SCAL;SoftwaredelaylinecalibrationroutineEXPORTxlli_Dmem_initP2;DynamicMemoryControllerInitializationPart#2EXPORTxlli_Smem_init;StaticMemoryControllerInitializationEXPORTxlli_intr_init;Interruptinitialization(masksallinterrupts)EXPORTxlli_freq_change;FrequencychangesequenceEXPORTxlli_icache_enable;EnableI-Cache,D-Cache,andBranchTargetBufferEXPORTxlli_setPTB;SetthePageTabeBaseaddress(usedforsleepresets)EXPORTxlli_initPageTable;InitializePageTableforMMUunitEXPORTxlli_initPageTable_var;InitializePageTableforMMUunit(baseaddrinr1)EXPORTxlli_MMU_init;InitializetheMemoryManagementUnitEXPORTxlli_goVirtual;Makethetransitionfromphysicaladdresstovirtualaddress從XLLI接口啟動(dòng)src/blob/xlli/mainstone/start.s區(qū)分上電復(fù)位和休眠IO初始化內(nèi)存初始化配置鎖頻環(huán)相關(guān)include文件xlli_Mainstone_defs.incxlli_Bulverde_defs.inc標(biāo)準(zhǔn)的Blob啟動(dòng)從src/blob/start-pxa.S開始IO初始化內(nèi)存初始化normal_boot完成的工作normal_boot在src/blob/start.s中定義復(fù)制blob后半部到內(nèi)存為什么要復(fù)制?Blob的兩個(gè)連接配置腳本start-ld-script,啟動(dòng)部分的定位。入口是_startrest-ld-script,后半部的定位。入口是_trampoline_trampoline負(fù)責(zé)初始化C代碼空間,跳轉(zhuǎn)到C代碼中運(yùn)行Blob的C代碼中的初始化工作init_subsystems完成的任務(wù),初始化initlist中的函數(shù)——驅(qū)動(dòng)程序初始化的好地方Blob中串口驅(qū)動(dòng)程序結(jié)構(gòu)src/blob/mainstone.cserial_driver_t
pxa_serial_driver={ init: pxa_serial_init, read: pxa_serial_read, write: pxa_serial_write, poll: pxa_serial_poll,
flush_input: pxa_serial_flush_input,
flush_output: pxa_serial_flush_output};Blob的存儲(chǔ)器區(qū)域分配FLASHSDRAM大小Blob0-256KB0xA0020000256KB參數(shù)256-512KB0xA01ff000256KB內(nèi)核512KB-2MB0xA02000001.5MB根文件系統(tǒng)2-16MB0xA040000014MBmain.c流程圖Blob中添加命令使用__commandlist宏#define__command__attribute__((unused,__section__(".commandlist")))#define__commandlist(fn,nm,hlp)\staticcommandlist_t__command_##fn__command={\ magic:COMMAND_MAGIC,\ name:nm,\ help:hlp,\ callback:fn}舉例__commandlist(Reload,"reload",reloadhelp);被替換為:staticcommandlist_t__command_Reload__attribute__((unused,__section__(".commandlist")))={ magic:COMMAND_MAGIC, name:“reload”, help:reloadhelp, callback:Reload}第二節(jié)
構(gòu)建嵌入式Linux根文件系統(tǒng)Linux根文件系統(tǒng)介紹根文件系統(tǒng)的目錄結(jié)構(gòu)使用Busybox生成工具集根文件系統(tǒng)啟動(dòng)流程根文件系統(tǒng)燒寫流程Linux根文件系統(tǒng)介紹內(nèi)核啟動(dòng)的最后步驟--掛載根文件系統(tǒng),包含:Init進(jìn)程Shell文件系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)等等的工具集系統(tǒng)配置文件鏈接庫(kù)Linux根文件系統(tǒng)目錄結(jié)構(gòu)bin 必要的用戶命令(二進(jìn)制文件)*boot
引導(dǎo)加載程序使用的靜態(tài)文件dev
設(shè)備文件及其他特殊文件etc系統(tǒng)配置文件*home用戶主目錄lib必要的鏈接庫(kù),例如:C鏈接庫(kù)、內(nèi)核模塊mnt
臨時(shí)掛載的文件系統(tǒng)的掛載點(diǎn)“*”目錄在嵌入式Linux上為可選的。Linux根文件系統(tǒng)目錄結(jié)構(gòu)*opt附加軟件的安裝目錄proc提供內(nèi)核和進(jìn)程信息的proc文件系統(tǒng)*rootroot用戶主目錄sbin
必要的系統(tǒng)管理員命令tmp
臨時(shí)文件目錄usr
大多數(shù)用戶使用的應(yīng)用程序和文件目錄var
監(jiān)控程序和工具程序存放的可變數(shù)據(jù)Linux根文件系統(tǒng)目錄結(jié)構(gòu)/dev目錄設(shè)備文件及其他特殊文件當(dāng)配置內(nèi)核支持設(shè)備文件系統(tǒng)devfs時(shí),此目錄中的設(shè)備節(jié)點(diǎn)由內(nèi)核和驅(qū)動(dòng)程序自動(dòng)創(chuàng)建Linux根文件系統(tǒng)目錄結(jié)構(gòu)/lib目錄存放系統(tǒng)必要的動(dòng)態(tài)鏈接庫(kù),支持系統(tǒng)的正常啟動(dòng):ld 動(dòng)態(tài)鏈接器 必要libc
主C鏈接器進(jìn)程 必要libm
數(shù)學(xué)進(jìn)程 數(shù)學(xué)函數(shù)需要用到libcrypt
密碼學(xué)進(jìn)程 多數(shù)涉及認(rèn)證的應(yīng)用程序需要使用完整說明參見glibc使用手冊(cè)Linux根文件系統(tǒng)目錄結(jié)構(gòu)/etc目錄--系統(tǒng)配置文件fstab
掛載文件系統(tǒng)的配置文件passwd Password文件inetd.conf
Inetd守護(hù)進(jìn)程的配置文件group Group文件init.d/rcS
缺省的sysinit
腳本使用Busybox生成工具集很小的應(yīng)用程序提供完整的工具集的功能Init進(jìn)程Shell文件系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)等等的工具集http:///Busybox的配置和交叉編譯(1)在http:///downloads/
下載Busybox:busybox-1.1.0.tar.bz2解壓后,進(jìn)入配置菜單:
makemenuconfigBusybox的配置和交叉編譯(2)Busybox的配置和交叉編譯(3)選擇Busybox的編譯方式:BuildOptions BuildBusyBoxasastaticbinary(nosharedlibs)
缺省配置為使用鏈接庫(kù)Busybox的配置和交叉編譯(3)配置交叉編譯器:BuildOptions[*]DoyouwanttobuildBusyBoxwithaCrossCompiler?(/home/wbn/arm2410/tools/usr/local/arm/3.4.1/bin/arm-linux-)CrossCompilerprefix安裝路徑:InstallationOptions
(./_install)BusyBoxinstallationprefixBusybox的配置和交叉編譯(4)配置其他工具集:ArchivalUtilitiesCoreutilsConsoleUtilitiesDebian
UtilitieEditorsFindingUtilitiesInitUtilitiesLogin/PasswordManagementUtilitiesMiscellaneousUtilitiesLinuxModuleUtilitiesNetworkingUtilitiesProcessUtilitiesShellsSystemLoggingUtilitiesLinuxSystemUtilitiesBusybox的配置和交叉編譯(4)配置其他工具集:InitUtilities[*]init[*]Supportreadinganinittabfile?[*]Supportrunninginitfromwithinaninitrd?編譯后
/bin
/linuxrc->bin/busybox
/sbinBusybox的配置和交叉編譯(4)配置其他工具集:ArchivalUtilities
工具:tar、zip、unzipCoreutils
常用命令:basenamecatchgrp
chmoddatedd
dfechoenv
ln
ls
mkdir
mknod
mv
pwd
rm
rmdirsleepsortsyncwc
whoami等等Editors
編輯命令:viawk
sed等FindingUtilities
查找命令:findgrep
xargsBusybox的配置和交叉編譯(4)配置其他工具集:
Login/PasswordManagementUtilities Login:gettyloginpasswd NetworkingUtilities
網(wǎng)絡(luò)命令集:hostnameifconfig
inetd
netstatpingroute ProcessUtilities
進(jìn)程命令:freeps
sysctltop Shells shell工具:ash等
SystemLoggingUtilities
日志工具:syslogd
klogd
LinuxSystemUtilities
系統(tǒng)工具:dmesg
fdisk
getoptmoremountumountBusybox的配置和交叉編譯(5)編譯Busybox:
#makedep
#make
#makeinstallBusybox的配置和交叉編譯(6)編譯生成的目錄結(jié)構(gòu):/bin/linuxrc/sbin/usr /usr/bin /usr/sbin構(gòu)建根文件系統(tǒng)在$root/etc目錄下,建立配置文件:init.d/rcS
缺省的sysinit
腳本[/etc]cat
init.d/rcS#!/bin/sh/bin/mount-a/bin/mount-n-tramfs
ramfs/var/bin/mount-n-tramfs
ramfs/root/bin/mkdir/var/tmp/bin/mkdir/var/modules/bin/mkdir/var/run/bin/mkdir/var/logexec/usr/etc/rc.local構(gòu)建根文件系統(tǒng)在$root/etc目錄下,建立配置文件:fstab
掛載文件系統(tǒng)的配置文件[/etc]cat
fstabnone/procprocdefaults00none/dev/ptsdevptsmode=062200tmpfs/dev/shm
tmpfsdefaults00/dev/mtdblock/1/mnt/yaffs
yaffsdefaults11/dev/scsi/host0/bus0/target0/lun0/part1/mnt/udisk
vfat
noauto,codepage=936,iocharset=cp93600/dev/ide/host0/bus0/target0/lun0/part1/mnt/hdap1vfat
noauto,codepage=936,iocharset=cp93600/dev/ide/host0/bus0/target0/lun0/part2/mnt/hdap2vfat
noauto,codepage=936,iocharset=cp93600/dev/ide/host0/bus0/target0/lun0/part3/mnt/hdap3vfat
noauto,codepage=936,iocharset=cp93600/dev/ide/host0/bus0/target1/lun0/part1/mnt/hdbp1vfat
noauto,codepage=936,iocharset=cp93600/dev/mmc/disc0/part1/mnt/sdcard
vfat
noauto,codepage=936,iocharset=cp93600構(gòu)建根文件系統(tǒng)在$root/etc目錄下,建立配置文件:inetd.conf
services
protocols
Inetd守護(hù)進(jìn)程的配置文件[/etc]cat
inetd.conf#<service_name><sock_type><proto><flags><user><server_path><args>ftpstreamtcp
nowaitroot/sbin/ftpd
ftpdtelnetstreamtcp
nowaitroot/sbin/in.telnetd
in.telnetdinetd.conf只能使用/etc/services中限定的服務(wù)inetd.conf只能使用/etc/protocols中限定的協(xié)議構(gòu)建根文件系統(tǒng)在$root/etc目錄下,建立配置文件:profile:ash的配置腳本[/etc]catprofile#/etc/profile:executedbybash(1)forloginsh
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 胎記的臨床護(hù)理
- 兒童學(xué)習(xí)能力障礙的健康宣教
- 《機(jī)械制造基礎(chǔ)》課件-05篇 第八單元 超精密加工
- 《機(jī)械設(shè)計(jì)基礎(chǔ)》課件-第5章
- 《計(jì)算機(jī)表格處理》課件
- 【培訓(xùn)課件】青果園 萬(wàn)名大學(xué)生創(chuàng)意創(chuàng)業(yè)園區(qū)項(xiàng)目介紹
- 《認(rèn)識(shí)HS商品分類》課件
- 社區(qū)戶外旅游組織計(jì)劃
- 生物學(xué)課程的擴(kuò)展與拓展計(jì)劃
- 提升師生互動(dòng)頻率的計(jì)劃
- 煤礦區(qū)隊(duì)安全風(fēng)險(xiǎn)管控日分析制度辦法
- spc與cpk的基礎(chǔ)認(rèn)識(shí)1
- (完整版)霍夫斯塔德文化差異五個(gè)維度
- 《地形對(duì)聚落及交通線路分布的影響》教學(xué)設(shè)計(jì)
- 《中國(guó)旅游地理》新課程標(biāo)準(zhǔn)
- seagull船員英語(yǔ)STCW甲板操作級(jí)答案
- 色彩心理教案(共6頁(yè))
- 監(jiān)理資料移交回執(zhí)單
- 液體硅酸鈉樣品測(cè)定
- 暴聾(突發(fā)性耳聾)中醫(yī)臨床路徑
- 地磅(汽車衡)基礎(chǔ)預(yù)算書
評(píng)論
0/150
提交評(píng)論