ISP、IAP、ICP、JTAG、SWD的编程特点!种编程方式区别总结

2023-05-16

转载自:http://www.eeskill.com/article/id/38434

http://bbs.ic37.com/bbsview-33838.htm

电子工程师都知道,半导体技术发展迅猛,带动了各种芯片技术的不断升级。在数据存储方面,从最初的掩膜ROM,发展到现在的Flash技术,存储技术的不断改进,相对应的编程技术也在不断发展。

记得老一辈工程师在烧写51单片机的时候还是用一台硕大的编程器进行程序下载,而且还是一次性的(OTP),每次都小心谨慎的把代码调试了又调试后才下载看效果。现在简单到只需一个串口下载器即可实现程序下载,基本不需要考虑编程次数的问题,一有想法随时编译下载更新。

在这个发展过程中,也诞生了很多编程技术,比如ISP、IAP、ICP,另外还有JTAG编程、SWD编程、UART编程等等。玩单片机的对这些词应该都不陌生,但他们之间有什么区别呢?首先看下他们的定义:

ISP:In System Programing,在系统编程

ICP:In Circuit Programing,在电路编程

IAP:In Application Programing,在应用编程

JTAG编程:通过JTAG协议进行编程

SWD编程:通过SWD协议进行编程

UART编程:通过UART进行编程

看似很乱,其实捋清楚他们之间的层次关系就不会乱了。用个图来形象表示一下:

从图上看,ISP和ICP是处于最顶层的技术。描述的是一种编程结构,所用使用到的协议、通信端口等,不同芯片有不同的定义。

IAP在第二层,是一种编程方式。实现方式是将一段目标芯片可执行的代码通过某种通信协议下载到芯片RAM中并由芯片执行,由该代码实现具体操作以达到编程的目的。这种方式需要芯片支持通过某种通信协议对芯片的RAM进行读写并能控制其CPU。这是在编程结构下的一种编程方式,像AK100Pro、SmartPRO 5000U-Plus等烧录器,都用到了这种编程方式。

最下面的是硬件通信协议,UART是最早应用在单片机里面的串行通信技术。JTAG和SWD是ARM内核芯片兴起之后,逐渐流行起来的,这三种技术描述的是编程过程中硬件层使用的通信协议,是最底层的一些技术规范。

用一个表格来对比这几种通信协议的特性:

综合上面的内容,只要UART、JTAG、SWD这些硬件通信协议能保证电气连接的规范性和稳定性,那么ISP、IAP就能对芯片正确地编程。


最近在整理客户的一些疑问,给自己充充电,也跟大家一起学习下。

ISP、ICP、IAP三种编程方式区别:

ISP:In SYSTEM Programing,在系统编程

ICP:In CIRCUIT Programing,在电路编程

IAP:In applicating Programing,在应用编程

新唐M0提供2种编程模式:ISP和ICP

ISP与ICP的差别

For ISP

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

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

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

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

(5)不需要额外硬件

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的功能)

(5)需要其他硬件支持(如NU-LINK等)

什么是 IAP (In-Application PROGRAMMING)

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

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

(注:有时候, ISP/IAP的分别并不是那么清楚!我之前做得一个系统式通过网络服务器去IAP的)

形象点得描述是:

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

2、ICP是对房子地基与房子的整体重构;

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

