已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
eCos User Guide Chapter 28 manual Configuration eCos 用户指南之手动配置 翻译 翻译 JARI TOOL 1 1 编辑编辑一个一个 eCos eCos 存档文件存档文件 eCos 配置信息存放在一个存档文件 savefile 中 典型的是 ecos ecc 这个文件既可以通过 GUI 界面配置工具产生 也可以通过命令行 ecosconfig 配 置工具产生 这个文件通常存在于编译树 build tree 的顶层 它是一个文本 文件 允许通过文本编辑器 其它程序或脚本来编辑各种配置选项 也可以在 GUI 配置工具里编辑 eCos 存档文件是 Tcl 编程语言的一个脚本 所以任何对文件的修改需要保 存 Tcl 语法 对于大多数配置选项的改动都很小 不必担心 Tcl 语法 例如 把 1变成0来禁止一个选项 对于更复杂的选项 如CYGDAT UITRON TASK EXTERNS 包括几行 C 语言代码 需要多加注意 如果一个编辑过的存档文件不再是一个有 效的 Tcl 脚本 那么配置工具将不能读回数据作进一步处理 如产生编译树 下 面给出 Tcl 语法主要原则 这里值得注意的一点是以 开始的一行通常是注 释 eCos 存档文件块里包含这样的注释 来使它易于编辑 2 2 头头段段 eCos 存档文件以一个文件头开始 典型的像这样 eCos saved configuration commands This section contains information about the savefile format It should not be edited Any modifications made to this section may make it impossible for the configuration tools to read the savefile cdl savefile version 1 cdl savefile command cdl savefile version cdl savefile command cdl savefile command cdl savefile command cdl configuration description hardware template package cdl savefile command cdl package value source user value wizard value inferred value cdl savefile command cdl component value source user value wizard value inferred value cdl savefile command cdl option value source user value wizard value inferred value cdl savefile command cdl interface value source user value wizard value inferred value 存档文件的这一段供配置系统用 不应该编辑它 如果这段被编辑了 各种 配置工具可能读不进这个修改了的存档文件 3 3 顶层段顶层段 跟着头段的段定义配置的整体 一个典型的例子是 toplevel This section defines the toplevel configuration object The only values that can be changed are the name of the configuration and the description field It is not possible to modify the target the template or the set of packages simply by editing the lines below because these changes have wide ranging effects Instead the appropriate tools should be used to make such modifications cdl configuration eCoseCos description These fields should not be modified hardware pid template uitron package hardware CYGPKG HAL ARM current package hardware CYGPKG HAL ARM PID current package hardware CYGPKG IO SERIAL current package template CYGPKG HAL current package template CYGPKG IO current package template CYGPKG INFRA current package template CYGPKG KERNEL current package template CYGPKG UITRON current package template CYGPKG LIBC current package template CYGPKG LIBM current package template CYGPKG DEVICES WALLCLOCK current package template CYGPKG ERROR current 这段允许配置工具重载各种包形成配置 大多数信息不应该被编辑 如果需 要增加一个新包或者删除一个已存在的包应该用合适的工具 例如 ecosconfig remove CYGPKG LIBM 有两个地方可以编辑 配置有个名字 这里是 eCos 有一个描述 description 是一些主观的文本 配置工具不用这些区域 它们存在是为了 用户为一个配置存储附加信息 4 4 冲突冲突段段 顶层段后面是在配置中的所有冲突细节 如 conflicts There are 2 conflicts option CYGNUM LIBC TIME DST DEFAULT OFFSET Property LegalValues Illegal current value 100000 Legal values are 90000 to 90000 option CYGSEM LIBC TIME CLOCK WORKING Property Requires Requires constraint not satisfied CYGFUN KERNEL THREADS TIMER 当你编辑一个配置 可能最终产生无效的东西 配置中的任何问题将在冲突 段报告出来 这个例子有两个冲突 选项 CYGNUM LIBC TIME DST DEFAULT OFFSET 被给了一个非法值 可以通过在后边的 存档文件中查找该选项定义并修改这个值而修复这个冲突 第二个冲突更有意思 不满足所需约束 配置选项是非独立的 禁止一些在内核中的功能 在其它地方 产生影响 这里是 C 库 选项间的各种依赖依组件开发者而定 并由 配置系统 来 检 验 这 个 例 子 有 两 种 显 见 的 方 法 解 决 冲 突 重 新 允 许 CYGFUN KERNEL THREADS TIMER 或者禁止 CYGSEM LIBC TIME CLOCK WORKING 这两个选项将在之后的文件中列出来 当修改配置选项的时候需要注意 避免引入新的冲突 例如 可能在系统里 有其它选项依赖 CYGSEM LIBC TIME CLOCK WORKING 所以禁止该选项可能不是 解决冲突的最好方式 存储文件的适当地方提供了所有这些依赖的细节 在产生编译树和编译 eCos 之前并不绝对要求一个配置是无冲突的 如果在 仍然有冲突的情况下试图编译 eCos 每个组件的开发者决定将发生什么 严重 的情况将可能是编译时失败 或者可能连接时失败 不太严重的情况系统可能编 译通过并且应用程序能连接结果库 但是组件可能没有达到预想的功能 尽管 对于应用的特殊需要已经足够好 也可能编译链接通过 但偶尔系统会莫名其妙 的崩溃 用存在冲突的配置将置用户于危险之中 5 5 数据段数据段 存档文件列出各种包 组件和选项 包括它们的值和各种依赖 大量全局选 项先列出 特别是与编译过程相关的 像编译器标记 包里按顺序跟着包 组件 和选项 包 组件和选项按层组织起来 如果一个特别的组件被禁用了 那么它的所 有选项和子组件都将被禁用 任何改动都不起作用 存档文件以注释的方式包含 分层信息 例如 cdl package CYGPKG KERNEL cdl component CYGPKG KERNEL EXCEPTIONS cdl option CYGSEM KERNEL EXCEPTIONS DECODE cdl option CYGSEM KERNEL EXCEPTIONS GLOBAL cdl option CYGSEM KERNEL SCHED MLQUEUE cdl option CYGSEM KERNEL SCHED BITMAP 这对应着如下的层次结构 CYGPKG KERNEL CYGPKG KERNEL EXCEPTIONS CYGSEM KERNEL EXCEPTIONS DECODE CYGSEM KERNEL EXCEPTIONS GLOBAL CYGPKG KERNEL SCHED CYGSEM KERNEL SCHED MLQUEUE CYGSEM KERNEL SCHED BITMAP 这种方法提供的层次信息允许程序或脚本分析存档文件并确定层次 也可用 于强力编辑器支持 eCos 存档文件进行结构编辑 配置工具本身不用这些信息 因为它们从原始的 CDL 脚本获得分层信息 每个可配置实体之前有一段注释 类似下面的形式 Kernel schedulers doc ref ecos ref ecos kernel overview html THE SCHEDULER The eCos kernel provides a choice of schedulers In addition there are a number of configuration options to control the detailed behaviour of these schedulers cdl component CYGPKG KERNEL SCHED 这为组件提供一个正文别名 Kernel schedulers 如果有可配置实体的在线文 件将列出来 最后 一般有该实体的一个简短描述 所有这些信息由组件开发者 提供 每个可配置实体按下面的格式 可配置实体可能不在激活状态 这可能或者因为其父亲被禁止 或者因为有 一个或多个 active if 属性 修改一个非活跃实体的值对配置不起作用 因此先 提供该信息 cdl option CYGSEM KERNEL EXCEPTIONS DECODE This option is not active The parent CYGPKG KERNEL EXCEPTIONS is disabled cdl option CYGIMP IDLE THREAD YIELD This option is not active ActiveIf constraint CYGNUM KERNEL SCHED PRIORITIES 1 CYGNUM KERNEL SCHED PRIORITIES 32 0 要激活 CYGIMP IDLE THREAD YIELD 选项 存档文件列出的表达式必须满足 接下来是所有实体的当前值 最后是评估那个表达式的结果 不是所有选项都可以在存档文件中直接修改 包的值 那是载入包的版本 不能在这里修改 cdl package CYGPKG KERNEL Packages cannot be added or removed nor can their version be changed simply by editing their value Instead the appropriate configuration should be used to perform these actions 一个包的版本可以这样更改 ecosconfig version 1 3 CYGPKG KERNEL 尽管一个包的值不能在这里修改 存档文件包含这个细节仍然是重要的 尤 其是包可能强加约束到其它可配置实体 可能被其它可配置实体参考 如果包没 有在存档文件的合适地方列出 理解和提取配置的层次也会很困难 一些组件 或者选项 可以想象 没有任何相关数据 典型地 它们只是在 层次结构中引入另一级别 这在 GUI 界面配置工具的上下文中有用 cdl component CYGPKG HAL COMMON INTERRUPTS There is no associated value 另一些组件和选项有一个计算值 这些不是用户可修改的 但是这个值依赖 于可修改的其他选项 当在产生的配置头文件中控制获得的编译或最终的生成时 这个计算值很有用 计算值也可能影响配置的其他部分 如通过一个需求约束 cdl option BUFSIZ Calculated value CYGSEM LIBC STDIO WANT BUFFERED IO CYGNUM LIBC STDIO BUFSIZE 0 CYGSEM LIBC STDIO WANT BUFFERED IO 1 CYGNUM LIBC STDIO BUFSIZE 256 Current value 256 一个特殊类型的计算值是接口 interface 接口值是执行该接口的选项中 活跃和允许的选项数 接口值也不能直接修改 只有通过修改执行该接口的选项 但是 接口可以被配置的其他部分参考 cdl interface CYGINT KERNEL SCHEDULER Implemented by CYGSEM KERNEL SCHED MLQUEUE active enabled Implemented by CYGSEM KERNEL SCHED BITMAP active disabled This value cannot be modified here Current value 1 Requires 1 CYGINT KERNEL SCHEDULER CYGINT KERNEL SCHEDULER 1 1 The following properties are affected by this value interface CYGINT KERNEL SCHEDULER Requires 1 CYGINT KERNEL SCHEDULER 如果可配置实体是可修改的 将有如下几行 cdl option CYGSEM KERNEL SCHED MLQUEUE Flavor bool No user value uncomment the following line to provide one user value 1 value source default Default value 1 可配置实体可以有四种类型 flavor 之一 none bool data 和 booldata 类型 none 表明实体与数据无关 典型的正像整个层次中的占位符 类型 bool 最普通 只有是或不是的选择 类型 data 是更复杂的配置选择 如数组的大小 或设备名 类型 booldata 是 bool 和 data 的联合 选项可以被允许或禁止 又 有一些额外数据和选项相关 在上面的例子里 用户没用修改这个特殊的选项 像注释写的那样 去掉 user value 那行的注释 禁止这个选项 文件应该编辑成 cdl option CYGSEM KERNEL SCHED MLQUEUE Flavor bool No user value uncomment the following line to provide one user value 0 user value 0 value source default Default value 1 user value 0 前的注释如果想去可以去掉 否则下次配置工具读取和更新 该文件时将自动去掉 选项是 data 类型的用相同的处理过程 例如 cdl option CYGNUM LIBC TIME DST DEFAULT OFFSET Flavor data No user value uncomment the following line to provide one user value 3600 value source default Default value 3600 Legal values 90000 to 90000 可以改成 cdl option CYGNUM LIBC TIME DST DEFAULT OFFSET Flavor data user value 7200 value source default Default value 3600 Legal values 90000 to 90000 原始的文本提供了缺省值在 user value 注释中 假设想要的新值可能与缺 省值相似 value source 注释不需要更新 如果存档文件反馈进入配置系统并 重新产生 该注释会被修复 选项是 booldata 类型的 user value 行需要两个参数 第一个是 bool 部 分 第二个是 data 部分 例如 cdl component CYGNUM LIBM COMPATIBILITY Flavor booldata No user value uncomment the following line to provide one user value 1 POSIX value source default Default value 1 POSIX Legal values POSIX IEEE XOPEN SVID 可以改成 cdl component CYGNUM LIBM COMPATIBILITY Flavor booldata user value 1 IEEE value source default Default value 1 POSIX Legal values POSIX IEEE XOPEN SVID 或者另一种 如果禁止整个组件 改成 cdl component CYGNUM LIBM COMPATIBILITY Flavor booldata user value 0 POSIX value source default Default value 1 POSIX Legal values POSIX IEEE XOPEN SVID 一些选项的值跨越多行 一个例子是 cdl option CYGDAT UITRON MEMPOOLVAR INITIALIZERS Flavor data No user value uncomment the following line to provide one user value CYG UIT MEMPOOLVAR vpool1 2000 CYG UIT MEMPOOLVAR vpool2 2000 CYG UIT MEMPOOLVAR vpool3 2000 value source default Default value CYG UIT MEMPOOLVAR vpool1 2000 CYG UIT MEMPOOLVAR vpool2 2000 CYG UIT MEMPOOLVAR vpool3 2000 为这个选项设置一个用户值 包括未注释和修改的所有相关行 例如 cdl option CYGDAT UITRON MEMPOOLVAR INITIALIZERS Flavor data user value CYG UIT MEMPOOLVAR vpool1 4000 CYG UIT MEMPOOLVAR vpool2 4000 value source default Default value CYG UIT MEMPOOLVAR vpool1 2000 CYG UIT MEMPOOLVAR vpool2 2000 CYG UIT MEMPOOLVAR vpool3 2000 这个例子必须适当注意保持 Tcl 语法 正像下面讨论的那样 配置系统有能力追踪任何给定选项的几个不同值 所有选项从缺省值开始 换句话说它们的 value source 设置为缺省 如果配置包含冲突并且配置系统的 推理引擎允许自动解决 可能提供一个相反的推理 inferred 值 例如 cdl option CYGMFN KERNEL SYNCH CONDVAR TIMED WAIT Flavor bool No user value uncomment the following line to provide one user value 1 The inferred value should not be edited directly inferred value 0 value source inferred Default value 1 推理值由配置系统计算 用户不应该编辑它 如果推理值不正确 相反一个 用户值应该被替代 cdl option CYGMFN KERNEL SYNCH CONDVAR TIMED WAIT Flavor bool user value 1 The inferred value should not be edited directly inferred value 0 value source inferred Default value 1 推理引擎不会用推理值覆盖用户值 像下面这样修改可能重新引入冲突 因 为推理值只是计算出来去解决冲突 推理引擎的另一个运行可能发现不同的 更 可接受的方式解决冲突 但这是不保证的 它可能依据用户解决各种依赖并制定 出可接受的解决办法 因为精确地推理值可能依靠做出改变的顺序和冲突解决的顺序 所以在存档 文件中列出推理值 如果缺少推理值 重新载入存档文件可能没有精确载入配置 另一方面缺省值是完全确定的 所以没有必要在存档文件中列出该值 但是 缺 省值是非常有用的信息 因此提供了一个注释 偶尔用户想做一些实验 临时开关一个选项从用户值到缺省值或者推理值去 看有什么影响 这可以通过简单注释掉用户值做到 例如 如果当前存档文件包 含 cdl option CYGMFN KERNEL SYNCH CONDVAR TIMED WAIT Flavor bool user value 1 The inferred value should not be edited directly inferred value 0 value source user Default value 1 通过注释掉或删除 user value 行 可以载入推理值 cdl option CYGMFN KERNEL SYNCH CONDVAR TIMED WAIT Flavor bool user value 1 The inferred value should not be edited directly inferred value 0 value source user Default value 1 对于简单值那是很好的 但是如果是复杂的值就有一个问题 注释掉 user value 一行或几行意味着在配置系统中用户值不可见 因此如果载入并重 新产生存档文件 信息会丢失 另一种替代方法是保留 user value 但显式地设 置 value source 行 如 cdl option CYGMFN KERNEL SYNCH CONDVAR TIMED WAIT Flavor bool user value 1 The inferred value should not be edited directly inferred value 0 value source inferred value source inferred Default value 1 这种情况配置系统为了依赖分析等等的目的将使用推理值 即使用户值存在 value source 可以再次被注释掉而载入用户值 如果没有显式的 value source 配置系统将用最高优先级首先 用户值如果有 否则推理值如果有 否则缺省值 如果有 一个选项的缺省值可以是简单的常数 或者是包含其他选项的表达式 后面 的例子将列出表达式 和表达式中所有参考选项的值 评估当前表达式的结果 这只是为了信息的目的 当载入一个存档文件时缺省值总是重新计算 cdl option CYGBLD GLOBAL COMMAND PREFIX Flavor data No user value uncomment the following line to provide one user value arm elf value source default Default value CYGHWR THUMB thumb elf arm elf CYGHWR THUMB 0 arm elf data 或 booldata 类型的选项 可能限制可能的值 如果值假定是给定范围 的一个数 相反提供一个 hello world 的用户值 可能会运行时失败 组件 开发者限定合法值 存档文件中会列出来 cdl option X TLOSS Flavor data No user value uncomment the following line to provide one user value 1 41484755040569E 16 value source default Default value 1 41484755040569E 16 Legal values 1 to 1e308 cdl component CYGNUM LIBM COMPATIBILITY Flavor booldata No user value uncomment the following line to provide one user value 1 POSIX value source default Default value 1 POSIX Legal values POSIX IEEE XOPEN SVID 有些情况合法值表可能是包含其它选项的表达式 如果这样 参考选项的当 前值会列出来 连同估算列表表达式的结果 正像缺省值表达式 如果提供了一个非法值 将导致一个冲突列在存档文件的冲突段 对于更复 杂的选项 一个简单的合法值列表不足以证实当前值的有效性 配置系统将不能 标记冲突 这个问题将在配置系统的将来发行中说明 给定的选项紧随值相关的领域之后是属于这个选项的任何需求约束 这些约 束只在选项活跃 bool 和 booldata 类型 允许的情况下有效 如果 eCos 功能 的一些方面是不活跃或禁止 则不能强加任何约束到系统的余下部分 通常 整 个表达式将跟随着参考的所有选项的当前值 估算表达式的结果 cdl option CYGSEM LIBC TIME TIME WORKING Requires CYGPKG DEVICES WALLCLOCK CYGPKG DEVICES WALLCLOCK current 1 不仅知道一个选项的什么约束强加于系统的余下部分 而且知道系统中其它 选项以某种方式依赖于这个选项的什么 这在修改这个选项的值时是有用的 存 档文件提供了这个信息 cdl option CYGFUN KERNEL THREADS TIMER The following properties are affected by this value option CYGMFN KERNEL SYNCH CONDVAR TIMED WAIT Requires CYGFUN KERNEL THREADS TIMER option CYGIMP UITRON STRICT CONFORMANCE Requires CYGFUN KERNEL THREADS TIMER option CYGSEM LIBC TIME CLOCK WORKING Requires CYGFUN KERNEL THREADS TIMER 6 6 TclTcl 语法语法 eCos 存档文件作为 Tcl 脚本执行 作为运行时数据被标准的 Tcl 解释器读 入 Tcl 解释器扩展了少量额外的命令如 cdl option 和 cdl configuration 在许多情况下 当编辑一个存档文件时 这个执行细节可以被安全忽略 用 0 替代 1 来禁止某些功能不会影响存档文件是否仍是一个有效的 Tcl 脚本并被 Tcl 解释器处理 但是更复杂的情况理解 Tcl 语法至少是期望的 例如 cdl option CYGDAT UITRON MEMPOOLVAR EXTERNS Flavor data user value static char vpool1 2000 vpool2 2000 vpool3 2000 value source default Default value static char vpool1 2000 vpool2 2000 vpool3 2000 user value 行尾的反斜杠是被 Tcl 解释器作为续行符 用户数据两边的双 引号被 Tcl 解释器所解释 将整个数据域变成一个参数 左右方括号前的反斜杠 是为了防止被 Tcl 解释器以特殊字符对待 否则将像下面描述的那样作命令替代 数据行尾部的双反斜杠将被 Tcl 解释器变成单反斜杠 而不是转义新行符 因此 配置系统看到的真正数据是 static char vpool1 2000 vpool2 2000 vpool3 2000 当然数据最后应该在 uITRON 配置头文件里 包含选项数据整体的大括号也 很重要 使得数据体作为一个参数传递给 cdl option 命令 结尾的分号在这个 例子中是可选的 但如果存档文件被编辑成不再是有效的 Tcl 脚本 这提供了一 点附加的健壮性 如果数据中含有任何 字符将被特殊处理 可通过反斜杠转义 尽管建议按上面建议的做 Tcl 实际上是非常简单而有力的脚本语言 语法 定义 11 条规则 偶尔这个简单意味着 Tcl 的行为有点和其它语言不一样 这会 使新学者迷惑 当 Tcl 解释器传递一些数据如 puts Hello 它将数据分为命令和参数 命 令在新的一行结束或者一个分号 除非一种引用机制被应用 命令和每一个参数 被空格分开 所以在下面的例子里 puts Hello set x 42 将导致两条分开的命令被执行 第一个命令是 puts 传递单个参数 Hello 第二个命令是 set 传递两个参数 x 和 42 介入的新行符结束第一条命令 分号 符可代替新行符用 puts Hello set x 42 分号周围的空格被忽略 因为它不用于分隔参数 现在考虑下面 set x Hello world 这不是有效的 Tcl 它试图引用 set 命令并有 x Hello world 三个参数 set 命令只能取两个参数 一个变量名和一个值 所以通过引用把数据合并成一 个数据是必要的 set x Hello world 当 Tcl 解释器遇到第一个引号 它就把后面所有的数据但不包括结束的引号 作为当前参数的一部分 引号标识被解释器去掉 所以传给 set 命令的第二个 参数是 Hello world 没有引号 在 eCos 存档文件的上下文中这是非常重要的 例如考虑下面的配置选项 cdl option CYGDAT LIBC STDIO DEFAULT CONSOLE Flavor data No user value uncomment the following line to provide one user value dev ttydiag value source default Default value dev ttydiag 配置选项的期望值应该是有效的 C 语言字符串 有完整的引号 如果存档文 件被编辑成 cdl option CYGDAT LIBC STDIO DEFAULT CONSOLE Flavor data user value dev ttydiag value source default Default value dev ttydiag 那么当存档文件被读回时 Tcl 解释器就会删除引号 因此选项的值就没有 引号并且不是一个有效的字符串 配置系统还不能执行需要的确认 因此下面的 define 将在配置头文件中产生 define CYGDAT LIBC STDIO DEFAULT CONSOLE dev ttydiag 当编译 eCos 时这可能产生编译时失败 引用的参数继续到遇到结束引用符号 这意味着可以跨越多行 在 eCos 存 档文件中也遇到 例如在较早提到的 CYGDAT UITRON MEMPOOLVAR EXTERNS 例子 里 这种情况新行或分号不终止当前命令 Tcl 解释器支持和其它通常编程语言 一样的反斜杠替代格式 一些反斜杠序列如 n 将被合适的字符替代 序列 将 被单反斜杠替代 在一行的最尾部的反斜杠将发生单空格代替反斜杠 新行符和 下一行开始的任意白空格 因此下面两行 Tcl 命令是相等的 puts Hello nworld n puts Hello world 除了引号 反斜杠 Tcl 解释器对方括号 括号也特殊对待 方括号用 于命令替代 例如 puts The answer is expr 6 9 当 Tcl 解释器遇到方括号 对待内容就像其它先被执行的命令 执行的结果 用于继续处理脚本 这个例子 Tcl 解释器将执行命令 expr 6 9 得出一个 54 的 结果 然后 Tcl 解释器将执行 puts The answer is 54 应该注意解释器只 包含一级替代 如果执行命令替代的结果执行进一步的特殊字符像方括号 则将 不被特殊对待 命令行替代在 eCos 存档文件上下文中可能证明不了有用 但这是 Tcl 语言 的一部分 因此当读入一个存档文件时不能简单的抑制 结果当存档文件数据含 有方括号时应注意 考虑下面 cdl option CYGDAT UITRON MEMPOOLFIXED EXTERNS user val
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浆染联合机挡车工设备安全技术规程
- 激光加工设备装调工设备技术规程
- 公司农作物种植技术员工艺作业技术规程
- 水电安装施工组织设计
- 四年级儿童心理导航
- 广东省湛江市雷州市四校2025届九年级下学期中考三模数学试卷(含解析)
- 非金属及其化合物(讲义)-高考化学二轮复习
- 2025福建漳州市龙海区嘉达出行服务有限公司招聘10人笔试历年参考题库附带答案详解
- 2025下安徽省水利水电勘测设计研究总院股份有限公司校园招聘笔试历年参考题库附带答案详解
- 2025湖南高速工程咨询有限公司招聘劳务派遣员工12人笔试历年参考题库附带答案详解
- 2025年度干部选拔任用工作自检自查报告
- 2025年司法考试真题及答案
- 提高钢筋直螺纹套筒连接一次验收合格率
- 绝缘手套试验报告(安全工器具试验报告)
- 少儿美术课件-《阿拉丁神灯》
- 废气处理专业设备酸雾净化塔技术方案书
- 健康饮食益处多(教案) 小学一致二年级体育
- 外科手术学教案-运动系统慢性损伤
- GB3956-97电缆的导体
- ALG测试指导书
- GL2400中文说明书
评论
0/150
提交评论