ISP

一、升级原理

芯片在应用前,是一颗裸片,内部没有任何驱动或应用程序。芯片在贴上PCB板子后,会实现各种功能,这是时候会开发对应的驱动或者应用程序,在芯片上面运行的程序,一般称之为固件(Firmware)。

把固件烧录进芯片,一般通过J-link、DAP、UART、Bluetooth等途径,我们公司芯片支持J-link、UART两个途径升级芯片固件,本文档主要说明通过UART升级芯片固件。

通过UART(也叫ISP)升级芯片固件,分以下两种模式:

A. 双线模式,即TX+RX模式,需要6根接线:TX、RX、VDD、GND、RESET、BOOT。

B. 单线模式,即TX&RX&BOOT模式,即TX、RX、BOOT共用一根线,需要4根接线:TX&RX&BOOT、VDD、GND、RESET。

升级方法:芯片上电,拉低RESET引脚,然后拉高BOOT引脚,等5-10mS,再拉高RESET引脚,保持BOOT引脚为高电平并持续5mS以上,芯片即进入ISP升级模式。当芯片进入ISP模式后,既可按照ISP协议(一般为自定义协议,非国标)进行升级。

二、升级框架

ISP升级框架:

1.png

ISP底层:为芯片出厂前已固化的ISP code,不占用MCU 的FLASH空间,专门用于通过ISP接口给MCU烧录(或升级)应用&驱动固件。

三、升级协议

1.命令格式说明 

上位机和下位机发送和接收的命令采用字符形式,每个命令后面都有“\r\n”;收发数据的格式采用 UUcode 编解码格式;

2.通信错误类型分类: 

a) “E0”:表示接收到非法命令或者下位机解析命令失败; 

b) “E1”:表示擦除 FLASH 操作失败; 

c) “E2”:表示写入 FLASH 操作失败; 

d) “E3”:表示写入 SRAM 操作失败;

e) “E4”:表示待写入 FLASH 的数据不是 1 页或者写入 SRAM 的数据超过 1 页。

3.具体命令格式说明: 

a) 波特率同步命令:M->"sync\r\n",S->"sync\r\n";

b) 设置波特率命令:M-> "baudrate 000000\r\n",S-> "OK\r\n";

c) 获取版本号命令:M-> "version\r\n",S-> "SWM24V20\r\n"; 

d) 擦除 FLASH 命令:M-> "erase 0000 0000\r\n",S->"OK\r\n"; 

e) 写入 FLASH 命令:M->"copy 00000\r\n",S->"OK\r\n"; 

f) 写 SRAM 命令 1:M->"write\r\n",S->"OK\r\n"; 

g) 写 SRAM 命令 2:M->"W UUencode Checksum\r\n",S->"OK\r\n"; 

4.说明 

a) 上位机开发的时候可以预置各个芯片 Flash 的 sector 以及 page 大小,也可以下载的时候选择,并以此计算来下发读写命令。

b) 上位机操作 flash 单位为 sector 和 page,下载不满一个 page 时候填充 FF。 

c) 下位机的写入 FLASH 命令是固定 1 个页大小的数据。 

d) 下载文件时,分小包编码传输给下位机,下位机接收到后把多个小包文件解码组合 成一个大包(一个 page),等待上位机传输 copy 命令,再写入 flash。具体编码格 式见文件末尾。

四、升级流程

本节主要说明MCU端(被动应答)ISP升级流程:

1. 获取MCU型号

2.jpg

说明:

A.上位机发送“version\r\n”。

B.下位机回复芯片版本号。

2. 配置波特率

3.png

说明:

A.以目的波特率为9600为例。

B.上位机先以4800波特率发送"sync\r\n"命令,等待下位机以4800波特率回复"sync\r\n"。

C.上位机以4800波特率发送"baudrate 000000\r\n",000000格式如下:

a) SWM120、SWM160、SWM181、SWM220、SWM260芯片,000000 = 24M/16/Baud。

b) SWM190芯片,000000 = 24M / Baud;

c) SWM320芯片,000000 = 20M / 16 / Baud;

d)例如SWM181 需要设置9600波特率,则000000 = 24M / 16 / 9600 = 000156,则此步骤需要发送"baudrate 000156\r\n"。

D.下位机收到后回复"OK\r\n",然后切换波特率到9600。

E.上位机接收到"OK\r\n"后,延时5~10ms,改变波特率到9600,然后发送"sync\r\n"。

