(三)串口调试工具和串口下载工具的区别:ST-LINK、J-LINK、U-LINK;SWD、JTAG、SWIM

2023-05-16

基础知识

  • 一、串口
    • (1)什么是串口
    • (2)串行接口的划分标准(同步/异步)
    • (3)Uart串口与RS232串口的区别
    • (4)串口的用途
  • 二、烧录方式ISP、IAP和ICP的区别
  • 三、PC(电脑)和Target(外设、单片机)间的串口通信方式
  • 四、上位机和下位机
  • 五、串口调试工具和串口下载工具的区别
    • (1)串口下载工具
    • (2)串口调试工具
  • 六、ST-LINK、J-LINK、U-LINK;SWD、JTAG、SWIM
    • (1)ST-LINK、J-LINK、U-LINK
    • (2)SWD、JTAG、SWIM
  • 七、MDK编译后的code大小

一、串口

(1)什么是串口

串口即串行接口,也称串行通信接口或串行通讯接口,通常指PC端的COM接口。
串口是采用串行通信方式的扩展接口

(2)串行接口的划分标准(同步/异步)

1)同步串行接口(SynchronousSerialInterface,SSI)是一种常用的工业用通信接口。
2)异步串行是指UART(Universal Asynchronous
Receiver/Transmitter)通用异步接收/发送。UART包含TTL电平的串口和RS232电平的串口。一般UART通常是指TTL电平的串口
3)串行接口按电气标准及协议来分包括RS-232-C、RS-422、RS485等

(3)Uart串口与RS232串口的区别

TTL电平和RS-232电平
(1)Uart一般接到SOC,使用的是TTL电平,定义-3.3V-0为低电平-L(0),而0~+3.3V为高电平-H(1)
(2)一般PC端用的串口是RS232串口,RS232是负逻辑电平,它定义+5 -+12V为低电平-L(0),而-12~-5V为高电平-H(1)。

  • RS-232 RS-232是为点对点(即只用于一对收和发设备)通讯而设计,因为传输距离短,所以只适合本地设备之间的点对点通信。

  • RS-422 组成是由一个主设备(Master),其余为从设备(Slave),从设备之间不能通信,所以RS-422支持点对多的双向通信。RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,RS-422的最大传输距离为1219米,最大传输速率为10Mb/s。

  • RS-485 基于RS-422,RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信,而采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主(Master)设备,其余为从设备,但它比RS-422有改进,无论四线还是二线连接方式总线上可多接到32个设备。RS-485与RS-422一样,其最大传输距离约为1219米,最大传输速率为10Mb/s。

(4)串口的用途

(1)串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。
(2)串口通信是一般指外设和计算机间,串口是计算机上一种非常通用的设备通信协议。大多数计算机(不包括笔记本电脑)包含两个基于RS-232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。

二、烧录方式ISP、IAP和ICP的区别

这些都是嵌入式里面经常听到的术语,

  • ISP:In System Programing,在系统编程; 用写入器将code代码烧入芯片,不过,芯片可以在目标板上,不用取出来,在设计目标板的时候就将接口设计在上面,所以叫“在系统编程”,即不用脱离系统。

  • IAP:In Application Programing,在应用编程; 在应用编程,有芯片本身(或通过外围的芯片)可以通过一系列操作将code写入,比如一款支持Iap的单片机,内分3个程序区,1作引导程序区,2作运行程序区,3作下载区,芯片通过串口接收到下载命令,进入引导区运行引导程序,在引导程序下将new
    code内容下载到下载区,下载完毕并校验通过后再将下载区内容复制到2区,运行复位程序,则Iap完成。

  • ICP:In Circuit Programing,在电路编程;

可以用一个图来表示这个这几个烧录方式的层级关系:
在这里插入图片描述
从图上看,ISP和ICP是处于最顶层的技术。描述的是一种编程结构,所用使用到的协议、通信端口等,不同芯片有不同的定义。

IAP在第二层,是一种编程方式。实现方式是将一段目标芯片可执行的代码通过某种通信协议下载到芯片RAM中并由芯片执行,由该代码实现具体操作以达到编程的目的。这种方式需要芯片支持通过某种通信协议对芯片的RAM进行读写并能控制其CPU,这是在编程结构下的一种编程方式。

最下面的是硬件通信协议,UART是最早应用在单片机里面的串行通信技术。JTAG和SWD是ARM内核芯片兴起之后,逐渐流行起来的,这三种技术描述的是编程过程中硬件层使用的通信协议,是最底层的一些技术规范。

