- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图了解 JTAG 调试背后发生的过程。
据我了解,支持 JTAG 调试的设备在设备中有一个特殊的组件,称为 DOC(片上调试)。该组件的核心是 TAP Controller ,负责执行来自连接的 JTAG 适配器的请求。
有人可以解释一下适配器向 TAP Controller 发送暂停请求时会发生什么吗?我对电信号的细节不感兴趣,但对过程更感兴趣。是否必须设置 DOC 的任何寄存器才能停止系统?如果是这样,DOC 如何“知道”何时检查该寄存器的值?
我还知道,在大多数 ARM 处理器上,除非停止,否则 DOC 无法访问内核寄存器。但是任何内核进程都可以访问 DOC 的寄存器吗?
谢谢你!
最佳答案
arm 文档描述了调试抽头 Controller 、jtag 可访问寄存器、执行暂停或来自 jtag 的任何其他命令所需的寄存器写入和读取序列。
http://infocenter.arm.com
有两种基本方法
1) JTAG 并不是为了芯片和电路板测试而发明的软件调试平台。即使它已经用于芯片和电路板测试,您也可以将它用于软件调试。您可以做的非常丑陋但实用的事情是使用 jtag 接管芯片中的位,例如边界扫描,并通过控制时钟输入来单步处理处理器。您还可以接管外部总线,例如启动闪存等 - 丑陋但功能齐全。
2) 您在开发处理器时考虑到了基于 JTAG 的调试,因此到内核的管道以某种形式或方式完全集成了这种调试(这取决于处理器供应商和产品线,也许每个设计工程师都有自己的事物)。您基本上是通过 JTAG 接口(interface)发送命令或与调试器中的寄存器通信,这些寄存器以设计人员允许的任何方式控制处理器。
现在为了利益,ARM 或 mips 或 Intel 或任何不会每次都重新设计他们的 ocd 的人。如果他们每次都更改它,那么所有工具供应商都必须投资NRE支持新事物,最终或不时他们会查看您的产品或市场并决定他们不会支持该新芯片/设计。如果使用相同的片上调试器或相同的基线设计,可能经常使用新的可选功能,那么工具供应商无需更改任何内容,或者只需将另一个 JTAG ID 添加到他们的已知处理器列表中类型,并且他们的其余代码不必更改。
关于debugging - JTAG 调试器如何停止基于 ARM 的设备的内核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19512460/
我所拥有的是直接访问 Atmel CPU 上的四个 JTAG 接口(interface)引脚。 我需要的是低级 C 代码来调整这些引脚并实现两个功能: ReadMemoryWord(address)
谁能帮助我理解 openocd 的“无效命令名称”错误?一些细节: openocd 0.7.0 windows 二进制文件 olimex arm-usb-ocd-h 适配器 基于 lpc3250 ph
假设我有一个 JTAG 链,其中包含来自不同制造商的多个设备:我的软件应与该链中的特定系统通信,如何知道链中所有其他设备的 IR 长度?我必须知道他们才能向我的设备发送特定指令,对吗? 最佳答案 可以
我了解 JTAG 如何用作边界扫描器(http://www.fpga4fun.com/JTAG1.html 中有非常清晰的解释)。然而,我看不出如今 JTAG 如何用作硬件级调试器(有点类似于在线仿真
我使用 SWD 在 stm32 芯片中加载固件和调试。它使用 3 个引脚:SWCLK(TCK) , SWDIO(TMS)和 GND . 我可以使用 SWD 接口(interface)中未使用的其他 J
我是 FPGA 新手,我正在尝试在 Lattice iCE40 FPGA 上设置一个有效的 JTAG。我使用的开发板来自 Olimex,具有 iCE40-HX8K FPGA。 我使用 urjtag 作
最近我买了一个 ESP32 开发套件和一个低预算的 FT4232H jtag 适配器,我设法使用 Espressif-idf 插件在 VSCode 中进行设置。 基本上到目前为止它似乎有效。我可以从
我有一个用 Verilog 编写的简单 Controller ,用于配置 Altera 的 TSE MAC。到目前为止,这相当简单。然而,我接下来想做的是设置很多 Marvel PHY 的设置,并继续
在 Emacs 24+ 的开发版本中通过 ELPA 使用 jtags-mode(版本 0.96),我似乎无法以编程方式启用次要模式(手动调用工作正常)。在深入了解我尝试过的内容和我期望的设置之前,最重
我试图了解 JTAG 调试背后发生的过程。 据我了解,支持 JTAG 调试的设备在设备中有一个特殊的组件,称为 DOC(片上调试)。该组件的核心是 TAP Controller ,负责执行来自连接的
我正在使用 gdb 进行调试。我想知道 gdb 如何在内部工作以通过 JTAG 在嵌入式处理器上设置断点。 最佳答案 它要么对硬件断点寄存器进行编程,要么通过将断点处的指令替换为会导致异常的指令来放置
我使用的是 NXP LPC1769,它包含一个 Cortex-M3。到目前为止,我只是从 JTAG 接口(interface)访问它,但现在我必须以相反的方式进行访问。 IT 例程应该读取内存的某些部
好吧,我对 ARM 处理器的编程有点困惑。一连串的提问时间: 如何将编译后的二进制文件放入 ARM 处理器? JTAG 是正常方法吗(我认为这就是我的研究表明的......)? 这是唯一的方法吗? 如
假设您有一个指向函数的指针,您没有它的源并且它是“不受信任的”,因为它可能读/写到不允许的内存区域。 在它执行每条汇编指令之前,您要验证它不会访问不允许的内存区域。 操作系统(几乎)是裸机,即自定义
我正在使用 at91sam9260 进行开发。其中运行着一个 Linux 内核,我在其上启动了自己的软件。 我想知道我是否可以使用 JTAG 调试器来调试我正在使用的软件,而无需了解 Linux 内核
这将打开变量 a 的窗口: v.v a 在同一窗口中查看变量 b。怎么办? v.v b 我知道这可以将它们放在同一个窗口中,但我想稍后再查看 b v.v a b 最佳答案 我自己想的。 Var.Add
我正在“玩”rm48 板(Texas Instrument RM48L952、ARM CORTEX-R4F),并且我想对循环进行计时(例如)。 char message[20]; int temp=0
从 Java 调用 Corelis Jtag USB-1149.1_1E 的 DLL 方法时遇到问题,即使我可以从 Labview 调用它。在 Corelis 用户指南中,scan_multiple
我今天从官方 Arch Linux 存储库安装了 Openocd,现在尝试将它与我的 JTAG 适配器一起使用 ULINK-ME 。我发现ULINK-ME使用CMSIS-DAP调试固件。 Openoc
在 SAM4C 微 Controller 平台上,time() 函数在库中调用。我发现,当我从调试器启动时,这给出了正确的时间 (1496321612)。然而,当我在电路板上进行硬件重置并且闪存固件在
我是一名优秀的程序员,十分优秀!