F.下位机接收正常后返回"sync\r\n"。

G.上位机接收到"sync\r\n"后提示握手成功。

3. 擦除flash流程

4.jpg

说明:

A.上位机先发送"erase 0000 0000\r\n"命令(其中0000 0000表示发送字符形式的擦除起始扇区和要擦除的扇区个数,例如要擦除下位机第8扇区开始的4个扇区则发送"erase 0008 0004\r\n")。

B.等待下位机回复"OK\r\n",表明擦除FLASH成功;下位机回复"E1\r\n",表示擦除FLASH失败。

4. 写SRAM流程

5.jpg

说明:

A.上位机先发送"write\r\n"命令,等待下位机回复"OK\r\n"。

B.上位机发送"W UUencode Checksum\r\n",等待下位机回复"OK\r\n",表明一帧数据写入SRAM成功。

a) UUencode 表示编码后的数据。

b) Checksum表示编码前数据的校验和。

c) 具体格式参见文章末尾编码说明。

5. 写FLASH流程

6.jpg

说明:

A.上位机发送"copy 00000\r\n"命令(其中00000表示字符形式的起始页,例如要写入第8页起始的1页数据则发送"copy 00008\r\n")。

B.下位机回复"OK\r\n",表明写入FLASH成功。

五、通过ISP升级(烧录)的优缺点

优点:

1. 一芯片的SWD引脚一般跟GPIO引脚复用,如果需要扩展GPIO,就需要禁用SWD功能,这种情况下升级就可以通过ISP接口。

2. 单线ISP模式,只需要一个ISP引脚、一个RESET引脚、一个GND,为精简接口模式。

缺点:如果产品已装机,用ISP升级,也需要拆机进行。

来源:华芯微特32位MCU

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 32

2023年9月12日,中国上海——芯原股份 (芯原,股票代码:688521.SH) 今日宣布以色列人工智能 (AI) 芯片制造商Hailo在其Hailo-15™高性能AI视觉处理器产品系列中,采用了芯原的图像信号处理器 (ISP) IP ISP8000L-FS和视频处理器 (VPU) IP VC8000E。这两款被采用的IP使Hailo创新的AI解决方案能够在广泛的应用中得到高效的实施部署,并缩短相关上市时间和降低工程成本。

1.png

芯原的ISP8000L-FS IP专为先进且高性能的摄像头应用而设计,具备面向特定应用的硬件安全机制,并已通过ISO 26262和IEC 61508功能安全标准双认证,非常适合对功能安全要求严苛的汽车及工业应用。ISP8000L-FS为单路4K@60fps或双路4K@30fps摄像头提供高质量且可靠的视频处理,并支持高动态范围 (HDR) 处理和2D/3D降噪等。

芯原的VC8000E视频编码器为用于回放和机器学习的多个视频流提供紧凑的存储。其可选择的视频格式和色位深度,以及用户可控的编码参数,能够在不同应用场景实现最优的视频编码。

Hailo视觉处理器产品总监Ori Katz表示:“通过集成芯原的ISP IP和高效的视频编码器IP,我们的AI视觉处理器将使监控和工业应用变得更加智能、安全、可靠和准确。”

芯原执行副总裁,IP事业部总经理戴伟进表示:“监控市场竞争激烈,产品需要高效率地满足特定功能。芯原丰富且灵活的IP解决方案旨在高效解决低延时、低功耗和最小化DDR等挑战。我们很荣幸能与Hailo开展长期合作,共同赋能快速增长的AI监控摄像头市场及其他工业领域。”

关于Hailo

Hailo是一家专注于AI的芯片制造商,其正在研发能够在边缘设备上实现数据中心级性能的AI处理器。该处理器基于传统计算机架构进行创新,使智能设备能够以最低的功耗、尺寸和成本,实时执行复杂的深度学习任务,如目标检测和分割。公司产品适用于多种智能机器和设备,覆盖的行业包括汽车、安防、工业4.0和零售。了解更多信息,请访问:https://hailo.ai

关于芯原

芯原微电子 (上海) 股份有限公司 (芯原股份,688521.SH) 是一家依托自主半导体IP,为客户提供平台化、全方位、一站式芯片定制服务和半导体IP授权服务的企业。在芯原独有的芯片设计平台即服务 (Silicon Platform as a Service, SiPaaS) 经营模式下,通过基于公司自主半导体IP搭建的技术平台,芯原可在短时间内打造出从定义到测试封装完成的半导体产品,为包含芯片设计公司、半导体垂直整合制造商 (IDM)、系统厂商、大型互联网公司和云服务提供商在内的各种客户提供高效经济的半导体产品替代解决方案。我们的业务范围覆盖消费电子、汽车电子、计算机及周边、工业、数据处理、物联网等行业应用领域。

