
点击此处下载全部资料(文件大小:581K)(原文件名:usb-avrisp.rar)(资料中,已经增加了VISTA下的USBISP驱动程序。现在在XP和VISTA下都可以使用)
sch图
JTAG与ISP下载区别
2010-06-25 10:26:03| 分类:单片机阅读45评论0字号:大中小订阅
JTAG是Joint Test Action Group(联合测试行动小组)的缩写,是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。JTAG用来对芯片进行测试的基本原理是在器件内部定义一个TAP(Test Access Port;测试访问口)通过专用的JTAG测试工具对内部节点进行测试。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
TMS:测试模式选择。此引脚用来实现TAP 控制器各个状态之间的切换。
TCK:测试时钟。JTAG 操作是与TCK 同步的。
TDI:测试数据输入--需要移位到指令寄存器或数据寄存器(扫描链)的串行输入数据。
TDO:测试数据输出-- 自指令寄存器或数据寄存器串行移出的数据。
现在,JTAG接口还常用于实现ISP(In-System Programmable;在线编程),对EEPROM、FLASH等器件进行编程和在线调试。JTAG编程方式是在线编程,传统开发流程中先对芯片进行预编程再装到板上的模式因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。
AVR 的JTAG功能(只有部分型号才有)使得AVR的调试工作非常简单,可以通过JTAG 接口对Flash、EEPROM、熔丝位和锁定位进行编程。使用AVR studio软件和JTAG硬件(AVR JTAG编程器,AVR JTAG仿真器)可以进行程序下载(亦即编程)和程序在线调试。通过JTAG功能,工程师可以方便的观察各个寄存器的变化和程序的运行情况,十分适合单片机的学习与系统开发。
什么是ISP?
ISP是一种通用的程序下载方式,所有AVR单片机都有ISP下载接口。可以通过ISP下载线或者STK500把程序下载到单片机中。ISP下载线成本低廉,制作简单,一个并口ISP下载线只需几十元即可得到。但是通过ISP的方式下载程序速度慢并且不能实现在线的仿真调试,所以这种编程方式并不适合于单片机的学习与系统开发。
什么是Debugwire?
为了降低成本和调试引脚的开销,ATMEL公司在AVR器件上使用的新的调试接口——Debugwire。通过Debugwire的方式,用户可以实现程序的在线调试,调试方面Debugwire与JTAG相比其主要区别在于仅使用一根信号线(RESET),即可完成调试信息的交互,达到控制程序流向,执行指令以及编程熔丝位的功能,但是在使用中尚需接电源信号:VTref(VCC)、GND。要注意的是,Debugwire不同于JTAG,它只是一种调试接口,而不是编程接口,也就是说不能通过Debugwire下载程序。
JTAG,ISP,Debugwire的区别。
JTAG:可以进行程序的下载和在线仿真调试,程序下载速度快。只有部分器件支持。在JTAG使能的前提下程序的下载和仿真无需进行其他设定即可。
ISP:只能进行程序的下载,程序下载速度慢。所有AVR单片机均支持ISP程序下载。
Debugwire:只能进行程序的在线仿真调试不能进行程序的下载。只有比较少的器件支持Debugwire方式仿真。目标MCU的ISP功能和debug WIRE功能是互斥的,使能了目标MCU的debug WIRE 功能后ISP功能就无法使用,使能了ISP功能后debug WIRE功能就无法使用。
pcb图
实物图
最终实物图(外面用透明热塑管封装)
首先声明,我没有编写一句代码,仅对硬件做了调整。
1。AVRISP的固件采用网上德国人的07.3.28的最新版固件,各位可以跟踪该网站,获得最新的信息。他提供2种模式的固件,我使用的是兼容AVRASP 的。该网站还提供了固件的源代码。
2。windows驱动也是该网上提供的,我仅改了一句:
将;Modem3="Communications Port"改为Modem3="USBASP-ISP"
这样在windows中看到的设备为“USBASP-ISP”
3。下载软件采用最新版的AVRSTUDIO。该3月28日的固件就是配合最新版的AVRSTUDIO使用的,老版的AVR STUDIO也能用,可能要跳出更新固件代码的窗口,直接关闭即可。在AVR STUDIO外的其它开发环境中使用不正常,或不支持,或支持的不好。
制作
1。硬件......
2。将固件写入AVRISP的M8中。
a/ 在USB口接入5V电源,将JP短路,选择其它的一个AVR编程器如并口的ISP编程器,将其编程口接在AVRISP的编程口上。
b/ 配置AVRISP上M8的熔丝位:电源检测电压为2.7v,检测有效;系统使用高频外部晶体;满幅震荡!!
c/ 写固件3。将AVRISP上的JP开路,插到本本的USB口上,安装wondows驱动(分别支持XP 和VISTA)。驱动安装成功后,可以在windows的设备管理中看到一个串口设备USBASP-ISP。该驱动将AVRISP作为串口设备,占用一个COM口。请查看该COM口的号码。
4。如果你的本本中有很多的串口设备,需要进行调整,将USBASP-ISP对应的COM口号降到9以下,即在COM0-COM9。原因是AVR STUDIO中的串口仅能连接COM9以下的串口设备。(这个对计算机不熟悉的用户就不方便了)
使用
1。以上完成后,打开AVR STUDIO。在Tools->Program AVR->Connect中选择STK500 or AVRISP
可以使用aoto让STUDIO自己找,也可直接选择AVRISP对应的COM口。
2。出现以下窗口STK500 with top module '0x00'说明AVRISP正常,可以工作。注意选择要编程的AVR芯片型号,和编程方式为ISP mode!!
3。在这里可以设置AVRISP的编程速度(AVRISP有记忆的)。选择速度后按WRITE按钮。
4。对于编程工作在1M以下的AVR芯片,要降低AVRISP的编程速度,否则回出现错误提示:
5。当被编程的AVR芯片工作在2M以上时,可以使用最高的速度,下载程序还是比较快的。速度的选择比较重要,如果采用低速,下载程序的时间不太容易忍受了。
6。在使用中可能会由于目标板的上电、断电等,会造成USBISP连接不上,此时将AVRIAP从本本的USB口拔下,然后从新插上,在AVR STUDIO中需要重新连接一下(从1开始)既可。
总结:
不如并口的ISP方便,因为在ICC、CVAVR、BASCOM中可以直接使用STK200/STK300的并口ISP。AVRISP只能在AVR STUDIO中使用,并且速度不能自动调节。但对没有并口的本本来说,还是一个比较好的方案。
另外,对于这个AVRISP的制作,可以在它的基础上深入学习,提高水平,因为是全部公开的。其它的方案只能作为工具使用,不方便深入的学习和研究。这也是我推荐AVRISP的原因。
本方案全部采用免费资源,应该无版权的官司之争。如果有侵权的部分,请告之。
ISP和IAP区别
2011-02-19 17:30:13| 分类:基本概念理解| 标签:ispiap编程单片机代码字号:大中小订阅
ISP与IAP的区别
ISP :in system programming,在系统编程
IAP :in applicatin programming 在应用编程
但两者的操作方式,结果和应用场合有什么区别
什么是ISP :
用写入器将code烧入,不过,芯片可以在目标板上,不用取出来,在设计目标板的时候就将接口设计在上面,所以叫"在系统编程",即不用脱离系统;
什么是IAP :
在应用编程,有芯片本身(或通过外围的芯片)可以通过一系列操作将code写入,比如一款支持Iap的单片机,内分3个程序区,1作引导程序区,2作运行程序区,3作下载区,芯片通过串口接收到下载命令,进入引导区运行引导程序,在引导程序下将new code内容下载到下载区,下载完毕并校验通过后再将下载区内容复制到2区,运行复位程序,则Iap完成;
应用场合:
1,ISP 程序升级需要到现场解决,不过好一点的是不必拆机器了;
2,IAP 如果有网管系统的话,用网管下载一切搞定,人不用跑来跑去;
这可能是他们的优点或应用吧
在线编程目前有两种实现方法:在系统编程(ISP)和在应用编程(IAP)。ISP一般是通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程,而IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。ISP的实现一般需要很少的外部电路辅助实现,而IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器。ISP和IAP很相似,都是不需要把芯片从板子上拔出来,就达到了用PC-MCU的编程接口(JTAG、串口、双绞线、SPI等)搞定新版本的升级的目的。MCU内部都是首先执行一段的Boot代码(这段Boot代码一般是出厂预置,或使用编程器烧录的,通常只有1k或4k,SST通常是占用一块的Block,Philips通常是让BootROM地址与其他Flash重叠,以达到隐藏的效果),Boot负责控制擦除程序存储器及给程序存储器编程的代码(或是处理器外部提供的执行代码),然后通过某种与PC计算机的通信方式(如,ether网口),将用户指定的某个在PC上编译完成的MCU可运行的二进制代码文件编程入MCU内的程序存储器。
ISP和IAP最大的不同是:由谁来触发。
ISP有4种触发方式:
1. 由外部硬件电路:如VDD保持高电平,给RST连续3个脉冲;
2. 检测状态位:如ISPEN,为0时PC指针从0000H开始执行;为1时,通过“引导向量”计算出“ISP代码”的位置。每次复位后都会检测该状态位;
3. 中止控制符信号触发芯片复位:中止控制符信号就是指在异步串行口的接收脚上出现长达一帧长度的低电平,这里一帧的长度与异步串行口的工作模式有关。
4. 直接调用ISP:用户程序也可以调用,但是很危险。
4种方式的目的是相同的——进入ISP子程序,比如Philips出厂的ISP子程序在1E00H-1FFFH,只要能引导PC指针指向1E00H就可以了。
而进入ISP代码的目的是:进入BootROM。
IAP的触发比较简单一些,没有外部触发。通过一些指示位(SST为SC0/SC1、SFCF[1,0];Philips为一段IAP子程序,保存在FF00H~FFFFH地址空间中),达到引导到BootROM的目的。
殊途同归,ISP、IAP所进入的BootROM里面驻留的Boot代码,才是最终目标。
最后一种:并行编程模式。不需要BootROM,直接设置芯片的多个引脚来让芯片识别命令(如:擦除、写入、验证等),从P口传地址、数据,就可以写入Flash。
用LPC2000的IAP,你自己分配好FLASH空间,指定一个BLOCK用来存放你的数据,然后通过IAP进行写操作。每次开机后,从这个BLOCK读你的数据。
IAP的实现
通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信管道(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这两部分项目代码都同时烧录在User Flash中,当芯片上电后,首先是第一个项目代码开始运行,它作如下操作:
1)检查是否需要对第二部分代码进行更新
2)如果不需要更新则转到4)
3)执行更新操作
4)跳转到第二部分代码执行
第一部分代码必须通过其它手段,如JTAG或ISP烧入;第二部分代码可以使用第一部分代码IAP功能烧入,也可以和第一部分代码一道烧入,以后需要程序更新是再通过第一部分IAP代码更新。
对于STM32来说,因为它的中断向量表位于程序存储器的最低地址区,为了使第一部分代码能够正确地响应中断,通常会安排第一部分代码处于Flash的开始区域,而第二部分代码紧随其后。
在第二部分代码开始执行时,首先需要把CPU的中断向量表映像到自己的向量表,然后再执行其他的操作。
如果IAP程序被破坏,产品必须返厂才能重新烧写程序,这是很麻烦并且非常耗费时间和金钱的。针对这样的需求,STM32在对Flash区域实行读保护的同时,自动地对用户Flash区的开始4页设置为写保护,这样可以有效地保证IAP程序(第一部分代码)区域不会被意外地破坏。*********************************************************************************************************************************************************************************
ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。IAP(In-Application Programming)指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。ISP和IAP技术是未来仪器仪表的发展方向。
1 ISP和IAP的工作原理ISP的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。
IAP的实现相对要复杂一些,在实现IAP功能时,单片机内部一定要有两块存储区,一般一块被称为BOOT区,另外一块被称为存储区。单片机上电运行在BOOT区,如果有外部改写程序的条件满足,则对存储区的程序进行改写操作。如果外部改写程序的条件不满足,程序指针跳到存储区,开始执行放在存储区的程序,这样便实现了IAP功能。
2 ISP和IAP在单片机中的应用
2.1 传统编程方法的不足
在一般的单片机的实验或开发时,编程器是必不可少的装置。仿真、调试完的程序需要借助编程器烧到单片机内部或外接的程序存储器中。普通的编程器价格从几百元到几千元不等,对于一般的单片机用户来说还是一笔不小的开支。另外,在开发过程中,程序每改动一次就要拔下电路板上的芯片编程后再插上,这样不但麻烦也很容易对芯片和电路板造成损伤,另外在程序需要升级做改动时,必须将设备返厂或是技术人员到现场操作,既不方便也造成成本浪费。
2.2 ISP和IAP的优点
ISP技术的优势是不需要编程器就可以进行单片机的实验和开发,单片机芯片可以直接焊接到电路板上,调试结束即成成品,免去了调试时由于频繁地插入取出芯片对芯片和电路板带来的不便。
IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个。
ISP的实现一般需要很少的外部电路辅助实现,而IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器,可以通过现有的INTERNET或其它通讯方式很方便地实现远程升级和维护。
2.3 产品分析
目前市场上不少的单片机具有ISP和IAP功能。
ST公司的μPSD32××系列单片机片内带128KB/256KB的FLASH存储器及32KB Boot ROM,通过JTAG串行口能很容易地实现ISP功能。IAP功能则可由用户在应用中实现。
ATMEL公司的单片机ATS8252,提供了一个SPI串行接口对内部程序存储器编程(ISP)。SST公司的单片机SSTC54,其最大的特点内部有两块的FLASH存储器,具有IAP(应用中在线编程)功能,对于8052系列的其它公司的单片机(ATMEL、WINBOND、ISSI)可以直接代换,软硬件无须做任何改动。
PHILIPS公司的PC51RX2xx系列是带ISP/IAP的8位Flash单片机。PHILIPS公司为了使ISP技术和IAP技术得以推广,在芯片上免费提供了Boot ROM固件,并且巧妙地解决了固件和FLASH的地址覆盖问题及一些具体实现细节问题,使它们的实现变得简单。
此外在外围器件中ST公司的PSD系列产品片内带大容量存储器,支持ISP及IAP功能。
ISP,In System Programing
主要是指代芯片的烧写方式,以往写片子需要把片子拿下来,离开电路,用编程器烧,换句话说,芯片不能不脱离应用系统进行写入。
ISP 主要针对这个问题,使用JTAG或者串行口(MCU 内部有Boot Loader ,通过指定的方式激活之,它可以和PC或其它上位机通过串口联系,不用使单片机离开应用系统而更新内部的程序/设置)进行程序的烧写操作。
因此,具有ISP 功能的MCU 可以不使用编程器进行编程。当然,实现ISP 可能需要一些硬件电路支持,具体的在数据手册中有说明。
IAP,In Application Programing
单片机内部具有一些可擦写的非易失存储器,如Flash。在单片机运行时,不具备IAP 功能的单片机并不能对Flash的数据进行修改,比如,对自身的某一个模块的代码,数据进行修改。具备了IAP 功能的MCU ,能够通过使用各自公司开发的技术,对于自身进行修改。
简言之:ISP=>修改MCU 内部数据需要有外部介入;
IAP=>修改MCU 内部数据可以不用外部介入。
二者可以说是数据更新的一种实现机制。一般具备ISP 功能后,就不要编程器了,而是使用下载线进行编程工作。但是不是说他们就一定不支持编程器了,具体型号具体分析。是否需要仿真器进行仿真和是否具备ISP和IAP没有必然的联系。
只不过具备了IAP功能,可以在MCU内写入监控程序,模拟一个仿真器,当然,这个监控程序是要消耗资源的,和使用硬件的仿真器还有一定的差异。
IAP的应用,在51上可能比较多,就是SST出的那个SoftICE功能。他的MCU 其实不具备ISP功能,需要使用编程器烧一个Boot Loader进去,然后,利用IAP功能,就可以通过串行口下载数据了。
SST的那个,使用的是自己开发的一个SoftICE软件,和Keil C的Mon51接口。看DataSheet上说,先要用编程器烧Boot Loader进去,然后,用串口烧SoftICE进去,然后就可以用了。
ISP:in system programming,
IAP :in applicatin programming
但两者的操作方式,结果和应用场合有什么区别
ISP :用写入器将code烧入,不过,芯片可以在目标板上,不用取出来,在设计目标板的时候就将接口设计在上面,所以叫"在系统编程",即不用脱离系统;
IAP :在应用编程,有芯片本身(或通过外围的芯片)可以通过一系列操作将code写入,比如一款支持Iap的单片机,内分3个程序区,1作引导程序区,2作运行程序区,3作下载区,芯片通过串口接收到下载命令,进入引导区运行引导程序,在引导程序下将new code内容下载到下载区,下载完毕并校验通过后再将下载区内容复制到2区,运行复位程序,则Iap完成;
应用场合:
1,ISP 程序升级需要到现场解决,不过好一点的是不必拆机器了;
2,IAP 如果有网管系统的话,用网管下载一切搞定,人不用跑来跑去,
这可能是他们的优点或应用吧
典型IAP:IC卡电话机内含V.xx MODEM芯片,MCU自带引导区,可远程下载更新程序。===============================================================================================================
在线编程目前有两种实现方法:在系统编程(ISP)和在应用编程(IAP)。ISP一般是通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程,而IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。ISP的实现一般需要很少的外部电路辅助实现,而IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器。
ISP
2010-08-26 19:55:34| 分类:接口和总线阅读11评论0字号:大中小订阅1 ISP技术
在系统编程(In-System-Programming,ISP)技术是美国Lattice半导体公司首先提出来的一种能在产品设计、制造过程中的每个环节具有对其器件、电路或整个数字系统的逻辑和功能随时进行组态或重组能力的最新技术。在可编程逻辑器件(Programming Logic Device,PLD)及其技术中,ISP是一种新的概念、新的标准。传统的编程技术是将PLD器件插在编程器上编程的,ISP技术则可不用编程器,直接在用户自己设计的目标系统中或线路板上对PLD器件编程。常规PLD 在使用中通常是先编程后装备,而采用ISP技术的PLD则是先装备后编程,成为产品后还可反复编程。ISP硬件灵活且易于软件修改,便于设计升级。
2 ISP器件的编程软件
ispEXPERT是由Lattice公司提供的一种通用电子设计软件。他支持ABEL-HDL语言、VHDL语言、原理图3种电子设计方式,以及这些设计方式的混合使用。他能对所设计的数字系统进行功能模拟和时序模拟,能对设计进行逻辑优化,并将逻辑映射到器件中去,自动完成预布线,生成编程所需的熔丝图文件,通过下载电缆下载到器件中。
ispEXPERT中的项目导航器引导设计一步步进行,最终生成器件编程所需的JEDEC文件,并下载到ISP器件中。项目导航器是一个很好的设计工具,便于用户跟踪软件的运行流程。
用ispEXPERT对可编程器件进行设计,除了确定设计思想等准备工作外,大部分工作是在计算机上进行的。整个工作流程分为创建新没计项目、选择器件、输入源文件或原理图、编译与优化、逻辑模拟、连接和器件适配等过程。这些过程是在项目导航器引导下进行的。
3 ISP在数字电路课程设计中的举例
目前的数字电路课程设计多为用中小规模集成电路和GAL芯片的方法实现。在设计较大规模的数字系统时,由于电路板的,过多的集成块使学生花费很多时间都无法调试成功,影响学生的积极性。为此,把ISP器件引入数字电路课程设计,选取了一些有代表性的课题,如多功能电子钟、密码锁、交通灯、数字频率计等,让学生设计实践,取得了很好的效果。
下面举例用ISP对电子钟进行开发设计。
3.1 设计要求
该设计用ispEXPERT软件在ISP1016芯片上实现电子钟的。电子钟具有下述功能:
(1)用实验台上的6个数码管显示时、分、秒。
(2)能使电子钟复位(清零)。
(3)能启动或停止电子钟运行。
(4)在电子钟停止运行状态下,能够修改时、分、秒的值。
(5)具有报时功能,整点时喇叭鸣叫。
3.2 功能分析
电子钟工作时的最高频率是秒针的1 Hz,而实验设备所提供的连续脉冲的最低频率为1 kHz,因而需要一个分频模块,这可通过设计一个模为1 000的计数器设计。
电子钟的秒针是每来一个脉冲计数一次,分针是每过60 s计数一次,时针是每过60 min计数一次,秒针和分针由0计到59又回到0,而时针由0 计到23又回到0。这样需要设计2个模为60的计数器和一个模为24的计数器,例化成秒针模块、分针模块和时针模块。
秒针、分针和时针的计数信号要转换成BCD码后输出,这可以通过在上述各模块内增加一个由二进制码转换为BCD码的编码转换单元实现。
要求能启动或停止电子钟运行,且能在电子钟停止运行状态下修改时、分、秒的值,可增加一个启动/停止控制端实现。如启动/停止控制端接低电平,分频模块的时钟接1 kHz的连续脉冲,其他模块分别接对应输出,电子钟便启动。而当启动/停止控制端接高电平,分频模块的时钟接地,其他模块的时钟分别接3个单脉冲手动输入,电子钟停止运行,手动产生一个单脉冲,与其相连的模块就计数一次,达到了修改时、分、秒的目的,即实现了电子钟更改时间的功能。
3.3 ABEL语言描述
下面用ABEL语言的层次结构实现电子钟的设计可分为顶层模块Clock,3个底层模块FP1000,FP60和FP24。下面介绍顶层模块CLOCK,其中调用了3个底层模块。
4 结语
从上例可知,用ISP器件可进行各种数字电路实验,代替了古老的面模板实验,而且灵活方便,是一种较理想的数字电路课程设计方法,值得推广应用。