三、PC(电脑)和Target(外设、单片机)间的串口通信方式

在支持ISP烧录功能的单片机上,由于计算机和单片机之间因为电平特性不同(TTL和RS232)不能直接接线连接,因此需要通过串口下载器将Keil / IAR编译生成的可支持文件通过串口下载到目标板。

串口连接方式一般分为两种:
(1)USB线(USB转TTL串口):通过USB/串口转换电路,常见的转换芯片CH340/PL2303实现USB信号和串口的信号转换,此时电脑PC端需要安装一个USB转串口的驱动CH340,虚拟出一个COM口。

(2)UART串口线(RS232转TTL型):通过MAX232芯片实现单片机(UART-TTL电平)和电脑PC端(RS232-电平)的转换,通过串口线连接。(MAX232芯片是美信(MAXIM)公司专为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电)

四、上位机和下位机

  • 上位机是指可以直接发出操控命令的计算机,一般是PC/master computer/upper computer,作用:控制下位机,发送指令和接收反馈回来的信息

  • 下位机是指接收上位机发过来的命令,再把命令解释成相应的时序信号直接控制相应的设备。下位机轮询读取设备状态数据(模拟量)转换成数字信号后反馈给上位机。作用:接收指令并执行,同时把设备信息反馈发送给上位机

嵌入式设备中,一般电脑PC端使用的调试软件是上位机,PC外部连接的受控的单片机或其他设备是下位机。

五、串口调试工具和串口下载工具的区别

区别:
(1)串口下载工具只能用于把PC端的程序下载到目标板,不能用于调试。
(2)串口调试工具只能用于发送命令(AT指令、规定好的协议命令),回显信息到终端(屏幕),不能用于下载程序。

相同点:
(1)都需要设置数据帧,奇偶校验位,结束标志位,波特率等。
(2)都是通过 serial端口 在PC端虚拟出来的COM口才能进行通信。

(1)串口下载工具

  • 对于大多数生产MCU半导体厂商,为了方便和简化产品应用程序的下载、节约pcb板的使用面积和成本,都会在自己生产的MCU上通过提供在线系统编程即ISP功能。一般MCU的串口通过电平转换芯片和串口线与PC端相连接,然后在PC上安装相应的ISP上位机软件(也就是烧录/下载可执行程序的串口下载软件),把相应的可执行程序下载到MCU的flash中,即可实现MCU的在线应用程序下载和编程。

  • ISP下载不占用MCU额外的I/O口和内部资源,也不需要昂贵的编程、调试器J-LINK/ST-LINK/ULINK等,大大的降低了芯片成本和减小pcb板面积的使用,但是其缺点是不能在线对MCU进行调试debug,不能及时定位程序错误。

  • JTAG接口需要占用MCU5个I/O口(TCK/TDI/TDO/nRST/TMS),调试器价格相对芯片较高,所以整个成本较高,同时因为需要板内置调试电路,占用额外的pcb板面积。调试器的优点在于能够在线设置断点,精确定位程序错误,监视MCU中断,读取运行时MCU的寄存器和内存值。

  • 注意:因为有些时候MCU内部的flash被锁或者内部flash引导程序被破坏(擦除或者覆盖),JTAG不能下载程序,则必须使用ISP重新下载MCU引导程序,重新对MCU进行编程和调试才能恢复正常JTAG调试状态,因此ISP对MCU的作用和意思重大。

  • 一般大多数单片机都可以通过串口下载程序,其大致过程是通过串口下载工具连接单片机,通过串口下载软件设置相应的配置将程序下载到单片机中(一般是8N1 = 数据8位,无奇偶校验位,只有一位结束标志位,设置波特率:常用115200等),重新复位上电(reset)即可下载成功。

  • 单片机厂商在生产时,会在MCU内置预留一段启动程序,这段程序就是ISP引导程序,具有ISP引导程序的单片机可以通过串口下载可执行程序到MCU的flash中。通过ISP下载烧录代码的方式比仿真调试器成本低很多,但是ISP只能用来下载程序,不能用来仿真调试程序。

  • 一般对于STM8或者C51这种芯片,单片机上电时先运行ISP引导程序,如果串口没有接收PC端通过ISP下载程序,则单片机运行内部flash之前已经下载好的程序。
    STM32则和stm8不同,因为stm32由两个boot启动引脚,上电时,根据这两个引脚设置的状态从不同的位置启动。

注意:使用USB转串口工具下载程序时,PC端需要安装CH340驱动虚拟出一个COM端口

