单片机的四种烧写方式

参考:单片机的四种烧写方式
作者:爱学习的小王呀
发布时间:2020-11-27 20:05:12
网址:https://blog.csdn.net/hongliwong/article/details/110245095?spm=1001.2014.3001.5501

参考:单片机3种烧录方式解析
作者:liht1634
发布时间:2021-08-07 09:05:37
网址:https://blog.csdn.net/liht1634/article/details/119486827?spm=1001.2014.3001.5501

目录

  • 单片机的四种烧写方式简介
    • 1.使用JTAG接口实现
    • 2.SWD接口烧录方式
    • 3.ISP烧写方式,用UART实现(常用)
    • 4.SWIM单总线下载方式
  • 烧录方式基本介绍
  • 烧录方式详述
    • 1、ISP:In System Programming
    • 2、IAP:In Applicatin Programming
      • ① ISP和IAP最大的不同是:由谁来触发进入BootROM。
      • ② 4种方式的目的相同,即进入ISP子程序。
    • 3、ICP:In Circuit Programing
  • 总结

单片机的四种烧写方式简介

单片机是一种可编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,与纯硬件电路相比,简化了硬件外围的设计、方便了逻辑的设计、丰富了逻辑的输出。不同厂家的单片机需要不同编程IDE来实现编程。在学习单片机之前,要先清楚单片机程序是如何烧写到单片机内部的,在烧写的过程中需要用到什么工具?因为不通用的烧写工具可能价格较贵,比如说Micorchip单片机使用的ICD系列编程器,单台价格在600-1000元人民币之间。今天和大学来认识一下单片机最常用的四种烧写方式和所使用到的工具。

1.使用JTAG接口实现

JTAG接口是一种标准的测试协议,可以实现编程时在线调试,利用单步追踪可以很方便的查找代码的Bug,大多数的单片机都支持这种接口。这种接口除了电源线和复位引脚之外,还要用到单片机的四个引脚,分别是:TDI、TMS、TCK、TDO,他们所代表的含义如下所示:

TDI–数据输入,所有写入寄存器的数据都是通过TDI接口串行输入的;TMS–模式选择,Jlink输出给目标CPU的时钟信号;TCK–时钟信号,所有数据的输入输出都是以该时钟信号为基准的;TDO–数据输出,所有从寄存器读出的数据都是通过TDO接口串行输出的;以上这四个引脚都是协议里强制要求的,而且协议建议在设计电路时要选用上拉电阻。JTAG接口有多种形式,常用的20引脚、14引脚和10引脚。

上图中JTAG接口都通过电阻上拉了,有的单片机的这几个引脚在内部已经上拉,所以这几个上拉电阻可以省略,减少了成本和PCB空间的占用。

JTAG接口烧录方式常用的工具为J-Link。

相信大家都见过或者听过这个烧写工具,这个工具很通用,但是大家在使用的时候一定要注意版权信息,因为这个工具是有版权的,前两年因为版权风波,网购平台还集中整治过一次。

2.SWD接口烧录方式

SWD是一种串行调试接口,与JTAG相比,SWD只需要两根线,分别为:SWCLK和SWDIO。他们的含义如下:

SWDIO–串行数据线,用于数据的读出和写入;SWDCLK–串行时钟线,提供所需要的时钟信号;一般来说,大多数单片机的JTAG接口和SWDIO接口是复用的,SWD也是用J-Link工具来实现的。所以在使用的时候,只需要在软件界面做一下选择,使用SWD方式还是JTAG方式,硬件上无需改动。除了J-Link外,意法半导体的ST-Link也是支持SWD模式的。

SWD的接口如上图所示,可以看出,SWD和JTAG是相互复用的,由于SWD只需要两根线所以大大减少了对单片机GPIO口的占用,SWD方式也是可以在线调试的。

3.ISP烧写方式,用UART实现(常用)

使用过国产51单片机的朋友都清楚这种烧写方式,这种烧写方式是通过单片机的UART串口来实现的,所需要的工具也比较简单-USB/TTL。这个USB/TTL的芯片可以通过MAX232、CH340G等芯片来实现。

在与单片机连接的时候,一定要注意交叉连接,所谓交叉连接即,单片机的TXD接串口RXD,单片机的RXD接串口TXD,否则数据通信失败。51单片机在使用该方式下载时需要断一下点再上电才能下载。

