
JTAG是一种协议,厂家在生产时就已经按照协议规定来定制的。
我们通常刷机是在其启动加载完毕后才会对USB或SD卡进行识别或访问。
当手机底层启动数据丢失后,无法正常加载驱动代码,也就无法识别USB等等,当然也无法刷机。
这时JTAG就可以强制调用CPU来实现写入底层数据,来达到恢复正常启动状况。
单片机的JTAG接口功能是什么
1用于烧写FLASH
烧写FLASH的软件有很多种包括jatgexe fluted flashpgm等等,但是所有这些软件都是通过jtag接口来烧写flash的,由于pc机上是没有jtag接口的,所以利用并口来传递信息给目标板的jtag接口。所以就需要并口转jtag接口的电路。
2 用于调试程序
同时应该注意到jtag接口还可以用来调试程序。而调试程序(如ARM开发组件中的AXD)为了通过jtag接口去调试目标板上的程序,同样是使用pc的并口转jtag接口来实现与目标板的通信。这样,并口转jtag接口的电路就有了两种作用。
3 仿真器
根据1和2的总结,并口转jtag接口的电路是两种应用的关键,而这种电路在嵌入式开发中就叫仿真器。并口转jtag接口的电路有很多种,有简单有复杂的,常见的仿真器有Wigger,EasyJTAG,Multi-ICE等。这些所谓的仿真器的内部电路都是并口转jtag接口,区别只是电路不同或使用的技术不同而已。
往单片机里烧程序,用哪种接口?
直接下载的话一般是串口吧,就是第一种。
如果配一个USB转TTL转接口也可以用USB口。
一般现在就用USB口,方便。
给51单片机下程序接哪几个引脚
STC的芯片的话是用串口下载,接单片机的P30和31
AT的芯片的话是用ISP下载,是接在单片机的P15 1617 还有复位引脚
自然的,不管是什么单片机,电源和地都是必须接上的。
刚买了一个51单片机(AT89S52),想问一下程序下载接口是哪些? 20分
两种方法:
一、买个编程器,把芯片插到编程器上烧程序,然后再把芯片放到电路板上
二、在电路板上增加一个ISP下载接口,芯片还放在电路板上,用ISP下载器直接连到电路板的ISP下载座上烧程序
单片机中USART接口是什么意思?
USART是串口,也就是232或者485总线。单片机的USART口遵循那个数据协议,但是电平不一样,要和总线相连的时候还要加max232或485芯片转换电平
一般台式机上面都有的。笔记本上一般不带了,除非是比较老的型号。
你看的是STC的芯片手册么?BootsLoader是一种程序下载方式,是指在单片机上电后自动从串口接收程序到单片机的程序存储器。当然这种单片机也可以用通用编程器来烧写。STC的单片机一般采用这种程序下载方式,不需要昂贵的编程器和下载线,比较受学生的欢迎。
单片机端口是什么
单片机最基本的功能就是通过程序控制一些引脚的高低电平,这些引脚就是单片机的端口
STC89C52RC单片机下载程序的接口是
STC89C52RC单片机下载程序的接口是:P30、P31。
1、关于ISP和IAP的概念:简单的讲,ISP模式是其它电路直接 *** 作单片机的几根专用的端口(比如AT89S51的3根,但其不是JTAG口,只是硬件接口类似)完成烧录,属于硬件烧录模式;IAP模式是单片机通过串口接收到需要烧录的程序代码,然后进行“自编程”完成烧录。区别在“自编程”(关于ISP和IAP,可以看一下我以前的一个回答,里面简单说明了单片机下载烧录的原理,应该对你有帮助的
2、关于仿真器,你的理解是正确的;而仿真芯片一般只是用来做仿真器的。
3、关于在线调试,分为两种情况:一种是将仿真器的仿真头插在用户板上,从而实现全速、断点、单步调试;第二种则是单片机自身具备这种接口,比如JTAG接口,只需通过串口实现全速、断点、单步调试。这两种都叫在线调试。而IAP和ISP只是编程烧录 *** 作,含义不一样。
4、第一句话含义是兼容ISP、IAP。第二句话意思是在单片机的ROM区包含了实现单片机自编程的代码,可以通过串口实现编程 *** 作。第三句话的意思是可以由用户自己编制编程软件,从而在最终的应用里实现代码的自编程 *** 作。关于第二和第三句话的详细含义都可以看上面的连接。
在板子上设计232接口连接到单片机的UART,只要单片机支持IAP就可以实现下载程序的功能;同样,如果单片机具备JTAG接
在单片机编程的时候,应该怎样去定义单片机I/O端口的输入端和输出端?
51的话,这样
it PWM = P2^1;
it led = P0^0;
51是准双向口,既可以作为输入也可以输出,只不过作为输入时,读取之前先写1
8051单片机通过什么口烧程序?
at89c系列是用并口下载。at89范系列可以用isp方式下载。 stc系列可以通过串口下载。51有专门的仿真芯片。。
isp可以用串口或者并口,或者串口转u (这种方式最方便,笔记本上也可以下载)。isp就用到单片机的io口(P15,P16,P17),还有RST引脚+74h373+并口,就可以下载了。。
单片机烧录原理
你用的是STC单片机,需要用串口进行下载程序,一是要求电脑上有串口,要是笔记本电脑通常都没有口,需要买一条USB转串口线,在淘宝上就有,记得要同时向商家要驱动程序,并告诉商家你电脑的 *** 作系统是WIN7还是WIN8的。二是,单片机这边要用MAX232做成RS232串行口,这样,单片机与电脑通过串行口连接,单片机串口的TXD与电脑的RXD连接,单片机的RXD与电脑的TXD连接。三是要用STC专用的下载程序,并找开下载程序后先选择单片机的型号。附件是STC单片机专用下载程序,解压后就可以直接打开了,不用安装。
首先说明,在ARM中运行程序的方法其实和我们PC机差不多,程序开始是放在Flash中的,在芯片加电启动后,Flash中的程序会通过内存映射的方式加载到RAM中运行,这一步是由启动代码来完成的,对应PC机中的话,就是程序放在硬盘中,执行时把程序加载到内存中,然后在内存中运行程序。
所以在Keil中用JTAG调试实际上是要在RAM中调试。因为Flash中的程序烧写进去的,而用JTAG调试是没有办法更改Flash的,所以RAM调试和JTAG调试是一回事。
用过几天三星的S3C44B0,现在又改用了NXP的LPC2131。这两者一个使用片外的RAM,另外一个把RAM集成在了芯片内,但在利用Keil进行调试的时候,两者基本一样,所以后面以LPC2131为例说明。
首先,建立工程,选择需要的芯片,加载默认的启动代码Startups,(由于目前大多数厂家出的开发板自带的程序都是基于ADS的,而ADS下的Startups和Keil下的有区别,所以如果直接用开发板自带的启动代码的话会出现一些错误),添加你所需要的各个代码文件,然后在Target那个文件夹图标那里右击,然后在d出的菜单中,选择“option for target”,然后在d出的界面上选择“Target”选项卡然后设置你的晶振频率。如果编译没有问题的话,那么就可以直接用Keil进行软件仿真了。
第二,开始JTAG调试设置,前提是你已经连接好JTAG线,并运行相应的JTAG驱动程序如H-JTAG,首先右击Startups,然后在d出的菜单中,选择“option for startups”,进入后选择“Asm”选项卡,在下面的“Define”后面的空白处填入“RAM_MODE REMAP”。这是要设置RAM调试模式,地址重定位。
第三,在Target那个文件夹图标那里右击,然后在d出的菜单中,选择“option for target”,然后在d出的界面上选择“Target”选项卡,在“Read only area”下方选择“on-chip”,选中前面的default,然后第一个空填入0x40000000,第二个空填入0x1000,选中startup,然后在后面对应的行内选中default,第一个空填入0x40001000,第二个空填0x1000,后面的starup不要选中。(这几个数据与所选的CPU型号有关,如果是44b0的话,对应的是0x0c000000,0x2000,0x0c000000,0x2000。)
注意,这一步中,第一个数字代表你的芯片所对应的真实的RAM的起始地址,第二个数字表示你仿真时用来模拟只读区域的长度,第三个数字代表仿真时模拟RAM的长度,它的值必须大于等于第一个值加第二个值,否则会编译时提示你两个区域重合的错误。另外,第二个数字加第四个数字必须小于等于你的真实物理RAM的大小,推荐小于,因为你的RAM生产中不可能刚刚好是标称的大小。
另外补充,两个区域的大小不是固定的,可以根据需要调整,但是有时候要注意,如果你的区域设置不合适,可能会出一些问题,所以推荐第一个区域大于等于第二个区域,一般可以设为平分RAM。
第四,点击Linker选项卡,取消“Use Memory Layout From Dialog”,然后在后面的R/O base和R/W base中填入在Target选项卡中的第一个和第三个数字,必须保持对应。清空下面的Scatter File中文件名。
第五,点击Debug选项卡,选择右半部分的Use……(默认是左半部的Use Simulator),在后面的下拉菜单里选择“RDI Interface Driver”(不是带有JTAG字样的那个啊),然后点击setting,选择你的H-JTAG驱动程序所在的目录下对应的H-JTAGdll(可能你用的JTAG驱动和我的不一样,方法是一样的),然后config一下。
第六,点击确定后返回刚才的options for target界面Debug选项卡,取消RDI Interface Driver下面的“Load Application at Startup”。
第七,在你的工程对应的目录下,新建一个文本文档,输入以下内容
FUNC void Setup (void)
{
PC = 0x40000000; //这里的值填你的RAM起始地址,也就是在//Target中的第一个值,如44b0换成0x0c000000
}
Setup(); // Setup for Download
LOAD axf INCREMENTAL // Download
g,main
其中axf为你编译好后生成的文件名,根据实际情况修改
然后保存为RAMini文件。
在刚才的 Debug选项卡Load Application at Startup下面的Initialization Files里边选择你刚才的那个RAMini文件,然后点击确认保存。
第八,重新编译你的工程,点击Debug进行调试,如果进入后,PC定位在了RAM起始地址的话,则可以开始调试,否则再检查一次。
一些可能出现的问题
1:最好是先擦除你的CPU的Flash,这样加电后,芯片不会执行程序,否则会出现一点击调试,程序就开始运行了,但不出结果,而不是停留在RAM开始处,但这个问题似乎在调试44b0的时候没有发现,原因不明。
2:一点击调试,程序就开始运行,除了第一种可能以外,还有可能前面的设置有问题,重新设置一下,再者,停止Debug,断掉你的开发板电源,重新加电一次试试,这种情况常见于Debug一次后再一次Debug时候,因为JTAG连上以后,就会带电,而如果上次Debug错误,即使复位,RAM中仍然没有完全断电,第二次Debug时上次的程序还在运行,所以出问题。
3:由于LPC2131的RAM较小,8K,如果你的程序较大的话,比如你把很多的端口初始化以及接口子函数都用上了,那么就会发现,你在Debug时,开始停在RAM起始地址,点击运行后就会进入死循环,如果单步运行的话可以发现你的程序只能执行到一半。如果你换一个简单的小文件没有出现这种情况的话,那么只能是你的程序代码太大了
JTAG公母口”均有固定的“接口定义”,已成既定标准化,调试方便;
缺点:不支持“89C51”低端系列单片机,下载接口体积大、所占IO口多、价格贵,普遍价格约“80RMB~150RMB”;特别是其与“KEIL-MDK”开发环境、“JTAG驱动”对应兼容性有很高要求,经常出现“JTAG驱动不兼容”而“无法下载代码”、“KEIL-MDK奔溃”等问题;
以上就是关于JTAG是什么,用来把程序刷到芯片里吗怎么实现的全部的内容,包括:JTAG是什么,用来把程序刷到芯片里吗怎么实现的、单片机程序接口是什么、keil5下lpc2194程序不运行,但jtag调试正常等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)