单片机程序烧录方式有几种?
可以分为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程序的那个位置,写入完成后再跳转到该位置,即实现了程序的升级
单片机程序烧录方式有几种?相关推荐
- 【单片机】一文彻底搞懂单片机程序烧录
前言 任何和电子相关的专业的同学,相信在大学期间都会接触到一个非常常用的设备--单片机,但是由于课程时间有限,很多人的学习主要还是为了完成课设任务,而不会去思考或研究其中的一些细节,其中就包括学习 ...
- 单片机c语言除法运算,针对小容量单片机程序优化方式--乘除法篇
原标题:针对小容量单片机程序优化方式--乘除法篇 目前单片机的市场竞争很激烈,许多应用出于性价比的考虑,选择使用程序存储空间较小(如1K,2K)的小资源8位MCU芯片进行开发.一般情况下,这类MCU没 ...
- 单片机长时间程序跑飞_单片机程序跑飞的三种现象、原因及解决方法
今天在编写单片机程序的时候,由于中断服务程序写的不好,导致单片机程序总是跑飞,最后费了好长时间,花了很大功夫才找到问题原因,由此总结了单片机程序跑飞的三种现象.原因及解决方法. 一.数组越界(数组溢出 ...
- 单片机程序烧录的3种方式(ISP、ICP、IAP)是什么?
说起给单片机烧录程序,大家应该都不陌生吧,我最早接触单片机是从51单片机开始的,型号是STC89C52RC,当时烧录程序就是用的下面这种烧录软件--STC-ISP. 这种方式,通过串口连接单片机,选择 ...
- STM32程序烧录方式总结
STM32启动模式 在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式 在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯 ...
- stc51单片机怎么学, 先掌握STC单片机程序烧录方法
大家好,我是无际的搭档徐明. 今天我在这里和大家探讨一下关于51单片机怎么学这个话题. 08年我在大学里学习单片机课程的时候,学习内容主要包括单片机的发展历史,单片机的框架,单片机的寄存器,以及单片机 ...
- STC单片机程序烧录你了解吗
STC是国内比较有名的51单片机厂商,它独特的串口烧录方式和ISP下载工具(STC单片机ISP下载工具如图所示.),免去了昂贵的烧录工具,深受广大学生的喜爱,也是很多大学生入门首选单片机.今天介绍一下 ...
- 单片机程序下载方式ISP、IAP
一般只能通过三种方式下载程序到单片机中:1.JTAG 2.ISP 3.IAP 1.JTAG 要使用JTAG方式下载程序,不管是使用J-LINK.ULINK.ST-LINK,只需要把单片机上 ...
- CH340进行STM32单片机程序烧录
目录 代码: 接法: 结束: 刚写完32点灯程序,接下来打算用CH340进行烧录 代码: #include<stm32f10x.h> void led_init(){ GPIO_InitT ...
最新文章
- 伍六七带你学算法 进阶篇-三数之和
- MySQL的binlog数据如何查看
- wifi定位算法 java_记一次APP的so层算法逆向(七)
- boost::detail::allocator模块的测试程序
- 【公开课预告】:六款开源LL-HLS/LL-DASH播放器评测
- Bootstrap3 带悬停效果的表格样式
- ImageMagick 将PDF转图片命令
- 单向流动的拓扑结构_只允许数据在传输介质中单向流动的拓扑结构是
- C++高级进阶 第二季:mutable 关键字
- 2万字用Python探索金庸小说世界
- 电工最实用口诀 背会就是老电工
- wordpress插件_5个最佳WordPress企业目录插件
- cad沿线插入块 lisp_AutoCAD导出块名和块插入点列表(AutoLISP源码)——好用的AutoCAD块统计工具...
- 虚幻4引擎开发的手游_2019虚幻4手游大作排行-虚幻引擎开发的手机游戏
- 请回答2021,爱彼迎、木鸟民宿、途家民宿年度走心PK
- 共轭梯度法确实存在数值精度的要求
- 基于 OpenCV + Python 的人脸识别上课签到系统
- 在Android中sidebar控件使用,Android控件--侧边栏SideBar
- (8.1.5.5)Android Testing Support Library翻译之Espresso 意图
- JavaScript传参的6种方式
热门文章
- javaSE探赜索隐之一<小生的第一篇CSDN博客,欢迎大家指正>
- Android TextView中 代码字体加粗方法
- [解疑][TI]TI毫米波雷达系列(三):调频连续波雷达回波信号3DFFT处理原理(测距、测速、测角)
- [附源码]java毕业设计网上书店系统
- 交换机接口及连接技巧
- oracle ora00957,常见oracle错误代码ORA-xxxxx及其解决方法(持续更行中)
- 强制双休!传腾讯光子调整加班机制,21 点前必须离开工位
- 基于Stm32的WiFi多功能LED
- ionic中android的返回键
- 开发实况4.1.linux相关-CRT连接虚拟机提示用户名或密码错误