STM32单片机可以使用UART来实现程序下载,但是需要选择BOOT的模式,现在通过CH340G芯片可以实现自动ISP的下载方式,即不需要手动设置BOOT模式。

4.SWIM单总线下载方式

这种下载方式是针对STM8系列的单片机,这种方式只需要一根线即可实现程序的下载,所使用的工具为ST-Link。

烧录方式基本介绍

单片机的烧录方式主要可以分为ICP(在电路编程)、IAP(在应用编程)以及ISP(在系统编程)。玩单片机的都应该听说过IAP、ICP和ISP这几个词。

  • ISP:In System Programing,在系统编程
  • IAP:In Application Programing,在应用编程
  • ICP:In Circuit Programing,在电路编程
  • JTAG(Joint Test Action Group)编程:通过JTAG协议进行编程
  • SWD(Serial Wire Debug)编程:通过SWD协议进行编程
  • UART编程:通过UART进行编程

用一张图形象的表示一下,如下。
在这里插入图片描述
从图上看,ISP和ICP是处于最顶层的技术。描述的是一种编程结构,所使用到的协议、通信端口等,不同芯片有不同的定义。
IAP在第二层,是一种编程方式。实现方式是将一段目标芯片可执行的代码通过某种通信协议下载到芯片RAM中并由芯片执行,由该代码实现具体操作以达到编程的目的。这种方式需要芯片支持通过某种通信协议。
对芯片的RAM进行读写并能控制其CPU。这是在编程结构下的一种编程方式,像AK100Pro、SmartPRO、5000U-Plus等烧录器,都用到了这种编程方式。
最下面的是硬件通信协议,UART是最早应用在单片机里面的串行通信技术。JTAG和SWD是ARM内核芯片兴起之后,逐渐流行起来的,这三种技术描述的是编程过程中硬件层使用的通信协议,是最底层的一些技术规范。
用一个表格来对比这几种通信协议的特性:

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

烧录方式详述

1、ISP:In System Programming

利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器。芯片可以在目标板上,不用取出来,设计目标板的时候将接口设计在上面。所以叫"在系统编程",即不用脱离系统。程序升级需要现场解决,但不必拆机器。比如:利用STC-ISP对STC芯片编程,如图,祥见“STC_ISP下载软件问题汇总与解决”;利用FlyMcu对STM32编程。
在这里插入图片描述

在这里插入图片描述

2、IAP:In Applicatin Programming

ISP的实现一般需要很少的外部电路辅助实现,由芯片自身(或通过外围的芯片)通过一系列操作将代码写入。从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。比如STM32微处理器通过SEGGER J-Flash下载程序,祥见“J-Link使用汇总(STM32F103)”。
在这里插入图片描述
MCU内部都是首先执行一段独立的Boot代码(这段Boot代码一般是出厂预置,或使用编程器烧录,通常只有1k或4k,SST通常是占用一块独立的Block,Philips通常是让BootROM地址与其他Flash重叠,以达到隐藏的效果),Boot负责控制擦除程序存储器及给程序存储器编程的代码(或是处理器外部提供的执行代码),然后通过某种与PC计算机的通信方式(如ethernet网口),将用户指定的某个在PC上编译完成的MCU可运行的二进制代码文件编程入MCU内的程序存储器。

① ISP和IAP最大的不同是:由谁来触发进入BootROM。

ISP有4种触发方式:
1)由外部硬件电路:如VDD保持高电平,给RST连续3个脉冲;
2)检测状态位:如ISPEN,为0时PC指针从0000H开始执行;为1时,通过“引导向量”计算出“ISP代码”的位置。每次复位后都会检测该状态位;
3)中止控制符信号触发芯片复位:中止控制符信号就是指在异步串行口的接收脚上出现长 达一帧长度的低电平,这里一帧的长度与异步串行口的工作模式有关。
4)直接调用ISP:用户程序也可以调用,但是很危险。

② 4种方式的目的相同,即进入ISP子程序。

比如Philips出厂的ISP子程序在1E00H-1FFFH,只要能引导PC指针指向1E00H就可以了。进入ISP代码的目的是进入BootROM。
IAP的触发简单一些,没有外部触发。通过一些指示位(SST为SC0/SC1、SFCF[1,0];Philips为一段IAP子程序,保存在FF00H~FFFFH地址空间中),达到引导至BootROM的目的。
殊途同归,ISP、IAP所进入的BootROM里面驻留的Boot代码,才是最终目标。

