通常所说的JTAG大致分两类,一类用于测试芯片的电气特性,检测芯片是否有问题;一类用于Debug;一般支持JTAG的CPU内都包含了这两个模块。
一个含有JTAG Debug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)内置模块的寄存器,象UART,Timers,GPIO等等的寄存器。
上面说的只是JTAG接口所具备的能力,要使用这些功能,还需要软件的配合,具体实现的功能则由具体的软件决定。
例如下载程序到RAM功能。了解SOC的都知道,要使用外接的RAM,需要参照SOC DataSheet的寄存器说明,设置RAM的基地址,总线宽度,访问速度等等。有的SOC则还需要Remap,才能正常工作。运行Firmware时,这些设置由Firmware的初始化程序完成。但如果使用JTAG接口,相关的寄存器可能还处在上电值,甚至时错误值,RAM不能正常工作,所以下载必然要失败。要正常使用,先要想办法设置RAM。在ADW中,可以在Console窗口通过Let 命令设置,在AXD中可以在Console窗口通过Set命令设置。
下面是一个设置AT91M40800的命令序列,关闭中断,设置CS0-CS3, 并进行Remap,适用于AXD(ADS带的Debug)
setmem 0xfffff124,0xFFFFFFFF,32 ---关闭所有中断
setmem 0xffe00000,0x0100253d,32 ---设置CS0
setmem 0xffe00004,0x02002021,32 ---设置CS1
setmem 0xffe00008,0x0300253d,32 ---设置CS2
setmem 0xffe0000C,0x0400253d,32 ---设置CS3
setmem 0xffe00020,1,32 ---Remap
如果要在ADW(SDT带的DEBUG)中使用,则要改为:
let 0xfffff124=0xFFFFFFFF ---关闭所有中断
let 0xffe00000=0x0100253d ---设置CS0
let 0xffe00004=0x02002021 ---设置CS1
let 0xffe00008=0x0300253d ---设置CS2
let 0xffe0000C=0x0400253d ---设置CS3
let 0xffe00020=1 ---Remap
为了方便使用,可以将上述命令保存为一个文件config.ini, 在Console窗口输入 ob config.ini 即可执行。
使用其他debug,大体类似,只是命令和命令的格式不同。
设置RAM时,设置的寄存器以及寄存器的值必须和要运行程序的设置一致。一般编译生成的目标文件是ELF格式,或类似的格式,包含有目标码运行地址,运行地址在Link时候确定。Debug下载程序时根据ELF文件中的地址信息下载程序到指定的地址。如果在把RAM的基地址设置为0x10000000, 而在编译的时候指定Firmware的开始地址在0x02000000, 下载的时候,目标码将被下载到0x02000000,显然下载会失败。
通过JTAG下载程序前应关闭所有中断,这一点和Firmware初始化时关闭中断的原因相同。在使用JTAG接口的时候,各中断的使能未知,尤其是FLASH里有可执行码的情况,可能会有一些中断被使能。使用JTAG下载完代码,要执行时,有可能因为未完成初始化就产生了中断,导致程序异常。所以,需要先关闭中断,一般通过设置SOC的中断控制寄存器完成。
使用JTAG写Flash。在理论上,通过JTAG可以访问CPU总线上的所有设备,所以应该可以写FLASH,但是FLASH写入方式和RAM大不相同,需要特殊的命令,而且不同的FLASH擦除,编程命令不同,而且块的大小,数量也不同,很难提供这一项功能。所以一般Debug不提供写Flash功能,或者仅支持少量几种Flash。
目前就我知道的,针对arm,只有FlashPGM这个软件提供写FLASH功能,但使用也非常麻烦。AXD,ADW都不提供写FLASH功能。我写Flash的方法时是,自己写一个简单的程序,专门用于写目标板的FLASH,利用JTAG接口,下载到目标板,再把要烧写的目标码装成BIN格式,也下到目标板(地址和烧FLASH的程序的地址不同),然后运行已经下载的烧FLASH的程序。使用这种方式,比起FlashPGM的写Flash,速度似乎要快一些。
关于简单JTAG电缆。
目前有各种各样简单JTAG电缆,其实只是一个电平转换电路,同时还起到保护作用。JTAG的逻辑则由运行在PC上的软件实现,所以在理论上,任何一个简单JTAG电缆,都可以支持各种应用软件,如Debug等。我就曾使用同一个JTAG电缆写Xilinx CPLD,AXD/ADW调试程序。关键再于软件的支持,大多数软件都不提供设定功能,因而只能支持某种JTAG电缆。
关于简单JTAG电缆的速度。
JTAG是串行接口,使用打印口的简单JTAG电缆,利用的是打印口的输出带锁存的特点,使用软件通过I/O产生JTAG时序。由JTAG标准决定,通过JTAG写/读一个字节要一系列的操作,根据我的分析,使用简单JTAG电缆,利用打印口,通过JTAG输出一个字节到目标板,平均需要43个打印口I/O, 在我机器上(P4 1.7G),每秒大约可进行660K次 I/O 操作,所以下载速度大约在660K/43, 约等于15K Byte/S. 对于其他机器,I/O速度大致相同,一般在600K ~ 800K.
关于如何提高JTAG下载速度。
很明显,使用简单JTAG电缆无法提高速度。要提高速度,大致有两种办法,
1。使用嵌入式系统提供JTAG接口,嵌入式系统和微机之间通过USB/Ethernet相连,这要求使用MCU。
2。使用CPLD/FPGA提供JTAG接口,CPLD/FPGA和微机之间使用EPP接口(一般微机打印口都支持EPP模式),EPP接口完成微机和CPLD/FPGA之间的数据传输,CPLD/FPGA完成JTAG时序。
这两种方法本人都实现过。第一个方法可以达到比较高的速度,实测超过了200KByte/S(注意:是Byte,不是Bit);但是相对来说,硬件复杂,制造相对复杂。第二种相对来说,下载速度要慢一些,最快时达到96KByte/S,但电路简单,制造方便,而且速度可以满足需要。第二种方案还有一个缺点,由于进行I/O操作时,CPU不会被释放,因此在下载程序时,微机CPU显得很繁忙。
总的来说,本人认为,对于个人爱好者来说,第二种方法更可取。
关键字:嵌入式开发 arm技术 JTAG接口
引用地址:
嵌入式开发arm技术JTAG接口解读
推荐阅读最新更新时间:2024-03-16 13:31
介绍arm技术在PDF中提取图形的方法
用CorelDraw, 高版本比如10.0sp1出错最少 1. 如是多页文档, 用Acrobat(完整版有编辑功能)提取所需的页面, 另存一个新文件. 2. 在CorelDraw导入PDF文件(不用管字体部份), 将导入物件打散, 删除不需要的部份; 3. 保存(导出)/COPY图形. 用CorelDRAW的好处是, 能完整提取矢量图形. 用Acrobat5.0, 指完整版而非Reader 打开文档(如果文档太大图形太多先提取某一页), 用 文件/导出/提取图象 功能直接将PDF中的图形存为单独的文件. 用Acrobat的好处是一次就可以把PDF文档中的所有图形存为独立的光栅图形(JPEG/PNG/TIFF). 最节省的提取方
[单片机]
东芝微电子选择ARM OptimoDE技术用于高性能低功耗数字引擎
东芝微电子授权获得 ARM OptimoDe 技术,用于开发便携式数字设备 ARM 公司 今天宣布东芝微电子公司授权获得了 ARM OptimoDETM 数字引擎技术,将用于先进 SoC 设计的开发。 东芝微电子将使用 OptimoDE 框架和工具环境开发超低功耗的数字引擎,满足在便携设备中进行高精度数字数据处理的需求。 ARM OptimoDE 是一种针对高性能嵌入式信号处理应用的高度可配置超长指令字( VLIW )处理器架构。该处理器的运算和地址生成架构、存储和 I/O 带宽以及相关指令集可以无限制地调整以取得性能、功耗和面积的最佳平衡。通过使用 OptimoDE 技术,东芝微电子将能快速设计和配
[新品]
ARM开发——搭建嵌入式开发环境
ckermit串口工具的下载 sudo apt-get install ckermit 如果我们有新的串口连接上,我们可以通过查看/dev 来看连接的数据 ckermit 配置文件的配置.kermrc set line /dev/ttyUSB0 set speed 115200 set carrier-watch off set handshake none set flow-control none robust set file type bin set file name lit set rec pack 1000
[单片机]
嵌入式开发之STM32开发之EXTI中断使用及踩坑
关键点 中断配置,中断触发 中断配置 中断必然要绑定一个触发中断的外部I/O口,这里我选PA0,对应EXIT0,因为PA0正好对应我板子上的K3键,我需要K3键去触发这个中断 GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; /* config the extiline(PB0) clock and AFIO clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);//GPIOA根据你自己板子设定
[单片机]
嵌入式开发系统编程文件格式解析
摘要: 嵌入式系统编程文件格式多种多样。为方便嵌入式系统开发和深度理解各种目标系统,论文详细分析了多种主流的嵌入式可执行文件(即机器码文件)格式。比较了不同格式的异同点,并介绍了各种嵌入式文件格式的主要硬件系统及目标器件。 1 常见文件格式解析 虽然不同的开发集成环境和不同的硬件架构使得嵌入式设备中可执行文件的格式不尽相同,但基本上包含以下一些典型特征: ① 可执行文件的基本信息,如文件大小、时间、权限等。 ② 与硬件架构相关的二进制代码和数据。 ③ 符号表与符号重定位表。 从文件本身所包含的信息来看,嵌入式系统可执行文件主要有:纯数据类文件,记录类文件以及描述类文件。 1.1 纯数据文件格式 纯数据文件就是指
[工业控制]
Wind River Simics为嵌入式开发人员铺就坦途
新闻要点 ● Wind River® Simics®助力嵌入式开发人员更便捷地改善CI/CD实践并开启DevOps之旅 ● 新功能特性包括性能提升、安全性增强以及在模拟运行时更好的洞察力 ● Simics可以帮助客户模拟和测试传统方法几乎无法复制的复杂场景 领先的智能边缘软件提供商风河公司近日发布了其最新版的 Wind River Simics ®。运用可对实际硬件进行精确建模的虚拟平台,不管是芯片还是最复杂的复合型系统,Simics都能对其进行功能模拟,同时也为嵌入式开发人员提供了一条坦途,以便开展持续集成/持续部署(CI/CD)实践并发展出一整套DevOps文化。 最新版本的Wind River® Simi
[嵌入式]
ARM技术的Cortex-M3微处理器测试方法研究与实现
0 引言 随着半导体技术的发展,集成电路制程工艺从深亚微米发展到纳米级,晶体管集成度的大幅提高使得芯片复杂度增加,单个芯片的功能越来越强。二十世纪90年代ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。采用ARM技术知识产权( IP 核)的微处理器,即ARM 微处理器,已遍及工业控制。消费类电子产 品。通信系统。网络系统。无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32 位RISC微处理器七成以上的市场份额。ARM 芯片的广泛应用和发展也给测试带来了挑战,集成电路测试一般采用实际速度下的功能测试,但半导体技术的发展使得测试开发工程资源按几何规律增长,自动测试 设备(ATE)的性能赶不上日益增加的器件I/O
[单片机]
STM32小问题-复用调试接口JTAG/SWD为普通GPIO
这几天做毕业设计,按键模块用到了PA14和PA15这两个IO口(由于IO是引出到拓展板上,所以刚开始并不知道PA14和PA15是被调试接口占用了)。设置好相应的寄存器后发现只有PA15正常按下能被拉低,而PA14用万用表检测始终处于低电平状态。刚开始我以为这个管脚坏了,就想着设置成输出高电平试试,结果可想而知,查看手册后发现在在复位后JTAG接口的PA14被设置为下拉了,所以按键读回来的永远是低电平。 后来发现核心板上PA15引脚连接到了JTAG接口就想能不能通过复用把这几个口解放出来,毕竟在正常应用中调试接口是不工作的,还不如利用起来(其实是我懒得再改板子PCB了),后来查看手册发现真的可以复用起来。 手册描述如下 手册
[单片机]