




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
25第1章 嵌入式系统开发环境简介第1章 嵌入式系统开发环境简介1.1 ARM SDT 2.5开发环境简介一、实验目的熟悉ARM SDT 2.5开发环境,学会ARM并行口仿真器的使用。使用SDT编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。二、实验内容本次实验使用ARM SDT 2.5集成开发环境。新建一个简单的工程文件,并编译这个工程文件。学习ARM并行口仿真器的使用和开发环境的设置。下载已经编译好的文件到嵌入式控制器中运行。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。三、预备知识C语言的基础知识、程序调试的基础知识和方法。四、实验设备及工具(包括软件调试工具)硬件:ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、Pentium100以上PC机。软件:PC机操作系统Windows 98、Windows 2000或Windows XP,ARM SDT 2.51或ADS 1.2集成开发环境,仿真器驱动程序、超级终端通信程序。五、实验步骤1建立工程文件(1)运行ARM SDT 2.5集成开发环境(ARM Project Manager)。选择File|New命令,在对话框中选择Project选项卡,单击“确定”按钮后弹出New Project对话框,如图1-1所示,Type为工程模板类型,这里选择ARM Executable Image,然后输入工程名和所在路径。单击OK按钮后新建一个工程文件。(2)在新建的工程中,如图1-2所示,选中工程树的“根部”。使用命令Project|Tool Configuration for work1.apj| = armasm|Set,对整个工程的汇编进行设置。 图1-1 新建一个工程文件 图1-2 对整个工程的汇编进行设置(3)因为开发板上的嵌入式处理器ARM7TDMI没有浮点处理器,所以,如图1-3所示,在弹出的对话框中设置Floating Point Processor为none,并保持其他的设置不变。(4)选中工程树的“根部”,通过Project|Tool Configuration for work1.apj|asmlink|Set命令,对整个工程的连接方式进行设置。(5)在弹出的对话框中,打开Entry and Base选项卡,如图1-4所示,设置连接的Read-Only(只读)和Read-Write(读写)地址。地址0x0c080000是开发板上SDRAM的真实地址,是由系统的硬件决定的;0x0c200000指的是系统可读写的内存地址。也就是说,在0x0c0800000x0c1fffff之间是只读区域,存放程序的代码段,从0x0c200000开始是程序的数据段。 图1-3 设置Floating Point Processor为none 图1-4 设置连接的地址提示:用户可以修改这两个数值来决定程序存储区的大小和数据存储区的大小。但应注意SDRAM为8MB,地址范围为0x0c0000000x0c7fffff。其中0x0c080000之前的空间是留给LCD显示缓存区的。(6)打开Linker Configuration对话框中的ImageLayout选项卡,如图1-5所示,设置程序的入口模块。指定在生成的代码中,程序是从44binit.s开始运行的,这里填写44binit.s对应的目标文件44binit.o,Init是该汇编文件中的代码段名字。(7)选择Project|Edit Project Template命令,系统弹出Project Template Editor对话框。在该对话框中可以看到一系列步骤名称。SDT在处理工程文件时是按这些步骤完成的,每个步骤设定了对应的操作,以及该操作的输入、输出和命令行等。读者可以选择已有的步骤,单击Edit按钮打开该步骤设置对话框,观察每个步骤所实现的功能。例如:步骤Compile是把.c和.h文件编译成.o文件的,而步骤Link则就是把.o文件和 .alf文件连接生成.axf文件的。在这些步骤中的设置建议保留默认值。但这里缺少一个从.axf文件生成所需的.bin文件的步骤,所以使用New按钮,为编译器新建一个步骤,如图1-6所示,取名为RomImage。 图1-5 设置程序的入口模块 图1-6 为编译器新建一个步骤(8)按照如图1-7的内容设置步骤RomImage的内容。使编译器编译的时候可以生成system.bin文件,这就是系统的可执行文件。可以看出该操作的输入是当前工程的.axf文件,所在位置是Image,输出是system.bin,位置在Eprom,操作由fromelf组件完成,命令行是fromelf -nozeropad .axf -bin system.bin。这里的Image和Eprom可以在设置好后的工程窗口中看到。步骤名称和输出位置名称并不要求一致。提示:在文本框中输入文字后必须单击Add按钮添加到上方列表框中,否则单击OK按钮后该设置信息丢失。(9)选择Project|Edit Variables for work1.apj命令,系统弹出Edit Variables for work1.apj对话框。列表框中是该工程的一些变量,读者也可以选择某个变量名,在Value文本框中可以看到其值。$ProjectName变量设置的是工程名,可以和工程文件的文件名不一致,Image下的.axf文件将以此命名。这里注意一下变量config$armlink的值,应该是-info.total#total -ro-base#0xc080000 -rw-base#0xc200000 -first#44binit.o(init),和前面对armlink的设置一致。而变量config$asm的值是-fpu#none。这里需要将build_target变量的值设为system.bin,编译器在生成此文件后步骤执行完毕,如图1-8所示。提示:选择某个变量并更改其值后,必须单击Apply按钮使其生效,如果更改完毕后又选择其他变量,则该设置将无效。 图1-7 设置RomImage的内容 图1-8 设置build_target变量(10)选中工程树中的DebugRel子树,按Delete键删除。提示:在系统工程树中Debug子树是应用程序的调试版本,在生成的目标代码中,包含了系统的调试信息。Release子树是应用程序的发行版本,生成的代码中不包括调试信息,而且编译器还针对速度和代码的大小进行优化。DebugRel子树是一个折衷版本,通常用不到,所以,在这里删除。(11)回到Project Template Editor对话框中,单击Edit Detail按钮,在弹出的对话框中可以重新命名模板,如图1-9所示。重新命名模板后可以保存该工程,并把该空工程(还没有添加工程文件)复制到SDT安装路径下的Template目录下,下次新建工程时可以在New Project对话框中的Type列表框中看到该模板,使用该模板无需重新设置工程参数。(12)至此,工程文件设置完毕。包括对armlink和armasm的参数设置,新建生成system.bin文件的编译步骤和对应变量。建议将该设置后的工程文件作为模板保存,以方便日后使用。同时注意上文关于操作的提示,以前多数用户建立模板失败的原因可能就在于操作上的失误。(13)把光盘中SDT实验所在目录中的“1-开发环境实验”下的STARTUP目录复制到工程路径下。如图1-10所示,选中工程树中Debug子树的Sources选项。通过Project|Add Files to Sources命令,把STARTUP目录下的*.S和*.c文件加入到工程中。 图1-9 重新命名模板 图1-10 加入工程的源文件(14)选中工程树中Debug子树的IncludedFiles选项。通过Project|Add Files to IncludedFiles命令,把STARTUP目录下的所有*.h文件都加入工程中。(15)在需要用到库文件的工程中,选中工程树中Debug子树的Libraries选项。通过Project|Add Files to Libraries命令,把*.ALF库文件加入工程中。(16)双击工程树中Debug子树的Sources选项中的main.c,打开main.c文件。下面是Main()函数中的内容,程序向LCD和串口输出字符串“Hello world!”。int Main(int argc, char *argv)ARMTargetInit();LCD_Init();LCD_ChangeMode(DspTxtMode); /转换LCD显示模式为文本显示模式LCD_Cls(); /文本模式下清屏命令LCD_printf(Hello world!n); /向液晶屏输出Uart_Printf(nHello world!n); /向串口输出 while(1);读者可以分别打开其他的源文件,了解该系统运行的基本知识。这个程序没有用到操作系统,只是简单地说明工程的开发过程,带有操作系统的实验将在“C/OS-II在ARM处理器上的移植及编译”实验之后出现。2进行程序的在线仿真、调试(1)回到ARM Project Manager对话框,选中工程树中的Debug子树,通过Project |Build work1.apj“Debug”命令(或者工具栏中的相应按钮)编译整个工程。(2)把ARM的JTAG仿真器连接到PC机的并行口和开发板上,打开开发板的电源,运行仿真器的驱动程序UarmJTAG.exe。(3)使用Project|Debug work1.apj“Debug”命令(或者工具栏中的相应按钮)启动ARM Debugger软件调试程序。(4)在ARM Debugger中,通过Options|Configure Debugger命令设置仿真器。如 图1-11所示,在弹出的对话框中,设置Target Environment为Remote_A。(5)单击Configure按钮,按照如图1-12所示,设置仿真器。本机的IP地址 图1-11 设置仿真器 图1-12 设置仿真器(6)出现下面的提示信息以后,单击“是”按钮,ARM Debugger开始通过仿真器装载程序,如图1-13所示。 图1-13 装载程序注意:第(4)、(5)步设置好后,以后再调试的时候直接进行到第(6)步,不需要再设置。当不能进行第(6)步时,重复第(4)和第(5)步。(7)装载完毕以后,通过Execute|Go命令(或者工具栏中的相应按钮)运行程序。(8)当程序运行时,可以使用Execute|Stop命令(或者工具栏中的相应按钮)暂停程序的运行。如图1-14所示,在Execute窗口中将显示出程序暂停的位置。图1-14 显示程序暂停的位置(9)通过Execute|Step命令(或者工具栏中的相应按钮)可以单步运行程序。也可以使用Step In、Step Out命令进入或者跳出函数的调用。(10)在程序停止运行的时候,选择View|Source Files命令,可以打开如图1-15所示的源程序列表窗口,双击列表中的文件名可以查看相应的源文件。注意:查看源文件时,有时可能会出现看不到自己的源文件的情况,这时要将工程重新强制编译一下。(11)在源文件列表中打开main.c文件。选择源文件中的某一行,单击鼠标右键,如图1-16所示,用Toggle Breakpoint命令可以设置断点,使程序运行到这里停下来。(12)使用在View菜单下的Registers、Variables和Memory命令可以查看工作寄存器或者内存变量。读者可以逐一地尝试,为以后调试程序打下基础。 图1-15 查看源文件 图1-16 设置断点1.2 ADS 1.2开发环境简介一、实验目的熟悉ADS 1.2开发环境,学会ARM仿真器的使用。使用ADS编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。二、实验内容本次实验配置ADS集成开发环境,新建一个简单的工程文件,并编译这个工程文件。学习ARM仿真器的使用和开发环境的设置。下载已经编译好的文件到嵌入式控制器中运行。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。三、预备知识C语言的基础知识、程序调试的基础知识和方法。四、实验设备及工具(包括软件调试工具)硬件:ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、Pentium100以上PC机、串口线。软件:PC机操作系统Windows 98、Windows 2000或Windows XP,ARM SDT 2.51或ADS 1.2集成开发环境,仿真器驱动程序,超级终端通信程序。五、实验步骤1配置ADS集成开发环境(1)运行ADS 1.2集成开发环境(CodeWarrior for ARM Developer Suite)。选择FileNew命令,在对话框中选择Project选项卡,如图1-17所示,新建一个工程文件。其中示例的工程名为Exp6.mcp。单击Set按钮可为该工程选择路径,如图1-18所示,选中Create Folder复选框后将以图1-17中的Project name或图1-18中的文件名作为创建目录的名称,这样可以将所有与该工程相关的文件放到该工程目录下,便于管理工程。注意:在图1-17工程模板列表中选择ARM Executable Image通用模板。随后将一步一步地把它配置成针对ARM3000开发板的模板44B0 ARM Executable Image,并把它复制到ADS1.2安装目录下的Stationery目录中(所有的工程模板都在此目录下)。以后新建工程时,在工程模板列表中直接选中44B0 ARM Executable Image模板选项即可,不必每次重新配置模板。 图1-17 新建工程 图1-18 保存工程(2)在新建的工程中,如图1-19所示,选择Debug版本,使用Edit|Debug Settings命令对Debug版本进行参数设置。图1-19 选择版本(3)在Debug Settings对话框中选择Target Settings选项,如图1-20所示。在Post-linker列表框中选择ARM fromELF,单击右下角的Apply按钮使其有效。图1-20 选择Target Settings(4)在Debug Settings对话框中选择ARM Linker选项,如图1-21所示。在Output选项卡的Linktype选项组中有3种类型的连接方式,常用的是Simple和Scattered两种。Simple是一种简单设置,如果程序需要用到标准C库函数,则选中Scattered单选按钮进行连接地址的设置。若用不到标准C库函数,则选中Simple单选按钮,并按照下面的第(5)、(8)、(9)步进行设置。若用到标准C库函数,则选中Scattered单选按钮,并按照下面的第(6)、(7)、(9)步进行设置。(5)选中Simple单选按钮,如图1-21所示。在Simple image选项组中设置连接的ReadOnly(只读)和Read-Write(读写)地址。地址0x0c080000是开发板上SDRAM的真实地址,是由系统的硬件决定的;0x0c200000指的是系统可读写的内存地址。也就是说,在0x0c0800000x0c1fffff之间是只读区域,存放程序的代码段,在0x0c200000开始是程序的数据段。图1-21 设置连接地址范围(6)选中Scattered单选按钮,如图1-22所示。标准C库函数中如果使用malloc及其相关的函数,需要使用系统的堆(Heap)空间,可以通过scatter文件来描述系统Heap段的位置。针对44B0开发板,把程序的入口定位在0xc080000,并定义Scatter文件为scat_ram.scf。在图1-22中选中Linktype选项卡中的Scattered单选按钮,输入Scatter文件名scat_ram.scf;然后切换到Options选项卡,在Image Entry Point文本框中输入0xc080000。也可以在图1-22的Equivalent Command Line文本框中直接输入-entry 0xc080000 -scatter scat_ram.scf进行上述设置。图1-22 通过scatter文件设置连接地址提示: 程序移植到ADS后,首先执行用汇编语言写的初始化代码,包括中断向量和内存空间的初始化。在该段代码中使用IMPORT_ _main;(注意main前面是两个半字下划线)B _ _main进行系统内部的标准C函数初始化,然后调用用户在C语言中定义的main()函数(注意:两个main都是小写),并且在嵌入式应用中用户在C语言中定义的main函数中不能有参数(int main(void))。 不能有系统定义的软中断,在汇编语言中可以使用IMPORT_ _use_no_semihosting_swi来检测,在C语言中使用#pragma import(_ _use_no_semihosting_swi) / ensure no functions that use semihosting scatter文件的内容如下,创建了一个RAM_LOAD的程序和数据的装载区域,起始地址0xc080000。RAM_LOAD 0xc080000 RAM_EXEC 0xc080000 44binit.o (init, +First) * (+RO) RAM 0x0c200000 * (+RW,+ZI) HEAP +0 UNINIT heap.o (+ZI) STACKS 0xc7ff000 UNINIT stack.o (+ZI) ISR_STARTADDRESS 0xc7fff00 ;SDRAM bottom isr_address.o (+ZI) 在图1-23中说明了这个装载区域的划分。图1-23 程序和数据装载区域的划分 定义retarget.c函数,重新定位标准C库中stdio的一些相关函数。主要有:struct _FILE int handle; /* Add whatever you need here */;FILE _stdout; /文件的定义int fputc(int ch, FILE *f) /fputc函数int ferror(FILE *f) /ferror函数void _sys_exit(int return_code) /系统退出函数void _ttywrch(int ch)_value_in_regs struct _initial_stackheap _user_initial_stackheap(unsigned R0, unsigned SP, unsigned R2, unsigned SL)/用户的堆空间和栈空间函数具体定义,可以参考init/retarget.co(7)接第(6)步,在第(4)步中如果不选择简单的连接地址设置,则需按图1-24所示设置C编译器。在Debug Settings对话框中选择ARM C Compiler选项,在ATPCS选项卡中选择ARM/Thumb interworki复选框,或者在命令行中添加-apcs /interwork。图1-24 设置ARM C Compiler(8)接第(5)步,若在第(4)步中选择简单的地址连接设置,在Debug Settings对话框中选择ARM Linker选项,如图1-25所示。单击Factory Settings按钮,出现Layout选项卡(在对Release版本进行设置时,不用单击Factory Settings按钮)。在Layout选项卡的Place at beginning of image选项组中设置程序的入口模块。指定在生成的代码中,程序是从44binit.s开始运行的。Object/Symbol/项设为44binit.o,Section项设为init。(9)在Debug Settings对话框中选择ARM fromELF选项,如图1-26所示。在Output file name框中设置输出文件名为system.bin,这就是要下载到开发板的嵌入式应用程序文件。(10)回到如图1-19所示的工程窗口中,选择Release版本,使用Edit|Release Settings命令对Release版本进行参数设置。(11)参照第(3)第(9)步在Release Settings对话框中设置Release版本的Post-linker、连接地址范围、入口模块和输出文件。图1-25 设置入口模块图1-26 设置输出文件名(12)回到如图1-19所示的工程窗口中,选择Targets选项卡,如图1-27所示。选中DebugRel版本,按Del键将其删除。(13)设置完成后,可以将该新建的空工程文件作为模板保存以便以后使用,将工程文件名改为44B0 ARM Executable.mcp。然后在ADS 1.2软件安装目录下的Stationery目录下新建名为44B0 ARM Executable Image的模板目录,再将刚设置完的44B0 ARM Executable.mcp工程模板文件存放到该目录下即可。这样以后新建工程的时候,如图1-28所示,就能看到以44B0 ARM Executable Image为名字的模板了。提示:(1)建议用户直接将光盘ADS实验下的TemplateADSStationery目录中的44B0 ARM Executable Image子目录复制到ADS 1.2安装目录下的Stationery目录中,这样也能在图1-17所示的新建工程对话框中看到这个模板,其中有已经设置好的针对本开发板的参数。这个模板设置为Scattered版本。(2)如果用户原来已安装了ARM SDT软件,再安装ADS 1.2后可能导致ARM SDT不能正常使用,需要用户更改系统环境变量:ARMINC设置为%ARMSDTPATH% INCLUDE,ARMLIB设置为%ARMSDTPATH%LIB,其中%ARMSDTPATH%指ARM SDT的安装目录。 图1-27 删除DebugRel版本 图1-28 显示44B0 ARM模板2建立工程文件配置好ARM ADS针对UP-ARM3000的开发环境后,可以执行Project|Add Files命令把和工程相关的所有文件加入到工程中。ADS 1.2不能自动按文件类别对这些文件进行分类,若需要,可以执行Project|Create Group命令创建文件组,然后分别将不同类的文件加入到不同的组,以方便管理。如图1-29所示。更为简单的办法是,在新建工程时ADS创建了和工程同名的目录,在该目录下按类别创建子目录并存放工程文件。选中所有目录拖动到任务栏上的ADS任务条上,中途不要松开鼠标。当ADS窗口恢复后再拖动到工程文件窗口,并松开鼠标。这样ADS将以子目录名建立同名文件组并以此对文件分类。图1-29 加入工程文件这里把ADS版中开发环境实验中的init和STARTUP两个目录复制到新建的工程目录下,然后选中这两个目录,拖动到任务栏上的ADS任务条上,中途不要松开鼠标。当ADS窗口恢复后再拖动到工程文件窗口,并松开鼠标。这样ADS将以init和STARTUP目录名建立同名文件组并以此对文件分类。双击图1-29中的Main.c打开该文件,可以看到Main()函数的内容如下:int main(void) ARMTargetInit(); /开发版初始化LCD_Init();LCD_ChangeMode(DspTxtMode); /转换LCD显示模式为文本显示模式LCD_Cls(); /文本模式下清屏命令LCD_printf(Hello world!n); /向液晶屏输出Uart_Printf(nHello world!n); /向串口输出 while(1);提示:读者通过查看其他源文件的内容以对系统运行有所了解,可以发现ADS的文本编辑器已经有了很大的改善,文本按语法分颜色显示。读者可以根据喜好在Edit菜单下的Preferences窗口中进行设置。3进行程序的在线仿真、调试(1)回到图1-19所示的工程窗口选中Debug版本,执行Project|Make命令对工程进行编译连接。在出现的错误/警告窗口中选择某错误/警告信息,ADS会自动打开相应源文件并用箭头指向出错的文本行。如果某个源文件被修改,重新编译时ADS会自动同步各文件的日期信息。(2)在ADS中执行Project|Debug命令启动ADS 1.2的调试工具AXD。(3)在AXD中执行Options|Configure Target命令对AXD进行设置,如图1-30所示。选择ADP(即远程调试),单击Configure按钮进一步设置具体参数,如图1-31所示。图1-30 设置AXD参数(4)在图1-31中单击Select按钮选择远程连接为ARM ethernet driver,单击Configure按钮输入仿真器的IP地址。如果使用的是并行口仿真器,输入127.0.0.1即可。图1-31 设置远程连接(5)等待程序装载完毕以后,通过Execute|Go以及Execute|Stop命令(或者工具栏中的相应按钮)运行或暂停程序。程序暂停后在窗口中将显示出其暂停的位置。(6)通过Execute|Step命令(或者工具栏中的相应按钮)可以单步运行程序,也可以使用Step In、Step Out命令进入或者跳出函数的调用。使用Run To Cursor命令可将程序运行到光标位置。(7)程序停止后可以通过Processor Views|Sources命令查看源文件,并可在适当位置按F9键设置断点。(8)使用在Processor View菜单下的Registers、Variables和Memory命令可以查看工作寄存器或者内存变量。读者可以逐一地尝试,为以后调试程序打下基础。提示:进行调试时在ADS中必须选择当前工程的Debug版本,如果选择Release版本则无法正常调试程序。但在调试通过后就必须选择Release版本进行编译连接并将产生的system.bin文件复制到开发板的Flash中。将开发板上的Flash激活作为U盘使用的操作将在1.3节中描述。1.3 超级终端设置及BIOS功能使用1运行Windows系统下的超级终端(HyperTerminal)应用程序,新建一个通信终端。如果要求输入区号、电话号码等信息,可随意输入,出现如图1-32所示对话框时,为所建超级终端取名为arm,可以为其选一个图标。单击“确定”按钮。2在接下来的对话框中选择ARM开发平台实际连接的PC机串口(如COM1),单击“确定”按钮后出现如图1-33所示的属性对话框。在其中设置通信的格式和协议,这里波特率为115200,数据位为8,无奇偶校验,停止位为1,无数据流控制。单击“确定”按钮完成设置。 图1-32 创建超级终端 图1-33 设置串行口3完成新建超级终端的设置以后,可以选择超级终端文件菜单中的保存,将当前设置保存为一个特定超级终端在桌面上,以备后用。用串口线将PC机串口和平台UART0正确连接后,就可以在超级终端上看到程序输出的信息了,比如本实验的“Hello world!”。4启动开发板,按住开发板上键盘的任意按键,使开发板进入BIOS设置状态,如 图1-34所示。图1-34 系统的BIOS设置程序5该画面上提示了BIOS的版本等信息。Shell Menu是平台的检测菜单,每个条目的最左边字母是该功能的快捷键,按PC机键盘相应键将执行对应功能。注意操作时保持超级终端处于激活状态,并且PC机键盘必须为小写状态。6用户可以按超级终端的提示尝试部分测试功能。(1)l:测试LCD的文本和图形显示。执行该命令后LCD上会出现文本提示,然后进入图形模式并显示一幅彩色条形图案,接着在超级终端上根据提示按任意键返回文本模式,并退出LCD测试返回测试菜单。(2)o:格式化开发平台的16MB Flash,其中的文件将丢失,需要重新备份。执行该命令后超级终端上会出现确认提示,如果按y键则会格式化Flash,最后返回菜单。(3)n :设置开发平台网卡的IP地址、子网掩码等,其下有子菜单。n p:设置MAC地址,执行该命令后按提示操作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届山东省菏泽市王浩屯中学英语九年级第一学期期末检测试题含解析
- 2026届贵州省黔东南州剑河县化学九上期中学业质量监测试题含解析
- 河南省郑州市桐柏一中学2026届九上化学期中调研模拟试题含解析
- 大兴安岭市重点中学2026届九年级英语第一学期期末学业水平测试模拟试题含解析
- 2026届陕西省宝鸡市渭滨区九年级英语第一学期期末经典模拟试题含解析
- 2026届山西省临汾市襄汾县九上化学期中达标测试试题含解析
- 信托资金借贷合同范文6篇
- 离婚协议中关于共同财产分割及人寿保险权益保障协议
- 离婚协议书(涉及跨境财产分割与法律适用)
- 猪场租赁合同(含饲料供应与养殖技术支持)
- 贸易公司合伙合同协议
- 挖机工时合同协议
- 开音节闭音节试题及答案
- 部编人教版小学一年级上册道德与法治全册教学设计
- 预防脊柱弯曲异常教案
- 辅导机构创业路演
- 2025年穿脱隔离衣的试题及答案
- 2025年移动初级解决方案经理认证理论考试指导题库-下(多选、判断题)
- 健身房卫生安全措施及服务质量提升方案
- DB14-T 1737-2024 医疗护理员培训机构服务规范
- 《混凝土砖块机:混凝土砖块机技术》课件
评论
0/150
提交评论