[STM32F1] SWD协议是如何把程序烧录进去的

[复制链接]
13044|42
 楼主| wenfen 发表于 2021-6-17 23:42 | 显示全部楼层 |阅读模式
通过SWD协议,我们可以访问所有的寄存器地址,但是它是怎么把hex文件写入flash呢,地址是如何访问写入的呢???
supernan 发表于 2021-6-17 23:43 | 显示全部楼层
这个问题好深奥。。
houcs 发表于 2021-6-17 23:45 | 显示全部楼层
你需要看看 ARM Debug Interface
jlyuan 发表于 2021-6-17 23:47 | 显示全部楼层
你去ARM官网看看吧,这个肯定是他们规定的协议。每家也可能在此基础修改一下。
liuzaiy 发表于 2021-6-17 23:48 | 显示全部楼层

SWD协议是ARM内核调试器的一种通信协议。ST的单片机stm32103系列的调试端口可以是jtag或者是SWD的端口。今天主要说一下用一个单片机的IO口模拟swd协议来烧录另一片单片机。主要参考文档<<ARM®Debug Interface Architecture Specification ADIv5.0 to ADIv5.2 >>

           SWD协议简单来说可以说是另一种方式来配置单片机内部寄存器,通过它可以配置单片机内部几乎所有的寄存器(不太严谨)。想用SWD协议和单片机进行通信首先必须了解DP,AP所相关寄存器。关于DP,AP所包含的寄存器的具体意义就自己慢慢看文档理解。我说的主要是其中可能会出问题的地方:1.当用SWD协议进行通信的时候首先是发送jtag转SWD接口的命令。2.就是关于协议的读写,我理解的是数据会在时钟的下降沿的时候进行采样(我这样写的程序没有任何问题)。在上升沿的时候进行数据的翻转。
huangchui 发表于 2021-6-17 23:50 | 显示全部楼层
这个不是有下载器吗
jlyuan 发表于 2021-6-17 23:51 | 显示全部楼层
使用Jlink flash
ob-SWD仿真器?
stly 发表于 2021-6-17 23:53 | 显示全部楼层

直接keil下载。
wuhany 发表于 2021-6-17 23:55 | 显示全部楼层
或者使用串口下载。
wuhany 发表于 2021-6-17 23:56 | 显示全部楼层
楼主的意思要自己做软件吗?
zhaoxqi 发表于 2021-6-17 23:58 | 显示全部楼层
SWD是JTAG的一个简化版本,程序是不能通过JTAG直接下载到FLASH的
walton1226 发表于 2021-6-19 14:39 | 显示全部楼层
u8 SWJ_WriteMem32(u32 addr, u32 val)
{
    u8 err;

    if(SWJ_WriteAP(AP_CSW, CSW_VALUE | CSW_SIZE32))return 1;
    err = SWJ_WriteData(addr, val);
    return err;
}
walton1226 发表于 2021-6-19 14:40 | 显示全部楼层
static u8 SWJ_WriteData(u32 addr, u32 data)
{
    u8 req, ack, err;

    if(SWJ_WriteAP(AP_TAR, addr))return 1;

    /* write data */
    req = SWD_REG_AP | SWD_REG_W | AP_DRW;
    ack = SWD_Transfer(req, &data);

    /* read DP buff */
    req = SWD_REG_DP | SWD_REG_R | SWD_REG_ADR(DP_RDBUFF);
    ack = SWD_Transfer(req, NULL);

    (ack == DAP_TRANSFER_OK) ? (err = 0) : (err = 1);
    return err;
}
sadicy 发表于 2021-6-30 13:11 | 显示全部楼层
没研究过,都不知道指的哪个点
就是插上JLINK,然后download
菜鸟的第一步 发表于 2021-6-30 16:45 | 显示全部楼层
这个是要做啥大事吗,做烧录器?
wyjie 发表于 2021-7-3 08:12 | 显示全部楼层
用SWD协议和单片机进行通信首先必须了解DP,AP所相关寄存器  
llljh 发表于 2021-7-3 08:19 | 显示全部楼层

SWD数据一级一级的进行传递?
xxrs 发表于 2021-7-3 08:34 | 显示全部楼层
可能设计到内部的架构了     
jiajs 发表于 2021-7-3 08:37 | 显示全部楼层
需要3根线与目标MCU相连,SWDIO,SWDCLK和GND。  
yszong 发表于 2021-7-3 08:43 | 显示全部楼层
参考《ARM Debug Interface V5》   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

737

主题

8940

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部