通过JTAG口写入程序方法
- 格式:pdf
- 大小:3.57 MB
- 文档页数:9
AVR单片机JTAG接口的使用方法AVR单片机JTAG(Joint Test Action Group)接口是一种用于单片机的调试和编程工具。
它提供了一种高效的方式来进行硬件调试、固件编程和软件调试。
在本文中,我将详细介绍AVR单片机JTAG接口的使用方法。
1.JTAG接口简介JTAG接口由四条线组成,分别是TCK(时钟线)、TMS(状态线)、TDI(数据输入线)和TDO(数据输出线)。
它是一种串行接口,用于与其他外设进行通信。
JTAG接口能够通过硬件调试、固件编程和软件调试来提高系统调试的效率。
2.JTAG接口的初始化在使用JTAG接口之前,需要对其进行初始化。
首先,需要确定使用的JTAG接口类型,然后根据类型选择与之匹配的调试工具和软件。
接下来,需要连接JTAG接口的四个引脚到单片机的相应引脚上。
通常,这些引脚在单片机的数据手册中有详细的说明。
3.JTAG接口的连接连接JTAG接口的四个引脚到单片机的相应引脚上,确保连接正确无误。
通常,TCK(时钟线)和TMS(状态线)引脚是共享的,它们分别连接到单片机的相应引脚上。
TDI(数据输入线)和TDO(数据输出线)引脚则是分别连接到单片机的相应引脚上。
请务必根据单片机的数据手册正确连接JTAG接口引脚。
4.JTAG接口的编程在使用JTAG接口进行编程之前,需要确保已经安装了合适的调试工具和软件。
这些工具和软件可以帮助我们完成对单片机的编程操作。
通常,这些工具和软件提供了一些简单的命令和接口,用于与单片机进行通信。
通过这些命令和接口,我们可以读取和写入单片机的内部寄存器,从而实现对单片机的编程操作。
5.JTAG接口的调试使用JTAG接口进行调试可以帮助我们找到系统中的错误和问题。
通过读取和写入单片机的内部寄存器,我们可以查看程序的执行状态、输入和输出数据、栈的使用情况等信息。
通过这些信息,我们可以判断程序中的错误和问题,并进行调试操作。
6.JTAG接口的注意事项在使用JTAG接口之前-确保JTAG接口的引脚连接正确无误,避免引脚连接错误导致的通信问题。
ARMJTAG口在写入bootloader中的应用作者:唐德军来源:《电脑知识与技术·学术交流》2008年第27期摘要:该文描述了如何使用JTAG口直接操作ARM CPU写FLASH芯片的流程。
对致力于嵌入式操作系统学习人员有所帮助。
关键词:嵌入式;ARM;JTAG中图分类号:TP338文献标识码:A文章编号:1009-3044(2008)27-2099-02Write BOOTLOADER to FLASH with ARM JTAGTANG De-jun(Ningbo Yi-zhou Investment Group Co., Ltd.,Ningbo 315100,China)Abstract: This dissertation describe how to write program of bootloader to boot flash. Embedded operating system dedicated to the study staff help.Key words: ARM; JTAG; embedded system在ARM7/ARM9的应用中,一个最重要的步骤是Bootloader如何写入。
目前,大部分人使用编程器来写入Bootloader程序到启动FLASH芯片中,然后把启动FLASH芯片插入芯片座来达到启动的目的。
这种方法有以下几个麻烦:1) 需要焊接一个FLASH芯片的插座,FLASH 芯片型号根据封装分有PLCC和TSOP和FPGA三种,PLCC是使用最广泛的用作启动芯片的封装,TSOP和FPGA插座在实际生产过程中非常麻烦;2) 启动FLASH容量不够,大部分应用需要增加一片操作系统和应用程序存放的FLASH芯片;3) 生产工序工位增加了,贴片生产时需要增加一个工位来预先写入程序到FLASH芯片。
本文向广大嵌入式研发工程师提供一种通用ARM芯片的JTAG接口,在没有启动程序或有程序的情况下,重新写入启动程序的方法。
单片机程序烧录的3种方式(ISP、ICP、IAP)是什么说起给单片机烧录程序,大家应该都不陌生吧,我最早接触单片机是从51单片机开始的,型号是STC89C52RC,当时烧录程序就是用的下面这种烧录软件——STC-ISP。
这种方式,通过串口连接单片机,选择一个合适的波特率就可以烧录了。
后来学习STM32,编程时使用KEIL软件自带的下载按钮就能下载程序,方便了不少,但需要额外使用J-Link等下载器。
再后来,接触到产品研发,给已经发布出的产品升级,都是要靠远程无线升级的(想想看,产品已经到客户那里了,当软件需要升级时,要是还使用有线的方式烧录程序,得有多麻烦)既然给单片机烧录程序的方式有多种,那烧录方式具体怎么分类呢?可以分为3种:ISP(In-System Programming)在系统编程,使用引导程序(Bootloader)加上外围UART/SPI等接口进行烧录。
ICP (In-circuit programmer)在电路编程,使用SWD/JTAG接口。
IAP(In-Application Programming)指MCU可以在系统中获取新代码并对自己重新编程,即用程序来改变程序。
这3种烧录方式的原理是什么呢?在分析原理之前,需要先了解一下单片机Flash的访问地址,看看程序是烧录到哪个位置了。
单片机Flash在地址映射表中位置下图是一张STM32F4xx的地址映射表,从0x0000 0000到0xFFFF FFFF,总计4Gbyte。
单片机的片上Flash、片上RAM、片上外设以及外部扩展接口的访问地址,都被映射到这4Gbyte的范围之内。
这张图中,我们需要先注意下半部分Main memory 主存储区通常,我们编写的代码,是放到主存储区的起始位置(0x0800 0000)开始运行的,烧录程序时,直接将程序烧录到这里即可(KEIL 软件给STM32烧录程序的默认烧写地址就是0x0800 0000开始)System memory系统存储区System memory(起始位置0x1FFF 000)是STM32在出厂时,由ST在这个区域内部预置了一段BootLoader,也就是我们常说的ISP程序,这是一块ROM,出厂后无法修改。
什么是JTAG及其使用方法JTAG(Joint Test Action Group)是一种用于测试和调试电子设备的接口和协议标准。
它最初是由一组芯片制造商于1985年共同开发的,并被广泛应用于各种数字电路和嵌入式系统中。
JTAG可以通过一组标准的测试和调试功能,提供对目标设备内部电路的控制和观察。
JTAG的使用方法包括以下几个方面:1.设备连接:使用JTAG接口连接目标设备和测试设备。
JTAG接口通常由四个线路组成,即TCK(时钟)、TMS(状态机控制)、TDI(数据输入)和TDO(数据输出)。
这些线路通过专门的JTAG连接器或引脚与目标设备连接。
2.设备识别:测试设备通过JTAG接口与目标设备通信,并识别目标设备的类型和功能。
这通常是通过发送一系列特定的指令和信号来实现的。
目标设备需要支持JTAG协议,并在芯片内部集成了JTAG控制逻辑。
3.测试模式:JTAG可以让我们在目标设备的测试模式下运行和测试其内部电路。
在测试模式下,我们可以检查和修改目标设备内部各个电路的状态和数据。
测试模式通常使用状态机来控制目标设备的测试流程。
4.调试功能:JTAG还提供了强大的调试功能,允许工程师监视和控制目标设备的执行过程。
通过JTAG接口,我们可以在目标设备运行的任何时候停止执行,并检查寄存器、内存和其他关键数据。
同时,我们还可以通过JTAG接口修改寄存器和内存中的数据,以调试软件和硬件问题。
5.效能测试:除了测试和调试功能之外,JTAG还可以用于测试目标设备的性能和效能。
通过发送特定的信号和指令,我们可以控制目标设备的工作频率、电压和其他工作参数,以评估其在不同工作条件下的性能。
需要注意的是,JTAG只是一个接口标准和协议,而实现JTAG功能的具体硬件和软件可能因厂商和设备类型而有所差异。
因此,在实际使用JTAG之前,我们需要了解目标设备的JTAG接口规格和支持的JTAG功能。
总之,JTAG是一种强大而灵活的测试和调试接口,它能够帮助我们识别和解决各种硬件和软件问题。
jtag烧写flash原理JTAG烧写Flash原理一、JTAG简介JTAG(Joint Test Action Group)是一种标准的芯片测试和编程接口,它可以在不需要物理插头的情况下测试和编程芯片。
它是由IEEE (Institute of Electrical and Electronics Engineers)制定的标准,目前已经成为了一个广泛应用于数字电路测试和调试的标准接口。
二、JTAG烧写Flash原理Flash存储器是一种非易失性存储器,它可以在断电后保持数据。
因此,Flash存储器被广泛应用于各种嵌入式系统中。
在设计和开发过程中,需要对Flash存储器进行烧写操作以更新或修改程序代码。
JTAG接口可以用于烧写Flash存储器。
其原理如下:1. JTAG接口连接首先,将目标设备的JTAG接口与烧写设备的JTAG接口相连。
这个连接通常包括四个信号线:TCK、TMS、TDI和TDO。
2. 进入ISP模式通过向目标设备发送特定的命令序列,在目标设备中进入ISP(In-System Programming)模式。
在ISP模式下,目标设备将会响应来自烧写设备的命令,并将Flash存储器暴露给烧写设备。
3. 读取Flash存储器状态烧写设备通过JTAG接口向目标设备发送命令,以读取Flash存储器的状态。
这些状态包括Flash存储器的大小、页大小、块大小以及是否需要擦除等信息。
4. 擦除Flash存储器在烧写新程序代码之前,必须先将Flash存储器擦除。
为了提高效率,通常只需要擦除需要烧写的代码所在的块。
5. 写入新程序代码在完成Flash存储器的擦除后,可以开始写入新程序代码。
烧写设备通过JTAG接口向目标设备发送命令和数据来完成这个过程。
通常,数据是按页或块大小分批次写入的。
6. 验证新程序代码在完成新程序代码的烧写后,需要进行验证以确保数据正确性。
烧写设备通过JTAG接口向目标设备发送命令和数据来读取已经烧写到Flash存储器中的数据,并将其与原始数据进行比较。
1.文档目的如何使用openjtag或者easyopenjtag烧写代码到nor flash或者nand flash中2.视频资源请看韦老师第一期的下列视频《第0课第1节_刚接触开发板之接口接线工具》《第0课第2节_刚接触开发板之烧写裸板程序》3.驱动安装,请看上面2中的两个视频,已经非常详细。
4.下载步骤此步骤只是一个简要说明,视频更加详细准备工作:第一小步:将Openjtag的USB口接到电脑的USB口后,Openjtag电源指示灯常亮,关闭JZ2440V2开发板的电源,将Openjtag的排线接到开发板的JTAG口。
由于很多同学出现openjtag或者easyopenjtag烧写不成功,主要原因是openjtag或者easyopenjtag经过转接板后的线与开发板的JTAG接口没有插稳,下面详细说明如何插稳。
JZ2440与OpenJtag的接线示意图。
将openjtag或者easyopenjtag的连线端有一个凸出的一面,将凸出的一面指向纽扣电池一侧。
同时插入的时候注意将连接端的中心位置对中开发板的JTAG接口。
这样才能,做到将连接端的20个插口对准开发板的JTAG接口的20根针。
插入的结果如下:第二小步:选择开发板从Nor 或者Nand flash启动,插上电源适配器,按下开发板的电源按钮后,开发板的电源指示灯常亮,Openjtag状态指示灯常亮最后,openjtag烧写程序时的接线如下:注意:openjtag或者easyopenjtag下载时,从Nor flash启动还是Nand flash启动都支持的。
第三小步:确认第二步:下载第一小步:打开DOS命令行在开始的命令行中,输入cmd后,按下回车键,打开cmd.exe,从而启动DOS命令行。
第二小步:在DOS命令行里先切换切换到oflash软件目录,然后输入oflash并回车打开oflash.exe,假设:oflash存放路径为C:\Windows\System32\oflash如上图,先切换到C:\Windows\System32\oflash目录,然后显示该目录内容,发现存在oflash,然后输入oflash回车后打开了对应的oflash.exe软件。
mcu烧录方法
MCU烧录方法是指通过特定的工具和步骤将程序代码烧录到微控制器单元中,以实现控制电路的功能。
以下是常用的MCU烧录方法:
1. ISP烧录法:ISP烧录法是通过串口或USB口与微控制器单元相连,将程序代码下载到单元内部的非易失性存储器中。
2. JTAG烧录法:JTAG烧录法是通过JTAG接口与微控制器单元相连,将程序代码下载到单元内部的闪存或EEPROM中。
3. SWD烧录法:SWD烧录法是通过SWD接口与微控制器单元相连,将程序代码下载到单元内部的闪存或EEPROM中。
4. USB烧录法:USB烧录法是通过USB接口与微控制器单元相连,将程序代码下载到单元内部的闪存或EEPROM中。
无论采用哪种烧录方法,都需要具备相应的烧录工具和软件,并按照具体的步骤进行操作,以保证程序代码的正确烧录和运行。
- 1 -。
Keil是一个常用的嵌入式开发环境,用于编写、编译和调试嵌入式系统的程序。
在Keil中,可以使用多种方式来烧写程序到目标设备上,下面是一些常见的烧写方式:
通过串口烧写:这是最基本的一种烧写方式,需要将目标设备的串口与电脑连接起来,然后在Keil中选择通过串口烧写程序。
这种方式比较适合于调试阶段和烧写小型程序。
通过JTAG接口烧写:JTAG接口是一种标准的调试接口,可以用于烧写程序到目标设备上。
需要在目标设备上连接一个JTAG适配器,然后在Keil中选择通过JTAG接口烧写程序。
这种方式比较适合于烧写大型程序和生产环境。
通过ISP接口烧写:ISP接口是一种通用的编程接口,可以通过它来烧写程序到目标设备上。
需要在目标设备上连接一个ISP适配器,然后在Keil中选择通过ISP接口烧写程序。
这种方式比较适合于烧写程序到Flash存储器中。
通过SD卡烧写:如果目标设备支持SD卡,可以将程序烧写到SD卡中,然后将SD卡插入到目标设备中即可。
需要在Keil中选择通过SD卡烧写程序,并确保SD卡的格式化和文件系统正确。
总之,Keil提供了多种方式来烧写程序到目标设备上,具体选择哪种方式需要根据实际情况来决定。
stm32 stlink烧写程序原理STM32 STLink是一种用于烧写程序的工具,它是一款基于USB接口的调试和编程工具,可以与STM32系列单片机连接,并通过SWD(Serial Wire Debug)接口进行调试和编程。
STLink的烧写程序原理主要包括以下几个方面:连接、通信、烧写。
我们需要将STLink通过USB接口连接到计算机上。
连接成功后,STLink会被识别为一个虚拟串口设备,可以通过计算机上的串口工具进行通信。
接下来,我们需要将STLink与目标STM32单片机进行连接。
STLink提供了两种连接方式:SWD和JTAG。
其中,SWD是一种占用引脚较少、速度较快的调试接口,适用于大多数STM32单片机;而JTAG是一种功能更强大、适用于复杂调试场景的接口。
根据实际情况选择适合的连接方式,并将STLink的SWD/JTAG接口与目标单片机的对应接口相连。
连接完成后,STLink与目标单片机之间就建立了通信通道。
通过SWD/JTAG接口,STLink可以读取和写入目标单片机的内部寄存器和存储器,实现调试和编程的功能。
在进行烧写操作之前,我们需要准备好待烧写的程序文件。
这个程序文件通常是通过编译器生成的,包含了目标单片机的机器码指令和相关数据。
烧写程序的过程主要包括以下几个步骤:擦除、编程、校验。
STLink会向目标单片机发送擦除命令,将目标单片机的Flash存储器擦除为全0状态。
擦除完成后,目标单片机的Flash存储器中的原有程序和数据都被清空。
接下来,STLink会将待烧写的程序文件按照一定的格式发送给目标单片机,实现对Flash存储器的编程。
编程过程中,STLink会将程序文件中的机器码指令逐条写入目标单片机的Flash存储器中,同时将相关数据写入目标单片机的存储器中。
STLink会对烧写结果进行校验,以确保目标单片机的Flash存储器中的程序与待烧写的程序文件完全一致。
校验过程中,STLink会逐个比较目标单片机存储器中的每个字节与程序文件中的对应字节是否相同,如果存在差异则表示烧写失败。
通过网口烧写程序(完整版)作者:李福勇(lfy)此前我在中国EDA技术网论坛发表了一篇《通过网口烧写程序》的文章,许多朋友在应用简易JTAG调试和用我写的方法烧写程序的时候出现一些问题,因此我在这篇文章中详细解析大家所遇到的问题,以及解决的方法,避免以后学习的人再犯同样的错误,浪费宝贵的学习时间。
正常调试程序我们是应该用仿真器的,它调试稳定而且速度很快,不过它的不菲的价格也令很多希望学习ARM的朋友望而却步,因此价格便宜的简易JTAG就成了一种流行的折衷方案。
但是正是由于它的“简易”给大家使用中制造许多麻烦,以至于要拿出一定的时间和精力来学习怎样能正确的使用它。
下面我把大家经常出现的问题以及解决的方法列出来,以飨大家:第一个问题就是烧写的问题,网上比较流行的两个通过简易JTAG烧写程序的软件就是FLUTED和FLASHPGM。
FLUTED是一种WIN98下运行的比较简单的烧写软件,目前许多网友通过PORTTALK打开相应的硬件端口也可以在WIN2000下应用FLUTED软件。
但是此软件烧写速度很慢,几十K的程序需要烧写十几分钟,而且烧写成功率比较低。
根据我实际应用的经验,主要还是JTAG下载时复位有问题,需要关闭开发板的电源,等一会再上电,烧写时成功的几率就比较大了。
另一个烧写软件就是FLASHPGM,此软件有良好的GUI操作界面,下载速度和成功率也很高,然而它的烧写速度与通过网口烧写的速度是无法比拟的。
而且关于它的烧写方法即使中国EDA技术网提供了演示动画,大家在应用时也会出现一些问题,同时它需要WIGGLER接口小板的支持。
第二个问题就是调试的问题,通过简易JTAG调试程序需要先执行一个JTAG.EXE的软件在后台运行,此软件也是一个WIN98下的应用软件,也可以通过PORTTALK打开相应的硬件端口在WIN2000下应用。
目前网上也提供了专门在WIN2000下应用的JTAG2000.EXE软件,可以直接在WIN2000下应用,具体装载方法请参阅软件包的说明文件。
j-link 烧录程序原理
J-Link是一种USB到JTAG仿真器,用于调试和烧录嵌入式设备的程序。
它的工作原理如下:
1.连接:将J-Link与电脑和目标板连接,JTAG仿真器与微控制器通过JTAG连接。
2.复位:J-Link会向微控制器发送复位信号,使其重新启动。
所有的芯片在上电复位期间会执行一系列默认操作,如设置系统时钟、初始化RAM等,保证芯片正常运行。
3.初始化:J-Link读取目标硬件的设备ID和Memory Map,以了解其特性和内存架构。
随后,J-Link会在设备内存中加载其对应的调试驱动程序,为后续功能提供支持。
4.调试:启动调试器软件,调试器会与J-Link建立连接。
通过调试接口(例如GDB或Visual Studi),调试器可以访问所有设备内部的寄存器和存储器,进行监视、修改甚至单步执行等操作。
5.烧录:启动烧录器软件,烧录器会与J-Link建立连接,通过调试器软件读取目标程序二进制文件。
烧录器会将二进制数据通过JTAG信号写入目标设备的Flash或EEPROM中,完成程序烧录的过程。
总之,J-Link依靠通过JTAG连接与目标硬件通信,通过调试器软件进行调试、烧录器软件进行烧录,为嵌入式系统的调试和开发提供必要的支持。
简易JTAG烧写程序的执行逻辑和流程简易JTAG烧写程序的执行逻辑和流程本文摘自王洪辉老师的《嵌入式系统Linux内核开发实战指南(ARM平台)》一书网上有很多种简易JTAG烧写程序,有用标准C写的,有用VC写的,有Windows系统下使用的版本,也有Linux系统下使用的版本,读者可以自行下载后作适当修改重新编译就可使用了。
不管什么版本的程序,其基本原理和执行逻辑应该是差不多的,本书附带光盘中有我所下载、修改、使用的JTAG烧写程序完整源代码,读者可以参考阅读。
如图10-6所示是该程序的总体流程。
烧写程序维护两个扫描链表缓冲区,一个对应输入,一个对应输出。
一个扫描链缓冲区就是一个int型整数数组,数组的长度为CPU 的管脚(PIN)数,数组中的每个元素对应一个管脚的状态,一个管脚的状态只有两种:0或者1,事实上用1位就可以描述这两种状态,而程序中用一个int整数来描述是很浪费的,感兴趣的读者可以对程序进行修改优化。
输入扫描链表数组用来保存刚从CPU扫描出来的每个管脚的状态,而输出扫描链表数组用来保存将扫描到CPU的管脚中的状态。
对flash芯片编成首先必须将flash芯片擦除,然后再对其进行写操作,擦除flash芯片可以逐个扇区擦除,也可以一次擦除整个芯片,对flash芯片进行擦写的时序和命令请查看具体flash芯片型号的datasheet。
通过简易JTAG线缆读写flash芯片数据必须逐个字节进行读写,操作过程都很类似,以读flash为例,操作过程如下:1)把CPU各管脚的安全状态写入到输出扫描链表数组中;2)将“SAMPLE”命令扫描到CPU的TAP控制器中;3)将输出扫描链表数组中的状态扫描到CPU的TAP控制器中;4)再次将“SAMPLE”命令扫描到CPU的TAP控制器中;5)将“EXTEST”命令扫描到CPU的TAP控制器中;6)执行for循环逐个字节读取数据,循环次数等于要读取的数据长度:先将要读取的flash的地址的地址管脚状态写入输出扫描链表数组对应的元素中,然后将输出扫描链表数组中的状态扫描到CPU的TAP控制器中,与此同时将CPU管脚的状态同步输入到输入扫描链表数组中,然后从输入链表数组中提取flash数据。
第二章使用openjtag或easyopenjtag烧写代码2.1 easyopenjtag和openjtag介绍openjtag或者easyopenjtag支持将代码烧写到Nor flash或nand flash,而市面上的jlink 只能将代码烧写到nor flash中。
2.2 推荐的下载烧写方式总结为了方便描述,将openjtag/easyopenjtag简记为op/eop。
程序下载烧写可以分为:下载步骤,烧写步骤。
op/eop是通过jtag协议、nor flash驱动和nand flash 驱动,下载要烧写文件到op/eop 工具的内部芯片,然后将烧写文件直接烧写到nor /nand flash中。
下面的表格详细说明推荐的烧写方式。
为了方便快捷,大幅度降低入门学习门槛和学习难度(韦东山第一期主讲ARM9裸机),强烈建议两点:1.使用op/eop将光盘\bin\uboot.bin烧写到nor flash中2.使用op/eop直接将裸机代码烧写到nand flash中从表格中可以看出uboot的重要性,为了降低学习难度,强烈建议将百问网提供的光盘\bin\u-boot.bin(该uboot功能完整,支持USB方式的dnw下载,网络下载,nand flash擦除、写入),从而借助nor flash中功能完整的uboot去烧写裸机代码,uboot代码,linux内核,文件系统到nand flash中。
mtdparts=mtdparts=nandflash0:256k@0(bootloader),128k(params),2m(kernel),-(root)2.3 连接PC、openjtag、JZ2440开发板特别说明:op与eop的连接方法、驱动安装、程序烧写方法都完全一致,仅以op为例说明。
由于很多同学出现openjtag或者easyopenjtag烧写不成功,主要原因是openjtag或者easyopenjtag开发板的JTAG接口没有插稳,下面详细说明如何插稳。
XILINX JTAG加载文件移植说明我们知道xilinx 的fpga芯片本身是不存储程序的,有些项目会采用一个单片机在设备上电后通过单片机读取内存芯片或者sd卡中的镜像,烧录进FPGA来开始工作。
这需要在单片机上移植一套Jtag协议。
移植文件可以到xilinx官网找。
JTAG移植文件主要有lenval.c、micro.c、port.c及相关.h文件。
移植时主要修改port.c。
这是直接跟底层相关的。
micro.c是内部的一些状态机转换的函数,移植调试时可能需要了解一下但基本不用改。
micro.c的开头有一个开启调调试#ifdef DEBUG_MODE//FILE* in; /* Legacy DEBUG_MODE file pointer */int xsvf_iDebugLevel=1;#endif /* DEBUG_MODE */为1时运行时是没有太多信息打印出来的,一般设为5,会把相应的信息打印出来,如执行错误时的错误信息,还有运行指令时的指令信息以及要烧写的数据都会打印出来。
极大方便调试,调试完成后关闭以提高加载速度。
extern int xsvfExecute(void);是我们需要调用的函数。
lenval.c主要处理文件内部的变量,也不用修改。
它的头文件有个#define MAX_LEN 7000。
如果cpu缓存很小的话可以考虑把他改小一点,比如1000。
port.c里面先是修改好对应的IO。
TMS ,TCK,TDI都是输出。
(TDI其实是数据输入的意思,但是这里是直接接到FPGA的TDI的,对FPGA 来说是输入),TDO为输出。
调试是为了便于观察可以在TCK后加点延时方便看到波形。
这里延时1us,时钟周期大概3us.这些都是比较好修改的。
主要的里面的*in指针和void readByte(unsigned char *data)函数。
我就是陷在这里的死胡同一个星期才搞出来。
*in其实就是为void readByte(unsigned char *data)服务的。
JTAG口及其对Flash的在线编程摘要:通过JTAG实现对Flash在线编程。
首先,介绍JTAG的定义、结构及引脚的定义,并阐述JTAG状态机的工作原理。
然后,介绍JTAG口的边界扫描寄存器,给出实现JTAG 在线写Flash的电路,和如何通过JTAG实现Flash的编程及程序流程图。
关键词:JTAG Flash 在线编程随着嵌入式技术的发展,在一些高端的掌上设备中,都使用了Flash芯片,如Compaq的iPAQ、联想的天祺系列等产品。
但对于研发人员来说,在开发阶段需要大量的程序调试,就意味着要对Flash进行擦除和改写的工作,因此,如何对Flash进行在线编程是问题的关键所在。
本文介绍一种通过JTAG对Flash进行的在线编程方法。
1 JTAG简介JTAG(Joint Test Action Group)是1985年制定的检测PCB和IC芯片的一个标准,1990年被修改后成为IEEE的一个标准,即IEEE1149.1-1990。
通过这个标准,可对具有JTAG口芯片的硬件电路进行边界扫描和故障检测。
具有JTAG口的芯片都有如下JTAG引脚定义:TCK——测试时钟输入;TDI——测试数据输入,数据通过TDI输入JTAG口;TDO——测试数据输出,数据通过TDO从JTAG口输出;TMS——测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式。
可选引脚TRST——测试复位,输入引脚,低电平有效。
含有JTAG口的芯片种类较多,如CPU、DSP、CPLD等。
JTAG内部有一个状态机,称为TAP控制器。
TAP控制器的状态机通过TCK和TMS进行状态的改变,实现数据和指令的输入。
图1为TAP控制器的状态机框图。
2 JTAG芯片的边界扫描寄存器JTAG标准定义了一个串行的移位寄存器。
寄存器的每一个单元分配给IC芯片的相应引脚,每一个独立的单元称为BSC(Boundary-Scan Cell)边界扫描单元。
第10章自制简易JTAG下载烧写工具对于普通嵌入式系统爱好者来说,不太可能花太多的钱去买比较高档的调试仿真工具来调试我们自己的目标板,最经济的做法就是自己制作一个简单JTAG线缆用来烧写flash,先将bootloader固化到flash中,因为bootloader编译出来都很小,一般几十KB,最多几百KB,用简易JTAG烧写不需要多少时间,如果顺利,bootloader能够正常工作,那么就可以在bootloader菜单中通过串口或者TFTP下载其他程序到目标板的DRAM中进行运行调试或者烧写最后定型的软件,因为通过串口或者TFTP下载的速度比简易JTAG线缆下载烧写速度快。
当然也可以从网上搜索购买一个简易JTAG线缆(很便宜,最多不超过50RMB),不管是什么版本都行,然后用我们下面介绍的简易JTAG烧写软件来烧写目标板的flash,使用烧写软件之前只需先根据所购买JTAG线缆的具体连线图中并口与JTAG口的对应关系适当修改源代码中的管脚变量定义,然后重新编译链接就可以了。
这一章我们就介绍简易JTAG线缆硬件原理,烧写软件流程,并说明使用简易JTAG 线缆烧写flash的方法。
10.1 JTAG简介JTAG接口的基本工作原理是:在芯片内部定义一个TAP(Test Access Port,测试访问端口),开发人员使用连接到芯片的JTAG外部接口上的JTAG调试器,通过访问芯片内部的TAP端口来扫描芯片内部各个扫描单元以写入或读取扫描寄存器的状态,从而对芯片进行测试和调试。
一个扫描单元对应一个外部管脚,每个外部管脚有一个扫描寄存器BSR单元,所有这些管脚的扫描寄存器连在一起就形成了扫描链。
简单地说,PC通过JTAG调试器对目标板的调试就是通过TAP端口完成对扫描寄存器BSR和指令寄存器IR的读写访问。
要了解关于JTAG 更全面的知识,请参阅 IEEE1149.1标准。
10.1.1一些基本概念JTAG是Joint Test Action Group(联合测试行动组)的缩写,是一种国际标准测试协议,它遵守IEEE 1149.1标准。
jtag烧录原理
JTAG(Joint Test Action Group)是一种硬件界面协议,用于
在设备上执行测试和调试操作。
使用JTAG协议可以使设备具有良好的可测试性和Debug能力。
JTAG烧录则是指利用该协
议实现对目标设备的程序存储器和数据存储器进行编程。
JTAG烧录一般包括以下步骤:
1. 将烧录器与目标设备连接:连接时需要注意一些接口时序的问题。
2. 支持JTAG的烧录器启动:启动后,烧录器可以通过JTAG,对目标设备进行读写操作。
3. 通过JTAG接口读取设备的ID代码:ID代码是设备唯一的
识别码,通过这个码可以检测设备是否真正连上,是否能够正确识别设备。
4. 烧录数据到目标设备:根据需求,将要烧录的程序或数据经过处理,通过JTAG协议写入目标设备的存储器。
5. 验证烧录结果:对烧录的程序或数据进行验证,确保写入的数据与预期的一致。
JTAG烧录原理是通过JTAG接口进行设备读写操作,实现程
控编程的效果。
其优点是实现了对芯片全面的调试、维护和修复,缺点是需要特殊的硬件和软件支持,成本较高。
兼容JTAG标准接口目标板具备JTAG标准接口,使用引出的10PIN连接线直接连接目标板即可。
下面是接口图:JTAG接口说明:JTAG接口兼容ATMEL指定的JTAG标准接口,但不输出JTAG 的PIN2 “GND”,它对应ISP的PIN2为“VCC”。
这样,若您的目标板采用指定的标准接口依然可以正常连接,但改进后,带来以下优点:JTAG错插入MCU的ISP接口,不会导致烧器件(需要目标板的JTAG、ISP接口做相关处理)。
AVR单片机JTAG接口的使用方法作者:pc63 来源:单片机学习网字体:大中小在百度搜索相关内容编辑导读:AVR单片机的RC5和RC6算法比较与改进|AVR单片机读写EEPROM子程序|SD卡读写子程序|ATmega128实现一个工业设备的主控制板|数字温温度记录仪中的USB主机设计|HT1621驱动程序-AVR|MSP4000型处理器在软交换终端设备中的应用|AVR c语言优秀编程风格|LM73测温度芯片的完整程序|12864(ICCAVR程序)|正文:JTAG接口de使用方法:AVRdeJTAG 仿真器特别好用,在此特别推荐,它可以对所有含JTAG接口demega系列进行下载和软件硬件仿真。
刚开始使用AVR JTAG仿真器时,不shi很清楚它de使用方法。
看完AVR JTAG仿真器de英文说明和中文说明,也不很明确它de具体使用。
经过自己de摸索,才清楚如何使用这种仿真器。
其实这种仿真器de使用方法很简单,就shi说明太罗索,让人越搞越糊涂。
不过,使用这种仿真器,确实方便了很多,可实现硬件仿真与软件仿真,步调程序,发现程序漏洞,shi较好de辅助调试工具。
下面shi摸索出来de较简明de使用方法:(1) AVR JTAGde使用环境shi:AVR Studio 4.07以上版本,9-15 DC电源,PC与RS232口。
(2)安装AVR Studio:在安装AVRStudio时将随机提供de光盘放入CD-ROM中,选取avrstuio4。