(2)串口调试工具

  • 通俗解释:当程序下载到MCU中运行时,我们人是无法知道整个程序内部的详细程序流运行过程的,以及无法判断具体程序的运行是否符合我们预期设计的那个样子。为了可以模拟外设和MCU的通信过程,我们人为通过串口给MCU发送数据命令或者在编写main.c函数体内添加printf打印信息,将MCU处理数据后的过程和结果通过串口发送到PC端,通过串口调试软件回显到终端(显示屏),这样我们就可以看到MCU处理信息的反馈,方便调试程序。

  • 串口调试工具是用于上位机和下位机通信用的一个桥梁软件:人工(PC端)发送数据给单片机处理,单片机接收到发送的数据并进行处理,将结果通过串口回显到终端。

  • 在嵌入式应用开发中,SecureCRT/XShell 是常用的调试工具,通过它开发人员可以修改硬件设备的配置,达到人机交互的目的。

六、ST-LINK、J-LINK、U-LINK;SWD、JTAG、SWIM

SWIM、JTAG和SWD是ARM板上的调试模式
ST-LINK、J-LINK、U-LINK三种都是实现调试模式的一种实际调试工具

(1)ST-LINK、J-LINK、U-LINK

J-LINK、U-LINK、ST-LINK都是调试下载仿真器

  • J-Link是德国SEGGER公司推出基于JTAG的仿真器。简单地说是给一个JTAG协议转换盒,即一个小型USB到JTAG的转换盒,其连接到计算机用的是USB接口,而到目标板内部用的还是jtag协议。它完成了一个从软件到硬件转换的工作。

  • U-LINK是ARM/KEIL公司推出的仿真器,目前网上可找到的是其升级版本,U-LINK2和U-LINKPro仿真器。U-LINK/U-LINK2可以配合Keil软件实现仿真功能,并且仅可以在Keil软件上使用,增加了串行调试SWD模式。

  • ST-LINK - V2:
    专门针对意法半导体STM8和STM32系列芯片的仿真器 指定的接口有:
    SWIM、JTAG 、SWD标准接口,其主要功能有:
    (1)编程功能:可烧写FLASH ROM、EEPROM、AFR等。
    (2)仿真功能:支持全速运行、单步调试、断点调试等各种调试方法,可查看IO状态,变量数据等。
    (3)仿真性能:采用USB接口进行仿真调试,单步调试,断点调试,反应速度快。
    (4)编程性能:采用USB接口,进行SWIM / JTAG /SWD下载,下载速度快。

  • 区别介绍 :
    U-LINK是KEIL公司开发的仿真器,专用于KEIL 平台下使用,ADS,iar下不能使用。
    J-LINK 是通用的开发工具,可用于KEIL ,IAR ,ADS 等平台,速度、效率、功能均比U-LINK强。
    ST-LINK是专门针对意法半导体STM8和STM32系列芯片的仿真器。

(2)SWD、JTAG、SWIM

(1)JTAG

JTAG是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。它是由几家主要电子制造商发起制订的PCB 和IC 测试标准,主要应用于电路的边界扫描测试和可编程芯片的在线系统编程。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。

标准JTAG接口4线制:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出。
JTAG引脚定义:
TCK—测试时钟输入;
TDI—测试数据输入,数据通过TDI输入JTAG口;
TDO—测试数据输出,数据通过TDO从JTAG口输出;
TMS—测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式。
注意:可选引脚TRST—测试复位,输入引脚,低电平有效。

(2)SWD

SWD串行调试(Serial Wire Debug)是一种和JTAG不同的调试模式,使用的调试协议也不一样,最直接的体现在调试接口上,它的接线方式较JTAG简单,是2线制:SWDIO–串行数据线、SWDCLK–串行时钟线,一般在设计PCB时,会预留4个2.54mm的排座,这种接线方式适合引脚少的芯片,充分利用芯片资源。

SWD和JTAG调试方式的区别:
1)SWD模式比JTAG在高速模式下更加可靠,在大数据量的情况下JTAG下载程序会失败,但是SWD发生的几率会小很多,基本使用JTAG的模式下可以直接使用SWD模式的,推荐首先使用SWD仿真模式,前提是仿真器支持。
2)在GPIO口刚好缺一个的时候,可使用SWD仿真,这种模式支持更少的引脚。 3)在PCB设计体积有限的时候推荐使用SWD模式。

