通过SWIM实现类似ST-LINK功能,给STM8下载

技术依赖:SWIM通信、FLASH操作、串口、DMA。

主要变成思路,通过串口实现命令行工具,再通过主机的swim进行slave烧录。其中串口数据的发送通过DMA接收。

SWIM通信之前有介绍,有需要可以查看,本文章主要介绍SWIM对STM8烧写时的思路。

一、直接通过WOTF进行烧写。
此方法确实可行,但是实际试验后发现,在烧写过程中由于WOTF的失败率导致烧写速度极慢。不建议采用。

二、让从机自己烧写flash
我们知道,在烧写flash时有块烧写。而且块烧写的程序时运行在RAM中的。我们可以利用这一特点,将编写好的flash 块烧写的程序(指定需要烧录数据的地址和需要烧录地址的地址)通过SWIM下载到从机RAM的指定地址。然后通过主机控制从机使其完成自烧写。
在这个过程中我们需要的是将串口传过来的数据传到从机的RAM中的指定地址,将烧写的地址传到从机的RAM中的指定地址。我们通过控制从机的CPU,使其运行提前烧进RAM中的代码完成“自烧写”。

注:
我们需要烧写的代码不可能通过一个块写完,所以我们在烧录完一块之后,需要暂停从机(通过控制从机CPU),在下一次烧录时复位从机然后再执行烧写FLASH的代码。

你可能感兴趣的:(STM8)