96SEO 2026-02-19 22:06 21
。

标准的JTAG接口是4线——TMS、TCK、TDI、TDO#xff0c;分别为模式选择、时钟、数据输入和数据输出线。
JTAG的主要功能有两种#xff0c;或者说JTAG主要有两大…JTAG(Joint
11491兼容)。
标准的JTAG接口是4线——TMS、TCK、TDI、TDO分别为模式选择、时钟、数据输入和数据输出线。
类一类用于测试芯片的电气特性检测芯片是否有问题另一类用于Debug对各类芯片以及其外围设备进行调试。
一个含有JTAG
Debug接口模块的CPU只要时钟正常就可以通过JTAG接口访问CPU的内部寄存器、挂在CPU总线上的设备以及内置模块的寄存器。
本文主要介绍
简单地说JTAG的工作原理可以归结为在器件内部定义一个TAP(Test
Port测试访问口)通过专用的JTAG测试工具对内部节点进行测试和调试。
首先介绍一下边界扫描和TAP的基本概念和内容。
边界扫描(Boundary-Scan)技术的基本思想是在靠近芯片的输入输出引脚上增加一个移位寄存器单元也就是边界扫描寄存器(Boundary-Scan
当芯片处于调试状态时边界扫描寄存器可以将芯片和外围的输入输出隔离开来。
通过边界扫描寄存器单元可以实现对芯片输入输出信号的观察和控制。
对
于芯片的输入引脚可以通过与之相连的边界扫描寄存器单元把信号(数据)加载到该引脚中去对于芯片的输出引脚也可以通过与之相连的边界扫描寄存器“捕
获”该引脚上的输出信号。
在正常的运行状态下边界扫描寄存器对芯片来说是透明的所以正常的运行不会受到任何影响。
这样边界扫描寄存器提供了一种便捷
的方式用于观测和控制所需调试的芯片。
另外芯片输入输出引脚上的边界扫描(移位)寄存器单元可以相互连接起来在芯片的周围形成一个边界扫描链
Chain)。
边界扫描链可以串行地输入和输出通过相应的时钟信号和控制信号就可以方便地观察和控制处在调试状态下的芯片。
Port)是一个通用的端口通过TAP可以访问芯片提供的所有数据寄存器(DR)和指令寄存器(IR)。
对整个TAP的控制是通过TAP控制器(TAP
Controller)来完成的。
下面先分别介绍一下TAP的几个接口信号及其作用。
其中前4个信号在IEEE11491标准里是强制要求的。
◇TCK时钟信号为TAP的操作提供了一个独立的、基本的时钟信号。
Controller进行复位(初始化)。
这个信号接口在IEEE
11491标准里没有要求只是在个别目标板(例如STR710)中会有。
简单地说PC机对目标板的调试就是通过TAP接口完成对相关数据寄存器(DR)和指令寄存器(IR)的访问。
Controller首先进入Test-LogicReset状态然后依次进入Run-TestIdle、Selcct-DR-Scan、
Select-IR-Scan、Capture-IR、Shift-IR、Exitl-IR、Update-IR状态最后回到Run-
TcstIdle状态。
在此过程中状态的转移都是通过TCK信号进行驱动(上升沿)通过TMS信号对TAP的状态进行选择转换的。
其中在
Capture-IR状态下一个特定的逻辑序列被加载到指令寄存器中在Shift-IR状态下可以将一条特定的指令送到指令寄存器中在
Update—IR状态下刚才输入到指令寄存器中的指令将用来更新指令寄存器。
最后系统又回到Run—TestIdle状态指令生效完成对指令
寄存器的访问。
当系统又返回到Run—TestIdle状态后根据前面指令寄存器的内容选定所需要的数据寄存器开始执行对数据寄存器的工作。
其基本
原理与指令其存器的访问完全相同依次为seIect—DR—Scan、Capture—DR、Shift—D、Exitl一DR、Update—DR
最后回到Run-TcstIdle状态。
通过TDl和TDO就可以将新的数据加载到数据寄存器中。
经过一个周期后就可以捕获数据寄存器中的数据完
成对与数据寄存器的每个寄存器单元相连的芯片引脚的数据更新也完成了对数据寄存器的访问。
目前市场上的JTAG接口有14引脚和20引脚两种。
其中以20引脚为主流标准但也有少数的目标板采用14引脚。
经过简单的信号转换后可以将它们通用。
下面通过对JD44BOX实验开发板的简易JTAG的基本原理进行分析以及对JD44BOX和STR710试验开发板主板的JTAG原理进行对比进一步阐述JTAG的工作原理。
JD44BOX实验开发板的简易JTAG的原理图如图1所示。
图1中74LS244为三态输出的8组缓冲器和总线驱动器其功能如表l所列。
由表1可知在JD4480X实验板的调试过程中这款简易JTAG的主要作用就是将PC机发出的电信号与实验板的电信号进行匹配以实现驱动目标板的功能。
STR710和JD44BOX主板的JTAG原理图如图2和图3所示。
通过图2和图3的对比可以发现虽然所用的仿真器有很大的差别但是实际上忽略一些上下拉电阻以及保护电容(这些电阻、电容对于电路功能没有意义)
它们的基本原理图是十分相似的唯一的差别就在于对RTCK信号(用于测试时钟返回)和DBGRQ信号(用于设置目标板工作状态)的处理。
实际上在
IEEE11491标准中这两个信号都不是强制要求的。
因此在分析仿真器(JTAG)的工作原理时完全可以忽略这两个信号的情况而仅对IFEE
硬件连接如图4所示。
通过主机的并口与仿真器相连接再将仿真器与目标板的JTAG调试接口连接。
如表2所列虽然通过不同的调试代理所需的下载时间有所不同但是两种仿真器所存在的性能差异仍然很明显。
在选用简易JTAG下载文件的过程中效率最
高的调试代理所需的时间仍将近是仿真器的6倍这就是仿真器的优势所在。
性能的提高必然要付出更多的代价对开发者来说这个代价就是成本。
经过市场的考
察仿真器的价格一般在千兀左右而简易JTAG的价格一般在百元左右也就是存在将近10倍的差别。
另外还需要考虑的就是其兼容性。
兼容性包括与H标
板的兼容和与调试代理的兼容。
在与目标板的兼容方面后面的内容中会有详细说明在与调试代理的兼容方面也有所反映。
简易JTAG能够与多个调试代理兼
既然所有JTAG的基本原理都是一样的为什么这两种仿真器的速度会存在如此大的差异而且并不是所有的仿真器都是通用的呢?
与简易JTAG比较在扫描过程中STR710的仿真器为ARM7TDMI添加了一个专门的指针通道以及相应的存储空间store-
multiple(STM)。
因此在调试状态下仿真器不再利用系统除了边界扣描寄存器外的任何其他资源而是通过JTAG-style接口直接获取系统
在STR7lO目标板中ARM7TDMI可以通过外部信号和内部电
路模块(ICE)进入调试状态。
当目标板一旦进入调试状态后内核就将其与存储器分离开来这样内核就可以保证在不影响系统正常运作的状态下对系统的状况
进行监测和调试。
同时ARM7TDMI内部状态的检测是通过JTAG-style接口进行的这个接口允许指令不通过数据线直接进入到内核的扫描通道。
这样在调试状态下STM就可以直接嵌入到指令通道并存储ARM7TDMI寄存器的内容在不影响系统工作的情况下将这些内容移位出来使仿真器获得目标
与仿真器比较简易JTAG完成的工作就要少得多。
它只是完成了对主机信号的电平转换也就是相当于一个驱动器。
上面提
到的所有工作都要交给CPU去做因此在使用简易JTAG下载文件时目标板自然会相应地降低速度。
尤其是当程序相对较大时其速度就会大大降低对于一些
关于仿真器与目标板的兼容问题现在市场上的部分仿真器出现不同程度的不兼容问题其产生的主要原
因是对RTCK信号(DBGRQ信号极不常见这里不作介绍)的处理情况存在一些差异(不包括周立功系列的实验开发板它们的仿真器使用的足单片机与大
多数的仿真器都不能兼容)。
例如在STR710中是将STCK信号与TCK信号直接相连了而在nano2410A实验开发板中是将STCK信号直接接
Emulator在nano2410A实验开发板中的不兼容。
在对nano2410A主板的JTAG进行了小小的改动后就完成了仿真器兼容性的扩展。
备注①JD4480X为北京交通大学自控室实验开发板STR710为北京微芯力科技有限公司实验开发板②实验数据为秒表所测。
通常所说的JTAG大致分两类一类用于测试芯片的电气特性检测芯片是否有问题一类用于Debug一般支持JTAG的CPU内都包含了这两个模块。
Debug接口模块的CPU只要时钟正常就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备如FLASHRAMSOC比
如4510B44BoxAT91M系列内置模块的寄存器象UARTTimersGPIO等等的寄存器。
上面说的只是JTAG接口所具备的能力要使用这些功能还需要软件的配合具体实现的功能则由具体的软件决定。
例如下载程序到RAM功能。
了解SOC的都知道要使用外接的RAM需要参照SOC
DataSheet的寄存器说明设置RAM的基地址总线宽度访问速度等等。
有的SOC则还需要Remap才能正常工作。
运行Firmware时
这些设置由Firmware的初始化程序完成。
但如果使用JTAG接口相关的寄存器可能还处在上电值甚至时错误值RAM不能正常工作所以下载必然
要失败。
要正常使用先要想办法设置RAM。
在ADW中可以在Console窗口通过Let
命令设置在AXD中可以在Console窗口通过Set命令设置。
下面是一个设置AT91M40800的命令序列关闭中断设置CS0-CS3,
为了方便使用可以将上述命令保存为一个文件config.ini,
设置RAM时设置的寄存器以及寄存器的值必须和要运行程序的设置一致。
一般编译生成的目标文
件是ELF格式或类似的格式包含有目标码运行地址运行地址在Link时候确定。
Debug下载程序时根据ELF文件中的地址信息下载程序到指定的地
而在编译的时候指定Firmware的开始地址在0x02000000,
下载的时候目标码将被下载到0x02000000显然下载会失败。
通过JTAG下载程序前应关闭所有中断这一点和Firmware初始化时关闭中断的原因相
同。
在使用JTAG接口的时候各中断的使能未知尤其是FLASH里有可执行码的情况可能会有一些中断被使能。
使用JTAG下载完代码要执行时有
可能因为未完成初始化就产生了中断导致程序异常。
所以需要先关闭中断一般通过设置SOC的中断控制寄存器完成。
使用JTAG写Flash。
在理论上通过JTAG可以访问CPU总线上的所有设备所以应该
可以写FLASH但是FLASH写入方式和RAM大不相同需要特殊的命令而且不同的FLASH擦除编程命令不同而且块的大小数量也不同很难
提供这一项功能。
所以一般Debug不提供写Flash功能或者仅支持少量几种Flash。
目前就我知道的针对ARM只有FlashPGM这个软件提供写FLASH功能但使用也非
常麻烦。
AXDADW都不提供写FLASH功能。
我写Flash的方法时是自己写一个简单的程序专门用于写目标板的FLASH利用JTAG接口
下载到目标板再把要烧写的目标码装成BIN格式也下到目标板地址和烧FLASH的程序的地址不同然后运行已经下载的烧FLASH的程序。
使用这
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback