Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Embedded 嵌入式开发系统中的通用JTAG工作流程?_Embedded_Development Environment_Jtag - Fatal编程技术网

Embedded 嵌入式开发系统中的通用JTAG工作流程?

Embedded 嵌入式开发系统中的通用JTAG工作流程?,embedded,development-environment,jtag,Embedded,Development Environment,Jtag,在我的嵌入式项目中,我使用JTAG接口下载代码并调试下载的应用程序。但我不知道JTAG设置中发生了什么 有谁能给我介绍一下JTAG设置的基本概念/流程(高级视图),这将真正帮助我更好地理解我的开发系统 __Kanu当应用于处理器调试时(因为JTAG通常用作边界扫描测试接口),JTAG只是与设备的片上调试块和内存接口通信的一种方式 JTAG本身是一个简单的同步串行数据总线。“JTAG链”上的JTAG设备只需通过移位寄存器对数据进行时钟记录,直到所需数据进入寄存器。将数据输入片上调试寄存器所需的时钟

在我的嵌入式项目中,我使用JTAG接口下载代码并调试下载的应用程序。但我不知道JTAG设置中发生了什么

有谁能给我介绍一下JTAG设置的基本概念/流程(高级视图),这将真正帮助我更好地理解我的开发系统


__Kanu

当应用于处理器调试时(因为JTAG通常用作边界扫描测试接口),JTAG只是与设备的片上调试块和内存接口通信的一种方式


JTAG本身是一个简单的同步串行数据总线。“JTAG链”上的JTAG设备只需通过移位寄存器对数据进行时钟记录,直到所需数据进入寄存器。将数据输入片上调试寄存器所需的时钟数取决于移位寄存器的长度和同一调试链上任何先前设备的寄存器的长度。JTAG在循环中运行,因此数据输出与数据输入匹配的延迟等于链的总位长度。

要添加到Cliffords answer中,这里有一些图片:


tap控制器状态机是您将在ad nauseum上看到的东西。这确实是JTAG的关键。正如Clifford所说,您可以访问片上调试寄存器。tap控制器状态机对于所有支持JTAG的设备都是通用的,但是您可以通过JTAG访问寄存器的地址、长度等。为了做一些有用的事情,你必须读或写的顺序因供应商而异。例如,一些ARM技术参考手册(针对各种内核)有一个调试TAP控制器章节,其中有这张图片,以及关于读取和写入寄存器或内存或停止处理器等过程的血淋淋的细节。

什么是“JTAG设置内部”呢?对于你所问的问题,它是相当模糊的