(3)SWIM
STM8在线调试模式或在应用编程模式由一个单线硬件接口来管理,该接口拥有对存储器超高速编程的特性。该接口和在线调试模块相配合,可提供一种非侵入性(non-intrusive)的仿真模式,在这种仿真模式下,在线调试器的调试仿真功能非常强大,其性能已经接近于一个全功能仿真器。

1)主要特性: 基于一个异步,高注入电流(8mA),漏极开路的双向通讯。允许读写存储器空间的任意位置。
2)可读写CPU寄存器(A,X,Y,CC,CP)。它们有用于读写的寄存器映射地址。 在运行中可对RAM和外设寄存器进行非侵入式读写。
3)器件复位有相应的复位状态指示位,请参考复位状态寄存器(RST_SR)。
4)时钟速度可选,请参考SWIM时钟控制寄存器(CLK_SWIMCCR)。

SWIM模式 在上电复位后,SWIM模块复位,然后进入OFF模式。
(1)OFF模式:上电复位后的默认状态。SWIM接口不能当作普通的I/O口使用。
(2)I/O模式:将全局配置寄存器(CFG_GCR)中的SWD位,置位后进入该模式。在这种模式下,SWIM引脚可用作普通I/O口。一旦系统复位,SWIM模块重新回到OFF模式。
(3)SWIM模式:当在SWIM引脚上输入特定的序列时进入该模式。在这种模式下,调试工具通过SWIM引脚使用三种命令(SRST系统复位,ROTF运行中读,WOTF运行中写)来控制STM8。

七、MDK编译后的code大小

编译结果里面的几个数据的意义:

  • Code: 表示程序所占用 FLASH 的大小(FLASH)。
  • RO-data:即 Read Only-data,表示程序定义的常量(FLASH)。
  • RW-data:即 Read Write-data,表示已被初始化的变量(SRAM)
  • ZI-data:即 Zero Init-data,表示未被初始化的变量(SRAM)

有了这个就可以知道你当前使用的 flash 和 sram 大小了,所以,一定要注意的是程序的大小不是.hex 文件的大小,而是编译后的 Code 和 RO-data 之和。

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

(三)串口调试工具和串口下载工具的区别:ST-LINK、J-LINK、U-LINK;SWD、JTAG、SWIM 的相关文章