期待DX发表意见,拍砖!!!


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ISP、IAP、ICP、JTAG、SWD的编程特点!种编程方式区别总结 的相关文章

  • 获取占用率大于70%的硬盘.java

    获取占用率大于70 的硬盘 xff0c 准备写入oracle过程 xff0c 在占比大于90 时 xff0c 向指定邮箱发送邮件 import java io File import java text DecimalFormat publ
  • 使用KNN方法进行MNIST数据集分类

    声明 xff1a 本文的代码部分可以戳这里下载 一 MNIST数据集 MNIST是深度学习的经典入门demo xff0c 他是由6万张训练图片和1万张测试图片构成的 xff0c 每张图片都是28 28大小 xff08 如下图 xff09 x
  • python遍历整个文件夹中的所有.txt文件并将绝对路径保存在指定的txt文档中

    在深度学习处理数据时经常会用到的一步操作 xff0c 路径名因人而异 xff0c 可以根据需求自行更改 import os get txt document rootdir 61 os path join 39 要读取的txt文件的绝对路径
  • PointNet的点云分割实验

    PointNet属于直接对点云数据进行语义分割的开山之作 xff0c 优点就不一一细说了 xff0c 直接上代码来说明跑代码的过程以及过程中遇到的问题 笔者不才 xff0c 欢迎斧正 xff01 实验的代码可以在这里下载 xff1a htt
  • 图表组件FusionCharts介绍及免费下载地址

    FusionCharts套件帮助你创建令人惊叹的 图表控件 xff0c 仪表 xff0c 并在瞬间映射在你的所有网站和企业应用 使用它 xff0c 你可以建立漂亮的仪表板 xff0c 报告 xff0c 分析 xff0c 监测 xff0c 调
  • Vscode编译调试C++程序

    一 简介 本文讲述在windows平台下在Vscode中使用g 43 43 编译本地C 43 43 程序 xff0c 并使用gdb调试的方法 可能有些朋友会说 xff1a windows上不是已经有visual studio这个最强IDE了
  • vmware下vmdk文件越来越大的解决方法探讨

    前段时间在vmware下面安装了ubuntu镜像 xff0c 用了一段时间后发现ubuntu的vmdk文件越来越大 xff0c 达到了31 6GB xff0c 如下图所示 而且随着继续安装新的软件仍然在增大中 即使在ubuntu里面删除了文
  • IAR烧写MSP430失败的解决方法

    1 失败状况如下 在驱动安装没错 xff0c xff08 板子插进去usb自动安装完成 xff09 config选的MCU也没错的情况下出现如图错误 xff1a The debugging session could not be star
  • 数据分析、数据可视化中的常用图形

    整理了一些常用的数据可视化图形 xff0c 一些图形重点已列出 xff0c 若想深入了解可自行百度 目录 简单数据可视化矢量图 数据分析 其他可视化图表 xff1a 逻辑分析 层次分析导图 简单数据可视化矢量图 条柱图 xff1a 标准条
  • 专线的种类介绍

    常见的三种专线类型 裸纤 也叫裸光纤 xff0c 运营商会提供光纤 xff0c 中间不经过别的设备 xff0c 光纤价格昂贵 1 裸纤按照距离收费 xff0c 距离越远越贵 xff08 一般不跨省 市 xff0c 太贵 xff09 2 光纤
  • Unity3D场景切换

    首先新建两个场景 xff1a Scene 1与Scene 2 在第一个场景Scene 1中加入UI控件Button Text设置为 点击切换场景 xff0c 名称为默认值 Button 新建一个脚本 xff0c 命名为ChangeScene
  • oracle10g后面的聚合运算函数:cube、rollup等

    oracle10g后面的聚合运算函数 xff1a cube rollup及聚合运算sql 看到很多次阅读 xff0c 所以还是过来再写点东西 cube和rollup xff0c 只能配合group by使用的 xff0c 之所以之前没怎么看
  • Ubuntu 14.04利用tasksel安装配置lamp环境

    用 tasksel 可以方便安装dns server lamp kubuntu desktop ubuntu desktop xubuntu之类的软件包 这个软件在server版是预装的 xff0c 而在桌面版里是不预装的 xff0c 想用
  • 设置USB无线网卡为监听模式大学霸IT达人 

    设置USB无线网卡为监听模式大学霸IT达人 当用户实施无线网络渗透时 xff0c 设置无线网卡为监听模式是必不可少的操作 大学霸IT达人信息安全技术大讲堂通常情况下 xff0c 用户会遇到各种问题 xff0c 如网卡不支持 xff0c 网络
  • 判断无线网卡是否支持5GHz频段

    判断无线网卡是否支持5GHz频段 目前 xff0c 无线WiFi网络支持2 4GHz和5GHz两个频段 大学霸IT达人其中 xff0c 5GHz传输速率更高 xff0c 逐步会成为主流 如果要使用或渗透5GHz网络 xff0c 则无线网卡也
  • 嵌入式开发之Vscode实用插件大全

    嵌入式开发之Vscode实用插件大全 Chinese Simplified 简体中文 xff08 神器 xff09 C C 43 43 amp CMake amp C C 43 43 Extension Pack xff08 神器 xff0
  • django将网络中的图片,保存成model中的ImageField

    有这样的情形 xff0c django个人头像在model中是 xff1a class UserProfile AbstractUser 34 34 34 用户 34 34 34 name 61 models CharField max l
  • 【AI视野·今日Robot 机器人论文速览 第九期】Thu, 17 Jun 2021

    AI视野 今日CS Robotics 机器人学论文速览 Thu 17 Jun 2021 Totally 15 papers x1f449 上期速览 更多精彩请移步主页 Daily Robotics Papers Autonomous Nav
  • SpringBoot 集成cas5.3 实现sso单点登录

    博主说明 这篇文章速成cas xff0c 下面包含了cas统一认证登录 xff0c 统一认证登出 有兴趣想了解更多cas内容的可以看看我下面这些文章 springboot 使用cas5 3 sso概念springboot 集成cas5 3
  • UltraVNC 使用,内网局域网远程控制

    介绍 UltraVNC 是客户端 服务器软件 xff0c 允许你经由 TCP IP 连线 xff08 也就是主机都在同一网络环境下 xff09 xff0c 控制远端的电脑 这个版本的开发以 RealVNC 为基础 xff0c 加上了Tigh

