可以分为3种:

  • ISP(In-System Programming)

    在系统编程,使用引导程序(Bootloader)加上外围UART/SPI等接口进行烧录。

  • ICP (In-circuit programmer)

    在电路编程,使用SWD/JTAG接口

  • IAP(In-Application Programming)

    指MCU可以在系统中获取新代码并对自己重新编程,即用程序来改变程序

1、ISP(串口烧录)

特点:

  • BOOT0 = 1,BOOT1 = 0

  • 启动地址:0x1FFF0000

  • 使用串口下载程序

  • 系统存储器(System memory)启动方式运行内置的Bootloader,将程序写入主存储区

  • 重启后,需要再将BOOT0拉低,从主存储区启动程序

2、ICP(JTAG口烧录)

特点:

  • BOOT0 = 0,BOOT1 = x

  • 启动地址:0x08000000

  • 使用JTAG或者SWD模式下载程序

  • 主闪存存储器(Flash memory)启动方式,将程序在主存储区写入

  • 重启后也直接从这启动程序

3、IAP(升级/跳转程序)

IAP的原理与上面两种有较大区别,这种方式将主存储区又分成了两个区域(根据实际需要由开发者自行分配),0800 0000起始处的这部分,存储一个开发者自己设计的Bootloader程序,另一部分存储真正需要运行的APP程序。

单片机的Bootloader程序,其主要作用就是给单片机升级。在单片机启动时,首先从Bootloader程序启动,一般情况不需要升级,就会立即从Bootloader程序跳转到存储区另一部分的APP程序开始运行。

假如Bootloader程序时,需要进行升级(比如APP程序运行时,接收到升级指令,可以在flash中的特定位置设置一个标志,然后触发重启,重启后进入Bootloader程序,Bootloader程序根据标志位就能判断是否需要升级),则会通过某种方式(比如通过WIFI接收升级包,或借助另一块单片机接收升级包,Bootloader再通过串口或SPI等方式从另一块单片机获取升级包数据)先将接收到的程序写入存储区中存储APP程序的那个位置,写入完成后再跳转到该位置,即实现了程序的升级

单片机程序烧录方式有几种?相关推荐

  1. 【单片机】一文彻底搞懂单片机程序烧录

    前言   任何和电子相关的专业的同学,相信在大学期间都会接触到一个非常常用的设备--单片机,但是由于课程时间有限,很多人的学习主要还是为了完成课设任务,而不会去思考或研究其中的一些细节,其中就包括学习 ...

  2. 单片机c语言除法运算,针对小容量单片机程序优化方式--乘除法篇

    原标题:针对小容量单片机程序优化方式--乘除法篇 目前单片机的市场竞争很激烈,许多应用出于性价比的考虑,选择使用程序存储空间较小(如1K,2K)的小资源8位MCU芯片进行开发.一般情况下,这类MCU没 ...

  3. 单片机长时间程序跑飞_单片机程序跑飞的三种现象、原因及解决方法

    今天在编写单片机程序的时候,由于中断服务程序写的不好,导致单片机程序总是跑飞,最后费了好长时间,花了很大功夫才找到问题原因,由此总结了单片机程序跑飞的三种现象.原因及解决方法. 一.数组越界(数组溢出 ...

  4. 单片机程序烧录的3种方式(ISP、ICP、IAP)是什么?

    说起给单片机烧录程序,大家应该都不陌生吧,我最早接触单片机是从51单片机开始的,型号是STC89C52RC,当时烧录程序就是用的下面这种烧录软件--STC-ISP. 这种方式,通过串口连接单片机,选择 ...

  5. STM32程序烧录方式总结

    STM32启动模式 在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式 在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯 ...

  6. stc51单片机怎么学, 先掌握STC单片机程序烧录方法

    大家好,我是无际的搭档徐明. 今天我在这里和大家探讨一下关于51单片机怎么学这个话题. 08年我在大学里学习单片机课程的时候,学习内容主要包括单片机的发展历史,单片机的框架,单片机的寄存器,以及单片机 ...

  7. STC单片机程序烧录你了解吗

    STC是国内比较有名的51单片机厂商,它独特的串口烧录方式和ISP下载工具(STC单片机ISP下载工具如图所示.),免去了昂贵的烧录工具,深受广大学生的喜爱,也是很多大学生入门首选单片机.今天介绍一下 ...

  8. 单片机程序下载方式ISP、IAP

    一般只能通过三种方式下载程序到单片机中:1.JTAG    2.ISP    3.IAP 1.JTAG 要使用JTAG方式下载程序,不管是使用J-LINK.ULINK.ST-LINK,只需要把单片机上 ...

  9. CH340进行STM32单片机程序烧录

    目录 代码: 接法: 结束: 刚写完32点灯程序,接下来打算用CH340进行烧录 代码: #include<stm32f10x.h> void led_init(){ GPIO_InitT ...

最新文章

  1. 伍六七带你学算法 进阶篇-三数之和
  2. MySQL的binlog数据如何查看
  3. wifi定位算法 java_记一次APP的so层算法逆向(七)
  4. boost::detail::allocator模块的测试程序
  5. 【公开课预告】:六款开源LL-HLS/LL-DASH播放器评测
  6. Bootstrap3 带悬停效果的表格样式
  7. ImageMagick 将PDF转图片命令
  8. 单向流动的拓扑结构_只允许数据在传输介质中单向流动的拓扑结构是
  9. C++高级进阶 第二季:mutable 关键字
  10. 2万字用Python探索金庸小说世界
  11. 电工最实用口诀 背会就是老电工
  12. wordpress插件_5个最佳WordPress企业目录插件
  13. cad沿线插入块 lisp_AutoCAD导出块名和块插入点列表(AutoLISP源码)——好用的AutoCAD块统计工具...
  14. 虚幻4引擎开发的手游_2019虚幻4手游大作排行-虚幻引擎开发的手机游戏
  15. 请回答2021,爱彼迎、木鸟民宿、途家民宿年度走心PK
  16. 共轭梯度法确实存在数值精度的要求
  17. 基于 OpenCV + Python 的人脸识别上课签到系统
  18. 在Android中sidebar控件使用,Android控件--侧边栏SideBar
  19. (8.1.5.5)Android Testing Support Library翻译之Espresso 意图
  20. JavaScript传参的6种方式

热门文章

  1. javaSE探赜索隐之一<小生的第一篇CSDN博客,欢迎大家指正>
  2. Android TextView中 代码字体加粗方法
  3. [解疑][TI]TI毫米波雷达系列(三):调频连续波雷达回波信号3DFFT处理原理(测距、测速、测角)
  4. [附源码]java毕业设计网上书店系统
  5. 交换机接口及连接技巧
  6. oracle ora00957,常见oracle错误代码ORA-xxxxx及其解决方法(持续更行中)
  7. 强制双休!传腾讯光子调整加班机制,21 点前必须离开工位
  8. 基于Stm32的WiFi多功能LED
  9. ionic中android的返回键
  10. 开发实况4.1.linux相关-CRT连接虚拟机提示用户名或密码错误