烧录方式
1. ICP(In-Circuit Programming):在电路编程
ICP更侧重于调试和开发阶段,允许开发者在单片机安装到用户应用板上后,通过仿真器对芯片进行编程和调试。
工作原理
ICP技术利用在线仿真器与单片机之间的JTAG或SWD接口进行通信。一般需要 xx-Link 烧录工具,连接PC和MCU。常用的烧录工具为J-Link、ST-Link、Nu-Link。与之配套的烧录软件为J-Flash、NuMicro_ICP_Programming_Tool、st-link utility。开发者通过仿真器将编译好的程序代码下载到单片机中,同时可以利用仿真器的调试功能对程序进行单步执行、断点设置等操作,以便查找和修复程序中的错误。
应用场景
单片机开发阶段:ICP是单片机软件开发的常用工具,特别是在需要频繁调试和修改代码的情况下。
专业研发环境:在大型企业或专业研发机构中,ICP因其高效性和稳定性而备受青睐。
2. ISP(In-System Programming):在系统编程
ISP,全称“在系统编程”,是一种允许开发者在不将芯片从电路板上取下的情况下,通过特定的编程接口对芯片内部的Flash存储器进行编程的技术。在板级上进行编程,而不用把芯片拆下来放到烧写器中,即不脱离系统,所以称作“在系统编程”,它是对整个程序的擦除和写入,通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程。即使芯片焊接在电路板上,只要留出和上位机接口的串行口就能进行烧写。
工作原理
ISP技术依赖于芯片内置的编程接口和外部编程器。开发者通过编程器将新固件数据发送到芯片,芯片内部的编程逻辑接收数据并将其写入Flash存储器中。由于无需拆卸芯片,ISP技术大大简化了固件升级流程,提高了开发效率。
应用场景
嵌入式系统开发:ISP技术简化了固件升级和调试过程,提高了开发效率。
批量生产:在生产线上,ISP技术可以实现对大量嵌入式设备的快速编程和测试。
现场升级:对于已经部署的嵌入式设备,ISP提供了一种便捷的现场固件升级方案。
3. IAP(In-Application Programming):在应用编程
IAP,全称“在应用中编程”,是一种嵌入式系统技术,允许用户程序在运行时通过微控制器的对外接口(如USART、IIC、CAN、USB、以太网接口甚至无线射频通道)对内部程序进行更新。这种技术无需中断设备的正常运行,大大提高了设备的可维护性和灵活性。目前流行的远程升级技术OTA技术(全称 Over The Air Technology,即云端下载技术,也叫做“空中下载技术”),其基础是 IAP 技术, 可以简单理解为 IAP 的另一种实现方式,采用的是无线升级方式。
工作原理
IAP技术通常依赖于一个预置的Bootloader程序,该程序负责在设备启动时初始化硬件、设置内存映射,并在接收到更新指令时加载新的固件到Flash存储器中。更新过程中,Bootloader通过特定的通信接口接收新固件数据,验证其完整性和正确性后,执行Flash操作(如擦除旧固件、写入新固件)以完成更新。
应用场景
智能家居与物联网:在智能家居和物联网设备中,IAP技术可以实现远程固件升级,提高设备的安全性和稳定性。
汽车电子:汽车ECU等关键部件通过IAP技术实现固件升级,提高车辆性能和安全性。
工业自动化:在工业自动化领域,IAP技术用于更新控制器的固件程序,确保生产线的正常运行。
调试接口
1.JTAG协议
Joint Test Action Group,联合测试行动组,一种用于测试和调试电路板上的数字电路的标准化接口
标准的JTAG接口是4线:TMS、 TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。 一般有20个引脚。20Pins的接口通常被称为JTAG接口。他包含了JTAG调试接口和SWD调试接口(20Pins里面有部分Pins用作JTAG调试接口,有部分Pins用作SWD调试接口)
2.SWD接口
Serial Wire Debug,串行调试,需要4个(或者5个)引脚,结构简单,但是使用范围没有JTAG广泛
两根信号线:SWCLK(Serial Wire Clock)和SWDIO(Serial Wire Data Input/Output),用于实现微控制器与调试器之间的通信。
对于SWDIO引脚,虽然内部有一定的上拉能力,但如果线路较长、环境噪声较大,或者需要提高通信稳定性时,外部上拉电阻可以增强信号质量,尤其是在SWDIO作为输入时,外部上拉电阻能够提供一个清晰的高电平状态。
对于SWCLK引脚,通常会建议添加外部下拉电阻,尤其是在线路没有被驱动时,下拉电阻可以确保时钟信号有一个稳定的低电平状态,防止线路浮动造成不确定状态。
3.RDI接口
Remote Debug Interface,远程调试接口,是ARM公司提出的标准调试接口,主要用于ARM芯片的仿真,由于各个IDE厂商使用的调试接口各自独立,硬件无法进行跨平台的调试。
SWD / JTAG 的各种区别
(1)共享引脚
SWD 的引脚在一定条件下可以和 JTAG 引脚复用
(2) SWD 协议的特点:
使用引脚更少,只需 SWDIO 和 SWCLK 两个引脚
SWD 具有特殊功能,例如通过其 I / O 线打印调试信息
在高速大数据情况下,SWD整体性能比JTAG更好。
只能用于ARM内核的单片机。
(3)JTAG 协议的优势:
不限于ARM内核单片机,能支持更多单片机程序调试和下载
占用引脚数比较多,比较占用板子尺寸。JTAG接口有5个:JTMS、JTCK、JTDI、JTDO、NJTRST
SWD接口有2个:SWCLK、SWDIO
为了节省IO口资源,通常使用的都是SWD。
调试器
1.J-Link调试器
JLINK是一个通用的开发工具,可以用于KEIL、IAR、ADS 等平台,速度,效率,功能都很好,是众多仿真器里功能最强悍的存在
支持JTAG\SWD两种模式。
2.ULink调试器
ULINK是ARM/KEIL公司推出的仿真器,目前网上可找到的是其升级版本,ULINK2和ULINK Pro仿真器。
ULINK/ULINK2专用于KEIL平台下使用,ADS、IAR下不能使用。综合性能(支持芯片种类、软件开发环境及及调试速度)均不如JLink;
支持JTAG/SWD/SWV三种模式
3.ST-LINK调试器
ST-LINK是专门针对意法半导体STM8和STM32系列芯片的仿真器。
支持开发环境,IAR,keil MDK,STM32 cudeIDE,Atollic TrueStudio (ST收购了Atollic)
支持JTAG/SWD/SWIM三种模式
4.CMSIS-DAP调试器
DAPLink之前叫CMSIS-DAP。它的硬件和软件都是开源的(开源的Github网址:https://github.com/ARMmbed/DAPLink)
支持环境: IAR,Keil MDK,arm MBED DAPlink
支持5针的 JTAG 或2针的串行有线调试(SWD)接口、串口功能