芯原拥有多种芯片定制解决方案,包括高清视频、高清音频及语音、车载娱乐系统处理器、视频监控、物联网连接、智慧可穿戴、高端应用处理器、视频转码加速、智能像素处理等;此外,芯原还拥有6类自主可控的处理器IP,分别为图形处理器IP、神经网络处理器IP、视频处理器IP、数字信号处理器IP、图像信号处理器IP和显示处理器IP,以及1,500多个数模混合IP和射频IP。

芯原成立于2001年,总部位于中国上海,在中国和美国设有7个设计研发中心,全球共有11个销售和客户支持办事处,目前员工已超过1,400人。

来源:芯原VeriSilicon

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 13

这是嵌入式开发中常用的几个专业术语,其诞生的背景和其具体作用大概如下

在很久很久以前,那是8051单片机流行的时代,做单片机开发都需要一个专用工具,就是单片机的编程器,或者叫烧写器。说“烧”写一点不为过,当年的经典芯片AT89C51在编程时需要十几伏的高电压,加在一个特定的引脚上,才能进入编程。对于某款芯片的编程,都有一个特定的时序,这个时序通常在芯片的datasheet里进行描述并以硬件实现。另外在编程器里的也有一个MCU,这其中使用软件产生这个时序,从而对目标芯片进行编程。电脑通过串口把程序发到编程器,编程器按照规定的时序把程序送入目标芯片。

但是这种编程模式有几个问题,首先就是需要为特定的芯片购买特定的编程器。这种编程器通常比较昂贵,且只能用于特定型号的MCU. 对于企业来说,编程器的成本算不了什么,但更大的问题是,编程时我们必须把待编程的芯片从产品上拆下来,插到编程器上,编程后再安装回产品中。这种方法对于双列直插式的芯片也许是可行的。但对于现在日益流行的表面贴装技术是很不可行的,尤其是BGA封装的芯片,通常需要专业设备才能拆卸,拆下后需要重新植球才能焊接。。。为了更新固件而将其从高密度的PCB板上拆下来,是非常不可行的。

为了能不把芯片拆下来就更新程序,人们发明了一种叫ISP的技术,即在系统编程。在系统编程就是通过串口或者其他通用的通用通信接口,为芯片编程。在产品上可以预留一个串口,需要更新时,只要把产品插到电脑上,通过串口把程序传到芯片里,就完成了更新操作。ISP技术的实现,其实就是依赖于芯片在出厂时预先烧写的bootloader程序,bootloader还有很多不同的叫法,比如ISP服务程序(STC宏晶的51单片机这么叫)、bootstrap(MSP430的BSL编程这么叫)等等。但本质上都是相同的。bootloader在芯片复位(或者上电)时,会优先于用户自己的代码启动。这段代码会首先检测芯片的指定引脚上有没有特定的信号,如果没有,则跳入用户程序执行。否则就按照bootloader特定的通信协议,与计算机进行握手,并最终触发计算机将新的程序通过通用接口(如串口)传送到芯片。然后bootloader通过软件的方式(当然需要硬件支持),擦除用户程序区,将新的程序写入到指定的位置。另外提到的是,bootloader是由各个芯片厂家自己写的,因此不是通用的。尽管都是用串口,但通信协议是不同的。比如像国产垃圾STC单片机,通信协议甚至是保密的。因此通常需要厂家提供的专用ISP软件(flash loader)才能给芯片编程。

另外,比ISP更先进一点的一个技术叫IAP,即在应用编程。IAP技术允许用户程序修改flash。说白了IAP就是允许用户自定义bootloader,或者说有2个bootloader,一个bootloader是芯片出厂时固化的,另一个是用户自定义的。自定义的bootloader在固化的bootloader之后启动。也许你就要问了,用户自定义的bootloader不就是用户程序吗?其实它跟普通用户程序的区别就是它不会那么容易的被擦除。。。一般是先用专用软件,调用固化的bootloader,来写入自定义的bootloader,然后自定义的bootloader利用能写flash的能力,来给芯片写入新的程序。

为什么需要自定义bootloader呢?默认的bootloader需要在固定引脚,通过串口,以固定的协议传送程序。如果你对这个过程的任何一点不满意,那你就要自定义bootloader喽~

