13

随想录(jtag知识点小结)

 3 years ago
source link: https://blog.csdn.net/feixiaoxing/article/details/93379770
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

随想录(jtag知识点小结)

original.png
费晓行 2019-06-23 12:28:45 articleReadEyes.png 344
分类专栏: 随想录

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

    jtag调试是嵌入式开发中常用的一种调试方法。目前大多数soc都支持jtag调试,开发者只需要一个jtag转接器,一边是usb口连接电脑,一边是jtag连接开发板,就可以顺利进行后续的开发和调试工作了。

1、jtag是硬件协议

    jtag和spi、nand、uart、iic一样,是一个硬件协议,主要由5个pin组成,分别是tdi、tdo、clk、rst、tms。

2、jtag的主要功能

    目前,jtag主要负责下载和调试两个功能。下载,即利用jtag将二进制文件下载到norflash或者是nandflash当中。调试,就是利用jtag实现对cpu的单步调试。这在开发的初始阶段是非常有用的。

3、jtag下载flash的基本原理

    很多时候,jtag实现flash的下载功能,是因为jtag先实现一个最小bin文件,加载到内部sram中。紧接着jtag使能cpu,这个最小bin完成flash的驱动配置,将从jtag接受到文件写入到flash当中去,比如说stm32中下载算法就是这里说的最小bin文件,如果使用的不是通用型flash,那么就需要自己编写。

4、jtag调试原理

    jtag调试离不开cpu内部的debug模块。所有的断点设置、外设访问、寄存器读取、ram操作这些动作都需要cpu的配合。除此之外,为了实现jtag和gdb的完美配合,还需要在上位机侧实现一个gdbserver + commnd解析工具,实现pc和usb的通信。

5、jtag的硬件实现

    目前网上有一些jtag的开源实现方法,比如说openjtag。要做一个适合自己的仿真器或者下载器,一般需要一个stm32芯片,负责pc和仿真器通讯(usb通信),还需要一个fpga,负责jtag的收发操作。当然,fpga中的verilog代码也是需要自己完成的。

6、jtag的软件实现

    除了硬件之外,jtag还需要一个command上位机程序、一个下位机的固件程序。当然,为了方便上位机使用,还需要设计一个GUI、gdbserver、command parse的框架。

7、jtag的基本流程

    pc -> || usb -> stm32 -> fpga || -> dev board

    pc <- || usb <- stm32 <- fpag || <- dev board

8、目前市场上的jtag工具

    由于现在电脑普遍没有并口,现在用的最多的jtag调试工具还是jlink或者openjtag这样的usb转jtag调试板。

9、什么情况下不需要jtag

     目前很多开发板支持从sd卡启动系统,那么这个时候其实不存在flash烧录的情况,也就无所谓jtag功能了。通常,一般的soc支持jtag、norflash、nandflash、sd四种启动方式,如果能用sd卡启动,那也是非常不错的一种选择。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK