搜索
bottom↓
回复: 34

Stm8s 之 Swim 调试

  [复制链接]

出0入8汤圆

发表于 2014-11-21 21:13:33 | 显示全部楼层 |阅读模式
本帖最后由 12tangyang12 于 2014-11-22 20:31 编辑

这段时间研究了下Stm8的Swim接口协议,下面将自己的一些见解和大家分享。(在此感谢有如此好的平台)
SWIM接口干嘛的,就不多说了,下面直接进入主题:SWIM接口分析心得
1、SWIM接口协议由三条基本指令组成:SRST----000 复位指令、ROTF------001读指令、WOTF------010写指令
     每一段数据由             数据方向+数据+奇偶校验+ 应答           
        数据方向:0表示主机向从机、1表示从机向主机
        数据:     通过不同的低电平时间表示0还是1,每八位一组
        奇偶校验:通过数据位中1的个数是奇数还是偶数觉定
        应答:        若主机向从机发送数据则由从机发出应答,反之由主机发出应答。
    由若干段数据组成一帧,如写数据帧 由   指令+ 字节数+目标地址+数据 组成。
单片机上电后SWIM接口处于OFF模式,要想让其进入活动模式需要发送特定的数据序列,即为4个1K方波+4个2K方波如下图:

写入时序如下:
例:当SWIM进入到活动模式后,主机向从机SWIM_CSR寄存器写入0xA0,以使SWIM接口可以访问整个内存储器空间并且屏蔽内部复位源,其时序如下:


就这样,一个字节的数据就写入了0x007F80地址,也就是SWIM_CSR。连续写入也同样的道理,只是后面跟随的数据字节数不止一个。
读出时序如下:
例:读0x007F80地址的时序如下:

复位时序如下:复位时序较为简洁

以上就是SWIM基本时序。
从总体上说,通过SWIM烧录程序的过程是:1、使能SWIM(进入时序)------2、使能SWIM控制(SWIM_CSR)-------3、解除FLASH保护(FLASH_DUCK)-----4、使能标准块编程(FLASH_CR2)(STM8S103为64字节一块,视芯片决定)-----
5、写入一块字节的数据(从0x008000开始)-------6、读Flash当前状态是否编程完成(FLASH_IAPSR)--------7、完成,则重复4-6,没完成则重复6-----------8直至所有程序字节都写入完成------9、读出程序字节进行校验。
以上就是大致的SWIM时序解析。写的寥寥草草,抛砖引玉。


目前完成了SWIM进入时序和写时序,读时序出了点问题。。。。。。。

从机返回的数据这里出错了,,,,这是怎么回事??
问题解决,,,,由于没有加上拉电阻导致,加了个上拉电阻便能正确回复

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2014-11-21 22:35:59 | 显示全部楼层
做一个下载调试器试试

出0入0汤圆

发表于 2014-11-21 23:33:44 | 显示全部楼层
LZ,要是有一段程序就好了.........

出0入0汤圆

发表于 2014-11-21 23:38:54 | 显示全部楼层
分析得挺好的,辛苦了!

出0入4汤圆

发表于 2014-11-22 01:16:36 | 显示全部楼层
Stm8s 之 Swim 调试, 很好,底层工作蛮辛苦的

出0入8汤圆

 楼主| 发表于 2014-11-22 12:27:22 | 显示全部楼层
skyxjh 发表于 2014-11-21 22:35
做一个下载调试器试试

正在搞。。。。

出0入8汤圆

 楼主| 发表于 2014-11-22 12:28:26 | 显示全部楼层
sunliezhi 发表于 2014-11-22 01:16
Stm8s 之 Swim 调试, 很好,底层工作蛮辛苦的

每天琢磨一小时,,,,持续了一周

出0入8汤圆

 楼主| 发表于 2014-11-22 12:29:20 | 显示全部楼层
erpao 发表于 2014-11-21 23:33
LZ,要是有一段程序就好了.........

正在把理论转化成实际

出0入0汤圆

发表于 2014-11-22 12:44:47 | 显示全部楼层
写的很好 学习学习

出0入0汤圆

发表于 2014-11-22 13:10:03 | 显示全部楼层
支持楼主...........

出0入0汤圆

发表于 2014-11-22 15:02:23 | 显示全部楼层
谢谢楼主分享经验!

出0入21汤圆

发表于 2014-11-22 15:21:07 | 显示全部楼层
楼主想做脱机烧写?

出0入0汤圆

发表于 2014-11-22 15:22:20 | 显示全部楼层
SWIM比JTAG简洁多了,而且功能也不少

出0入0汤圆

发表于 2014-11-22 15:23:14 | 显示全部楼层
很用心了,继续努力

出0入8汤圆

 楼主| 发表于 2014-11-22 15:29:02 | 显示全部楼层
qd118118 发表于 2014-11-22 15:21
楼主想做脱机烧写?

是啊,脱机烧写方便多了

出0入8汤圆

 楼主| 发表于 2014-11-22 15:29:28 | 显示全部楼层
