ARM烧录
- ICP(In Circuit Programing)在电路编程
- ISP(In System Programing)在系统编程
- IAP(In applicating Programing)在应用编程
- DAP(Debug Access Port)(调试访问端口)(DAP通常是指CMSIS-DAP)
ICP
使用对应厂家的软件以及仿真器都可以烧录程序,目前主流的有Jtag(Joint Test Action Group)以及SWD(Serial Wire Debug)接口。而ICP编程就是以SWD接口进行的。
执行ICP功能,仅需要3个引脚RESET、ICPDA、ICPCK。RESET用于进入或退出ICP模式,ICPDA为数据输入输出脚,ICPCK为编程时钟输入脚。用户需要在系统板上预留VDD、GND以及这三个脚。
ICP是指“在电路编程”,PC上运行的软件“NuMicro ICP编程工具”透过SWD的端口更新晶片内部APROM、LDROM、数据闪存(DataFlash)和目标用户配置字(Config)芯片。
ICP使用SWD接口进行烧录程序。常用的烧录工具为J-Link、ST-Link、Nu-Link;与之配套的烧录软件为J-Flash、NuMicro_ICP_Programming_Tool、st-link utility。
ISP(In System Programing)
ISP是指“在系统上编程”,目标芯片使用USB/UART/SPI/I²C/RS-485/CAN周边接口的LDROM引导代码去更新晶片内部APROM、数据闪存(DataFlash)和用户配置字(Config)。
ISP是使用引导程序通过USB/UART等接口进行烧录的,首先就是需要有BoodLoad程序。最常见的烧录方式就是学习8051单片机时使用的STC-ISP烧录工具了。
IAP(In applicating Programing)
IAP就是通过软件实现在线电擦除和编程的方法。IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个。
IAP就是通过软件实现在线电擦除和编程的方法,没有使用任何工具,仅仅是通过软件的方法来更新Flash中的数据。
IAP实现
IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。
IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器。
具体在设计固件程序时编写两个项目代码,这两部分项目代码都同时烧录在User Flash中,当芯片上电后,首先是第一个项目代码开始运行,它作如下操作:
1)检查是否需要对第二部分代码进行更新
2)如果不需要更新则转到4)
3)执行更新操作
4)跳转到第二部分代码执行
第一部分代码必须通过其它手段,如JTAG或ISP烧入;第二部分代码可以使用第一部分代码IAP功能烧入,也可以和第一部分代码一道烧入,以后需要程序更新是再通过第一部分IAP代码更新。
在第二部分代码开始执行时,首先需要把CPU的中断向量表映像到自己的向量表,然后再执行其他的操作。
调试器(Debugger)
图片中的都是调试器(Debugger)。包括STLink、JLink、ULink、DAP等等。
- 如果一个DAP遵循了CMSIS-DAP标准,他就可以支持所有Cortex-M内核的单片机,使用DAP最大的好处就是免驱动,不用下载驱动。但是STM32CubeIDE只支持STLink和JLink。
- 在STM32单片机中,Cortex-M内核含有硬件调试模块,可以进行调试,不需要另外的、单独的仿真器。我们只需要使用仿真器将电脑和MCU连接起来,再配置一下相关的设置,就可以进行调试了。
- Cortex-M内核含有硬件调试模块,该模块可以在取指(指令断点)或者访问数据(数据断点)时停止。内核停止时,可以查询内核的内部状态和系统的外部状态(外设的状态)。完成查询后,可以恢复程序的执行。