版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1页/共55页第一页,编辑于星期六:三点 十七分。目录目录一、一、JTAG基本知识基本知识1.1、什么是、什么是JTAG1.2 、 JTAG的作用的作用 1.3、 JTAG调试结构调试结构二、二、 JTAG的工作原理的工作原理2.1、两个重要概念:边界扫描和、两个重要概念:边界扫描和TAP2.2、JTAG的状态机的状态机2.3、 ARM7TDMI内核结构内核结构2.4、 JTAG扫描链结构及工作过程扫描链结构及工作过程2.5、 EmbeddedICE-RT Logic的结构的结构2.6、 EmbeddedICE的断点的断点/观察点设置观察点设置三、三、 JTAG常用指令常用指令第2页/共55
2、页第二页,编辑于星期六:三点 十七分。一、一、JTAG基本知识基本知识1.1、 什么是什么是JTAG JTAG是是Joint Test Action Group(联合测试行动组联合测试行动组)的缩写,是的缩写,是IEEE1149.1标准。标准。 1.2 、 JTAG的作用的作用 使得使得IC芯片固定在芯片固定在PCB版上,只通过边界扫描便可以被测试。版上,只通过边界扫描便可以被测试。1.3、 JTAG调试结构调试结构第3页/共55页第三页,编辑于星期六:三点 十七分。第4页/共55页第四页,编辑于星期六:三点 十七分。(1)、)、DEBUG主控制器:主控制器: 运行有运行有ARM公司或是第三方
3、提供公司或是第三方提供的调试软件的的调试软件的PC机。如:机。如:ARM公司提供公司提供的的ADS、LINUX下的下的arm-elf-gdb等。等。通过这些调试软件,可以发送高级调试通过这些调试软件,可以发送高级调试命令,如:设置命令,如:设置/取消断点,读写取消断点,读写MEMORY,单步跟踪,全速运行等。,单步跟踪,全速运行等。 第5页/共55页第五页,编辑于星期六:三点 十七分。(2)、协议转换器()、协议转换器(Protocol converter) 负责将负责将Debug主控端发出的高级主控端发出的高级ARM调试命令转换为底层的调试命令转换为底层的ARM JTAG调试命令。调试命令。
4、 Debug主控端和协议转换器间的介质可以有很多种,如:主控端和协议转换器间的介质可以有很多种,如:Earthnet、USB,串口,并口等。,串口,并口等。 Debug主控端和协议转换器间的通信协议主控端和协议转换器间的通信协议可以是可以是ARM公司的公司的ANGEL标准,也可以是第三方自定义的标准。典型的协议标准,也可以是第三方自定义的标准。典型的协议转换器有:转换器有:ARM公司的公司的Multi-ICE,H-JTAG,JLink等。等。 第6页/共55页第六页,编辑于星期六:三点 十七分。H-JTAG运行界面运行界面第7页/共55页第七页,编辑于星期六:三点 十七分。J-Link的运行界
5、面的运行界面第8页/共55页第八页,编辑于星期六:三点 十七分。(3)、调试目标机)、调试目标机 系统的调试对象。典型的系统的调试对象。典型的ARM7TDMI内核的调试结构:内核的调试结构:第9页/共55页第九页,编辑于星期六:三点 十七分。二、二、JTAG的工作原理的工作原理2.1、两个重要概念:边界扫描和、两个重要概念:边界扫描和TAP(1)边界扫描(边界扫描(Boundary-Scan):): 基本思想:在靠近芯片输入基本思想:在靠近芯片输入/输出管脚上增加一个移位寄存器单元输出管脚上增加一个移位寄存器单元(边界扫描寄存器)。(边界扫描寄存器)。 正常状态下,边界扫描寄存器对芯片来说是透
6、明的,所以正常的运行不会正常状态下,边界扫描寄存器对芯片来说是透明的,所以正常的运行不会受到任何的影响。受到任何的影响。 第10页/共55页第十页,编辑于星期六:三点 十七分。 调试状态下,边界扫描寄存器将芯片和外的输入输出隔离开,通过这些调试状态下,边界扫描寄存器将芯片和外的输入输出隔离开,通过这些边界扫描寄存器可以实现对芯片输入输出信号的控制。具体控制过程如下:边界扫描寄存器可以实现对芯片输入输出信号的控制。具体控制过程如下: 、输入管脚:通过与之相连的边界扫描寄存器把信号(数据)加载到输入管脚:通过与之相连的边界扫描寄存器把信号(数据)加载到该管脚中去。该管脚中去。 、输出管脚:通过与之
7、相连的边界扫描输出管脚:通过与之相连的边界扫描 寄存器寄存器“捕获捕获”该管脚上的输该管脚上的输出信号。出信号。第11页/共55页第十一页,编辑于星期六:三点 十七分。注意:注意: 芯片输入输出管脚上的边界扫描寄存器单元可以相互连接起来,在芯片周围芯片输入输出管脚上的边界扫描寄存器单元可以相互连接起来,在芯片周围形成一个边界扫描链。该链可以实现串行的输入输出,通过相应的时钟信号和形成一个边界扫描链。该链可以实现串行的输入输出,通过相应的时钟信号和控制信号,可方便的观察和控制在调试状态下的芯片。控制信号,可方便的观察和控制在调试状态下的芯片。第12页/共55页第十二页,编辑于星期六:三点 十七分
8、。(2)、)、TAP(Test Access Port) TAP是一个通用的端口,利用它可以访问芯片提供的所有是一个通用的端口,利用它可以访问芯片提供的所有DR和和IR。对整。对整个个TAP的控制是通过的控制是通过TAP Controller来完成的。来完成的。 TAP包括包括5个信号接口:个信号接口: TCK(Test Clock Input) JTAG时钟信号位。时钟信号位。标准强制要求标准强制要求 TMS(Test Mode Select) 测试模式选择,通过该信号控制测试模式选择,通过该信号控制JTAG状态机的状态。状态机的状态。TMS在在TCK的上的上升沿有效。升沿有效。标准强制要求
9、标准强制要求第13页/共55页第十三页,编辑于星期六:三点 十七分。TDI(Test Data Input) 数据输入口。所有要输入到特定寄存器的数据都是通过数据输入口。所有要输入到特定寄存器的数据都是通过TDI口一位一位串口一位一位串行输入的(行输入的(TCK驱动)。驱动)。标准里强制要求标准里强制要求TDO(Test Data Output) 数据输出口。所有要从特定的寄存器中输出的数据都是通过数据输出口。所有要从特定的寄存器中输出的数据都是通过TDO口串行的口串行的一位一位输出的(一位一位输出的(TCK驱动)。驱动)。标准里强制要求标准里强制要求TRST(Test Reset Input
10、) JTAG复位信号。复位信号。标准里是可选的标准里是可选的第14页/共55页第十四页,编辑于星期六:三点 十七分。2.2、JTAG的状态机的状态机 TAP共有共有16个状态机,如下图所示:个状态机,如下图所示: 每一个状态都有其相应的功能。箭头表示了所有可能的状态转换流程。状态的每一个状态都有其相应的功能。箭头表示了所有可能的状态转换流程。状态的转换是由转换是由TMS控制的。控制的。第15页/共55页第十五页,编辑于星期六:三点 十七分。第16页/共55页第十六页,编辑于星期六:三点 十七分。2.3、ARM7TDMI内核结构内核结构ARM7TDMI处理器结构框图:第17页/共55页第十七页,
11、编辑于星期六:三点 十七分。ARM7TDMI处理器包括三大部分:处理器包括三大部分:ARM CPU Main Processor Logic 包括了对调试的硬件支持包括了对调试的硬件支持Embedded ICE-RT Logic 包括一组寄存器和比较器,用来产生调试异常,设置断点和观察点。包括一组寄存器和比较器,用来产生调试异常,设置断点和观察点。TAP Controller 通过通过JTAG接口来控制和操作扫描链接口来控制和操作扫描链第18页/共55页第十八页,编辑于星期六:三点 十七分。 ARM7TDMI还提供了还提供了3个附加的信号:个附加的信号: DBGRQ : 调试请求,通过把调试请
12、求,通过把DBGREQ置置 “1”,可以迫使,可以迫使ARM7TDMI进入进入调试状态调试状态 DBGACK :调试确认,通过调试确认,通过DBGACK,可以判断当前,可以判断当前ARM7TDMI是否在调试状是否在调试状态态 BREAKPT :断点信号,这个信号是输入到断点信号,这个信号是输入到ARM7TDMI处理器内核的处理器内核的第19页/共55页第十九页,编辑于星期六:三点 十七分。2.4、JTAG扫描链结构及工作过程扫描链结构及工作过程ARM7TDMI的框图提供了的框图提供了3条扫描链:条扫描链:Scan Chain 0 113个扫描单元,包括个扫描单元,包括ARM所有的所有的I/O,
13、地址,地址/数据总线和输入数据总线和输入/输出控制信号。此链很复杂,不易控制,输出控制信号。此链很复杂,不易控制,但包含信息丰富,可通过它得到但包含信息丰富,可通过它得到ARM7TDMI内核的所有信息。内核的所有信息。Scan Chain 1 33个扫描单元,包括数据总线和一个断点控制信号。个扫描单元,包括数据总线和一个断点控制信号。第20页/共55页第二十页,编辑于星期六:三点 十七分。Scan Chain 2 38个扫描单元,通过控制个扫描单元,通过控制EmbeddedICE宏单元,实现对宏单元,实现对ARM进行指令的断进行指令的断点、观察点的控制。点、观察点的控制。 其实还有个其实还有个
14、Scan Chain 3,ARM7TDMI可以访问外部的边界扫描链。只不过可以访问外部的边界扫描链。只不过很少用,在此不做介绍。想了解可以看很少用,在此不做介绍。想了解可以看ARM7TDMI手册。手册。第21页/共55页第二十一页,编辑于星期六:三点 十七分。一个典型的一个典型的JTAG链链:第22页/共55页第二十二页,编辑于星期六:三点 十七分。JTAG扫描链的工作过程扫描链的工作过程第23页/共55页第二十三页,编辑于星期六:三点 十七分。第24页/共55页第二十四页,编辑于星期六:三点 十七分。第25页/共55页第二十五页,编辑于星期六:三点 十七分。第26页/共55页第二十六页,编辑
15、于星期六:三点 十七分。第27页/共55页第二十七页,编辑于星期六:三点 十七分。第28页/共55页第二十八页,编辑于星期六:三点 十七分。2.5、EmbeddedICE-RT Logic的结构的结构 通过对通过对EmbeddedICE控制,以及通过对控制,以及通过对EmbeddedICE中寄存器的读取,可中寄存器的读取,可以获得以获得ARM内核的状态,为程序设置断点观察点以及读取内核的状态,为程序设置断点观察点以及读取Debug通信通道(通信通道(DCC)。)。 这里的断点用来标识某个地址上的一条指令,而观察点用来观察某个地址上的数这里的断点用来标识某个地址上的一条指令,而观察点用来观察某个
16、地址上的数据变化,所以这二者是有区别的。据变化,所以这二者是有区别的。DCC用来完成主调试器和目标机间的信息发送。用来完成主调试器和目标机间的信息发送。第29页/共55页第二十九页,编辑于星期六:三点 十七分。EmbeddedICE的结构如下:第30页/共55页第三十页,编辑于星期六:三点 十七分。EmbeddedICE的长度是的长度是38位,包括:位,包括: 32位数据位数据 5位地址,访问位地址,访问EmbeddedICE中的寄存器中的寄存器 1个读写控制位个读写控制位EmbeddedICE的寄存器主要包括的寄存器主要包括Debug状态和控制寄存器,状态和控制寄存器,Debug通信寄存通信
17、寄存器和断点设置相关的寄存器,如下图所示:器和断点设置相关的寄存器,如下图所示:第31页/共55页第三十一页,编辑于星期六:三点 十七分。EmbeddedICE的寄存器的寄存器第32页/共55页第三十二页,编辑于星期六:三点 十七分。EmbeddedICE寄存器格式及含义寄存器格式及含义Debug Control Register 格式:格式: DBGACK:用来控制用来控制DBGACK信号的值信号的值 DBGRQ:是调试请求信号,通过将该信号置是调试请求信号,通过将该信号置“1”,可以强制,可以强制ARM7TDMI暂停暂停当前的指令,进入调试状态当前的指令,进入调试状态 INTDIS:用来控
18、制中断用来控制中断 SBZ/RAZ:任何时候都必须被置任何时候都必须被置“0”第33页/共55页第三十三页,编辑于星期六:三点 十七分。 Monitor Mode Enable:用来控制是否进入用来控制是否进入Monitor模式模式 EmbeddedICE-RT Disable:用来控制整个用来控制整个EmbeddedICE-RT,是启用还是禁,是启用还是禁用用Debug Status Register 格式:格式: DBGACK:用来标识当前系统是否处于调试状态。用来标识当前系统是否处于调试状态。1,表示进入;,表示进入;0,表,表示未进入。示未进入。第34页/共55页第三十四页,编辑于星期
19、六:三点 十七分。 DBGRQ:用来标识用来标识DBGRQ信号的当前状态信号的当前状态 IFEN:用来标识系统的中断控制状态:启用用来标识系统的中断控制状态:启用 还是禁用还是禁用 cgenL:用来判断当前对调试器在调试状态下用来判断当前对调试器在调试状态下对内存的访问是否完成对内存的访问是否完成 TBIT:该位用来判断该位用来判断ARM7TDMI是从是从ARM 状态还是状态还是THUMB状态进状态进入到调试状入到调试状态的态的第35页/共55页第三十五页,编辑于星期六:三点 十七分。Abort Status Register 格式:格式: 该寄存器的长度为该寄存器的长度为1,来判断一个异常的
20、产生的原因:断点触发?观察点触,来判断一个异常的产生的原因:断点触发?观察点触发?还是一个真的异常?发?还是一个真的异常? 第36页/共55页第三十六页,编辑于星期六:三点 十七分。实例实例1:用:用Scan Chain 2 设置设置Debug Control Register1)、 选择扫描链选择扫描链2,将其连接到,将其连接到TDI,TDO 之间。具体过程之间。具体过程如下:如下: 通过通过TAP将将SCAN_N指令写入到指令寄存器当中去,指令写入到指令寄存器当中去, TAP状态转换如下:RUN-TEST/IDLESELECT-DR-SCAN SELECT-IR-SCAN CAPTURE-
21、IR SHIFT-IR EXIT1-IR UPDATE-IR RUN-TEST/IDLE,在在SHIFT-IR状态下,将状态下,将SCAN_N通过通过TDI写到指令寄存器中去;接下来,访问被写到指令寄存器中去;接下来,访问被SCAN_N指令连接到指令连接到TDI第37页/共55页第三十七页,编辑于星期六:三点 十七分。 和和TDO之间的之间的扫描链选择寄存器扫描链选择寄存器,通过将,通过将2写入到扫描链选择寄存器当中去,写入到扫描链选择寄存器当中去,以将扫描链以将扫描链2连接到连接到TDI和和TDO之间。将之间。将2写入扫描链选择寄存器的状态转换如写入扫描链选择寄存器的状态转换如下:下: RU
22、N-TEST/IDLE SELECT-DR-SCAN CAPTURE-DR SHIFT-DR EXIT1-DR UPDATE-DR RUN-TEST/IDLE 在在SHIFT-DR状态下,将数值状态下,将数值2通过通过TDI写到扫描链选择寄存器当中去。写到扫描链选择寄存器当中去。2)、将)、将Scan Chain 2置为内测试模式置为内测试模式 用用INTEST 指令实现该操作,指令写入与指令实现该操作,指令写入与SCAN_N指令的过程类似指令的过程类似第38页/共55页第三十八页,编辑于星期六:三点 十七分。3)、写)、写Debug Control Register 假设要将假设要将Debu
23、g Control Register的的6位全部置位全部置“1”,按照扫描链,按照扫描链2的格的格式,需要写入到扫描链式,需要写入到扫描链2第序列应该为:第序列应该为: 1,00000,0000,0000,0000,0000,0000,0000,0011,1111 1表示写操作,表示写操作,00000标识的是标识的是Debug Control Register的地址,的地址,中间中间32位是要写入到位是要写入到Debug Control Register的数据。因的数据。因Debug Control Register长度为长度为6,所以只有低,所以只有低6位的数据序列位的数据序列111111有
24、效。有效。第39页/共55页第三十九页,编辑于星期六:三点 十七分。 将上面长度为将上面长度为38位的序列写入到扫描链位的序列写入到扫描链2中,中,TAP状态转换过程如下状态转换过程如下: RUN-TEST/IDLE SELECT-DR-SCAN CAPTURE-DR SHIFT-DR EXIT1-DR UPDATE-DR RUN-TEST/IDLE 在在SHIFT-DR状态下,通过状态下,通过38个个TCK时钟驱动,就可以将上面的序列串行时钟驱动,就可以将上面的序列串行输入到扫描练输入到扫描练2当中去。在回到当中去。在回到RUN-TEST/IDLE状态后,状态后,Debug Control
25、Register的值就会被改写为的值就会被改写为111111。第40页/共55页第四十页,编辑于星期六:三点 十七分。 EmbeddedICE有两个有两个WtchPointtchPoint单元。下面介绍一下单元。下面介绍一下WatchPointWatchPoint寄存寄存器的使用:器的使用: EmbeddedICE的一个主要作用是可以在的一个主要作用是可以在ARM程序中设置程序中设置软件或硬件断点软件或硬件断点。在在EmbeddedICE中,集成了一个比较器,负责把中,集成了一个比较器,负责把ARM处理器取指的地址处理器取指的地址A31:0,数据,数据 D31:0以及一些控制信号与以及一些控制
26、信号与EmbeddedICE中中WatchPointWatchPoint寄存器中设置的数寄存器中设置的数值相比较(具体说应该是进行与或运算),比较结果用来确定输出一个值相比较(具体说应该是进行与或运算),比较结果用来确定输出一个ARMARM断点断点(BreakPoint)(BreakPoint)信号。具体运算关系如下公式所描述:信号。具体运算关系如下公式所描述:2.6、EmbeddedICE的断点的断点/观察点设置观察点设置第41页/共55页第四十一页,编辑于星期六:三点 十七分。Av31:0,Cv4:0 XOR A31:0,C4:0 ORAm31:0,Cm4:0 = 0 xFFFFFFFF
27、当上述表达式值为真时,断点当上述表达式值为真时,断点/观察点信号有效,观察点信号有效,ARM内核进入内核进入Debug模式模式。ARM中断点和观察点的设置中断点和观察点的设置 首先介绍一下与之设置密切相关的首先介绍一下与之设置密切相关的WP Control Value/Mask Register。 WP Control Value/Mask Register格式:格式:第42页/共55页第四十二页,编辑于星期六:三点 十七分。WP Control Value/Mask Register格式含义: ENABLE: 如果该位置如果该位置0的话,意味着断点触发条件永远不成立,也就是把全部的话,意味着
28、断点触发条件永远不成立,也就是把全部断点都给断点都给disable掉了掉了 RANGE: 暂时不会用 CHAIN: 暂时不会用 EXTERN: 外部到外部到EmbeddedICE-RT的输入,通过该输入,可以使得断点的的输入,通过该输入,可以使得断点的触发依赖于一定的外部条件触发依赖于一定的外部条件 nTRANS: 用来判断是在用户态下还是非用户态下,用户态下:nTRANS = 0,否则nTRANS = 1第43页/共55页第四十三页,编辑于星期六:三点 十七分。 nOPC: 检测当前的周期是取指令还是进行数据访问。检测当前的周期是取指令还是进行数据访问。nOPC=0,表示当前周期,表示当前周
29、期进行取指。进行取指。 nOPC=1,表示当前周期进行普通数据的访问。(,表示当前周期进行普通数据的访问。(该位用的较多该位用的较多) MAS1:0: 和和ARM7TDMI的的MAS1:0信号进行比较,以探测当前总线的宽度信号进行比较,以探测当前总线的宽度是是8位、位、16位还是位还是32位位 nRW: nRW = 0, 当前的是读周期,当前的是读周期,nRW = 1,当前的是写周期,当前的是写周期第44页/共55页第四十四页,编辑于星期六:三点 十七分。断点设置的两种方式:断点设置的两种方式:1)、硬件断点:)、硬件断点: 通过设置通过设置EmbeddedICE中的中的WP和地址相关的寄存器
30、来实现的。通过该方和地址相关的寄存器来实现的。通过该方式设置的断点数受到式设置的断点数受到WP数目的限制。因数目的限制。因ARM7TAMI中仅有两组中仅有两组WP,故最多可,故最多可以设置两个断点。但是,硬件断点可在任何地方设置不受存储类型限制。以设置两个断点。但是,硬件断点可在任何地方设置不受存储类型限制。第45页/共55页第四十五页,编辑于星期六:三点 十七分。 2)、软件断点)、软件断点 通过设置通过设置EmbeddedICE中的中的WP和数据相关的寄存器来实现的。分为和数据相关的寄存器来实现的。分为两步:两步: (1)、将、将data value和和data mask设为设为ARM的未
31、定义指令,通常是一个特殊的未定义指令,通常是一个特殊的的32位数字,如:位数字,如:0 xCDCDCDCD (2)、在需要设置断点的地方将其内容替换、在需要设置断点的地方将其内容替换 第46页/共55页第四十六页,编辑于星期六:三点 十七分。 为(1)中的特殊数字。这样,一但程序运行到该位置,尝试从该位置取指令或者数中的特殊数字。这样,一但程序运行到该位置,尝试从该位置取指令或者数据的时候,因为取得的数据值和据的时候,因为取得的数据值和WP Data Value寄存器的值相同,寄存器的值相同,ARM7TDMI会暂停当前的运行,自动进入调试状态。会暂停当前的运行,自动进入调试状态。 由上所述,软
32、件断点数目不受由上所述,软件断点数目不受ARM内核中内核中WP数目的限制。但是,软件断数目的限制。但是,软件断点是通过替换系统断点地址的指令实现的,所以,软件断点只能在可写的存储器空点是通过替换系统断点地址的指令实现的,所以,软件断点只能在可写的存储器空间中设置,如:间中设置,如:RAM。而不能在。而不能在FLASH,ROM中设置。中设置。第47页/共55页第四十七页,编辑于星期六:三点 十七分。 总之,有两个总之,有两个WP的的ARM7TDMI内核中,断点设置有如下情况:内核中,断点设置有如下情况: 2个硬件断点,没有软件断点。个硬件断点,没有软件断点。 1个硬件断点,任意个软件断点。个硬件
33、断点,任意个软件断点。 没有硬件断点,任意个软件断点。没有硬件断点,任意个软件断点。观察点设置:观察点设置: 将将WP Address Value寄存器的值设置为需要观察的地址,寄存器的值设置为需要观察的地址,WP Address Mask寄寄存器的值设置为存器的值设置为0 x00000000。将。将WP Data Mask寄存器的值设置为寄存器的值设置为0 xFFFFFFFF。同时同时nPOC = 1。另外,第48页/共55页第四十八页,编辑于星期六:三点 十七分。 WP Data Value/Mask Register也用来设置观察点,用以观察某个地址的也用来设置观察点,用以观察某个地址的数据变化。每当系统访问(读数据变化。每当系统访问(读/写)完被观察地址的数据的时候,写)完被观察地址的数据的时候,ARM7TDMI就会进入调试状
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省成都市石室天府中学2025-2026学年高中毕业班质量检查(Ⅱ)化学试题含解析
- 京冀首条跨省域地铁22号线2026年开通条件与同城化通勤效能分析
- 云南省保山市施甸县重点达标名校2025-2026学年初三下-期中统一考试生物试题试卷含解析
- 2026年社区嵌入式养老机构建设标准与服务功能配置指南
- 2026年快堆乏燃料干法后处理技术与发展思考熔盐电解技术路线深度解析
- 2025年临床执业医师《儿科学》强化训练试卷
- 2025年临床医学模拟试卷
- 虚拟现实产品经理的工作计划概览
- 项目策划岗位面试常见问题
- 医药研发企业实验室建设规划及安排
- DBJ50T 043-2016 工程勘察规范
- 物业工程部工作亮点汇报
- (正式版)DB65∕T 032-2019 《城市用煤》
- 宠物行为心理培训课件
- 钳形表电工基础知识培训课件
- 2024学年金华市金东区七年级语文上学期期中考试卷附答案解析
- 肾错构瘤护理查房
- 生态旅游监测体系构建-洞察及研究
- 2025年人教版小升初考试语文五套试卷及答案打印版
- 罗茗华焊接检测技术课件
- 《数控加工编程》课件-数控编程基础
评论
0/150
提交评论