3、ICP:In Circuit Programing

  • 1)MCU只要处于上电状态即可,不必预烧任何代码进MCU。
  • 2)烧录范围涵盖整颗MCU,包括 APROM、DataFlash、CONFIG、LDROM和 ROMMAP。
  • 3)芯片在LOCK的状态下,无法只更新某一区块,只能在erase-ALL之后,更新某一区块,再逐一烧回其它区块;
    因为ICP的本质就是走串行接口的Writer Mode,芯片被LOCK之后,除了erase-ALL,所有烧录动作皆会被禁止。
  • 4)因为烧录纯粹是ICP硬件的行为,MCU无法自己更新自己,所以给系统设计者的弹性较小。例如无法藉由ICP去实现IAP的功能。
  • 5)需要其他硬件支持(如NU-LINK等)
  • 6)不严格来说,ISP和IAP也属于在电路编程。

总结

形象点的描述:

  • ISP是把房子拆了再重造一间,但是地基保留,那么在造好之前当然是不能住人。
  • IAP是在造好的房子里边进行一些装修,当然人可以继续住。
  • ICP是对房子地基与房子的整体重构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于驰骋表单引擎中字段扩展设置对文本框Pop窗体返回值的升级说明 2012/11/13...

为什么80%的码农都做不了架构师?>>> 关于驰骋表单引擎中字段扩展设置对文本框Pop窗体返回值的升级说明 2012/11/13 现有功能: 以前版本仅支持自己定义url,返回值到文本框上. 升级功能: 1, 增加了可以自己定义数据源模式,数据源可…

中兴f650 2.0.3 固件降级_手机资讯:如何升级iOS12.1.4正式版iOS12.1.4正式版升降级教程...

如今使用IT数码设备的小伙伴们是越来越多了,那么IT数码设备当中是有很多知识的,这些知识很多小伙伴一般都是不知道的,就好比最近就有很多小伙伴们想要知道如何升级正式版正式版升降级教程,那么既然现在大家对于如何升级正式版正式…

C# 加密解密类

