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

2023-11-13

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

目录

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

1、ICP(In Circuit Programing)

2、ISP(In System Programing)

3、IAP(In applicating Programing)

最后我们以烧录过程中使用的烧录工具以及具体案例来详细介绍这三种烧录方式。


单片机的烧录方式主要可以分为三种,分别为ICP(在电路编程)、IAP(在应用编程)以及ISP(在系统编程)。玩单片机的同学都应该听所说IAP、ICP和ISP这几个词,在此小编在帮你们“巩固”一下知识。首先先来介绍这几个小伙伴的名字。

  1. ICP(In Circuit Programing) 在电路编程  SWD接口
  2. ISP(In System Programing) 在系统编程(在线编程)   ISP 串口下载 (USB, UART即TTL,RS232COM口)。ISP下载三种串口互转原理图 https://www.docin.com/p-2143981023.html
  3. IAP(In applicating Programing) 在应用编程

ICP(In-Circuit Programming):  ICP是在芯片安装到用户应用板上后,通过JTAGI办议对闪存微控制器中存储器编程。

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

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

 

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)。

https://www.docin.com/p-2143981023.html

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’,跳到应用程序执行。

 

总结:

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

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

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

 

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

 

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

 

http://www.elecfans.com/emb/danpianji/20171219604989.html

http://www.eeskill.com/article/id/38434

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

单片机三种烧录方式ISP、IAP和ICP有什么不同?

https://cloud.tencent.com/developer/news/327258

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

单片机三种烧录方式ICP、IAP和ISP详解 的相关文章

  • 笔试题5:Java可以用非0来带代表true吗?

    Java 是一种强类型的语言 Java不能用非0代表true 也不能用0代表false 只能用布尔型的true和false来进行条件判断
  • 测试质量报告

    一 总结 1 1产品线分布 1 2前后端分布 二 重点跟进事项 2 1问题落实信息 2 2 关键文档信息 三 问题分析 3 1 趋势 3 1 1总体趋势 3 1 2业务线趋势 3 1 3业务线趋势 3 2 业务模块分布 3 3 严重程度分布
  • Visual Commonsense R-CNN (CVPR2020)

    这篇文章比较早 但是对于因果介绍的比较详细 很值得学习 代码 https github com Wangt CN VC R CNN 代码花了挺长时间总算跑通了 在 3080 上调真是错误不断 后来换到 2080 又是一顿调才好 这里跑通的主
  • Vue环形进度条

    环形进度条可设置背景颜色 遮罩层 文字 百分值默认保存两位小数 sizeOut 底圈半径 Number 默认值 100 sizeIn里圈半径 Number 默认值 80 size进度条大小 Number 默认值 10 注意 需要满足size