rifjft 发表于 2014-11-22 15:23
很用心了,继续努力

出0入25汤圆

发表于 2014-11-22 16:50:23 | 显示全部楼层
支持这样的研究。

出0入0汤圆

发表于 2014-11-22 21:54:56 | 显示全部楼层
用STM32做USB下载调试器吧

出0入8汤圆

 楼主| 发表于 2014-11-23 08:32:42 | 显示全部楼层
skyxjh 发表于 2014-11-22 21:54
用STM32做USB下载调试器吧

有这打算,目标是做个脱机下载器

出0入0汤圆

发表于 2015-4-3 14:51:49 | 显示全部楼层
mark   mark

出0入0汤圆

发表于 2015-4-3 15:07:05 | 显示全部楼层
厉害
协议分析太底层了

出0入0汤圆

发表于 2015-4-3 15:08:17 | 显示全部楼层
这个牛叉!

出0入0汤圆

发表于 2015-4-6 19:28:50 | 显示全部楼层
楼主分析得通俗易懂 啊!

出0入0汤圆

发表于 2015-4-6 20:18:28 | 显示全部楼层
分析的很好,点赞!

出0入0汤圆

发表于 2015-4-6 20:21:47 | 显示全部楼层
赞一个,坛子里之前有做脱stm8机下载器的,开源了的,很不错

出0入0汤圆

发表于 2016-5-13 00:43:39 | 显示全部楼层
MARK 谢谢楼主

出0入0汤圆

发表于 2016-5-15 16:56:55 | 显示全部楼层
理解透彻,写得明白,谢谢分享...

出0入0汤圆

发表于 2016-11-9 14:16:57 | 显示全部楼层

大神,问你个事。我公司最近在做一个项目,需要用到到STM8的在线升级。

我们这边的基本思路是:通过网络,将最新固件发送给Linux,然后是Linux给STM32。最后是通过swim烧录到STM8s。该过程,用户无需任何操作,我们就把固件升级了。

请问STM32将数据通过SWIM发送给STM8真的行得通吗?速度快不快。能不能加一下你的QQ或者其它的交流方式?(有偿询问)

出0入0汤圆

发表于 2016-11-9 15:39:33 | 显示全部楼层
楼主分析的比较精辟,谢谢楼主。

出0入8汤圆

 楼主| 发表于 2016-11-16 12:55:03 | 显示全部楼层
秽土转生 发表于 2016-11-9 14:16
大神,问你个事。我公司最近在做一个项目,需要用到到STM8的在线升级。

我们这边的基本思路是:通过网络 ...

完全行得通,因为 stm8的仿真器就是stm32芯片。也可以在stm8上加Bootloader啊

出0入0汤圆

发表于 2016-11-17 15:47:38 | 显示全部楼层
12tangyang12 发表于 2016-11-16 12:55
完全行得通,因为 stm8的仿真器就是stm32芯片。也可以在stm8上加Bootloader啊

请教一些问题,就是SWIM协议在往SWIM_CSR寄存器写配置的时候遇到的问题。

手册上面是这俩句
3.  Activate the SWIM_CSR register by writing 1 to the DM bit in SWIM_CSR
4.  Disable interrupts by setting the SAFE_MASK bit in SWIM_CSR

配置第SWIM_CSR_7和SWIM_CSR_5         也就是1010  0000      写入0xA0     我这边分开写才有应答   而且还是 第一次写入  0010 0000     第二次写入  1000 0000        如果直接写入0xA0  则没有应答   是不是很奇怪




还有一个请教的   就是SWIM的读函数怎么写     我试过  因为电平时间太短的原因完全就是失效了,你有什么好的算法分享一下。

出0入8汤圆

 楼主| 发表于 2016-11-29 13:34:44 | 显示全部楼层
秽土转生 发表于 2016-11-17 15:47
请教一些问题,就是SWIM协议在往SWIM_CSR寄存器写配置的时候遇到的问题。

手册上面是这俩句

手头有逻辑分析仪么?上逻辑分析仪抓信号

出0入0汤圆

发表于 2016-11-29 15:27:59 | 显示全部楼层
12tangyang12 发表于 2016-11-29 13:34
手头有逻辑分析仪么?上逻辑分析仪抓信号

现在 已经调试成功了  程序下载进去了 。


但是在操作flash那一块上面还是存在问题      那就是不能块操作。



有一个疑问    有网友说   stm8的擦除是写0,这个我很郁闷。


你有块操作的例程吗?

出0入0汤圆

发表于 2017-11-16 17:02:36 | 显示全部楼层
楼主我用的是(基于STM32的STM8脱机编程器)开源那个代码~~~~发现有问题  发了进入序列之后 再发SWIM_SRST就会超时  不知道哪里不对   
原理图和开源那个一样,SWIM接680欧上拉电阻
程序唯一不一样的就是SWIM设置的是推挽输出,因为设置了开漏输出拉不高
楼主上线了  能不能帮我分析分析啊

出0入0汤圆

发表于 2018-11-27 12:55:01 | 显示全部楼层
hao              
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 19:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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