随机推荐

  • JS判断一个字符串是否在数组中

    方法1 xff1a arr indexOf 某元素 xff1a 未找到则返回 1 span class token keyword var span number span class token operator 61 span span
  • pb9 数据窗口的计算列

    数据窗口中 xff0c 可以增加计算列 xff0c 进行合计 平均或者其他计算动作 在窗口的按钮 xff0c 或者其他事件中 xff0c 可以对数据窗口的计算列的表达式进行修改 xff0c 这样可以将数据窗口多用 办法 xff1a dw 1
  • tar打包命令(linux)

    1 打包命令 span class token function tar span cvf 归档路径 被打包文件路径 span class token punctuation span c create archive v verbose
  • Python字符串与数组相互转换

    Python中有join 和os path join 两个函数 xff0c 具体作用如下 xff1a join xff1a 连接字符串数组 将字符串 元组 列表中的元素以指定的字符 分隔符 连接生成一个新的字符串os path join x
  • FastApi 文件上传upload

    需要使用的Python包 xff1a fastapi和uvicorn span class token keyword import span time span class token keyword import span uvicor
  • zip/tar 分割压缩和合并解压

    1 zip 分割压缩和合并解压 span class token comment 准备工作 xff1a 将文件或文件夹打包为zip压缩包 span span class token function zip span r src zip s
  • python 创建excel 并保存(两种方法)

    1 概要 python中的包xlwt和xlsxwriter都是比较方便创建excel文件并写入数据的 2 xlwt 创建excel并保存 xlwt中 xff1a 通过xlwt Workbook 来新建工作簿 xff1b 通过 add she
  • Python 保留两位小数几种方法

    一 xff1a 保留两位小数 且 做四舍五入处理 四舍六入五成双 xff0c 四舍六入五凑偶的意思 xff0c 根据百度词条的解释如下 xff08 1 xff09 当精确位后面一位的数字是1 4的时候 xff0c 舍去 xff08 2 xf
  • XSS 攻击常用代码

    1 XSS 攻击常用代码 span class token number 1 span 39 34 span class token punctuation span span class token punctuation span sp
  • xpath 爬虫案例

    1 案例 爬取糗百中的段子内容和作者名称 span class token keyword from span lxml span class token keyword import span etree url span class t
  • Selenium 鼠标滚动操作

    1 JS处理滚动条问题 span class token number 1 span 滚动条回到顶部 xff1a js span class token operator 61 span span class token string 34
  • selenium 定位元素(并集)

    并集 xff1a answer 61 driver find element By CLASS NAME info content and huida con text 1 id 说明 xff1a 通过元素的id属性来定位元素 xff0c
  • 精细粒度访问控制:DBMS_RLS包实现数据库表行级安全控制

    精细粒度访问控制 xff1a DBMS RLS包实现数据库表行级安全控制 这是行级控制 xff0c 并且用的数据库提供的dbms包做的 xff0c 而不是视图或者触发器 xff0c 据说 xff0c 可以对所有的DML起作用 精细粒度访问控
  • java获取json数组格式中的值

    第一种方法 xff1a String str span class token operator 61 span span class token string 34 39 array 39 39 id 39 5 39 name 39 39
  • 程序员面试经历

    现在找工作 已经没有了毕业以后那时候找工作的那种紧张心情 自从在上家公司离职以后 自己进行了一段时间的工作 世界上本来没有面霸 面试的多了 也就成了面霸 不得不承认 一开始自己面试是有些紧张 但是 面试的多了 也就不觉得紧张 反而有些平淡了
  • 宽度优先爬虫和带偏好的爬虫

    互联网可以看成一个超级大的 图 xff0c 而每个页面可以看成一个 节点 页面中的链接可以看成是图的 有向边 因此 xff0c 能够通过图的遍历得方式对互联网这个超级大 图 进行访问 图的遍历可以分为宽度优先遍历和深度优先遍历 xff0c
  • The connection to the server localhost:8080 was refused

    最近在学习安装Kubernetes集群的时候 xff0c 安装完执行sudo kubectl get nodes命令出现这个报错 xff1a 下面是解决方法 Master节点出现这个报错 首先需要检查Master安装完Kubernetes后
  • 给广大学习单片机的同学心得,如何学好单片机

    单片机 Microcontrollers 是一种集成电路芯片 xff0c 是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU 随机存储器RAM 只读存储器ROM 多种I O口和中断系统 定时器 计数器等功能 可能还包括显示驱动电
  • 企业如何实现云计算价值的最大化

    恒天云商业白皮书 xff1a http www hengtianyun com download show id 12 html 企业如何实现云计算价值的最大化 卷首语 虽然中国云计算产业尚处于导入和准备阶段 xff0c 但云产业生态链的构
  • ISP、IAP、ICP、JTAG、SWD的编程特点!种编程方式区别总结

    转载自 xff1a http www eeskill com article id 38434 http bbs ic37 com bbsview 33838 htm 电子工程师都知道 xff0c 半导体技术发展迅猛 xff0c 带动了各种