再说说DFU,这个名词通常是针对USB设备说的。因为现在的设备基本都是USB了,没用串口的了。。。很多MCU也内置了USB的支持。DFU是Device Firmware Upgrade的缩写,在我的理解中,DFU模式就是支持USB的bootloader。。。DFU模式通常需要特定的驱动程序,因为现在的芯片USB接口通常工作于VCP(Virtual COM Port)模式,插到电脑上后会虚拟成一个串口设备。而DFU模式则于此不同。VCP模式下,PC端是一个串口驱动程序,MCU端是用户程序。而DFU模式下,PC端是DFU驱动程序,MCU端是bootloader。DFU模式的bootloader通常是用户自定义的,并通过固化的bootloader由串口刷入。

进入bootloader程序通常有两种方式,一种是硬件复位(或者掉电),即按板上的复位按钮。芯片复位后会先执行bootloader。第二种方式是以软复位的方式进入的,软复位通常是通过PC发送一串指定的指令,用户程序中会通过中断服务程序检测到并处理这些指令。满足触发条件后,芯片将执行软复位,并将指定的地址装入PC寄存器,从而通过软件的方式跳入bootloader程序。

最后我们来看一下Arduino和Maple板子的刷写方式。

Arduino板上有两个MCU,一个是我们都知道的执行程序的那个MCU,它里面刷写了Arduino自定义的bootloader。另外一个是USB接口附近的一个QFN封装的小芯片,它也是一片MCU,只不过是带USB支持的。在这里它完成USB转串口的功能。更重要的是,它可以监测PC发来的指令流,其中就包含了复位指令。收到USB发来的复位指令后,它会在目标MCU的复位脚加一个负脉冲,使得目标MCU复位,进而将下载指令流放到目标MCU的串口上。使得目标MCU的bootloader检测到,从而完成下载。

Maple只有一个MCU,因此从USB收到下载指令后,只不过复位的不是别的芯片,而是复位自己。将自己复位到DFU模式,从而利用bootloader从USB下载程序。

来源:博客园 - tq3101955

围观 935

本文首先介绍了在线编程技术,然后给出了基于两种下载线设计电路,最后阐述了的性能特点。实践表明:本设计具有低成本、高灵活性,对单片机爱好者,尤其是初学者,具有很强的实用价值。

一、ISP技术

在单片机的实际应用中,往往要求系统能够脱机运行,这就要求必须将用户程序代码固化到非易失性的程序存储器中。把用户程序代码固化到程序存储器的过程称为编程。传统对程序存储器的编程是通过编程器完成的,用户需要将单片机从目标板上取下来放到编程器上,然后通过烧写软件将程序代码固化到程序存储器中,这种编程方式通常称为脱机烧写(也叫离线编程)。但随着芯片制造工艺的不断提高,贴片式封装得到快速发展,这就使得单片机不可能轻易取下来放到编程器上。目前普遍采用ISP技术,这种编程方式不用费劲把单片机从目标板上取下来,而是通过单片机上的相关接口就可以直接将编好的程序代码固化到程序存储器中,对于STC单片机,用的是它的UART接口,也就是串行口:对于AT89S51单片机,用的是它的SPI接口,接口标准不同,涉及的引脚和下载电路也就不同。本文介绍STC单片机的ISP下载电路。

二、串口ISP下载线设计

STC单片机是宏晶公司生产的新一代、增强型51单片机,具有较快的运行速度和丰富的片上资源,尤其是该系列单片机支持ISP下载,用户利用STC单片机自带的串行口(即P3.0和P3.1引脚),再配合简单的外围电路即可实现在系统编程,且片内Flash的擦写次数可达10万次以上,完全能够满足用户需求,下图即为串口ISP下载线电路原理图。

基于STC单片机的ISP下载线设计

上图电路仅用了1个MA×232芯片、4个容量为104的去耦电容和一个9针的“D”型连接器,其中MA×232芯片用于RS232电平和TTL电平之间转换以及电气隔离,104电容主要用于滤除高频噪声,“D”型连接器是单片机和电脑进行RS232接口标准通信的物理接口。按照上述电路焊接完毕后,再到宏晶公司网站免费下载一个烧写软件(名称是“STC单片机PC端ISP下载控制软件”),最后用一条标准的RS-232数据线连接目标板和电脑即可完成程序代码的在线烧写。

