当前位置: 首页 > news >正文

单片机烧录方式 -- IAP、ISP和ICP

目录

背景

1 什么是ICP

2 什么是ISP

3 什么是IAP

4 总结


背景

对于51单片机,我们使用STC-ISP上位机软件通过串口进行程序的烧写;对于STM32系列单片机,我们既可以通过串口烧写程序,也能通过JLink或是STLink进行程序的烧写,那么这些烧写方式有什么区别呢?

1 什么是ICP

ICP(在电路编程 In Circuit Programming):使用SWD/JTAG接口进行烧录,如Jlink、STLink等烧录器进行烧录。

以下是一个针对Cortex-M3内核的下载框图,如果此时使用的是STM32F103系列单片机,上位机使用的是Keil,图中的调试主机(PC)可以认为是Keil,调试器可以认为是第三方工具JLink或者STLink,调试主机通过USB接口与调试器进行通信,调试器通过JTAG或者SWD接口与单片机进行程序的下载及调试。

2 什么是ISP

ISP(在系统编程 In System Programming):在bootloader编程,就是系统存储区。比如51单片机通过STC-ISP上位机软件烧写程序。

具备ISP的单片机必须有一块内部的FLASH区域,这个区域不允许用户使用,它通过boot pin的方式选择单片机复位之后PC指针是指向用户区域还是ISP区域。

这里以STM32F103系列单片机为例,查看用户手册2.4章节,分为BOOT1和BOOT0引脚,BOOT1和BOOT0引脚不同的电平,复位后PC指向的位置不同,如下所示:

查看闪存,发现《信息块》处有一个《系统存储器》,大小为2K,这个就是STM32F103的ISP程序存放的位置,此区域不允许用户修改(当然也没有权限修改),它用于使用芯片原厂的上位机软件或者第三方软件进行烧录使用。

下图是通过《STM32CubeProgrammer》上位机软件对STM32F103芯片进行连接的示意图,注意BOOT0高电平,BOOT1低电平,使用串口1。

3 什么是IAP

IAP(在应用编程 In Application Programming):在mainflash上面分两块区域,一个作为boot(系统存储区),一个作为app(用户存储区),具体实现就是在系统存储区把程序烧写完成,然后通过拨PC指针指向用户存储区,当然这个也是需要特定的上位机工具,一般来说很多厂商都提供IAP工具,也有很多第三方的上位机工具,IAP功能类似USB的DFU。

4 总结

  • IAP:所有单片机都支持的下载方式,IAP程序需要用户自己编写,并且取决于主Flash的大小,如果太小,不能装下IAP+APP程序,那么就不能使用IAP下载程序。
  • ISP:目前大部分单片机支持的下载方式,程序由芯片厂家提供,下载接口多为串口,也有USB、SPI。I2C等,借助芯片厂家的烧录工具进行烧写,比如51单片机的《STC-ISP》上位机,STM32单片机的《STM32CubeProgrammer》上位机等。
  • ICP:目前大部分单片机支持的下载方式,取决于芯片出厂是否预留下载接口,常见的下载接口有SWD和JTAG接口,如果存在这些下载接口,可以使用第三方下载工具,如JLink、STLink、DapLink进行程序的下载。
http://www.lryc.cn/news/307883.html

相关文章:

  • 数据结构(C语言版)01
  • Node.js-文件读取输入
  • 时隔一年的测评:gpt3.5发展到什么程度了?
  • [RCTF2015]EasySQL1 题目分析与详解
  • 开源的 Python 数据分析库Pandas 简介
  • LeetCode 2125.银行中的激光束数量
  • 【探索AI】Sora - 探索AI视频模型的无限可能
  • NGINX的重写与反向代理机制解析
  • JVM的深入理解
  • JavaWeb——007MYSQL(DQL多表设计)
  • 深度学习500问——Chapter01:数学基础
  • day03_登录注销(前端接入登录,异常处理, 图片验证码,获取用户信息接口,退出功能)
  • k8s初始化报错 [ERROR CRI]: container runtime is not running: ......
  • vscode windows 免密登录 powershell.sh
  • 10 种3D 建模技术
  • 常见的socket函数封装和多进程和多线程实现服务器并发
  • Tomcat架构分析
  • 旧项目集成阿里云滑动验证码(web和H5方式)
  • 机器人内部传感器阅读梳理及心得-速度传感器-数字式速度传感器
  • 【vue+element ui】大屏自适应中el-select下拉内容在低分辨率下显示不全问题解决
  • 前端架构: 脚手架之多package项目管理和架构
  • 【C# 多线程】如何停止正在运行中的子线程
  • 服务器机房安全守护:五大物理安全实践
  • spring boot 修复 Spring Framework URL解析不当漏洞(CVE-2024-22243)
  • VR全景HDR拍摄教程
  • hive执行select count(1)返回0
  • 3D Gaussian splatting 协方差矩阵 球谐函数 简单理解
  • 代码随想录算法刷题训练营day27:LeetCode(39)组合总和、LeetCode(40)组合总和 II、LeetCode(131)分割回文串
  • docker 容器修改端口和目录映射
  • echarts鼠标事件