JTAG协议 JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试.现在多数的高级器件都支持JTAG协议,如ARM.DSP.FPGA器件等.标准的JTAG接口是4线:TMS. TCK.TDI.TDO,分别为模式选择.时钟.数据输入和数据输出线. 相关JTAG引脚的定义为: TMS:测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式:TCK:测试时钟输入:TDI:测试数据输入,数据通过TD…
工欲善其事,必先善其器.调试器在嵌入式开发调试中的重要性不言而喻,单步.断点和监察的效率远高于串口打印.但是,调试器对于一般开发人员往往是一个黑匣子.今天我们就来谈谈调试器的原理,顺便把自己的几类调试器接线和注意事项记录下来,以便查找.我常常要面对几个方案,而各个方案的调试器都不一样,接线有时连自己都记不住.所以这个帖子应值得嵌入式开发工程师收藏. 一.嵌入式调试多样性 我们先来回想调试的场景,思考一下这几个问题: 1. ARM开发环境有Keil.IAR.ADS等等,我们发现这几个平台都能用同一…
首先要了解一下JTAG. JTAG协议 JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试.现在多数的高级器件都支持JTAG协议,如ARM.DSP.FPGA器件等.标准的JTAG接口是4线:TMS. TCK.TDI.TDO,分别为模式选择.时钟.数据输入和数据输出线. 相关JTAG引脚的定义为: TMS:测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式: TCK:测试时钟输入: TD…
用SWD调试接口测量代码运行时间 关于时间测量的种种问题 在嵌入式中,我们经常需要测量某段代码的执行时间或测量事件触发的时间,常规的思路是: 1:在测量起始点,反转电平2:在测量结束点,再次反转电平 然后通过示波器或者逻辑分析仪来测量反转间隔,也就是代码时间 这种方法,在测量两个或多个时间信号同步的时候,非常有用,实际上,这也是唯一的方法. 但是如果在测量中,其它代码也会控制这个管脚电平或者周期性动作,这时便需要在<动作1>之前增加前导码,从而便于在繁杂的波形中,一眼识别出需要特定的波形 同时…
三线SWD模式Jlink   在公司实习,部门经理让我做一个USB-CAN的适配器. 在网上找资料,找到一个开源的USB-CAN的适配器的资料. 采用的是CP2102芯片实现USB转串口.STM32作为主控,高速CAN收发器采用是TJA1050. 由于USB-CAN适配器要求小巧, 在给STM32烧写程序调试的时候,传统20脚JTAG底座个头大,占用PCB面积多,连接线复杂. 采用SWD模式Jlink,只需要三根线即可与目标板实现通讯,可实现程序下载,单步调试等功能, 除了不能检测目标板电压.不…
目录--点击可快速直达 目录 写在前面 1  SWD协议简介 2  SWD物理层协议解析 2.1  SWD通信时序分析 2.2  SWD 寄存器简介 2.2.1  DP寄存器 2.2.2  AP寄存器 2.3  SWD通信流程 2.3.1  SWD复位 2.3.2  SWD读IDCODE 2.3.3  SWD清除错误标志位,并且使能AP调试 2.3.4  SWD读取AP IDR(也就是AP寄存器的ID CODE) 2.3.5  SWD读写MCU任意寄存器 写在前面 最近由于公司需要,所以就做了个…
前言 为了能使用板载的FreeLink调试器来调试RISC-V内核,我们需要把默认的CMSIC-DAP固件,升级为JLink固件,固件升级之后,通过选择使用不同的驱动程序,来支持ARM内核还是RISC-V内核调试. 准备工作 磨刀不误砍柴工,在进行固件升级之前,请确保准备好以下工具: 固件升级工具LPCScrypt_installer_2.1.0_842.exe openocd调试软件(包含驱动升级工具) 一根Micro USB数据线 一个跳线帽 升级操作 如果以上工具都准备好了,升级操作非常简…
http://blog.chinaunix.net/uid-10106787-id-2985587.html 在C语言程序设计中,常会出现各种各样的bug:段错误.参数异常等等.我们需要尽快定位错误,输出异常信息,出错位置及调用层次等,这对于解决bug问题是非常方便的,所以设计了如下调试接口. 调试级别:共有三级,不同的级别对于错误采取不同的处理方法,如异常退出还是函数返回还是仅仅输出错误信息,调试级别越高,给出的错误信息越详细. 最高调试级别assert,当断言失效时打印最详细的出错信息,包括…
某些时候,我们在使用Altera FPGA的时候,尤其是涉及SoC系统的时候,通常需要一个串口与PC交互.使用Altera的USB-Blaster免去了外接一个串口.我们可以使用下面所述的IP核通过USB-Blaster将PC的字符传入FPGA或者从FPGA将字符数据发送至PC. alt_jtag_atlantic jtag_uart_alt_jtag_atlantic ( .clk (clk), .r_dat (r_dat), .r_ena (r_ena), .r_val (r_val), .…
调试接口,返回的json数据,我定义了一个类,用来序列化,其中有一个字段定义为string 然后序列化的时候报错 在需要解析的类型类上加上声明 eg:…