楼主: boboo-23776

[原创] 【我要创作】初试SWD协议

  [复制链接]

该用户从未签到

0

主题

1

帖子

0

新手上路

Rank: 1

积分
6
最后登录
2017-9-4
发表于 2017-8-31 18:47:23 | 显示全部楼层
大神,我觉得你写的不错,我也是才开始弄swd方式对目标芯片进行烧写,有个问题请教你。
1.就是swd是怎么对目标芯片进行擦除的?我比较困惑的是发送什么命令,对哪个寄存器操作会有擦除效果。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2023-9-15 08:42
  • 签到天数: 1952 天

    [LV.Master]伴坛终老

    1

    主题

    4686

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9405
    最后登录
    2023-9-15
    发表于 2017-9-1 07:01:26 | 显示全部楼层
    内容不错!
    今天天气不错!签到!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-30 16:08
  • 签到天数: 184 天

    [LV.7]常住居民III

    3

    主题

    651

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1310
    最后登录
    2020-11-30
    发表于 2017-9-1 09:47:34 | 显示全部楼层
    顶... ...顶... ...顶... ...顶... ...顶... ...顶... ...
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    21
    最后登录
    2020-9-14
    发表于 2017-9-10 22:28:51 | 显示全部楼层
    楼主你好 首先感谢您的分享 我用你的代码在stm32f103c8t6上通过这个swd调试另一块stm32f103c8t6,在头文件swd_pin.h中移植了相关配置后,在SWJ_InitDebu()函数中可以读到IDCODE,但是SELECT和DP_ABORT这些寄存器读写有问题,折磨了好几天后无解,今天拿到一台示波器测波形,发现写寄存器时没有32(33)位的数据波形,跟踪发现是调用了这个函数按位输出了SWDIO信息:
    上层函数摘取部分:
    for(n = 32; n; n--)
    {
            SW_WRITE_BIT(val); /* Write WDATA[0:31] */
            parity += val;
            val >>= 1;
    }
    上面的形参val是一个32位uint,又
    void SW_WRITE_BIT(uint32_t bit)
    {
        SWDIO_OUT(bit);
        SW_CLOCK_CYCLE();
    }
    这是宏定义
    #define SWDIO_OUT(n)                                    {if ( n ) SWDIO_SET(); else SWDIO_CLR();}
    本来写的32位数据是0x0000001E,结果波形只有一个高低电平,原来是上几句有问题,if条件非0都为真,所以修改成:
    void SW_WRITE_BIT(uint32_t bit)
    {
        SWDIO_OUT(bit&0x01);//提取位
        SW_CLOCK_CYCLE();
    }
    测试发现所有寄存器都可以正确读写了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6

    主题

    31

    帖子

    0

    注册会员

    Rank: 2

    积分
    128
    最后登录
    2018-3-2
    发表于 2017-10-24 09:32:59 | 显示全部楼层
    学习了
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    52
    最后登录
    2020-11-30
    发表于 2017-10-27 16:37:06 | 显示全部楼层
    万分感谢!!!我也要搞出来发扬光大。。。。51822 swd烧写,正在研究中!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-9-15 08:42
  • 签到天数: 1952 天

    [LV.Master]伴坛终老

    1

    主题

    4686

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9405
    最后登录
    2023-9-15
    发表于 2017-10-28 12:37:31 | 显示全部楼层
    谢谢分享!
    今天天气不错!签到!
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-12-7 09:14
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    1

    主题

    71

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    262
    最后登录
    2019-1-17
    发表于 2017-10-28 13:33:01 | 显示全部楼层
    赞赞赞         
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-11-14 10:38
  • 签到天数: 1 天

    [LV.1]初来乍到

    10

    主题

    48

    帖子

    1

    中级会员

    Rank: 3Rank: 3

    积分
    301
    最后登录
    2021-3-6
    发表于 2017-10-28 16:24:01 | 显示全部楼层
    谢谢分享!
    自己加油
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-10-20 09:42
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    243

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    218
    最后登录
    2019-3-14
    发表于 2017-12-12 17:39:42 | 显示全部楼层
    我只是个孩子a 发表于 2017-9-10 22:28
    楼主你好 首先感谢您的分享 我用你的代码在stm32f103c8t6上通过这个swd调试另一块stm32f103c8t6,在头文件s ...

    你好,能说一下读取AP_ID需要怎么配置吗
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-3 09:25 , Processed in 0.130964 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表