一. MD5 1 防止看到明文 数据库密码,加盐(原密码固定字符串,然后再MD5/双MD5) 2 防篡改 3 急速秒传(第一次上传文件,保存md5摘要,第二次上传检查md5摘要) 4文件下载(防篡改,官方发布的时候给一个md5摘要&#xf…

请求solr服务器未响应,solr与tomcat整合

一、准备工作:我使用的是tomcat7.0,solr-4.8.1solr-4.8.1解压后是这样的。二、开始配置了1、首先要创建两个文件夹。home和server。我是创建在与solr-4.8.1同一根目录上的。D:\work-tool\server\solr\home和D:\work-tool\server\solr\server2、从solr-4.8.1\dist复制…

WeMos下实现小车避障与手机控制

参考:WeMos下实现小车避障与手机控制 作者:爱学习的小王呀 发布时间:2020-10-02 10:17:45 网址:https://blog.csdn.net/hongliwong/article/details/108900048?spm1001.2014.3001.5501 目录前言一、项目软硬件平台及开发环境1.硬…

苹果手机耗电快_iPhone12用5G耗电快,苹果回应

原标题:iPhone12用5G耗电快,苹果回应北京头条客户端10月24日消息,针对有媒体测试苹果iPhone12开启5G模式下,用电量提升的问题,苹果iPhone营销副总裁Kaiann Drance回应称,iPhone12 增加的智能数据模式可以平…

Ubuntu12 10下安装JDK7

为什么80%的码农都做不了架构师?>>> Ubuntu12 10版本下,不再预装JDK,包括OpenJdk,所以我们要从Oracle官网上下载java7的压缩包,选择适合自己电脑的安装包,我选的是jdk-7u9-linux-i586.tar.gz。…

neo4j python 算法_python操作neo4j简单实例

一:neo4j是什么neo4j:Neo4j是一个高性能的,NOSQL图形数据库,有关于更多neo4j的资料出门右拐二:python操作neo4j的实现python中neo4j的操作可以利用驱动包或者py2neo包,我采用py2neo第三方包实现以下简单功能,先建立一个neo4j的链接对于neo4j的…

尚硅谷的 ediary 笔记_干货分享 | 硅谷创新加速营第五讲教您合理规划融资需求 降低投资风险...

5月26日上午,康佳之星携手青岛蓝谷管理局、斯坦福青岛研究院、海尔海创汇联合举办的第二届硅谷创新加速营第五讲顺利完成。斯坦福青岛研究院董事长的Claude Leglise先生做客直播间,为现场创业者、企业家讲授创业之路必修课:企业财务规划。本讲…

虚拟机的服务器黑屏,VMware Workstation 14运行虚拟机黑屏解决办法

VMware Workstation 14运行虚拟机黑屏解决办法升级到VMware workstation 14 pro后所有虚拟系统全部黑屏,VMware 14 黑屏,VMware Workstation 14运行虚拟机黑屏是什么原因步骤如下,步骤如下,1、以管理员身份运行命令提示符(cmd.exe…

c++ 冒泡排序_干货|python笔记1-冒泡排序

面试的时候经常有面试官喜欢问如何进行冒泡排序?这个问题相信可以难倒一批的同学,本篇就详细讲解如何用python进行冒泡排序。基本原理01概念:冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字&#xf…

双链表嵌套的简单学生信息管理系统

参考:实现双链表嵌套的简单学生信息管理 作者:三速何时sub20 发布时间: 2020-07-20 10:44:40 网址:https://blog.csdn.net/weixin_44234294/article/details/107458155?spm1001.2014.3001.5501 参考:双链表嵌套实现简…

scrapy如何指定生成python3的项目_如何把阿里图标库的图标生成代码并应用于自己的项目...

有时候需要用很多图标去完成一定的页面效果和工作展现,框架内置的图标可能满足不了我们的需求,有个很好的图标库想必大家都知道-----就是阿里图标库。那么我们如何才能够把阿狸图标库的图标引用到自己的项目中呢?耐着性子往下看吧&#xff01…

win10系统无线服务器出错,win10系统中Wi-Fi证书错误的解决方法

wifi想必大家都很熟悉吧,这是很多用户们喜欢的无线网络,但是有时候会碰到一些wifi错误,比如有不少win10系统用户遇到wifi证书错误的情况,这样就会导致用户无法连接到网络或访问某个网站,该怎么处理呢,现在就…

subprocess模块

subprocess模块 subprocess可以根据命令的结果,正确的或者错误的分开存放 存放正确的结果 # import subprocess # objsubprocess.Popen(tasklist,shellTrue, # stdoutsubprocess.PIPE, # stderrsubprocess.PIPE, # …

通过EIGRP的 variance 参数实现非等价负载均衡

实验拓扑如上图所示我们使用EIGRP协议做通全网实现R1 的1.1.1.1 可以和 R4的4.4.4.4 进行通信 此时我们查看R1的路由表,查看去往4.4.4.4 的路由条目 通过拓扑图我们看到 R1去往4.4.4.4 是有两条路径的也就是 R1-R2-R4 和 R1-R3-R4 ,但是在路由表中&…

echarts 获取点击的y轴数值_用 Python 自动获取NBA现役球员的职业生涯数据曲线

前言作为一个看了多年篮球的 NBA球迷,一直在想用 python 和篮球一起来写点什么加上最近在学习 pyecharts ,所以就有了下面这篇文章:根据输入的球队和球员名字,自动生成该球员职业生涯数据曲线图!✨ 效果火箭哈登勇士格…

重装系统后dns服务器未响应,dns服务器未响应,小编教你dns服务器未响应怎么解决...

连网时,出现连不上网络,用Windows网络诊断,诊断出的结果是“DNS服务器未响应”,遇到这样情况该怎样解决?在使用window系统的电脑上网过程中,常常会遇到DNS服务器未响应的问题,怎么办&#xff1f…

VMware虚拟机启动错误(正在被占用、内部错误)等问题

参考:VMware虚拟机启动错误(正在被占用、内部错误)等问题 作者:扫地僧- 发布时间:2019-09-20 15:02:55 网址:https://blog.csdn.net/weixin_42119153/article/details/101060183?spm1001.2014.3001.5501 目…

mt4 指标 涨跌幅 颜色k线_通达信指标公式源码阴线买股+黄金K线指标+源码

源码:TT2:DMA((((HIGH LOW) (CLOSE * 2)) / 4.15),0.9);TT1:REF(EMA(TT2,3),1);RSV:(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;K:SMA(RSV,3,1);D:SMA(K,3,1);J:3*K-2*D;LC:REF(CLOSE,1);RSI:((SMA(MAX((CLOSE - LC),0),3,1) / SMA(ABS((CLOSE - LC)),3,1)…