Skip to content

DAP烧录原理说明

wuxx edited this page Aug 8, 2022 · 4 revisions

所谓的烧录芯片,实际上就是对芯片内部的Flash进行烧写,即通过配置Flash控制器实现烧录,换句话说,就是通过读写Flash控制器的寄存器实现烧录。 实际上DAP并不知道目标芯片是什么型号,也不知道目标芯片的Flash规格参数和如何烧录。DAP只能执行上位机(keil/iar/openocd等)发送的命令(DAP请求,是CMSIS-DAP规范定义的),来实现目标芯片的CPU控制、或者外设和SRAM的读写。 所以实际的烧录过程如下:

  1. 上位机将一段代码写入到目标芯片内部的SRAM中,此段代码即为所谓的烧录算法(在keil里面,此烧录算法必须预先配置好),是一段读写Flash控制器寄存器,实现烧录的代码,一般只有几百字节大小。
  2. 上位机将另一段数据写入到目标芯片内部的SRAM中,此段数据为烧录的镜像数据
  3. 上位机精心配制好目标芯片的CPU寄存器,令其执行刚放置在SRAM中的烧录算法,烧录算法执行之后即会将镜像数据写入到Flash中。执行完本次烧录之后,目标芯片会进入HALT等待状态,等待DAP(或者说上位机)下一次的控制。
  4. 由于SRAM空间往往小于Flash空间,所以会有多批次的镜像数据,会一次次的写入到Flash中。

所以实际上烧录并不是DAP烧录进去的,而是CPU自己烧录进去的,DAP(或者说上位机)只是会安排好一切细节,然后令CPU执行代码。

以上的过程不同上位机的处理细节或许不尽相同,然而基本原理是一样的。

Clone this wiki locally