单片机三种烧录方式ICP、IAP和ISP详解

控制/MCU

1883人已加入

描述

相信玩单片机的小伙伴,应该都听说过IAP、ICP和ISP这几个词。今天,小编再帮大家“巩固”一下相关知识。

● ICP(In Circuit Programing)在威廉希尔官方网站 编程

● ISP(In System Programing)在系统编程

● IAP(In applicating Programing)在应用编程

1、ICP(In Circuit Programing)

使用过新唐单片机的小伙伴一定知道,新唐单片机配套了一套编程工具,那就是NuMicro_ICP_Programming_Tool,就像ST芯片配置的有J-Flash工具一样。

使用对应厂家的软件以及仿真器都可以烧录程序,目前主流的有Jtag(Joint Test Action Group)以及SWD(Serial Wire Debug)接口。而ICP编程就是以SWD接口进行的。

下图为Jtag接口和SWD接口的区别:

单片机

执行ICP功能,仅需要3个引脚RESET、ICPDA、ICPCK。RESET用于进入或退出ICP模式,ICPDA为数据输入输出脚,ICPCK为编程时钟输入脚。用户需要在系统板上预留VDD、GND以及这三个脚。

单片机

新唐官方给了详细的描述,ICP是指“在威廉希尔官方网站 编程”,PC上运行的软件“NuMicro ICP编程工具”透过SWD的端口更新晶片内部APROM、LDROM、数据闪存(DataFlash)和目标用户配置字(Config)芯片。

单片机

2、ISP(In System Programing)

ISP是指“在系统上编程”,目标芯片使用USB/UART/SPI/I²C/RS-485/CAN周边接口的LDROM引导代码去更新晶片内部APROM、数据闪存(DataFlash)和用户配置字(Config)。

单片机

3、IAP(In applicating Programing)

IAP就是通过软件实现在线电擦除和编程的方法。IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个。

下面,我们以烧录过程中使用的烧录工具以及具体案例,详细介绍这三种烧录方式:

(1)ICP使用SWD接口进行烧录程序。常用的烧录工具为J-Link、ST-Link、Nu-Link;与之配套的烧录软件为J-Flash、NuMicro_ICP_Programming_Tool、st-link utility。

单片机

(2)ISP是使用引导程序通过USB/UART等接口进行烧录的,首先就是需要有BoodLoad程序。最常见的烧录方式就是学习8051单片机时使用的STC-ISP烧录工具了。

单片机

(3)IAP就是通过软件实现在线电擦除和编程的方法,没有使用任何工具,仅仅是通过软件的方法来更新Flash中的数据。

讲述一个案例,那就是通过4G模块来远程更新程序。将Flash分成两块区域,第一块为Boodload程序,第二块区域存放的是应用程序APP。4G模块和目标板通讯,通讯中包含是否更新的位,如果主板接收到需要更新的位,就往Flash中写入一个标志位,比如'P',之后程序跳到第一段程序Boodload程序中执行,首先判断Flash中的是否有更新程序的标志位'P',如果有则通过规定的协议进行更新应用程序中的程序,更新完毕后清除Flash中的更新标志位,跳转到应用程序中去执行。如果没有更新程序标志位‘P’,跳到应用程序执行。

4、总结

ICP:使用SWD接口进行烧录,如J-Link烧录器和J-Flash软件配合使用。

ISP:使用引导程序(Bootload)加上外围UART/USB等接口进行烧录。

IAP:软件自身实现在线电擦除和编程的方法,不使用任何工具。程序通常分成两块,分别为引导程序和应用程序。

最后问大家一个问题,在使用IAP编程时候,可否将引导程序和应用程序合成只有一个代码区的应用程序,这样还能实现软件更新吗?具体又怎么操作?大家可以思考一下,答案是可行的。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分