三.USB口ISP下载线设计

随着计算机的发展,现在的笔记本电脑甚至一些台式计算机上面均不再配置RS232接口,取而代之的是USB接口,但在一些制作或设备中RS232接口仍很常见,因此有必要设计一个USB转串口电路。目前用于USB转串口的专用芯片很多,综合成本、性能和电路简单程度,笔者介绍由美国SILICon公司生产的高集成度USB转UART芯片CP2102。该芯片符合USB规范2.0,全速12Mbps,片内集成USB收发器,无须外部电阻,内部集成时钟,无需外部振荡器,因此其最重要的特点是单片集成转换器所需的全部电路,可以在不使用任何分离元件情况下独立实现接口转换功能。下图即为利用CP2102芯片设计的USB口ISP下载线电路原理图。

基于STC单片机的ISP下载线设计

制作和使用该电路时应注意两点:一是CP2101的UART总线上的信号是TTL电平,能够被单片机直接识别,若目标板上使用的是RS232电平,应在本电路后面增加TTL电平转RS232电平电路;二是在使用该电路前应先安装CP2101的驱动程序,以后的使用方法与串口ISP下载方法基本相同,在此不再赘述。

四.结束语

随着可编程微处理器向贴片方向发展,ISP技术必将得到重视和普及,ISP技术不仅节省了通用编程器及适配器的高额费用,还减少了频繁插拔单片机的麻烦,从而大量节省了系统开发时间,且满足了用户程序在线更新的要求,对单片机爱好者,尤其是初学者,具有很强的实用价值。

来源: http://www.go-gddq.com/

围观 389

ISP:In System Programing,在系统编程

IAP:In applicating Programing,在应用编程

ICP:In Circuit Programing,在电路编程

ISP是指可以在板级上进行编程,也就是不用拆芯片下来,写的是整个程序,一般是通过ISP接口线来写。

IAP虽然同样也是在板级上进行编程,但是是自已对自已进行编程,在应用中进行编程,也即可以只是更改某一部分而不影响系统的其它部分,另外接口程序是自已写的,这样可以进行远程升级而不影响应用。

打个比喻吧:

1、ISP是把房子拆了再重造一间,那么在造好之前当然是不能住人的啦!

2、IAP是在造好的房子里边进行一些装修,当然人可以继续住啦!

ICP是在电路编程,是LPC芯片的编程方式,相当于ATMEL的ISP,而LPC的ISP就相当于ATMEL的IAP了。

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;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公司的单片机AT89S8252,提供了一个SPI串行接口对内部程序存储器编程(ISP)。SST公司的单片机SST89C54,其最大的特点内部有两块独立的FLASH存储器,具有IAP(应用中在线编程)功能,对于8052系列的其它公司的单片机(ATMEL、 WINBOND、ISSI)可以直接代换,软硬件无须做任何改动。

PHILIPS公司的P89C51RX2xx系列是带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进去,然后就可以用了。

转自: jack_hzm

围观 404

对Flash-based的MCU来说, ISP和ICP几乎是不可或缺的功能, 但我们经常被这两个功能搞混, 究竟他们的差别在哪里? 对客户的意义又是什么?在这里, 和大家分享并澄清一些观念, 希望对大家有所帮助, 进而解答来自客户关于ISP与ICP的疑问.

1)在开发阶段
改code时, 不再需要将MCU从板子上拔起来, 拿到烧录器上烧, 然后再装回去. 可以直接利用ISP/ICP Programmer做板上烧录, 为开发者提供了极大的便利性.

2)在量产阶段
客户可以采用”先焊到板子上再烧code”的方式, 将烧code的动作安排在生产线的某一站.

那么传统的方式 (先将code烧好再焊到板子上)有什么缺点?

传统的方式是这样的: 拆封-->从tray盘取出chip-->烧录-->把chip放回tray盘.

这样的流程比起上面建议的方式: 增加了烧录时间, 容易造成QFP包装的chip弯脚, 或忘了烧code即放回tray盘.

3)在成品阶段
已组装好的成品若要改code, 可以透过预留的接口, 利用ISP或ICP, 更新MCU, 不需要拆机.

什么是 IAP (In-Application Programming)?

IAP指的是, MCU在运行的状态下, 利用ISP的机制, 不透过外接工具 (例如: ISP Programmer) 的帮忙, 去更新APROM, DataFlash 或 CONFIG. 要实现这种功能,

系统必须有取得更新数据的能力, 例如: 处于某一种联机的状态.