随机推荐

  • 《R语言实战》学习笔记:第三章 图像初阶

    R语言实战 学习笔记 第一章 R语言介绍 R语言实战 学习笔记 第二章 创建数据集 R语言实战 学习笔记 第四章 基本数据管理 R语言实战 学习笔记 第五章 高级数据管理 图像初阶 同时打开多幅图像 方法一 在创建一幅新图形之前打开一个新的
  • 使用预训练好的 DALLE 模型进行 Text-to-Image 生成图像

    使用预训练好的 DALLE 模型进行 Text to Image 任务 Hugging Face 文档 https huggingface co kuprel min dalle 安装库 pip install min dalle 本文使用
  • 钉钉考勤与企业系统对接

    公司最近企业系统要与钉钉考勤打卡数据对接 所以需要拿到钉钉上月员工的考勤打卡数据 配置了spring定时任务 任务类步骤如下 引入钉钉相关JAR包 一 获得tooken 1 需要公司钉钉管理员给开发人员开放考勤权限 2 开发人员登录钉钉开放
  • 一文看懂Linux基础

    文章目录 什么是Linux操作系统 window和linux的对比 快照的拍摄 Linux的文件结构 kali Linux的简单介绍 基础命令 vim命令 文件权限 kali的常见工具 查看命令 1 查看操作 2 删除操作 3 复制操作 4
  • 学完Python,我决定熬夜整理这篇总结...

    前言 学习Python 我决定熬夜整理这篇总结 目录 了解Python Python基础语法 Python数据结构 数值 字符串 列表 元组 字典 集合 Python控制流 if 判断语句 for 循环语句 while 循环语句 break
  • 【无标题】C语言编写一个简单答题系统

    这是蒟蒻写的第一个博客 将就看看吧 首先 我写的是一个填空题答题系统 填空题数目为20 其次 需要随机出题 题目出现顺序要不一致 1 产生随机数 1 20 2 解决运气不好的问题1 18 极少出现19 20 然后 及时反馈正确情况 记录同学
  • TypeScript 自定义数组排序

    TypeScript 自定义数组排序 前言 代码 基本原理 基本类型排序 复杂类型排序 前言 对列表进行排序 根据自定义规则 代码 基本原理 sort使用属性相减 a b 获取一个基本类型 1 0 1 如果小于0则将元素放到前面 如果大于0
  • 《数据处理与知识发现》章节测验复习

    数据处理与知识发现 章节测验 第1章 绪论 章节测验 第2章 数据预处理 章节测验 第3章 数据仓库 章节测验 第4章 关联规则挖掘 章节测验 第5章 聚类分析方法 章节测验 第6章 分类规则挖掘 章节测验 首先我们要明白关联分析 聚类分析
  • Flutter的FittedBox控件

    简介 FittedBox是Flutter中的一个控件 它用于调整其子控件的大小以适应可用空间 它会根据子控件的大小和可用空间的大小 自动进行缩放或拉伸操作 以使子控件恰好填充可用空间 属性 FittedBox的常用属性包括 fit 指定子控
  • 前端例程20211122:盐酸与氢氧化钠溶液中和pH计算工具

    文章目录 前言 功能演示 代码实现 前言 偶然的一个同事的工作需要计算盐酸与氢氧化钠溶液中和滴定过程的pH值 这里稍微对这个计算功能的实现做下记录 功能演示 上图两个溶液体积滑动条变动后单位有误 下面代码中已修正 代码实现
  • 《程序员面试宝典》第6章sizeof和数据对齐

    一 看例子讲sizeof include
  • 半监督目标检测(二)

    目录 Humble Teacher 1 要点 2 Overview 1 监督分支 2 非监督分支 3 图像增广 4 预测阶段 3 Soft Labels and Unsupervised Loss 1 RPN阶段 2 ROI 阶段 4 Ex
  • HJ61 放苹果

    题目 HJ61 放苹果 题解 递归 f m n 表示将m个苹果放在n个盘子中所有的放法 当n gt m时 一定有盘子空着 等效于将m个苹果放到m个盘子中 即f m n f m m 当 n lt m时 没有空盘子 那么每个盘子至少有一个 那么
  • 共享单车数据如何可视化?这篇文章手把手教你

    大家好 本篇文章是我今年立的flag的第5篇打卡文章 如果还不清楚背景的童鞋可以回看我今年1月1日发的这篇文章2021年来了 是时候为新的一年再立几个新的flag了 今天选取的地图是前几天利用数字中国创新大赛提供的共享单车数据做的一个可视化
  • org.hibernate.NonUniqueObjectException:a different object with the same identifier 异常解决方法

    问题 org hibernate NonUniqueObjectException a different object with the same identifier value was already associated with
  • 数字图像处理:直方图匹配或规定化Histogram Matching (Specification)原理及感悟

    前往老猿Python博文目录 https blog csdn net LaoYuanPython 注意 本文是 数字图像直方图匹配或规定化Histogram Matching Specification 处理 增加了部分问题的进一步解释后的
  • 世界树服务器bug位置,四叶草剧场世界树bug怎么获得 世界树bug神器获取位置图文详解...

    核心提示 四叶草剧场世界树bug怎么获得 在四叶草剧场的游戏中 世界树的爬塔挑战是最近玩家们正在参与的 不少玩家不知道BUG神器在哪一层怎么获得 接下来小编就为大家详细的介绍一下四叶草剧场世界树bug神器的获取位置图文详解吧 四叶草剧场世界
  • Linux使用jdk报错 /lib/ld-linux.so.2: bad ELF interpreter: No such file or direct

    有人说sudo yum install glibc i686可以解决问题 但是我认为不是这个问题 具体原因应该是在64位的机器中要兼容32位的jdk才会有这个问题 最根本的问题应该是jdk安装的版本错误 使用uname a查看linux架构
  • 分支限界---->15-谜问题

    15 谜问题 一 问题描述 在一个分成16格的方形棋盘上放有15块编了号的牌 对于这些牌给定的一种初始排列 要求通过一系列的合法移动将初始排列转换成目标排列 合法移动 每次将一个邻接于空格的牌移动到空格位置 注 并不是所有的初始状态都能变换
  • 单片机三种烧录方式ICP、IAP和ISP详解

    单片机三种烧录方式ICP IAP和ISP详解 目录 单片机三种烧录方式ICP IAP和ISP详解 1 ICP In Circuit Programing 2 ISP In System Programing 3 IAP In applica