随机推荐

  • Yolov5 计算访存量MAC与计算量FLOPS

    说明 xff1a 因为yolov5函数中已经计算了 FLOPS xff0c 因此如果想要计算访存量那么只需按照flops的位置 添加访存量的计算即可 一 先记住计算量和访存量的公式 xff1a 二 找到计算FLOPS的位置 xff0c 并添
  • Yolov5 中添加Network Slimming剪枝--稀疏训练部分

    前言 xff1a Network Slimming剪枝过程让如下 1 稀疏化 2 剪枝 3 反复迭代这个过程 一 稀疏化 xff1a 通过Network Slimming 的核心思想是 添加L1正则来约束BN层系数 xff0c 从而剪掉那些
  • Pytorch children()、modules()、named_children()、named_modules()、parameters()、named_parameters()使用说明

    参考博客 xff1a Pytorch children modules named children named modules named parameters parameters 使用说明 洪流之源的博客 CSDN博客 childre
  • Gazebo执行保存世界选取文件夹时卡住不动的解决办法

    背景 xff1a 在学习ROS Gazebo仿真 xff0c gazebo中加入任意模型 xff0c 然后点击save world as然后卡死的问题一直无法解决 现象 xff1a 点save as world屏幕变暗 xff0c 无窗口弹
  • PLC的自抗扰控制(ADRC)算法

    自抗扰控制算法 网上很多文章有理论推导和讲解 大家也可以关注韩京清教授的论文和书籍 这里就不赘述了 博途PLC ADRC自抗扰控制完整源代码可以参看下面这篇文章 博途PLC 1200 1500PLC自抗扰控制 ADRC 完整SCL源代码 R
  • PLC PID优化系列之非线性参数整定(FC函数)

    nbsp nbsp 根据一般PID的响应曲线 我们可以设计更加符合响应曲线的P I D参数 这里的非线性是指参数整定方法采用非线性 并不是PID本身的算法 非线性的PID算法后面会给大家讲 包括韩京清老师提出的ADRC都属于非线性PID范畴
  • 脖子上的这个包是“夺命包”,再不重视就晚了!化解方法必看!

    生活中你有见过这样的颈椎吗 xff1f 你的亲人 xff1f 朋友 xff1f 或者是 陌生人 xff1f 这叫富贵包 xff01 这是咱老百姓起的一个吉利的名字 但是 xff0c 在中医看来 xff0c 这哪是富贵包 xff1f 这背后潜
  • ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)

    ADRC自抗扰控制算法的详细解读 不是本篇博客讨论的重点 专栏有ADRC的系列学习笔记 感兴趣的同学可以自行查看 链接如下 PLC的自抗扰控制 ADRC 算法 RXXW Dor的博客 CSDN博客 adrc算法 1 自抗扰控制算法 网上很多
  • ADRC/Matlab一步步实现跟踪微分器TD(附完整PLC测试代码链接)

    TD微分器的主要作用 就是安排过渡过程 产生跟踪信号和微分信号 滤除噪声 关于Adrc的理论分析不是本篇博客的重点 主要也是能力所限 相关理论大家可以看韩京清教授的论文 专栏有简单的学习笔记 感兴趣的同学可以看看 链接如下 ADRC自抗扰的
  • SMART PLC嵌套调用级数(ADRC调用问题)

    S7 200PLC子程序和中断程序支持的最大嵌套级数分别为8级和1级 所以老款控制器中断程序调用子程序劝大家不要套娃了 只支持1级 这篇博客我们分析下ADRC算法里的调用结构问题 首先看下调用级数最深的层级 1 嵌套调用 从图中可以看出调用
  • JAVA---this关键字

    this关键字 关于java中的this关键字 this表示当前对象 this 属性 区别成员变量和局部变量 this 调用本类的某个方法 this 表示调用本类构造方法 xff0c 只能用在构造方法的第一行语句 this关键字只能出现在非
  • 嵌入式面试常见问题(一)

    为2022秋招准备 xff0c 不打无准备之仗 第一章 进程与线程 1 什么是进程 线程 xff0c 有什么区别 xff1f 进程是资源 xff08 CPU 内存等 xff09 分配的基本单位 xff0c 线程是CPU调度和分配的基本单位
  • 嵌入式面试常见问题(六)—各大公司面试题

    1 阿里面试 1 Linux系统方面 1 xff09 进程和线程的区别 xff08 不能太书面化 xff09 xff08 需要从内存角度 xff0c 或者其他角度描述 xff09 需要用自己理解的方式去回答这个问题 xff0c 如果你回答了
  • 嵌入式面试常见问题(七)—各大公司面试题

    6 深信服面试 1 简历中写了做过海思项目 xff0c 问海思项目最大的难点是什么 怎么解决的 xff08 还问了编码的原理 xff0c h264 和265的区别 xff0c 如果sensor默认是720p的 xff0c 我要怎么得到108
  • 嵌入式面试常见问题(九)—各大公司面试题

    3 锐捷网络笔试题 笔试时间 xff1a 2020 09 24 时长 xff1a 90分钟 题目 xff1a 25道题 xff0c 全是C语言代码题 xff0c 问输出结果 总结 xff1a 时间紧 xff0c 任务重 xff0c 硬核 1
  • STM32之串口传输结构体

    传输数据还可以 xff0c 上位机解析数据耽误了一个下午的时间特此来记录一下 xff01 这里将16位数据转成8位数据转发到上位机 STM32端口 这次协议帧头定义的是 0xAA 0xBB和0xFF 0xEE 0xBB确保数据的准确性 xf
  • keil教程——串口调试

    原来keil也有串口窗口 xff0c 现在就试试打印倒金字塔图形 1 程序设计 span class token macro property span class token directive hash span span class
  • 为什么飞机不悬停在天上 等地球从下方通过呢?

    我们都知道 xff0c 地球绕地轴每24小时完成一个自转周期 那么很多人可能就会这么想 xff0c 为什么飞机不直接停在天上 xff0c 等着地球自转 xff0c 然后在目的地转过来的时候 xff0c 然后再直接着陆呢 xff1f 这样不是
  • esp32FreeRTOS教程——内核分配

    Esp32 模块中已经提供了 FreeRTOS xff08 实时操作系统 xff09 固件 FreeRTOS有助于提高系统性能和管理模块的资源 FreeRTOS允许用户处理多项任务 xff0c 如测量传感器读数 xff0c 发出网络请求 x
  • (三)串口调试工具和串口下载工具的区别:ST-LINK、J-LINK、U-LINK;SWD、JTAG、SWIM

    基础知识 一 串口 xff08 1 xff09 什么是串口 xff08 2 xff09 串行接口的划分标准 同步 异步 xff08 3 xff09 Uart串口与RS232串口的区别 xff08 4 xff09 串口的用途 二 烧录方式IS