单片机程序烧录的3种方式(ISP、ICP、IAP)是什么?
一、ISP是什么
ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。ISP技术是未来发展方向。
ISP 的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。
二、ICP是什么
ICP是一种串行编程方式,其通过一根时钟线和一根数据线串行传输编程指令及数据,ICP功能使用芯片的5个管脚()与LCP900连接器上的5个引脚,PCL,PDA,RESET相连(这里V 使用3.3V电压)。
ICP方式在应用中有以下优点:
在产品发货前,可以随时装载最新版软件程序。在开发过程中,不需将芯片从系统板上取下,即可实现重新编程。不占用程序存储空间(ISP要占用一定空间驻留ISP服务程序)。不受串口的影响。三、IAP是什么
IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。
通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,名列前茅个项目程序不执行正常的功能操作,而只是通过某种通信管道(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这两部分项目代码都同时烧录在User Flash中,当芯片上电后,首先是名列前茅个项目代码开始运行,它作如下操作:
检查是否需要对第二部分代码进行更新如果不需要更新则转到执行更新操作跳转到第二部分代码执行四、ISP 和 IAP 的工作原理
ISP 的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过 SPI 或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。
IAP 的实现相对要复杂一些,在实现 IAP 功能时,单片机内部一定要有两块存储区,一般一块被称为 BOOT 区,另外一块被称为存储区。单片机上电运行在 BOOT 区,如果有外部改写程序的条件满足,则对存储区的程序进行改写操作。如果外部改写程序的条件不满足,程序指针跳到存储区,开始执行放在存储区的程序,这样便实现了 IAP 功能。
延伸阅读1:单片机
单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
猜你喜欢LIKE
相关推荐HOT
更多>>linux都有哪些认证?
一、LPI认证LPI(Linux Professional Institute)是一个非盈利性组织,提供了一系列的Linux认证,包括初级(LPIC-1)、中级(LPIC-2)和高级(L...详情>>
2023-10-18 02:39:08怎么打开一个.bak格式的30G的数据库文件?
一、打开一个.bak格式的30G的数据库文件的步骤1、打开SQL Server Management Studio首先打开SQL Server Management Studio,SQL Server详情>>
2023-10-18 01:19:15Python的字典和数据库有什么区别?
一、Python的字典和数据库有什么区别1、Python 中的字典是哈希表(hash tables)的一种抽象数据类型的具体实现。 字典存在于内存中。如果没有将...详情>>
2023-10-18 01:02:55Flutter架构是怎样,为什么比ReactNative好?
一、Flutter架构概述Flutter是由谷歌开发的开源移动应用开发框架,使用Dart编程语言。Flutter的架构采用了一种称为“层叠式架构”的设计模式。1...详情>>
2023-10-18 00:15:19热门推荐
linux都有哪些认证?
沸为什么搜索引擎在磁盘上的索引不能做到实时添加而数据库可以?
热Win10下Oracle 11g 数据库突然连接失败怎么办?
热Power BI中建立度量值输入信息后按回车怎么不行?
新单片机程序烧录的3种方式(ISP、ICP、IAP)是什么?
怎么打开一个.bak格式的30G的数据库文件?
Python的字典和数据库有什么区别?
数据库事务完成后结果返回给客户端前连接断开了会发生什么?
删除SQL server2012出现重新启动计算机――失败,是什么原因?
Flutter架构是怎样,为什么比ReactNative好?
sql server2012r2所在服务器做端口限制,需要开放什么端口才能继续访问数据库?
Oracle有什么优势和劣势?
数据库聚集索引非聚集索引实现上有哪些区别?
数据库(如oracle、mysql)及编程语言(php、python、perl、lisp)的区别?