(注: 有时候, ISP/IAP的分别并不是那么清楚!)

ISP与ICP的差别

For ISP

(1) MCU必须处于可执行程序的状态 (除了上电, 还要接XTAL), 且必须预烧ISP-code在LDROM里面

(2) 烧录范围只限于APROM, DataFlash或CONFIG (但对使用者来说, 应经够了!)

(3) chip在LOCK的状态下, 仍然可以只更新某一区块 (APROM, DataFlash或CONFIG)

(4) 因为烧录的动作取决于ISP-code的写法, 所以给系统设计者的弹性较大

For ICP

(1) MCU只要处于上电状态即可, 不必预烧任何code在MCU里面

(2) 烧录范围涵盖整颗MCU, 包括 APROM, DataFlash, CONFIG, LDROM和 ROMMAP

(3) chip在LOCK的状态下, 无法只更新某一区块, 只能在erase-ALL之后,更新某一区块, 再逐一烧回其它区块(因为ICP的本质就是走串行接口的Writer Mode, chip被LOCK之后, 除了erase-ALL, 所有烧录动作皆会被禁止)

(4) 因为烧录纯粹是ICP硬件的行为, MCU无法自己更新自己, 所以给系统设计者的弹性较小(例如: 无法藉由ICP去实现IAP的功能)

ISP与ICP的使用场合

依这两者的特性, 配合客户的系统需求, 而后才建议客户使用ISP或ICP.

来源: 21iconic电子网

围观 672

对Flash-based的MCU来说,ISP和ICP几乎是不可或缺的功能。但我们经常被这两个功能搞混,究竟他们的差别在哪里?对客户的意义又是什么?在这里,和大家分享并澄清一些观念,希望对大家有所帮助,进而解答来自客户关于ISP与ICP的疑问。

1)在开发阶段

改code时,不再需要将MCU从板子上拔起来,拿到烧录器上烧,然后再装回去。可以直接利用ISP/ICP Programmer做板上烧录,为开发者提供了极大的便利性。

2)在量产阶段

客户可以采用“先焊到板子上再烧code”的方式,将烧code的动作安排在生产线的某一站。

那么传统的方式(先将code烧好再焊到板子上)有什么缺点?

传统的方式是这样的:拆封-->从tray盘取出chip-->烧录-->把chip放回tray盘。

这样的流程比起上面建议的方式:增加了烧录时间,容易造成QFP包装的chip弯脚,或忘了烧code即放回tray盘。

3)在成品阶段

已组装好的成品若要改code,可以透过预留的接口,利用ISP或ICP, 更新MCU,不需要拆机。

什么是 IAP(In-Application Programming)?

IAP指的是,MCU在运行的状态下,利用ISP的机制,不透过外接工具(例如:ISP Programmer) 的帮忙, 去更新APROM、DataFlash 或 CONFIG。要实现这种功能,系统必须有取得更新数据的能力,例如:处于某一种联机的状态。

(注:有时候, ISP/IAP的分别并不是那么清楚!)

ISP与ICP的差别

一、 ISP

(1) MCU必须处于可执行程序的状态(除了上电,还要接XTAL),且必须预烧ISP-code在LDROM里面

(2) 烧录范围只限于APROM、DataFlash或CONFIG (但对使用者来说, 应经够了!)

(3)chip在LOCK的状态下,仍然可以只更新某一区块 (APROM、DataFlash或CONFIG)

(4) 因为烧录的动作取决于ISP-code的写法,所以给系统设计者的弹性较大

二、 ICP

(1) MCU只要处于上电状态即可,不必预烧任何code在MCU里面

(2) 烧录范围涵盖整颗MCU,包括 APROM、 DataFlash、 CONFIG、 LDROM和 ROMMAP

(3) chip在LOCK的状态下,无法只更新某一区块,只能在erase-ALL之后,更新某一区块,再逐一烧回其它区块(因为ICP的本质就是走串行接口的Writer Mode,chip被LOCK之后,除了erase-ALL,所有烧录动作皆会被禁止)

(4)因为烧录纯粹是ICP硬件的行为,MCU无法自己更新自己,所以给系统设计者的弹性较小(例如:无法藉由ICP去实现IAP的功能)

三、ISP与ICP的使用场合

依这两者的特性,配合客户的系统需求, 而后才建议客户使用ISP或ICP。

来源:互联网(版权归原著作者所有)

围观 448
订阅 RSS - ISP