基础知识:串口,下载方式:IPS/IAP的区别,串口调试工具和下载工具,ST-LINK接口:SWD、JTAG、SWIM

基础知识

  • 串口
  • 烧录方式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.什么是串口?
串口称串行接口,也称串行通信接口或串行通讯接口,通常指COM接口。串口是采用串行通信方式的扩展接口

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

  • 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。

3.串口的用途
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,在电路编程;

可以用一个图来表示这个这几个烧录方式的层级关系:
基础知识:串口,下载方式:IPS/IAP的区别,串口调试工具和下载工具,ST-LINK接口:SWD、JTAG、SWIM_第1张图片
从图上看,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)都需要设置数据帧,奇偶校验位,结束标志位,波特率等
(2)都是通过 serial端口 虚拟出来的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是常用的调试工具,通过它开发人员可以修改硬件设备的配置,达到人机交互的目的。

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),漏极开路的双向通讯。允许读写存储器空间的任意位置。
可读写CPU寄存器(A,X,Y,CC,CP)。它们有用于读写的寄存器映射地址。
在运行中可对RAM和外设寄存器进行非侵入式读写。
器件复位有相应的复位状态指示位,请参考复位状态寄存器(RST_SR)。
时钟速度可选,请参考SWIM时钟控制寄存器(CLK_SWIMCCR)。

2)SWIM模式
在上电复位后,SWIM模块复位,然后进入OFF模式。
OFF模式:上电复位后的默认状态。SWIM接口不能当作普通的I/O口使用。
I/O模式:将全局配置寄存器(CFG_GCR)中的SWD位,置位后进入该模式。在这种模式下,SWIM引脚可用作普通I/O口。一旦系统复位,SWIM模块重新回到OFF模式。
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 之和。

你可能感兴趣的:(基础知识:串口,下载方式:IPS/IAP的区别,串口调试工具和下载工具,ST-LINK接口:SWD、JTAG、SWIM)